[AmigaOS 3.x] changer couleur pour écriture

6 sujets de 1 à 6 (sur un total de 6)

  • glames

      #6052

      Salut,

      Je cherche à initialiser dans un écran 16 bits la couleur d’écriture (je fais ensuite un Text). J’utilise Picasso96 sous un environnement AmigaOS 3.x.

      Sous Mos, j’utilise : SetRPAttrs(p_rspEcran, RPTAG_PenMode, FALSE, RPTAG_FgColor, l_couleur, RPTAG_BgColor, l_couleur, TAG_DONE);

      Sous OS4, j’utilise IGraphics->SetRPAttrs(p_rspEcran, RPTAG_APenColor, l_couleur, RPTAG_BPenColor,l_couleur, TAG_DONE);

      où l_couleur indique… une couleur :-)

      Mais sous AmigaOS 3.x, je ne vois que des initialisations par n° de crayon (pen). Je n’ai trouvé aucune instruction dans la documentation de Picasso96.

      Quelqu’un pourrait-il m’aider? J’ai essayé des trucs du style ObtainBestPen mais le résultat est plutôt décevant…

      Merci d’avance.

      Glames

      DaddyDav

        #99556

        Je ne sais pas si ça peu t’aider mais voici ce que j’utilise dans Zip-Zap :

        //Allocation des PEN

        if(!fs)

        {

        penRouge=ObtainBestPen(win->WScreen->ViewPort.ColorMap,0xEBEBEBEB,0x00000000,0x00000000, OBP_Precision, PRECISION_EXACT, TAG_END);

        penOmbre=ObtainBestPen(win->WScreen->ViewPort.ColorMap,0x08080808,0x08080808,0x08080808, OBP_Precision, PRECISION_EXACT, TAG_END);

        penselect=ObtainBestPen(win->WScreen->ViewPort.ColorMap,0xFFFFFFFF,0xBEBEBEBE,0x00000000, OBP_Precision, PRECISION_EXACT, TAG_END);

        if(penRouge==-1 || penOmbre==-1 || penselect==-1) quit(GetCatalogStr(catalog,MSG_ALERT_29,MSG_ALERT_29_STR)); //"impossible d'allouer les couleurs"

        }

        else

        {

        penRouge=35;

        penOmbre=253;

        penselect=220;

        }

        la variable « fs » correspond à « fullscreen » c’est à dire dans son propre écran. Donc la première partie du code est pour la fenêtre qui s’ouvre sur le bureau.

        Pour le reste des attributions j’utilise TTengine donc pas le code de base pour l’écriture.

        Edit : pour info Zip-Zap est compilé pour Aos68k, MOS et Aos4 (même s’il pose encore de petit problème).

        glames

          #99557

          Salut DaddyDav,

          En fait, j’aimerais me passer des pens si possible et définir la couleur via une valeur 0xAARRGGBB (comme mon écran est en 16 bits).

          Merci pour ton aide.

          Glames

          henes

            #99558

            De mémoire (si je raconte des c*nneries, quelqu’un me corrige, merci. Je n’ai jamais fait et je connais juste le principe) : ce que tu veux faire n’est pas possible mais une astuce consiste à utiliser un pinceau et constamment changer sa couleur avant utilisation.

            Genre :

            n = ObtainPen(cm, -1, 0, 0, 0, PEN_EXCLUSIVE | PEN_NO_SETCOLOR)

            SetAPen(rp, n)

            while(running)

            {

            SetRGB32(vp, n, 0xffffffff, 0x00000000, 0x00000000)

            Text() /* red */

            SetRGB32(vp, n, 0x00000000, 0xffffffff, 0x00000000)

            Text() /* green */

            }

            ReleasePen(n)

            Comme il n’y a pas de pinceau hardware derrière, cela fonctionne et les couleurs ne cyclent pas à l’écran…

            Mais cela ne marche que sur un écran hi/truecolor.

            glames

              #99559

              Salut Henes,

              J’ai l’impression que ton « astuce » fonctionne bien.

              Pas encore trop de recul mais les premiers résultats sont encourageants :-)

              Un gros merci!

              glames

                #99560

                Salut Henes,

                Avec un peu plus de recul, ça fonctionne toujours!

                Merci.

              6 sujets de 1 à 6 (sur un total de 6)

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

              Forums AmigaOS, MorphOS et AROS Développement [AmigaOS 3.x] changer couleur pour écriture

              Amiga Impact