aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorMax Horn2002-12-13 16:15:58 +0000
committerMax Horn2002-12-13 16:15:58 +0000
commit4bf96d1c8bd2fbcd371b321a11484677478aee15 (patch)
treef87fff487f1dd753c30e0d2ea9907e6d78638fc8 /common
parent7bcbcde9941f05179ab68175c4e6529dae41927e (diff)
downloadscummvm-rg350-4bf96d1c8bd2fbcd371b321a11484677478aee15.tar.gz
scummvm-rg350-4bf96d1c8bd2fbcd371b321a11484677478aee15.tar.bz2
scummvm-rg350-4bf96d1c8bd2fbcd371b321a11484677478aee15.zip
changed OSystem to allow RBG<->16bit color conversion to be done in the backend; after all, the backend 'knows' best what format the overlay uses. Default implementations of RBGToColor and colorToRBG assume 565 mode, backends other than SDL may want to provide alternate implementations (SDL backend already does the right thing for non-565 modes)
svn-id: r5931
Diffstat (limited to 'common')
-rw-r--r--common/system.h16
-rw-r--r--common/util.h22
2 files changed, 14 insertions, 24 deletions
diff --git a/common/system.h b/common/system.h
index d6447f2537..13a1fab3fd 100644
--- a/common/system.h
+++ b/common/system.h
@@ -71,8 +71,7 @@ public:
PROP_SET_GFX_MODE = 4,
PROP_SHOW_DEFAULT_CURSOR = 5,
PROP_GET_SAMPLE_RATE = 6,
- PROP_GET_FULLSCREEN = 7,
- PROP_OVERLAY_IS_565 = 8
+ PROP_GET_FULLSCREEN = 7
};
union Property {
const char *caption;
@@ -168,6 +167,19 @@ public:
virtual void clear_overlay() = 0;
virtual void grab_overlay(int16 *buf, int pitch) = 0;
virtual void copy_rect_overlay(const int16 *buf, int pitch, int x, int y, int w, int h) = 0;
+
+ // Methods that convert RBG to/from colors suitable for the overlay.
+ // Default implementation assumes 565 mode.
+ virtual int16 RBGToColor(uint8 r, uint8 g, uint8 b)
+ {
+ return ((((r>>3)&0x1F) << 11) | (((g>>2)&0x3F) << 5) | ((b>>3)&0x1F));
+ }
+ virtual void colorToRBG(int16 color, uint8 &r, uint8 &g, uint8 &b)
+ {
+ r = (((color>>11)&0x1F) << 3);
+ g = (((color>>5)&0x3F) << 2);
+ b = ((color&0x1F) << 3);
+ }
};
diff --git a/common/util.h b/common/util.h
index a5e13c0e4f..3be8c556e0 100644
--- a/common/util.h
+++ b/common/util.h
@@ -38,28 +38,6 @@
static inline void SWAP(int &a, int &b) { int tmp=a; a=b; b=tmp; }
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
-#if USE_555_FORMAT
-// Assume the 16 bit graphics data is in 5-5-5 format
-#define RGB_TO_16(r,g,b) (((((r)>>3)&0x1F) << 10) | ((((g)>>3)&0x1F) << 5) | (((b)>>3)&0x1F))
-#define RED_FROM_16(x) ((((x)>>10)&0x1F) << 3)
-#define GREEN_FROM_16(x) ((((x)>>5)&0x1F) << 3)
-#define BLUE_FROM_16(x) (((x)&0x1F) << 3)
-
-#elif defined(__GP32__) //ph0x
-// GP32 format 5-5-5-1 (first bit means intensity)
-#define RGB_TO_16(r,g,b) (((((r)>>3)&0x1F) << 11) | ((((g)>>3)&0x1F) << 6) | (((b)>>3)&0x1F)<<1)
-#define RED_FROM_16(x) ((((x)>>11)&0x1F) << 3)
-#define GREEN_FROM_16(x) ((((x)>>6) &0x1F) << 3)
-#define BLUE_FROM_16(x) ((((x)>>1) &0x1F) << 3)
-
-#else
-// Assume the 16 bit graphics data is in 5-6-5 format
-#define RGB_TO_16(r,g,b) (((((r)>>3)&0x1F) << 11) | ((((g)>>2)&0x3F) << 5) | (((b)>>3)&0x1F))
-#define RED_FROM_16(x) ((((x)>>11)&0x1F) << 3)
-#define GREEN_FROM_16(x) ((((x)>>5)&0x3F) << 2)
-#define BLUE_FROM_16(x) (((x)&0x1F) << 3)
-#endif
-
int RGBMatch(byte *palette, int r, int g, int b);
int Blend(int src, int dst, byte *palette);
void ClearBlendCache(byte *palette, int weight);