home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / PROG / NAPAPI10.ZIP / DEMO.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-07-13  |  5.2 KB  |  192 lines

  1. {$I NAPFLAGS.INC}
  2.  
  3. program demo;
  4.  
  5. uses crt, dos, driver1, naplps, graph, timer;
  6.  
  7. var
  8.    count   : byte;
  9.    start,
  10.    stop    : longint;
  11.  
  12. function exist (filename : string) : boolean;
  13.    var
  14.       inf : searchrec;
  15.    begin
  16.       findfirst (filename, anyfile, inf);
  17.       exist := (doserror = 0);
  18.    end;
  19.  
  20. function numtostr(number : longint) : string;
  21.    var
  22.       temp : string;
  23.    begin
  24.       str(number,temp);
  25.       numtostr := temp;
  26.    end;
  27.  
  28. procedure show_file(fn : string);
  29.    var
  30.       f       : file;
  31.       numread : word;
  32.       str     : string;
  33.       buf     : array[0..199] of char; {200 char buffer}
  34.    begin
  35.       if not exist(fn) then exit;
  36.       reset_naplps;
  37.       assign(f,fn);
  38.       reset(f,1);
  39.       repeat
  40.          blockread(f,buf,sizeof(buf),numread);
  41.          move(buf,str[1],numread);
  42.          str[0] := char(numread);
  43.          interpret_naplps(str);
  44.       until numread = 0;
  45.       close(f);
  46.    end;
  47.  
  48. procedure fadein(var pal : paltype; d : word);
  49.    var
  50.       c       : byte;
  51.       done    : boolean;
  52.       incpal  : paltype;
  53.    begin
  54.       done := false;
  55.       fillchar(incpal,sizeof(incpal),#0);
  56.       while not done do
  57.          begin
  58.             done := true;
  59.             for c := 0 to 15 do
  60.                begin
  61.                   if (incpal[c].cr <> palette[c].cr) or
  62.                      (incpal[c].cg <> palette[c].cg) or
  63.                      (incpal[c].cb <> palette[c].cb) then
  64.                      begin
  65.                         if incpal[c].cr < palette[c].cr then
  66.                            begin
  67.                               inc(incpal[c].cr);
  68.                               done := false;
  69.                            end;
  70.                         if incpal[c].cg < palette[c].cg then
  71.                            begin
  72.                               inc(incpal[c].cg);
  73.                               done := false;
  74.                            end;
  75.                         if incpal[c].cb < palette[c].cb then
  76.                            begin
  77.                               inc(incpal[c].cb);
  78.                               done := false;
  79.                            end;
  80.                         setrgbpalette_fast(c,incpal[c].cr,incpal[c].cg,incpal[c].cb);
  81.                      end;
  82.                end;
  83.             delay(d);
  84.          end;
  85.    end;
  86.  
  87. procedure fadeout(decpal : paltype; d : word);
  88.    var
  89.       c       : byte;
  90.       done    : boolean;
  91.    begin
  92.       done := false;
  93.       while not done do
  94.          begin
  95.             done := true;
  96.             for c := 0 to 15 do
  97.                begin
  98.                   if (decpal[c].cr <> 0) or
  99.                      (decpal[c].cg <> 0) or
  100.                      (decpal[c].cb <> 0) then
  101.                      begin
  102.                         if decpal[c].cr > 0 then
  103.                            begin
  104.                               dec(decpal[c].cr);
  105.                               done := false;
  106.                            end;
  107.                         if decpal[c].cg > 0 then
  108.                            begin
  109.                               dec(decpal[c].cg);
  110.                               done := false;
  111.                            end;
  112.                         if decpal[c].cb > 0 then
  113.                            begin
  114.                               dec(decpal[c].cb);
  115.                               done := false;
  116.                            end;
  117.                         setrgbpalette_fast(c,decpal[c].cr,decpal[c].cg,decpal[c].cb);
  118.                      end;
  119.                end;
  120.             delay(d);
  121.          end;
  122.    end;
  123.  
  124. begin
  125.    register_drivers;
  126.    graphmode   := detect;
  127.    initgraph(graphdriver,graphmode,'');
  128.    nap_init;
  129.  
  130.    setpal := false;
  131.    for count := 0 to 15 do
  132.       setrgbpalette_fast(count,0,0,0);
  133.  
  134.    show_file('frame1.nap');
  135.    fadein (palette,1);
  136.    start := readtimer;
  137.    repeat
  138.       stop := readtimer;
  139.    until keypressed or (elapsedtime(start,stop,0) > 5);
  140.    if keypressed then readkey;
  141.    fadeout(palette,1);
  142.  
  143.    show_file('frame2.nap');
  144.    fadein (palette,1);
  145.    start := readtimer;
  146.    repeat
  147.       stop := readtimer;
  148.    until keypressed or (elapsedtime(start,stop,0) > 120);
  149.    if keypressed then readkey;
  150.    fadeout(palette,1);
  151.  
  152.    show_file('frame3.nap');
  153.    fadein (palette,1);
  154.    start := readtimer;
  155.    repeat
  156.       stop := readtimer;
  157.    until keypressed or (elapsedtime(start,stop,0) > 120);
  158.    if keypressed then readkey;
  159.    fadeout(palette,1);
  160.  
  161.    show_file('frame4.nap');
  162.    fadein (palette,1);
  163.    start := readtimer;
  164.    repeat
  165.       stop := readtimer;
  166.    until keypressed or (elapsedtime(start,stop,0) > 30);
  167.    if keypressed then readkey;
  168.    fadeout(palette,1);
  169.  
  170.    show_file('frame5.nap');
  171.    fadein (palette,0);
  172.    start := readtimer;
  173.    repeat
  174.       stop := readtimer;
  175.    until keypressed or (elapsedtime(start,stop,1) > 2);
  176.    if keypressed then readkey;
  177.    fadeout(palette,0);
  178.  
  179.    setpal := true;
  180.    for count := 6 to 38 do
  181.       begin
  182.          show_file('frame'+numtostr(count)+'.nap');
  183.          start := readtimer;
  184.          repeat
  185.             stop := readtimer;
  186.             updateblinks;
  187.          until keypressed or (elapsedtime(start,stop,0) > 30);
  188.          if keypressed then readkey;
  189.       end;
  190.    nap_done;
  191.    closegraph;
  192. end.