summaryrefslogtreecommitdiffstats
path: root/libass/ass_drawing.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_drawing.c')
-rw-r--r--libass/ass_drawing.c51
1 files changed, 8 insertions, 43 deletions
diff --git a/libass/ass_drawing.c b/libass/ass_drawing.c
index c0ea548..11ff399 100644
--- a/libass/ass_drawing.c
+++ b/libass/ass_drawing.c
@@ -224,57 +224,21 @@ static bool drawing_add_curve(ASS_Drawing *drawing, ASS_DrawingToken *token,
}
/*
- * \brief Create and initialize a new drawing and return it
+ * \brief Convert token list to outline. Calls the line and curve evaluators.
*/
-ASS_Drawing *ass_drawing_new(ASS_Library *lib)
+ASS_Outline *ass_drawing_parse(ASS_Drawing *drawing, ASS_Library *lib, bool raw_mode)
{
- ASS_Drawing *drawing = calloc(1, sizeof(*drawing));
- if (!drawing)
- return NULL;
- rectangle_reset(&drawing->cbox);
drawing->library = lib;
- drawing->scale_x = 1.;
- drawing->scale_y = 1.;
-
- if (!outline_alloc(&drawing->outline, GLYPH_INITIAL_POINTS, GLYPH_INITIAL_SEGMENTS)) {
- free(drawing);
+ rectangle_reset(&drawing->cbox);
+ if (!outline_alloc(&drawing->outline, GLYPH_INITIAL_POINTS, GLYPH_INITIAL_SEGMENTS))
return NULL;
- }
- return drawing;
-}
-
-/*
- * \brief Free a drawing
- */
-void ass_drawing_free(ASS_Drawing *drawing)
-{
- if (drawing) {
- free(drawing->text);
- outline_free(&drawing->outline);
- }
- free(drawing);
-}
-
-/*
- * \brief Copy an ASCII string to the drawing text buffer
- */
-void ass_drawing_set_text(ASS_Drawing *drawing, char *str, size_t len)
-{
- free(drawing->text);
- drawing->text = strndup(str, len);
-}
-
-/*
- * \brief Convert token list to outline. Calls the line and curve evaluators.
- */
-ASS_Outline *ass_drawing_parse(ASS_Drawing *drawing, bool raw_mode)
-{
- bool started = false;
- ASS_Vector pen = {0, 0};
+ drawing->outline.n_points = drawing->outline.n_segments = 0;
ASS_DrawingToken *tokens = drawing_tokenize(drawing->text);
drawing_prepare(drawing);
+ bool started = false;
+ ASS_Vector pen = {0, 0};
ASS_DrawingToken *token = tokens;
while (token) {
// Draw something according to current command
@@ -349,5 +313,6 @@ ASS_Outline *ass_drawing_parse(ASS_Drawing *drawing, bool raw_mode)
error:
drawing_free_tokens(tokens);
+ outline_free(&drawing->outline);
return NULL;
}