You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.1 KiB
85 lines
2.1 KiB
|
|
|
|
#ifndef _BDF_GLYPH_H |
|
#define _BDF_GLYPH_H |
|
#include <stdint.h> |
|
#include <stddef.h> |
|
|
|
/* forward def */ |
|
typedef struct _bdf_font_struct bf_t; |
|
|
|
|
|
struct _bbx_struct |
|
{ |
|
long w; |
|
long h; |
|
long x; |
|
long y; |
|
}; |
|
typedef struct _bbx_struct bbx_t; |
|
|
|
|
|
struct _bdf_glyph_struct |
|
{ |
|
bf_t *bf; |
|
|
|
long encoding; |
|
long map_to; |
|
|
|
long dwidth_x; |
|
long dwidth_y; |
|
|
|
bbx_t bbx; /* x,y are delta x,y from glyph, w,h start wth bitmap dimension, but may be reduced */ |
|
long shift_x; /* extra shift for BDF_BBX_MODE_HEIGHT alignment */ |
|
int is_excluded_from_kerning; |
|
|
|
uint8_t *bitmap_data; |
|
int bitmap_width; /* the physical width within "bitmap_data", will be larger than or equal to bbx.w */ |
|
int bitmap_height; |
|
|
|
//int actual_bitmap_width; /* identical to bbx.w, maybe replace actual_bitmap_width by bbx.w */ |
|
//int actual_bitmap_height; /* identical to bbx.h, maybe replace actual_bitmap_height by bbx.h */ |
|
|
|
uint8_t *target_data; /* if this is not NULL, then there is a valid glyph */ |
|
int target_max; /* 32 bit value */ |
|
int target_cnt; /* 32 bit value */ |
|
int target_bit_pos; |
|
|
|
/* rle data */ |
|
|
|
unsigned rle_bits_per_0; |
|
unsigned rle_bits_per_1; |
|
|
|
int rle_is_first; |
|
unsigned rle_bitcnt; |
|
unsigned rle_last_0; |
|
unsigned rle_last_1; |
|
|
|
long width_deviation; /* filled by bf_copy_bbx_and_update_shift for statistics */ |
|
|
|
}; |
|
typedef struct _bdf_glyph_struct bg_t; |
|
|
|
bg_t *bg_Open(void); |
|
void bg_Close(bg_t *bg); |
|
int bg_AddTargetData(bg_t *bg, uint8_t data); |
|
void bg_ClearTargetData(bg_t *bg); |
|
int bg_AddTargetBits(bg_t *bg, unsigned cnt, unsigned val); |
|
int bg_FlushTargetBits(bg_t *bg); |
|
|
|
int bg_SetBitmapSizeInBytes(bg_t *bg, size_t bytes); |
|
int bg_SetBitmapSize(bg_t *bg, int w, int h); |
|
void bg_SetBitmapPixel(bg_t *bg, int x, int y, int value); |
|
int bg_GetBitmapPixel(bg_t *bg, int x, int y); |
|
int bg_GetBBXPixel(bg_t *bg, int x, int y); |
|
|
|
void bg_ShowBitmap(bg_t *bg, bbx_t *bbx); |
|
void bg_ReduceGlyph(bg_t *bg); |
|
int bg_Max(bg_t *bg, bbx_t *max); /* returns idx which describes glyph expansion */ |
|
|
|
/* bdf_rle.c */ |
|
int bg_rle_compress(bg_t *bg, bbx_t *bbx, unsigned rle_bits_per_0, unsigned rle_bits_per_1, int is_output); |
|
|
|
|
|
#endif |
|
|
|
|