[Scummvm-cvs-logs] SF.net SVN: scummvm:[54099] scummvm/trunk/graphics

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Fri Nov 5 21:36:13 CET 2010


Revision: 54099
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54099&view=rev
Author:   athrxx
Date:     2010-11-05 20:36:13 +0000 (Fri, 05 Nov 2010)

Log Message:
-----------
GRAPHICS/SJIS: cleanup

Modified Paths:
--------------
    scummvm/trunk/graphics/sjis.cpp
    scummvm/trunk/graphics/sjis.h

Modified: scummvm/trunk/graphics/sjis.cpp
===================================================================
--- scummvm/trunk/graphics/sjis.cpp	2010-11-05 15:38:31 UTC (rev 54098)
+++ scummvm/trunk/graphics/sjis.cpp	2010-11-05 20:36:13 UTC (rev 54099)
@@ -53,7 +53,7 @@
 }
 
 template<typename Color>
-void FontSJISBase::blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c1, Color c2, bool shadowClipRight, bool shadowClipBottom) const {
+void FontSJISBase::blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c) const {
 	for (int y = 0; y < h; ++y) {
 		Color *d = (Color *)dst;
 		dst += pitch;
@@ -63,17 +63,9 @@
 			if (!(x % 8))
 				mask = *glyph++;
 
-			if (mask & 0x80) {
-				*d = c1;
-				if (_drawMode == kShadowMode || _drawMode == kFMTownsShadowMode) {
-					if (!(shadowClipRight && (x == w - 1)))
-						d[1] = c2;
-					if (!(shadowClipBottom && (y == h - 1)))
-						d[pitch] = c2;
-				}
-				if (_drawMode == kShadowMode && !(shadowClipRight && (x == w - 1)) && !(shadowClipBottom && (y == h - 1)))
-					d[pitch + 1] = c2;
-			}
+			if (mask & 0x80)
+				*d = c;
+
 			++d;
 			mask <<= 1;
 		}
@@ -147,7 +139,6 @@
 	int width = 0, height = 0;
 	int outlineExtraWidth = 2, outlineExtraHeight = 2;
 	int outlineXOffset = 0, outlineYOffset = 0;
-	bool shadowClipRight = false, shadowClipBottom = false;
 
 	if (is8x16(ch)) {
 		glyphSource = getCharData8x16(ch);
@@ -163,14 +154,12 @@
 		width = maxW;
 		outlineExtraWidth = 0;
 		outlineXOffset = 1;
-		shadowClipRight = true;
 	}
 	
 	if (maxH != -1 && maxH < height) {
 		height = maxH;
 		outlineExtraHeight = 0;
 		outlineYOffset = 1;
-		shadowClipBottom = true;
 	}
 
 	if (width <= 0 || height <= 0)
@@ -196,15 +185,29 @@
 		if (_drawMode == kOutlineMode) {
 			blitCharacter<uint8>(outline, width + outlineExtraWidth, height + outlineExtraHeight, (uint8 *)dst, pitch, c2);
 			blitCharacter<uint8>(glyphSource, width - outlineXOffset, height - outlineYOffset, (uint8 *)dst + pitch + 1, pitch, c1);
-		} else {
-			blitCharacter<uint8>(glyphSource, width, height, (uint8 *)dst, pitch, c1, c2, shadowClipRight, shadowClipBottom);
+		} else {			
+			if (_drawMode != kDefaultMode) {
+				blitCharacter<uint8>(glyphSource, width - outlineXOffset, height, ((uint8*)dst) + 1, pitch, c2);
+				blitCharacter<uint8>(glyphSource, width, height - outlineYOffset, ((uint8*)dst) + pitch, pitch, c2);
+				if (_drawMode == kShadowMode)
+					blitCharacter<uint8>(glyphSource, width - outlineXOffset, height - outlineYOffset, ((uint8*)dst) + pitch + 1, pitch, c2);
+			}
+
+			blitCharacter<uint8>(glyphSource, width, height, (uint8 *)dst, pitch, c1);
 		}
 	} else if (bpp == 2) {
 		if (_drawMode == kOutlineMode) {
 			blitCharacter<uint16>(outline, width + outlineExtraWidth, height + outlineExtraHeight, (uint8 *)dst, pitch, c2);
 			blitCharacter<uint16>(glyphSource, width - outlineXOffset, height - outlineYOffset, (uint8 *)dst + pitch + 2, pitch, c1);
 		} else {
-			blitCharacter<uint16>(glyphSource, width, height, (uint8 *)dst, pitch, c1, c2, shadowClipRight, shadowClipBottom);
+			if (_drawMode != kDefaultMode) {
+				blitCharacter<uint16>(glyphSource, width - outlineXOffset, height, ((uint8*)dst) + 2, pitch, c2);
+				blitCharacter<uint16>(glyphSource, width, height - outlineYOffset, ((uint8*)dst) + pitch, pitch, c2);
+				if (_drawMode == kShadowMode)
+					blitCharacter<uint16>(glyphSource, width - outlineXOffset, height - outlineYOffset, ((uint8*)dst) + pitch + 2, pitch, c2);
+			}
+
+			blitCharacter<uint16>(glyphSource, width, height, (uint8 *)dst, pitch, c1);
 		}
 	} else {
 		error("FontSJISBase::drawChar: unsupported bpp: %d", bpp);

Modified: scummvm/trunk/graphics/sjis.h
===================================================================
--- scummvm/trunk/graphics/sjis.h	2010-11-05 15:38:31 UTC (rev 54098)
+++ scummvm/trunk/graphics/sjis.h	2010-11-05 20:36:13 UTC (rev 54099)
@@ -155,7 +155,7 @@
 	void drawChar(void *dst, uint16 ch, int pitch, int bpp, uint32 c1, uint32 c2, int maxW = -1, int maxH = -1) const;
 private:
 	template<typename Color>
-	void blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c1, Color c2 = 0, bool clipShadowRight = false, bool clipShadowBottom = false) const;
+	void blitCharacter(const uint8 *glyph, const int w, const int h, uint8 *dst, int pitch, Color c) const;
 	void createOutline(uint8 *outline, const uint8 *glyph, const int w, const int h) const;
 
 #ifndef DISABLE_FLIPPED_MODE


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list