Fix image alpha_set() and fix compiler warning, minor fixes.

SVN revision: 32165
This commit is contained in:
Gustavo Sverzut Barbieri 2007-10-25 22:09:49 +00:00
parent 8ee9f51f5b
commit 3209b5f4e8
4 changed files with 26 additions and 14 deletions

View File

@ -14,9 +14,6 @@
fprintf(stderr, "NOT_IMPLEMENTED: %s() at %s:%d\n", \
__FUNCTION__, __FILE__, __LINE__)
static int cpunum = 0;
static void *
eng_context_new(void *data)
{
@ -333,8 +330,7 @@ eng_image_alpha_get(void *data, void *image)
if (!image) return 0;
im = image;
if (im->have_alpha) return 1;
return 0;
return im->have_alpha;
}
static int
@ -348,7 +344,7 @@ eng_image_alpha_set(void *data, void *image, int have_alpha)
{
if (!image) return NULL;
have_alpha = !!have_alpha;
soft16_image_alpha_set(image, have_alpha);
image = soft16_image_alpha_set(image, have_alpha);
return image;
}
@ -372,6 +368,7 @@ eng_image_comment_get(void *data, void *image, char *key)
static char *
eng_image_format_get(void *data, void *image)
{
NOT_IMPLEMENTED();
return NULL;
}
@ -384,11 +381,13 @@ eng_image_colorspace_set(void *data, void *image, int cspace)
static void
eng_image_native_set(void *data, void *image, void *native)
{
NOT_IMPLEMENTED();
}
static void *
eng_image_native_get(void *data, void *image)
{
NOT_IMPLEMENTED();
return NULL;
}
@ -843,7 +842,6 @@ module_open(Evas_Module *em)
{
if (!em) return 0;
em->functions = (void *)(&func);
cpunum = evas_common_cpu_count();
return 1;
}

View File

@ -88,7 +88,7 @@ void soft16_image_free(Soft16_Image *im);
Soft16_Image *soft16_image_load(const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
void soft16_image_load_data(Soft16_Image *im);
void soft16_image_draw(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h, int smooth);
void soft16_image_alpha_set(Soft16_Image *im, int have_alpha);
Soft16_Image *soft16_image_alpha_set(Soft16_Image *im, int have_alpha);
Soft16_Image *soft16_image_size_set(Soft16_Image *im, int w, int h);
@ -123,6 +123,6 @@ soft16_line_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
*/
void *soft16_font_glyph_new(void *data, RGBA_Font_Glyph *fg);
void soft16_font_glyph_free(void *ext_dat);
void soft16_font_glyph_draw(Soft16_Image *dst, void *data, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
void soft16_font_glyph_draw(void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y);
#endif

View File

@ -246,16 +246,20 @@ _soft16_font_glyph_draw_mono(Soft16_Image *dst,
}
void
soft16_font_glyph_draw(Soft16_Image *dst, void *data,
RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg,
int x, int y)
soft16_font_glyph_draw(void *data, void *dest, void *context,
RGBA_Font_Glyph *fg, int x, int y)
{
Soft16_Image *dst;
RGBA_Draw_Context *dc;
const DATA8 *bitmap;
DATA8 alpha, r, g, b;
DATA16 rgb565;
Evas_Rectangle ext;
int bpitch, bw, bh;
dst = data;
dc = context;
alpha = A_VAL(&dc->col.col) >> 3;
if (alpha == 0) return; /* precision is 5 bits, 3 bits lost */

View File

@ -447,10 +447,10 @@ soft16_image_draw(Soft16_Image *src, Soft16_Image *dst,
dc->clip = clip_bkp;
}
void
Soft16_Image *
soft16_image_alpha_set(Soft16_Image *im, int have_alpha)
{
if (im->have_alpha == have_alpha) return;
if (im->have_alpha == have_alpha) return im;
im->have_alpha = have_alpha;
if ((im->pixels) && (im->free_pixels))
@ -469,6 +469,16 @@ soft16_image_alpha_set(Soft16_Image *im, int have_alpha)
im->alpha = (DATA8*)(im->pixels + size);
memset(im->alpha, 0x1f, size);
}
return im;
}
else
{
Soft16_Image *im_new;
im_new = soft16_image_new(im->w, im->h, im->stride, have_alpha,
im->pixels, 1);
soft16_image_free(im);
return im_new;
}
}