Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Jauges en forme de barre
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Jauges en forme de barre [Bug #60]
Page : 1 2 3 4 5 6
SQP Français 103 nochka85 [Read]
05 January 2011 à 20:33

matttbe, Friday 20 August 2010 à 11:48


Subscription date : 24 January 2009
Messages : 12573
en passant, c'est bizarre comme le texte de la jauge bleue est décalé
normalement il est centré (et on voit les 2)
Celle de droite?
http://uppix.net/2/f/5/482d51248faca5f80baf9edd965d7.png


Je ne vois rien d'anormal moi

SQP, Friday 20 August 2010 à 11:56


Subscription date : 03 July 2010
Messages : 1081
si tu parle du vistaish, regarde l'ensemble de l'image, il me parait bien centré, en tout cas pareil que celui de gauche

c'est un test fait avec mon moniteur habituel pour la ram, donc normal qu'il n'y ait qu'un indicateur. De ce que j'ai vu, les thèmes sont mono ou bi indicateurs (il y a un triple), mais il n'y a pas de thème modulable capable de gérer plusieurs cas.

(et tj pas convaincu par ces exemples pour cette option ?)

Guest, Friday 20 August 2010 à 12:23

j'ai oublié ma question de fond sur l'application de l'option rotate :
rotate le container et derotate le texte
ou rotate les textures une par une ?

Guest, Friday 20 August 2010 à 12:28

rien à voir mais j'ai pas envie de créer un thread pour ça
ya pas une option sur le site du genre "je suis une merde et je me rappelle plus de mon pass qd je poste depuis mon laptop du jardin en fumant ?"

matttbe, Friday 20 August 2010 à 12:41


Subscription date : 24 January 2009
Messages : 12573
Désolé, pas pour les fumeurs (je parie que Fab est d'accord avec moi )
Alors si en plus la cigarette te donne des trous de mémoire, ça ne doit pas être facile de gérer cette dépendance

Sinon, les mots de passe sont convertis en sommes MD5... Ce serait éventuellement possible d'ajouter un moyen pour le changer mais pas pour s'en rappeler

SQP, Friday 20 August 2010 à 12:52


Subscription date : 03 July 2010
Messages : 1081
te fais pas chier à faire un truc pour ca, c'était juste que je me demandais si c'est moi qui avait mal vu ou si il y avait bien une option (pas grave, je vais tester tous mes pass)

matttbe, Friday 20 August 2010 à 13:15


Subscription date : 24 January 2009
Messages : 12573
Si tu utilises Firefox ou Chromium et que tu as enregistré ton mot de passe, ce n'est pas très compliqué de le retrouver

matttbe, Friday 20 August 2010 à 13:15


Subscription date : 24 January 2009
Messages : 12573
Si tu utilises Firefox ou Chromium et que tu as enregistré ton mot de passe, ce n'est pas très compliqué de le retrouver

fabounet, Friday 20 August 2010 à 13:49


Subscription date : 30 November 2007
Messages : 17118

(et tj pas convaincu par ces exemples pour cette option ?)


j'ai qques modifs à faire.
- mettre bWriteValues dans l'applet et ne pas se charger du quick-info
- utiliser bWriteValues dans le datarenderer
- déplacer le code du dessin des valeurs dans l'API général cairo-dock-data-renderer.c (vu que c'est générique)

c'est le problème quand on essaie de faire des API très génériques, ça n'est vraiment au point que lorsqu'on en a fait plusieurs implémentations

SQP, Friday 20 August 2010 à 20:14


Subscription date : 03 July 2010
Messages : 1081
bon te stress pas avec ca, c'est bon ca marche. plus d'infos après manger, je posterais une petite vidéo.

sinon, j'ai utilisé le bWriteValues, et j'ai du désactiver le fallback quand ya pas de text dans le theme

fabounet, Saturday 21 August 2010 à 02:49


Subscription date : 30 November 2007
Messages : 17118
j'essaierai de mettre un peu d'ordre dans tout ça, mais il faut finaliser la 2.2 d'abord
encore 1 semaine je dirais, puis je pourrais m'y remettre

SQP, Saturday 21 August 2010 à 19:12


Subscription date : 03 July 2010
Messages : 1081
Alors que je bossais sur les effets supplémentaires pour finaliser mon 1er core patch, en ajoutant mon parametre d'effet à un thème existant, je suis tombé sur un phénomène intéréssant auquel je n'avais pas pensé. Comme j'utilise les indicateurs habituels, en appliquant un effet sur l'image au lieu de juste l'afficher, si il y a plusieurs images définies dans le thème (une bonne partie des thèmes actuels), la sélection d'image se fait de la même facon, mais l'effet est appliqué en plus.


http://videobin.org/+1lx/1v4.html

Ca ouvre des perspectives très intéréssantes, il y a possibilité de faire des thèmes plus élaborés avec un effet basé sur une ou plusieurs images, et aucun impact sur les thèmes existants (si on en fait évoluer certains, ça ne sera que du benefice)

  • J'ai mis une clé XML "effect" sur l'indicateur, en integer avec pour le moment : {crop=1, stretch, zoom, transparency} . On utilise les equivalents texte ou on laisse comme ca ?
  • On utilise le terme de transparency ou fade comme il peut y avoir à d'autres endroits ?

fabounet, Sunday 22 August 2010 à 04:33


Subscription date : 30 November 2007
Messages : 17118
je pensais plus à les mettre à part, je pense pas que multiplier les effets soit très utile
par contre on peut tout à fait en faire un datarenderer, et le proposer dans les applets

SQP, Sunday 22 August 2010 à 10:02


Subscription date : 03 July 2010
Messages : 1081
je vois tj pas l'interet de dupliquer tout le code de gestion de theme...

le patch fait genre 15 lignes (une cle, une variable, et un switch pour la fonction d'appel).
La seule fonction que j'ai du ajouter, c'est celle dont j'avais besoin, le crop. Après, j'ai complété les effets parcequ'ils ne coutaient rien une fois le switch en place.

Le voila, comme ca t'en feras ce que tu veux. chezmoicamarche.com

=== modified file 'src/gldit/cairo-dock-draw-opengl.h'
--- src/gldit/cairo-dock-draw-opengl.h    2010-06-03 23:08:09 +0000
+++ src/gldit/cairo-dock-draw-opengl.h    2010-08-25 10:44:15 +0000
@@ -154,6 +154,13 @@
    glTexCoord2f(1., 1.); glVertex3f( .5*w, -.5*h, 0.);\
    glTexCoord2f(0., 1.); glVertex3f(-.5*w, -.5*h, 0.);\
    glEnd(); } while (0)
+#define _cairo_dock_apply_current_texture_at_size_crop(iTexture, w, h, ratio) do { \
+    glBegin(GL_QUADS);\
+    glTexCoord2f(0., 1-ratio); glVertex3f(-.5*w, (ratio -.5)*h, 0.);\
+    glTexCoord2f(1., 1-ratio); glVertex3f( .5*w, (ratio -.5)*h, 0.);\
+    glTexCoord2f(1., 1); glVertex3f( .5*w, -.5*h, 0.);\
+    glTexCoord2f(0., 1); glVertex3f(-.5*w, -.5*h, 0.);\
+    glEnd(); } while (0)
#define _cairo_dock_apply_current_texture_at_size_with_offset(w, h, x, y) do { \
    glBegin(GL_QUADS);\
    glTexCoord2f(0., 0.); glVertex3f(x-.5*w, y+.5*h, 0.);\

=== modified file 'src/implementations/cairo-dock-gauge.c'
--- src/implementations/cairo-dock-gauge.c    2010-08-22 00:34:21 +0000
+++ src/implementations/cairo-dock-gauge.c    2010-08-25 11:15:15 +0000
@@ -358,6 +358,8 @@
                            pGaugeIndicator->emblem.fAlpha = _str2double (cTextNodeContent);
                    }
                }
+                else if(xmlStrcmp (pGaugeSubNode->name, (const xmlChar *) "effect") == 0)
+                    pGaugeIndicator->cEffect = atoi (cNodeContent);
                else if(xmlStrcmp (pGaugeSubNode->name, (const xmlChar *) "direction") == 0)
                    pGaugeIndicator->direction = _str2double (cNodeContent);
                else if(xmlStrcmp (pGaugeSubNode->name, (const xmlChar *) "posStart") == 0)
@@ -629,7 +631,28 @@
    
    if (pGaugeImage->iTexture != 0)
    {
-        _cairo_dock_apply_texture_at_size (pGaugeImage->iTexture, iWidth, iHeight);
+        glBindTexture (GL_TEXTURE_2D, pGaugeImage->iTexture);\
+        switch (pGaugeIndicator->cEffect)
+        {
+            case 1 : // Crop
+                _cairo_dock_apply_current_texture_at_size_crop (pGaugeImage->iTexture, iWidth, iHeight, fValue);
+            break;
+
+            case 2 : // Stretch
+                _cairo_dock_apply_current_texture_portion_at_size_with_offset (0. , 0., 1., 1., iWidth, iHeight * fValue, 0., iHeight * (fValue - 1)/2);
+            break;
+
+            case 3 : // Zoom
+                _cairo_dock_apply_current_texture_portion_at_size_with_offset (0. , 0., 1., 1., iWidth * fValue, iHeight * fValue, 0., 0.);
+            break;
+
+            case 4 : // Transparency
+                _cairo_dock_set_alpha(fValue); // no break, we need the default texture draw
+
+            default :
+                _cairo_dock_apply_current_texture_at_size (iWidth, iHeight);
+            break;
+        }
    }
}
static void _draw_gauge_needle_opengl (Gauge *pGauge, GaugeIndicator *pGaugeIndicator, double fValue)

=== modified file 'src/implementations/cairo-dock-gauge.h'
--- src/implementations/cairo-dock-gauge.h    2010-08-22 00:34:21 +0000
+++ src/implementations/cairo-dock-gauge.h    2010-08-25 11:15:45 +0000
@@ -55,6 +55,7 @@
    gdouble posX, posY;
    gdouble posStart, posStop;
    gdouble direction;
+    gint cEffect;
    gint iNeedleRealWidth, iNeedleRealHeight;
    gdouble iNeedleOffsetX, iNeedleOffsetY;
    gdouble fNeedleScale;

SQP, Sunday 22 August 2010 à 10:24


Subscription date : 03 July 2010
Messages : 1081
Et le thème qui va avec : http://dl.free.fr/p8Ym0MskN

fabounet, Monday 23 August 2010 à 13:07


Subscription date : 30 November 2007
Messages : 17118
par exemple pour un rendu qui représente la valeur en zoomant l'icône, il n'y aura pas de thème.
son code sera très simple, mais ce serait une erreur de vouloir l'intégrer à un truc existant en rajoutant au passage "un simple paramètre".

s'il y'a des bouts de code qui se retrouvent à plusieurs endroits, c'est qu'il faut faire une fonction et factoriser ce code.

SQP, Monday 23 August 2010 à 13:19


Subscription date : 03 July 2010
Messages : 1081
et si on veut y mettre un background, ou un foreground, ou du texte ?

Ajouter 4 effect possibles aux thèmes ne veut pas dire que tout devra passer par la. Un renderer "Icon" devrait couvrir les besoins plus simples, mais ce n'est pas une raison pour ne pas ajouter ces effets sur les thèmes.

Enfin comme j'ai dit, ca répond à mon besoin et j'ai essayé de le voir largement et faire proprement, maintenant t'en fais ce que tu veux. Sujet clos pour moi

SQP, Thursday 26 August 2010 à 15:37


Subscription date : 03 July 2010
Messages : 1081
je crois que le problème c'est que le terme de jauge est trop réducteur. Je l'ai gardé parce qu'il correspondait exactement à l'idée de départ de ce que je voulais faire, mais de la même façon que c'est implémenté dans le code, il faut comprendre "thème". Parce que ca correspond tout à fait à ca, enfin au moins la partie choix et affichage de l'image. Et après avoir pas mal étudié le code maintenant, je pense que si il y a quelque chose à séparer, c'est les thèmes en svg et les thèmes à aiguilles (qui partagent quand même une partie de la gestion de thème et de l'affichage), mais ca ne change rien à l'implementation des effets.

Si tu regardes mon patch, tu verras que ca serait bien plus compliqué de séparer les options pour en faire un renderer de plus. Et on se priverait d'un certain nombre de possibilités qui apparaissent si on fait comme ca (je trouve le wifi square plus sympa en mode fade que sans, et plus précis), et l'impact sur les performances doit être nul vu que les textures sont déjà resize à l'affichage, un peu plus ou un peu moins ca change rien pour 3 des effets. Je n'ai même pas à activer le blending pour le fade, juste à appliquer ma valeur, mais j'imagine que ca doit pas coûter grand chose.
Renomme gauge en theme et tu verras qu'on est exactement dans ce cadre la : des svg à afficher.

Je suis sur que des themeurs seront ravis de ne plus forcément avoir à faire plein de svg pour faire un thème, et encore plus de gagner la possibilité de combiner les effets avec les options actuelles.
Petit exemple avec un 2e thème basé sur le premier. Je garde le crop mais à partir de 3 images (5 dans la liste, la 1ere est définie 3x) en variant un peu les dégradés pour accentuer la montée en valeur.

http://videobin.org/+1m7/1ve.html
(et ça serait bien que ca soit dans la release, sinon pas de themeurs potentiels)

Pour pouvoir travailler sur mes autres questions, j'ai créé ma branche et commit le premier patch. Hésitez pas à tester ou à commenter, je demande que ca

Le deuxième facile à implementer, c'est l'affichage du texte. J'ai un patch prêt pour ajouter l'option "On theme" au select d'affichage des valeurs.
Je l'utilise déjà à fond pour le system monitor : le cpu en graph avec "on icon", la ram en gauge de 15px avec "on theme", le swap en gauge de 8px avec "on label" ou "no" si je cache les label.
http://uppix.net/b/4/6/8654b3a1b71c5187012215d6e2dfa.png

J'ai ajouté une valeur à CairoDockInfoDisplay
Pour la variable, je peux récuperer CairoDataRenderer->bWriteValues (mais il faut supprimer le fallback) ou en ajouter une, et je mettrais plutôt pGauge->bWriteThemeValues (comme c'est lié aux thèmes)

et j'ai pu factoriser cette partie de définition de gauge
CairoGaugeAttribute cairo_dock_create_gauge_attribute (gchar *cGThemePath, CairoDockInfoDisplay iInfoDisplay)
{
    CairoGaugeAttribute attr; // les attributs de la jauge.
    memset (&attr, 0, sizeof (CairoGaugeAttribute));
    attr.cThemePath = cGThemePath;
    CairoDataRendererAttribute* pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
    pRenderAttr->cModelName = "gauge";
    return attr;
}


qui me permet de ne garder que ca dans le set_renderer de l'applet (avec la 3e ligne facultative)
    if (myConfig.iDisplayType == CD_SYSMONITOR_GAUGE)
    {
        CairoGaugeAttribute attr = cairo_dock_create_gauge_attribute (myConfig.cGThemePath, myConfig.iInfoDisplay);
        pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
        pRenderAttr->bWriteValues = (iInfoDisplay == CAIRO_DOCK_INFO_ON_THEME ? TRUE : FALSE);
    }


la factorisation est applicable sur tous les applets qui utilisent un theme gauge : system-monitor, netspeed, network monitor, wifi, powermanager et dbus

La nouvelle option est valable pour system-monitor, netspeed, et bientôt alsamixer
clock utilise aussi l'InfoDisplay mais ca ne lui change rien
L'option pourrait être étendue pour les autres modules qui utilisent un theme : powermanager, weather, wifi. Déjà pour le choix sur le label, et surement aussi si on trouve des affichages sympa dans les thèmes.

fabounet, Thursday 26 August 2010 à 17:56


Subscription date : 30 November 2007
Messages : 17118
oui effectivement on aurait pu séparer sur le critère "aiguille"
d'où l'intérêt de bien réfléchir avant de se lancer

là on veut faire des barres de progression, et on a trouvé 3 type de barres, et diverses options
je pense que ça fera un ensemble cohérent, et qu'on ne devrait pas mélanger les jauges avec.
en plus ça te laisse les coudées franches pour ajouter autant d'options que tu veux

je suis en train de dépoussiérer un peu le code, et le code des jauges est en fait vraiment simple (la moitié étant la lecture du .xml).

j'avance pas vite car priorité à la release, mais j'avance quand même

SQP, Thursday 26 August 2010 à 19:04


Subscription date : 03 July 2010
Messages : 1081
mate mon patch !!!
t'as vu le renderer gauge est très simple en fait, on lit le xml (commun, mais la moitié est spécifique aiguilles), on charge les images (une partie commune), et on affiche (la c'est séparé, et séparé en 2 chacun pour cairo/opengl)

parce que si je fais un renderer séparé j'embarque la gestion des thèmes multi svg. Enfin ca me paraitrait logique.
Je viens d'essayer de faire un theme multi svg a multi indicateurs, et je me suis rendu compte que ca avait pas l'air d'être géré.
Les 3/4 des clés de l'indicateur sont spécifiques aux aiguilles, alors que rien n'est prévu pour les images (à part la zone texte)
2 possibilités donc :
  • je commence comme ca, et on mate après si il y a vraiment inter?t à split
  • je fork directement le gauge (j'appelle ca comment ? thème, images ?) et je nettoye tout ce qui concerne les aiguilles et la oui je suis tranquille pour implementer les options de placement pour les images pour gerer les multi indicateurs


J'ai un petit problème pour la rotation, je dépend de pContainer->bIsHorizontal. Je peux y acceder à partir d'un pGauge ? (dans cairo_dock_draw_one_gauge_opengl)

et il vaut mieux que je commit regulièrement en faisant un report comme je viens de faire pour que tu puisses commenter ? Je pense que ca sera plus facile de parler sur du concret pour mes questions techniques (même si je fais des horreurs au début, autant que ca soit corrigé vite que je progresse)

Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Jauges en forme de barre [Bug #60]
Page : 1 2 3 4 5 6
SQP Français 103 nochka85 [Read]
05 January 2011 à 20:33


Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Jauges en forme de barre Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.