123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- //
- // SnapKit
- //
- // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- #if os(iOS) || os(tvOS)
- import UIKit
- #else
- import AppKit
- #endif
- public protocol ConstraintDSL {
-
- var target: AnyObject? { get }
-
- func setLabel(_ value: String?)
- func label() -> String?
-
- }
- extension ConstraintDSL {
-
- public func setLabel(_ value: String?) {
- objc_setAssociatedObject(self.target as Any, &labelKey, value, .OBJC_ASSOCIATION_COPY_NONATOMIC)
- }
- public func label() -> String? {
- return objc_getAssociatedObject(self.target as Any, &labelKey) as? String
- }
-
- }
- private var labelKey: UInt8 = 0
- public protocol ConstraintBasicAttributesDSL : ConstraintDSL {
- }
- extension ConstraintBasicAttributesDSL {
-
- // MARK: Basics
-
- public var left: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.left)
- }
-
- public var top: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top)
- }
-
- public var right: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.right)
- }
-
- public var bottom: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom)
- }
-
- public var leading: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leading)
- }
-
- public var trailing: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailing)
- }
-
- public var width: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.width)
- }
-
- public var height: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height)
- }
-
- public var centerX: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerX)
- }
-
- public var centerY: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerY)
- }
-
- public var edges: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.edges)
- }
-
- public var directionalEdges: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.directionalEdges)
- }
- public var horizontalEdges: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.horizontalEdges)
- }
- public var verticalEdges: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.verticalEdges)
- }
- public var directionalHorizontalEdges: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.directionalHorizontalEdges)
- }
- public var directionalVerticalEdges: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.directionalVerticalEdges)
- }
- public var size: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.size)
- }
-
- public var center: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.center)
- }
-
- }
- public protocol ConstraintAttributesDSL : ConstraintBasicAttributesDSL {
- }
- extension ConstraintAttributesDSL {
-
- // MARK: Baselines
- @available(*, deprecated, renamed:"lastBaseline")
- public var baseline: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline)
- }
-
- @available(iOS 8.0, OSX 10.11, *)
- public var lastBaseline: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline)
- }
-
- @available(iOS 8.0, OSX 10.11, *)
- public var firstBaseline: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.firstBaseline)
- }
-
- // MARK: Margins
-
- @available(iOS 8.0, *)
- public var leftMargin: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leftMargin)
- }
-
- @available(iOS 8.0, *)
- public var topMargin: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.topMargin)
- }
-
- @available(iOS 8.0, *)
- public var rightMargin: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.rightMargin)
- }
-
- @available(iOS 8.0, *)
- public var bottomMargin: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottomMargin)
- }
-
- @available(iOS 8.0, *)
- public var leadingMargin: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leadingMargin)
- }
-
- @available(iOS 8.0, *)
- public var trailingMargin: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailingMargin)
- }
-
- @available(iOS 8.0, *)
- public var centerXWithinMargins: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerXWithinMargins)
- }
-
- @available(iOS 8.0, *)
- public var centerYWithinMargins: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerYWithinMargins)
- }
-
- @available(iOS 8.0, *)
- public var margins: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.margins)
- }
-
- @available(iOS 8.0, *)
- public var directionalMargins: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.directionalMargins)
- }
- @available(iOS 8.0, *)
- public var centerWithinMargins: ConstraintItem {
- return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerWithinMargins)
- }
-
- }
|