changeset 20518:3e37ced7e392 draft

(svn r25478) -Fix: Clip glyphs using the actual sprite dimensions instead of the text advancement.
author frosch <frosch@openttd.org>
date Wed, 26 Jun 2013 19:35:40 +0000
parents 7196aa7a4b81
children 1bf6f2b665d7
files src/gfx.cpp
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -463,7 +463,7 @@
 
 		DrawPixelInfo *dpi = _cur_dpi;
 		int dpi_left  = dpi->left;
-		int dpi_right = dpi->left + dpi->width;
+		int dpi_right = dpi->left + dpi->width - 1;
 
 		bool draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK;
 
@@ -478,12 +478,12 @@
 			int top     = run->getPositions()[i * 2 + 1] + y;
 
 			/* Truncated away. */
-			if (begin_x < min_x || end_x > max_x) continue;
-
-			/* Not within the bounds to draw. */
-			if (begin_x >= dpi_right || end_x <= dpi_left) continue;
+			if (truncation && (begin_x < min_x || end_x > max_x)) continue;
 
 			const Sprite *sprite = fc->GetGlyph(glyph);
+			/* Check clipping (the "+ 1" is for the shadow). */
+			if (begin_x + sprite->x_offs > dpi_right || begin_x + sprite->x_offs + sprite->width /* - 1 + 1 */ < dpi_left) continue;
+
 			if (draw_shadow && (glyph & SPRITE_GLYPH) == 0) {
 				SetColourRemap(TC_BLACK);
 				GfxMainBlitter(sprite, begin_x + 1, top + 1, BM_COLOUR_REMAP);