home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / VPR_DATA / DOGA / SOURCES / POLYEDIT.LZH / MODEL / INPUTWIN.CPP < prev    next >
C/C++ Source or Header  |  1996-06-05  |  4KB  |  187 lines

  1. #include <owl\owlpch.h>
  2. #include <owl\applicat.h>
  3. #include <owl\framewin.h>
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <math.h>
  8.  
  9. extern    "C" {
  10.     #include "input.h"
  11.     #include "graph.h"
  12.     #include "view.h"
  13. };
  14.  
  15.  
  16. #define    TRUE    1
  17. #define    FALSE    0
  18.  
  19. int        MouseX = 0, MouseY = 0 ;
  20. int        MouseLeft = 0, MouseRight = 0 ;
  21. int        MouseMove = FALSE ;
  22. int        KeyCode = 0 ;
  23. int        ShiftStat = 0 ;
  24.  
  25. static    int        Cx, Cy ;
  26. static    int        Cursor ;
  27.  
  28. //
  29. //        外部参照
  30. //
  31. extern    TFrameWindow    *MainWindow ;
  32. extern    TApplication    *Application ;
  33. extern    TDC                *ModelDC ;
  34. extern    int                QuitFlag ;
  35. extern    int        GetKey();
  36. extern    int        PeekKey();
  37. extern    int        GetShift();
  38. extern    void    GetMouseStat( int &, int & );
  39. extern    void    GetMousePos( int &, int & );
  40. extern "C" unsigned long WinGetTimer(void);
  41.  
  42. #define BLINKS 128
  43. static int blink[BLINKS];
  44.  
  45.  
  46. void    InitInput()
  47. {
  48.     int i;
  49.     double t;
  50.     for (i = 0; i < BLINKS; i++) {
  51.         t = (double)i / (double)BLINKS* 3.14159265358979 * 2.0;
  52.         blink[i] = (int)((127.0 - cos(t) * 127.0)/6.0 + 255.0*5.0/6.0);
  53.     }
  54. }
  55.  
  56. void    ExitInput()
  57. {
  58. }
  59.  
  60. void    WaitInput()
  61. {
  62.     unsigned long t, t2;
  63.     int        x, y ;
  64.     int        left, right ;
  65.  
  66.     int col;
  67.     static int selectcol;
  68.     t = WinGetTimer();
  69.     do
  70.     {
  71.         Application->PumpWaitingMessages();
  72.         if ( QuitFlag )
  73.             return ;
  74.         KeyCode = GetKey();
  75.         GetMouseStat( left, right );
  76.         GetMousePos( x, y );
  77.         /* select color */
  78. #if 0
  79.         selectcol = ( selectcol + 1 ) & 0xFFFF ;
  80.         col = ( selectcol >> 5 ) & 511 ;
  81.         if ( col >= 256 )
  82.             col = 511 - col ;
  83. /*        graph_palet( SELECT_COLOR, 255, 255-col, col );*/
  84.         graph_palet( SELECT_COLOR, col, 0, col );
  85. #else
  86.         if (t + 5 < (t2 = WinGetTimer())) {
  87.             selectcol = (selectcol + (t2-t)/5) % BLINKS;
  88.             t = t2;
  89.             col = blink[selectcol];
  90. /*            graph_palet( SELECT_COLOR, 255, 0, col );*/
  91. /*            graph_palet( SELECT_COLOR, col, 0, col );*/
  92. /*1            graph_palet( SELECT_COLOR, col, 0, 255); */
  93. /*2            graph_palet( SELECT_COLOR, (128+col/2), 128, (128+col/2));*/
  94. /*3            graph_palet( SELECT_COLOR, col, 255-col, 255);*/
  95. /*            graph_palet( SELECT_COLOR, 255, 255-col, 255);*/
  96. /*            graph_palet( SELECT_COLOR, col, 0, col);*/
  97. /*            graph_palet( SELECT_COLOR, 191, 255, 0);*/
  98.             graph_palet( SELECT_COLOR, col, 0, col);
  99.         }
  100. #endif
  101.     }
  102.     while ( left == MouseLeft && right == MouseRight && KeyCode == 0
  103.          && ( (!left && !right) || (x == MouseX && y == MouseY)));
  104. #if 0
  105.     while ( (!left || MouseLeft) && (!right || MouseRight) && KeyCode == 0
  106.          && ( (!left && !right) || (x == MouseX && y == MouseY)));
  107.     while ( left == MouseLeft && right == MouseRight && KeyCode == 0
  108.          && ( (!left && !right) || (x == MouseX && y == MouseY)));
  109.     while( !left && !right && !MouseLeft && !MouseRight &&
  110.             x == MouseX && y == MouseY && KeyCode == 0 );
  111. #endif
  112.  
  113.     MouseMove = ( x != MouseX ) || ( y != MouseY );
  114.     MouseX = x ;
  115.     MouseY = y ;
  116.     MouseLeft = left ;
  117.     MouseRight = right ;
  118.     ShiftStat = GetShift();
  119. }
  120.  
  121. void    PeekInput( void )
  122. {
  123.     int        x, y ;
  124.     int        left, right ;
  125.     int k;
  126.  
  127.     Application->PumpWaitingMessages();
  128.     GetMouseStat( left, right );
  129.     GetMousePos( x, y );
  130.  
  131.     MouseX = x ;
  132.     MouseY = y ;
  133.     MouseLeft = left ;
  134.     MouseRight = right ;
  135.     ShiftStat = GetShift();
  136.     k = PeekKey();
  137.     if (k) {
  138.         KeyCode = k;
  139.     }
  140. }
  141.  
  142. void    FlushKey()
  143. {
  144. }
  145.  
  146. void    Locate( int x, int y )
  147. {
  148.     Cx = x ;
  149.     Cy = y ;
  150.  
  151.     if ( Cursor )
  152.     {
  153.     }
  154. }
  155.  
  156. void    CursorON()
  157. {
  158.     Cursor = TRUE ;
  159.     Locate( Cx, Cy );
  160.  
  161. }
  162.  
  163. void    CursorOFF()
  164. {
  165.     Cursor = FALSE ;
  166. }
  167.  
  168. void    Bell()
  169. {
  170.     MessageBeep(-1);
  171. }
  172.  
  173. void    GetCursorPosition( int *xp, int *yp )
  174. {
  175.     *xp = Cx ;
  176.     *yp = Cy ;
  177. }
  178.  
  179. extern "C" void GetDCParameter(char *dc);
  180. void    GetDCParameter(char *dc)
  181. {
  182.     sprintf(dc, "--inline=%lu,%d,%d -c%dx%d", (unsigned long) ModelDC,
  183.             WinPers.x + FRAME_WIDTH, WinPers.y + FRAME_WIDTH,
  184.             WinPers.h - FRAME_WIDTH*2, WinPers.v - FRAME_WIDTH*2);
  185. }
  186.  
  187.