Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2009-08

Re: TFPColor vs TColor

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Igor Stojkovic

I am working on something similar so I found this mail. Here is my solution, maybe someone can use it:

TDNAColor = packed record
    case Integer of
    0: (
         b : Byte; //blue
         g : Byte; //green
         r : Byte; //red
         a : Byte; //alpha
       );
    1: (
         l : Byte; //lightness
         s : Byte; //saturation
         h : Byte; //hue
       );
    2: (
         Value: LongWord;
       );
  end;
Now you can have col: TColor and set it like col.Value := $FF80FF60
and after that col.r will be $80, col.g will be $FF and col.b will be
$60. If you set col.r := $20 then col.Value will be $FF20FF60.
Show quoted text 26 lines
Incidentally, while working with the TfpgColor type, I've come up with a rather sloppy, but (for the time being) usable solution. I keep a "fixme" comment in the code, because it may very well blow up in my face sometime. type TfpgIntColor = TfpgColor; TfpgRecordColor = record blue, green, red, alpha : byte; // order is important end; operator := (c_in : TfpgRecordColor) : TfpgIntColor; var p : pointer; begin p := @c_in; result := TfpgIntColor (p^); end; operator := (c_in : TfpgIntColor) : TfpgRecordColor var p : pointer; begin p := @c_in; result := TfpgRecordColor (p^); end;
Regards, Igor Stojkovic mailto:

Reply by email