diff options
-rw-r--r-- | base/gdevmem.c | 17 |
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; } |