[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Stratagus-CVS] stratagus/src/video video.c
From: |
Jimmy Salmon |
Subject: |
[Stratagus-CVS] stratagus/src/video video.c |
Date: |
Fri, 05 Dec 2003 23:18:51 -0500 |
CVSROOT: /cvsroot/stratagus
Module name: stratagus
Branch:
Changes by: Jimmy Salmon <address@hidden> 03/12/05 23:18:51
Modified files:
src/video : video.c
Log message:
Optimized ColorCycle for sdl surface
Patches:
Index: stratagus/src/video/video.c
diff -u stratagus/src/video/video.c:1.79 stratagus/src/video/video.c:1.80
--- stratagus/src/video/video.c:1.79 Mon Dec 1 23:00:16 2003
+++ stratagus/src/video/video.c Fri Dec 5 23:18:50 2003
@@ -26,7 +26,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: video.c,v 1.79 2003/12/02 04:00:16 nehalmistry Exp $
+// $Id: video.c,v 1.80 2003/12/06 04:18:50 jsalmon3 Exp $
//@{
@@ -735,72 +735,63 @@
// FIXME: cpu intensive to go through the whole PaletteList
global void ColorCycle(void)
{
- int i;
- SDL_Palette* pal;
- SDL_Color c;
+ SDL_Color* palcolors;
+ SDL_Color colors[256];
+ int waterlen;
+ int iconlen;
+ int buildinglen;
+
+ waterlen = (ColorWaterCycleEnd - ColorWaterCycleStart) * sizeof(SDL_Color);
+ iconlen = (ColorIconCycleEnd - ColorIconCycleStart) * sizeof(SDL_Color);
+ buildinglen = (ColorBuildingCycleEnd - ColorBuildingCycleStart) *
sizeof(SDL_Color);
if (ColorCycleAll) {
PaletteLink* curlink;
curlink = PaletteList;
while (curlink != NULL) {
- pal = curlink->Surface->format->palette;
+ palcolors = curlink->Surface->format->palette->colors;
- c = pal->colors[ColorWaterCycleStart];
- for (i = ColorWaterCycleStart; i < ColorWaterCycleEnd; ++i) {
- SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &pal->colors[i + 1], i, 1);
- }
- SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &c, ColorWaterCycleEnd, 1);
+ memcpy(colors, palcolors, sizeof(colors));
- c = pal->colors[ColorIconCycleStart];
- for (i = ColorIconCycleStart; i < ColorIconCycleEnd; ++i) {
- SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &pal->colors[i + 1], i, 1);
- }
- SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &c, ColorIconCycleEnd, 1);
+ memcpy(colors + ColorWaterCycleStart,
+ palcolors + ColorWaterCycleStart + 1, waterlen);
+ colors[ColorWaterCycleEnd] = palcolors[ColorWaterCycleStart];
- c = pal->colors[ColorBuildingCycleStart];
- for (i = ColorBuildingCycleStart; i < ColorBuildingCycleEnd; ++i) {
- SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &pal->colors[i + 1], i, 1);
- }
- SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &c, ColorBuildingCycleEnd, 1);
+ memcpy(colors + ColorIconCycleStart,
+ palcolors + ColorIconCycleStart + 1, iconlen);
+ colors[ColorIconCycleEnd] = palcolors[ColorIconCycleStart];
+
+ memcpy(colors + ColorBuildingCycleStart,
+ palcolors + ColorBuildingCycleStart + 1, buildinglen);
+ colors[ColorBuildingCycleEnd] = palcolors[ColorBuildingCycleStart];
+ SDL_SetPalette(curlink->Surface, SDL_LOGPAL | SDL_PHYSPAL,
+ colors, 0, 256);
curlink = curlink->Prev;
}
} else {
//
// Color cycle tileset palette
//
- pal = TheMap.TileGraphic->Surface->format->palette;
+ palcolors = TheMap.TileGraphic->Surface->format->palette->colors;
- c = pal->colors[ColorWaterCycleStart];
- for (i = ColorWaterCycleStart; i < ColorWaterCycleEnd; ++i) {
- SDL_SetPalette(TheMap.TileGraphic->Surface, SDL_LOGPAL |
SDL_PHYSPAL,
- &pal->colors[i + 1], i, 1);
- }
- SDL_SetPalette(TheMap.TileGraphic->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &c, ColorWaterCycleEnd, 1);
+ memcpy(colors, palcolors, sizeof(colors));
- c = pal->colors[ColorIconCycleStart];
- for (i = ColorIconCycleStart; i < ColorIconCycleEnd; ++i) {
- SDL_SetPalette(TheMap.TileGraphic->Surface, SDL_LOGPAL |
SDL_PHYSPAL,
- &pal->colors[i + 1], i, 1);
- }
- SDL_SetPalette(TheMap.TileGraphic->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &c, ColorIconCycleEnd, 1);
+ memcpy(colors + ColorWaterCycleStart,
+ palcolors + ColorWaterCycleStart + 1, waterlen);
+ colors[ColorWaterCycleEnd] = palcolors[ColorWaterCycleStart];
+
+ memcpy(colors + ColorIconCycleStart,
+ palcolors + ColorIconCycleStart + 1, iconlen);
+ colors[ColorIconCycleEnd] = palcolors[ColorIconCycleStart];
+
+ memcpy(colors + ColorBuildingCycleStart,
+ palcolors + ColorBuildingCycleStart + 1, buildinglen);
+ colors[ColorBuildingCycleEnd] = palcolors[ColorBuildingCycleStart];
- c = pal->colors[ColorBuildingCycleStart];
- for (i = ColorBuildingCycleStart; i < ColorBuildingCycleEnd; ++i) {
- SDL_SetPalette(TheMap.TileGraphic->Surface, SDL_LOGPAL |
SDL_PHYSPAL,
- &pal->colors[i + 1], i, 1);
- }
SDL_SetPalette(TheMap.TileGraphic->Surface, SDL_LOGPAL | SDL_PHYSPAL,
- &c, ColorBuildingCycleEnd, 1);
+ colors, 0, 256);
}
MapColorCycle(); // FIXME: could be little more informative
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Stratagus-CVS] stratagus/src/video video.c,
Jimmy Salmon <=