Skip to content

Commit 6dce9ce

Browse files
authored
Update ORBDisplayList (#21)
1 parent ed94cd6 commit 6dce9ce

9 files changed

Lines changed: 77 additions & 79 deletions

File tree

Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//
2+
// ORBDisplayList.swift
3+
// OpenRenderBox
4+
//
5+
// Created by Kyle on 1/11/26.
6+
//
7+
8+
#if !canImport(ObjectiveC)
9+
public final class ORBDisplayList {
10+
11+
}
12+
#endif

Sources/OpenRenderBoxCxx/Color/ORBColorMode.cpp

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,41 @@
44

55
#include <OpenRenderBox/ORBColorMode.h>
66

7+
// Working color space lookup table
8+
// Index: mode value (0-15), Value: ORBColorSpace
9+
// 1 = SRGB, 2 = LinearSRGB
10+
static const ORBColorSpace kColorModeWorkingColorSpaceTable[16] = {
11+
ORBColorSpaceSRGB, // 0
12+
ORBColorSpaceLinearSRGB, // 1
13+
ORBColorSpaceLinearSRGB, // 2
14+
ORBColorSpaceSRGB, // 3
15+
ORBColorSpaceSRGB, // 4
16+
ORBColorSpaceSRGB, // 5
17+
ORBColorSpaceLinearSRGB, // 6
18+
ORBColorSpaceLinearSRGB, // 7
19+
ORBColorSpaceLinearSRGB, // 8
20+
ORBColorSpaceSRGB, // 9
21+
ORBColorSpaceLinearSRGB, // 10
22+
ORBColorSpaceSRGB, // 11
23+
ORBColorSpaceSRGB, // 12
24+
ORBColorSpaceLinearSRGB, // 13
25+
ORBColorSpaceSRGB, // 14
26+
ORBColorSpaceLinearSRGB, // 15
27+
};
28+
729
ORBColorSpace ORBColorModeWorkingColorSpace(ORBColorMode mode) {
8-
switch (mode) {
9-
case ORBColorMode0:
10-
case ORBColorMode3:
11-
case ORBColorMode4:
12-
case ORBColorMode5:
13-
case ORBColorMode9:
14-
case ORBColorMode11:
15-
case ORBColorMode12:
16-
case ORBColorMode14:
17-
return ORBColorSpaceSRGB;
18-
case ORBColorMode1:
19-
case ORBColorMode2:
20-
case ORBColorMode6:
21-
case ORBColorMode7:
22-
case ORBColorMode8:
23-
case ORBColorMode10:
24-
case ORBColorMode13:
25-
case ORBColorMode15:
26-
return ORBColorSpaceLinearSRGB;
27-
default:
28-
return ORBColorSpaceDefault;
30+
if (mode < 0 || mode > 15) {
31+
return ORBColorSpaceDefault;
2932
}
33+
return kColorModeWorkingColorSpaceTable[mode];
3034
}
3135

3236
bool ORBColorModeHasExtendedRange(ORBColorMode mode) {
33-
switch (mode) {
34-
case ORBColorMode2:
35-
case ORBColorMode11:
36-
case ORBColorMode12:
37-
case ORBColorMode13:
38-
return true;
39-
default:
40-
return false;
37+
// Extended range modes: 2, 11, 12, 13
38+
// 0x3804 = 0011 1000 0000 0100 binary
39+
if (mode < 0 || mode > 15) {
40+
return false;
4141
}
42+
uint32_t mask = 0x3804;
43+
return (mask >> mode) & 1;
4244
}

Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBColorMode.h

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,7 @@ ORB_ASSUME_NONNULL_BEGIN
1111

1212
ORB_EXTERN_C_BEGIN
1313

14-
// TODO: Review those names later
15-
typedef ORB_ENUM(int32_t, ORBColorMode) {
16-
ORBColorMode0 = 0,
17-
ORBColorMode1 = 1,
18-
ORBColorMode2 = 2,
19-
ORBColorMode3 = 3,
20-
ORBColorMode4 = 4,
21-
ORBColorMode5 = 5,
22-
ORBColorMode6 = 6,
23-
ORBColorMode7 = 7,
24-
ORBColorMode8 = 8,
25-
ORBColorMode9 = 9,
26-
ORBColorMode10 = 10,
27-
ORBColorMode11 = 11,
28-
ORBColorMode12 = 12,
29-
ORBColorMode13 = 13,
30-
ORBColorMode14 = 14,
31-
ORBColorMode15 = 15,
32-
} ORB_SWIFT_NAME(ORBColor.Mode);
14+
typedef int32_t ORBColorMode ORB_SWIFT_STRUCT ORB_SWIFT_NAME(ORBColor.Mode);
3315

3416
ORB_EXPORT ORBColorSpace ORBColorModeWorkingColorSpace(ORBColorMode mode) ORB_SWIFT_NAME(getter:ORBColorMode.workingColorSpace(self:));
3517
ORB_EXPORT bool ORBColorModeHasExtendedRange(ORBColorMode mode) ORB_SWIFT_NAME(getter:ORBColorMode.hasExtendedRange(self:));

Sources/OpenRenderBoxCxx/include/OpenRenderBox/ORBColorSpace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ typedef ORB_ENUM(uint32_t, ORBColorSpace) {
1616
ORBColorSpaceLinearSRGB = 2,
1717
ORBColorSpaceDisplayP3 = 3,
1818
ORBColorSpaceLinearDisplayP3 = 4,
19-
} ORB_SWIFT_NAME(ORBColor.Space);
19+
} ORB_SWIFT_NAME(ORBColor.ColorSpace);
2020

2121
ORB_EXTERN_C_END
2222

Sources/OpenRenderBoxCxx/include/OpenRenderBoxObjC/Render/ORBLayer.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
#pragma once
66

7+
#include "OpenRenderBox/ORBColorMode.h"
78
#include <OpenRenderBox/ORBBase.h>
89

910
#if ORB_OBJC_FOUNDATION
1011

1112
#include <OpenRenderBox/ORBColor.h>
13+
#include <OpenRenderBox/ORBColorMode.h>
1214
#include <OpenRenderBoxObjC/Device/ORBDevice.h>
1315
#include <OpenRenderBoxObjC/Render/ORBDrawableStatistics.h>
1416
#include <OpenRenderBoxObjC/Render/_ORBDrawableDelegate.h>
@@ -29,7 +31,7 @@ ORB_ASSUME_NONNULL_BEGIN
2931

3032
@property (retain, nonatomic, nullable) ORBDevice *device;
3133
@property (nonatomic) BOOL rendersAsynchronously;
32-
@property (nonatomic) int colorMode;
34+
@property (nonatomic) ORBColorMode colorMode;
3335
@property (nonatomic) BOOL promotesFramebuffer;
3436
@property (nonatomic) NSUInteger pixelFormat;
3537
@property (nonatomic) BOOL clearsBackground;

Sources/OpenRenderBoxCxx/include/OpenRenderBoxObjC/Render/ORBLayerDelegate.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#if ORB_OBJC_FOUNDATION
1010

1111
#include <OpenRenderBoxObjC/Render/ORBDisplayList.h>
12-
12+
#include <OpenRenderBoxObjC/Device/ORBDevice.h>
1313
#include <Foundation/Foundation.h>
1414
#include <QuartzCore/QuartzCore.h>
1515

@@ -24,7 +24,7 @@ ORB_ASSUME_NONNULL_BEGIN
2424
@optional
2525

2626
- (void)RBLayer:(ORBLayer *)layer draw:(ORBDisplayList *)inDisplayList;
27-
- (nullable id)RBLayerDefaultDevice:(ORBLayer *)layer;
27+
- (nullable ORBDevice *)RBLayerDefaultDevice:(ORBLayer *)layer;
2828

2929
@end
3030

Tests/OpenRenderBoxCompatibilityTests/ColorTests.swift

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ struct ColorTests {
135135

136136
#if canImport(CoreGraphics)
137137
@Test("ORBColorCopyCGColor", arguments: [
138-
(ORBColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0), ORBColor.Space.SRGB),
139-
(ORBColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0), ORBColor.Space.linearSRGB),
140-
(ORBColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 0.5), ORBColor.Space.displayP3),
141-
(ORBColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0), ORBColor.Space.linearDisplayP3),
138+
(ORBColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0), ORBColor.ColorSpace.SRGB),
139+
(ORBColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0), ORBColor.ColorSpace.linearSRGB),
140+
(ORBColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 0.5), ORBColor.ColorSpace.displayP3),
141+
(ORBColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0), ORBColor.ColorSpace.linearDisplayP3),
142142
])
143-
func colorCopyCGColor(color: ORBColor, colorSpace: ORBColor.Space) throws {
143+
func colorCopyCGColor(color: ORBColor, colorSpace: ORBColor.ColorSpace) throws {
144144
let cgColor = try #require(color.cgColor(colorSpace: colorSpace))
145145
#expect(cgColor.numberOfComponents == 4)
146146
let components = cgColor.components!
@@ -157,24 +157,24 @@ struct ColorTests {
157157
// MARK: - ORBColorModeWorkingColorSpace
158158

159159
@Test("ORBColorModeWorkingColorSpace", arguments: [
160-
(ORBColor.Mode.mode0, ORBColor.Space.SRGB),
161-
(ORBColor.Mode.mode1, ORBColor.Space.linearSRGB),
162-
(ORBColor.Mode.mode2, ORBColor.Space.linearSRGB),
163-
(ORBColor.Mode.mode3, ORBColor.Space.SRGB),
164-
(ORBColor.Mode.mode4, ORBColor.Space.SRGB),
165-
(ORBColor.Mode.mode5, ORBColor.Space.SRGB),
166-
(ORBColor.Mode.mode6, ORBColor.Space.linearSRGB),
167-
(ORBColor.Mode.mode7, ORBColor.Space.linearSRGB),
168-
(ORBColor.Mode.mode8, ORBColor.Space.linearSRGB),
169-
(ORBColor.Mode.mode9, ORBColor.Space.SRGB),
170-
(ORBColor.Mode.mode10, ORBColor.Space.linearSRGB),
171-
(ORBColor.Mode.mode11, ORBColor.Space.SRGB),
172-
(ORBColor.Mode.mode12, ORBColor.Space.SRGB),
173-
(ORBColor.Mode.mode13, ORBColor.Space.linearSRGB),
174-
(ORBColor.Mode.mode14, ORBColor.Space.SRGB),
175-
(ORBColor.Mode.mode15, ORBColor.Space.linearSRGB),
160+
(ORBColor.Mode.mode0, ORBColor.ColorSpace.SRGB),
161+
(ORBColor.Mode.mode1, ORBColor.ColorSpace.linearSRGB),
162+
(ORBColor.Mode.mode2, ORBColor.ColorSpace.linearSRGB),
163+
(ORBColor.Mode.mode3, ORBColor.ColorSpace.SRGB),
164+
(ORBColor.Mode.mode4, ORBColor.ColorSpace.SRGB),
165+
(ORBColor.Mode.mode5, ORBColor.ColorSpace.SRGB),
166+
(ORBColor.Mode.mode6, ORBColor.ColorSpace.linearSRGB),
167+
(ORBColor.Mode.mode7, ORBColor.ColorSpace.linearSRGB),
168+
(ORBColor.Mode.mode8, ORBColor.ColorSpace.linearSRGB),
169+
(ORBColor.Mode.mode9, ORBColor.ColorSpace.SRGB),
170+
(ORBColor.Mode.mode10, ORBColor.ColorSpace.linearSRGB),
171+
(ORBColor.Mode.mode11, ORBColor.ColorSpace.SRGB),
172+
(ORBColor.Mode.mode12, ORBColor.ColorSpace.SRGB),
173+
(ORBColor.Mode.mode13, ORBColor.ColorSpace.linearSRGB),
174+
(ORBColor.Mode.mode14, ORBColor.ColorSpace.SRGB),
175+
(ORBColor.Mode.mode15, ORBColor.ColorSpace.linearSRGB),
176176
])
177-
func colorModeWorkingColorSpace(mode: ORBColor.Mode, expectedColorSpace: ORBColor.Space) {
177+
func colorModeWorkingColorSpace(mode: ORBColor.Mode, expectedColorSpace: ORBColor.ColorSpace) {
178178
#expect(mode.workingColorSpace == expectedColorSpace)
179179
}
180180

Tests/OpenRenderBoxCompatibilityTests/LayerTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ struct LayerTests {
2525
#expect(layer.rendersAsynchronously == false)
2626

2727
// colorMode
28-
layer.colorMode = 0
29-
#expect(layer.colorMode == 0)
30-
layer.colorMode = 1
31-
#expect(layer.colorMode == 1)
28+
layer.colorMode = .init(0)
29+
#expect(layer.colorMode.rawValue == 0)
30+
layer.colorMode = .init(1)
31+
#expect(layer.colorMode.rawValue == 1)
3232

3333
// promotesFramebuffer
3434
layer.promotesFramebuffer = true

0 commit comments

Comments
 (0)