![]() |
AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)
TAlphaColor ist ein Cardinal :warn:
![]() Im Quelltext sind sie ja nicht typisiert, ich gehe mal davon aus dass z.B.
Delphi-Quellcode:
auch als Cardinal erweitert wird? Sein Wert ist ja
TAlphaColorRec.Red
Delphi-Quellcode:
, vielleicht macht der iOS64 Compiler hier einen anderen Typen draus?
Alpha or TAlphaColor($FF0000);
![]() |
AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)
Ja, ich dachte mir das auch in die Richtung,
aber wegen Alpha = TAlphaColor($FF000000); sollte doch immer ein 32-Bit wert herauskommen, der nicht z.B. in 16.Bit passt. |
AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)
der unterschied zwischen cardinal (4 bytes unsigned) und integer (4 bytes signed) ist doch nur die vorzeichenunterstützung. integer ist signed, cardinal unsigned. möglicherweise liegt da auch der hund begraben. egal, runtergebrochen ist ein bit immer ein bit und fertig. 4 bytes lassen sich immer auch mit 4 bytes füttern. alles andere ist nur darstellerei :)
im debugger ist mir beim ios debuggen schon öfter aufgefallen, dass datentypen mit 64 bit statt den erwarteten 32 geführt werden. eigentlich schließt der code das in diesem fall ja schon aus und leider will mein debugger die cardinal-werte mit ios auch nicht als hex anzeigen (an anderer stelle war es auch schonmal andersherum, dass nur hex angezeigt wurde). aber vielleicht gibt die längenberechnung ja auch einen "gepatchten" wert zurück, damit ... was weiß ich wozu :) aber was solls. der int-wert funzt mindestens schonmal unter ios und windows. android hab ich nicht getestet. |
AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)
Mit Little/Big Endian und damit BGRA vs. RGBA vs. ARGB hat das aber nichts zu tun? :?:
EDIT: Vergleiche am Ende von TAlphaColorRec:
Delphi-Quellcode:
PAlphaColorRec = ^TAlphaColorRec;
TAlphaColorRec = record const Alpha = TAlphaColor($FF000000); Aliceblue = Alpha or TAlphaColor($F0F8FF); //... Null = TAlphaColor($00000000); constructor Create(const Color: TAlphaColor); class var ColorToRGB: function (Color: TAlphaColor): Longint; case Cardinal of 0: (Color: TAlphaColor); 2: (HiWord, LoWord: Word); 3: {$IFDEF BIGENDIAN} (A, R, G, B: System.Byte); {$ELSE} (B, G, R, A: System.Byte); {$ENDIF} end; |
AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)
Ja das dachte ich zuerst auch.
Aber im Beispiel passiert das auch ohne das die Farbe mit PixelFormat im Canvas verwurstet wird. Ich hatte es getestet indem ich z.B. Rectangle.Fill.Collor hole, lokal ändere und und schreibe, aber im Demo arbeite ich bereits mit einer Schattenvariablen vom Typ TAlphaColor. Das hat dann gar nichts mehr mit der Farbe und Canvas an sich zu tun. Das kann es also eigentlich nicht sein, weil das Pixelformat bei TAlphaColor keine Rolle spielt (nur wenn man es explizit konvertieren will), es wird ja nur als Cardinal 32-Bit Speicher für die Farbkonstante benutzt. Interessant war aber das im Debugger die Cardinal-Werte korrekt angezeigt wurden, wenn ich einzelne Bytes heraushole, dann kann man aber Unterschiede sehen. Leider funktioniert der iOS Debugger nur spärlich, deshalb kann ich mir da keinen Reim drauf machen. Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz