home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / b / bgi256-3.zip / DEMO256.PAS < prev    next >
Pascal/Delphi Source File  |  1993-02-14  |  8KB  |  356 lines

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