gfx.c
changeset 1350 067b22970f19
parent 1349 07514c2cc6d1
child 1351 3e7aa0d35f8f
equal deleted inserted replaced
1349:07514c2cc6d1 1350:067b22970f19
   142 				memset(dst, color, right);
   142 				memset(dst, color, right);
   143 				dst += dpi->pitch;
   143 				dst += dpi->pitch;
   144 			} while (--bottom);
   144 			} while (--bottom);
   145 		} else {
   145 		} else {
   146 			/* use colortable mode */
   146 			/* use colortable mode */
   147 			ctab = GetSpritePtr(color & 0x3FFF) + 1;
   147 			ctab = GetNonSprite(color & 0x3FFF) + 1;
   148 			do {
   148 			do {
   149 				int i;
   149 				int i;
   150 				for(i=0; i!=right;i++)
   150 				for(i=0; i!=right;i++)
   151 					dst[i] = ctab[dst[i]];
   151 					dst[i] = ctab[dst[i]];
   152 				dst += dpi->pitch;
   152 				dst += dpi->pitch;
   526 			return x;
   526 			return x;
   527 		}
   527 		}
   528 		if (c >= ASCII_LETTERSTART) {
   528 		if (c >= ASCII_LETTERSTART) {
   529 			if (x >= dpi->left + dpi->width) goto skip_char;
   529 			if (x >= dpi->left + dpi->width) goto skip_char;
   530 			if (x + 26 >= dpi->left) {
   530 			if (x + 26 >= dpi->left) {
   531 				GfxMainBlitter(GetSpritePtr(base + 2 + c - ASCII_LETTERSTART), x, y, 1);
   531 				GfxMainBlitter(GetSprite(base + 2 + c - ASCII_LETTERSTART), x, y, 1);
   532 			}
   532 			}
   533 			x += _stringwidth_table[base + c - ' '];
   533 			x += _stringwidth_table[base + c - ' '];
   534 		} else if (c == ASCII_NL) { // newline = {}
   534 		} else if (c == ASCII_NL) { // newline = {}
   535 			x = xo;
   535 			x = xo;
   536 			y += 10;
   536 			y += 10;
   558 	}
   558 	}
   559 }
   559 }
   560 
   560 
   561 void DrawSprite(uint32 img, int x, int y) {
   561 void DrawSprite(uint32 img, int x, int y) {
   562 	if (img & 0x8000) {
   562 	if (img & 0x8000) {
   563 		_color_remap_ptr = GetSpritePtr(img >> 16) + 1;
   563 		_color_remap_ptr = GetNonSprite(img >> 16) + 1;
   564 		GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 1);
   564 		GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 1);
   565 	} else if (img & 0x4000) {
   565 	} else if (img & 0x4000) {
   566 		_color_remap_ptr = GetSpritePtr(img >> 16) + 1;
   566 		_color_remap_ptr = GetNonSprite(img >> 16) + 1;
   567 		GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 2);
   567 		GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 2);
   568 	} else {
   568 	} else {
   569 		GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 0);
   569 		GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 0);
   570 	}
   570 	}
   571 }
   571 }
   572 
   572 
   573 typedef struct BlitterParams {
   573 typedef struct BlitterParams {
   574 	int start_x, start_y;
   574 	int start_x, start_y;
  1626 
  1626 
  1627 	b = _stringwidth_table;
  1627 	b = _stringwidth_table;
  1628 
  1628 
  1629 	// 2 equals space.
  1629 	// 2 equals space.
  1630 	for(i=2; i != 0xE2; i++) {
  1630 	for(i=2; i != 0xE2; i++) {
  1631 		*b++ = (byte)((i < 93 || i >= 129 || i == 98) ? GetSpritePtr(i)[2] : 0);
  1631 		*b++ = (byte)((i < 93 || i >= 129 || i == 98) ? TO_LE16(GetSprite(i)->width) : 0);
  1632 	}
  1632 	}
  1633 
  1633 
  1634 	for(i=0xE2; i != 0x1C2; i++) {
  1634 	for(i=0xE2; i != 0x1C2; i++) {
  1635 		*b++ = (byte)((i < 317 || i >= 353) ? GetSpritePtr(i)[2]+1 : 0);
  1635 		*b++ = (byte)((i < 317 || i >= 353) ? TO_LE16(GetSprite(i)->width) + 1 : 0);
  1636 	}
  1636 	}
  1637 
  1637 
  1638 	for(i=0x1C2; i != 0x2A2; i++) {
  1638 	for(i=0x1C2; i != 0x2A2; i++) {
  1639 		*b++ = (byte)((i < 541 || i >= 577) ? GetSpritePtr(i)[2]+1 : 0);
  1639 		*b++ = (byte)((i < 541 || i >= 577) ? TO_LE16(GetSprite(i)->width) + 1 : 0);
  1640 	}
  1640 	}
  1641 }
  1641 }
  1642 
  1642 
  1643 void ScreenSizeChanged(void)
  1643 void ScreenSizeChanged(void)
  1644 {
  1644 {
  1909 	const Sprite *p;
  1909 	const Sprite *p;
  1910 
  1910 
  1911 	if (cv->sprite == cursor)
  1911 	if (cv->sprite == cursor)
  1912 		return;
  1912 		return;
  1913 
  1913 
  1914 	p =	GetSpritePtr(cursor & 0x3FFF);
  1914 	p =	GetSprite(cursor & 0x3FFF);
  1915 	cv->sprite = cursor;
  1915 	cv->sprite = cursor;
  1916 	cv->size.y = p->height;
  1916 	cv->size.y = p->height;
  1917 	cv->size.x = TO_LE16(p->width);
  1917 	cv->size.x = TO_LE16(p->width);
  1918 	cv->offs.x = (int16)TO_LE16(p->x_offs);
  1918 	cv->offs.x = (int16)TO_LE16(p->x_offs);
  1919 	cv->offs.y = (int16)TO_LE16(p->y_offs);
  1919 	cv->offs.y = (int16)TO_LE16(p->y_offs);