home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 3 / FREEWARE.BIN / towns_os / tvi / tvi_src.lzh / REC / REC_PLAY.C < prev    next >
C/C++ Source or Header  |  1990-11-12  |  5KB  |  165 lines

  1. /*
  2. $Header: rec_play.cv  1.6  90/11/12 17:01:00  Nam  Rel $
  3. */
  4. #include    <egb.h>        /* グラフィック関連のヘッダファイル */
  5. #include    <mos.h>        /* マウス関連のヘッダファイル         */
  6. #include    <n_win.h>    /* 自前のウィンドゥ関数ヘッダ        */
  7.  
  8. pragma    Include    ("rec_st.h");            /* 標準ヘッダ */
  9.  
  10.  
  11. extern char *EGB_work;    /*** EGBワークエリア(disp.obj) ***/
  12. extern char *VideoBufAdd;        /*** 画像データバッファ ***/
  13.  
  14. extern FRAME            tviframe;        /*** 動画データの枠 ***/
  15. extern unsigned long    imgsize;        /*** 画像データ1枚のサイズ ***/
  16. extern unsigned short    StartPage;        /*** 画像データ指定開始ページ ***/
  17. extern unsigned short    EndPage;        /*** 画像データ指定終了ページ ***/
  18. extern unsigned short    NowPage;        /*** 画像データ現在ページ ***/
  19. extern unsigned short    LastPage;        /*** 画像データ最終ページ ***/
  20. extern unsigned short    sysflag;        /*** 設定状態フラグ ***/
  21.  
  22. /*extern void    N_Vput_ful_11();*/    /*** 全画面転送(vputf11.obj) ***/
  23. extern void    VC8put_ful();        /*** テーブル参照全画面転送(vc_put.obj) ***/
  24. /*extern void    N_wait_vsync();*/        /*** Vsync待ち(video.obj) ***/
  25. extern void    N_set_disp();        /*** 表示ページ切り換え(video.obj) ***/
  26. extern void    set_page_slider();    /*** ページスライダの再設定(rec_main.obj) ***/
  27. extern void N_set_resolution();    /*** 画面解像度設定(rec_disp.obj) ***/
  28.  
  29. void    tvi_put();        /*TVIファイルを表示(内部・rec_play.obj)*/
  30. void    tvi_disp();        /*TVIファイルを1枚再生(rec_play.obj)*/
  31. void    disp_first();    /*TVIファイルを1枚再生(rec_play.obj)*/
  32. void    disp_rr();        /*TVIファイルを1枚再生(rec_play.obj)*/
  33. void    disp_rev();        /*TVIファイルを1枚再生(rec_play.obj)*/
  34. void    disp_cue();        /*TVIファイルを1枚再生(rec_play.obj)*/
  35. void    disp_ff();        /*TVIファイルを1枚再生(rec_play.obj)*/
  36. void    disp_last();    /*TVIファイルを1枚再生(rec_play.obj)*/
  37. void    disp_play();    /*TVIファイルを再生(rec_play.obj)*/
  38. /*****************************************************************************/
  39. void    tvi_put(page,add)    /*TVIファイルを表示(内部)*/
  40. unsigned char    page;
  41. char    *add;
  42. {
  43.     /*
  44.     N_wait_vsync();
  45.     if ( (sysflag | _ExpandTable)==0 ) {
  46.         N_Vput_ful_11((page & 1)*0x40000,add);
  47.     } else {
  48.         VC8put_ful((page & 1)*0x40000,add);
  49.     }
  50.     */
  51.     VC8put_ful((page & 1)*0x40000,add);
  52. }
  53. /*****************************************************************************/
  54. void    tvi_disp(page)    /*TVIファイルを1枚再生*/
  55. unsigned short    page;
  56. {
  57.     MOS_disp(FALSE);
  58.     tvi_put(1,VideoBufAdd+(imgsize*page));
  59.     set_page_slider();
  60.     MOS_disp(TRUE);
  61. }
  62. /*****************************************************************************/
  63. void    disp_first()        /*動画先頭へ*/
  64. {
  65.     if (NowPage!=0) {
  66.         NowPage=0;
  67.         tvi_disp(NowPage);
  68.     }
  69. }
  70. /*****************************************************************************/
  71. void    disp_rr()        /*動画巻き戻し*/
  72. {
  73.     if (NowPage>0) {
  74.         NowPage=(NowPage>5)?NowPage-5:0;
  75.         tvi_disp(NowPage);
  76.     }
  77. }
  78. /*****************************************************************************/
  79. void    disp_rev()        /*動画一駒戻し*/
  80. {
  81.     if (NowPage>0) {
  82.         NowPage=(NowPage>0)?NowPage-1:0;
  83.         tvi_disp(NowPage);
  84.     }
  85. }
  86. /*****************************************************************************/
  87. void    disp_cue()        /*動画一駒進め*/
  88. {
  89.     if (NowPage<LastPage) {
  90.         NowPage=(NowPage<LastPage)?NowPage+1:LastPage;
  91.         tvi_disp(NowPage);
  92.     }
  93. }
  94. /*****************************************************************************/
  95. void    disp_ff()        /*動画進め*/
  96. {
  97.     if (NowPage<LastPage) {
  98.         NowPage=(NowPage<(LastPage-5))?NowPage+5:LastPage;
  99.         tvi_disp(NowPage);
  100.     }
  101. }
  102. /*****************************************************************************/
  103. void    disp_last()        /*動画最終ページへ*/
  104. {
  105.     if (NowPage!=LastPage) {
  106.         NowPage=LastPage;
  107.         tvi_disp(NowPage);
  108.     }
  109. }
  110. /*****************************************************************************/
  111. void    disp_play()        /*TVIファイルの連続再生*/
  112. {
  113.     int    mb=0,mx,my;
  114.     register unsigned short    i,start,end;
  115.     register unsigned char    page;
  116.  
  117.     if ( ((sysflag & _TVI)==0)||LastPage==0 ) {
  118.         return;
  119.     }
  120.     start=(StartPage==0xffff)?0:StartPage;
  121.     end=(EndPage==0xffff)?LastPage:EndPage;
  122.     i=NowPage;
  123.  
  124.     N_set_resolution(11,11,0,-1,3);    /**32Kビデオ出力(とりあえず非表示に)**/
  125.     MOS_disp(FALSE);
  126.     page=0;
  127.     while ( mb!=_MosBtnRight ) {
  128.         N_set_disp((page+1)& 1);
  129.         tvi_put(page,VideoBufAdd+(imgsize*i));    /*TVIファイルを表示(内部)*/
  130.         MOS_rdpos(&mb,&mx,&my);
  131.         /*if ( mb==_MosBtnRight ) { break; }*/
  132.         i=(i<end)?i+1:start;
  133.         page=(page>0)?0:1;
  134.     }
  135.     NowPage=i;
  136.     N_set_disp(1);
  137.     N_set_resolution(3,10,0,0,2);
  138.     EGB_writePage(EGB_work,0);            /*** ページ0に書き込み ***/
  139.     EGB_clearScreen(EGB_work);
  140.     N_WIN_dispWinAll();
  141.     tvi_disp(i);    /*TVIファイルを1枚再生*/
  142.     MOS_disp(TRUE);
  143. }
  144. /*
  145. $Log: RCS/rec_play.cv $
  146.  * Revision 1.6  90/11/12 17:01:00  Nam
  147.  * Release at V0.0 L18d
  148.  * 
  149.  * Revision 1.5  90/11/12 17:01:00  Nam
  150.  * add optbtn operation
  151.  * 
  152.  * Revision 1.4  90/10/31 14:57:54  Nam
  153.  * Rel V0.0L17 at '90.11.2 for FPICS.
  154.  * 
  155.  * Revision 1.3  90/10/31 14:57:54  Nam
  156.  * rename 'disp()'->'tvi_disp()'
  157.  * 
  158.  * Revision 1.2  90/10/25 18:50:26  Nam
  159.  * use 'rec_st.h'
  160.  * 
  161.  * Revision 1.1  90/10/10 18:05:20  Nam
  162.  * Initial revision
  163.  * 
  164. */
  165.