value "icon" string: "THUMB";
}
group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-ttf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-type1";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-afm";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-snf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-otf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/vnd.font-fontforge-sfd";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-linux-psf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-ttx";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-speedo";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-pcf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-bdf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-cisco-vpn-settings";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
value "mime" string: "video/3gpp";
value "icon" string: "THUMB";
}
value "icon" string: "THUMB";
}
group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-ttf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-type1";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-afm";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-snf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-otf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/vnd.font-fontforge-sfd";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-linux-psf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-ttx";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-speedo";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-pcf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-font-bdf";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
+ value "mime" string: "application/x-cisco-vpn-settings";
+ value "icon" string: "THUMB";
+ }
+ group "E_Config_Mime_Icon" struct {
value "mime" string: "video/3gpp";
value "icon" string: "THUMB";
}
while (mtime_thumb <= mtime_orig)
{
unsigned int *data1;
+ Eina_Bool sortkey;
+ Evas_Object *im2, *bg;
+
+ im = NULL;
+ im2 = NULL;
+ bg = NULL;
ecore_file_mkdir(dbuf);
alpha = 1;
ext = strrchr(eth->file, '.');
+ sortkey = EINA_FALSE;
+
if ((ext) && (eth->key) &&
((!strcasecmp(ext, ".edj")) ||
(!strcasecmp(ext, ".eap"))))
evas_object_resize(edje, ww * 4, hh * 4);
evas_object_show(edje);
}
+ evas_object_move(im, 0, 0);
+ evas_object_resize(im, ww, hh);
+ sortkey = EINA_TRUE;
+ }
+ else if ((ext) &&
+ ((!strcasecmp(ext, ".ttf")) ||
+ (!strcasecmp(ext, ".pcf")) ||
+ (!strcasecmp(ext, ".bdf")) ||
+ (!strcasecmp(ext, ".ttx")) ||
+ (!strcasecmp(ext, ".pfa")) ||
+ (!strcasecmp(ext, ".pfb")) ||
+ (!strcasecmp(ext, ".afm")) ||
+ (!strcasecmp(ext, ".sfd")) ||
+ (!strcasecmp(ext, ".snf")) ||
+ (!strcasecmp(ext, ".otf")) ||
+ (!strcasecmp(ext, ".psf")) ||
+ (!strcasecmp(ext, ".ttc")) ||
+ (!strcasecmp(ext, ".ttx")) ||
+ (!strcasecmp(ext, ".gsf")) ||
+ (!strcasecmp(ext, ".spd"))
+ ))
+ {
+ Evas_Coord tx = 0, ty = 0, tw = 0, th = 0;
+ ww = eth->w;
+ hh = eth->h;
+ alpha = 0;
+
+ bg = evas_object_rectangle_add(evas);
+ evas_object_color_set(bg, 96, 96, 96, 255);
+ evas_object_move(bg, 0, 0);
+ evas_object_resize(bg, ww, hh);
+ evas_object_show(bg);
+
+ im = evas_object_text_add(evas);
+ evas_object_text_font_set(im, eth->file, hh / 4);
+ evas_object_color_set(im, 192, 192, 192, 255);
+ evas_object_text_ellipsis_set(im, 0.0);
+ evas_object_text_text_set(im, "ABCabc");
+ evas_object_geometry_get(im, NULL, NULL, &tw, &th);
+ if (tw > ww) tw = ww;
+ tx = 0 + ((ww - tw) / 2);
+ ty = 0 + (((hh / 2) - th) / 2);
+ evas_object_move(im, tx, ty);
+ evas_object_resize(im, tw, th);
+ evas_object_show(im);
+
+ im2 = evas_object_text_add(evas);
+ evas_object_text_font_set(im2, eth->file, hh / 4);
+ evas_object_color_set(im2, 255, 255, 255, 255);
+ evas_object_text_ellipsis_set(im2, 0.0);
+ evas_object_text_text_set(im2, "123!@?");
+ evas_object_geometry_get(im2, NULL, NULL, &tw, &th);
+ if (tw > ww) tw = ww;
+ tx = 0 + ((ww - tw) / 2);
+ ty = (hh / 2) + (((hh / 2) - th) / 2);
+ evas_object_move(im2, tx, ty);
+ evas_object_resize(im2, tw, th);
+ evas_object_show(im2);
}
else if (evas_object_image_extension_can_load_get(ext))
{
}
evas_object_image_fill_set(im, 0, 0, ww, hh);
}
+ evas_object_move(im, 0, 0);
+ evas_object_resize(im, ww, hh);
+ sortkey = EINA_TRUE;
}
else
goto end;
+
ecore_evas_alpha_set(ee, alpha);
- evas_object_move(im, 0, 0);
- evas_object_resize(im, ww, hh);
ecore_evas_resize(ee, ww, hh);
evas_object_show(im);
if (ww <= 0) goto end;
eet_data_image_write(ef, "/thumbnail/data",
(void *)data, ww, hh, alpha,
0, 91, 1);
- ww = 4; hh = 4;
- evas_object_image_fill_set(im, 0, 0, ww, hh);
- evas_object_resize(im, ww, hh);
- ecore_evas_resize(ee, ww, hh);
- data = ecore_evas_buffer_pixels_get(ee);
- if (!data) goto end;
-
- data1 = malloc(ww * hh * sizeof(unsigned int));
- memcpy(data1, data, ww * hh * sizeof(unsigned int));
- ww = 2; hh = 2;
- evas_object_image_fill_set(im, 0, 0, ww, hh);
- evas_object_resize(im, ww, hh);
- ecore_evas_resize(ee, ww, hh);
- data = ecore_evas_buffer_pixels_get(ee);
- if (data)
+ if (sortkey)
{
- unsigned int *data2;
+ ww = 4; hh = 4;
+ evas_object_image_fill_set(im, 0, 0, ww, hh);
+ evas_object_resize(im, ww, hh);
+ ecore_evas_resize(ee, ww, hh);
+ data = ecore_evas_buffer_pixels_get(ee);
+ if (!data) goto end;
- data2 = malloc(ww * hh * sizeof(unsigned int));
- memcpy(data2, data, ww * hh * sizeof(unsigned int));
- ww = 1; hh = 1;
+ data1 = malloc(ww * hh * sizeof(unsigned int));
+ memcpy(data1, data, ww * hh * sizeof(unsigned int));
+ ww = 2; hh = 2;
evas_object_image_fill_set(im, 0, 0, ww, hh);
evas_object_resize(im, ww, hh);
ecore_evas_resize(ee, ww, hh);
data = ecore_evas_buffer_pixels_get(ee);
if (data)
{
- unsigned int *data3;
- unsigned char id2[(21 * 4) + 1];
- int n, i;
- int hi, si, vi;
- float h, s, v;
- const int pat2[4] =
- {
- 0, 3, 1, 2
- };
- const int pat1[16] =
- {
- 5, 10, 6, 9,
- 0, 15, 3, 12,
- 1, 14, 7, 8,
- 4, 11, 2, 13
- };
-
- /* ww = hh = 1 here */
- data3 = malloc(sizeof(unsigned int));
- memcpy(data3, data, sizeof(unsigned int));
- // sort_id
- n = 0;
+ unsigned int *data2;
+
+ data2 = malloc(ww * hh * sizeof(unsigned int));
+ memcpy(data2, data, ww * hh * sizeof(unsigned int));
+ ww = 1; hh = 1;
+ evas_object_image_fill_set(im, 0, 0, ww, hh);
+ evas_object_resize(im, ww, hh);
+ ecore_evas_resize(ee, ww, hh);
+ data = ecore_evas_buffer_pixels_get(ee);
+ if (data)
+ {
+ unsigned int *data3;
+ unsigned char id2[(21 * 4) + 1];
+ int n, i;
+ int hi, si, vi;
+ float h, s, v;
+ const int pat2[4] =
+ {
+ 0, 3, 1, 2
+ };
+ const int pat1[16] =
+ {
+ 5, 10, 6, 9,
+ 0, 15, 3, 12,
+ 1, 14, 7, 8,
+ 4, 11, 2, 13
+ };
+
+ /* ww = hh = 1 here */
+ data3 = malloc(sizeof(unsigned int));
+ memcpy(data3, data, sizeof(unsigned int));
+ // sort_id
+ n = 0;
#define A(v) (((v) >> 24) & 0xff)
#define R(v) (((v) >> 16) & 0xff)
#define G(v) (((v) >> 8) & 0xff)
#define SAVEX(x) \
id2[n++] = 'a' + x;
#if 0
- HSV(data3[0]);
- SAVEHSV(hi, si, vi);
- for (i = 0; i < 4; i++)
- {
- HSV(data2[pat2[i]]);
+ HSV(data3[0]);
SAVEHSV(hi, si, vi);
- }
- for (i = 0; i < 16; i++)
- {
- HSV(data1[pat1[i]]);
- SAVEHSV(hi, si, vi);
- }
+ for (i = 0; i < 4; i++)
+ {
+ HSV(data2[pat2[i]]);
+ SAVEHSV(hi, si, vi);
+ }
+ for (i = 0; i < 16; i++)
+ {
+ HSV(data1[pat1[i]]);
+ SAVEHSV(hi, si, vi);
+ }
#else
- HSV(data3[0]);
- SAVEX(hi);
- for (i = 0; i < 4; i++)
- {
- HSV(data2[pat2[i]]);
- SAVEX(hi);
- }
- for (i = 0; i < 16; i++)
- {
- HSV(data1[pat1[i]]);
+ HSV(data3[0]);
SAVEX(hi);
- }
- HSV(data3[0]);
- SAVEX(vi);
- for (i = 0; i < 4; i++)
- {
- HSV(data2[pat2[i]]);
+ for (i = 0; i < 4; i++)
+ {
+ HSV(data2[pat2[i]]);
+ SAVEX(hi);
+ }
+ for (i = 0; i < 16; i++)
+ {
+ HSV(data1[pat1[i]]);
+ SAVEX(hi);
+ }
+ HSV(data3[0]);
SAVEX(vi);
- }
- for (i = 0; i < 16; i++)
- {
- HSV(data1[pat1[i]]);
- SAVEX(vi);
- }
- HSV(data3[0]);
- SAVEX(si);
- for (i = 0; i < 4; i++)
- {
- HSV(data2[pat2[i]]);
+ for (i = 0; i < 4; i++)
+ {
+ HSV(data2[pat2[i]]);
+ SAVEX(vi);
+ }
+ for (i = 0; i < 16; i++)
+ {
+ HSV(data1[pat1[i]]);
+ SAVEX(vi);
+ }
+ HSV(data3[0]);
SAVEX(si);
- }
- for (i = 0; i < 16; i++)
- {
- HSV(data1[pat1[i]]);
- SAVEX(si);
- }
+ for (i = 0; i < 4; i++)
+ {
+ HSV(data2[pat2[i]]);
+ SAVEX(si);
+ }
+ for (i = 0; i < 16; i++)
+ {
+ HSV(data1[pat1[i]]);
+ SAVEX(si);
+ }
#endif
- id2[n++] = 0;
- eet_write(ef, "/thumbnail/sort_id", id2, n, 1);
- free(data3);
+ id2[n++] = 0;
+ eet_write(ef, "/thumbnail/sort_id", id2, n, 1);
+ free(data3);
+ }
+ free(data2);
}
- free(data2);
+ free(data1);
}
- free(data1);
end:
if (ef) eet_close(ef);
/* will free all */
if (edje) evas_object_del(edje);
if (ee_im) ecore_evas_free(ee_im);
- else if (im)
- evas_object_del(im);
+ else if (im) evas_object_del(im);
+ if (im2) evas_object_del(im2);
+ if (bg) evas_object_del(bg);
ecore_evas_free(ee);
eet_clearcache();
break;
Eina_Bool mime_icon : 1;
Eina_Bool is_dir : 1;
Eina_Bool is_txt : 1;
+ Eina_Bool is_font : 1;
Eina_Bool prev_is_fm : 1;
Eina_Bool prev_is_txt : 1;
+ Eina_Bool prev_is_font : 1;
Eina_Bool prev_is_video : 1;
};
static void _e_wid_del_hook(Evas_Object *obj);
static void _e_wid_fprev_preview_reset(E_Widget_Data *wd);
static void _e_wid_fprev_preview_txt(E_Widget_Data *wd);
+static void _e_wid_fprev_preview_font(E_Widget_Data *wd);
static void _e_wid_fprev_preview_fm(E_Widget_Data *wd);
static void
_e_wid_fprev_img_update(E_Widget_Data *wd, const char *path, const char *key)
{
if (!path) return;
- if (wd->is_dir || wd->is_txt) return;
+ if (wd->is_dir || wd->is_txt || wd->is_font) return;
evas_object_smart_callback_del_full(wd->o_preview_preview, "preview_update", _e_wid_fprev_preview_update, wd);
if (eina_str_has_extension(path, ".gif"))
{
CLRWID(o_preview_time_entry);
CLRWID(o_preview_preview);
CLRWID(o_preview_scrollframe);
- wd->is_dir = wd->is_txt = wd->prev_is_fm = wd->prev_is_video = EINA_FALSE;
+ wd->is_dir = wd->is_txt = wd->is_font = wd->prev_is_fm = wd->prev_is_video = EINA_FALSE;
wd->vid_pct = 0;
if (wd->preview_text_file_thread) ecore_thread_cancel(wd->preview_text_file_thread);
wd->preview_text_file_thread = NULL;
}
static void
-_e_wid_fprev_preview_file_widgets(E_Widget_Data *wd, Eina_Bool dir, Eina_Bool txt)
+_e_wid_fprev_preview_file_widgets(E_Widget_Data *wd, Eina_Bool dir, Eina_Bool txt, Eina_Bool font)
{
Evas *evas = evas_object_evas_get(wd->obj);
Evas_Object *o;
wd->o_preview_properties_table = o;
wd->is_dir = dir;
wd->is_txt = txt;
+ wd->is_font = font;
if (!dir)
{
wd->is_txt = !strncmp(wd->mime, "text/", 5);
if (!wd->is_txt)
wd->is_txt = !strcmp(wd->mime, "application/x-shellscript");
+ if (!wd->is_txt)
+ {
+ wd->is_font = !strcmp(wd->mime, "application/x-font");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-ttf");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-type1");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-afm");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-snf");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-otf");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/vnd.font-fontforge-sfd");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-linux-psf");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-ttx");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-speedo");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-pcf");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-font-bdf");
+ if (!wd->is_font)
+ wd->is_font = !strcmp(wd->mime, "application/x-cisco-vpn-settings");
+ }
}
- _e_wid_fprev_preview_file_widgets(wd, wd->is_dir, wd->is_txt);
+ _e_wid_fprev_preview_file_widgets(wd, wd->is_dir, wd->is_txt, wd->is_font);
_e_wid_fprev_preview_reset(wd);
_e_wid_fprev_preview_fm(wd);
_e_wid_fprev_preview_txt(wd);
+ _e_wid_fprev_preview_font(wd);
_e_wid_fprev_img_update(wd, wd->path, NULL);
e_widget_size_min_get(wd->o_preview_list, &mw, &mh);
wd->o_preview_scrollframe = wd->o_preview_preview = NULL;
if (wd->preview_text_file_thread) ecore_thread_cancel(wd->preview_text_file_thread);
wd->preview_text_file_thread = NULL;
- if (wd->is_dir || wd->is_txt) return;
+ if (wd->is_dir || wd->is_txt || wd->is_font) return;
o = e_widget_preview_add(evas_object_evas_get(wd->obj), wd->w, wd->h);
- wd->prev_is_txt = wd->prev_is_fm = EINA_FALSE;
+ wd->prev_is_txt = wd->prev_is_fm = wd->prev_is_font = EINA_FALSE;
wd->o_preview_preview = o;
e_widget_table_object_append(wd->o_preview_preview_table,
wd->o_preview_preview,
_e_wid_fprev_preview_txt_read_notify(void *data, Ecore_Thread *eth __UNUSED__, void *msg)
{
E_Widget_Data *wd = data;
+ char *buf;
//INF("text='%s'", (char*)msg);
- edje_object_part_text_set(wd->o_preview_preview, "e.textblock.message", msg);
+ buf = alloca(strlen(msg) + 4096);
+ strcpy(buf, "<align=left>");
+ strcat(buf, msg);
+ edje_object_part_text_set(wd->o_preview_preview, "e.textblock.message", buf);
free(msg);
}
e_theme_edje_object_set(o, "base/theme/dialog", "e/widgets/dialog/text");
edje_object_signal_emit(o, "e,state,left", "e");
edje_object_message_signal_process(o);
- edje_object_part_text_set(wd->o_preview_preview, "e.textblock.message", "");
wd->o_preview_preview = o;
wd->prev_is_txt = EINA_TRUE;
evas_object_resize(o, wd->w, wd->h);
}
static void
+_e_wid_fprev_preview_font(E_Widget_Data *wd)
+{
+ Evas_Object *o;
+ int mw;
+
+ if (!wd->is_font) return;
+ if (!wd->path) return;
+ if (wd->o_preview_preview && (!wd->prev_is_font))
+ {
+ evas_object_del(wd->o_preview_preview);
+ wd->o_preview_preview = NULL;
+ }
+ if (!wd->o_preview_preview)
+ {
+ Evas *evas;
+ char *buf, *escaped;
+
+ evas = evas_object_evas_get(wd->obj);
+ o = edje_object_add(evas);
+ /* using dialog theme for now because it's simple, common, and doesn't require all
+ * themes to be updated
+ */
+ e_theme_edje_object_set(o, "base/theme/dialog", "e/widgets/dialog/text");
+ edje_object_signal_emit(o, "e,state,left", "e");
+ edje_object_message_signal_process(o);
+ escaped = eina_str_escape(wd->path);
+ if (escaped)
+ {
+ buf = alloca(strlen(escaped) + 4096);
+ snprintf(buf, strlen(wd->path) + 4096,
+ "<font=%s>"
+
+ "<font_size=28>"
+ "28 - ABC abc 0123 @!?#$*{}<br>"
+ "The quick brown fox jumps.<br>"
+
+ "<font_size=20>"
+ "20 - ABC abc 0123 @!?#$*{}<br>"
+ "The quick brown fox jumps.<br>"
+
+ "<font_size=16>"
+ "16 - ABC abc 0123 @!?#$*{}<br>"
+ "The quick brown fox jumps.<br>"
+
+ "<font_size=12>"
+ "12 - ABC abc 0123 @!?#$*{}<br>"
+ "The quick brown fox jumps.<br>"
+
+ "<font_size=10>"
+ "10 - ABC abc 0123 @!?#$*{}<br>"
+ "The quick brown fox jumps.<br>"
+
+ "<font_size=8>"
+ "8 - ABC abc 0123 @!?#$*{}<br>"
+ "The quick brown fox jumps.<br>"
+ , escaped
+ );
+ edje_object_part_text_set(o, "e.textblock.message", buf);
+ free(escaped);
+ }
+ wd->o_preview_preview = o;
+ wd->prev_is_font = EINA_TRUE;
+ evas_object_resize(o, wd->w, wd->h);
+ o = e_widget_scrollframe_simple_add(evas, o);
+ wd->o_preview_scrollframe = o;
+ e_widget_size_min_get(wd->o_preview_list, &mw, NULL);
+ e_widget_size_min_set(o, wd->w, wd->h);
+ evas_object_propagate_events_set(wd->o_preview_preview, 0);
+ e_widget_table_object_append(wd->o_preview_preview_table,
+ o, 0, 0, 2, 1, 1, 1, 1, 1);
+ e_widget_list_object_repack(wd->o_preview_list,
+ wd->o_preview_preview_table,
+ 1, 1, 0.5);
+ e_widget_list_object_repack(wd->o_preview_list,
+ wd->o_preview_properties_table,
+ 1, 1, 0.5);
+ evas_object_show(o);
+ }
+}
+
+static void
_e_wid_fprev_preview_fm(E_Widget_Data *wd)
{
E_Fm2_Config fmc;
if (!obj) return;
wd = e_widget_data_get(obj);
if (!wd) return;
- _e_wid_fprev_preview_file_widgets(wd, 0, 0);
+ _e_wid_fprev_preview_file_widgets(wd, 0, 0, 0);
}