// Generated by build-marks.mjs from assets/aim-app-marks.svg. Source SHA-256 0d5f886c206510463f211cd09f6af9fbe5b43bcbcc7ed9fb014c683b549f2337. Do not edit. // One source for the product mark (AIM apps rule 39): the same square, glyph and red signal the web pages // pull from the svg, resolved to absolute path commands. The painter is AIMAppMarkView.swift (hand-written). import CoreGraphics /// Absolute path commands: arcs and shorthand curves are already resolved by the generator. public enum AIMAppMarkCommand: Equatable { case move(CGFloat, CGFloat) case line(CGFloat, CGFloat) case curve(CGFloat, CGFloat, CGFloat, CGFloat, CGFloat, CGFloat) case close } public enum AIMAppMark: String, CaseIterable { case family case relay case aside case prism case calendar case krest case style /// SHA-256 of aim-app-marks.svg this file was generated from. public static let sourceSHA256 = "0d5f886c206510463f211cd09f6af9fbe5b43bcbcc7ed9fb014c683b549f2337" /// The svg viewBox side; every command below is in this space. public static let canvas: CGFloat = 48 /// Stroke of the square and the glyph (rules 3, 4). public static let strokeWidth: CGFloat = 2 /// The symbol id inside aim-app-marks.svg. public var symbol: String { switch self { case .family: return "family" case .relay: return "relay" case .aside: return "aside" case .prism: return "prism" case .calendar: return "calendar" case .krest: return "krest" case .style: return "style" } } /// Accessibility name of the mark. public var label: String { switch self { case .family: return "ai mindset" case .relay: return "language relay" case .aside: return "aside tweaks" case .prism: return "mem prism" case .calendar: return "calendar control" case .krest: return "крест" case .style: return "style os" } } /// The 38 pt rounded square, stroked (rule 3). public var square: [AIMAppMarkCommand] { switch self { case .family: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] case .relay: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] case .aside: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] case .prism: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] case .calendar: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] case .krest: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] case .style: return [.move(13, 5), .line(35, 5), .curve(39.4183, 5, 43, 8.5817, 43, 13), .line(43, 35), .curve(43, 39.4183, 39.4183, 43, 35, 43), .line(13, 43), .curve(8.5817, 43, 5, 39.4183, 5, 35), .line(5, 13), .curve(5, 8.5817, 8.5817, 5, 13, 5), .close] } } /// The product glyph, stroked with the same width (rule 4). public var glyph: [AIMAppMarkCommand] { switch self { case .family: return [.move(13, 34), .line(13, 15), .line(24, 26), .line(35, 15), .line(35, 34)] case .relay: return [.move(13, 19), .line(35, 19), .line(30, 14), .move(35, 29), .line(13, 29), .line(18, 34)] case .aside: return [.move(14, 13), .line(14, 35), .move(21, 18), .line(35, 18), .move(21, 24), .line(30, 24), .move(21, 30), .line(33, 30)] case .prism: return [.move(24, 13), .line(35, 19), .line(35, 31), .line(24, 37), .line(13, 31), .line(13, 19), .close, .move(13, 19), .line(24, 25), .line(35, 19)] case .calendar: return [.move(13, 20), .line(35, 20), .move(18, 13), .line(18, 20), .move(30, 13), .line(30, 20), .move(17, 30), .line(25, 30)] case .krest: return [.move(24, 13), .line(24, 35), .move(13, 24), .line(35, 24)] case .style: return [.move(13, 33), .line(35, 33), .line(24, 22), .close, .move(24, 22), .line(24, 16), .line(29, 16), .line(29, 19)] } } /// The red 6 x 4 signal, filled, the same place on every mark (rule 3). public var signal: [AIMAppMarkCommand] { switch self { case .family: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] case .relay: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] case .aside: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] case .prism: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] case .calendar: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] case .krest: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] case .style: return [.move(32, 5), .line(38, 5), .line(38, 9), .line(32, 9), .close] } } }