1
0
Fork 0
zenolith-sdl2/src/ffi.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,
};
}