Changeset 237


Ignore:
Timestamp:
Nov 30, 2003, 3:11:37 AM (17 years ago)
Author:
Sam Hocevar
Message:
  • src/bitmap.c examples/view.c: + Fixed an endianness issue in caca_draw_bitmap(). + Code cleanup.
Location:
libcaca/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/examples/view.c

    r236 r237  
    216216            if(yn + y > h) y = h - yn;
    217217            newbitmap = caca_create_bitmap(32, 2 * xn, 2 * yn, 4 * w,
    218                                        0x00ff0000, 0x0000ff00, 0x000000ff);
     218                                       0x0000ff00, 0x00ff0000, 0xff000000);
    219219            caca_draw_bitmap(0, 0, ww - 1, wh - 1, newbitmap,
    220220                             pixels + 4 * (x - xn) + 4 * w * (y - yn));
     
    299299    /* Create the libcaca bitmap */
    300300    bitmap = caca_create_bitmap(32, w, h, 4 * w,
    301                                 0x00ff0000, 0x0000ff00, 0x000000ff);
     301                                0x0000ff00, 0x00ff0000, 0xff000000);
    302302    if(!bitmap)
    303303    {
  • libcaca/trunk/src/bitmap.c

    r235 r237  
    4343#include "caca_internals.h"
    4444
    45 static void mask2shift(int, int *, int *);
    46 
    47 static void get_rgb_default(struct caca_bitmap *, unsigned char *,
    48                             int, int, int *, int *, int *);
     45static void mask2shift(unsigned int, int *, int *);
     46
     47static void get_rgb_default(struct caca_bitmap *, uint8_t *, int, int,
     48                            unsigned int *, unsigned int *, unsigned int *);
    4949static void rgb2hsv_default(int, int, int, int *, int *, int *);
    5050
    5151/* Dithering methods */
    5252static void init_no_dither(int);
    53 static int get_no_dither(void);
     53static unsigned int get_no_dither(void);
    5454static void increment_no_dither(void);
    5555
    5656static void init_ordered4_dither(int);
    57 static int get_ordered4_dither(void);
     57static unsigned int get_ordered4_dither(void);
    5858static void increment_ordered4_dither(void);
    5959
    6060static void init_ordered8_dither(int);
    61 static int get_ordered8_dither(void);
     61static unsigned int get_ordered8_dither(void);
    6262static void increment_ordered8_dither(void);
    6363
    6464static void init_random_dither(int);
    65 static int get_random_dither(void);
     65static unsigned int get_random_dither(void);
    6666static void increment_random_dither(void);
    6767
     
    7070
    7171static void (*_init_dither) (int) = init_no_dither;
    72 static int (*_get_dither) (void) = get_no_dither;
     72static unsigned int (*_get_dither) (void) = get_no_dither;
    7373static void (*_increment_dither) (void) = increment_no_dither;
    7474
     
    119119};
    120120
    121 static void mask2shift(int mask, int *right, int *left)
     121static void mask2shift(unsigned int mask, int *right, int *left)
    122122{
    123123    int rshift = 0, lshift = 0;
    124     *right = *left = 0;
    125124
    126125    if(!mask)
     126    {
     127        *right = *left = 0;
    127128        return;
     129    }
    128130
    129131    while(!(mask & 1))
     
    142144}
    143145
     146#include <stdio.h>
    144147struct caca_bitmap *caca_create_bitmap(int bpp, int w, int h, int pitch,
    145148                                       int rmask, int gmask, int bmask)
     
    173176        mask2shift(bmask, &bitmap->bright, &bitmap->bleft);
    174177    }
     178fprintf(stderr, "shifts: %i %i %i %i %i %i\n", bitmap->rright, bitmap->rleft, bitmap->gright, bitmap->gleft, bitmap->bright, bitmap->bleft);
    175179
    176180    /* In 8 bpp mode, default to a grayscale palette */
     
    219223}
    220224
    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;
     225static 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;
    225230
    226231    pixels += (bitmap->bpp / 8) * x + bitmap->pitch * y;
     
    229234    {
    230235        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]);
    232240            break;
    233241        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]);
    235245            break;
    236246        case 2:
    237             bits = *(uint16_t *)(pixels + 0);
     247            bits = ((uint16_t)pixels[0] << 8) |
     248                   ((uint16_t)pixels[1]);
    238249            break;
    239250        case 1:
     
    362373        {
    363374            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;
    365376            int fromx = w * (x - x1) / (x2 - x1 + 1);
    366377            int fromy = h * (y - y1) / (y2 - y1 + 1);
     
    416427}
    417428
    418 static int get_no_dither(void)
     429static unsigned int get_no_dither(void)
    419430{
    420431    return 0x80;
     
    433444                          -2, -7, -8,  3,
    434445                           4, -3, -4, -7};*/
    435 static int *ordered4_table;
    436 static int ordered4_index;
     446static unsigned int *ordered4_table;
     447static unsigned int ordered4_index;
    437448
    438449static void init_ordered4_dither(int line)
    439450{
    440     static int dither4x4[] =
     451    static unsigned int dither4x4[] =
    441452    {
    442453        0x00, 0x80, 0x20, 0xa0,
     
    450461}
    451462
    452 static int get_ordered4_dither(void)
     463static unsigned int get_ordered4_dither(void)
    453464{
    454465    return ordered4_table[ordered4_index];
     
    463474 * Ordered 8 dithering
    464475 */
    465 static int *ordered8_table;
    466 static int ordered8_index;
     476static unsigned int *ordered8_table;
     477static unsigned int ordered8_index;
    467478
    468479static void init_ordered8_dither(int line)
    469480{
    470     static int dither8x8[] =
     481    static unsigned int dither8x8[] =
    471482    {
    472483        0x00, 0x80, 0x20, 0xa0, 0x08, 0x88, 0x28, 0xa8,
     
    484495}
    485496
    486 static int get_ordered8_dither(void)
     497static unsigned int get_ordered8_dither(void)
    487498{
    488499    return ordered8_table[ordered8_index];
     
    502513}
    503514
    504 static int get_random_dither(void)
     515static unsigned int get_random_dither(void)
    505516{
    506517    return caca_rand(0x00, 0xff);
Note: See TracChangeset for help on using the changeset viewer.