diff options
author | Ton Roosendaal <ton@blender.org> | 2004-11-18 16:58:37 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-11-18 16:58:37 +0300 |
commit | e696cdfd70c8136a2725b35c67e763ac9a82cbf1 (patch) | |
tree | b3e08117efc59810807aee4a04f26a938aa7e5b0 /source/blender/src/mywindow.c | |
parent | c7d8c44de999dcabe3c418f6f1babba452cf0786 (diff) |
Bug fix for #1835
Found out the conversion functions for indices <-> framebuffer only went
up to 18 bits, making selection in zbuffer-select (or vpaint/faceselect
even) not work on large datasets. Provided you have 24 bits display, of
course.
This limit was just dangling in the code since long ago... modern times eh!
Diffstat (limited to 'source/blender/src/mywindow.c')
-rw-r--r-- | source/blender/src/mywindow.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/src/mywindow.c b/source/blender/src/mywindow.c index b56b81001fc..1ef4e330107 100644 --- a/source/blender/src/mywindow.c +++ b/source/blender/src/mywindow.c @@ -504,7 +504,9 @@ unsigned int index_to_framebuffer(int index) i= ((i & 0x7C00)<<9) + ((i & 0x3E0)<<6) + ((i & 0x1F)<<3); i |= 0x070707; break; - default: + case 24: + break; + default: // 18 bits... not enuf i= ((i & 0x3F000)<<6) + ((i & 0xFC0)<<4) + ((i & 0x3F)<<2); i |= 0x030303; break; @@ -525,7 +527,9 @@ int framebuffer_to_index(unsigned int col) case 15: case 16: return ((col & 0xF80000)>>9) + ((col & 0xF800)>>6) + ((col & 0xF8)>>3); - default: + case 24: + return col & 0xFFFFFF; + default: // 18 bits... return ((col & 0xFC0000)>>6) + ((col & 0xFC00)>>4) + ((col & 0xFC)>>2); } } |