Projet d'économiseur d'écran

1356725

Réponses

  • BruBru Membre
    21:42 modifié #62
    dans 1112902998:

    Pour le bug, j'arrive à  le reproduire :
    -test des fonctions d'exposé : nickel
    -lancement de l'appli
    -"installer" le patch
    -test des fonctions d'exposé : nickel
    -"enlever" le patch
    -plus de fonction "bureau" d'exposé


    Je ne reproduis pas non plus chez moi le bug.

    Mais concernant la fonction ENLEVER, c'est assez violent, puisque ça kill le process Dock.app (le process est immédiatement relancé par la suite par le système).

    Le mieux est de ne rien enlever (le patch n'interfère pas avec le Dock lui-même). Mais par la suite, je pense me passer du patch, en donnant à  mon process les mêmes droits que ceux du Dock.

    .
  • BruBru Membre
    21:42 modifié #63
    dans 1112907300:
    @Bru : Tu dois normalement avoir un projet d'essai dans ton OC mail. En compilant le projet, tu vas voir un rect, simulant une fenêtre, faire un schéma d'animation test. Cette anim utilise les trois transformations, et comporte 6 étapes. Je fais mes essais avec CGContext, mais en bas du fichier FlyView.m, tu trouveras la méthode de tracé, avec les transforms utilisées, adaptées aux CGAffineTransform. Celles-ci sont encadrées par un CGSGetWindowTransform() et un CGSSetWindowTransform(). Donc normalement, si tout va bien, les "danses" devraient êtres identiques en simulation et en situation réelle. Si tu as des questions sur le projet, n'hésites pas. J'ai pensé que ce projet test pourrait ensuite être amélioré pour faire un éventuel éditeur de chemins d'animations...mais tout d'abord faut tester ce premier schéma. :)


    Ok, j'ai bien reçu.
    J'étudie ça.

    Le but du jeu étant de reproduire les mouvements des fenêtres dansantes que Vinc26 nous a fait voir dans sa démo.

    .
  • Eddy58Eddy58 Membre
    21:42 modifié #64
    Dans sa démo, Vinc26 utilise des transformations 3D. Là , on ne peut composer qu'avec deux axes en translation et rotation, l'opération de scaling donnant seulement une impression de translation sur un axe Z. Il ne sera pas possible de reproduire à  l'identique la danse de la démo, seul OpenGL pourrait permettre ça. Mais les résultats seront quand même sympa en utilisant les CGSSetWindowTransform... :)
  • Vinc26Vinc26 Membre
    21:42 modifié #65
    En fait... non, ce que j'ai fait n'est pas en 3D !

    C'est de la 2D sous FinalCutPro : j'ai fait bouger chaque coin de manière à  donner des impressions de perspective.

    Quelles sont les possibilités offerte par CGSSetWindowTransform ? uniquement du scale et de la rotation ? ou est-ce que l'on peut faire coin par coin ? et des transformation avec des courbe de bezier ?

    Parce que l'effet génie... il vient de CGSSetWindowTransform ? et l'autre aussi "aspiration"... que l'on peut activer à  la place de l'effet génie via un crack ?

  • Vinc26Vinc26 Membre
    21:42 modifié #66
    Question à  tout hasard : maintenant qu'on sait agir sur la fenêtre que l'on veut de manière aussi élégante, peut-on passer par openGL plutôt que par CGSSetWindowTransform ?
  • ObiObi Membre
    21:42 modifié #67
    dans 1112942414:

    Dans sa démo, Vinc26 utilise des transformations 3D. Là , on ne peut composer qu'avec deux axes en translation et rotation, l'opération de scaling donnant seulement une impression de translation sur un axe Z. Il ne sera pas possible de reproduire à  l'identique la danse de la démo, seul OpenGL pourrait permettre ça. Mais les résultats seront quand même sympa en utilisant les CGSSetWindowTransform... :)


    J'ai vu que l'on peut faire des transformations "shear" avec les affineTransform. Tu les utilises ? En associant rotation, scale et shear, on doit surement pouvoir faire des transformations assez proches de la 3D.
    En tout cas je dois avoir un bout de code qui traine quelque part.

    Est-ce que les anims d'alpha sont lancé en meme temps ? Sur mon g4 400, les fenêtres et les icones disparaissent assez lentement, l'une apres les autres.
    L'idée n'etait pas de les animer toutes en même temps ? Ou alors c'est mon g4 qui rame...  :'(
  • fouffouf Membre
    21:42 modifié #68
    Je n'arrive pas à  trouver dans la doc la référence pour CGSSetWindowTransform . Que faut-il que je fasse ?
  • BruBru Membre
    21:42 modifié #69
    dans 1112978092:

    Je n'arrive pas à  trouver dans la doc la référence pour CGSSetWindowTransform . Que faut-il que je fasse ?


    C'est une undocumented, mon chéri.

    Alors si tu ne la trouves pas dans la doc Apple, c'est normal !
  • BruBru Membre
    21:42 modifié #70
    dans 1112942414:

    Mais les résultats seront quand même sympa en utilisant les CGSSetWindowTransform...


    dans 1112944933:

    Quelles sont les possibilités offerte par CGSSetWindowTransform ? uniquement du scale et de la rotation ? ou est-ce que l'on peut faire coin par coin ? et des transformation avec des courbe de bezier ?
    Parce que l'effet génie... il vient de CGSSetWindowTransform ? et l'autre aussi "aspiration"... que l'on peut activer à  la place de l'effet génie via un crack ?


    En fait, le peu que j'ai compris des affineTransform, c'est que ça permet de déformer une image, et c'est effectivement ce genre de fonction qui est utilisé par Apple pour les divers effets visuels de Aqua (Exposé, Dock, effet cube, etc...).

    En travaillant le bout de code de Eddy, je pense déjà  avoir de la matière pour tester le passage des structures de déformation (move, scale et affine) vers la patch du Dock. Une fois que ça marchera complètement, nous pourrons nous pencher sur l'utilisation des ces fonctions.

    .
  • BruBru Membre
    21:42 modifié #71
    dans 1112957127:

    Est-ce que les anims d'alpha sont lancé en meme temps ? Sur mon g4 400, les fenêtres et les icones disparaissent assez lentement, l'une apres les autres.
    L'idée n'etait pas de les animer toutes en même temps ? Ou alors c'est mon g4 qui rame...


    Si tu évoques la "lenteur" de l'appli démo, je te rassure tout de suite : j'ai temporisé le "fading/unfading" par un [tt]usleep(3000);[/tt], et je "fade/unfade" toutes les fenêtres les unes à  la suite des autres.

    Par contre, ce sont des apple events qui permettent de communiquer les données de fading entre l'appli et le patch du dock. Or je ne pense pas que ce soit la meilleure solution en terme de vélocité.

    .
  • Vinc26Vinc26 Membre
    21:42 modifié #72
    Bru ? dit...

    Dès que t'as une  :)beta: hésite pas  o:)
  • Eddy58Eddy58 Membre
    avril 2005 modifié #73
    dans 1112944933:

    Quelles sont les possibilités offerte par CGSSetWindowTransform ? uniquement du scale et de la rotation ? ou est-ce que l'on peut faire coin par coin ? et des transformation avec des courbe de bezier ?

    Parce que l'effet génie... il vient de CGSSetWindowTransform ? et l'autre aussi "aspiration"... que l'on peut activer à  la place de l'effet génie via un crack ?

    CGSSetWindowTransform prend en paramètre une CGAffineTransform, et les CGAffineTransform, il y a en 3 types : Translate, pour les translations, Scale, pour les changements de tailles, et Rotate, pour les rotations. Le travail se fait avec des matrices 2D. On donne à  CGSSetWindowTransform une matrice modifiée, fournie à  l'origine par CGSGetWindowTransform, pour un numéro de fenêtre bien précis. On peut donc pas choisir un coin ou un autre.
    Donc en ce qui concerne les effets Génie ou autres (l'effet Cube, c'est de l'OpenGL), si on peut les faire avec les CGAffineTransform et CGSSetWindowTransform, alors je veux bien qu'on m'explique comment...Mais je pense que ce genre d'effet fait appel à  d'autres fonctions CGS. Beaucoup de fonctions CGS restent en effet non documentées...:)


    J'ai vu que l'on peut faire des transformations "shear" avec les affineTransform. Tu les utilises ? En associant rotation, scale et shear, on doit surement pouvoir faire des transformations assez proches de la 3D.
    En tout cas je dois avoir un bout de code qui traine quelque part.

    Oui Obi, d'une part je ne connais pas les shear et leur utilité précise (faire des matrices un peu bizarres mais dans quel but ?), et je me demande comment on peut obtenir des effets 3D, Quartz est une API 2D, il ne faut pas oublier ce détail important. Et même si on pouvait manipuler indépendamment les 4 coins de fenêtres, il faudrait obtenir la déformation 3D adéquate, mais là  encore, avec les matrices on ne peut manipuler que le cadre de la fenêtre, pas son contenu, et Quartz n'est pas à  ma connaissance pourvu de fonctions 3D...
    D'autre part, les CGAffineTransform ne proposent pas de CGAffineTransformShear. La classe NSAffineTransform propose en effet ce mode shear. Si tu as un bout de code qui se sert de cette fonctionnalité je suis preneur, pour voir à  quoi ça sert. :)
  • Eddy58Eddy58 Membre
    21:42 modifié #74
    dans 1112945015:

    Question à  tout hasard : maintenant qu'on sait agir sur la fenêtre que l'on veut de manière aussi élégante, peut-on passer par openGL plutôt que par CGSSetWindowTransform ?

    Il est effectivement possible de passer par OpenGL, comme on en parlait au début, le gros problème étant de grabber les fenêtres et le fond d'écran. Il y a quelques jours, j'ai mis la main sur un source qui permet de faire des screenshots. Je pense qu'il serait possible de coupler cette routine de screenshot, avec la routine de code injection, qui viderait l'écran de ses fenêtres, pour pouvoir faire un screenshot de l'écran nu. Il serait aussi théoriquement possible de faire passer devant les fenêtres que l'on veut récupérer en jouant avec leur window level, ensuite il ne reste plus qu'à  focaliser la routine de screenshot sur les coordonnées de la fenêtre voulue, mais il faut faut voir à  quelle vitesse tout ce processus se ferait. Une fois tout les grabs de fenêtres, et le grab d'écran nu réalisé, il ne resterait plus qu'à  se servir d'OpenGL pour jouer avec les images récupérées en mémoire. :) 
  • Vinc26Vinc26 Membre
    21:42 modifié #75
    Triste nouvelle tout ça...  :-\\  Ca veut donc dire que visuellement, on est très loin de pouvoir donner un rendu 3D... bon. Pô grave bien sur... mais dommage.

    Et ces fenêtres qu'on sait maintenant si bien attrapper... y'a pas moyen de les OpenGLiser ?

    Aller gardons le moral et faisons avancer la science pure !!!  :adios!:

    EDIT : Oups... t'as répondu avant que j'pose la question LOL  ;)
  • ObiObi Membre
    21:42 modifié #76
    dans 1112944933:

    D'autre part, les CGAffineTransform ne proposent pas de CGAffineTransformShear. La classe NSAffineTransform propose en effet ce mode shear. Si tu as un bout de code qui se sert de cette fonctionnalité je suis preneur, pour voir à  quoi ça sert. :)

    J'ai du utiliser le code qui sous-classe une NSAffineTransform, autant pour moi  :o
    Il me semble que j'avais trouvé un exemple sur le site d'apple. Je cherche la page et le code que j'avais utilisé pour un test perso. Je poste ca dans la journée.
  • ObiObi Membre
    21:42 modifié #77
    J'ai retrouvé l'exemple sur le site d'apple :
    http://developer.apple.com/samplecode/Transformed_Image/Transformed_Image.html
    Voici le code du shear, il y a peut-etre moyen d'en faire quelque chose  ???

    <br />const NSAffineTransformStruct identity = {1,0,0,1,0,0};<br /><br />@implementation NSAffineTransform (Shearing)<br />&nbsp; <br />- (void) shearXBy: (float) xShear yBy: (float) yShear; {<br />&nbsp; NSAffineTransform *shearTransform = [[NSAffineTransform alloc] init];<br />&nbsp; &nbsp; <br />&nbsp; NSAffineTransformStruct&nbsp; transformStruct = [shearTransform transformStruct];<br />&nbsp; &nbsp; <br />&nbsp; transformStruct.m21 = xShear;<br />&nbsp; transformStruct.m12 = yShear;<br />&nbsp; <br />&nbsp; [shearTransform setTransformStruct:transformStruct];<br />&nbsp; [self appendTransform:shearTransform];<br />&nbsp; [shearTransform release];<br />&nbsp; }<br /><br />&nbsp; // In case you only want to shear one axis at a time...<br />- (void) shearXBy:(float) xShear { [self shearXBy:xShear yBy:0.0];&nbsp; }<br />- (void) shearYBy:(float) yShear&nbsp; {&nbsp; [self shearXBy:0.0 yBy:yShear]; }<br /><br />- (NSAffineTransform *) resetToIdentityMatrix {<br />&nbsp; [self setTransformStruct:identity];<br />&nbsp; return self;<br />&nbsp; }<br />&nbsp; <br />@end<br />
    
  • Eddy58Eddy58 Membre
    21:42 modifié #78
    Merci pour cet exemple Obi :)
    Le mode shear permet en effet de spécifier ces propres matrices pour faire des effets, ici, quand les arrêtes opposées du rect se déplacent en sens inverse l'une de l'autre, ce qui provoque un étirement ou un rétrécissement selon les réglages, et donc un effet de pseudo-3D. C'est sympa, il faudrait que je fasse des essais avec CGAffineTransformMake, qui permet de créer ses matrices, afin de recréer cet effet.
  • ObiObi Membre
    21:42 modifié #79
    dans 1113045268:

    Merci pour cet exemple Obi :)
    Le mode shear permet en effet de spécifier ces propres matrices pour faire des effets, ici, quand les arrêtes opposées du rect se déplacent en sens inverse l'une de l'autre, ce qui provoque un étirement ou un rétrécissement selon les réglages, et donc un effet de pseudo-3D. C'est sympa, il faudrait que je fasse des essais avec CGAffineTransformMake, qui permet de créer ses matrices, afin de recréer cet effet.


    Si je peux rendre service  ;)

    J'ai fais une recherche dans mes archives et j'ai retrouvé un bout de code que j'avais crée pour imiter un effet 3D de perspective. Bon, c'est fait à  la hache et il faut surement le modifier un peu (je l'avais fait pour une NSImage carrée et sans volonté d'optimiser)  :-\\
    A vous de tester dans votre projet, mais le resultat est pas trop trop mal, je trouve.
    En inversant quelques valeur, c'est facile de faire le meme effet mais vertical.

    <br />+(NSImage*)perspective:(NSImage*)image value:(float)value {<br />	float sw = value;<br />	float w = [image size].width;<br />	float h = [image size].height;<br />	float w2 = w * ((sw&gt;0 ? sw : -sw) + 1);<br />	float m = 2 * (w - w2) / h;<br />	NSSize size = NSMakeSize(w2,h);<br />	<br />	NSPoint point =  NSMakePoint(0,0);<br />	NSRect rect = NSMakeRect(0, 0, [image size].width, [image size].height);<br />	<br />	NSImage *tempImage = [[NSImage alloc] initWithSize:size];<br />	<br />	[tempImage lockFocus];<br />		int i;<br />		for (i=0; i &lt;= (int)h; i++) {<br />			float w3;<br />			float x;<br />			if (sw &gt; 0) {<br />				w3 = m * (float)i + w2;<br />				x = 0 - (m * (float)i) / 2;<br />			} else {<br />				w3 = 2*w - w2 - m * (float)i;<br />				x = w2 - w + (m * (float)i) / 2;<br />			}<br />			NSRect rect1 = NSMakeRect(x, (float)i, w3, 1);<br />			NSRect rect2 = NSMakeRect(0, (float)i, w, 1);<br />			[image drawInRect:rect1 fromRect:rect2 operation:NSCompositeSourceOver fraction:1.0];<br />		}<br />	[tempImage unlockFocus];<br />	return tempImage;<br />}<br />
    


    :)beta:
  • Eddy58Eddy58 Membre
    21:42 modifié #80
    Ton effet de perspective a l'air cool Obi, mais les fonctions CGS et CG nécessaires nous permettent seulement de jouer avec des transformations affines, pas avec des images, c'est le système qui s'occupe lui même de recalculer le contenu de la fenêtre. Le shear nous permet de faire une pseudo 3D, mais on ne pourra pas obtenir de la vraie 3D, d'une part car c'est de la 2D, et d'autre part car la propriété des transformations affines est qu'elles préservent le parallèlisme des lignes, en faites seules les longueurs et les angles changent. :)
  • ObiObi Membre
    21:42 modifié #81
    dans 1113054756:

    Ton effet de perspective a l'air cool Obi, mais les fonctions CGS et CG nécessaires nous permettent seulement de jouer avec des transformations affines, pas avec des images, c'est le système qui s'occupe lui même de recalculer le contenu de la fenêtre. Le shear nous permet de faire une pseudo 3D, mais on ne pourra pas obtenir de la vraie 3D, d'une part car c'est de la 2D, et d'autre part car la propriété des transformations affines est qu'elles préservent le parallèlisme des lignes, en faites seules les longueurs et les angles changent. :)


    Okay, je garde mon code pour moi  :P
    J'aimerais bien voir à  quoi ressemble le code sur lequel vous bossez, même si je ne suis pas du tout calé dans ce domaine. Une fois les methodes ternimées, on peut imaginer des tas d'utilisations, autre qu'un économiseur d'ecran, complementaires d'exposé ou toutes nouvelles. J'ai hate de voir la suite  :o
    Ce serait sympa à  l'avenir de le proposer sous forme de framework, comme GraphTool !
  • Vinc26Vinc26 Membre
    21:42 modifié #82
    dans 1113054756:

    Ton effet de perspective a l'air cool Obi, mais les fonctions CGS et CG nécessaires nous permettent seulement de jouer avec des transformations affines, pas avec des images, c'est le système qui s'occupe lui même de recalculer le contenu de la fenêtre. Le shear nous permet de faire une pseudo 3D, mais on ne pourra pas obtenir de la vraie 3D, d'une part car c'est de la 2D, et d'autre part car la propriété des transformations affines est qu'elles préservent le parallèlisme des lignes, en faites seules les longueurs et les angles changent. :)


    Je comprends pas tout : ça veut dire que si on demande une fenêtre toute déformé qui ai l'allure d'un truc en 3D sans en être, seus ses bords seront déformés alors que son contenu restera plat de chez plat ???

    Mais alors pourquoi l'effet génie, lui, déforme bords et contenu ?
  • Eddy58Eddy58 Membre
    21:42 modifié #83
    dans 1113056663:

    Okay, je garde mon code pour moi  :P

    Personnellement, je l'ai mis de côté, je l'essaierais quand je pourrais, et il pourrait très bien me servir un de ces jours pourquoi pas ? ;)

    dans 1113056663:

    J'aimerais bien voir à  quoi ressemble le code sur lequel vous bossez, même si je ne suis pas du tout calé dans ce domaine.

    De mon côté, rien d'exceptionnel, je trouve cela à  la portée de tous, des CGAffineTransform(), dans une routine d'animation étape par étape, qui dans un projet test simule l'animation d'une fenêtre...Le code dont Bru s'occupe est très particulier, il se base sur un projet OpenSource de Desktop Manager (voir en début de ce thread), dont il a principalement adapté les routines de code injection (prise de contrôle du dock) pour les besoins du projet.

    dans 1113056663:

    Une fois les methodes ternimées, on peut imaginer des tas d'utilisations, autre qu'un économiseur d'ecran, complementaires d'exposé ou toutes nouvelles. J'ai hate de voir la suite  :o
    Ce serait sympa à  l'avenir de le proposer sous forme de framework, comme GraphTool !

    Toutes les idées sont bonnes à  étudier Obi. :fouf):
  • Eddy58Eddy58 Membre
    21:42 modifié #84
    dans 1113058634:

    Je comprends pas tout : ça veut dire que si on demande une fenêtre toute déformé qui ai l'allure d'un truc en 3D sans en être, seus ses bords seront déformés alors que son contenu restera plat de chez plat ???

    Non, le contenu suit bien sûr lui aussi le calcul de la transformation affine. :)

    dans 1113058634:

    Mais alors pourquoi l'effet génie, lui, déforme bords et contenu ?

    L'effet génie n'est pas généré par des transformations affines. Les lignes de la fenêtres se courbent, il doit y avoir une histoire de courbes de beziers la-dedans. D'autres fonctions CGS, que je ne connais pas, et qui ça se trouve ne sont documentées nulle part ailleurs que chez Apple, s'en occupent. ;)
  • Vinc26Vinc26 Membre
    21:42 modifié #85
    dans 1113059455:

    dans 1113058634:

    Je comprends pas tout : ça veut dire que si on demande une fenêtre toute déformé qui ai l'allure d'un truc en 3D sans en être, seus ses bords seront déformés alors que son contenu restera plat de chez plat ???

    Non, le contenu suit bien sûr lui aussi le calcul de la transformation affine. :)


    Et bien tu confirmes donc bien qu'il est possible de faire de la fausse 3D. Comme je l'ai fait dans FinalCutPro pour faire le petit film qui illustre mon idée  ;)

    ...a moins que je n'ai encore rien compris...

    Bref laisse tomber  :crackboom:-  ! Il vaut mieux que tu passe ton temps a nous pondre une jolie Beta de tout ça plutôt qu'à  essayer de m'expliquer un truc que je pige pas  o:)
  • Eddy58Eddy58 Membre
    avril 2005 modifié #86
    dans 1113060011:

    Et bien tu confirmes donc bien qu'il est possible de faire de la fausse 3D. Comme je l'ai fait dans FinalCutPro pour faire le petit film qui illustre mon idée  ;)

    Non, de la fausse 3D, ce n'est pas des transformations affines qui, je le répète, ont pour propriété de préserver le parallélisme des lignes. En 3D, quand tu prends un carré vu de face, et que tu lui fait faire une rotation sur l'axe z, c'est à  dire en profondeur, les lignes ne sont plus parallèles avec l'effet de perspective, mais ont tendances à  se rejoindre. Final Cut Pro, utilise des routines dans le genre de celle qu'Obi a mise dans un post ci-dessus, pour simuler une perspective, voir même OpenGL pour obtenir de la vraie 3D (je n'ai jamais utilisé FCP). :)

    dans 1113060011:

    ...a moins que je n'ai encore rien compris...

    Encore un petit effort Vinc26. ;)
  • Vinc26Vinc26 Membre
    21:42 modifié #87
    Bon bon. Là  j'ai compris  :adios!:

    Donc il est clair que cet économiseur d'écran ne pourrat jamais donner une impression de fen^tre qui volent en 3D. Ok.

    Ce qui est possible (et encore... il faudra que la carte graphique soit puissante), c'est faire dans les fenêtres en utilisant des scale, et rot, et des déplacement.

    Dommage pour la 3D...

    Et comme j'ai enfin tout compris, on peut pas directement utiliser OpenGL avec les fenêtre. On doit passer par une capture de chauqe fenêtre. Très looooong de capturer tout ça... surtout s'il faut les faire passer devant etc... et pas forcement joli à  voir.

    Bon bon... j'ai compris.

    Dommage pour l'effet des fenêtre qui volent. Ca prouve un truc : c'est qu'on n'est vraiment pas face à  un système donc l'interface est en 3D.

    Et pourtant, je suis certain qu'il doit y avoir un truc hyper simple pour récuperer en un clin d'oeil sans que ça se voit le contenu et les positions de chaque fenêtre, pour ensuite l'appliquer à  un environement openGL. Mais... comme d'hab... c'est non-documenté  :'(
  • ObiObi Membre
    21:42 modifié #88
    dans 1113058994:

    Toutes les idées sont bonnes à  étudier Obi. :fouf):


    J'y reflechi, j'y reflechi...  :P

    En ce qui concerne l'effet genie du dock, j'imagine aussi que ce sont des methodes privées ou non documentées qui sont utilisées. Mais il ne me semble pas avoir vu ce genre d'effets allieurs dans le système ou dans d'autres applis, à  part la palette de Word. Me trompe-je ?
    Ca pourrait donc etre des methodes écrites uniquement pour le dock et pas utilisables par le commun des mortels ?
    J'aimerais bien avoir accès à  ce genre d'effets dans mes applis, je trouve ca dommage :( J'ai testé "WildWindows" mais les effets sont aussi limités à  la 2D.
    J'imagine qu'Apple bosse sur de nouvelles fonctions concernant les fenetres pour booster exposé, semblable à  ce qu'on peut voir dans le projet Glass de Sun. De ce que j'ai pu voir de Tiger, il n'y a rien de nouveau de ce coté, dommage, dommage  :crackboom:-
    Il y a peut-etre un espoir du coté de Core Image, qu'en pensez-vous ?
  • ObiObi Membre
    21:42 modifié #89
    Je suis tombé sur un site qui propose une classe qui fait "tourner" une fenetre (comme les widgets de dashboard) avec un effet de perspective. C'est ici : http://www.zathras.de/angelweb/sourcecode.htm, tout en bas de la page.
    J'ai pas vraiment eu le temps de regarder les sources mais l'effet est sympa ! (même si ca rame sur mon g4 :'( )
    A vous de voir si ca peut etre utile :P
  • BruBru Membre
    21:42 modifié #90
    dans 1113390445:

    Je suis tombé sur un site qui propose une classe qui fait "tourner" une fenetre (comme les widgets de dashboard) avec un effet de perspective. C'est ici : http://www.zathras.de/angelweb/sourcecode.htm, tout en bas de la page.
    J'ai pas vraiment eu le temps de regarder les sources mais l'effet est sympa ! (même si ca rame sur mon g4 :'( )
    A vous de voir si ca peut etre utile :P


    Moi, j'ai une appli cocoa (avec les sources) qui permet de faire pivoter les fenêtres, mais aussi les faire pulser (effet zoom in/zoom out).

    Ca s'appelle RotatedWindows.

    .
  • Eddy58Eddy58 Membre
    21:42 modifié #91
    dans 1113066893:

    En ce qui concerne l'effet genie du dock, j'imagine aussi que ce sont des methodes privées ou non documentées qui sont utilisées. Mais il ne me semble pas avoir vu ce genre d'effets allieurs dans le système ou dans d'autres applis, à  part la palette de Word. Me trompe-je ?
    Ca pourrait donc etre des methodes écrites uniquement pour le dock et pas utilisables par le commun des mortels ?
    J'aimerais bien avoir accès à  ce genre d'effets dans mes applis, je trouve ca dommage :( J'ai testé "WildWindows" mais les effets sont aussi limités à  la 2D.

    En effet, la MBU est bien soignée par Apple, qui ont du à  mon avis leur fournir la doc CGS nécessaire, pour mettre un effet Génie dans Word. Mais ils ont beau être bien soignés, ce n'est pas pour autant qu'ils vont nous sortir un MSN potable....:P

    dans 1113066893:

    J'imagine qu'Apple bosse sur de nouvelles fonctions concernant les fenetres pour booster exposé, semblable à  ce qu'on peut voir dans le projet Glass de Sun. De ce que j'ai pu voir de Tiger, il n'y a rien de nouveau de ce coté, dommage, dommage  :crackboom:-
    Il y a peut-etre un espoir du coté de Core Image, qu'en pensez-vous ?

    D'après le peu que j'ai lu et vu sur le projet Glass, celui-ci se base sur un desktop 3D. Concept intéressant, mais qui doit être assez gourmand en ressources machines non ? (D'autant plus que c'est du Java)
    Core Image, a l'air très alléchant, mais il est surtout conçu comme les APIs Cocoa, pour oeuvrer a l'intérieur d'une application, et pas pour aller traficoter à  gauche et à  droite. ;)


    Je suis tombé sur un site qui propose une classe qui fait "tourner" une fenetre (comme les widgets de dashboard) avec un effet de perspective. C'est ici : http://www.zathras.de/angelweb/sourcecode.htm, tout en bas de la page.
    J'ai pas vraiment eu le temps de regarder les sources mais l'effet est sympa ! (même si ca rame sur mon g4 )
    A vous de voir si ca peut etre utile

    Oui j'ai jeté un coup d'oeil, c'est très bien foutu comme effet, quoique très gourmand en ressources, mais encore une fois, c'est du pure Cocoa, et inutilisable avec les fonctions CGAffine et CGS. :o
Connectez-vous ou Inscrivez-vous pour répondre.