Răsfoiți Sursa

* implemented SetBkColor and GetBkColor for mode MCGAHi (640x480x2)

git-svn-id: trunk@16005 -
nickysn 15 ani în urmă
părinte
comite
d975466171
1 a modificat fișierele cu 16 adăugiri și 0 ștergeri
  1. 16 0
      packages/graph/src/go32v2/graph.pp

+ 16 - 0
packages/graph/src/go32v2/graph.pp

@@ -1246,6 +1246,20 @@ begin
   else
     CallInt10($11);
   VideoOfs := 0;
+  CurrentCGABorder := 0; {yes, TP7 CGA.BGI behaves *exactly* like that}
+end;
+
+procedure SetBkColorMCGA640(ColorNum: Word);
+begin
+  if ColorNum > 15 then
+    exit;
+  CurrentCGABorder := (CurrentCGABorder and 16) or ColorNum;
+  SetCGABorder(CurrentCGABorder);
+end;
+
+function GetBkColorMCGA640: Word;
+begin
+  GetBkColorMCGA640 := CurrentCGABorder and 15;
 end;
 
 procedure PutPixelMCGA640(X, Y: SmallInt; Pixel: Word); {$ifndef fpc}far;{$endif fpc}
@@ -3934,6 +3948,8 @@ const CrtAddress: word = 0;
          mode.SetAllPalette := {$ifdef fpc}@{$endif}SetVGARGBAllPalette;
          mode.InitMode := {$ifdef fpc}@{$endif}InitMCGA640;
          mode.HLine := {$ifdef fpc}@{$endif}HLineMCGA640;
+         mode.SetBkColor := {$ifdef fpc}@{$endif}SetBkColorMCGA640;
+         mode.GetBkColor := {$ifdef fpc}@{$endif}GetBkColorMCGA640;
          mode.XAspect := 10000;
          mode.YAspect := 10000;
          AddMode(mode);