From b2eed518ed1fd03130e4bce2f7ccbfa897b3172d Mon Sep 17 00:00:00 2001 From: avolkov Date: Tue, 27 Sep 2005 03:39:56 +0000 Subject: [PATCH] Centralized color transformations git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1876 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/sc2code/libs/graphics/drawable.c | 11 ++++ sc2/src/sc2code/libs/graphics/font.c | 8 +-- sc2/src/sc2code/libs/graphics/frame.c | 69 +++++------------------- 3 files changed, 25 insertions(+), 63 deletions(-) diff --git a/sc2/src/sc2code/libs/graphics/drawable.c b/sc2/src/sc2code/libs/graphics/drawable.c index c3dada8be..fca4baa16 100644 --- a/sc2/src/sc2code/libs/graphics/drawable.c +++ b/sc2/src/sc2code/libs/graphics/drawable.c @@ -21,6 +21,7 @@ #include "tfb_draw.h" #include "units.h" #include "libs/mathlib.h" +#include "gfxother.h" FRAMEPTR _CurFramePtr; @@ -245,3 +246,13 @@ RotateFrame (FRAMEPTR Frame, COUNT angle) return Drawable; } + +void +SetFrameTransparentColor (FRAMEPTR Frame, COLOR c32k) +{ + TFB_Palette color; + + COLORtoPalette (c32k, &color); + TFB_DrawCanvas_SetTransparentColor (Frame->image->NormalImg, + color.r, color.g, color.b, TRUE); +} diff --git a/sc2/src/sc2code/libs/graphics/font.c b/sc2/src/sc2code/libs/graphics/font.c index dd21a8ce9..f1d4520f5 100644 --- a/sc2/src/sc2code/libs/graphics/font.c +++ b/sc2/src/sc2code/libs/graphics/font.c @@ -18,6 +18,7 @@ #include "gfxintrn.h" #include "tfb_prim.h" +#include "gfxother.h" extern FRAME Build_Font_Effect (FRAME FramePtr, DWORD from, DWORD to, @@ -258,12 +259,7 @@ _text_blt (PRECT pClipRect, PRIMITIVEPTR PrimPtr) if (FontPtr == NULL) return; - { - DWORD c32k = _get_context_fg_color () >> 8; - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); - } + COLORtoPalette (_get_context_fg_color (), &color); TextPtr = &PrimPtr->Object.Text; s.origin.x = _save_stamp.origin.x; diff --git a/sc2/src/sc2code/libs/graphics/frame.c b/sc2/src/sc2code/libs/graphics/frame.c index 0a78601c2..62e0f957e 100644 --- a/sc2/src/sc2code/libs/graphics/frame.c +++ b/sc2/src/sc2code/libs/graphics/frame.c @@ -21,6 +21,7 @@ #include "gfx_common.h" #include "tfb_draw.h" #include "tfb_prim.h" +#include "gfxother.h" HOT_SPOT MAKE_HOT_SPOT (COORD x, COORD y) @@ -88,12 +89,8 @@ void ClearBackGround (PRECT pClipRect) { TFB_Palette color; - DWORD c32k; - c32k = _get_context_bg_color () >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (_get_context_bg_color (), &color); TFB_Prim_FillRect (pClipRect, &color); } @@ -144,7 +141,6 @@ DrawBatch (PPRIMITIVE lpBasePrim, PRIM_LINKS PrimLinks, PPRIMITIVE lpWorkPrim; RECT ClipRect; TFB_Palette color; - DWORD c32k; lpPrim = &lpBasePrim[CurIndex]; PrimType = GetPrimType (lpPrim); @@ -156,29 +152,18 @@ DrawBatch (PPRIMITIVE lpBasePrim, PRIM_LINKS PrimLinks, switch (PrimType) { case POINT_PRIM: - c32k = GetPrimColor (lpWorkPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); - + COLORtoPalette (GetPrimColor (lpWorkPrim), &color); TFB_Prim_Point (&lpWorkPrim->Object.Point, &color); break; case STAMP_PRIM: TFB_Prim_Stamp (&lpWorkPrim->Object.Stamp); break; case STAMPFILL_PRIM: - c32k = GetPrimColor (lpWorkPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (lpWorkPrim), &color); TFB_Prim_StampFill (&lpWorkPrim->Object.Stamp, &color); break; case LINE_PRIM: - c32k = GetPrimColor (lpWorkPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); - + COLORtoPalette (GetPrimColor (lpWorkPrim), &color); TFB_Prim_Line (&lpWorkPrim->Object.Line, &color); break; case TEXT_PRIM: @@ -191,16 +176,10 @@ DrawBatch (PPRIMITIVE lpBasePrim, PRIM_LINKS PrimLinks, _text_blt (&ClipRect, lpWorkPrim); break; case RECT_PRIM: - c32k = GetPrimColor (lpWorkPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (lpWorkPrim), &color); TFB_Prim_Rect (&lpWorkPrim->Object.Rect, &color); case RECTFILL_PRIM: - c32k = GetPrimColor (lpWorkPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (lpWorkPrim), &color); TFB_Prim_FillRect (&lpWorkPrim->Object.Rect, &color); break; } @@ -243,13 +222,8 @@ DrawPoint (PPOINT lpPoint) if (GraphicsSystemActive () && GetFrameValidRect (&ValidRect, &OldHot)) { TFB_Palette color; - DWORD c32k; - - c32k = GetPrimColor (&_locPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (&_locPrim), &color); TFB_Prim_Point (lpPoint, &color); _CurFramePtr->HotSpot = OldHot; } @@ -264,13 +238,8 @@ DrawRectangle (PRECT lpRect) if (GraphicsSystemActive () && GetFrameValidRect (&ValidRect, &OldHot)) { TFB_Palette color; - DWORD c32k; - - c32k = GetPrimColor (&_locPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (&_locPrim), &color); TFB_Prim_Rect (lpRect, &color); _CurFramePtr->HotSpot = OldHot; } @@ -285,13 +254,8 @@ DrawFilledRectangle (PRECT lpRect) if (GraphicsSystemActive () && GetFrameValidRect (&ValidRect, &OldHot)) { TFB_Palette color; - DWORD c32k; - - c32k = GetPrimColor (&_locPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (&_locPrim), &color); TFB_Prim_FillRect (lpRect, &color); _CurFramePtr->HotSpot = OldHot; } @@ -306,13 +270,8 @@ DrawLine (PLINE lpLine) if (GraphicsSystemActive () && GetFrameValidRect (&ValidRect, &OldHot)) { TFB_Palette color; - DWORD c32k; - c32k = GetPrimColor (&_locPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); - + COLORtoPalette (GetPrimColor (&_locPrim), &color); TFB_Prim_Line (lpLine, &color); _CurFramePtr->HotSpot = OldHot; } @@ -340,12 +299,8 @@ DrawFilledStamp (PSTAMP stmp) if (GraphicsSystemActive () && GetFrameValidRect (&ValidRect, &OldHot)) { TFB_Palette color; - DWORD c32k; - c32k = GetPrimColor (&_locPrim) >> 8; //shift out color index - color.r = (UBYTE)((c32k >> (10 - (8 - 5))) & 0xF8); - color.g = (UBYTE)((c32k >> (5 - (8 - 5))) & 0xF8); - color.b = (UBYTE)((c32k << (8 - 5)) & 0xF8); + COLORtoPalette (GetPrimColor (&_locPrim), &color); TFB_Prim_StampFill (stmp, &color); _CurFramePtr->HotSpot = OldHot; }