X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Futil%2Farea.h;h=9a29ebd2ac07aeb446d1278affec11cd8cb8bd48;hb=3f12a587406ddc975bff3fe505924e62cd125ff6;hp=0499e1a294439b630e2dd27609904e01756153ba;hpb=fa4e7684e1bcf691b5e152d503204c5b7fe52f97;p=chaz%2Ftint2 diff --git a/src/util/area.h b/src/util/area.h index 0499e1a..9a29ebd 100644 --- a/src/util/area.h +++ b/src/util/area.h @@ -1,26 +1,28 @@ /************************************************************************** * Copyright (C) 2008 thierry lorthiois (lorthiois@bbsoft.fr) -* +* * base class for all graphical objects (panel, taskbar, task, systray, clock, ...). -* Area is at the begining of each graphical object so &object == &area. -* +* Area is at the begining of each object (&object == &area). +* * Area manage the background and border drawing, size and padding. -* Area also manage the tree of visible objects +* Each Area have 2 Pixmap (pix and pix_active). +* +* Area also manage the tree of visible objects. Parent object drawn before child object. * panel -> taskbars -> tasks * -> systray -> icons * -> clock -* -* draw_foreground(obj) and draw(obj) are virtual function. -* +* +* draw_foreground(obj) is virtual function. +* +* TODO : * resize_width(obj, width) = 0 : fonction virtuelle à redéfinir * recalcule la largeur de l'objet (car la hauteur est fixe) * - taille systray calculée à partir de la liste des icones * - taille clock calculée à partir de l'heure * - taille d'une tache calculée à partir de la taskbar (ajout, suppression, taille) * - taille d'une taskbar calculée à partir de la taille du panel et des autres objets -* +* * voir resize_taskbar(), resize_clock() et resize_tasks() -* variable widthChanged ou bien emission d'un signal ??? * voir config(obj) configure un objet (définie les positions verticales) * **************************************************************************/ @@ -34,7 +36,6 @@ #include "common.h" - typedef struct { double color[3]; @@ -51,31 +52,37 @@ typedef struct } Color; +typedef struct +{ + Pixmap pmap; + Color back; + Border border; +} Pmap; + + +// TODO: isoler 'draw' de 'refresh' +// TODO: isoler les données locales des données communes aux freres typedef struct { - // TODO: isoler 'draw' de 'refresh' - // TODO: isoler les données locales des données communes aux freres // absolute coordinate in panel int posx, posy; int width, height; - Pixmap pmap; + Pmap pix; + Pmap pix_active; // list of child : Area object GSList *list; - + // need redraw Pixmap - int redraw; - int paddingx, paddingy; + int redraw; + int use_active, is_active; + int paddingx, paddingy; // parent Area void *parent; - - Color back; - Border border; - + // each object can overwrite following function - void (*draw)(void *obj); - void (*draw_foreground)(void *obj, cairo_t *c); + void (*draw_foreground)(void *obj, cairo_t *c, int active); void (*add_child)(void *obj); - int (*remove_child)(void *obj); + int (*remove_child)(void *obj); } Area; @@ -85,8 +92,10 @@ void refresh (Area *a); // set 'redraw' on an area and childs void set_redraw (Area *a); -void draw (Area *a); -void draw_background (Area *a, cairo_t *c); + +// draw pixmap and pixmap_active +void draw (Area *a, int active); +void draw_background (Area *a, cairo_t *c, int active); void remove_area (Area *a); void add_area (Area *a);