Save image from ARGB coming along. Not done yet.

SVN revision: 24043
This commit is contained in:
sebastid 2006-07-19 11:59:22 +00:00 committed by sebastid
parent 214d11f633
commit 6291d46977
4 changed files with 39 additions and 7 deletions

View File

@ -30,6 +30,8 @@ struct _E_Config_Dialog_Data
int wait_exit;
/*- common -*/
char *image;
int width;
int height;
E_App_Edit *editor;
};
@ -103,6 +105,11 @@ _e_eap_edit_fill_data(E_Config_Dialog_Data *cfdata)
IFDUP(cfdata->editor->eap->icon_class, cfdata->iclass);
cfdata->startup_notify = cfdata->editor->eap->startup_notify;
cfdata->wait_exit = cfdata->editor->eap->wait_exit;
/*- COMMON -*/
IFDUP(cfdata->editor->eap->image, cfdata->image);
cfdata->height = cfdata->editor->eap->height;
cfdata->width = cfdata->editor->eap->width;
if (cfdata->image) cfdata->editor->img_set = 1;
}
static void *
@ -157,8 +164,10 @@ _e_eap_edit_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data)
eap->wait_exit = data->wait_exit;
/* FIXME: hardcoded until the eap editor provides fields to change it */
eap->width = 128;
eap->height = 128;
if (data->width) eap->width = data->width;
else eap->width = 128;
if (data->height) eap->height = data->height;
else eap->height = 128;
if ((eap->name) && (eap->exe))
e_app_fields_save(eap);
@ -205,9 +214,11 @@ _e_eap_edit_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *data
if (data->iclass) eap->icon_class = evas_stringshare_add(data->iclass);
/* FIXME: hardcoded until the eap editor provides fields to change it */
eap->width = 128;
eap->height = 128;
if (data->width) eap->width = data->width;
else eap->width = 128;
if (data->height) eap->height = data->height;
else eap->height = 128;
if ((eap->name) && (eap->exe))
e_app_fields_save(eap);
return 1;

View File

@ -556,6 +556,26 @@ _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi)
if (bname) a->exe = evas_stringshare_add(bname);
if (bd->client.netwm.startup_id > 0)
a->startup_notify = 1;
if (bd->client.netwm.icons)
{
/* FIXME: Find the icon with the best size */
const char *tmp;
tmp = getenv("TMPDIR");
if (!tmp) tmp = getenv("TMP");
if (!tmp) tmp = "/tmp";
snprintf(path, sizeof(path), "%s/%s-%.6f.jpg", tmp, bname, ecore_time_get());
if (e_util_icon_save(&(bd->client.netwm.icons[0]), path))
{
a->image = evas_stringshare_add(path);
a->width = bd->client.netwm.icons[0].width;
a->height = bd->client.netwm.icons[0].height;
}
else
{
fprintf(stderr, "Could not save file from ARGB: %s\n", path);
}
}
bd->app = a;
e_object_ref(E_OBJECT(bd->app));
}

View File

@ -564,7 +564,7 @@ e_util_filename_escape(const char *filename)
}
EAPI int
e_util_save_icon(Ecore_X_Icon *icon, const char *filename)
e_util_icon_save(Ecore_X_Icon *icon, const char *filename)
{
Ecore_Evas *ee;
Evas *evas;
@ -587,6 +587,7 @@ e_util_save_icon(Ecore_X_Icon *icon, const char *filename)
evas_object_resize(im, icon->width, icon->height);
evas_object_image_size_set(im, icon->width, icon->height);
evas_object_image_data_copy_set(im, icon->data);
evas_object_image_alpha_set(im, 1);
evas_object_show(im);
ret = evas_object_image_save(im, filename, NULL, NULL);
evas_object_del(im);

View File

@ -40,7 +40,7 @@ EAPI E_Border *e_util_desk_border_below(E_Border *bd);
EAPI int e_util_edje_collection_exists(const char *file, const char *coll);
EAPI void e_util_dialog_internal(const char *title, const char *txt);
EAPI const char *e_util_filename_escape(const char *filename);
EAPI int e_util_save_icon(Ecore_X_Icon *icon, const char *filename);
EAPI int e_util_icon_save(Ecore_X_Icon *icon, const char *filename);
#endif
#endif