[pascal] SetRgbPalette

0

Jak używać w TPascalu procedury

SetRgbPalette(nr, r,g,b : Integer)

?
Podobno trzeba jako nr podać jakąś dziwną liczbę, niezgodną z normalnymi indexami kolorów.

0

SetRGBPalette (procedure) (Graph unit)
???????????????????????????????????????????
Modifies palette entries for the IBM 8514 and VGA drivers.

Declaration:
procedure SetRGBPalette(ColorNum, RedValue, GreenValue, BlueValue:
Integer);

Target:
Real, Protected

Remarks:
ColorNum defines the palette entry to be loaded, while RedValue, GreenValue,
and BlueValue define the component colors of the palette entry.

For the IBM 8514 display, ColorNum is in the range 0..255. For VGA, ColorNum
is in the range 0..15. Only the lower byte of RedValue, GreenValue or
BlueValue is used, and out of this byte, only the 6 most-significant bits
are loaded in the palette.

PS:

                 TcolorRGB = record
                         R : byte;
                         G : byte;
                         B : byte;
                  rezerved : boolean;
                            end;

               TRGBpalette = array[0..255] of TcolorRGB;

              TPH13pattern = ^TRGBpalette;

{*******************************  Get8pal  *********************************}
procedure Get8pal(var palette : TPH13pattern);
var licznik : byte;
begin
port[$3c7]:=0;
for licznik:=0 to 255 do
    begin
    palette^[licznik].r:=port[$3c9];
    palette^[licznik].g:=port[$3c9];
    palette^[licznik].b:=port[$3c9];
    end;
end;{Get8pal}

{********************************  ResetRGB  *******************************}
procedure ResetRGB(R,G,B : byte);
var licznik : word;
begin
port[$3c8]:=0;
for licznik:=0 to 255 do
    begin
    port[$3c9]:=R;
    port[$3c9]:=G;
    port[$3c9]:=B;
    end;
for licznik:=0 to 63999 do
    mem[$A000:licznik]:=0;
end;{ResetRGB}

{********************************  Set8pal  ********************************}
procedure Set8pal(var palette : TPH13pattern);
var licznik : byte;
begin
port[$3c8]:=0;
for licznik:=0 to 255 do
    begin
    port[$3c9]:=palette^[licznik].r;
    port[$3c9]:=palette^[licznik].g;
    port[$3c9]:=palette^[licznik].b;
    end;
end;{Set8pal}
{*******************************  MovePal8  ********************************}
procedure MovePal8(var palette : TPH13pattern;count : byte);
var licznik : word;
begin
for licznik:=1 to count do
    begin
    palette^[255-count+licznik].r:=palette^[licznik].r;
    palette^[255-count+licznik].g:=palette^[licznik].g;
    palette^[255-count+licznik].b:=palette^[licznik].b;
    end;
for licznik:=1 to 255-count do
    begin
    palette^[licznik].r:=palette^[licznik+count].r;
    palette^[licznik].g:=palette^[licznik+count].g;
    palette^[licznik].b:=palette^[licznik+count].b;
    end;
end;{MovePal8}

{********************************  MoveRGB  ********************************}
procedure MoveRGB(var palette : TPH13pattern;count : byte);
var licznik : word;
begin
for licznik:=1 to count do
    setcol(255-count+licznik,palette^[licznik].r,palette^[licznik].g,palette^[licznik].b);
for licznik:=1 to 255-count do
    setcol(licznik,palette^[licznik+count].r,palette^[licznik+count].g,palette^[licznik+count].b);
end;{MoveRGB}
0

Dzieki wielkie! Sprawdzę czy działa!

[dopisane]
Ale to, że wziąłeś to z helpa jako cytat, to mnie irytuje (zielone literki i kursywa [diabel] )

0

a bo co, z helpa to źle ? weź się najpierw zastanów proszę czy sam kogoś nie irytujesz, zanim napiszesz że to ten ktoś irytuje Ciebie. i jeszcz nic nie pisze.

a działać działa na bank.

1 użytkowników online, w tym zalogowanych: 0, gości: 1