[AmigaOS 3.x] changer couleur pour écriture
6 sujets de 1 à 6 (sur un total de 6)
-
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
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).
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.
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