Aktuelle Zeit: 10.04.2020 09:16

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Macros: CSSExpand($ABC->$AABBCC) Invert($AA00CC->$CC00AA)
BeitragVerfasst: 29.05.2016 15:08 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Hier mal zwei Macros, die die Arbeit mit Hex Farbcodes vielleicht ein wenig erleichtern.
Das erste ist eigentlich eher Spielerei, da es wahrscheinlich länger dauert das Macro aufzurufen, als einfach den korrekten Hex-Wert zu tippen.
In CSS kann man jedenfalls Farben als 3-wertigen Hex-Wert angeben. Der Interpreter expandiert die Werte, in dem gegebene Wert für die 1er und 16er Stelle verwendet wird. Kurz, aus $ABC wird $AABBCC

Das zweite könnte für die Web-Erfahrenen schon eher interessant sein. Es sorgt dafür, dass der Rot-Wert vorne und der Blau-Wert hinten steht.
D.h. $FF0000 ist endlich rot, wie man es gewohnt ist :D

Code:
Macro colorExpand(_in_, _out_)   
   b = _in_>>8         
   g = (_in_>>4)%16   
   r = (_in_)%16
   
   b=b<<4 + b
   g=g<<4 + g
   r=r<<4 + r
   
   _out_ = b<<16 + g<<8 + r   
EndMacro

a = $AB9
colorExpand(a, c)
Debug "colorExpand($"+Hex(a)+"): $"+Hex(c)
 


Macro colorInvert(_in_, _out_)
   b = _in_>>16         
   g = (_in_>>8)%$100   
   r = (_in_)%$100   
   _out_ = r<<16 + g<<8 + b   
EndMacro

Debug "  "
a = $509CF3
colorInvert(a, c)
Debug "HTML Color: $"+Hex(a)
Debug "Red: $"+Hex(Red(c))
Debug "Grn: $"+Hex(Green(c))
Debug "Blu: $"+Hex(Blue(c))

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Macros: CSSExpand($ABC->$AABBCC) Invert($AA00CC->$CC00AA
BeitragVerfasst: 29.05.2016 15:13 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Das finde ich als Macro ehrlich gesagt etwas unpraktisch. Vor allem, weil die Variablen r, g und b benutzt, aber nie definiert werden. Und wenn man im Programmverlauf zufällig Variablen mit diesem Namen benutzt, z.B. r als String, dann geht's gar nicht mehr. Mal davon abgesehen, dass das Macro dann einfach r überschreiben würde.

Meine Empfehlung wäre deshalb eher auf eine Procedure zu wechseln.

_________________
Ubuntu Gnome 19.10 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Macros: CSSExpand($ABC->$AABBCC) Invert($AA00CC->$CC00AA
BeitragVerfasst: 29.05.2016 15:18 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Danke für den Tipp. :allright:
Ja, die Variablennamen müsste man wenn dann irgendwie "unique" machen "myMacro_colorInvert_ValueOfRed" oder so ein Kram.

Im Sinne der Kapselung gefallen mir Prozeduren auch wesentlich besser, zumal ich dann einfach etwas zurückgeben kann und keine "by Reference" Variable brauche.

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Macros: CSSExpand($ABC->$AABBCC) Invert($AA00CC->$CC00AA
BeitragVerfasst: 29.05.2016 15:36 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Code:
Macro ColorInvert (_in_)
   RGB(Blue(_in_), Green(_in_), Red(_in_))
EndMacro

Debug Hex(ColorInvert($123456))   ; => 563412

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Macros: CSSExpand($ABC->$AABBCC) Invert($AA00CC->$CC00AA
BeitragVerfasst: 29.05.2016 15:41 
Offline

Registriert: 29.08.2004 13:18
Code:
Macro colorExpand(_in_)   
  ((_in_>>8)*$110000+ ((_in_>>4)&$F)*$1100+ ((_in_)&$F)*$11) 
EndMacro

a = $AB9
c= colorExpand(a)
Debug "colorExpand($"+Hex(a)+"): $"+Hex(c)


Und es dürfte schneller gehen, wenn du statt % die UND-Verknüpfung & wählst.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Macros: CSSExpand($ABC->$AABBCC) Invert($AA00CC->$CC00AA
BeitragVerfasst: 29.05.2016 18:21 
Offline
Benutzeravatar

Registriert: 20.06.2013 23:27
zwar nicht als PB Code aber da kann ich das hier anbieten. Ich habe mir das Tool programmiert weil die verdrehten Color Werte nerven :D

viewtopic.php?f=10&t=29644

_________________
PureBasic v5.30 + v5.44 LTS + v5.62 | Windows 7 x64 - Gforce GTX 950 - AMD FX6200 Six Core 3.80 | 26GB RAM


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye