Changeset 237
- Timestamp:
- Nov 30, 2003, 3:11:37 AM (17 years ago)
- Location:
- libcaca/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/examples/view.c
r236 r237 216 216 if(yn + y > h) y = h - yn; 217 217 newbitmap = caca_create_bitmap(32, 2 * xn, 2 * yn, 4 * w, 218 0x00 ff0000, 0x0000ff00, 0x000000ff);218 0x0000ff00, 0x00ff0000, 0xff000000); 219 219 caca_draw_bitmap(0, 0, ww - 1, wh - 1, newbitmap, 220 220 pixels + 4 * (x - xn) + 4 * w * (y - yn)); … … 299 299 /* Create the libcaca bitmap */ 300 300 bitmap = caca_create_bitmap(32, w, h, 4 * w, 301 0x00 ff0000, 0x0000ff00, 0x000000ff);301 0x0000ff00, 0x00ff0000, 0xff000000); 302 302 if(!bitmap) 303 303 { -
libcaca/trunk/src/bitmap.c
r235 r237 43 43 #include "caca_internals.h" 44 44 45 static void mask2shift( int, int *, int *);46 47 static void get_rgb_default(struct caca_bitmap *, u nsigned char *,48 int, int, int *, int *,int *);45 static void mask2shift(unsigned int, int *, int *); 46 47 static void get_rgb_default(struct caca_bitmap *, uint8_t *, int, int, 48 unsigned int *, unsigned int *, unsigned int *); 49 49 static void rgb2hsv_default(int, int, int, int *, int *, int *); 50 50 51 51 /* Dithering methods */ 52 52 static void init_no_dither(int); 53 static int get_no_dither(void);53 static unsigned int get_no_dither(void); 54 54 static void increment_no_dither(void); 55 55 56 56 static void init_ordered4_dither(int); 57 static int get_ordered4_dither(void);57 static unsigned int get_ordered4_dither(void); 58 58 static void increment_ordered4_dither(void); 59 59 60 60 static void init_ordered8_dither(int); 61 static int get_ordered8_dither(void);61 static unsigned int get_ordered8_dither(void); 62 62 static void increment_ordered8_dither(void); 63 63 64 64 static void init_random_dither(int); 65 static int get_random_dither(void);65 static unsigned int get_random_dither(void); 66 66 static void increment_random_dither(void); 67 67 … … 70 70 71 71 static void (*_init_dither) (int) = init_no_dither; 72 static int (*_get_dither) (void) = get_no_dither;72 static unsigned int (*_get_dither) (void) = get_no_dither; 73 73 static void (*_increment_dither) (void) = increment_no_dither; 74 74 … … 119 119 }; 120 120 121 static void mask2shift( int mask, int *right, int *left)121 static void mask2shift(unsigned int mask, int *right, int *left) 122 122 { 123 123 int rshift = 0, lshift = 0; 124 *right = *left = 0;125 124 126 125 if(!mask) 126 { 127 *right = *left = 0; 127 128 return; 129 } 128 130 129 131 while(!(mask & 1)) … … 142 144 } 143 145 146 #include <stdio.h> 144 147 struct caca_bitmap *caca_create_bitmap(int bpp, int w, int h, int pitch, 145 148 int rmask, int gmask, int bmask) … … 173 176 mask2shift(bmask, &bitmap->bright, &bitmap->bleft); 174 177 } 178 fprintf(stderr, "shifts: %i %i %i %i %i %i\n", bitmap->rright, bitmap->rleft, bitmap->gright, bitmap->gleft, bitmap->bright, bitmap->bleft); 175 179 176 180 /* In 8 bpp mode, default to a grayscale palette */ … … 219 223 } 220 224 221 static void get_rgb_default(struct caca_bitmap *bitmap, unsigned char *pixels, 222 int x, int y, int *r, int *g, int *b) 223 { 224 int bits; 225 static void get_rgb_default(struct caca_bitmap *bitmap, uint8_t *pixels, 226 int x, int y, unsigned int *r, 227 unsigned int *g, unsigned int *b) 228 { 229 unsigned int bits; 225 230 226 231 pixels += (bitmap->bpp / 8) * x + bitmap->pitch * y; … … 229 234 { 230 235 case 4: 231 bits = *(uint32_t *)(pixels + 0); 236 bits = ((uint32_t)pixels[0] << 24) | 237 ((uint32_t)pixels[1] << 16) | 238 ((uint32_t)pixels[2] << 8) | 239 ((uint32_t)pixels[3]); 232 240 break; 233 241 case 3: 234 bits = (pixels[0] << 16) | (pixels[1] << 8) | (pixels[2]); 242 bits = ((uint32_t)pixels[0] << 16) | 243 ((uint32_t)pixels[1] << 8) | 244 ((uint32_t)pixels[2]); 235 245 break; 236 246 case 2: 237 bits = *(uint16_t *)(pixels + 0); 247 bits = ((uint16_t)pixels[0] << 8) | 248 ((uint16_t)pixels[1]); 238 249 break; 239 250 case 1: … … 362 373 { 363 374 int ch; 364 int hue, sat, val, r, g, b, R, G, B;375 unsigned int hue, sat, val, r, g, b, R, G, B; 365 376 int fromx = w * (x - x1) / (x2 - x1 + 1); 366 377 int fromy = h * (y - y1) / (y2 - y1 + 1); … … 416 427 } 417 428 418 static int get_no_dither(void)429 static unsigned int get_no_dither(void) 419 430 { 420 431 return 0x80; … … 433 444 -2, -7, -8, 3, 434 445 4, -3, -4, -7};*/ 435 static int *ordered4_table;436 static int ordered4_index;446 static unsigned int *ordered4_table; 447 static unsigned int ordered4_index; 437 448 438 449 static void init_ordered4_dither(int line) 439 450 { 440 static int dither4x4[] =451 static unsigned int dither4x4[] = 441 452 { 442 453 0x00, 0x80, 0x20, 0xa0, … … 450 461 } 451 462 452 static int get_ordered4_dither(void)463 static unsigned int get_ordered4_dither(void) 453 464 { 454 465 return ordered4_table[ordered4_index]; … … 463 474 * Ordered 8 dithering 464 475 */ 465 static int *ordered8_table;466 static int ordered8_index;476 static unsigned int *ordered8_table; 477 static unsigned int ordered8_index; 467 478 468 479 static void init_ordered8_dither(int line) 469 480 { 470 static int dither8x8[] =481 static unsigned int dither8x8[] = 471 482 { 472 483 0x00, 0x80, 0x20, 0xa0, 0x08, 0x88, 0x28, 0xa8, … … 484 495 } 485 496 486 static int get_ordered8_dither(void)497 static unsigned int get_ordered8_dither(void) 487 498 { 488 499 return ordered8_table[ordered8_index]; … … 502 513 } 503 514 504 static int get_random_dither(void)515 static unsigned int get_random_dither(void) 505 516 { 506 517 return caca_rand(0x00, 0xff);
Note: See TracChangeset
for help on using the changeset viewer.