No longer use convert (ImageMagick) to create scaled icons in menu generation,
but scale internally according to configuration setting. SVN revision: 19857
This commit is contained in:
parent
3c8d1c0c7e
commit
5014886a1f
|
@ -310,31 +310,14 @@ sub ProcessOldStyle {
|
|||
}
|
||||
}
|
||||
|
||||
# Create scaled 18x18 pixel icon
|
||||
sub ScaleIcon {
|
||||
local $f = shift;
|
||||
local $g = $f;
|
||||
|
||||
return $f unless $DoConvert;
|
||||
|
||||
$g =~ s/^.*\///;
|
||||
$g =~ s/\..*$//;
|
||||
$g = "$EdirIcons/$g.png";
|
||||
system("convert -geometry 16x16 $f $g");
|
||||
|
||||
return $g;
|
||||
}
|
||||
|
||||
# Find that $#@! thing
|
||||
sub FindIcon {
|
||||
local $f = shift;
|
||||
local $x = "x";
|
||||
|
||||
return $f if (! $f);
|
||||
|
||||
if (-f $f) {
|
||||
$i = ScaleIcon($f);
|
||||
return $i;
|
||||
}
|
||||
return $f if (-f $f);
|
||||
|
||||
foreach $d (split(':', $IconDirs)) {
|
||||
$i = "$d/$f";
|
||||
|
@ -343,31 +326,22 @@ sub FindIcon {
|
|||
$i = "$i.png";
|
||||
next unless -f $i;
|
||||
}
|
||||
$i = ScaleIcon($i);
|
||||
return $i;
|
||||
}
|
||||
|
||||
foreach $d (split(':', $IconDirs2)) {
|
||||
next unless (-d "$d");
|
||||
foreach $t (split(':', $Themes)) {
|
||||
foreach $u (split(':', "apps:filesystems:actions:devices")) {
|
||||
$i = "$d/$t/16x16/$u/$f";
|
||||
$i = "$i.png" unless ($f =~ /\.png$/);
|
||||
print "Testing $i\n" if $dbg >= 2;
|
||||
next unless -f $i;
|
||||
return $i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach $d (split(':', $IconDirs2)) {
|
||||
foreach $t (split(':', $Themes)) {
|
||||
foreach $u (split(':', "apps:filesystems:actions:devices")) {
|
||||
$i = "$d/$t/48x48/$u/$f";
|
||||
$i = "$i.png" unless ($f =~ /\.png$/);
|
||||
print "Testing $i\n" if $dbg >= 2;
|
||||
next unless -f $i;
|
||||
$i = ScaleIcon($i);
|
||||
return $i;
|
||||
next unless (-d "$d/$t");
|
||||
foreach $s (split(':', "16:24:32:48")) {
|
||||
next unless (-d "$d/$t/$s$x$s");
|
||||
foreach $u (split(':', "apps:filesystems:actions:devices")) {
|
||||
next unless (-d "$d/$t/$s$x$s/$u");
|
||||
$i = "$d/$t/$s$x$s/$u/$f";
|
||||
$i = "$i.png" unless ($f =~ /\.png$/);
|
||||
print "Testing $i\n" if $dbg >= 2;
|
||||
return $i if (-f $i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -391,7 +365,6 @@ sub MakeEppsMenu {
|
|||
foreach $e (@el) {
|
||||
$e =~ s/\.epplet$//;
|
||||
$i = "$EdirRoot/epplet_icons/$e.icon";
|
||||
$i = ScaleIcon("$i") if -f "$i";
|
||||
print FD "\"$e\" \"$i\" exec \"$d/$e.epplet\"\n";
|
||||
}
|
||||
}
|
||||
|
|
1
src/E.h
1
src/E.h
|
@ -369,6 +369,7 @@ typedef struct
|
|||
char onscreen;
|
||||
char warp;
|
||||
char show_icons;
|
||||
int icon_size;
|
||||
int opacity;
|
||||
struct
|
||||
{
|
||||
|
|
|
@ -291,6 +291,8 @@ FillFlatFileMenu(Menu * m, const char *name, const char *file)
|
|||
return;
|
||||
}
|
||||
|
||||
MenuSetIconSize(m, 0); /* Scale to default */
|
||||
|
||||
count = 0;
|
||||
while (fgets(s, 4096, f))
|
||||
{
|
||||
|
|
41
src/menus.c
41
src/menus.c
|
@ -94,6 +94,7 @@ struct _menu
|
|||
MenuItem **items;
|
||||
Window win;
|
||||
PmapMask pmm;
|
||||
int icon_size;
|
||||
char internal; /* Don't destroy when reloading */
|
||||
char dynamic; /* May be emptied on close */
|
||||
char shown;
|
||||
|
@ -447,6 +448,14 @@ MenuSetTitle(Menu * m, const char *title)
|
|||
_EFDUP(m->title, title);
|
||||
}
|
||||
|
||||
void
|
||||
MenuSetIconSize(Menu * m, int size)
|
||||
{
|
||||
if (size > 48)
|
||||
size = 48;
|
||||
m->icon_size = size;
|
||||
}
|
||||
|
||||
void
|
||||
MenuSetData(Menu * m, char *data)
|
||||
{
|
||||
|
@ -512,6 +521,7 @@ MenuCreate(const char *name, const char *title, Menu * parent, MenuStyle * ms)
|
|||
MenuSetName(m, name);
|
||||
MenuSetTitle(m, title);
|
||||
MenuSetStyle(m, ms);
|
||||
m->icon_size = -1; /* Use image size */
|
||||
|
||||
return m;
|
||||
}
|
||||
|
@ -667,19 +677,27 @@ MenuRealize(Menu * m)
|
|||
im = ImageclassGetImage(m->items[i]->icon_iclass, 0, 0, 0);
|
||||
if (im)
|
||||
{
|
||||
imlib_context_set_image(im);
|
||||
w = h = 0;
|
||||
if (m->icon_size > 0)
|
||||
w = h = m->icon_size;
|
||||
else if (m->icon_size == 0)
|
||||
w = h = Conf.menus.icon_size;
|
||||
if (w <= 0 || h <= 0)
|
||||
{
|
||||
imlib_context_set_image(im);
|
||||
w = imlib_image_get_width();
|
||||
h = imlib_image_get_height();
|
||||
imlib_free_image();
|
||||
}
|
||||
m->items[i]->icon_w = w;
|
||||
m->items[i]->icon_h = h;
|
||||
m->items[i]->icon_win =
|
||||
ECreateWindow(m->items[i]->win, 0, 0,
|
||||
imlib_image_get_width(),
|
||||
imlib_image_get_height(), 0);
|
||||
ECreateWindow(m->items[i]->win, 0, 0, w, h, 0);
|
||||
EMapWindow(m->items[i]->icon_win);
|
||||
m->items[i]->icon_w = imlib_image_get_width();
|
||||
m->items[i]->icon_h = imlib_image_get_height();
|
||||
if (imlib_image_get_height() > maxh)
|
||||
maxh = imlib_image_get_height();
|
||||
if (imlib_image_get_width() > maxx2)
|
||||
maxx2 = imlib_image_get_width();
|
||||
imlib_free_image();
|
||||
if (h > maxh)
|
||||
maxh = h;
|
||||
if (w > maxx2)
|
||||
maxx2 = w;
|
||||
}
|
||||
else
|
||||
m->items[i]->icon_iclass = NULL;
|
||||
|
@ -2096,6 +2114,7 @@ static const CfgItem MenusCfgItems[] = {
|
|||
CFG_ITEM_BOOL(Conf.menus, onscreen, 1),
|
||||
CFG_ITEM_BOOL(Conf.menus, warp, 1),
|
||||
CFG_ITEM_BOOL(Conf.menus, show_icons, 1),
|
||||
CFG_ITEM_INT(Conf.menus, icon_size, 16),
|
||||
CFG_ITEM_INT(Conf.menus, opacity, 220),
|
||||
CFG_ITEM_INT(Conf.menus, key.left, XK_Left),
|
||||
CFG_ITEM_INT(Conf.menus, key.right, XK_Right),
|
||||
|
|
|
@ -49,6 +49,7 @@ void MenuSetName(Menu * m, const char *name);
|
|||
void MenuSetAlias(Menu * m, const char *alias);
|
||||
void MenuSetStyle(Menu * m, MenuStyle * ms);
|
||||
void MenuSetTitle(Menu * m, const char *title);
|
||||
void MenuSetIconSize(Menu * m, int size);
|
||||
void MenuSetData(Menu * m, char *data);
|
||||
void MenuSetLoader(Menu * m, MenuLoader * loader);
|
||||
void MenuSetTimestamp(Menu * m, time_t t);
|
||||
|
|
Loading…
Reference in New Issue