macos: add necessary functions for variation axes querying

This commit is contained in:
Mitchell Hashimoto
2023-08-25 22:24:45 -07:00
parent decdf49a2b
commit fb0f80f9ca
2 changed files with 38 additions and 1 deletions

View File

@ -24,7 +24,7 @@ pub const Array = opaque {
/// constness so that further API calls work correctly. The Foundation /// constness so that further API calls work correctly. The Foundation
/// API doesn't properly mark things const/non-const. /// API doesn't properly mark things const/non-const.
pub fn getValueAtIndex(self: *Array, comptime T: type, idx: usize) *T { pub fn getValueAtIndex(self: *Array, comptime T: type, idx: usize) *T {
return @ptrCast(CFArrayGetValueAtIndex(self, idx)); return @ptrCast(@alignCast(CFArrayGetValueAtIndex(self, idx)));
} }
pub extern "c" fn CFArrayCreate( pub extern "c" fn CFArrayCreate(

View File

@ -75,6 +75,9 @@ pub const FontAttribute = enum {
downloadable, downloadable,
downloaded, downloaded,
// https://developer.apple.com/documentation/coretext/core_text_constants?language=objc
variation_axes,
pub fn key(self: FontAttribute) *foundation.String { pub fn key(self: FontAttribute) *foundation.String {
return @as(*foundation.String, @ptrFromInt(@intFromPtr(switch (self) { return @as(*foundation.String, @ptrFromInt(@intFromPtr(switch (self) {
.url => c.kCTFontURLAttribute, .url => c.kCTFontURLAttribute,
@ -101,6 +104,7 @@ pub const FontAttribute = enum {
.enabled => c.kCTFontEnabledAttribute, .enabled => c.kCTFontEnabledAttribute,
.downloadable => c.kCTFontDownloadableAttribute, .downloadable => c.kCTFontDownloadableAttribute,
.downloaded => c.kCTFontDownloadedAttribute, .downloaded => c.kCTFontDownloadedAttribute,
.variation_axes => c.kCTFontVariationAxesAttribute,
}))); })));
} }
@ -130,6 +134,7 @@ pub const FontAttribute = enum {
.enabled => *foundation.Number, .enabled => *foundation.Number,
.downloadable => *anyopaque, // CFBoolean .downloadable => *anyopaque, // CFBoolean
.downloaded => *anyopaque, // CFBoolean .downloaded => *anyopaque, // CFBoolean
.variation_axes => ?*foundation.Array,
}; };
} }
}; };
@ -159,6 +164,38 @@ pub const FontTraitKey = enum {
} }
}; };
// https://developer.apple.com/documentation/coretext/ctfont/font_variation_axis_dictionary_keys?language=objc
pub const FontVariationAxisKey = enum {
identifier,
minimum_value,
maximum_value,
default_value,
name,
hidden,
pub fn key(self: FontVariationAxisKey) *foundation.String {
return @as(*foundation.String, @ptrFromInt(@intFromPtr(switch (self) {
.identifier => c.kCTFontVariationAxisIdentifierKey,
.minimum_value => c.kCTFontVariationAxisMinimumValueKey,
.maximum_value => c.kCTFontVariationAxisMaximumValueKey,
.default_value => c.kCTFontVariationAxisDefaultValueKey,
.name => c.kCTFontVariationAxisNameKey,
.hidden => c.kCTFontVariationAxisHiddenKey,
})));
}
pub fn Value(comptime self: FontVariationAxisKey) type {
return switch (self) {
.identifier => foundation.Number,
.minimum_value => foundation.Number,
.maximum_value => foundation.Number,
.default_value => foundation.Number,
.name => foundation.String,
.hidden => foundation.Number,
};
}
};
pub const FontSymbolicTraits = packed struct(u32) { pub const FontSymbolicTraits = packed struct(u32) {
italic: bool = false, italic: bool = false,
bold: bool = false, bold: bool = false,