diff options
author | Dr.Smile <vabnick@gmail.com> | 2017-09-17 03:00:34 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2017-09-17 04:07:20 +0300 |
commit | f159a8cf55c8b3f2193ab20159a255310c7c5ca9 (patch) | |
tree | 53da5b52088cae27897b3cb6893ef65630aea892 /libass/ass_outline.h | |
parent | 218ee0b2ab23e3f127b77579c57e9097a5ac6056 (diff) | |
download | libass-f159a8cf55c8b3f2193ab20159a255310c7c5ca9.tar.bz2 libass-f159a8cf55c8b3f2193ab20159a255310c7c5ca9.tar.xz |
Replace FreeType types with libass native types
FT_Vector and FT_BBox types are based on FT_Pos, which is alias of long.
FreeType treats it as 32-bit integer, but on some platforms long can be
64-bit. That leads to wasted memory and suboptimal performance.
Diffstat (limited to 'libass/ass_outline.h')
-rw-r--r-- | libass/ass_outline.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libass/ass_outline.h b/libass/ass_outline.h index 0a1b8ec..7e71b8a 100644 --- a/libass/ass_outline.h +++ b/libass/ass_outline.h @@ -22,13 +22,26 @@ #include <ft2build.h> #include FT_OUTLINE_H #include <stdbool.h> +#include <stdint.h> +typedef struct { + int32_t x, y; +} ASS_Vector; + +typedef struct { + double x, y; +} ASS_DVector; + +typedef struct { + int32_t x_min, y_min, x_max, y_max; +} ASS_Rect; + typedef struct ass_outline { size_t n_contours, max_contours; size_t *contours; size_t n_points, max_points; - FT_Vector *points; + ASS_Vector *points; char *tags; } ASS_Outline; @@ -37,13 +50,12 @@ bool outline_convert(ASS_Outline *outline, const FT_Outline *source); bool outline_copy(ASS_Outline *outline, const ASS_Outline *source); void outline_free(ASS_Outline *outline); -bool outline_add_point(ASS_Outline *outline, FT_Vector pt, char tag); +bool outline_add_point(ASS_Outline *outline, ASS_Vector pt, char tag); bool outline_close_contour(ASS_Outline *outline); -void outline_translate(const ASS_Outline *outline, FT_Pos dx, FT_Pos dy); -void outline_transform(const ASS_Outline *outline, const FT_Matrix *matrix); -void outline_update_cbox(const ASS_Outline *outline, FT_BBox *cbox); -void outline_get_cbox(const ASS_Outline *outline, FT_BBox *cbox); +void outline_translate(const ASS_Outline *outline, int32_t dx, int32_t dy); +void outline_transform(const ASS_Outline *outline, const FT_Matrix *matrix); // XXX: replace with outline_scale +void outline_get_cbox(const ASS_Outline *outline, ASS_Rect *cbox); bool outline_stroke(ASS_Outline *result, ASS_Outline *result1, const ASS_Outline *path, int xbord, int ybord, int eps); |