Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint32_t color_pattern(uint32_t first, uint8_t row, uint8_t step, uint8_t col, uint8_t no_rectangles ){ //function to generate the next color
- uint32_t new_color;
- if(vbmit.BitsPerPixel == 8){ //if indexed
- new_color = (first + (row * no_rectangles + col) * step) % (1 << vbmit.BitsPerPixel);
- }
- else{
- //red
- uint32_t redM=((1 << vbmit.RedMaskSize)-1);
- uint32_t red=first;
- red= (red>>(vbmit.RedFieldPosition)) & redM;
- red = (red + col * step) % (1 << vbmit.RedMaskSize);
- //green
- uint32_t greenM=((1 << vbmit.GreenMaskSize)-1);
- uint32_t green=first;
- green= (green>>vbmit.GreenFieldPosition) & greenM;
- green = (green + row * step)% (1 << vbmit.GreenMaskSize);
- //blue
- uint32_t blueM=((1 << vbmit.BlueMaskSize)-1);
- uint32_t blue = first;
- blue=(blue>>vbmit.BlueFieldPosition) & blueM;
- blue = (blue + (col + row) * step) % (1 << vbmit.BlueMaskSize);
- new_color= ((red<<vbmit.RedFieldPosition) | (green<<vbmit.GreenFieldPosition) | blue );
- }
- return new_color;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement