00001 #ifndef _VCL_RASTER_RLE_DATA_H_
00002 #define _VCL_RASTER_RLE_DATA_H_
00003
00004
00005 struct vcl_rle_line
00006 {
00007 u8 *datas;
00008 uns *ends;
00009 uns width;
00010 };
00011
00012 struct vcl_rle_data
00013 {
00014 u8 depth;
00015 uns width;
00016 uns height;
00017 uns offset_x;
00018 uns offset_y;
00019 struct vcl_rle_line *lines;
00020 };
00021
00022
00023 extern struct vcl_rle_data *
00024 vcl_rle_data_new (u8 depth, uns width, uns height);
00025
00026 extern struct vcl_rle_data *
00027 vcl_rle_data_new_subblock (const struct vcl_rle_data *src, uns offset_x, uns offset_y,
00028 uns width, uns height);
00029
00030 extern struct vcl_rle_data *
00031 vcl_rle_data_init_subblock (struct vcl_rle_data *rd, const struct vcl_rle_data *src,
00032 uns offset_x, uns offset_y, uns width, uns height);
00033
00034 extern void
00035 vcl_rle_data_add_line (struct vcl_rle_data *rd, uns lineno, uns width,
00036 const u8* datas, const uns* ends);
00037
00038 extern void
00039 vcl_rle_data_crop_bbox (struct vcl_rle_data *rd, struct vcl_rectangle *src,
00040 struct vcl_rectangle *dst);
00041
00042 extern void
00043 vcl_rle_data_render (struct vcl_rle_data * src, struct vcl_pixbuf *dst);
00044
00045
00046 #endif