home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 12 / praxis / unigraf.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1990-08-15  |  3.7 KB  |  104 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   UNIGRAF.PAS                          *)
  3. (*      residenter, universeller BGI-Grafiktreiber        *)
  4. (*         (c) 1990  Rainer Hamann  &  TOOLBOX            *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM UniversellerGrafikTreiber;
  7.  
  8. {$M 1500,12000,12000}        (* Platz für *.BGI und *.CHR *)
  9.  
  10. {$F+,V-}
  11.  
  12. USES Dos, Graph;
  13.  
  14. CONST
  15.   GrafikInterrupt        = $60;
  16.   BGIInstalled : BOOLEAN = FALSE;
  17.   PutPixelCode           = 1;
  18.   GetPixelCode           = 2;
  19.   LineCode               = 3;
  20.   CircleCode             = 4;
  21.   ArcCode                = 5;
  22.   SetColorCode           = 10;
  23.   SetGraphModeCode       = 11;
  24.   RestoreCrtModeCode     = 12;
  25.   SetViewPortCode        = 13;
  26.   ClearViewPortCode      = 14;
  27.   OutTextXYCode          = 15;
  28.   ImageSizeCode          = 16;
  29.   GetImageCode           = 17;
  30.   PutImageCode           = 18;
  31.   InstallCode            = 19;
  32.  
  33. TYPE
  34.   Str80           = STRING[80];
  35.   ParameterRecord = RECORD
  36.                       BefehlsCode,
  37.                       x1, y1, x2, y2, w, Farbe : WORD;
  38.                       Zeiger                   : POINTER;
  39.                       Clipping                 : BOOLEAN;
  40.                       Text                     : Str80;
  41.                     END;
  42. VAR
  43.   Parameter            : ^ParameterRecord;
  44.   OldInt               : POINTER;
  45.   Treiber, GrafikKarte : INTEGER;
  46.  
  47.   PROCEDURE GrafikBefehl(p : POINTER);
  48.   BEGIN
  49.     Parameter := p;
  50.     WITH Parameter^ DO BEGIN
  51.       CASE BefehlsCode OF
  52.         PutPixelCode     : PutPixel(x1, y1, Farbe);
  53.         GetPixelCode     : Farbe := GetPixel(x1, y1);
  54.         LineCode         : Line(x1, y1, x2, y2);
  55.       CircleCode         : Circle(x1, y1, x2);
  56.       ArcCode            : Arc(x1, y1, x2, y2, w);
  57.       SetColorCode       : SetColor(Farbe);
  58.       SetGraphModeCode   : SetGraphMode(GetGraphMode);
  59.       RestoreCrtModeCode : RestoreCrtMode;
  60.       SetViewPortCode    : SetViewPort(x1, y1,
  61.                                        x2, y2, Clipping);
  62.       ClearViewPortCode  : ClearViewPort;
  63.       OutTextXYCode      : OutTextXY(x1, y1, Text);
  64.       ImageSizeCode      : x1 := ImageSize(x1, y1, x2, y2);
  65.       GetImageCode       : GetImage(x1, y1, x2,
  66.                                     y2, Zeiger^);
  67.       PutImageCode       : PutImage(x1, y1, Zeiger^,
  68.                                     NormalPut);
  69.       InstallCode        : BEGIN
  70.                              IF NOT BGIInstalled THEN BEGIN
  71.                                Treiber := Detect;
  72.                                DetectGraph(Treiber,
  73.                                                GrafikKarte);
  74.                                InitGraph(Treiber,
  75.                                             GrafikKarte,
  76.                                             GetEnv('BGI'));
  77.                                BGIInstalled := TRUE;
  78.                              END;
  79.                              x1 := GetMaxX;
  80.                              y1 := GetMaxY;
  81.                            END;
  82.       END;
  83.     END;
  84.   END;
  85.  
  86.   PROCEDURE GraphDevice(Flags,CS,IP,AX,BX,CX,
  87.                         DX,SI,DI,DS,ES,BP: WORD);
  88.   INTERRUPT;
  89.   BEGIN
  90.     GrafikBefehl(PTR(AX, BX));
  91.   END;
  92.  
  93. BEGIN
  94.   GetIntVec(GrafikInterrupt, OldInt);
  95.   SetIntVec(GrafikInterrupt, ADDR(GraphDevice));
  96.   WriteLn('Mit EXIT entfernen Sie UNIGRAF ',
  97.           'aus dem Speicher.');
  98.   EXEC(GetEnv('COMSPEC'),'');
  99.   WriteLn('UNIGRAF ist aus dem Speicher entfernt.');
  100.   SetIntVec(GrafikInterrupt, OldInt);
  101. END.
  102. (* ------------------------------------------------------ *)
  103. (*                Ende von UNIGRAF.PAS                    *)
  104.