home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / online / source / c / compilers / Tickle-4.0.sit.hqx / Tickle-4.0 / src / TGE.h < prev    next >
Text File  |  1993-11-18  |  6KB  |  262 lines

  1. /*
  2. ** This source code was written by Tim Endres
  3. ** Email: time@ice.com.
  4. ** USMail: 8840 Main Street, Whitmore Lake, MI  48189
  5. **
  6. ** Some portions of this application utilize sources
  7. ** that are copyrighted by ICE Engineering, Inc., and
  8. ** ICE Engineering retains all rights to those sources.
  9. **
  10. ** Neither ICE Engineering, Inc., nor Tim Endres, 
  11. ** warrants this source code for any reason, and neither
  12. ** party assumes any responsbility for the use of these
  13. ** sources, libraries, or applications. The user of these
  14. ** sources and binaries assumes all responsbilities for
  15. ** any resulting consequences.
  16. */
  17.  
  18. /* Tickle Developers: Mess with this file, and you're dead */
  19.  
  20. /*
  21. **    TGEEdit.h -- Tim Endres' Text Edit Manager interface
  22. **
  23. **    C Interface to the Macintosh Libraries
  24. **    Copyright ICE Engineering 1988
  25. **    All rights reserved.
  26. */
  27.  
  28. #ifndef __TGEEDIT__
  29. #define __TGEEDIT__
  30.  
  31. #define SANITY                    1    /* undefine to remove sanity checks. */
  32.  
  33. #define T_NEW_STATE                    0x00000001
  34.  
  35. #define T_DEAD_WINDOW_STATE            0x08000000
  36.  
  37. #define T_TCL_STATE                    0x00800000
  38. #define T_GLOBAL_TCL_STATE            0x00400000
  39.  
  40. #define T_EXIST_STATE                0x00004000
  41. #define T_INCOMPLETE_STATE            0x00002000
  42. #define T_TEMPORARY_STATE            0x00000800
  43. #define T_TRASHED_STATE                0x00000200
  44.  
  45. #define T_PREF_SELECT_HEADER_FLAG    (0)
  46.  
  47. #define T_SETSTATE(state,bit)        ( (state) |= (bit) )
  48. #define T_UNSETSTATE(state,bit)        ( (state) &= ~(bit) )
  49. #define T_TESTSTATE(state,bit)        ( ( (state) & (bit) ) != 0 )
  50.  
  51. #define TGE_SCRIPT                0
  52. #define TGE_SELECTION            1
  53. #define TGE_ALL                    2
  54.  
  55. #define TGE_FAILURE                0
  56. #define TGE_SUCCESS                1
  57. #define TGE_NOT_IN_DISPLAY        -98
  58. #define TGE_MEMORY_ERROR        -99
  59.  
  60. #define ascReturn                13
  61. #define ascBackSpace            8
  62.  
  63. #define tgeWKind                2001
  64.  
  65. #define TGE_PRINTABLE_KEY(key)        (    ( (key) >= ' '  && (key) <= '~'  )    || \
  66.                                         ( (key) >= 0x80 && (key) <= 0xD8 )    || \
  67.                                         ( (key) == '\010' )                    || \
  68.                                         ( (key) == '\011' )                    || \
  69.                                         ( (key) == '\015' )        )
  70.  
  71.  
  72. #define QD_MAX_COORD            0x7FFF
  73. #define TGE_MAX_ORIGIN            ((QD_MAX_COORD) - 8192)
  74.  
  75. #define inFront ((WindowPtr) -1)
  76. #define WPeek ((WindowPeek) myWindow)
  77.  
  78. #define INIT_NUMBER_BUFFERS        5
  79. #define BUFFER_PAGE_SIZE        (4 * 1024)
  80.  
  81. #define CARET_BLINK_TICKS        29
  82. #define CARET_NOT_DISPLAYED        0
  83. #define CARET_DISPLAYED            1
  84. #define CARET_NOT_IN_DISPLAY    -1
  85.  
  86. #define BUF_MOD_FLAG            0x0400
  87. #define BUF_RAM_FLAG            0x0100
  88.  
  89. #define ISMODIFIED(bufptr)        ( ((bufptr)->flags & BUF_MOD_FLAG) != 0        )
  90. #define NOTMODIFIED(bufptr)        ( ((bufptr)->flags & BUF_MOD_FLAG) == 0        )
  91. #define MODIFY(bufptr)            (  (bufptr)->flags |= BUF_MOD_FLAG            ) 
  92. #define UNMODIFY(bufptr)        (  (bufptr)->flags &= ~(BUF_MOD_FLAG)        ) 
  93.  
  94. #define ISRAMBASED(bufptr)        ( ((bufptr)->flags & BUF_RAM_FLAG) != 0        )
  95. #define ISFILEBASED(bufptr)        ( ((bufptr)->flags & BUF_RAM_FLAG) == 0        )
  96. #define RAMBASED(bufptr)        (  (bufptr)->flags |= BUF_RAM_FLAG            ) 
  97. #define FILEBASED(bufptr)        (  (bufptr)->flags &= ~(BUF_RAM_FLAG)        ) 
  98.  
  99. typedef struct {
  100.     char    *fpathname;
  101.     char    *ffilename;
  102.     long    fdirid;
  103.     short    fvrefnum;
  104.     short    ffileref;
  105.     } FileDef, *FileDefPtr;
  106.  
  107. typedef struct TEXTBUFFER {
  108.     short    flags;
  109.     long    v_begin;
  110.     long    v_end;
  111.     long    file_begin;
  112.     long    file_end;
  113.     Handle    text_handle;
  114.     long    text_length;
  115.     struct TEXT_BUFFER *fnext;
  116.     } text_buffer, *text_buf_ptr;
  117.  
  118. #define TGE_UNDO_NOOP            0
  119. #define TGE_UNDO_PASTE            1
  120. #define TGE_UNDO_CLEAR            2
  121. #define TGE_UNDO_CLEAR_PASTE    3
  122. #define TGE_UNDO_CLEAR_TYPING    4
  123.  
  124. #define TGE_UNDO_STATE            0
  125. #define TGE_REDO_STATE            1
  126.  
  127. #define TGE_UNDO_NOT_TYPING        0
  128. #define TGE_UNDO_START_TYPING    1
  129. #define TGE_UNDO_IS_TYPING        2
  130.  
  131. typedef struct {
  132.     short    undo_op;
  133.     short    undo_state;
  134.     short    typing_state;
  135.     short    pad1;
  136.     long    undo_begin_clear;
  137.     long    undo_end_clear;
  138.     long    undo_begin_paste;
  139.     long    undo_end_paste;
  140.     long    typing_begin;
  141.     long    typing_end;
  142.     long    typing_begin_q;
  143.     long    typing_backspace;
  144.     Handle    undo_handle;
  145.     Handle    undo_back_handle;
  146.     } tge_undo_rec;
  147.  
  148. typedef struct TGEWINDOW {
  149.     WindowRecord    super;
  150.     long            state;
  151.     void            *fobject; /* interpretter (Tcl_Interp *) */
  152. /* WINDOW INFORMATION */
  153.     short            active;
  154.     short            file_based;
  155.     short            changed;
  156.     short            display_lines;
  157.     text_buf_ptr    buffer_pool;
  158.     ControlHandle    hscroll;
  159.     ControlHandle    vscroll;
  160. /* FILE INFORMATION */
  161.     FileDef            fdef;
  162.     long            file_length;
  163.     long            v_length;
  164. /* TEXT DISPLAY INFORMATION */
  165.     Point            forigin;
  166.     short            text_font;
  167.     short            text_size;
  168.     short            text_face;
  169.     short            line_height;
  170.     short            left_margin;
  171.     short            top_margin;
  172.     short            right_margin;
  173.     short            bottom_margin;
  174.     long            position;
  175.     FontInfo        finfo;
  176.     long            sel_start;
  177.     long            sel_end;
  178.     Point            sel_start_pt;
  179.     Point            sel_end_pt;
  180.     short            sel_start_displayed;
  181.     short            sel_end_displayed;
  182.     Point            sel_point;
  183.     long            click_time;
  184.     Point            caret_point;
  185.     long            caret_time;
  186.     short            caret_state;
  187.     short            caret_invalid;
  188.     short            tab_stops;
  189.     short            tab_width;
  190.     short            wrap_length;
  191.     long            *lines;
  192.     long            lines_length;
  193.     long            num_lines;
  194.     long            first_line;
  195.     tge_undo_rec    undo;
  196.     } tgeWindowRec, *tgeWindowPtr;
  197.  
  198. #define TGEWPtr        ((tgeWindowPtr) myWindow)
  199.  
  200. #define TGE_LAST_POSITION(w)    ( (((tgeWindowPtr) w)->v_length > 0) ? \
  201.                                     ((tgeWindowPtr) w)->v_length - 1 : 0 )
  202.  
  203. #define    TGE_box_width    75
  204. #define    TGE_box_base    2
  205.  
  206. #define    TGE_icon_width    16
  207. #define    TGE_icon_height    16
  208. #define    TGE_icon_left    16
  209.  
  210. #define TGE_minh        (TGE_box_width + TGE_icon_width + 32)
  211. #define TGE_minv        75
  212.  
  213.  
  214. #define    iBeamCursor    1
  215. #define    WatchCursor    4
  216.  
  217. #define    changeid    0
  218. #define    itemmsg        1
  219. #define    itemname    2
  220. #define    itemnum        3
  221. #define    itemtab        4
  222.  
  223. #define    canitem        1
  224. #define    csaveitem    2
  225. #define    noitem        3
  226. #define    checktitle    4
  227. #define    casitem        5
  228.  
  229.  
  230. #define FILEDEBUG    5
  231.  
  232. #if FILEDEBUG > 0
  233.  
  234. extern FILE        *fdebug;
  235.  
  236. #ifdef DEBUG
  237. #    define DEBUGBEG    { fdebug = fopen("TGEDEBUG", "a");
  238. #    define DEBUGEND      fclose(fdebug); FlushVol(NULL, (short)0); }
  239. #endif
  240.  
  241. #endif
  242.  
  243. #ifdef DEBUG
  244. #    define TGE_DPRINTF(lvl, action)    ( ((lvl) <= _tge_debug_level) ? dprintf action : 0 )
  245. #else
  246. #    define TGE_DPRINTF(lvl, action)
  247. #endif
  248.  
  249. text_buf_ptr        tge_new_buffer();
  250. text_buf_ptr        tge_get_buffer();
  251. char                *tge_copy_name();
  252. extern RgnHandle    tge_selection_rgn();
  253.  
  254. //extern Rect            scrnrect;
  255. extern int            _tge_debug_level;
  256.  
  257. extern Handle        tge_text_handle();
  258. extern Handle        tge_selection_handle();
  259. extern Handle        tge_new_text_handle();
  260.  
  261. #endif    __TGEEDIT__
  262.