Objet Poppen et valeur RGB

15 sujets de 1 à 15 (sur un total de 16)

  • 1
  • 2
  • Mod

    Tcheko

      #6648

      Yay,

      Je cherche à obtenir la valeur RGB d’un objet Poppen. Il y la méthode pour affecter une valeur RGB mais pas l’inverse.

      Comment faire pour obtenir la valeur RGB ? MUI_Penspec ? Structure privée… MUI_ObtainPen ? Et après?

      Merci pour l’éventuel coup de main :)

      henes

        #107493

        struct MUI_PenSpec color

        MUIA_Pendisplay_Spec, &color

        Mod

        Tcheko

          #107494

          henes a écrit :

          struct MUI_PenSpec color

          MUIA_Pendisplay_Spec, &color

          Merci Henes pour cette gracieuse aide mais la doc indique que penspec est une structure privée.

          Grosso modo tu m’invites à m’assoire sur cette recommandation? :)

          Quel est le format de ce char buf[32] ?

          Je crois que c’est un truc du genre rRRRRRRRRR,GGGGGGGG,BBBBBBBBB. Confirmation ?

          Il aurait pas pu foutre quatre long dont un pour l’alpha? M’enfin… Y’a sûrement une raison mystique.

          Czk

          Apres quelques essais…

          C’est plantogene comme technique.

          Si l’utilisateur sur l’objet poppen choisi un pencil déjà existant, penspec contient le numéro du pencil et non pas une couleur RGB.

          D’ailleurs le format est le suivant dans le cas d’un pencil non existant : rRRGGBB,xxxx…

          Pas classe tout ça… :/

          Si quelqu’un connait la solution propre pour obtenir la valeur RGB d’un poppen, je suis preneur.

          EDIT :

          huhu. Il y a un r ou un m de différence entre un pencil existant et une valeur RGB…

          :)

          henes

            #107495

            La solution propre est d’utiliser MUI_ObtainPen().

            Edit d’un gars qui vient juste de comprendre/décrypter le post initial comme il aurait du : oops, désolé de t’avoir fait perdre ton temps et maintenant c’est moi qui n’en ai plus. Peut-etre à demain si personne a mis son grain d’ici là :)

            Mod

            Tcheko

              #107496

              henes a écrit :

              La solution propre est d’utiliser MUI_ObtainPen().

              Edit d’un gars qui vient juste de comprendre/décrypter le post initial comme il aurait du : oops, désolé de t’avoir fait perdre ton temps et maintenant c’est moi qui n’en ai plus. Peut-etre à demain si personne a mis son grain d’ici là :)

              Je commençais à tourner en rond avec MUI_ObtainPen()… Fouillage de doc, fouillage de net sans succès.

              Je ne suis apparemment pas le seul à rencontrer cette difficulté… d’obtenir la couleur RGB depuis un poppen!

              Fab1

                #107497

                Si MUI_ObtainPen ne passe pas pour les valeurs RGB, tu peux adopter la solution hardcore et parser la structure penspec. Tu peux regarder comment fait ambient avec gfx_pen.c:

                ULONG gfx_get_penspec_value(struct MUI_RenderInfo *mri, struct MUI_PenSpec *spec)

                lien CVS ici

                Ceci dit, je ne suis pas persuadé que ce soit nécessaire.

                Mod

                Tcheko

                  #107498

                  Soir Fab1,

                  J’ai fait le tour des méthodes et des attributs de poppen… rien à faire pour obtenir la valeur RGB sinon à passer par l’attribut penspec.

                  Je vais reprendre ton code pour parser la structure penspec… Ca sera le plus rapide et simple dans l’immédiat.

                  Toutefois, je suis preneur d’autres solutions. La structure penspec est private normallement…

                  Merci!

                  Polymere

                    #107499

                    Pour mes besoins, je force le PopPen en RGB uniquement:

                    edit->TabColor1=MUI_NewObject(MUIC_Poppen,

                    MUIA_CycleChain, 1,

                    MUIA_Pendisplay_Spec, data->CalendarTabColor,

                    MUIA_Penadjust_PSIMode, 2,

                    End,

                    MUIA_Pendisplay_Spec est alors toujours du format:

                    “rffffffff,ffffffff,ffffffff”

                    A+

                    Mod

                    Tcheko

                      #107500

                      Fab1 a écrit :

                      Si MUI_ObtainPen ne passe pas pour les valeurs RGB, tu peux adopter la solution hardcore et parser la structure penspec. Tu peux regarder comment fait ambient avec gfx_pen.c:

                      ULONG gfx_get_penspec_value(struct MUI_RenderInfo *mri, struct MUI_PenSpec *spec)

                      lien CVS ici

                      Ceci dit, je ne suis pas persuadé que ce soit nécessaire.

                      Youpla,

                      Je viens d’intégrer le code mais j’obtiens toujours 0 comme retour. Je suppose que je ne passe pas le bon mri en argument.

                      Quel doit être la structure MUI_RenderInfo que je donne en argument ?

                      J’ai tenté l’objet poppen, la fenêtre sans succès…

                      Encore merci pour l’aide.

                      Polymere

                        #107501

                        Pour la structure, c’est un array de 32 char mais en pratique, c’est un string.

                        Perso je remplis quand même les octets manquant de .

                        Et je conserve le tout dans mes prefs.

                        Après soit tu parse les valeurs RGB soit tu utilise l’allocation de pen de MUI.

                        Le code que fab a donné est pas mal non plus :)

                        Fab1

                          #107502

                          Tu passes muiRenderInfo(obj) pour le mri

                          MRI qui n’est valide qu’entre setup et cleanup (si je ne dis pas de connerie), donc ne pas l’appeler dans new ou encore lorsque la fenêtre est fermée :)).

                          Mod

                          Tcheko

                            #107503

                            Bon. Je suis pas sortie de l’auberge.

                            Je veux récupérer la valeur quand la fenêtre est fermée…

                            Je dois donc faire en sorte de me coller sur l’objet quelque part pour attraper la couleur avant que la fenêtre se ferme.

                            Une idée pour faire cela? Je suppose que je dois pouvoir faire ça avec les notify ou un truc dans le genre.

                            Comme je découvre les joies de MUI (pour l’instant, j’avoue que je trouve ça assez bien foutu :))

                            Merci à tous pour votre (précieuse) aide.

                            Czk

                            Polymere

                              #107504

                              Je parle dans le vide ? :D

                              Tu peux faire une notification sur le changement de l’attribut ou faire des get lors de la fermeture.

                              Après parser la valeur RGB pure peux se faire n’importe quand.

                              A+

                              Fab1

                                #107505

                                Dans le code en question, si un pen est utilisé ça nécessite un mri valide. Mais si une valeur rgb est utilisée, peu importe évidemment, puisque la structure seule est utilisée dans ce cas.

                                Mod

                                Tcheko

                                  #107506

                                  Merci pour vos aides. J’ai ma valeur RGB maintenant.

                                  En bonne voie pour mon éditeur de skin :)

                                  D’ailleurs, à ce sujet, aucune documentation ? J’ai regardé les différents fichiers de skin et je pense que je n’ai pas toutes les options…

                                  Czk

                                15 sujets de 1 à 15 (sur un total de 16)

                                • 1
                                • 2
                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement Objet Poppen et valeur RGB

                                Amiga Impact