ich bin eben auf ein problem gestoßen, was ich sonst nie richtig hatte:
Wie bekannt ist, nutzt eine 32-Bit-Farbe auch wirklich alle 32Bit aus, von vollem weiß ($FFFFFFFF) bis transparentem schwarz ($00000000).
Nun möchte ich bei einer Prozedur als optionalen Parameter eine Farbe übergeben.
Da eine farbe ja alle 32-Bit nutzt kann ich hier als Typ keine Long nutzen, da sonst #PB_Default = -1 = $FFFFFFFF ist.
Also habe ich bis heute einer Farbe immer den Typ Quad gegeben, sodass ich sicher sein kann, das mit -1 wirklich #PB_Default gemeint ist, also keine Farbe übergeben wurde.
Das klappt bei einer direkten übergabe auch.
Wenn nun aber "jemand" eine Farbe von zB Point() oder so übergibt, Funktioniert das nicht, weil Point eine Long zurück gibt.
Code: Alles auswählen
Procedure Beispiel(Color.q=#PB_Default)
If Color = #PB_Default
Debug "Default"
Else
Debug RSet(Hex(Color,#PB_Long),8,"0")
EndIf
EndProcedure
Beispiel()
Beispiel($FF0000FF)
Beispiel($00000000)
Beispiel($FFFFFFFF)
Debug "---"
CreateImage(0, 1, 1, 32)
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AllChannels)
Plot(0,0,$FFFFFFFF)
Beispiel(Point(0,0))
Quad.q = Point(0,0)
Beispiel(Quad)
StopDrawing()
Ohne das der nutzer selbst den Typ konvertieren muss mit zB Quad.q = Color & $FFFFFFFF