home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / FNTPAK32.ZIP / PASCAL.EXE / DEMO_GMS.PAS < prev    next >
Pascal/Delphi Source File  |  1995-08-16  |  4KB  |  131 lines

  1. {**********************************************************************
  2.  
  3.     Demo_GMS.Pas                Copyright 1994, Rob W. Smetana
  4.  
  5.     Demonstrate how to:
  6.  
  7.      1.  Select GRAPHICS-mode mouse cursor shapes from Font Pak's library.
  8.  
  9.      2.  Determine how many mouse shapes there are.
  10.  
  11.     Requires:
  12.  
  13.      a. EGAVGA.BGI     Borland support BGI
  14.         NOTE:::        Search for PathToDrivers := 'd:\tp\bgi'
  15.                        below and edit the path as needed.
  16.  
  17.      1.  Mouse.Obj     (which contains mouse functions)
  18.      2.  LdGFXCsr.OBJ  (graphics-mode mouse shapes)
  19.  
  20.  
  21.     Notes:
  22.           It is CRITICAL that you be in GRAPHICS-mode when you call the
  23.           graphics-mode procedures.  A crash awaits you if you're not.
  24.  
  25. *************************************************************************}
  26.  
  27. Uses Graph, CRT,
  28.      Font_Pak;        { The Font_Pak unit declares/links procedures }
  29.  
  30. (* We'll demonstrate these.  They're declared in unit Font Pak.
  31.  
  32.    procedure rsLoadGFXCursor (WhichShape, HotSpotX, HotSpotY : Integer);
  33.    function  NumGFXShapes : Integer;
  34. *)
  35.  
  36. Procedure OpenGraphics;Assembler; {use EGA graphics for on either EGA or VGA}
  37. ASM
  38.   Mov Ah, 00h;
  39.   Mov Al, 10h;                    {0E = 640x200 EGA/VGA; 12 = 640x480 VGA}
  40.   Int $10;
  41. End;
  42.  
  43. Procedure CloseGraphics; Assembler;     {Back to text mode}
  44. ASM
  45.   Mov Ah, 00h;
  46.   Mov Al, 03h;
  47.   Int $10;
  48. End;
  49.  
  50. var
  51.     GraphDriver, GraphMode, ErrorCode, n, Row, Col, Button, GFXorText : Integer;
  52.     NumShapes, WhichShape, HotSpotX, HotSpotY : Integer;
  53.     PathToDrivers : String;
  54.  
  55. Begin
  56.  
  57.     TextAttr:=27; ClrScr;
  58.  
  59.     fpInitialize; ClrScr;             { useful for shareware versions only }
  60.  
  61.     n := rsThereIsAMouse;             {Is there a mouse? If so, initialize.}
  62.  
  63.     If n = 0 then                     {0 = no mouse, -1 = there is a mouse }
  64.        Begin
  65.          WriteLn ('Sorry. This demo requires a mouse/mouse driver.  I found none.');
  66.          ReadKey;
  67.          Halt;
  68.        End;
  69.  
  70.  
  71.     GraphDriver := Detect;                { use autodetection }
  72.  
  73.     PathToDrivers := 'd:\tp\bgi';         { !! EDIT THIS as appropriate !! }
  74.  
  75.     InitGraph(GraphDriver, GraphMode,  PathToDrivers);
  76.     ErrorCode := GraphResult;             { preserve error return }
  77.     if ErrorCode <> grOK then             { error? }
  78.     begin
  79.       Writeln('Graphics error: ', GraphErrorMsg(ErrorCode));
  80.       ReadLn;
  81.       Halt;
  82.     end;
  83.  
  84.     OpenGraphics;                       { BE SURE you're in graphics mode  }
  85.                                         { BEFORE calling gfx-mode functions}
  86.  
  87.  
  88.     DirectVideo := False;               { DirectVideo may interfere! }
  89.     NumShapes := NumGFXShapes;
  90.  
  91.     Writeln('   Demonstrate how to select one of ',NumShapes, ' GRAPHICS-mode mouse cursor shapes.');
  92.     WriteLn('');
  93.     Write('Here''s the normal (default) mouse shape. Click a mouse button to try a new one.');
  94.  
  95.     rsShowCursor;                         { turn ON the mouse cursor }
  96.     HotSpotX := 1; HotSpotY := 1;         { use 1,1 to keep demo simple }
  97.     GFXorText := -1;
  98.  
  99.  
  100.     { Loop until you click a mouse button. Then change mouse cursor shapes. }
  101.  
  102.     For WhichShape  := 0 to NumShapes do
  103.        Begin
  104.  
  105.          { scrub any remaining button clicks }
  106.          Repeat
  107.            Button := rsButtonPressed (Row, Col, GFXorText);
  108.          Until Button=0;
  109.  
  110.          { now wait for a button click }
  111.          Button := 0;
  112.          Repeat
  113.            Button := rsButtonPressed (Row, Col, GFXorText);
  114.          Until Button>0;
  115.  
  116.          { load the next cursor shape }
  117.          rsHideCursor;
  118.          rsLoadGFXCursor (WhichShape + 1, HotSpotX, HotSpotY);
  119.          rsShowCursor;
  120.  
  121.          gotoxy (30,6); write('This is cursor # ', WhichShape+1);
  122.       end;
  123.  
  124.     CloseGraphics;
  125.  
  126.     ClrScr;
  127.     Write('That''s all . . .');
  128.  
  129. End.
  130.  
  131.