summaryrefslogtreecommitdiffstats
path: root/libass/ass_outline.h
diff options
context:
space:
mode:
authorDr.Smile <vabnick@gmail.com>2017-09-17 03:00:34 +0300
committerDr.Smile <vabnick@gmail.com>2017-09-17 04:07:20 +0300
commitf159a8cf55c8b3f2193ab20159a255310c7c5ca9 (patch)
tree53da5b52088cae27897b3cb6893ef65630aea892 /libass/ass_outline.h
parent218ee0b2ab23e3f127b77579c57e9097a5ac6056 (diff)
downloadlibass-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.h24
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);