// --------------------------------------------------
// backward compatibility
static int old_task_icon_size;
-static int bg_task;
-static int bg_task_active;
// detect if it's an old config file
// ==1
static int old_config_file;
else if (strcmp(key, "autohide_height") == 0)
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
fprintf(stderr, "tint2 : invalid option \"%s\", correct your config file\n", key);
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;
- int b = udata[0];
- int g = udata[1];
- int r = udata[2];
+ unsigned char b = udata[4*maskPos];
+ unsigned char g = udata[4*maskPos+1];
+ unsigned char r = udata[4*maskPos+1];
int i;
for (i=0; i<h*w; ++i) {
- if ( abs(b-*udata)<5 && abs(g-*(udata+1))<5 && abs(r-*(udata+2))<5 ) {
- *(udata+3) = 0;
- }
+ if ( b-udata[0] == 0 && g-udata[1] == 0 && r-udata[2] == 0 )
+ udata[3] = 0;
udata += 4;
}
}