Changeset 2411


Ignore:
Timestamp:
06/15/08 15:50:28 (5 years ago)
Author:
sam
Message:
  • Make cacaview use cucul_file_t functions.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/src/common-image.c

    r2300 r2411  
    1616 
    1717#if !defined(__KERNEL__) 
    18 #   include <stdio.h> 
    1918#   include <string.h> 
    2019#   include <stdlib.h> 
     
    2322#if defined(USE_IMLIB2) 
    2423#   include <Imlib2.h> 
    25 #else 
    26 #   if !defined(__KERNEL__) 
    27 #      include <stdio.h> 
    28 #   endif 
    2924#endif 
    3025 
     
    3429 
    3530#if !defined(USE_IMLIB2) 
    36 static unsigned int u32fread(FILE *); 
    37 static unsigned int u16fread(FILE *); 
    38 static unsigned int u8fread(FILE *); 
     31static unsigned int u32fread(cucul_file_t *); 
     32static unsigned int u16fread(cucul_file_t *); 
     33static unsigned int u8fread(cucul_file_t *); 
    3934#endif 
    4035 
     
    8378    unsigned int red[256], green[256], blue[256], alpha[256]; 
    8479    unsigned int i, colors, offset, tmp, planes; 
    85     FILE *fp; 
    86  
    87     fp = fopen(name, "rb"); 
    88     if(!fp) 
    89     { 
    90         free(im); 
    91         return NULL; 
    92     } 
    93  
    94     if(u16fread(fp) != 0x4d42) 
    95     { 
    96         fclose(fp); 
    97         free(im); 
    98         return NULL; 
    99     } 
    100  
    101     u32fread(fp); /* size */ 
    102     u16fread(fp); /* reserved 1 */ 
    103     u16fread(fp); /* reserved 2 */ 
    104  
    105     offset = u32fread(fp); 
    106  
    107     tmp = u32fread(fp); /* header size */ 
     80    cucul_file_t *f; 
     81 
     82    f = cucul_file_open(name, "rb"); 
     83    if(!f) 
     84    { 
     85        free(im); 
     86        return NULL; 
     87    } 
     88 
     89    if(u16fread(f) != 0x4d42) 
     90    { 
     91        cucul_file_close(f); 
     92        free(im); 
     93        return NULL; 
     94    } 
     95 
     96    u32fread(f); /* size */ 
     97    u16fread(f); /* reserved 1 */ 
     98    u16fread(f); /* reserved 2 */ 
     99 
     100    offset = u32fread(f); 
     101 
     102    tmp = u32fread(f); /* header size */ 
    108103    if(tmp == 40) 
    109104    { 
    110         im->w = u32fread(fp); 
    111         im->h = u32fread(fp); 
    112         planes = u16fread(fp); 
    113         bpp = u16fread(fp); 
    114  
    115         tmp = u32fread(fp); /* compression */ 
     105        im->w = u32fread(f); 
     106        im->h = u32fread(f); 
     107        planes = u16fread(f); 
     108        bpp = u16fread(f); 
     109 
     110        tmp = u32fread(f); /* compression */ 
    116111        if(tmp != 0) 
    117112        { 
    118             fclose(fp); 
     113            cucul_file_close(f); 
    119114            free(im); 
    120115            return NULL; 
    121116        } 
    122117 
    123         u32fread(fp); /* sizeimage */ 
    124         u32fread(fp); /* xpelspermeter */ 
    125         u32fread(fp); /* ypelspermeter */ 
    126         u32fread(fp); /* biclrused */ 
    127         u32fread(fp); /* biclrimportantn */ 
     118        u32fread(f); /* sizeimage */ 
     119        u32fread(f); /* xpelspermeter */ 
     120        u32fread(f); /* ypelspermeter */ 
     121        u32fread(f); /* biclrused */ 
     122        u32fread(f); /* biclrimportantn */ 
    128123 
    129124        colors = (offset - 54) / 4; 
    130125        for(i = 0; i < colors && i < 256; i++) 
    131126        { 
    132             blue[i] = u8fread(fp) * 16; 
    133             green[i] = u8fread(fp) * 16; 
    134             red[i] = u8fread(fp) * 16; 
     127            blue[i] = u8fread(f) * 16; 
     128            green[i] = u8fread(f) * 16; 
     129            red[i] = u8fread(f) * 16; 
    135130            alpha[i] = 0; 
    136             u8fread(fp); 
     131            u8fread(f); 
    137132        } 
    138133    } 
    139134    else if(tmp == 12) 
    140135    { 
    141         im->w = u32fread(fp); 
    142         im->h = u32fread(fp); 
    143         planes = u16fread(fp); 
    144         bpp = u16fread(fp); 
     136        im->w = u32fread(f); 
     137        im->h = u32fread(f); 
     138        planes = u16fread(f); 
     139        bpp = u16fread(f); 
    145140 
    146141        colors = (offset - 26) / 3; 
    147142        for(i = 0; i < colors && i < 256; i++) 
    148143        { 
    149             blue[i] = u8fread(fp); 
    150             green[i] = u8fread(fp); 
    151             red[i] = u8fread(fp); 
     144            blue[i] = u8fread(f); 
     145            green[i] = u8fread(f); 
     146            red[i] = u8fread(f); 
    152147            alpha[i] = 0; 
    153148        } 
     
    155150    else 
    156151    { 
    157         fclose(fp); 
     152        cucul_file_close(f); 
    158153        free(im); 
    159154        return NULL; 
     
    169164    if(!im->w || im->w > 0x10000 || !im->h || im->h > 0x10000 || planes != 1) 
    170165    { 
    171         fclose(fp); 
     166        cucul_file_close(f); 
    172167        free(im); 
    173168        return NULL; 
     
    178173    if(!im->pixels) 
    179174    { 
    180         fclose(fp); 
     175        cucul_file_close(f); 
    181176        free(im); 
    182177        return NULL; 
     
    197192                    k = j % 32; 
    198193                    if(k == 0) 
    199                         bits = u32fread(fp); 
     194                        bits = u32fread(f); 
    200195                    im->pixels[im->w * i * depth + j] = 
    201196                        (bits >> ((k & ~0xf) + 0xf - (k & 0xf))) & 0x1; 
     
    207202                    k = j % 8; 
    208203                    if(k == 0) 
    209                         bits = u32fread(fp); 
     204                        bits = u32fread(f); 
    210205                    im->pixels[im->w * i * depth + j] = 
    211206                        (bits >> (4 * ((k & ~0x1) + 0x1 - (k & 0x1)))) & 0xf; 
     
    214209            default: 
    215210                /* Works for 8bpp, but also for 16, 24 etc. */ 
    216                 fread(im->pixels + im->w * i * depth, im->w * depth, 1, fp); 
     211                cucul_file_read(f, im->pixels + im->w * i * depth, 
     212                                im->w * depth); 
    217213                /* Pad reads to 4 bytes */ 
    218214                tmp = (im->w * depth) % 4; 
    219215                tmp = (4 - tmp) % 4; 
    220216                while(tmp--) 
    221                     u8fread(fp); 
     217                    u8fread(f); 
    222218                break; 
    223219        } 
     
    245241    } 
    246242 
    247     fclose(fp); 
     243    cucul_file_close(f); 
    248244 
    249245    /* Create the libcucul dither */ 
     
    276272 
    277273#if !defined(USE_IMLIB2) 
    278 static unsigned int u32fread(FILE *fp) 
     274static unsigned int u32fread(cucul_file_t * f) 
    279275{ 
    280276    uint8_t buffer[4]; 
    281     fread(buffer, 4, 1, fp); 
     277    cucul_file_read(buffer, 4, 1, fp); 
    282278    return ((unsigned int)buffer[3] << 24) | ((unsigned int)buffer[2] << 16) 
    283279             | ((unsigned int)buffer[1] << 8) | ((unsigned int)buffer[0]); 
    284280} 
    285281 
    286 static unsigned int u16fread(FILE *fp) 
     282static unsigned int u16fread(cucul_file_t * f) 
    287283{ 
    288284    uint8_t buffer[2]; 
    289     fread(buffer, 2, 1, fp); 
     285    cucul_file_read(buffer, 2, 1, fp); 
    290286    return ((unsigned int)buffer[1] << 8) | ((unsigned int)buffer[0]); 
    291287} 
    292288 
    293 static unsigned int u8fread(FILE *fp) 
     289static unsigned int u8fread(cucul_file_t * f) 
    294290{ 
    295291    uint8_t buffer; 
    296     fread(&buffer, 1, 1, fp); 
     292    cucul_file_read(&buffer, 1, 1, fp); 
    297293    return (unsigned int)buffer; 
    298294} 
Note: See TracChangeset for help on using the changeset viewer.