Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

wbmp.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "gwlib/gwlib.h"
#include "wbmp.h"

Include dependency graph for wbmp.c:

Include dependency graph

Go to the source code of this file.

Functions

WBMPwbmp_create_empty (void)
void wbmp_delete (WBMP *pic)
WBMPwbmp_create (int type, int width, int height, Octet *data, int flags)
int wbmp_create_stream (WBMP *pic, Octet **stream)


Function Documentation

WBMP* wbmp_create int  type,
int  width,
int  height,
Octet data,
int  flags
 

Definition at line 94 of file wbmp.c.

References data, error(), wbmp::fix_header_field, wbmp::height, wbmp::main_image, Octet, reverse_octet(), type, wbmp::type_field, WBMP, wbmp_create_empty(), and wbmp::width.

00095 {
00096     WBMP *new;
00097     int i, siz;
00098     Octet val;
00099     
00100     new = wbmp_create_empty();
00101 
00102     new->type_field = type;
00103     if (type == 0) {
00104     new->fix_header_field = 0x00;
00105     } else {
00106     error(0, "WBMP type %d not supported", type);
00107     return NULL;
00108     }
00109     new->width = width;
00110     new->height = height;
00111     siz = (width+7)/8 * height;
00112     
00113     new->main_image = gw_malloc(siz);
00114     for(i=0; i < siz; i++) {
00115     if (flags & REVERSE) val = reverse_octet(data[i]);
00116     else val = data[i];
00117     if (flags & NEGATIVE) val = ~val;
00118     new->main_image[i] = val;
00119     }    
00120     return new;
00121 }

Here is the call graph for this function:

WBMP* wbmp_create_empty void   ) 
 

Definition at line 69 of file wbmp.c.

References WBMP.

Referenced by wbmp_create().

00070 {
00071     WBMP *new;
00072 
00073     new = gw_malloc(sizeof(WBMP));
00074     memset(new, 0, sizeof(WBMP));
00075     return new;
00076 }

int wbmp_create_stream WBMP pic,
Octet **  stream
 

Definition at line 127 of file wbmp.c.

References debug(), error(), wbmp::height, wbmp::main_image, Octet, wbmp::type_field, WBMP, wbmp::width, and write_variable_value().

00128 {
00129     Octet   tmp_w[30], tmp_h[30];
00130     int     wl, hl, pic_size;
00131     
00132     wl = write_variable_value(pic->width, tmp_w);
00133     hl = write_variable_value(pic->height, tmp_h);
00134 
00135     pic_size = ((pic->width+7)/8) * pic->height;
00136 
00137     if (pic->type_field != 0) {
00138     error(0, "Unknown WBMP type %d, cannot convert", pic->type_field);
00139     return -1;
00140     }
00141     *stream = gw_malloc(2+wl+hl+pic_size);
00142     sprintf(*stream, "%c%c", 0x00, 0x00); 
00143     memcpy(*stream+2, tmp_w, wl);
00144     memcpy(*stream+2+wl, tmp_h, hl);
00145     memcpy(*stream+2+wl+hl, pic->main_image, pic_size);
00146 
00147     debug("util", 0, "picture %d x %d, stream length %d",
00148       pic->width, pic->height, 2+wl+hl+pic_size);
00149     
00150     return (2+wl+hl+pic_size);
00151 }

Here is the call graph for this function:

void wbmp_delete WBMP pic  ) 
 

Definition at line 80 of file wbmp.c.

References wbmp::animated_image, wbmp::animimg_count, wbmp::ext_header_field, wbmp::main_image, and WBMP.

00081 {
00082     gw_free(pic->ext_header_field);
00083     gw_free(pic->main_image);
00084     if (pic->animated_image) {
00085     int i;
00086     for(i=0; i < pic->animimg_count; i++)
00087         gw_free(pic->animated_image[i]);
00088     gw_free(pic->animated_image);
00089     }
00090     gw_free(pic);
00091 }

See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.