[fpc-devel] proposal for palette-related graph unit interface changes
Nikolay Nikolov
nickysn at users.sourceforge.net
Wed Sep 15 18:03:27 CEST 2010
On 09/15/2010 06:27 PM, Tomas Hajny wrote:
> On Wed, September 15, 2010 16:39, Nikolay Nikolov wrote:
>> Currently, the following palette-related things from the fpc graph
>> unit aren't TP7 compatible:
>>
>> MaxColors (constant)
>> PaletteType (record)
>>
>> procedure SetAllPalette(const Palette: PaletteType);
>> procedure GetPalette(var Palette: PaletteType);
>> function GetPaletteSize: smallint;
>> procedure GetDefaultPalette(var Palette: PaletteType);
> .
> .
>> so the main difference is that fpc's PaletteType represents a VGA 256 to
>> RGB colour palette, while TP7's represents EGA's 16->64 palette. My
>> proposal is to rename:
>>
>> MaxColor -> RGBPaletteMaxColor
>> PaletteType -> RGBPaletteType
>> SetAllPalette -> SetAllRGBPalette
>> GetPalette -> GetAllRGBPalette
>> GetDefaultPalette -> GetDefaultRGBPalette
>> GetPaletteSize -> GetRGBPaletteSize (this one might be unnecessary -
>> will have to check if GetPaletteSize already returns the same values as
>> TP7; we might still introduce GetRGBPaletteSize for consistency with the
>> other RGBPalette procedures/functions, though)
> .
> .
>
> Regardless of outcomes of discussion whether some change would be
> appropriate at all or not, I believe that it may be better not to rename
> the existing procedures and functions using the PaletteType but rather
> provide overloaded versions of those calls.
This could work for some of the functions, but not all of them. The
problematic one is SetAllPalette, which is defined in TP7 as:
procedure SetAllPalette(var Palette);
which is, unfortunately, very evil, because it won't catch the error at
compile time if you pass the wrong type :(
But it might not be necessary to introduce it exactly like that. Using a
typed variable will probably work with 99.9% of the TP7 code?
More information about the fpc-devel
mailing list