Mercurial > mplayer.hg
comparison libass/ass_drawing.h @ 30200:48d020c5ceca
Update internal libass copy to commit 8db4a5
author | greg |
---|---|
date | Fri, 08 Jan 2010 18:35:44 +0000 |
parents | |
children | e64df5862cea |
comparison
equal
deleted
inserted
replaced
30199:f9984b2fc1b2 | 30200:48d020c5ceca |
---|---|
1 /* | |
2 * Copyright (C) 2009 Grigori Goronzy <greg@geekmind.org> | |
3 * | |
4 * This file is part of libass. | |
5 * | |
6 * Permission to use, copy, modify, and distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #ifndef LIBASS_DRAWING_H | |
20 #define LIBASS_DRAWING_H | |
21 | |
22 #include <ft2build.h> | |
23 #include FT_GLYPH_H | |
24 | |
25 #include "ass.h" | |
26 | |
27 #define DRAWING_INITIAL_SIZE 256 | |
28 | |
29 typedef enum { | |
30 TOKEN_MOVE, | |
31 TOKEN_MOVE_NC, | |
32 TOKEN_LINE, | |
33 TOKEN_CUBIC_BEZIER, | |
34 TOKEN_CONIC_BEZIER, | |
35 TOKEN_B_SPLINE, | |
36 TOKEN_EXTEND_SPLINE, | |
37 TOKEN_CLOSE | |
38 } ASS_TokenType; | |
39 | |
40 typedef struct ass_drawing_token { | |
41 ASS_TokenType type; | |
42 FT_Vector point; | |
43 struct ass_drawing_token *next; | |
44 struct ass_drawing_token *prev; | |
45 } ASS_DrawingToken; | |
46 | |
47 typedef struct { | |
48 char *text; // drawing string | |
49 int i; // text index | |
50 int scale; // scale (1-64) for subpixel accuracy | |
51 double pbo; // drawing will be shifted in y direction by this amount | |
52 double scale_x; // FontScaleX | |
53 double scale_y; // FontScaleY | |
54 int asc; // ascender | |
55 int desc; // descender | |
56 FT_OutlineGlyph glyph; // the "fake" glyph created for later rendering | |
57 int hash; // hash value (for caching) | |
58 | |
59 // private | |
60 FT_Library ftlibrary; // FT library instance, needed for font ops | |
61 ASS_Library *library; | |
62 int size; // current buffer size | |
63 ASS_DrawingToken *tokens; // tokenized drawing | |
64 int max_points; // current maximum size | |
65 int max_contours; | |
66 double point_scale_x; | |
67 double point_scale_y; | |
68 } ASS_Drawing; | |
69 | |
70 ASS_Drawing *ass_drawing_new(void *fontconfig_priv, ASS_Font *font, | |
71 ASS_Hinting hint, FT_Library lib); | |
72 void ass_drawing_free(ASS_Drawing* drawing); | |
73 void ass_drawing_add_char(ASS_Drawing* drawing, char symbol); | |
74 void ass_drawing_hash(ASS_Drawing* drawing); | |
75 FT_OutlineGlyph *ass_drawing_parse(ASS_Drawing *drawing, int raw_mode); | |
76 | |
77 #endif /* LIBASS_DRAWING_H */ |