fromPointer static method
Implementation
static VtSgrAttributeData fromPointer(
ffi.Pointer<bindings.GhosttySgrAttribute> nativePtr,
) {
final tag = bindings.ghostty_sgr_attribute_tag(nativePtr.ref);
final value = bindings.ghostty_sgr_attribute_value(nativePtr).ref;
switch (tag) {
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_UNKNOWN:
final unknown = value.unknown;
final fullOut = calloc<ffi.Pointer<ffi.Uint16>>();
final partialOut = calloc<ffi.Pointer<ffi.Uint16>>();
late final List<int> full;
late final List<int> partial;
try {
final fullLen = bindings.ghostty_sgr_unknown_full(unknown, fullOut);
final fullPtr = fullOut.value;
full = fullLen == 0 || fullPtr == ffi.nullptr
? const <int>[]
: List<int>.unmodifiable(fullPtr.asTypedList(fullLen));
final partialLen = bindings.ghostty_sgr_unknown_partial(
unknown,
partialOut,
);
final partialPtr = partialOut.value;
partial = partialLen == 0 || partialPtr == ffi.nullptr
? const <int>[]
: List<int>.unmodifiable(partialPtr.asTypedList(partialLen));
} finally {
calloc.free(fullOut);
calloc.free(partialOut);
}
return VtSgrAttributeData._(
tag: tag,
unknown: VtSgrUnknownData(full: full, partial: partial),
);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_UNDERLINE:
return VtSgrAttributeData._(tag: tag, underline: value.underline);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_UNDERLINE_COLOR:
return VtSgrAttributeData._(
tag: tag,
rgb: VtRgbColor.fromNative(value.underline_color),
);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_DIRECT_COLOR_FG:
return VtSgrAttributeData._(
tag: tag,
rgb: VtRgbColor.fromNative(value.direct_color_fg),
);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_DIRECT_COLOR_BG:
return VtSgrAttributeData._(
tag: tag,
rgb: VtRgbColor.fromNative(value.direct_color_bg),
);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_UNDERLINE_COLOR_256:
return VtSgrAttributeData._(
tag: tag,
paletteIndex: value.underline_color_256,
);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_BG_8:
return VtSgrAttributeData._(tag: tag, paletteIndex: value.bg_8);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_FG_8:
return VtSgrAttributeData._(tag: tag, paletteIndex: value.fg_8);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_BRIGHT_BG_8:
return VtSgrAttributeData._(tag: tag, paletteIndex: value.bright_bg_8);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_BRIGHT_FG_8:
return VtSgrAttributeData._(tag: tag, paletteIndex: value.bright_fg_8);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_BG_256:
return VtSgrAttributeData._(tag: tag, paletteIndex: value.bg_256);
case bindings.GhosttySgrAttributeTag.GHOSTTY_SGR_ATTR_FG_256:
return VtSgrAttributeData._(tag: tag, paletteIndex: value.fg_256);
default:
return VtSgrAttributeData._(tag: tag);
}
}