home *** CD-ROM | disk | FTP | other *** search
/ CD/PC Actual 13 / CDA13.ISO / cdactual / demobin / share / program / Pascal / BGI256.ZIP / DEMO256.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-04-24  |  7.9 KB  |  371 lines

  1.  
  2. {DEMO - demo program for BGI256 driver }
  3. {as of 24 April 1993}
  4. {Usage:  "DEMO256 [ModeNumber]" }
  5.  
  6. {$M 30000,0,400000}
  7. PROGRAM DEMO256;
  8. USES crt,dos,GRAPH,AniSub,WrMode;
  9.  
  10. {-- $DEFINE INTERNAL}  {make this definition valid to load driver into code}
  11.  
  12. CONST Mode200    = 0;  {320x200x256}
  13.       Mode400    = 1;  {640x400x256}
  14.       Mode480    = 2;  {640x480x256}
  15.       Mode600    = 3;  {800x600x256}
  16.       Mode768    = 4;  {1024x768x256}
  17.       Mode1024   = 5;  {2048x1024x256}
  18.       AutoMode   = 127;{AutoDetect mode}
  19.  
  20. (*
  21.       LineMode   = $00;
  22.       FillMode   = $40;
  23.       TextMode   = $80;
  24.       ImageMode  = $C0;
  25.       MiscCmd    = $E0;
  26.       BackColor  = 24;
  27.       GetCurMode = 25;
  28.       MoveWrite  = 0;
  29.       ForeWrite  = 8;
  30. *)
  31.  
  32. CONST drv : INTEGER = DETECT;
  33.       mode : INTEGER = 0;
  34.       result : INTEGER = 0;
  35.       ERROR : INTEGER = 0;
  36.  
  37. VAR   Temp,I,X,Y:INTEGER;
  38.       f:text;
  39.       s:string;
  40.       Multi:word;
  41.       Size : word;
  42.       SPix,SPiy:word;
  43.       C : word;
  44.       ch :char;
  45.       Pal:PaletteType;
  46.       regs : registers;
  47.       Max,xx,l,h : integer;
  48.       SelectMode : integer;
  49.       WhichDriver : integer;
  50.  
  51. function fstr(I:integer):string;
  52. var s:string;
  53. begin
  54.   str(i,s);
  55.   fstr := s;
  56. end;
  57.  
  58.  
  59. {$F+}
  60. function AutoDet:integer;
  61. begin
  62.   AutoDet := SelectMode;  {Autodetect the mode}
  63. end;
  64. {$F-}
  65.  
  66. {$IFDEF INTERNAL}
  67.   procedure Bgi256Proc; external;
  68.   {$L BGI256.OBJ}
  69. {$ENDIF}
  70.  
  71.  
  72. BEGIN
  73.   SelectMode := 0;
  74.   S := 'x';
  75.   if paramcount > 0 then
  76.   begin
  77.     s := ParamStr(1);
  78.     case s[1] of
  79.       '0': SelectMode := 0;
  80.       '1': SelectMode := 1;
  81.       '2': SelectMode := 2;
  82.       '3': SelectMode := 3;
  83.       '4': SelectMode := 4;
  84.       '5': SelectMode := 5;
  85.      else
  86.        SelectMode := 127;
  87.     end; {case}
  88.   end;
  89.   WhichDriver := 0;
  90.   if paramcount > 1 then
  91.   begin
  92.     s := Paramstr(2);
  93.     case s[1] of
  94.       '0': WhichDriver := 0;
  95.       '1': WhichDriver := 1;
  96.       '2': WhichDriver := 2;
  97.       '3': WhichDriver := 3;
  98.       '4': WhichDriver := 4;
  99.       '5': WhichDriver := 5;
  100.     end; {case}
  101.   end;
  102.   temp := Paramcount;
  103.   DRV := 0;
  104.   Result := 0;
  105. (*
  106.   regs.ax := 0;
  107.   intr($33,regs);  {code to hide mouse cursor if needed}
  108.   regs.ax := 1;
  109.   intr($33,regs);
  110. *)
  111.   WRITELN( 'BGI Driver Demo V3.02  Copyright (c) 1992,1993 Knight Software');
  112.  
  113.   case WhichDriver of
  114.     0: result := installuserdriver( 'BGI256', @AutoDet);
  115.     1: result := installuserdriver( 'V7BGI256', @AutoDet);
  116.     2: result := installuserdriver( 'TRI256', @AutoDet);
  117.     3: result := installuserdriver( 'egavga', @AutoDet);
  118.     4: result := installuserdriver( 'VESA16', @AutoDet);
  119.   end; {case}
  120.   ERROR := graphresult;
  121.   WRITELN( 'INSTALLresult = ', result,' ',drv,'  ',mode);
  122.   if WhichDriver < 3 then
  123.     QuickAnimate := true
  124.   else
  125.     QuickAnimate := false;
  126.  
  127. {$IFDEF INTERNAL}
  128.   xx := RegisterBGIdriver(@Bgi256Proc);
  129. {$ENDIF}
  130.  
  131. {  detectgraph(drv,mode); }
  132.  
  133.   if drv > 0 then
  134.     drv := result
  135.   else
  136.     drv := 0;
  137.   mode := 0;
  138.   initgraph( drv, mode, '' );
  139.   result := Graphresult;
  140.   Mode := GetGraphMode;
  141.   Max := GetMaxMode;
  142.   if SelectMode = 127 then SelectMode := 0;
  143.   SetGraphMode(SelectMode);    {<-- set the desired mode here}
  144.   result := graphresult;
  145.   Max := GetMaxMode;
  146.   SetWriteMode(MiscCommand+GetCurrentMode);
  147.   Max := GetMaxMode;
  148.   cleardevice;
  149.   C := GetColor;
  150.    outtextxy(20,40,'Result:'+fstr(result)+' Drv:'+fstr(drv)+' Mode:'+fstr(mode)+' Max:'+fstr(Max)+' C:'+Fstr(C));
  151.  
  152.   C := 7;
  153.   GetModeRange(drv,l,h);
  154.   Max := GetMaxMode;
  155.  
  156.   mode := GetGraphMode;
  157.   s := GetDriverName;
  158.   outtextxy((GetMaxX div 2)-4,10,s);
  159.   s := GetModeName(mode);
  160.   outtextxy((GetMaxX div 2)-4,20,s);
  161.  
  162. {  SetWriteMode($100); }
  163.   C := GetMaxColor;
  164.  
  165.   GetDefaultPalette(Pal);
  166.  
  167. {  SetBkColor(2); }
  168.  
  169.  
  170.  
  171.   SETCOLOR(5);
  172.   C := GetColor;
  173.  
  174.   MOVETO(0,0);
  175.   FOR Y := 0 TO 10 DO
  176.     FOR X := 0 TO 10 DO
  177.       PUTPIXEL(X,Y,3);
  178.  
  179.   if GetMaxX > 320 then Multi := 2 else Multi := 1;
  180.   multi := 1;
  181.   SPix := 10;
  182.   SPiy := 155;
  183.   MOVETO(SPix,SPiy);
  184.   FOR X := 0 TO 255+1 DO
  185.   begin
  186.     PutPixel(SPix+(X*Multi)-1,pred(SPiy),15*(X and 1));
  187.     PutPixel(SPix+(X*Multi)-1,succ(SPiy+10),15*(X and 1));
  188.   end;
  189.  
  190.   FOR Y := SPiy TO SPiy+10 DO
  191.   begin
  192.     PutPixel(pred(SPix),Y,15*(Y and 1));
  193.     PutPixel((255*Multi)+SPix+1,Y,15*(Y and 1));
  194.  
  195.     FOR X := 0 TO 255 DO
  196.     BEGIN
  197.       for I := 0 to pred(Multi) do
  198.         PUTPIXEL(SPix+I+(X*Multi),Y,X);
  199.     END;
  200.   end;
  201.  
  202.   SETFILLSTYLE(XHatchFill,2);
  203.   bar( 20, 20, 35, 35 );
  204.  
  205.   SETFILLSTYLE(XHatchFill,4);
  206.   bar( 21, 21, 36, 36 );
  207.  
  208.   SETFILLSTYLE(1,6);
  209.   bar( 50, 50, 85, 100 );
  210.  
  211.   SETFILLSTYLE(2,2);
  212.   BAR3D(30,60,60,95,10,true);
  213.  
  214.  
  215.   setFILLSTYLE(3, 3 );
  216.   bar( GetMaxX-40, GetMaxY-80, GetMaxX-8, GetMaxY-8 );
  217.  
  218.   SETFILLSTYLE(4,4);
  219.   bar( 70, 120, 90, 140 );
  220.  
  221.   setcolor(15);
  222.   moveto(100,350);
  223.   fillellipse(100,300,50,50);
  224.  
  225.  
  226.   FOR I := 0 TO 15 DO
  227.   BEGIN
  228.     SetColor(i xor $f);    {set text background color}
  229.     SetWriteMode(TextMode+SetBackColor);
  230.     SetColor(i);           {set text foreground color}
  231.     SetWriteMode(TextMode+MoveWrite);
  232.     if i <= 9 then C := i+$30 else C := i+$37;
  233.     outtextxy(Spix+(i*8),170,char(c));
  234.   END;
  235.   SetWriteMode(TextMode+ForeMoveWrite);
  236.  
  237.   setcolor(14);
  238.   moveto(0,0);
  239.   line( 0, 0, GetMaxX, GetMaxY);
  240.  
  241.   setcolor(14);
  242.   SetLineStyle(3,0,3);
  243.   line( GetMaxX, 0, 0, GetMaxY);
  244.  
  245.   setcolor( 4 );
  246.   circle( 112, 98, 20 );
  247.  
  248.   setcolor(1);
  249.   rectangle(0,0,GetMaxX,GetMaxY);
  250.  
  251.   setcolor(2);
  252.   rectangle(4,4,GetMaxX-4,GetMaxY-4);
  253.  
  254.  
  255.   for i := 0 to 7 do
  256.   begin
  257.     setcolor(1+i);
  258.     line( GetMaxX-299-(i*3), 70+(i*3), GetMaxX-299+20+(i*7), 70+(i*3) );
  259.   end;
  260.  
  261.   setcolor(12);
  262.   moveto(0,0);
  263.   line( 0, 0, 0, 0 );
  264.  
  265.   putpixel(1,0,0);
  266.   putpixel(1,1,0);
  267.   putpixel(0,1,0);
  268.   putpixel(2,0,0);
  269.   putpixel(2,1,0);
  270.   putpixel(0,2,0);
  271.   putpixel(1,2,0);
  272.   putpixel(2,2,0);
  273.  
  274.  
  275.   SetTextStyle(0,0,1);
  276.   setcolor( 5 );
  277.   moveto( 100, GetMaxY-80);
  278.   outtextXY(100,GetMaxY-80,'OutText 1');
  279.  
  280.   SetTextStyle(0,0,2);
  281.   setcolor( 6 );
  282.   outtextxy( (GetMaxX div 2)-60, GetMaxY-20, 'OutText 2' );
  283.  
  284.   if GetMaxY > 400 then
  285.     Y := 199
  286.   else
  287.     Y := GetMaxY div 4;
  288.   X := Y;
  289.   SetWriteMode(MiscCommand+2);
  290.   Size := ImageSize(0,0,X,Y);
  291.   GetMem(P,Size);
  292. {  GetImage(0,0,199,199,P^);
  293.   PutImage(250,200,P^,OrPut); }
  294.  
  295.   GetImage(0,0,X,Y,P^);
  296.   PutImage(succ(GetMaxX) div 2,succ(GetMaxY) div 2,P^,NormalPut);
  297.   freemem(P,Size);
  298.  
  299.   setcolor(white);
  300.   SetLineStyle(0,0,0);
  301.   rectangle(pred(succ(GetMaxX) div 2),pred(succ(GetMaxY) div 2),
  302.             (succ(GetMaxX) div 2)+X,(succ(GetMaxY) div 2)+Y);
  303.  
  304.   setcolor(6);
  305.   CIRCLE(GETMAXX DIV 2,GETMAXY DIV 2,100);
  306.  
  307.   SetTextStyle(0,0,1);
  308.   outtextxy(0,0,'Hello');
  309.  
  310.   C := 10;
  311.   PutPixel(0,0,C);
  312.   C := GetPixel(0,0);
  313.   PutPixel(0,0,C);
  314.   C := 12;
  315.   PutPixel(GetMaxX,0,C);
  316.   C := GetPixel(GetMaxX,0);
  317.   PutPixel(GetMaxX,0,C);
  318.   C := 11;
  319.   PutPixel(0,GetMaxY,C);
  320.   C := GetPixel(0,GetMaxY);
  321.   PutPixel(0,GetMaxY,C);
  322.   C := 15;
  323.   PutPixel(GetMaxX,GetMaxY,C);
  324.   C := GetPixel(GetMaxX,GetMaxY);
  325.   PutPixel(GetMaxX,GetMaxY,C);
  326.  
  327.   setLineStyle(UserBitLn,$ffff,1);
  328.   setcolor(yellow);
  329.   moveto(20,9);
  330.   lineto(GetMaxX-20,9);
  331.   setLineStyle(UserBitLn,$5555,1);
  332.   setcolor(yellow);
  333.   moveto(24,11);
  334.   lineto(GetMaxX-24,11);
  335.   setLineStyle(UserBitLn,$1111,1);
  336.   setcolor(yellow);
  337.   moveto(28,13);
  338.   lineto(GetMaxX-28,13);
  339.  
  340.   DoSaucer; {do flying saucer stuff}
  341.  
  342.   for i := 0 to 3 do
  343.   begin
  344.     cleardevice;
  345.     SETFILLSTYLE(1,4);
  346.     setcolor(4);
  347.     bar(0,0,GetMaxX,GetMaxY);
  348.     SetTextStyle(0,0,4);
  349.     setcolor( 7 );
  350.     moveto(1,1);
  351.     outtextxy(10,100,'OutText '+fstr(i));
  352.   end;
  353.  
  354. {  outtextxy( 10, 100, 'OutText 3'+#191+#192+#193+#194); }
  355.  
  356.   outtextxy(0,0,'Hello');
  357.  
  358.   settextstyle(triplexfont,0,1);
  359.   outtextxy(0,50,'Hello');
  360.   settextstyle(triplexfont,0,7);
  361.   outtextxy(0,125,'Hello');
  362.  
  363.  
  364.   READLN;
  365.   closegraph;
  366.  
  367.   WRITELN('Finished');
  368.  
  369. END.
  370.  
  371.