Layercut 1.2b

Le Module Shortcut Transparent

Layercut est un module pour LiteStep basé sur le module shortcut2. Il permet de faire de la vraie transparence avec les shortcut en utilisant l'alpha channel des images png 32-bits. Ce module ne fonctionne que sous Windows 2000/XP.

-= Syl =-



Sommaire


Historique
    28/02/2002 - ver 1.2b
    • Correction: amélioration de la gestion de la seconde action.
    27/02/2002 - ver 1.2a
    • Ajout: flags E et S (action Entrante et Sortante).
    24/02/2002 - ver 1.2
    • Changement dans la manière de gérer les images, cela prend désormais moins de mémoire si vous chargez la même image plusieurs fois a travers différents shortcuts.
    • Suppression d'une optimisation (!!!), les shortcuts étaient chargés s'ils étaient visible au démarrage, maintenant tout est chargé au démarrage, c'est plus facile à utiliser avec LSDynamic.
    • Ajout: support de l'animation.
    • Ajout: documentation en francais.
    • Correction: Il y avait des ralentissements avec LSDynamic lorsque la souris passait au dessus des shortcuts
    • Correction: ShortcutAlphaThreshold.
    • Correction: Manière de créer les shortcuts (les shortcuts qui étaient sur le bureau étaient un peu au dessus des autres fenêtres...).
    11/02/2002 - ver 1.1
    04/02/2002 - ver 1.0
    • Première version.

    Démarré le 03/02/2002.


Installation

Copiez Layercut.dll dans votre répertoire contenant vos modules et chargez le:

LoadModule "c:\LiteStep\Modules\Layercut.dll"

Si c:\LiteStep\Modules\ est votre répertoire contenant vos modules bien sure...
N'oubliez pas de ne pas charger shortcut2.dll, car c'est inutile...



Utilisation

Avantages:
- Shortcut avec de la vraie transparence
- l'alpha channel des shortcuts est activé pour qu'ils soient transparents au pixel près
- plus rapide avec LSDynamic
- shortcuts animés
- Prend moins de mémoire

Inconvénient:
- un peu plus lent que shortcut2
- le positionement en profondeur est différent par rapport à shortcut2

Couleur de la syntaxe:

<value>

vous devez spécifier une valeur

<value>

une valeur

<value>

cette valeur est optionnelle

keyword

ceci est un mot-clé

keyword

la ligne avec ce mot-clé est optionnelle


La syntaxe est compatible avec celle de shortcut2. Vous pouvez en plus spécifier une valeur de transparence pour le shortcut:

*shortcut <caption> <x-pos> <y-pos> <image-normal> <image-hover> <image-click> #<group><flags> a:<alpha-value> <hover-sound> <sound-click> <action>

<alpha-value> est entre 0 (transparent) et 255 (opaque). par exemple, a:128 est 50% transparent.
Pour plus d'information pour savoir comment fonctionne les shortcuts, allez voir la documentation concernant shortcut2 dans le répertoire de documentation de LiteStep.


Avec une petite astuce, vous pouvez ajouter une autre action à votre shortcut quand vous cliquez dessus avec le bouton droit de la souris. Pour que cela fonctionne, vous devez utiliser 2 bang !execute comme ceci:

*Shortcut "" 0 0 normal.bmp hover.bmp click.bmp !execute [cmd1][cmd2] !execute [cmd3][cmd4]

cmd1 et cmd2 vont être éxécuté avec le bouton gauche quand vous cliquerez sur le shortcut, et cmd3 et cmd4 seront éxécuté lorsque vous cliquerez avec le bouton droit.

Si le flag E est spécifié, la seconde action sera aussi éxécutée quand la souris sera au dessus du shortcut (action Entrante).
Si le flag S est spécifié, la seconde action sera aussi éxécutée quand la souris sortira du shortcut (action Sortante).



Configuration

ShortcutDefaultAlpha <value>
Met une valeur de transparence par défaut pour tous les shortcuts.

ShortcutAlphaThreshold <value>
Specifie la tolérance lors de la création de la zone de test pour la souris. Cette valeur indique quelle valeur dans l'alpha channel est considéré comme étant totalement transparente. La valeur par défaut est 0 (noir est transparent).

Bangs

!ShortcutGroupSetAlpha value groups
Change l'alpha pour un groupe de shortcuts.



Animation

L'image pour l'animation est basé sur le format d'image de CursorXP. Vous pouvez stocker toutes les étapes d'animation dans un seul fichier, ensuite spécifiez la largeur et la hauteur pour une image. Layercut calculera le nombre total d'image en fonctionne de la largeur et la hauteur que vous aurez spécifiez.
Vous devez rajouter quelques définition dans le step.rc pour activer l'animation, ensuite remplacez juste le nom de l'image par <animation-name> dans la définition du shortcut.

*layercut animation <animation-name>
*layercut image <image-name>
*layercut size <width> <height>
*layercut speed <delay-in-ms>
*layercut flags <flags>
*layercut between <first-frame> <last-frame>
*layercut ~animation


<animation-name>:
... est le nom de l'animation. Remplacez l'image image d'un état dans la définition d'un shortcut avec le nom de l'animation. Vous pouvez mettre une nimation pour l'état normal, souris au dessus ou cliqué.

image:
Quelle image va être utilisé pour l'animation. <image-name> peut être une image bmp ou png.

size:
Spécifiez la largeur et la hauteur pour une seule image.

speed:
Spécifiez la vitesse en millisecondes lorsque Layercut va jouer la prochaine image.
La valeur par défaut est 100 ms.

flags:
Voici les différents flags:
O: force l'Opacité de l'animation (comme shortcut2).
L: animation joue indéfiniment (Loop).
F: l'animation se terminera (Finish) avant de commencer à jouer l'animation suivante.
P: l'animation commencera (Priorité) même si l'animation courante à le flag F (l'animation courante sera stoppée). Très utile pour l'état cliqué...


between:
Quand l'animation se joue indéfiniment, elle se joue entre la première image et la dernière. Quand vous spécifiez un intervalle, Layercut tournera entre <first-frame> et <last-frame>. Par exemple si l'intervalle est entre 10 et 30, Layercut jouera les image 0, 1, 2, 3, ..., 29 puis retournera à l'image 9.



Exemples

Copiez les images png dans votre répertoire images, copiez layercut.rc dans votre répertoire LiteStep (ou de votre thème), puis incluez le dans votre fichier step.rc.



Astuces

Pour créer une image png avec de l'alpha, il y a 2 moyen (avec Photoshop):
Vous pouvez créer une nouvelle image avec un fond transparent, puis dessiner une nouvelle image dessus et l'enregistrer en tant que png.
Ou vous pouvez ajouter une nouvelle couche (channel), et dessiner une image en noir et blanc dedans, où le noir est transparent et le blanc opaque. L'avantage de l'alpha channel est que vous pouvez faire de la transparence au pixel près et utiliser les 256 nuances de gris pour faire de la transparence fluide et des contours bien intégrés aux bureau, sans éffet d'escalier.
Vous pouvez aussi convertir des tga 32-bits en png 32-bits.

Pour faire une animation lorsque la souris s'e va du raccourci, utilisez le flag L avec between, et le flag F, comme ca l'animation tournera dans l'intervalle spécifiez par bettwen et lorsque la souris s'en ira, l'animation continuera de jouer jusqu'à la fin pour ensuite revenir à l'état normal.

Pour faire des shortcut animé, vous devriez utiliser AniUtil 1.3 provenant du site de CursorXP.



Bugs connus

Ce module ne fonctionne que sous Windows 2000/XP.

Ce module est plus lent que shortcut2, donc si vous l'utilisez comme shortcut2, c'est-à-dire sans transparence, ne l'utilisez pas =)

Ce module a été fait car c'était trop lent de faire les shortcuts transparent avec LSDynamic, et ce module est plus rapide pour la transparence qu'aucune qutre application ne pourrait le faire (comme LSDynamic avec shortcut2). Utilisez l'option DynLayeredShortcut avec LSDynamic sinon vous ne pourrez pas changez l'alpha des shortcuts.

Du aux grosses modifications apportées pour rendre les shortcuts transparents, quelques états lors de la création des fenêtres ont du être changé, et quelque modification vont apparaitre pour les shortcut qui sont au dessus des autres, et lors des changes d'état. J'ai éssayé de conserver la manière dont les shortcuts étaient affichés, mais parfois c'étaient impossible.

Si vous utilisz des shortcuts animés pour l'état normal, et que celui-ci se joue à l'infini et qu'il a un court delay ( < 100 ), cela prendra beaucoup de temps processeur, vous devriez augmenter un peu le delay.



Dans une FAQ de Microsoft, il est dit que lorsqu'une fenêtre est visible et que a un titre, elle apparait dans le gestionnaire des taches de Windows.
Dans LSDynamic, pour recupérer la fenêtre, j'utilise une fonction qui se base sur les titres des fenêtres, et lorsqu'un shortcut est visible, il apparait dans le gestionnaire des taches. Et je n'y peux donc rien.



Remerciement

Merci à l'équipe LSdev de m'avoir laissez utilisé les sources de shortcut2 pour faire ce module.
Merci à xnowfall (beta-testeur officiel ;-) )
Merci à NeoRamasay pour m'avoir laissé utiliser des images de 3D Crystal Ex pour illustrer Layercut.
Merci encore à xnowfall pour l'example avec le logo LiteStep.



Contact

Si vous avez un problème, que vous voulez une nouvelle option, que vous trouvez un bug, que vous voulez les sources, mailez moi.


-= Syl =-
Web: http://www.epita.fr/~rouque_s/
Mail: rouque_s@epita.fr
ICQ: 84198930