summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/gdevmem.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/base/gdevmem.c b/base/gdevmem.c
index e0d247214..59e10bd47 100644
--- a/base/gdevmem.c
+++ b/base/gdevmem.c
@@ -858,11 +858,20 @@ mem_mapped_map_color_rgb(gx_device * dev, gx_color_index color,
gx_color_value prgb[3])
{
gx_device_memory * const mdev = (gx_device_memory *)dev;
- const byte *pptr = mdev->palette.data + (int)color * 3;
+ const byte *pptr = mdev->palette.data;
- prgb[0] = gx_color_value_from_byte(pptr[0]);
- prgb[1] = gx_color_value_from_byte(pptr[1]);
- prgb[2] = gx_color_value_from_byte(pptr[2]);
+ if (pptr == NULL) {
+ color = color * gx_max_color_value / ((1<<mdev->color_info.depth)-1);
+ prgb[0] = color;
+ prgb[1] = color;
+ prgb[2] = color;
+ } else {
+ pptr += (int)color * 3;
+
+ prgb[0] = gx_color_value_from_byte(pptr[0]);
+ prgb[1] = gx_color_value_from_byte(pptr[1]);
+ prgb[2] = gx_color_value_from_byte(pptr[2]);
+ }
return 0;
}