changeset 28783:1cfc467bb77c

Round shadow displacement to nearest int. Use double for shadow displacement parameter.
author greg
date Thu, 05 Mar 2009 20:36:41 +0000
parents 37c47d68d586
children 907d3d80b50f
files libass/ass_render.c
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libass/ass_render.c	Thu Mar 05 20:36:39 2009 +0000
+++ b/libass/ass_render.c	Thu Mar 05 20:36:41 2009 +0000
@@ -45,6 +45,7 @@
 #define MAX_LINES 300
 #define BE_RADIUS 1.5
 #define BLUR_MAX_RADIUS 50.0
+#define ROUND(x) ((int) ((x) + .5))
 
 static int last_render_id = 0;
 
@@ -116,7 +117,7 @@
 //	int height;
 	int be; // blur edges
 	double blur; // gaussian blur
-	int shadow;
+	double shadow;
 	double frx, fry, frz; // rotation
 	
 	bitmap_hash_key_t hash_key;
@@ -165,7 +166,7 @@
 	uint32_t fade; // alpha from \fad
 	char be; // blur edges
 	double blur; // gaussian blur
-	int shadow;
+	double shadow;
 	int drawing_mode; // not implemented; when != 0 text is discarded, except for style override tags
 
 	effect_t effect_type;
@@ -421,8 +422,8 @@
 		if ((info->symbol == 0) || (info->symbol == '\n') || !info->bm_s || (info->shadow == 0))
 			continue;
 
-		pen_x = dst_x + info->pos.x + info->shadow;
-		pen_y = dst_y + info->pos.y + info->shadow;
+		pen_x = dst_x + info->pos.x + ROUND(info->shadow);
+		pen_y = dst_y + info->pos.y + ROUND(info->shadow);
 		bm = info->bm_s;
 
 		tail = render_glyph(bm, pen_x, pen_y, info->c[3], 0, 1000000, tail);