home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a013 / 1.ddi / SOURCE.EXE / F_VRULER.PRG < prev    next >
Encoding:
Text File  |  1991-01-25  |  1.8 KB  |  70 lines

  1. *****************************************************************
  2. FUNCTION VRULER
  3. *****************************************************************
  4.  
  5. * Display a calibrated vertical ruler line
  6.  
  7. * Copyright(c) 1991 - James Occhiogrosso
  8.  
  9. # include "inkey.ch"
  10. # include "setcurs.ch"
  11.  
  12. LOCAL keypress := 0, old_color, old_cursor, old_screen,  ;
  13.       old_row := ROW(), old_col := COL(),                ;
  14.       v_col := INT(MAXCOL()/2), v_ruler := '', v_row := 0
  15.  
  16. * Save entry conditions
  17. old_cursor = SETCURSOR(SC_NONE)
  18. old_color  = SETCOLOR(colbarhi)
  19. old_screen = SCRNSAVE(0, v_col, MAXROW(), v_col)
  20.  
  21.  
  22. * Display vertical ruler
  23. @ 0,  v_col SAY  '┬'
  24. @ MAXROW(), v_col SAY  '┴'
  25. FOR counter = 1 TO (MAXROW() - 1)
  26.     * Display double horizontal marks on each 5th row
  27.     @ counter, v_col SAY IF(counter % 5 = 0, '╪', '┼')
  28. NEXT
  29.  
  30. * Save ruler screen area
  31. v_ruler = SAVESCREEN(0, v_col, MAXROW(), v_col)
  32.  
  33. DO WHILE keypress != K_ESC
  34.     keypress = INKEY(0)
  35.     SCRNREST(old_screen)
  36.  
  37.     * Adjust row and column for each arrow key pressed
  38.     IF keypress = K_RIGHT
  39.          v_col = IF(v_col < MAXCOL(), v_col+1, MAXCOL())
  40.          old_screen = SCRNSAVE(0, v_col, MAXROW(), v_col)
  41.  
  42.     ELSEIF keypress = K_LEFT
  43.          v_col = IF(v_col > 0, v_col-1, 0)
  44.          old_screen = SCRNSAVE(0, v_col, MAXROW(), v_col)
  45.  
  46.     ENDIF
  47.  
  48.     * Display ruler in new position
  49.     RESTSCREEN(0, v_col, MAXROW(), v_col, v_ruler)
  50.  
  51.     IF keypress = K_ALT_H
  52.         * Display horizontal ruler line
  53.         DO hruler
  54.     ENDIF
  55.  
  56.     IF keypress = K_ALT_V
  57.         * Display another vertical ruler
  58.         DO vruler
  59.     ENDIF
  60.  
  61. ENDDO
  62.  
  63. * Restore entry conditions and return
  64. SCRNREST(old_screen)
  65. SETPOS(old_row, old_col)
  66. SETCOLOR(old_color)
  67. SETCURSOR(old_cursor)
  68. RETURN NIL
  69.  
  70.