Technical discussions | Discussions techniques
SQP, Wednesday 14 March 2012 à 10:55
|
|
Subscription date : 03 July 2010
Messages : 1081
|
décalage du pixel, mode d'emploi pour bien le mettre en évidence :
-creer un clock en desklet de 64x64
-mettre en numérique et définir la fonte en monospace (quelle que soit la taille)
-attendre que l'unité de la seconde soit un 4 pour voir un décalage d'un pixel à gauche au changement 3 -> 4 et décalage à droite au changement 4 -> 5 |
matttbe, Wednesday 14 March 2012 à 12:41
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Yep, je l'ai toujours mais avec le 1 mais verticalement: 0 -> 1 : décalage vers le haut ; 1 -> 2 : décalage vers le bas.
->
Ca se voit surtout avec les secondes simplement car ça arrive plus souvent.
EDIT: en changeant la taille, ça varie aussi mais parfois verticalement, parfois horizontalement, parfois ce n'est qu'un caractère qui bouge, etc.
EDIT2: ce serait bien une option pour ajuster automatiquement la taille de l'applet  |
fabounet, Wednesday 14 March 2012 à 15:33
|
|
matttbe, Wednesday 14 March 2012 à 16:06
|
|
Subscription date : 24 January 2009
Messages : 12573
|
En regardant vite fait, on peut voir que le zoom calculé n'est pas toujours le même. Voici un rapide workaround mais ... ça reste une solution de contournement je pense...=== modified file 'clock/src/applet-draw.c'
--- clock/src/applet-draw.c 2012-03-13 00:27:36 +0000
+++ clock/src/applet-draw.c 2012-03-14 14:34:05 +0000
@@ -173,6 +173,9 @@
}
else {
+ static double s_fZoomX = -1.0;
+ static double s_fZoomY = -1.0;
+
double fZoomX = (double) (iWidth-1) / ink.width; double fZoomY = (double) iHeight / ink.height;
if (myDock && fZoomY > MAX_RATIO * fZoomX) @@ -183,11 +186,24 @@
fZoomX *= myConfig.fTextRatio;
fZoomY *= myConfig.fTextRatio;
}
-
+
+ if (s_fZoomX == -1.0)
+ {
+ s_fZoomX = fZoomX;
+ s_fZoomY = fZoomY;
+ }
+ else
+ {
+ if (s_fZoomX > fZoomX)
+ s_fZoomX = fZoomX;
+ if (s_fZoomY > fZoomY)
+ s_fZoomY = fZoomY;
+ }
+
cairo_translate (myDrawContext,
- (iWidth - fZoomX * ink.width)/2.,
- (iHeight - fZoomY * ink.height)/2); - cairo_scale (myDrawContext, fZoomX, fZoomY);
+ 0,
+ (iHeight - s_fZoomY * ink.height)/2); + cairo_scale (myDrawContext, s_fZoomX, s_fZoomY);
cairo_translate (myDrawContext, -ink.x, -ink.y);
pango_cairo_show_layout (myDrawContext, pLayout);
}
Donc on garde en mémoire la valeur précédente et on utilise toujours le zoom minimum. On pourrait également ne calculer le zoom que les 10 premières secondes mais c'est peut-être encore pire comme workaround
Aussi, j'ai mis à 0 le déplacement horizontal... sinon il peut continuer à centrer et donc ça bouge...
Aussi, à quoi sert encore l'option 'fTextRatio' (Appliquer un ratio au texte)? Ce ne serait pas intéressant de l'enlever?
(enfin, il ne faudrait pas utiliser des variables statics mais utiliser des variables dans myData qui seraient réinitialisées en cas de modifications de la configuration de clock. |
lylambda, Thursday 15 March 2012 à 01:34
|
|
Subscription date : 06 September 2009
Messages : 1635
|
Pour info, contrairement à ce que je pensais, le bug existe toujours chez moi. Par contre, via Horloge>Edit, j'ai modifié manuellement la "Taille d'icône souhaitée pour cette applet". Cela peut-il favoriser le bug ? |
matttbe, Thursday 15 March 2012 à 02:23
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Moi aussi j'ai dû modifier ce paramètre sinon ce qui est écrit est tout petit
Mais sinon oui, ça favorise le bug parce que l'icône est plus grande mais ça reste l'utilisation la plus fréquente... |
matttbe, Thursday 15 March 2012 à 18:40
|
|
Subscription date : 24 January 2009
Messages : 12573
|
@fabounet: je confirme, avec Pango, il faut utiliser log pour le rectangle dit logique.
Je push la modif dès que possible.
Mais du coup, pas besoin de recréer une surface Cairo + Pango à chaque minute/seconde, non? |
Subscription date : 30 November 2007
Messages : 17118
|
merci !
tu utilises "|" pour avoir un zoom constant finalement ?
Mais du coup, pas besoin de recréer une surface Cairo + Pango à chaque minute/seconde, non?
je ne pense pas que ça ne change pas (en plus est-ce qu'on ne dessine pas directement sur l'icône ?) |
matttbe, Friday 16 March 2012 à 15:38
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Non, j'ai utilisé logical_rect au lieu de ink_rect de cette fonction: pango_layout_get_pixel_extents (PangoLayout *layout, PangoRectangle *ink_rect, PangoRectangle *logical_rect)
(voir rev 2327)
De ce que j'ai compris (car la doc n'aide pas trop à ce sujet ), c'est que cette fonction calcule l'espace maximal que peut prendre le dessin fait par Pango.
Donc, si le nombre de caractères ne change pas (et il ne devrait jamais changer car l'heure est au format HH:MM ou HH:MM:SS et la date DDD JJ MMM) les calculs pour obtenir les différentes tailles deviennent inutiles puisqu'ils afficheront toujours le même résultat.
Du coup, est-ce que c'est également nécessaire de créer, à chaque seconde ou minute, une nouvelle la texture avec Cairo et Pango? |
SQP, Saturday 17 March 2012 à 11:54
|
|
Subscription date : 03 July 2010
Messages : 1081
|
sacré changement. J'en ai un peu chié pour retrouver des réglages corrects pour mon affichage en 30px de large, mais en Ubuntu Condensed (+bold), ca le fait pas mal.
PS : c'est moi, ou je peux plus changer la largeur (dans mon sens) du dock sans aller toucher au paramètre "taille de toutes les icones" ?
(changer la taille de mon applet ne la fait plus agrandir la taille du dock) |
matttbe, Saturday 17 March 2012 à 18:33
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Je n'ai pas ce problème avec clock dans un dock secondaire au-dessus. Si j'agrandis en largeur, ou en hauteur, ça fonctionne bien (le dock s'agrandit si c'est nécessaire). |
lylambda, Thursday 22 March 2012 à 22:42
|
|
Subscription date : 06 September 2009
Messages : 1635
|
Pour info, le bug semble toujours présent, malgré la rev :
 |
matttbe, Friday 23 March 2012 à 09:39
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Merci pour le retour
Quels paramètres utilises-tu? (taille de l'icône, police, ratio, secondes?)
Backend Cairo je suppose... (enfin, même avec, je ne l'ai pas ce bug) |
Subscription date : 06 September 2009
Messages : 1635
|
Toujours le backend cairo, dans un dock panel vertical, taille de 21×27 px, pas de secondes.
Cela ne le fait que lorsque l'horloge est en mode "Toujours apparaitre" et qu'il y un changement dans la dizaine de l'heure (passage de 23h à 00h par exemple).
Si ce changement est réalisé tandis que le dock est apparent, ce bug n'apparait pas.
De même, faire apparaitre le dock après ce bug, rafraîchis l'horloge et efface la déformation graphique.
Cela me fait penser que ce pourrait être un autre bug, plus ou moins lié au votre . |
fabounet, Wednesday 28 March 2012 à 16:30
|
|
Subscription date : 30 November 2007
Messages : 17118
|
(changer la taille de mon applet ne la fait plus agrandir la taille du dock)
il me semble que la taille est bornée par la taille des icônes
justement pour pas avoir un dock mal dimensionné
Cela ne le fait que lorsque l'horloge est en mode "Toujours apparaitre" et qu'il y un changement dans la dizaine de l'heure (passage de 23h à 00h par exemple).
ah il me semble que ça se rapporte à un autre bug alors, ce n'est pas la faute de l'horloge
la zone rafraichie doit être trop courte sur les côtés
il est bien à l'horizontal ce dock ? |
matttbe, Wednesday 28 March 2012 à 17:03
|
|
Subscription date : 24 January 2009
Messages : 12573
|
ce bug? Si le dock est demarre avec le backend cairo, est a l'horizontal et que l'on affiche une etiquette en dessous de clock, cette etiquette est coupee lorsque le dessin de clock est mis a jour. |
lylambda, Thursday 29 March 2012 à 20:17
|
|
matttbe, Sunday 01 April 2012 à 15:19
|
|
Subscription date : 24 January 2009
Messages : 12573
|
J'ai un peu de mal à reproduire ton problème...
Est-ce que tu compiles le dock par toi même? Si oui, pourrais-tu tester en ajoutant pango_cairo_update_layout (myDrawContext, pLayout); juste avant pango_cairo_show_layout (myDrawContext, pLayout); avant la ligne 178 de clock/src/applet-draw.c |
matttbe, Tuesday 03 April 2012 à 22:50
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Il y a peu, j'ai rajouté un peu de largeur à l'arrière plan dans le mode "Iceberg". Ça va peut-être contourner le problème sans pour autant le solutionner vraiment. Enfin à voir |
Technical discussions | Discussions techniques
|