aboutsummaryrefslogtreecommitdiff
path: root/lib/libvgl/simple.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libvgl/simple.c')
-rw-r--r--lib/libvgl/simple.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/libvgl/simple.c b/lib/libvgl/simple.c
index d59893e721fd..d5c36a84ed39 100644
--- a/lib/libvgl/simple.c
+++ b/lib/libvgl/simple.c
@@ -513,6 +513,31 @@ VGLClear(VGLBitmap *object, u_long color)
VGLMouseUnFreeze();
}
+static inline u_long
+VGLrgbToNative(uint16_t r, uint16_t g, uint16_t b)
+{
+ int nr, ng, nb;
+
+ nr = VGLModeInfo.vi_pixel_fsizes[2];
+ ng = VGLModeInfo.vi_pixel_fsizes[1];
+ nb = VGLModeInfo.vi_pixel_fsizes[0];
+ return (r >> (16 - nr) << (ng + nb)) | (g >> (16 - ng) << nb) |
+ (b >> (16 - nb) << 0);
+}
+
+u_long
+VGLrgb332ToNative(byte c)
+{
+ uint16_t r, g, b;
+
+ /* 3:3:2 to 16:16:16 */
+ r = ((c & 0xe0) >> 5) * 0xffff / 7;
+ g = ((c & 0x1c) >> 2) * 0xffff / 7;
+ b = ((c & 0x03) >> 0) * 0xffff / 3;
+
+ return VGLrgbToNative(r, g, b);
+}
+
void
VGLRestorePalette()
{