Browse Source

+ Default RGB color tables
* NOTE: The palette routine currently do not work in 24 bpp and
32 bpp modes, and there is currently NO error checking for that!

carl 26 years ago
parent
commit
695a38934e
1 changed files with 265 additions and 48 deletions
  1. 265 48
      rtl/inc/graph/palette.inc

+ 265 - 48
rtl/inc/graph/palette.inc

@@ -14,11 +14,266 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
-{CONST
-  DefaultPalette : PaletteType =
-  (255;                         }
-var
-  DefaultColors : PaletteType;
+CONST
+ { This is the standard VGA palette for the first 256 colors }
+ { at 6 bpp for each RG and B component.                     }
+ DefaultColors: Array[0..255] of RGBRec = (
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue: 168),
+  (Red:   0;Green: 168;Blue:   0),
+  (Red:   0;Green: 168;Blue: 168),
+  (Red: 168;Green:   0;Blue:   0),
+  (Red: 168;Green:   0;Blue: 168),
+  (Red: 168;Green:  84;Blue:   0),
+  (Red: 168;Green: 168;Blue: 168),
+  (Red:  84;Green:  84;Blue:  84),
+  (Red:  84;Green:  84;Blue: 252),
+  (Red:  84;Green: 252;Blue:  84),
+  (Red:  84;Green: 252;Blue: 252),
+  (Red: 252;Green:  84;Blue:  84),
+  (Red: 252;Green:  84;Blue: 252),
+  (Red: 252;Green: 252;Blue:  84),
+  (Red: 252;Green: 252;Blue: 252),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:  20;Green:  20;Blue:  20),
+  (Red:  32;Green:  32;Blue:  32),
+  (Red:  44;Green:  44;Blue:  44),
+  (Red:  56;Green:  56;Blue:  56),
+  (Red:  68;Green:  68;Blue:  68),
+  (Red:  80;Green:  80;Blue:  80),
+  (Red:  96;Green:  96;Blue:  96),
+  (Red: 112;Green: 112;Blue: 112),
+  (Red: 128;Green: 128;Blue: 128),
+  (Red: 144;Green: 144;Blue: 144),
+  (Red: 160;Green: 160;Blue: 160),
+  (Red: 180;Green: 180;Blue: 180),
+  (Red: 200;Green: 200;Blue: 200),
+  (Red: 224;Green: 224;Blue: 224),
+  (Red: 252;Green: 252;Blue: 252),
+  (Red:   0;Green:   0;Blue: 252),
+  (Red:  64;Green:   0;Blue: 252),
+  (Red: 124;Green:   0;Blue: 252),
+  (Red: 188;Green:   0;Blue: 252),
+  (Red: 252;Green:   0;Blue: 252),
+  (Red: 252;Green:   0;Blue: 188),
+  (Red: 252;Green:   0;Blue: 124),
+  (Red: 252;Green:   0;Blue:  64),
+  (Red: 252;Green:   0;Blue:   0),
+  (Red: 252;Green:  64;Blue:   0),
+  (Red: 252;Green: 124;Blue:   0),
+  (Red: 252;Green: 188;Blue:   0),
+  (Red: 252;Green: 252;Blue:   0),
+  (Red: 188;Green: 252;Blue:   0),
+  (Red: 124;Green: 252;Blue:   0),
+  (Red:  64;Green: 252;Blue:   0),
+  (Red:   0;Green: 252;Blue:   0),
+  (Red:   0;Green: 252;Blue:  64),
+  (Red:   0;Green: 252;Blue: 124),
+  (Red:   0;Green: 252;Blue: 188),
+  (Red:   0;Green: 252;Blue: 252),
+  (Red:   0;Green: 188;Blue: 252),
+  (Red:   0;Green: 124;Blue: 252),
+  (Red:   0;Green:  64;Blue: 252),
+  (Red: 124;Green: 124;Blue: 252),
+  (Red: 156;Green: 124;Blue: 252),
+  (Red: 188;Green: 124;Blue: 252),
+  (Red: 220;Green: 124;Blue: 252),
+  (Red: 252;Green: 124;Blue: 252),
+  (Red: 252;Green: 124;Blue: 220),
+  (Red: 252;Green: 124;Blue: 188),
+  (Red: 252;Green: 124;Blue: 156),
+  (Red: 252;Green: 124;Blue: 124),
+  (Red: 252;Green: 156;Blue: 124),
+  (Red: 252;Green: 188;Blue: 124),
+  (Red: 252;Green: 220;Blue: 124),
+  (Red: 252;Green: 252;Blue: 124),
+  (Red: 220;Green: 252;Blue: 124),
+  (Red: 188;Green: 252;Blue: 124),
+  (Red: 156;Green: 252;Blue: 124),
+  (Red: 124;Green: 252;Blue: 124),
+  (Red: 124;Green: 252;Blue: 156),
+  (Red: 124;Green: 252;Blue: 188),
+  (Red: 124;Green: 252;Blue: 220),
+  (Red: 124;Green: 252;Blue: 252),
+  (Red: 124;Green: 220;Blue: 252),
+  (Red: 124;Green: 188;Blue: 252),
+  (Red: 124;Green: 156;Blue: 252),
+  (Red: 180;Green: 180;Blue: 252),
+  (Red: 196;Green: 180;Blue: 252),
+  (Red: 216;Green: 180;Blue: 252),
+  (Red: 232;Green: 180;Blue: 252),
+  (Red: 252;Green: 180;Blue: 252),
+  (Red: 252;Green: 180;Blue: 232),
+  (Red: 252;Green: 180;Blue: 216),
+  (Red: 252;Green: 180;Blue: 196),
+  (Red: 252;Green: 180;Blue: 180),
+  (Red: 252;Green: 196;Blue: 180),
+  (Red: 252;Green: 216;Blue: 180),
+  (Red: 252;Green: 232;Blue: 180),
+  (Red: 252;Green: 252;Blue: 180),
+  (Red: 232;Green: 252;Blue: 180),
+  (Red: 216;Green: 252;Blue: 180),
+  (Red: 196;Green: 252;Blue: 180),
+  (Red: 180;Green: 252;Blue: 180),
+  (Red: 180;Green: 252;Blue: 196),
+  (Red: 180;Green: 252;Blue: 216),
+  (Red: 180;Green: 252;Blue: 232),
+  (Red: 180;Green: 252;Blue: 252),
+  (Red: 180;Green: 232;Blue: 252),
+  (Red: 180;Green: 216;Blue: 252),
+  (Red: 180;Green: 196;Blue: 252),
+  (Red:   0;Green:   0;Blue: 112),
+  (Red:  28;Green:   0;Blue: 112),
+  (Red:  56;Green:   0;Blue: 112),
+  (Red:  84;Green:   0;Blue: 112),
+  (Red: 112;Green:   0;Blue: 112),
+  (Red: 112;Green:   0;Blue:  84),
+  (Red: 112;Green:   0;Blue:  56),
+  (Red: 112;Green:   0;Blue:  28),
+  (Red: 112;Green:   0;Blue:   0),
+  (Red: 112;Green:  28;Blue:   0),
+  (Red: 112;Green:  56;Blue:   0),
+  (Red: 112;Green:  84;Blue:   0),
+  (Red: 112;Green: 112;Blue:   0),
+  (Red:  84;Green: 112;Blue:   0),
+  (Red:  56;Green: 112;Blue:   0),
+  (Red:  28;Green: 112;Blue:   0),
+  (Red:   0;Green: 112;Blue:   0),
+  (Red:   0;Green: 112;Blue:  28),
+  (Red:   0;Green: 112;Blue:  56),
+  (Red:   0;Green: 112;Blue:  84),
+  (Red:   0;Green: 112;Blue: 112),
+  (Red:   0;Green:  84;Blue: 112),
+  (Red:   0;Green:  56;Blue: 112),
+  (Red:   0;Green:  28;Blue: 112),
+  (Red:  56;Green:  56;Blue: 112),
+  (Red:  68;Green:  56;Blue: 112),
+  (Red:  84;Green:  56;Blue: 112),
+  (Red:  96;Green:  56;Blue: 112),
+  (Red: 112;Green:  56;Blue: 112),
+  (Red: 112;Green:  56;Blue:  96),
+  (Red: 112;Green:  56;Blue:  84),
+  (Red: 112;Green:  56;Blue:  68),
+  (Red: 112;Green:  56;Blue:  56),
+  (Red: 112;Green:  68;Blue:  56),
+  (Red: 112;Green:  84;Blue:  56),
+  (Red: 112;Green:  96;Blue:  56),
+  (Red: 112;Green: 112;Blue:  56),
+  (Red:  96;Green: 112;Blue:  56),
+  (Red:  84;Green: 112;Blue:  56),
+  (Red:  68;Green: 112;Blue:  56),
+  (Red:  56;Green: 112;Blue:  56),
+  (Red:  56;Green: 112;Blue:  68),
+  (Red:  56;Green: 112;Blue:  84),
+  (Red:  56;Green: 112;Blue:  96),
+  (Red:  56;Green: 112;Blue: 112),
+  (Red:  56;Green:  96;Blue: 112),
+  (Red:  56;Green:  84;Blue: 112),
+  (Red:  56;Green:  68;Blue: 112),
+  (Red:  80;Green:  80;Blue: 112),
+  (Red:  88;Green:  80;Blue: 112),
+  (Red:  96;Green:  80;Blue: 112),
+  (Red: 104;Green:  80;Blue: 112),
+  (Red: 112;Green:  80;Blue: 112),
+  (Red: 112;Green:  80;Blue: 104),
+  (Red: 112;Green:  80;Blue:  96),
+  (Red: 112;Green:  80;Blue:  88),
+  (Red: 112;Green:  80;Blue:  80),
+  (Red: 112;Green:  88;Blue:  80),
+  (Red: 112;Green:  96;Blue:  80),
+  (Red: 112;Green: 104;Blue:  80),
+  (Red: 112;Green: 112;Blue:  80),
+  (Red: 104;Green: 112;Blue:  80),
+  (Red:  96;Green: 112;Blue:  80),
+  (Red:  88;Green: 112;Blue:  80),
+  (Red:  80;Green: 112;Blue:  80),
+  (Red:  80;Green: 112;Blue:  88),
+  (Red:  80;Green: 112;Blue:  96),
+  (Red:  80;Green: 112;Blue: 104),
+  (Red:  80;Green: 112;Blue: 112),
+  (Red:  80;Green: 104;Blue: 112),
+  (Red:  80;Green:  96;Blue: 112),
+  (Red:  80;Green:  88;Blue: 112),
+  (Red:   0;Green:   0;Blue:  64),
+  (Red:  16;Green:   0;Blue:  64),
+  (Red:  32;Green:   0;Blue:  64),
+  (Red:  48;Green:   0;Blue:  64),
+  (Red:  64;Green:   0;Blue:  64),
+  (Red:  64;Green:   0;Blue:  48),
+  (Red:  64;Green:   0;Blue:  32),
+  (Red:  64;Green:   0;Blue:  16),
+  (Red:  64;Green:   0;Blue:   0),
+  (Red:  64;Green:  16;Blue:   0),
+  (Red:  64;Green:  32;Blue:   0),
+  (Red:  64;Green:  48;Blue:   0),
+  (Red:  64;Green:  64;Blue:   0),
+  (Red:  48;Green:  64;Blue:   0),
+  (Red:  32;Green:  64;Blue:   0),
+  (Red:  16;Green:  64;Blue:   0),
+  (Red:   0;Green:  64;Blue:   0),
+  (Red:   0;Green:  64;Blue:  16),
+  (Red:   0;Green:  64;Blue:  32),
+  (Red:   0;Green:  64;Blue:  48),
+  (Red:   0;Green:  64;Blue:  64),
+  (Red:   0;Green:  48;Blue:  64),
+  (Red:   0;Green:  32;Blue:  64),
+  (Red:   0;Green:  16;Blue:  64),
+  (Red:  32;Green:  32;Blue:  64),
+  (Red:  40;Green:  32;Blue:  64),
+  (Red:  48;Green:  32;Blue:  64),
+  (Red:  56;Green:  32;Blue:  64),
+  (Red:  64;Green:  32;Blue:  64),
+  (Red:  64;Green:  32;Blue:  56),
+  (Red:  64;Green:  32;Blue:  48),
+  (Red:  64;Green:  32;Blue:  40),
+  (Red:  64;Green:  32;Blue:  32),
+  (Red:  64;Green:  40;Blue:  32),
+  (Red:  64;Green:  48;Blue:  32),
+  (Red:  64;Green:  56;Blue:  32),
+  (Red:  64;Green:  64;Blue:  32),
+  (Red:  56;Green:  64;Blue:  32),
+  (Red:  48;Green:  64;Blue:  32),
+  (Red:  40;Green:  64;Blue:  32),
+  (Red:  32;Green:  64;Blue:  32),
+  (Red:  32;Green:  64;Blue:  40),
+  (Red:  32;Green:  64;Blue:  48),
+  (Red:  32;Green:  64;Blue:  56),
+  (Red:  32;Green:  64;Blue:  64),
+  (Red:  32;Green:  56;Blue:  64),
+  (Red:  32;Green:  48;Blue:  64),
+  (Red:  32;Green:  40;Blue:  64),
+  (Red:  44;Green:  44;Blue:  64),
+  (Red:  48;Green:  44;Blue:  64),
+  (Red:  52;Green:  44;Blue:  64),
+  (Red:  60;Green:  44;Blue:  64),
+  (Red:  64;Green:  44;Blue:  64),
+  (Red:  64;Green:  44;Blue:  60),
+  (Red:  64;Green:  44;Blue:  52),
+  (Red:  64;Green:  44;Blue:  48),
+  (Red:  64;Green:  44;Blue:  44),
+  (Red:  64;Green:  48;Blue:  44),
+  (Red:  64;Green:  52;Blue:  44),
+  (Red:  64;Green:  60;Blue:  44),
+  (Red:  64;Green:  64;Blue:  44),
+  (Red:  60;Green:  64;Blue:  44),
+  (Red:  52;Green:  64;Blue:  44),
+  (Red:  48;Green:  64;Blue:  44),
+  (Red:  44;Green:  64;Blue:  44),
+  (Red:  44;Green:  64;Blue:  48),
+  (Red:  44;Green:  64;Blue:  52),
+  (Red:  44;Green:  64;Blue:  60),
+  (Red:  44;Green:  64;Blue:  64),
+  (Red:  44;Green:  60;Blue:  64),
+  (Red:  44;Green:  52;Blue:  64),
+  (Red:  44;Green:  48;Blue:  64),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0),
+  (Red:   0;Green:   0;Blue:   0));
 
 
   procedure SetAllPalette(var Palette:PaletteType);
   procedure SetAllPalette(var Palette:PaletteType);
    var
    var
@@ -70,9 +325,9 @@ var
           exit;
           exit;
         end;
         end;
       SetRGBPalette(ColorNum,
       SetRGBPalette(ColorNum,
-          DefaultColors.Colors[Color].Red,
-          DefaultColors.Colors[Color].Green,
-          DefaultColors.Colors[Color].Blue);
+          DefaultColors[Color].Red,
+          DefaultColors[Color].Green,
+          DefaultColors[Color].Blue);
     end;
     end;
 
 
 
 
@@ -98,50 +353,12 @@ var
 
 
     procedure GetDefaultPalette(var Palette: PaletteType);
     procedure GetDefaultPalette(var Palette: PaletteType);
       begin
       begin
-        move(DefaultColors, Palette, sizeof(DefaultColors));
+        move(DefaultColors, Palette.Colors, sizeof(DefaultColors));
         { The default palette always has 256 entries, but in reality }
         { The default palette always has 256 entries, but in reality }
         { it depends on the number of colors possible.               }
         { it depends on the number of colors possible.               }
         Palette.Size := PaletteSize;
         Palette.Size := PaletteSize;
+        if PaletteSize > 256 then Palette.Size := 256;
       end;
       end;
 
 
-{
-procedure SetRGBPalette(ColorNum,RedValue,GreenValue,BlueValue:integer);
-begin
-  asm
-    movw  $0x3c8,%DX
-    movb  ColorNum,%al
-    outb  %AL,%DX
-    incw  %DX
-    movb  RedValue,%al
-    shrb  $2,%al
-    outb  %AL,%DX
-    movb  GreenValue,%al
-    shrb  $2,%al
-    outb  %AL,%DX
-    movb  BlueValue,%al
-    shrb  $2,%al
-    outb  %AL,%DX
-  end;
-end;
-
-procedure GetRGBPalette(ColorNum:byte; var RedValue,GreenValue,BlueValue:byte);
-begin
-  asm
-    movw  $0x3c7,%DX
-    movb  ColorNum,%ax
-    outb  %AL,%DX
-    addw  $2,%DX
-    xorl  %eax,%eax
-    inb   %DX,%AL
-    shlb  $2,%al
-    movb  %al,RedValue
-    inb   %DX,%AL
-    shlb  $2,%al
-    movb  %al,GreenValue
-    inb   %DX,%AL
-    shlb  $2,%al
-    movb  %al,BlueValue
-  end;
-end; }