]> granicus.if.org Git - libass/commit
Implement drawing mode (\p)
authorGrigori Goronzy <greg@blackbox>
Mon, 6 Jul 2009 02:13:24 +0000 (04:13 +0200)
committerGrigori Goronzy <greg@blackbox>
Mon, 6 Jul 2009 02:29:40 +0000 (04:29 +0200)
commit323e6cefb6e2c7dfd82ef397fffe395f7b3e49ef
tree693035dde8afc0eddb463c3731bde4bd08c9c2f1
parentcbf59032a582b37e50490e3eea0cf3cf8532c418
Implement drawing mode (\p)

Finally implement the drawing mode, which allows drawing of custom
vector graphics.  Drawings are intercepted in ass_render_event; a hash
of the drawing string is generated which is then used for looking
up drawings and bitmaps of drawings in the cache.  The drawings
itself are "fake" glyphs.  They are created by parsing the simple
drawing description language, evaluating the curves described (lines,
cubic beziers and/or a special kind of b-splines) and creating vector
outlines.  Afterwards, these drawings are (with a few exceptions, e.g.
ascender/descender) exactly handled like regular glyphs.

Support for vector clippings is still missing, but otherwise the
implementation should be complete and compatible with VSFilter.

The libass integration of the drawing parsing/processing code is still a
bit sketchy and should be refactored.

History:
WIP: Drawing mode infrastructure
WIP: Drawing tokenizer
WIP: Parse drawing tokens, call evaluators
WIP: Bezier/b-spline evaluator
WIP: Final pieces for the drawing mode
WIP: Heavy modifications to the drawing parser/tokenizer
WIP: Dynamic outline memory allocation
WIP: Drawing position fixes
WIP: more drawing position fixup (similar to VSFilter now)
WIP: Lots of cleanup and fixes for drawings.
WIP: Drawing mode integration into ass_render_event
libass/Makefile.am
libass/ass_cache.c
libass/ass_cache.h
libass/ass_cache_template.c
libass/ass_drawing.c [new file with mode: 0644]
libass/ass_drawing.h [new file with mode: 0644]
libass/ass_render.c
libass/ass_utils.h