///
/// DeviceTraits.swift
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © 2024 Marc Rousavy @ Margelo
///

import NitroModules

/**
 * Represents an instance of `DeviceTraits`, backed by a C++ struct.
 */
public typealias DeviceTraits = margelo.nitro.stylesheet.DeviceTraits

public extension DeviceTraits {
  private typealias bridge = margelo.nitro.stylesheet.bridge.swift

  /**
   * Create a new instance of `DeviceTraits`.
   */
  init(colorScheme: ColorScheme, screenDimensions: ScreenDimensions, contentSizeCategory: String, screenInsets: ScreenInsets, displayScale: Double, fontScale: Double, isRTL: Bool, screenOrientation: ScreenOrientation, pixelRatio: Double) {
    self.init(colorScheme, screenDimensions, std.string(contentSizeCategory), screenInsets, displayScale, fontScale, isRTL, screenOrientation, pixelRatio)
  }

  var colorScheme: ColorScheme {
    @inline(__always)
    get {
      return self.__colorScheme
    }
    @inline(__always)
    set {
      self.__colorScheme = newValue
    }
  }
  
  var screenDimensions: ScreenDimensions {
    @inline(__always)
    get {
      return self.__screenDimensions
    }
    @inline(__always)
    set {
      self.__screenDimensions = newValue
    }
  }
  
  var contentSizeCategory: String {
    @inline(__always)
    get {
      return String(self.__contentSizeCategory)
    }
    @inline(__always)
    set {
      self.__contentSizeCategory = std.string(newValue)
    }
  }
  
  var screenInsets: ScreenInsets {
    @inline(__always)
    get {
      return self.__screenInsets
    }
    @inline(__always)
    set {
      self.__screenInsets = newValue
    }
  }
  
  var displayScale: Double {
    @inline(__always)
    get {
      return self.__displayScale
    }
    @inline(__always)
    set {
      self.__displayScale = newValue
    }
  }
  
  var fontScale: Double {
    @inline(__always)
    get {
      return self.__fontScale
    }
    @inline(__always)
    set {
      self.__fontScale = newValue
    }
  }
  
  var isRTL: Bool {
    @inline(__always)
    get {
      return self.__isRTL
    }
    @inline(__always)
    set {
      self.__isRTL = newValue
    }
  }
  
  var screenOrientation: ScreenOrientation {
    @inline(__always)
    get {
      return self.__screenOrientation
    }
    @inline(__always)
    set {
      self.__screenOrientation = newValue
    }
  }
  
  var pixelRatio: Double {
    @inline(__always)
    get {
      return self.__pixelRatio
    }
    @inline(__always)
    set {
      self.__pixelRatio = newValue
    }
  }
}
