mirror of https://github.com/mpv-player/mpv
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
This commit is contained in:
parent
fda46c092d
commit
7c281a626d
|
@ -39,6 +39,9 @@ typedef struct bitmap_hash_key_s {
|
|||
|
||||
unsigned scale_x, scale_y; // 16.16
|
||||
int frx, fry, frz; // signed 16.16
|
||||
int shift_x, shift_y; // shift vector that was added to glyph before applying rotation
|
||||
// = 0, if frx = fry = frx = 0
|
||||
// = (glyph base point) - (rotation origin), otherwise
|
||||
|
||||
FT_Vector advance; // subpixel shift vector
|
||||
} bitmap_hash_key_t;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue