195 lines
7.8 KiB
Zig
195 lines
7.8 KiB
Zig
pub const c = @cImport({
|
|
@cInclude("SDL2/SDL.h");
|
|
@cInclude("freetype/freetype.h");
|
|
});
|
|
|
|
// This error union as well as the handleFTError function has been kindly involuntarily donated
|
|
// by the awesome mach-freetype library.
|
|
pub const FreeTypeError = error{
|
|
CannotOpenResource,
|
|
UnknownFileFormat,
|
|
InvalidFileFormat,
|
|
InvalidVersion,
|
|
LowerModuleVersion,
|
|
InvalidArgument,
|
|
UnimplementedFeature,
|
|
InvalidTable,
|
|
InvalidOffset,
|
|
ArrayTooLarge,
|
|
MissingModule,
|
|
MissingProperty,
|
|
InvalidGlyphIndex,
|
|
InvalidCharacterCode,
|
|
InvalidGlyphFormat,
|
|
CannotRenderGlyph,
|
|
InvalidOutline,
|
|
InvalidComposite,
|
|
TooManyHints,
|
|
InvalidPixelSize,
|
|
InvalidHandle,
|
|
InvalidLibraryHandle,
|
|
InvalidDriverHandle,
|
|
InvalidFaceHandle,
|
|
InvalidSizeHandle,
|
|
InvalidSlotHandle,
|
|
InvalidCharMapHandle,
|
|
InvalidCacheHandle,
|
|
InvalidStreamHandle,
|
|
TooManyDrivers,
|
|
TooManyExtensions,
|
|
OutOfMemory,
|
|
UnlistedObject,
|
|
CannotOpenStream,
|
|
InvalidStreamSeek,
|
|
InvalidStreamSkip,
|
|
InvalidStreamRead,
|
|
InvalidStreamOperation,
|
|
InvalidFrameOperation,
|
|
NestedFrameAccess,
|
|
InvalidFrameRead,
|
|
RasterUninitialized,
|
|
RasterCorrupted,
|
|
RasterOverflow,
|
|
RasterNegativeHeight,
|
|
TooManyCaches,
|
|
InvalidOpcode,
|
|
TooFewArguments,
|
|
StackOverflow,
|
|
CodeOverflow,
|
|
BadArgument,
|
|
DivideByZero,
|
|
InvalidReference,
|
|
DebugOpCode,
|
|
ENDFInExecStream,
|
|
NestedDEFS,
|
|
InvalidCodeRange,
|
|
ExecutionTooLong,
|
|
TooManyFunctionDefs,
|
|
TooManyInstructionDefs,
|
|
TableMissing,
|
|
HorizHeaderMissing,
|
|
LocationsMissing,
|
|
NameTableMissing,
|
|
CMapTableMissing,
|
|
HmtxTableMissing,
|
|
PostTableMissing,
|
|
InvalidHorizMetrics,
|
|
InvalidCharMapFormat,
|
|
InvalidPPem,
|
|
InvalidVertMetrics,
|
|
CouldNotFindContext,
|
|
InvalidPostTableFormat,
|
|
InvalidPostTable,
|
|
Syntax,
|
|
StackUnderflow,
|
|
Ignore,
|
|
NoUnicodeGlyphName,
|
|
MissingStartfontField,
|
|
MissingFontField,
|
|
MissingSizeField,
|
|
MissingFontboundingboxField,
|
|
MissingCharsField,
|
|
MissingStartcharField,
|
|
MissingEncodingField,
|
|
MissingBbxField,
|
|
BbxTooBig,
|
|
CorruptedFontHeader,
|
|
CorruptedFontGlyphs,
|
|
};
|
|
|
|
pub fn handleFTError(err: c_int) FreeTypeError!void {
|
|
return switch (err) {
|
|
c.FT_Err_Ok => {},
|
|
c.FT_Err_Cannot_Open_Resource => error.CannotOpenResource,
|
|
c.FT_Err_Unknown_File_Format => error.UnknownFileFormat,
|
|
c.FT_Err_Invalid_File_Format => error.InvalidFileFormat,
|
|
c.FT_Err_Invalid_Version => error.InvalidVersion,
|
|
c.FT_Err_Lower_Module_Version => error.LowerModuleVersion,
|
|
c.FT_Err_Invalid_Argument => error.InvalidArgument,
|
|
c.FT_Err_Unimplemented_Feature => error.UnimplementedFeature,
|
|
c.FT_Err_Invalid_Table => error.InvalidTable,
|
|
c.FT_Err_Invalid_Offset => error.InvalidOffset,
|
|
c.FT_Err_Array_Too_Large => error.ArrayTooLarge,
|
|
c.FT_Err_Missing_Module => error.MissingModule,
|
|
c.FT_Err_Missing_Property => error.MissingProperty,
|
|
c.FT_Err_Invalid_Glyph_Index => error.InvalidGlyphIndex,
|
|
c.FT_Err_Invalid_Character_Code => error.InvalidCharacterCode,
|
|
c.FT_Err_Invalid_Glyph_Format => error.InvalidGlyphFormat,
|
|
c.FT_Err_Cannot_Render_Glyph => error.CannotRenderGlyph,
|
|
c.FT_Err_Invalid_Outline => error.InvalidOutline,
|
|
c.FT_Err_Invalid_Composite => error.InvalidComposite,
|
|
c.FT_Err_Too_Many_Hints => error.TooManyHints,
|
|
c.FT_Err_Invalid_Pixel_Size => error.InvalidPixelSize,
|
|
c.FT_Err_Invalid_Handle => error.InvalidHandle,
|
|
c.FT_Err_Invalid_Library_Handle => error.InvalidLibraryHandle,
|
|
c.FT_Err_Invalid_Driver_Handle => error.InvalidDriverHandle,
|
|
c.FT_Err_Invalid_Face_Handle => error.InvalidFaceHandle,
|
|
c.FT_Err_Invalid_Size_Handle => error.InvalidSizeHandle,
|
|
c.FT_Err_Invalid_Slot_Handle => error.InvalidSlotHandle,
|
|
c.FT_Err_Invalid_CharMap_Handle => error.InvalidCharMapHandle,
|
|
c.FT_Err_Invalid_Cache_Handle => error.InvalidCacheHandle,
|
|
c.FT_Err_Invalid_Stream_Handle => error.InvalidStreamHandle,
|
|
c.FT_Err_Too_Many_Drivers => error.TooManyDrivers,
|
|
c.FT_Err_Too_Many_Extensions => error.TooManyExtensions,
|
|
c.FT_Err_Out_Of_Memory => error.OutOfMemory,
|
|
c.FT_Err_Unlisted_Object => error.UnlistedObject,
|
|
c.FT_Err_Cannot_Open_Stream => error.CannotOpenStream,
|
|
c.FT_Err_Invalid_Stream_Seek => error.InvalidStreamSeek,
|
|
c.FT_Err_Invalid_Stream_Skip => error.InvalidStreamSkip,
|
|
c.FT_Err_Invalid_Stream_Read => error.InvalidStreamRead,
|
|
c.FT_Err_Invalid_Stream_Operation => error.InvalidStreamOperation,
|
|
c.FT_Err_Invalid_Frame_Operation => error.InvalidFrameOperation,
|
|
c.FT_Err_Nested_Frame_Access => error.NestedFrameAccess,
|
|
c.FT_Err_Invalid_Frame_Read => error.InvalidFrameRead,
|
|
c.FT_Err_Raster_Uninitialized => error.RasterUninitialized,
|
|
c.FT_Err_Raster_Corrupted => error.RasterCorrupted,
|
|
c.FT_Err_Raster_Overflow => error.RasterOverflow,
|
|
c.FT_Err_Raster_Negative_Height => error.RasterNegativeHeight,
|
|
c.FT_Err_Too_Many_Caches => error.TooManyCaches,
|
|
c.FT_Err_Invalid_Opcode => error.InvalidOpcode,
|
|
c.FT_Err_Too_Few_Arguments => error.TooFewArguments,
|
|
c.FT_Err_Stack_Overflow => error.StackOverflow,
|
|
c.FT_Err_Code_Overflow => error.CodeOverflow,
|
|
c.FT_Err_Bad_Argument => error.BadArgument,
|
|
c.FT_Err_Divide_By_Zero => error.DivideByZero,
|
|
c.FT_Err_Invalid_Reference => error.InvalidReference,
|
|
c.FT_Err_Debug_OpCode => error.DebugOpCode,
|
|
c.FT_Err_ENDF_In_Exec_Stream => error.ENDFInExecStream,
|
|
c.FT_Err_Nested_DEFS => error.NestedDEFS,
|
|
c.FT_Err_Invalid_CodeRange => error.InvalidCodeRange,
|
|
c.FT_Err_Execution_Too_Long => error.ExecutionTooLong,
|
|
c.FT_Err_Too_Many_Function_Defs => error.TooManyFunctionDefs,
|
|
c.FT_Err_Too_Many_Instruction_Defs => error.TooManyInstructionDefs,
|
|
c.FT_Err_Table_Missing => error.TableMissing,
|
|
c.FT_Err_Horiz_Header_Missing => error.HorizHeaderMissing,
|
|
c.FT_Err_Locations_Missing => error.LocationsMissing,
|
|
c.FT_Err_Name_Table_Missing => error.NameTableMissing,
|
|
c.FT_Err_CMap_Table_Missing => error.CMapTableMissing,
|
|
c.FT_Err_Hmtx_Table_Missing => error.HmtxTableMissing,
|
|
c.FT_Err_Post_Table_Missing => error.PostTableMissing,
|
|
c.FT_Err_Invalid_Horiz_Metrics => error.InvalidHorizMetrics,
|
|
c.FT_Err_Invalid_CharMap_Format => error.InvalidCharMapFormat,
|
|
c.FT_Err_Invalid_PPem => error.InvalidPPem,
|
|
c.FT_Err_Invalid_Vert_Metrics => error.InvalidVertMetrics,
|
|
c.FT_Err_Could_Not_Find_Context => error.CouldNotFindContext,
|
|
c.FT_Err_Invalid_Post_Table_Format => error.InvalidPostTableFormat,
|
|
c.FT_Err_Invalid_Post_Table => error.InvalidPostTable,
|
|
c.FT_Err_Syntax_Error => error.Syntax,
|
|
c.FT_Err_Stack_Underflow => error.StackUnderflow,
|
|
c.FT_Err_Ignore => error.Ignore,
|
|
c.FT_Err_No_Unicode_Glyph_Name => error.NoUnicodeGlyphName,
|
|
c.FT_Err_Missing_Startfont_Field => error.MissingStartfontField,
|
|
c.FT_Err_Missing_Font_Field => error.MissingFontField,
|
|
c.FT_Err_Missing_Size_Field => error.MissingSizeField,
|
|
c.FT_Err_Missing_Fontboundingbox_Field => error.MissingFontboundingboxField,
|
|
c.FT_Err_Missing_Chars_Field => error.MissingCharsField,
|
|
c.FT_Err_Missing_Startchar_Field => error.MissingStartcharField,
|
|
c.FT_Err_Missing_Encoding_Field => error.MissingEncodingField,
|
|
c.FT_Err_Missing_Bbx_Field => error.MissingBbxField,
|
|
c.FT_Err_Bbx_Too_Big => error.BbxTooBig,
|
|
c.FT_Err_Corrupted_Font_Header => error.CorruptedFontHeader,
|
|
c.FT_Err_Corrupted_Font_Glyphs => error.CorruptedFontGlyphs,
|
|
else => unreachable,
|
|
};
|
|
}
|