Merge branch 'blender2.7'
[blender.git] / source / blender / makesdna / DNA_text_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 /** \file \ingroup DNA
20  *
21  * Text blocks used for Python-Scripts, OpenShadingLanguage
22  * and arbitrary text data to store in blend files.
23  */
24
25 #ifndef __DNA_TEXT_TYPES_H__
26 #define __DNA_TEXT_TYPES_H__
27
28 #include "DNA_listBase.h"
29 #include "DNA_ID.h"
30
31 typedef struct TextLine {
32         struct TextLine *next, *prev;
33
34         char *line;
35         /** May be NULL if syntax is off or not yet formatted. */
36         char *format;
37         /** Blen unused. */
38         int len, blen;
39 } TextLine;
40
41 typedef struct Text {
42         ID id;
43
44         char *name;
45         void *compiled;
46
47         int flags, nlines;
48
49         ListBase lines;
50         TextLine *curl, *sell;
51         int curc, selc;
52
53         double mtime;
54 } Text;
55
56 #define TXT_TABSIZE     4
57 #define TXT_INIT_UNDO 1024
58 #define TXT_MAX_UNDO    (TXT_INIT_UNDO*TXT_INIT_UNDO)
59
60 /* text flags */
61 #define TXT_ISDIRTY             (1 << 0)
62 #define TXT_ISMEM               (1 << 2)
63 #define TXT_ISEXT               (1 << 3)
64 #define TXT_ISSCRIPT            (1 << 4) /* used by space handler scriptlinks */
65 // #define TXT_READONLY            (1 << 8)
66 // #define TXT_FOLLOW              (1 << 9) /* always follow cursor (console) */
67 #define TXT_TABSTOSPACES        (1 << 10) /* use space instead of tabs */
68
69 #endif  /* __DNA_TEXT_TYPES_H__ */