]> granicus.if.org Git - libass/log
libass
13 years agoHarfBuzz shaping support
Grigori Goronzy [Mon, 11 Jul 2011 11:00:08 +0000 (13:00 +0200)]
HarfBuzz shaping support

Split up text into runs with the same direction, font face and font
size, shape these runs with HarfBuzz and reorder accordingly.

This noticeably improves Arabic shaping and should make shaping for many
other scripts work. HarfBuzz also does kerning for Latin text.

13 years agoAdd HarfBuzz checks to build system
Grigori Goronzy [Sun, 10 Jul 2011 18:25:35 +0000 (20:25 +0200)]
Add HarfBuzz checks to build system

13 years agoSeparate glyph font face matching and glyph loading
Grigori Goronzy [Sun, 10 Jul 2011 02:08:55 +0000 (04:08 +0200)]
Separate glyph font face matching and glyph loading

Split up ass_font_get_glyph into two functions: one function matches
checks the fonts for support of the requested codepoint and returns
a face_index and glyph_index to later load the glyph, with a second
function.

This approach is very useful for shaping, which needs to be done
on runs with the same font face and font size and changes the
glyph_index.

13 years agoHook up FriBidi's simple Arabic shaper
Grigori Goronzy [Sun, 10 Jul 2011 00:25:24 +0000 (02:25 +0200)]
Hook up FriBidi's simple Arabic shaper

Use FriBidi's shaper not only for mirroring, but also for simplified
Arabic shaping.

13 years agoFix bitmap cache
Grigori Goronzy [Sat, 9 Jul 2011 23:53:09 +0000 (01:53 +0200)]
Fix bitmap cache

Pass the *complete* hash key to the cache handling functions, not
only the outline-specific subkey. This mistake completely stopped
the cache from actually working and resulted in great slowdown!

13 years agoReorder positions for "Banner" effect text
Grigori Goronzy [Sat, 9 Jul 2011 22:38:12 +0000 (00:38 +0200)]
Reorder positions for "Banner" effect text

Events that use the "Banner" effect have different wrapping/breaking
handling (none at all, to be exact) and need special treatment to
make reordering work.

13 years agoRedesign horizontal alignment calculations for bidi
Grigori Goronzy [Sat, 9 Jul 2011 20:04:01 +0000 (22:04 +0200)]
Redesign horizontal alignment calculations for bidi

The line alignment code determined the first and last glyph in a
line and calculated the distance from that. This is rather arcane
and doesn't easily work with bidi. Redesign the algorithm to simply
add together all individual character widths instead.

13 years agoFix coordinates after repositioning
Grigori Goronzy [Fri, 8 Jul 2011 17:05:14 +0000 (19:05 +0200)]
Fix coordinates after repositioning

13 years agoshaper: always use neutral base direction
Grigori Goronzy [Fri, 8 Jul 2011 16:32:16 +0000 (18:32 +0200)]
shaper: always use neutral base direction

13 years agoshaper: print version info string
Grigori Goronzy [Wed, 6 Jul 2011 21:37:01 +0000 (23:37 +0200)]
shaper: print version info string

13 years agoProvisional bidi and shaping support
Grigori Goronzy [Wed, 6 Jul 2011 21:19:54 +0000 (23:19 +0200)]
Provisional bidi and shaping support

Adds fully working bidirectional text and simple shaping support.
The following works:
- bidirectional text according to the Unicode Bidirectional Algorithm
- simple shaper for mirrored forms (brackets, etc.) according to
  rule L4 of the Unicode Bidirectional Algorithm
- reordering into visual order with correct line wrapping

However, the implementation certainly needs efficiency improvements
(caching, less malloc'ing), a proper shaper (HarfBuzz) needs to be
hooked up and various bugs with karaoke and positioning need to be
fixed.

13 years agoFix cache leak
Grigori Goronzy [Wed, 6 Jul 2011 20:47:56 +0000 (22:47 +0200)]
Fix cache leak

Fixes a leak introduced with the new cache functions, caused by wrong
pointer usage.

13 years agoAdd FriBidi checks to build system
Grigori Goronzy [Mon, 4 Jul 2011 13:39:21 +0000 (15:39 +0200)]
Add FriBidi checks to build system

13 years agoSeparate event parsing and layout
Grigori Goronzy [Mon, 4 Jul 2011 13:19:40 +0000 (15:19 +0200)]
Separate event parsing and layout

Split up the combined event parsing and layout loop into two passes.
State information needed for layout are duplicated in GlyphInfo
structures.

13 years agoRemove unused struct member
Grigori Goronzy [Mon, 4 Jul 2011 11:10:58 +0000 (13:10 +0200)]
Remove unused struct member

13 years agoIntroduce bitmap runs
Grigori Goronzy [Mon, 4 Jul 2011 10:59:11 +0000 (12:59 +0200)]
Introduce bitmap runs

Prepare for run-based rendering. In the parser, increment a run id
according to relevant style changes (color, border, shadow, etc.) to
mark the points where a new bitmap needs to be started. Modify the line
wrapper to increment the run ids of each glyph after a break.
Add functions to calculate the render size of runs for rasterization.

13 years agoFix box blur for non-bordered outlines
Grigori Goronzy [Mon, 4 Jul 2011 08:06:02 +0000 (10:06 +0200)]
Fix box blur for non-bordered outlines

This horrible bug was introduced by commit c13cb2.

Pointed out by uau.

13 years agoFix: VSFilter compat: don't render shadow when glyph/border invisible
Grigori Goronzy [Mon, 4 Jul 2011 08:00:33 +0000 (10:00 +0200)]
Fix: VSFilter compat: don't render shadow when glyph/border invisible

Use the alpha channel, not the red channel. Fixes commit f92830.

Original patch by lachs0r.

13 years agoCache ascender/descender
Grigori Goronzy [Fri, 1 Jul 2011 01:13:22 +0000 (03:13 +0200)]
Cache ascender/descender

Cache ascender/descender so they don't have to be queried every frame
for every glyph. This also makes it possible to more uniformly handle
drawings and glyphs.

13 years agoRemove unused hash key item
Grigori Goronzy [Tue, 28 Jun 2011 19:02:09 +0000 (21:02 +0200)]
Remove unused hash key item

13 years agoFix stride support in vector clips
Grigori Goronzy [Mon, 27 Jun 2011 19:07:50 +0000 (21:07 +0200)]
Fix stride support in vector clips

13 years agocache: unified bitmap cache
Grigori Goronzy [Mon, 27 Jun 2011 19:04:12 +0000 (21:04 +0200)]
cache: unified bitmap cache

Similarly to the glyph cache, subclass the bitmap cache to allow both
outline bitmaps and clipping mask bitmaps to coexist in the same cache
in a much cleaner way.

13 years agocache: use outline-bitmap hierarchy to slim down bitmap hash key
Grigori Goronzy [Mon, 27 Jun 2011 18:10:45 +0000 (20:10 +0200)]
cache: use outline-bitmap hierarchy to slim down bitmap hash key

The bitmap hash key duplicated a lot of information the glyph hash
key already saves. The subclassing introduced recently complicates
this even more. Modify the hash key to utilize a pointer to the glyph
hash value instead, which is faster and more flexible. Make sure to
always empty the bitmap cache when the glyph cache is emptied.

13 years agocache: safer ass_cache_stats
Grigori Goronzy [Mon, 27 Jun 2011 17:52:53 +0000 (19:52 +0200)]
cache: safer ass_cache_stats

13 years agocache: fix size tracking and emptying
Grigori Goronzy [Mon, 27 Jun 2011 17:42:56 +0000 (19:42 +0200)]
cache: fix size tracking and emptying

13 years agocache: unified outline cache for glyphs/drawings
Grigori Goronzy [Mon, 27 Jun 2011 00:17:10 +0000 (02:17 +0200)]
cache: unified outline cache for glyphs/drawings

Glyphs and drawings have wildly different hash keys. Subclass the hash
keys of glyphs and drawings in a new, unified outline cache. This also
fixes some issues with drawings in the glyph cache. Now, the textual
description of the drawing is included in the key (the hash value isn't
really good enough, especially not fnv32) and the baseline offset is
saved as well.

13 years agoRemove outdated comment
Grigori Goronzy [Sun, 26 Jun 2011 09:41:06 +0000 (11:41 +0200)]
Remove outdated comment

13 years agobitmap: add stride
Grigori Goronzy [Sun, 26 Jun 2011 03:44:52 +0000 (05:44 +0200)]
bitmap: add stride

Add stride support to the basic bitmap type used for low-level
rasterization.

13 years agoClean up includes
Grigori Goronzy [Tue, 21 Jun 2011 17:13:35 +0000 (19:13 +0200)]
Clean up includes

13 years agoRemove unused function
Grigori Goronzy [Tue, 21 Jun 2011 17:06:55 +0000 (19:06 +0200)]
Remove unused function

13 years agoUse bare outlines for drawings
Grigori Goronzy [Mon, 20 Jun 2011 21:12:22 +0000 (23:12 +0200)]
Use bare outlines for drawings

This finally gets rid of the nasty hack that manipulated a glyph
we somehow got from FreeType. Simplifies drawing handling a bit and
decouples drawing code from all font handling and related (fontconfig,
etc.) code.

13 years agoConvert outline processing and caching from glyphs to bare outlines
Grigori Goronzy [Mon, 20 Jun 2011 20:50:34 +0000 (22:50 +0200)]
Convert outline processing and caching from glyphs to bare outlines

This introduces functions to use and copy pointered outline objects
easily and uses these instead of glyphs everywhere.

Previously the glyph cache was abused for caching vector clipping masks,
but this isn't possible anymore (nor desirable), thus vector clipping
cache has been disabled for the moment.

13 years agoConvert to high-level rasterizer parts to outlines
Grigori Goronzy [Wed, 15 Jun 2011 00:04:18 +0000 (02:04 +0200)]
Convert to high-level rasterizer parts to outlines

This covers rasterization, filtering and blending for one
render item.

13 years agoStroker: process outlines directly
Grigori Goronzy [Mon, 13 Jun 2011 21:15:27 +0000 (23:15 +0200)]
Stroker: process outlines directly

13 years agoRender outlines, not glyphs
Grigori Goronzy [Mon, 13 Jun 2011 20:39:26 +0000 (22:39 +0200)]
Render outlines, not glyphs

libass can render both regular glyphs (extracted from a font) and
drawings, which are inserted into an existing glyph so far. This is a
rather crude hack. However, it is necessary, as the renderer only works
with FT_Glyphs. The obvious solution is to work on the underlying
outlines directly instead.

This is the first step to make this possible: change the basic
rasterizer to use the outline-specific rasterization functions. There
are more advantages:

- It's more efficient. The bitmap can be directly rendered into the
  bordered target bitmap.
- This should make it easier to adapt the renderer to run-based
  rendering later on (the pixels are ORed into the target)

The higher-level rendering code still needs to be adjusted.

13 years agoFix whitespace trimming
Grigori Goronzy [Sat, 11 Jun 2011 01:38:11 +0000 (03:38 +0200)]
Fix whitespace trimming

Only try to remove any further whitespace in front of a line if the
first character of the line (the break character) is whitespace.

Addresses Issue 35.

13 years agoAdd cache statistics
Grigori Goronzy [Tue, 7 Jun 2011 16:45:18 +0000 (18:45 +0200)]
Add cache statistics

13 years agoMuch improved cache/hashmap implementation
Grigori Goronzy [Tue, 7 Jun 2011 15:03:30 +0000 (17:03 +0200)]
Much improved cache/hashmap implementation

- less code, cleaner
- decoupled from ASS_Library
- better data encapsulation
- simpler interface
- avoids a nasty hack

13 years agorefactor: move track init into ass track parser
Grigori Goronzy [Mon, 6 Jun 2011 20:18:06 +0000 (22:18 +0200)]
refactor: move track init into ass track parser

13 years agorefactor: move karaoke effect parsing into event parser
Grigori Goronzy [Mon, 6 Jun 2011 20:10:02 +0000 (22:10 +0200)]
refactor: move karaoke effect parsing into event parser

13 years agoBump version 0.9.12
Grigori Goronzy [Mon, 30 May 2011 20:25:21 +0000 (22:25 +0200)]
Bump version

13 years agoUpdate changelog
Grigori Goronzy [Mon, 30 May 2011 20:24:58 +0000 (22:24 +0200)]
Update changelog

13 years agoNicer default style
Grigori Goronzy [Mon, 30 May 2011 19:01:46 +0000 (21:01 +0200)]
Nicer default style

Use 50% alpha for the shadow. Looks nicer and is just like VSFilter.

13 years agoMatch first occurence of \fade, \fad, \an and \a tags
Grigori Goronzy [Mon, 16 May 2011 00:04:38 +0000 (02:04 +0200)]
Match first occurence of \fade, \fad, \an and \a tags

Track if we already parsed a fade or a alignment tag and ignore all
further tags.

13 years agoImproved "last resort" charmap matching
Grigori Goronzy [Sat, 9 Apr 2011 19:48:08 +0000 (21:48 +0200)]
Improved "last resort" charmap matching

After font reselection, loop through all charmaps if no glyph can't be
found until we hopefully find one that works. If we get here at all, the
font is seriously broken, so this is unlikely to harm anything.

This improves the last resort charmap fallback introduced in 96057d.

13 years agoRemove misleading comment about style case sensitivity
Grigori Goronzy [Sat, 9 Apr 2011 02:23:39 +0000 (04:23 +0200)]
Remove misleading comment about style case sensitivity

VSFilter always matches style names case sensitive.

13 years agoMuch improved "Default" style
Grigori Goronzy [Sat, 9 Apr 2011 02:06:39 +0000 (04:06 +0200)]
Much improved "Default" style

Make the "Default" style, useful as a fallback and required by few
scripts for proper rendering, actually do something sensible. Font,
sizes, et cetera are set up mostly like VSFilter.

13 years agoVSFilter compat: don't render shadow when glyph/border invisible
Grigori Goronzy [Fri, 8 Apr 2011 22:24:48 +0000 (00:24 +0200)]
VSFilter compat: don't render shadow when glyph/border invisible

Yet another VSFilter idiosyncracy: when the glyph fill is invisible
(alpha 0xFF) and there is no border, do not render any shadow.

13 years agoUpdate gitignore
Grigori Goronzy [Wed, 23 Mar 2011 14:42:55 +0000 (15:42 +0100)]
Update gitignore

13 years agoFix fontconfig disabled at runtime
Grigori Goronzy [Wed, 16 Feb 2011 19:31:15 +0000 (20:31 +0100)]
Fix fontconfig disabled at runtime

MPlayer is able to use this configuration with the -nofontconfig flag;
this fixes crashes in case no font is available. Fixes a crash at uninit
as well.

13 years agotest: fix compilation with libpng 1.5, rename configure switch
Grigori Goronzy [Wed, 16 Feb 2011 18:58:15 +0000 (19:58 +0100)]
test: fix compilation with libpng 1.5, rename configure switch

libpng 1.5 renamed the jmpbuf variable to jmp_buf. Since direct access
to this variable is deprecated, it makes more sense to use the function
png_jmpbuf() instead.

Also, rename the --enable-png switch to --enable-test to make clear this
is a debugging option.

Initial patch by Alexis Ballier, aballier AT gentoo DOT org.

13 years agoRequire fontconfig by default
Grigori Goronzy [Wed, 16 Feb 2011 18:39:54 +0000 (19:39 +0100)]
Require fontconfig by default

Enable configure to require fontconfig by default; libass is quite
useless for most purposes without it anyway. If you want to build
without fontconfig, explicitly disable it with --disable-fontconfig.

13 years agoSimplify word wrapping and fix possible endless loop
Grigori Goronzy [Wed, 9 Feb 2011 00:27:22 +0000 (01:27 +0100)]
Simplify word wrapping and fix possible endless loop

wrap_lines_smart() got stuck if there was a long line without spaces
followed by a hard linebreak. When the loop got to the '\n' character
the hard linebreak was not handled because the line was already over
wrap length and soft linebreak handling had precedence. Then at the
end of the loop body the code noted that the hard linebreak hadn't yet
been handled, and the same glyph needed to be reprocessed for that.
However, the soft linebreak code hadn't actually done anything because
there was no space to break at, and thus the loop repeated from the
exact same state forever.

Handle this by removing the check for an additional hard linebreak
after a soft linebreak, which stepped back by one char. This is a
very marginal case and shouldn't really matter in practice.

Original patch and parts of this message by uau.

13 years agoAdd changelog for next version
Grigori Goronzy [Wed, 9 Feb 2011 00:08:42 +0000 (01:08 +0100)]
Add changelog for next version

14 years agotest: Add license header
Grigori Goronzy [Tue, 28 Sep 2010 15:37:35 +0000 (17:37 +0200)]
test: Add license header

14 years agoRelicense to ISC
Grigori Goronzy [Tue, 28 Sep 2010 14:10:31 +0000 (16:10 +0200)]
Relicense to ISC

In hope to make libass as useful as possible, relicense libass to ISC, a
simplified 2-clause BSD license. All contributors who provided
non-trivial changes have granted their permission for this.

14 years agoAdd support for \fs+ and \fs- syntax
Grigori Goronzy [Thu, 12 Aug 2010 20:15:10 +0000 (22:15 +0200)]
Add support for \fs+ and \fs- syntax

These forms can be used to add or subtract a value from the
current font size instead of setting a new font size. Animations
are supported, but not recommended, as they won't be fluid due to
grid-fitting/hinting.

14 years agoOnly word wrap on spaces
Grigori Goronzy [Thu, 12 Aug 2010 19:47:24 +0000 (21:47 +0200)]
Only word wrap on spaces

It looks like VSFilter only ever wraps on spaces, even if the line
length is going to overflow. We should do that as well.
Fixes a pretty confusing problem with scrolling vertical text.

14 years agoBump autoconf version and LIBASS_VERSION 0.9.11
Grigori Goronzy [Wed, 11 Aug 2010 00:06:35 +0000 (02:06 +0200)]
Bump autoconf version and LIBASS_VERSION

14 years agoSet AM_CFLAGS instead of CFLAGS directly
Grigori Goronzy [Mon, 9 Aug 2010 17:03:26 +0000 (19:03 +0200)]
Set AM_CFLAGS instead of CFLAGS directly

14 years agoUpdate changelog
Grigori Goronzy [Mon, 9 Aug 2010 02:18:59 +0000 (04:18 +0200)]
Update changelog

14 years agoGet rid of NULL checks for free
Grigori Goronzy [Mon, 9 Aug 2010 01:28:29 +0000 (03:28 +0200)]
Get rid of NULL checks for free

The useless "if (foo) free(foo)" idiom is all over the place, just
get rid of it finally...

14 years agoFix another minor leak (event_format overwriting)
Grigori Goronzy [Mon, 9 Aug 2010 01:13:20 +0000 (03:13 +0200)]
Fix another minor leak (event_format overwriting)

14 years agoFix leaking of script-embedded fonts
Grigori Goronzy [Mon, 9 Aug 2010 01:06:42 +0000 (03:06 +0200)]
Fix leaking of script-embedded fonts

14 years agoFix drawing leakage: delay glyph allocation
Grigori Goronzy [Mon, 9 Aug 2010 00:55:30 +0000 (02:55 +0200)]
Fix drawing leakage: delay glyph allocation

Delay allocation of the "faux" glyph until a drawing is parsed.
This helps with fixing a (pretty bad) memory leak and also reduces frame
overhead a little.

14 years agoPOSIX compliance: add strings.h include where appropriate
Grigori Goronzy [Sat, 7 Aug 2010 00:45:51 +0000 (02:45 +0200)]
POSIX compliance: add strings.h include where appropriate

strcasecmp/strncasecmp needs strings.h according to POSIX, so add this
include where these occur.

14 years agoAdd missing config.h include
Grigori Goronzy [Sat, 7 Aug 2010 00:19:45 +0000 (02:19 +0200)]
Add missing config.h include

14 years agoVersion bump 0.9.10
Grigori Goronzy [Wed, 4 Aug 2010 00:37:55 +0000 (02:37 +0200)]
Version bump

Increment shared library revision (due to API additions) and autoconf
version.

14 years agoFall back to first charmap as last resort
Grigori Goronzy [Sun, 1 Aug 2010 21:52:30 +0000 (23:52 +0200)]
Fall back to first charmap as last resort

If we're already after the font reselection stage and a glyph cannot be
found in a font, try again with the first charmap as a last resort.
This is needed for old "symbol" fonts, for example.

14 years agoRaise verbosity level of "unknown transition effect" message
Grigori Goronzy [Sun, 1 Aug 2010 21:22:51 +0000 (23:22 +0200)]
Raise verbosity level of "unknown transition effect" message

This is more irritating than it helps and can seriously spam output.

14 years agoCheck vector clip mask bounding box size
Grigori Goronzy [Sun, 1 Aug 2010 20:23:25 +0000 (22:23 +0200)]
Check vector clip mask bounding box size

Similar to regular glyphs, check the bounding box of the clip mask and
refrain from rendering humongous masks, which can take up considerably
memory.

14 years agoUpdate changelog
Grigori Goronzy [Sun, 1 Aug 2010 15:31:23 +0000 (17:31 +0200)]
Update changelog

14 years agoFix TextInfo reallocation
Grigori Goronzy [Sun, 1 Aug 2010 05:22:18 +0000 (07:22 +0200)]
Fix TextInfo reallocation

14 years agoDon't initialize bitmap hash key with bogus values
Grigori Goronzy [Sun, 1 Aug 2010 04:31:31 +0000 (06:31 +0200)]
Don't initialize bitmap hash key with bogus values

14 years agorefactor: extract glyph hash key fill
Grigori Goronzy [Sun, 1 Aug 2010 04:29:27 +0000 (06:29 +0200)]
refactor: extract glyph hash key fill

14 years agorefactor: move transformation/projection functions
Grigori Goronzy [Sun, 1 Aug 2010 04:20:50 +0000 (06:20 +0200)]
refactor: move transformation/projection functions

Gets rid of another forward declaration.

14 years agoCosmetics: various cleanups in ass_render.c
Grigori Goronzy [Sun, 1 Aug 2010 04:16:11 +0000 (06:16 +0200)]
Cosmetics: various cleanups in ass_render.c

Cosmetical simplifications, fix whitespace where useful, remove
deprecated comments.

14 years agoHandle allocation failure of clipped bitmaps
Grigori Goronzy [Sun, 1 Aug 2010 03:22:18 +0000 (05:22 +0200)]
Handle allocation failure of clipped bitmaps

14 years agoCheck ASS_Image allocation
Grigori Goronzy [Sun, 1 Aug 2010 03:17:11 +0000 (05:17 +0200)]
Check ASS_Image allocation

14 years agorefactor: remove unneeded includes
Grigori Goronzy [Sun, 1 Aug 2010 02:49:41 +0000 (04:49 +0200)]
refactor: remove unneeded includes

These are included by ass_render.h already.

14 years agorefactor: move ASS_Renderer getters/setters/etc into separate file
Grigori Goronzy [Sun, 1 Aug 2010 02:41:32 +0000 (04:41 +0200)]
refactor: move ASS_Renderer getters/setters/etc into separate file

14 years agorefactor: extract bitmap hash key fill
Grigori Goronzy [Sun, 1 Aug 2010 02:20:26 +0000 (04:20 +0200)]
refactor: extract bitmap hash key fill

14 years agorefactor: extract cache check/management
Grigori Goronzy [Sun, 1 Aug 2010 01:42:17 +0000 (03:42 +0200)]
refactor: extract cache check/management

14 years agoLimit (bitmap) glyph cache size
Grigori Goronzy [Sun, 1 Aug 2010 01:30:59 +0000 (03:30 +0200)]
Limit (bitmap) glyph cache size

Now that bitmap glyphs (for vector clip masks) are stored in the glyph
cache, make sure it cannot grow indefinitely easily. Similar to the
bitmap cache, track approximate size of the cached elements and reset
if the cache exceeds a certain limit.
Also, reduce default bitmap cache size to 30 MB as we have essentially
two bitmap caches now. That's still plenty in all use cases where
caching matters.

14 years agoFix potential, small memory leak
Grigori Goronzy [Thu, 29 Jul 2010 01:12:31 +0000 (03:12 +0200)]
Fix potential, small memory leak

Free clip vector drawing if multiple clip vectors appear in a single
line.  (In this case the last clip vector is used.)

14 years agoParse vector clip mask only after cache miss
Grigori Goronzy [Thu, 29 Jul 2010 01:05:19 +0000 (03:05 +0200)]
Parse vector clip mask only after cache miss

14 years agoRemove debugging leftovers
Grigori Goronzy [Thu, 29 Jul 2010 00:50:16 +0000 (02:50 +0200)]
Remove debugging leftovers

14 years agoFix drawing cbox calculation
Grigori Goronzy [Thu, 29 Jul 2010 00:38:29 +0000 (02:38 +0200)]
Fix drawing cbox calculation

Use extremes of all points fed to the parser, instead of only points
that are added to the outline.
Fixes a rendering problem reported on IRC and should fix Issue #7.

14 years agoCache vector clip masks
Grigori Goronzy [Thu, 22 Jul 2010 19:40:19 +0000 (21:40 +0200)]
Cache vector clip masks

Cache pre-rasterized vector clip masks, big speedup if vector clipping
is used extensively.

14 years agorefactor: move position translation functions
Grigori Goronzy [Thu, 22 Jul 2010 17:06:46 +0000 (19:06 +0200)]
refactor: move position translation functions

Gets rid of a few forward declarations.

14 years agoBetter PAR correction
Grigori Goronzy [Thu, 22 Jul 2010 17:02:12 +0000 (19:02 +0200)]
Better PAR correction

PAR correction so far merely applied a horizontal scaling factor to
glyphs right after loading. This screws up transformed text,
unfortunately.
It's a much better approach to typeset text without correction and scale
everything at the very end. In MPlayer, an EOSD rendering now looks
exactly the same as a video filter rendering (except for more sharpness
in the EOSD case).

14 years agoLimit debug output on parsing errors
Grigori Goronzy [Mon, 19 Jul 2010 00:08:12 +0000 (02:08 +0200)]
Limit debug output on parsing errors

Limit context printed after parsing errors to 30 characters

14 years agoDrawing cache: include scale factor in hash key
Grigori Goronzy [Wed, 14 Jul 2010 13:41:31 +0000 (15:41 +0200)]
Drawing cache: include scale factor in hash key

14 years agoAvoid unnecessary conditional and initializations
Grigori Goronzy [Wed, 14 Jul 2010 13:17:34 +0000 (15:17 +0200)]
Avoid unnecessary conditional and initializations

14 years agoASS_Drawing: do not free glyph
Grigori Goronzy [Wed, 14 Jul 2010 13:16:13 +0000 (15:16 +0200)]
ASS_Drawing: do not free glyph

The glyph is inserted into the cache and freed upon cache reset,
so it shouldn't be freed alongside the drawing.

14 years agoFix match_fullname loop
Grigori Goronzy [Sun, 11 Jul 2010 00:03:46 +0000 (02:03 +0200)]
Fix match_fullname loop

Let's loop over everything and not just the outline check. *sigh*
Fixes a crash reported by lachs0r on IRC.

14 years agoSimple optimizations to memory handling
Grigori Goronzy [Sun, 27 Jun 2010 10:25:46 +0000 (12:25 +0200)]
Simple optimizations to memory handling

14 years agoReduce number of glyph copies
Grigori Goronzy [Sat, 26 Jun 2010 23:25:56 +0000 (01:25 +0200)]
Reduce number of glyph copies

Do not copy glyphs when it isn't really needed.
Profiling with valgrind's callgrind showed that FT_Glyph_Copy takes a
big fraction of the rendering time (~40%) for "simple styled softsubs"
cases. It turned out that glyphs are duplicated much more often than
is necessary. Reducing the number of copies cuts down the rendering
time for the "simple styled softsubs" case by about 70%!

14 years agoAdd fixups for various font defects
Grigori Goronzy [Sat, 26 Jun 2010 03:15:18 +0000 (05:15 +0200)]
Add fixups for various font defects

Reverse "outside" contours with wrong winding correction, require
that a contour is "inside" for considering its removal; Move this
hack into ass_font.c, where it belongs.

Initial patch by uau.

14 years agoUpdate changelog
Grigori Goronzy [Sat, 26 Jun 2010 01:16:47 +0000 (03:16 +0200)]
Update changelog