- if (tsk->icon_data) {
- tsk->icon_data_active = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
- memcpy (tsk->icon_data_active, tsk->icon_data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
+ // transform icons
+ imlib_context_set_image(img);
+ imlib_image_set_has_alpha(1);
+ int w, h;
+ w = imlib_image_get_width();
+ h = imlib_image_get_height();
+ tsk->icon = imlib_create_cropped_scaled_image(0, 0, w, h, panel->g_task.icon_size1, panel->g_task.icon_size1);
+ imlib_free_image();
+
+ imlib_context_set_image(tsk->icon);
+ tsk->icon_width = imlib_image_get_width();
+ tsk->icon_height = imlib_image_get_height();
+ tsk->icon_active = imlib_clone_image();
+
+ DATA32 *data32;
+ if (panel->g_task.alpha != 100 || panel->g_task.saturation != 0 || panel->g_task.brightness != 0) {
+ data32 = imlib_image_get_data();
+ adjust_asb(data32, tsk->icon_width, tsk->icon_height, panel->g_task.alpha, (float)panel->g_task.saturation/100, (float)panel->g_task.brightness/100);
+ imlib_image_put_back_data(data32);
+ }