Initial revision
[blender.git] / source / blender / blenkernel / BKE_text.h
1 /**
2  * blenlib/BKE_text.h (mar-2001 nzc)
3  *      
4  * $Id$ 
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34 #ifndef BKE_TEXT_H
35 #define BKE_TEXT_H
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 struct Text;
42 struct TextLine;
43
44 void                    free_text               (struct Text *text);
45 void                    txt_set_undostate       (int u);
46 int                     txt_get_undostate       (void);
47 struct Text*    add_empty_text  (void);
48 int                 reopen_text         (struct Text *text);
49 struct Text*    add_text                (char *file); 
50 struct Text*    copy_text               (struct Text *ta);
51
52 void    txt_free_cut_buffer     (void);
53
54 char*   txt_to_buf                      (struct Text *text);
55 void    txt_clean_text          (struct Text *text);
56 void    txt_order_cursors       (struct Text *text);
57 int             txt_find_string         (struct Text *text, char *findstr);
58 int             txt_has_sel                     (struct Text *text);
59 int             txt_get_span            (struct TextLine *from, struct TextLine *to);
60 void    txt_move_up                     (struct Text *text, short sel);
61 void    txt_move_down           (struct Text *text, short sel);
62 void    txt_move_left           (struct Text *text, short sel);
63 void    txt_move_right          (struct Text *text, short sel);
64 void    txt_move_bof            (struct Text *text, short sel);
65 void    txt_move_eof            (struct Text *text, short sel);
66 void    txt_move_bol            (struct Text *text, short sel);
67 void    txt_move_eol            (struct Text *text, short sel);
68 void    txt_move_toline         (struct Text *text, unsigned int line, short sel);
69 void    txt_pop_sel                     (struct Text *text);
70 void    txt_delete_char         (struct Text *text);
71 void    txt_copy_sel            (struct Text *text);
72 void    txt_sel_all                     (struct Text *text);
73 void    txt_sel_line            (struct Text *text);
74 void    txt_print_cutbuffer     (void);
75 void    txt_cut_sel                     (struct Text *text);
76 char*   txt_sel_to_buf          (struct Text *text);
77 void    txt_insert_buf          (struct Text *text, char *in_buffer);
78 void    txt_paste                       (struct Text *text);
79 void    txt_print_undo          (struct Text *text);
80 void    txt_undo_add_toop       (struct Text *text, int op, unsigned int froml, unsigned short fromc, unsigned int tol, unsigned short toc);
81 void    txt_do_undo                     (struct Text *text);
82 void    txt_do_redo                     (struct Text *text);
83 void    txt_split_curline       (struct Text *text);
84 void    txt_backspace_char      (struct Text *text);
85 int             txt_add_char            (struct Text *text, char add);
86
87
88 /* Undo opcodes */
89
90 /* Simple main cursor movement */
91 #define UNDO_CLEFT              001
92 #define UNDO_CRIGHT             002
93 #define UNDO_CUP                003
94 #define UNDO_CDOWN              004
95
96 /* Simple selection cursor movement */
97 #define UNDO_SLEFT              005
98 #define UNDO_SRIGHT             006
99 #define UNDO_SUP                007
100 #define UNDO_SDOWN              021
101
102 /* Complex movement (opcode is followed
103  * by 4 character line ID + a 2 character
104  * position ID and opcode (repeat)) */
105 #define UNDO_CTO                022
106 #define UNDO_STO                023
107
108 /* Complex editing (opcode is followed
109  * by 1 character ID and opcode (repeat)) */
110 #define UNDO_INSERT             024
111 #define UNDO_BS                 025
112 #define UNDO_DEL                026
113
114 /* Text block (opcode is followed
115  * by 4 character length ID + the text
116  * block itself + the 4 character length
117  * ID (repeat) and opcode (repeat)) */
118 #define UNDO_DBLOCK             027 /* Delete block */
119 #define UNDO_IBLOCK             030 /* Insert block */
120
121 /* Misc */
122 #define UNDO_SWAP               031     /* Swap cursors */
123
124 #ifdef __cplusplus
125 }
126 #endif
127
128 #endif