Previous: 4.51.2.2.14. ogSetRGBAPalette() To the Table of Contents Next: 4.51.2.2.16. ogVSync()
4.51.2.2.14. ogSetRGBAPalette() Table of Contents 4.51.2.2.16. ogVSync()

- 4.51.2.2.15. -
Table of Contents
4. Standard Units
4.51. ObjGfx40 - ObjectGraphics 4.0 Unit
4.51.2. ObjGfx40 Unit Object Types
4.51.2.2. ogDisplay object
4.51.2.2.15. ogSetRGBPalette()


4.51.2.2.15. ogSetRGBPalette()

Targets: MS-DOS, Win32 console


ObjGfx40 Unit

Sets an entry in the palette.

Declaration:
  procedure ogSetRGBPalette(colour, red, green, blue:uInt8); virtual;
Remarks:

Colour defines the palette entry to be set, while red, green, and blue define the component colours of the palette entry.

The red, green, and blue values are with a range of 0..255, where 0 is minimum and 255 is maximum.

Modifies the hardware palette with the new entry.

Restrictions:

Palettes are only relevant to 8BPP modes.

See also: Sample code:
{ogSetRGBPalette.pas}

uses
  ObjGfx40, CRT;

var 
  xx, yy, zz:uInt32;

begin
  if not screen^.ogCreate(800, 600, OG_PIXFMT_8BPP) then
    begin
      writeln('Error setting video mode');
      halt
    end;

  {Set up an optimized palette for 256 colours if dealing with 8bpp}
  with screen^ do
    if (ogGetBPP = 8) then
      begin
        for xx:=0 to 15 do
          ogSetRGBPalette(xx, (xx+1)*16-1, 255, 0);
        for xx:=0 to 15 do	  
          ogSetRGBPalette(xx+16, 255, 255-((xx+1)*16-1), 0);
        for xx:=0 to 15 do	  
          ogSetRGBPalette(xx+32, 255, 0, (xx+1)*16-1);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+48, 255-((xx+1)*16-1), 0, 255);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+64, 0, ((xx+1)*16-1), 255);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+80, 0, 255, 255-((xx+1)*16-1));

        for xx:=0 to 15 do
          ogSetRGBPalette(xx+96, 255-((xx+1)*16-1), 255, 255);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+112, 255, 255-((xx+1)*16-1), 255);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+128, 255, 255, 255-((xx+1)*16-1));

        for xx:=0 to 15 do
          ogSetRGBPalette(xx+144, 255, (xx+1)*16-1, (xx+1)*16-1);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+160, (xx+1)*16-1, 255, (xx+1)*16-1);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+176, (xx+1)*16-1, (xx+1)*16-1, 255);

        for xx:=0 to 15 do
          ogSetRGBPalette(xx+192, (xx+1)*16-1, 255-((xx+1)*16-1), 255);
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+208, 255, (xx+1)*16-1, 255-((xx+1)*16-1));
        for xx:=0 to 15 do
          ogSetRGBPalette(xx+224, (xx+1)*16-1, 255, 255-((xx+1)*16-1));

        for xx:=0 to 15 do
          ogSetRGBPalette(xx+240, (xx+1)*16-1, (xx+1)*16-1, (xx+1)*16-1);

        ogSetRGBPalette(0, 0, 0, 0);
        for xx:=0 to 255 do
          ogVLine(xx, 0, 63, xx);
      end; {if bpp=8}

  zz:=1;
  repeat
    with screen^ do
      for yy:=0 to 255 do    
        for xx:=0 to 255 do    
          if (yy=0) or (xx=255) or (zz=255) then
            ogSetPixel(256+128+xx-(zz div 2), 128+yy+(zz div 2),
                       ogRGB(xx, 255-yy, zz));
    inc(zz,2);
  until (keyPressed) or (zz>255);
  
  while keyPressed do readKey;
  readKey;
end.



Previous: 4.51.2.2.14. ogSetRGBAPalette() To the Table of Contents Next: 4.51.2.2.16. ogVSync()
4.51.2.2.14. ogSetRGBAPalette() Table of Contents 4.51.2.2.16. ogVSync()

- 4.51.2.2.15. -