Skip to content

Commit e5b5ce4

Browse files
authored
Add basic path support (#102)
* Update Package.swift * Add basic path support
1 parent 0f91969 commit e5b5ce4

File tree

10 files changed

+550
-82
lines changed

10 files changed

+550
-82
lines changed

Package.swift

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,17 @@ let systemFrameworkSearchFlag = isXcodeEnv ? "-iframework" : "-Fsystem"
2525

2626
let releaseVersion = Context.environment["OPENSWIFTUI_TARGET_RELEASE"].flatMap { Int($0) } ?? 2021
2727
let platforms: [SupportedPlatform] = switch releaseVersion {
28-
case 2023:
28+
case 2024:
29+
#if swift(>=6.0)
30+
[
31+
.iOS(.v18),
32+
.macOS(.v15),
33+
.macCatalyst(.v18),
34+
.tvOS(.v18),
35+
.watchOS(.v10),
36+
.visionOS(.v2),
37+
]
38+
#else // FIXME: Remove when we bump to Swift 6.0
2939
[
3040
.iOS(.v17),
3141
.macOS(.v14),
@@ -34,14 +44,7 @@ case 2023:
3444
.watchOS(.v9),
3545
.visionOS(.v1),
3646
]
37-
case 2022:
38-
[
39-
.iOS(.v16),
40-
.macOS(.v13),
41-
.macCatalyst(.v16),
42-
.tvOS(.v16),
43-
.watchOS(.v8),
44-
]
47+
#endif
4548
case 2021:
4649
[
4750
.iOS(.v15),
@@ -67,18 +70,10 @@ var sharedSwiftSettings: [SwiftSetting] = [
6770
.define("OPENSWIFTUI_RELEASE_\(releaseVersion)"),
6871
]
6972

70-
switch releaseVersion {
71-
case 2023:
72-
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_2023_API"))
73-
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_2022_API"))
74-
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_2021_API"))
75-
case 2022:
76-
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_2022_API"))
77-
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_2021_API"))
78-
case 2021:
79-
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_2021_API"))
80-
default:
81-
break
73+
if releaseVersion >= 2021 {
74+
for year in 2021 ... releaseVersion {
75+
sharedSwiftSettings.append(.define("OPENSWIFTUI_SUPPORT_\(year)_API"))
76+
}
8277
}
8378

8479
let warningsAsErrorsCondition = envEnable("OPENSWIFTUI_WERROR", default: isXcodeEnv && development)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//
2+
// __CGPathParseString.m
3+
// COpenSwiftUI
4+
5+
#include "__CGPathParseString.h"
6+
7+
#if OPENSWIFTUI_TARGET_OS_DARWIN
8+
BOOL __CGPathParseString(CGMutablePathRef path, const char *utf8CString) {
9+
// TODO
10+
return NO;
11+
}
12+
#endif

Sources/COpenSwiftUI/dyld_Private.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
//
22
// dyld_Private.c
3-
//
4-
//
5-
//
3+
// COpenSwiftUI
64

75
#include "dyld_Private.h"
86

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// __CGPathParseString.m
3+
// COpenSwiftUI
4+
5+
#ifndef __CGPathParseString_h
6+
#define __CGPathParseString_h
7+
8+
#include "OpenSwiftUIBase.h"
9+
10+
#if OPENSWIFTUI_TARGET_OS_DARWIN
11+
12+
#include <Foundation/Foundation.h>
13+
#include <CoreGraphics/CoreGraphics.h>
14+
15+
OPENSWIFTUI_ASSUME_NONNULL_BEGIN
16+
17+
OPENSWIFTUI_EXPORT
18+
BOOL __CGPathParseString(CGMutablePathRef path, const char *utf8CString);
19+
20+
OPENSWIFTUI_ASSUME_NONNULL_END
21+
22+
#endif
23+
24+
#endif /* __CGPathParseString_h */
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// UnsafeAtomicLazy.swift
3+
// OpenSwiftUI
4+
//
5+
// Audited for RELEASE_2021
6+
// Status: WIP
7+
8+
struct UnsafeAtomicLazy<Data>: Destroyable {
9+
@UnsafeLockedPointer
10+
var cache: Data?
11+
12+
func read(_ block: () -> Data) -> Data {
13+
fatalError("TODO") // StrokedPath.boundingRect
14+
}
15+
16+
func destroy() {
17+
_cache.destroy()
18+
}
19+
}

Sources/OpenSwiftUI/View/Shape/Path.swift

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// FixedRoundedRect.swift
2+
// OpenSwiftUI
3+
//
4+
// Audited for RELEASE_2021
5+
// Status: WIP
6+
7+
import Foundation
8+
9+
@usableFromInline
10+
struct FixedRoundedRect: Equatable {
11+
var rect: CGRect
12+
var cornerSize: CGSize
13+
var style: RoundedCornerStyle
14+
15+
func contains(_ roundedRect: FixedRoundedRect) -> Bool {
16+
guard rect.insetBy(dx: -0.001, dy: -0.001).contains(roundedRect.rect) else {
17+
return false
18+
}
19+
guard !(cornerSize.width <= roundedRect.cornerSize.width && cornerSize.height <= roundedRect.cornerSize.height) else {
20+
return true
21+
}
22+
let minCornerWidth = min(abs(rect.size.width) / 2, cornerSize.width)
23+
let minCornerHeight = min(abs(rect.size.height) / 2, cornerSize.height)
24+
let factor = 0.292893 // 1 - cos(45 * Double.pi / 180)
25+
return rect.insetBy(dx: minCornerWidth * factor, dy: minCornerHeight * factor).contains(roundedRect.rect)
26+
}
27+
28+
func distance(to point: CGPoint) -> CGFloat {
29+
fatalError("TODO")
30+
}
31+
}

0 commit comments

Comments
 (0)