*fix* removed warnings
*fix* removed unneeded code (backwards compatibility to tint2-0.6 and unneccesary XSetWindowsBackground) *fix* better heuristicMask algorithm git-svn-id: http://tint2.googlecode.com/svn/trunk@363 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
fc1ebc04b6
commit
a22041ce09
4 changed files with 20 additions and 97 deletions
82
src/config.c
82
src/config.c
|
@ -58,8 +58,6 @@ char *snapshot_path = 0;
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// backward compatibility
|
// backward compatibility
|
||||||
static int old_task_icon_size;
|
static int old_task_icon_size;
|
||||||
static int bg_task;
|
|
||||||
static int bg_task_active;
|
|
||||||
// detect if it's an old config file
|
// detect if it's an old config file
|
||||||
// ==1
|
// ==1
|
||||||
static int old_config_file;
|
static int old_config_file;
|
||||||
|
@ -600,86 +598,6 @@ void add_entry (char *key, char *value)
|
||||||
else if (strcmp(key, "autohide_height") == 0)
|
else if (strcmp(key, "autohide_height") == 0)
|
||||||
panel_autohide_height = atoi(value);
|
panel_autohide_height = atoi(value);
|
||||||
|
|
||||||
|
|
||||||
// QUESTION: Do we still need backwards compatibility???
|
|
||||||
/* Read tint-0.6 config for backward compatibility */
|
|
||||||
else if (strcmp (key, "panel_mode") == 0) {
|
|
||||||
if (strcmp (value, "single_desktop") == 0) panel_mode = SINGLE_DESKTOP;
|
|
||||||
else panel_mode = MULTI_DESKTOP;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "panel_rounded") == 0) {
|
|
||||||
Background bg;
|
|
||||||
bg.border.rounded = atoi(value);
|
|
||||||
g_array_append_val(backgrounds, bg);
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "panel_border_width") == 0) {
|
|
||||||
g_array_index(backgrounds, Background, backgrounds->len-1).border.width = atoi(value);
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "panel_background_color") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, backgrounds->len-1);
|
|
||||||
extract_values(value, &value1, &value2, &value3);
|
|
||||||
get_color (value1, bg->back.color);
|
|
||||||
if (value2) bg->back.alpha = (atoi (value2) / 100.0);
|
|
||||||
else bg->back.alpha = 0.5;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "panel_border_color") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, backgrounds->len-1);
|
|
||||||
extract_values(value, &value1, &value2, &value3);
|
|
||||||
get_color (value1, bg->border.color);
|
|
||||||
if (value2) bg->border.alpha = (atoi (value2) / 100.0);
|
|
||||||
else bg->border.alpha = 0.5;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_text_centered") == 0)
|
|
||||||
panel_config.g_task.centered = atoi (value);
|
|
||||||
else if (strcmp (key, "task_margin") == 0) {
|
|
||||||
panel_config.g_taskbar.area.paddingxlr = 0;
|
|
||||||
panel_config.g_taskbar.area.paddingx = atoi (value);
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_icon_size") == 0)
|
|
||||||
old_task_icon_size = atoi (value);
|
|
||||||
else if (strcmp (key, "task_rounded") == 0) {
|
|
||||||
Background bg;
|
|
||||||
bg.border.rounded = atoi(value);
|
|
||||||
g_array_append_val(backgrounds, bg);
|
|
||||||
g_array_append_val(backgrounds, bg);
|
|
||||||
bg_task = backgrounds->len-2;
|
|
||||||
bg_task_active = backgrounds->len-1;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_background_color") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, bg_task);
|
|
||||||
extract_values(value, &value1, &value2, &value3);
|
|
||||||
get_color (value1, bg->back.color);
|
|
||||||
if (value2) bg->back.alpha = (atoi (value2) / 100.0);
|
|
||||||
else bg->back.alpha = 0.5;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_active_background_color") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, bg_task_active);
|
|
||||||
extract_values(value, &value1, &value2, &value3);
|
|
||||||
get_color (value1, bg->back.color);
|
|
||||||
if (value2) bg->back.alpha = (atoi (value2) / 100.0);
|
|
||||||
else bg->back.alpha = 0.5;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_border_width") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, bg_task);
|
|
||||||
bg->border.width = atoi (value);
|
|
||||||
bg = &g_array_index(backgrounds, Background, bg_task_active);
|
|
||||||
bg->border.width = atoi (value);
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_border_color") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, bg_task);
|
|
||||||
extract_values(value, &value1, &value2, &value3);
|
|
||||||
get_color (value1, bg->border.color);
|
|
||||||
if (value2) bg->border.alpha = (atoi (value2) / 100.0);
|
|
||||||
else bg->border.alpha = 0.5;
|
|
||||||
}
|
|
||||||
else if (strcmp (key, "task_active_border_color") == 0) {
|
|
||||||
Background* bg = &g_array_index(backgrounds, Background, bg_task_active);
|
|
||||||
extract_values(value, &value1, &value2, &value3);
|
|
||||||
get_color (value1, bg->border.color);
|
|
||||||
if (value2) bg->border.alpha = (atoi (value2) / 100.0);
|
|
||||||
else bg->border.alpha = 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
else
|
||||||
fprintf(stderr, "tint2 : invalid option \"%s\", correct your config file\n", key);
|
fprintf(stderr, "tint2 : invalid option \"%s\", correct your config file\n", key);
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,7 @@ void resize_systray(void *obj)
|
||||||
TrayWindow *traywin;
|
TrayWindow *traywin;
|
||||||
GSList *l;
|
GSList *l;
|
||||||
int count, icon_size;
|
int count, icon_size;
|
||||||
int icons_per_column, icons_per_row, marging;
|
int icons_per_column=1, icons_per_row=1, marging=0;
|
||||||
|
|
||||||
if (panel_horizontal)
|
if (panel_horizontal)
|
||||||
icon_size = sysbar->area.height;
|
icon_size = sysbar->area.height;
|
||||||
|
|
|
@ -677,13 +677,6 @@ int main (int argc, char *argv[])
|
||||||
if (panel_refresh) {
|
if (panel_refresh) {
|
||||||
panel_refresh = 0;
|
panel_refresh = 0;
|
||||||
|
|
||||||
// QUESTION: do we need this first refresh_systray, because we check refresh_systray once again later...
|
|
||||||
// ANSWER: yes, panel->temp_pmap is freeded in the loop.
|
|
||||||
// we change background to None to avoid tray icon using freeded pixmap.
|
|
||||||
if (refresh_systray) {
|
|
||||||
panel = (Panel*)systray.area.panel;
|
|
||||||
XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None);
|
|
||||||
}
|
|
||||||
for (i=0 ; i < nb_panel ; i++) {
|
for (i=0 ; i < nb_panel ; i++) {
|
||||||
panel = &panel1[i];
|
panel = &panel1[i];
|
||||||
|
|
||||||
|
@ -799,7 +792,7 @@ int main (int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ClientMessage:
|
case ClientMessage:
|
||||||
ev = &e;
|
ev = &e.xclient;
|
||||||
if (ev->data.l[1] == server.atom._NET_WM_CM_S0) {
|
if (ev->data.l[1] == server.atom._NET_WM_CM_S0) {
|
||||||
if (ev->data.l[2] == None)
|
if (ev->data.l[2] == None)
|
||||||
// TODO: Stop real_transparency
|
// TODO: Stop real_transparency
|
||||||
|
|
|
@ -241,15 +241,27 @@ void adjust_asb(DATA32 *data, int w, int h, int alpha, float satur, float bright
|
||||||
|
|
||||||
void createHeuristicMask(DATA32* data, int w, int h)
|
void createHeuristicMask(DATA32* data, int w, int h)
|
||||||
{
|
{
|
||||||
|
// first we need to find the mask color, therefore we check all 4 edge pixel and take the color which
|
||||||
|
// appears most often (we only need to check three edges, the 4th is implicitly clear)
|
||||||
|
unsigned int topLeft = data[0], topRight = data[w-1], bottomLeft = data[w*h-w], bottomRight = data[w*h-1];
|
||||||
|
int max = (topLeft == topRight) + (topLeft == bottomLeft) + (topLeft == bottomRight);
|
||||||
|
int maskPos = 0;
|
||||||
|
if ( max < (topRight == topLeft) + (topRight == bottomLeft) + (topRight == bottomRight) ) {
|
||||||
|
max = (topRight == topLeft) + (topRight == bottomLeft) + (topRight == bottomRight);
|
||||||
|
maskPos = w-1;
|
||||||
|
}
|
||||||
|
if ( max < (bottomLeft == topRight) + (bottomLeft == topLeft) + (bottomLeft == bottomRight) )
|
||||||
|
maskPos = w*h-w;
|
||||||
|
|
||||||
|
// now mask out every pixel which has the same color as the edge pixels
|
||||||
unsigned char* udata = (unsigned char*)data;
|
unsigned char* udata = (unsigned char*)data;
|
||||||
int b = udata[0];
|
unsigned char b = udata[4*maskPos];
|
||||||
int g = udata[1];
|
unsigned char g = udata[4*maskPos+1];
|
||||||
int r = udata[2];
|
unsigned char r = udata[4*maskPos+1];
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<h*w; ++i) {
|
for (i=0; i<h*w; ++i) {
|
||||||
if ( abs(b-*udata)<5 && abs(g-*(udata+1))<5 && abs(r-*(udata+2))<5 ) {
|
if ( b-udata[0] == 0 && g-udata[1] == 0 && r-udata[2] == 0 )
|
||||||
*(udata+3) = 0;
|
udata[3] = 0;
|
||||||
}
|
|
||||||
udata += 4;
|
udata += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue