(svn r2933) Implement the non-breaking space
authortron
Sat, 10 Sep 2005 08:17:30 +0000
changeset 2407 983f1d8a0614
parent 2406 be5cfb8cd20d
child 2408 d86105006ee9
(svn r2933) Implement the non-breaking space
gfx.c
gfx.h
gfxinit.c
spritecache.c
spritecache.h
strgen/strgen.c
--- a/gfx.c	Sat Sep 10 07:38:03 2005 +0000
+++ b/gfx.c	Sat Sep 10 08:17:30 2005 +0000
@@ -1627,15 +1627,15 @@
 
 	// 2 equals space.
 	for (i = 2; i != 226; i++) {
-		*b++ = (i < 93 || i > 113) && i != 116 && i != 117 && (i < 123 || i > 129) && (i < 151 || i > 153) && i != 155 ? GetSprite(i)->width : 0;
+		*b++ = (i < 93 || i > 97) && (i < 99 || i > 113) && i != 116 && i != 117 && (i < 123 || i > 129) && (i < 151 || i > 153) && i != 155 ? GetSprite(i)->width : 0;
 	}
 
 	for (i = 226; i != 450; i++) {
-		*b++ = (i < 317 || i >= 354) && i != 367 && (i < 375 || i > 377) && i != 379 ? GetSprite(i)->width + 1 : 0;
+		*b++ = (i < 317 || i > 321) && (i < 323 || i > 353) && i != 367 && (i < 375 || i > 377) && i != 379 ? GetSprite(i)->width + 1 : 0;
 	}
 
 	for (i = 450; i != 674; i++) {
-		*b++ = (i < 541 || i >= 579) && i != 585 && i != 587 && i != 588 && (i < 590 || i > 597) && (i < 599 || i > 601) && i != 603 && i != 633 && i != 665 ? GetSprite(i)->width + 1 : 0;
+		*b++ = (i < 541 || i > 577) && i != 585 && i != 587 && i != 588 && (i < 590 || i > 597) && (i < 599 || i > 601) && i != 603 && i != 633 && i != 665 ? GetSprite(i)->width + 1 : 0;
 	}
 }
 
--- a/gfx.h	Sat Sep 10 07:38:03 2005 +0000
+++ b/gfx.h	Sat Sep 10 08:17:30 2005 +0000
@@ -41,7 +41,7 @@
 
 // XXX doesn't really belong here, but the only
 // consumers always use it in conjunction with DoDrawString()
-#define UPARROW   "\xA0"
+#define UPARROW   "\x80"
 #define DOWNARROW "\xAA"
 
 
--- a/gfxinit.c	Sat Sep 10 07:38:03 2005 +0000
+++ b/gfxinit.c	Sat Sep 10 08:17:30 2005 +0000
@@ -192,7 +192,7 @@
 	     2,   92, // ' ' till 'z'
 	0xFFFE,   36,
 	   160,  160, // Move ¾ to the correct position
-	   130,  130, // TODO Up arrow
+	    98,   98, // Up arrow
 	   131,  133,
 	0xFFFE,    1, // skip currency sign
 	   135,  135,
@@ -219,7 +219,7 @@
 	   342,  346, // place holders for transport markers
 	0xFFFE,    6,
 	   384,  384, // Move ¾ to the correct position
-	   354,  354, // TODO Up arrow
+	   322,  322, // Up arrow
 	   355,  357,
 	0xFFFE,    1, // skip currency sign
 	   359,  359,
@@ -316,6 +316,9 @@
 	files = _use_dos_palette? &files_dos : &files_win;
 
 	LoadGrfIndexed(files->basic[0].filename, trg1idx, 0);
+	DupSprite(  2, 130); // non-breaking space medium
+	DupSprite(226, 354); // non-breaking space tiny
+	DupSprite(450, 578); // non-breaking space large
 	load_index = 4793;
 
 	for (i = 1; files->basic[i].filename != NULL; i++) {
--- a/spritecache.c	Sat Sep 10 07:38:03 2005 +0000
+++ b/spritecache.c	Sat Sep 10 08:17:30 2005 +0000
@@ -155,6 +155,14 @@
 	return true;
 }
 
+
+void DupSprite(SpriteID old, SpriteID new)
+{
+	_sprite_file_pos[new] = _sprite_file_pos[old];
+	_sprite_ptr[new] = NULL;
+}
+
+
 void SkipSprites(uint count)
 {
 	for (; count > 0; --count) {
--- a/spritecache.h	Sat Sep 10 07:38:03 2005 +0000
+++ b/spritecache.h	Sat Sep 10 08:17:30 2005 +0000
@@ -28,6 +28,7 @@
 void IncreaseSpriteLRU(void);
 
 bool LoadNextSprite(int load_index, byte file_index);
+void DupSprite(SpriteID old, SpriteID new);
 void SkipSprites(uint count);
 
 #endif
--- a/strgen/strgen.c	Sat Sep 10 07:38:03 2005 +0000
+++ b/strgen/strgen.c	Sat Sep 10 08:17:30 2005 +0000
@@ -465,7 +465,9 @@
 
 	// 0x9E=158 is the LAST special character we may use.
 
-	{"UPARROW", EmitSingleByte, 0xA0, 0},
+	{"UPARROW", EmitSingleByte, 0x80, 0},
+
+	{"NBSP", EmitSingleByte, 0xA0, 0, C_DONTCOUNT},
 	{"POUNDSIGN", EmitSingleByte, 0xA3, 0},
 	{"YENSIGN", EmitSingleByte, 0xA5, 0},
 	{"COPYRIGHT", EmitSingleByte, 0xA9, 0},