add some HSB config
git-svn-id: http://tint2.googlecode.com/svn/trunk@158 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
fe2111c8fd
commit
dc43c1a563
6 changed files with 63 additions and 30 deletions
|
@ -1,3 +1,6 @@
|
|||
2009-08-28
|
||||
- add some HSB config
|
||||
|
||||
2009-08-09
|
||||
- add mouse action : maximize_restore
|
||||
- fixed issue 125
|
||||
|
|
12
src/config.c
12
src/config.c
|
@ -511,6 +511,18 @@ void add_entry (char *key, char *value)
|
|||
if (value2) panel_config->g_task.font_active.alpha = (atoi (value2) / 100.0);
|
||||
else panel_config->g_task.font_active.alpha = 0.1;
|
||||
}
|
||||
else if (strcmp (key, "task_icon_hsb") == 0) {
|
||||
extract_values(value, &value1, &value2, &value3);
|
||||
panel_config->g_task.hue = atoi(value1);
|
||||
panel_config->g_task.saturation = atoi(value2);
|
||||
panel_config->g_task.brightness = atoi(value3);
|
||||
}
|
||||
else if (strcmp (key, "task_active_icon_hsb") == 0) {
|
||||
extract_values(value, &value1, &value2, &value3);
|
||||
panel_config->g_task.hue_active = atoi(value1);
|
||||
panel_config->g_task.saturation_active = atoi(value2);
|
||||
panel_config->g_task.brightness_active = atoi(value3);
|
||||
}
|
||||
else if (strcmp (key, "task_background_id") == 0) {
|
||||
int id = atoi (value);
|
||||
Area *a = g_slist_nth_data(list_back, id);
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
#include <Imlib2.h>
|
||||
|
||||
#include "window.h"
|
||||
#include "task.h"
|
||||
|
@ -52,6 +51,7 @@ Task *add_task (Window win)
|
|||
// even with task_on_all_desktop and with task_on_all_panel
|
||||
new_tsk.title = 0;
|
||||
new_tsk.icon_data = 0;
|
||||
new_tsk.icon_data_active = 0;
|
||||
get_title(&new_tsk);
|
||||
get_icon(&new_tsk);
|
||||
|
||||
|
@ -74,6 +74,7 @@ Task *add_task (Window win)
|
|||
new_tsk2->desktop = new_tsk.desktop;
|
||||
new_tsk2->title = new_tsk.title;
|
||||
new_tsk2->icon_data = new_tsk.icon_data;
|
||||
new_tsk2->icon_data_active = new_tsk.icon_data_active;
|
||||
new_tsk2->icon_width = new_tsk.icon_width;
|
||||
new_tsk2->icon_height = new_tsk.icon_height;
|
||||
tskbar->area.list = g_slist_append(tskbar->area.list, new_tsk2);
|
||||
|
@ -97,8 +98,10 @@ void remove_task (Task *tsk)
|
|||
//printf("remove_task %s %d\n", tsk->title, tsk->desktop);
|
||||
if (tsk->title)
|
||||
free (tsk->title);
|
||||
if (tsk->icon_data)
|
||||
if (tsk->icon_data) {
|
||||
free (tsk->icon_data);
|
||||
free (tsk->icon_data_active);
|
||||
}
|
||||
|
||||
int i, j;
|
||||
Task *tsk2;
|
||||
|
@ -171,7 +174,8 @@ void get_icon (Task *tsk)
|
|||
|
||||
if (tsk->icon_data) {
|
||||
free (tsk->icon_data);
|
||||
tsk->icon_data = 0;
|
||||
free (tsk->icon_data_active);
|
||||
tsk->icon_data = tsk->icon_data_active = 0;
|
||||
}
|
||||
tsk->area.redraw = 1;
|
||||
|
||||
|
@ -203,44 +207,48 @@ void get_icon (Task *tsk)
|
|||
else {
|
||||
// get Pixmap icon
|
||||
XWMHints *hints = XGetWMHints(server.dsp, tsk->win);
|
||||
if (hints) {
|
||||
if (hints->flags & IconPixmapHint && hints->icon_pixmap != 0) {
|
||||
// get width, height and depth for the pixmap
|
||||
Window root;
|
||||
int icon_x, icon_y;
|
||||
uint border_width, bpp;
|
||||
uint icon_width, icon_height;
|
||||
if (!hints) return;
|
||||
if (hints->flags & IconPixmapHint && hints->icon_pixmap != 0) {
|
||||
// get width, height and depth for the pixmap
|
||||
Window root;
|
||||
int icon_x, icon_y;
|
||||
uint border_width, bpp;
|
||||
uint icon_width, icon_height;
|
||||
|
||||
XGetGeometry(server.dsp, hints->icon_pixmap, &root, &icon_x, &icon_y, &icon_width, &icon_height, &border_width, &bpp);
|
||||
XGetGeometry(server.dsp, hints->icon_pixmap, &root, &icon_x, &icon_y, &icon_width, &icon_height, &border_width, &bpp);
|
||||
|
||||
//printf(" get_pixmap\n");
|
||||
Imlib_Image img;
|
||||
imlib_context_set_drawable(hints->icon_pixmap);
|
||||
img = imlib_create_image_from_drawable(hints->icon_mask, 0, 0, icon_width, icon_height, 0);
|
||||
imlib_context_set_image(img);
|
||||
unsigned int *data = imlib_image_get_data();
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
tsk->icon_width = imlib_image_get_width();
|
||||
tsk->icon_height = imlib_image_get_height();
|
||||
tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||
memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||
imlib_free_image();
|
||||
//printf(" get_pixmap\n");
|
||||
Imlib_Image img;
|
||||
imlib_context_set_drawable(hints->icon_pixmap);
|
||||
img = imlib_create_image_from_drawable(hints->icon_mask, 0, 0, icon_width, icon_height, 0);
|
||||
imlib_context_set_image(img);
|
||||
unsigned int *data = imlib_image_get_data();
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
XFree(hints);
|
||||
tsk->icon_width = imlib_image_get_width();
|
||||
tsk->icon_height = imlib_image_get_height();
|
||||
tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||
memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32));
|
||||
imlib_free_image();
|
||||
}
|
||||
XFree(hints);
|
||||
}
|
||||
|
||||
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));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void draw_task_icon (Task *tsk, int text_width, int active)
|
||||
{
|
||||
if (tsk->icon_data == 0) return;
|
||||
if (tsk->icon_data == 0 || tsk->icon_data_active == 0) return;
|
||||
|
||||
Pixmap *pmap = (active == 0) ? (&tsk->area.pix.pmap) : (&tsk->area.pix_active.pmap);
|
||||
unsigned int *icon_data = (active == 0) ? (tsk->icon_data) : (tsk->icon_data_active);
|
||||
|
||||
/* Find pos */
|
||||
// Find pos
|
||||
int pos_x;
|
||||
Panel *panel = (Panel*)tsk->area.panel;
|
||||
if (panel->g_task.centered) {
|
||||
|
@ -251,12 +259,12 @@ void draw_task_icon (Task *tsk, int text_width, int active)
|
|||
}
|
||||
else pos_x = panel->g_task.area.paddingxlr + panel->g_task.area.pix.border.width;
|
||||
|
||||
/* Render */
|
||||
// Render
|
||||
Imlib_Image icon;
|
||||
Imlib_Color_Modifier cmod;
|
||||
DATA8 red[256], green[256], blue[256], alpha[256];
|
||||
|
||||
icon = imlib_create_image_using_data (tsk->icon_width, tsk->icon_height, tsk->icon_data);
|
||||
icon = imlib_create_image_using_data (tsk->icon_width, tsk->icon_height, icon_data);
|
||||
imlib_context_set_image (icon);
|
||||
imlib_context_set_drawable (*pmap);
|
||||
|
||||
|
@ -328,3 +336,4 @@ void draw_task (void *obj, cairo_t *c, int active)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include <X11/Xlib.h>
|
||||
#include <pango/pangocairo.h>
|
||||
#include <Imlib2.h>
|
||||
#include "common.h"
|
||||
|
||||
|
||||
|
@ -25,6 +26,8 @@ typedef struct {
|
|||
int icon_size1;
|
||||
int maximum_width;
|
||||
int maximum_height;
|
||||
int hue, saturation, brightness;
|
||||
int hue_active, saturation_active, brightness_active;
|
||||
// starting position for text ~ task_padding + task_border + icon_size
|
||||
double text_posx, text_posy;
|
||||
|
||||
|
@ -43,7 +46,9 @@ typedef struct {
|
|||
// TODO: group task with list of windows here
|
||||
Window win;
|
||||
int desktop;
|
||||
// ARGB icon
|
||||
unsigned int *icon_data;
|
||||
unsigned int *icon_data_active;
|
||||
int icon_width;
|
||||
int icon_height;
|
||||
char *title;
|
||||
|
|
|
@ -482,6 +482,7 @@ void event_property_notify (XEvent *e)
|
|||
tsk2->icon_width = tsk->icon_width;
|
||||
tsk2->icon_height = tsk->icon_height;
|
||||
tsk2->icon_data = tsk->icon_data;
|
||||
tsk2->icon_data_active = tsk->icon_data_active;
|
||||
tsk2->area.redraw = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,9 @@ enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE,
|
|||
|
||||
#define ALLDESKTOP 0xFFFFFFFF
|
||||
|
||||
#define MIN3(x,y,z) ((y) <= (z) ? ((x) <= (y) ? (x) : (y)) : ((x) <= (z) ? (x) : (z)))
|
||||
#define MAX3(x,y,z) ((y) >= (z) ? ((x) >= (y) ? (x) : (y)) : ((x) >= (z) ? (x) : (z)))
|
||||
|
||||
|
||||
typedef struct config_border
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue