From c284db3996dd23d0c7515b39a31ce22665dad420 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 6 Apr 2026 04:07:13 +0800 Subject: [PATCH] Add CGVector type with Hashable and CustomDebugStringConvertible --- Sources/OpenCoreGraphics/CGVector.swift | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Sources/OpenCoreGraphics/CGVector.swift diff --git a/Sources/OpenCoreGraphics/CGVector.swift b/Sources/OpenCoreGraphics/CGVector.swift new file mode 100644 index 0000000..628332f --- /dev/null +++ b/Sources/OpenCoreGraphics/CGVector.swift @@ -0,0 +1,41 @@ +// +// CGVector.swift +// OpenCoreGraphics + +public import Foundation + +// MARK: - CGVector + +public struct CGVector: Equatable, Sendable { + public init() { + dx = .zero + dy = .zero + } + + public init(dx: CGFloat, dy: CGFloat) { + self.dx = dx + self.dy = dy + } + + public var dx: CGFloat + public var dy: CGFloat + + public static let zero = CGVector() +} + +// MARK: - Hashable + +extension CGVector: Swift.Hashable { + public func hash(into hasher: inout Hasher) { + hasher.combine(dx) + hasher.combine(dy) + } +} + +// MARK: - CustomDebugStringConvertible + +extension CGVector: Swift.CustomDebugStringConvertible { + public var debugDescription: String { + "(\(dx.description), \(dy.description))" + } +}