summaryrefslogtreecommitdiffstats
path: root/libass/ass_render.c
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-04-20 23:19:23 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-04-20 23:19:23 +0000
commitbf5f0dd91b865b6c2bb65d38b3f94cb40c93757d (patch)
treedbc996ab331ad72ea8d590d6e73209a3d1ee3172 /libass/ass_render.c
parentc242d459e23d96c587ac7c231291de40af285317 (diff)
downloadlibass-bf5f0dd91b865b6c2bb65d38b3f94cb40c93757d.tar.bz2
libass-bf5f0dd91b865b6c2bb65d38b3f94cb40c93757d.tar.xz
Add shift_[xy] (vector that is added to the glyph before transformation) to
bitmap glyph key. Result of rotation depends on them because of perspective transformation. They are only set when some rotation take place. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23046 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r--libass/ass_render.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 44cc272e..d139c2e1 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -1926,9 +1926,6 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images)
render_context.clip_y1 = y2scr(render_context.clip_y1);
}
- for (i = 0; i < text_info.length; ++i)
- get_bitmap_glyph(text_info.glyphs + i);
-
// rotate glyphs if needed
{
FT_Vector center;
@@ -1949,6 +1946,15 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images)
FT_Vector shift;
glyph_info_t* info = text_info.glyphs + i;
+ if (info->hash_key.frx || info->hash_key.fry || info->hash_key.frz) {
+ info->hash_key.shift_x = info->pos.x + device_x - center.x;
+ info->hash_key.shift_y = - (info->pos.y + device_y - center.y);
+ } else {
+ info->hash_key.shift_x = 0;
+ info->hash_key.shift_y = 0;
+ }
+ get_bitmap_glyph(info);
+
if (info->bm == 0) {
// calculating shift vector
shift.x = int_to_d6(info->pos.x + device_x - center.x);