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. >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: stojkovic.i...@gmail.com _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal