evas/cserve2: Add alpha flag to Image_data

This commit is contained in:
Jean-Philippe Andre 2013-09-24 18:18:53 +09:00
parent 1e82480c9a
commit 25d71f8236
4 changed files with 7 additions and 11 deletions

View File

@ -146,6 +146,7 @@ struct _Slave_Msg_Image_Load {
struct _Slave_Msg_Image_Loaded { struct _Slave_Msg_Image_Loaded {
int w, h; int w, h;
Eina_Bool alpha : 1;
Eina_Bool alpha_sparse : 1; Eina_Bool alpha_sparse : 1;
}; };

View File

@ -508,6 +508,7 @@ _image_loaded_msg_create(Image_Entry *ientry, Image_Data *idata, int *size)
msg->alpha_sparse = idata->alpha_sparse; msg->alpha_sparse = idata->alpha_sparse;
msg->image.w = idata->w; msg->image.w = idata->w;
msg->image.h = idata->h; msg->image.h = idata->h;
msg->alpha = idata->alpha;
if (idata->shm_id) if (idata->shm_id)
{ {
@ -806,18 +807,8 @@ _scaling_do(Shm_Handle *scale_shm, Image_Data *idata, Image_Entry *original)
{ {
char *scale_map, *orig_map; char *scale_map, *orig_map;
void *src_data, *dst_data; void *src_data, *dst_data;
File_Data *fd;
Image_Data *orig_idata; Image_Data *orig_idata;
#warning FIXME Remove this call, add alpha flag to Image_Data
fd = _file_data_find(idata->file_id);
if (!fd)
{
ERR("Could not find file data %u for image %u",
idata->file_id, idata->id);
return -1;
}
orig_idata = _image_data_find(original->base.id); orig_idata = _image_data_find(original->base.id);
if (!orig_idata) if (!orig_idata)
{ {
@ -858,7 +849,7 @@ _scaling_do(Shm_Handle *scale_shm, Image_Data *idata, Image_Entry *original)
idata->opts.scale_load.src_w, idata->opts.scale_load.src_h, idata->opts.scale_load.src_w, idata->opts.scale_load.src_h,
0, 0, 0, 0,
idata->opts.scale_load.dst_w, idata->opts.scale_load.dst_h, idata->opts.scale_load.dst_w, idata->opts.scale_load.dst_h,
fd->alpha, idata->opts.scale_load.smooth); idata->alpha, idata->opts.scale_load.smooth);
cserve2_shm_unmap(original->shm); cserve2_shm_unmap(original->shm);
cserve2_shm_unmap(scale_shm); cserve2_shm_unmap(scale_shm);
@ -906,6 +897,7 @@ _load_request_response(Image_Entry *ientry,
_entry_load_finish(ASENTRY(ientry)); _entry_load_finish(ASENTRY(ientry));
ASENTRY(ientry)->request = NULL; ASENTRY(ientry)->request = NULL;
idata->alpha = resp->alpha;
idata->alpha_sparse = resp->alpha_sparse; idata->alpha_sparse = resp->alpha_sparse;
if (!idata->doload) if (!idata->doload)
DBG("Entry %d loaded by speculative preload.", idata->id); DBG("Entry %d loaded by speculative preload.", idata->id);

View File

@ -456,6 +456,7 @@ image_load(const char *file, const char *key, const char *shmfile,
result->w = property.w; result->w = property.w;
result->h = property.h; result->h = property.h;
result->alpha = property.alpha;
if (property.alpha && property.premul) if (property.alpha && property.premul)
{ {

View File

@ -93,6 +93,7 @@ struct _Msg_Loaded {
struct { struct {
unsigned int w, h; // Real dimensions of this image. May differ from Msg_Opened::image::{w,h} after scaling. unsigned int w, h; // Real dimensions of this image. May differ from Msg_Opened::image::{w,h} after scaling.
} image; } image;
Eina_Bool alpha : 1;
Eina_Bool alpha_sparse : 1; Eina_Bool alpha_sparse : 1;
}; };
@ -358,6 +359,7 @@ struct _Image_Data {
string_t shm_id; string_t shm_id;
Evas_Image_Load_Opts opts; Evas_Image_Load_Opts opts;
uint32_t w, h; uint32_t w, h;
Eina_Bool alpha : 1;
Eina_Bool alpha_sparse : 1; Eina_Bool alpha_sparse : 1;
Eina_Bool unused : 1; Eina_Bool unused : 1;
Eina_Bool doload : 1; Eina_Bool doload : 1;