Files
raddebugger/src/font_provider/font_provider.h
T
2024-01-10 19:57:50 -08:00

62 lines
1.3 KiB
C

// Copyright (c) 2024 Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
#ifndef FONT_PROVIDER_H
#define FONT_PROVIDER_H
#define fp_hook C_LINKAGE
////////////////////////////////
//~ rjf: Types
typedef enum FP_RasterMode
{
FP_RasterMode_Sharp,
FP_RasterMode_Smooth,
FP_RasterMode_COUNT
}
FP_RasterMode;
typedef struct FP_Handle FP_Handle;
struct FP_Handle
{
U64 u64[2];
};
typedef struct FP_Metrics FP_Metrics;
struct FP_Metrics
{
F32 design_units_per_em;
F32 ascent;
F32 descent;
F32 line_gap;
F32 capital_height;
};
typedef struct FP_RasterResult FP_RasterResult;
struct FP_RasterResult
{
Vec2S16 atlas_dim;
void *atlas;
F32 advance;
S16 height;
};
////////////////////////////////
//~ rjf: Basic Type Functions
internal FP_Handle fp_handle_zero(void);
internal B32 fp_handle_match(FP_Handle a, FP_Handle b);
////////////////////////////////
//~ rjf: Backend Hooks
fp_hook void fp_init(void);
fp_hook FP_Handle fp_font_open(String8 path);
fp_hook FP_Handle fp_font_open_from_static_data_string(String8 *data_ptr);
fp_hook void fp_font_close(FP_Handle handle);
fp_hook FP_Metrics fp_metrics_from_font(FP_Handle font);
fp_hook NO_ASAN FP_RasterResult fp_raster(Arena *arena, FP_Handle font, F32 size, FP_RasterMode mode, String8 string);
#endif // FONT_PROVIDER_H