Thu, 11 Apr 2013 17:15:01 +0300
Recent files are now remembered and displayed in a submenu
|
30
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
1 | /* |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
2 | * LDForge: LDraw parts authoring CAD |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
3 | * Copyright (C) 2013 Santeri `arezey` Piippo |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
4 | * |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
5 | * This program is free software: you can redistribute it and/or modify |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
6 | * it under the terms of the GNU General Public License as published by |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
7 | * the Free Software Foundation, either version 3 of the License, or |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
8 | * (at your option) any later version. |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
9 | * |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
13 | * GNU General Public License for more details. |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
14 | * |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
17 | */ |
|
31ff9aabd506
Licensed LDForge GPL3, added some more icons
Santeri Piippo <crimsondusk64@gmail.com>
parents:
29
diff
changeset
|
18 | |
| 0 | 19 | #ifndef __LDTYPES_H__ |
| 20 | #define __LDTYPES_H__ | |
| 21 | ||
| 22 | #include "common.h" | |
|
64
ada4679d5bce
Considerably improved sub-file inlining. Use a matrix class instead of double[9], educated myself on what matrix multiplication actually is and fixed the algorithm up. Aside from I/O problems, 32551.dat is correctly rendered now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
63
diff
changeset
|
23 | #include "types.h" |
| 0 | 24 | |
| 25 | #define IMPLEMENT_LDTYPE(N) \ | |
| 26 | LD##N (); \ | |
|
24
d2d4d0154338
added dummy action for future inlining command. Also GCC says that deleting instances of classes with virtual members but no virtual destructors is bad.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
23
diff
changeset
|
27 | virtual ~LD##N (); \ |
| 0 | 28 | virtual LDObjectType_e getType () const { \ |
| 29 | return OBJ_##N; \ | |
|
14
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
30 | } \ |
|
55
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
31 | virtual str getContents (); \ |
|
76
42284126072a
Added a New Part dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
32 | virtual LD##N* clone () { \ |
|
55
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
33 | return new LD##N (*this); \ |
|
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
34 | } |
|
14
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
35 | |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
36 | class QTreeWidgetItem; |
| 0 | 37 | |
| 38 | // ============================================================================= | |
| 39 | // LDObjectType_e | |
| 40 | // | |
|
96
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
41 | // Object type codes. Codes are sorted in order of significance. |
| 0 | 42 | // ============================================================================= |
| 43 | enum LDObjectType_e { | |
|
96
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
44 | OBJ_Subfile, // Object represents a sub-file reference |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
45 | OBJ_Quad, // Object represents a quadrilateral |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
46 | OBJ_Triangle, // Object represents a triangle |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
47 | OBJ_Line, // Object represents a line |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
48 | OBJ_CondLine, // Object represents a conditional line |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
49 | OBJ_Vertex, // Object is a vertex, LDForge extension object |
|
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
50 | OBJ_BFC, // Object represents a BFC statement |
|
96
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
51 | OBJ_Comment, // Object represents a comment |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
52 | OBJ_Gibberish, // Object is the result of failed parsing |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
53 | OBJ_Empty, // Object represents an empty line |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
54 | OBJ_Unidentified, // Object is an uninitialized (SHOULD NEVER HAPPEN) |
|
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
55 | NUM_ObjectTypes // Amount of object types |
| 0 | 56 | }; |
| 57 | ||
| 58 | // ============================================================================= | |
| 59 | // LDObject | |
| 60 | // | |
| 61 | // Base class object for all LD* types. Each LDObject represents a single line | |
| 62 | // in the LDraw code file. The virtual method getType returns an enumerator | |
| 63 | // which is a token of the object's type. The object can be casted into | |
| 64 | // sub-classes based on this enumerator. | |
| 65 | // ============================================================================= | |
| 66 | class LDObject { | |
| 67 | public: | |
| 68 | LDObject (); | |
|
24
d2d4d0154338
added dummy action for future inlining command. Also GCC says that deleting instances of classes with virtual members but no virtual destructors is bad.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
23
diff
changeset
|
69 | virtual ~LDObject (); |
| 0 | 70 | |
|
13
3955ff2a7d72
Added logf function to write to message log. Write warnings of unparsable files into the message log.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
11
diff
changeset
|
71 | // Index (i.e. line number) of this object |
|
66
12aca5d5a51e
Restructured inlining to use a proper caching.. one cache per sub-file reference? What was I thinking? *whacks self with a 55295.dat*
Santeri Piippo <crimsondusk64@gmail.com>
parents:
64
diff
changeset
|
72 | long getIndex (OpenFile* pFile); |
|
13
3955ff2a7d72
Added logf function to write to message log. Write warnings of unparsable files into the message log.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
11
diff
changeset
|
73 | |
|
50
7fd213c6b844
Turned the test palette action into a set color action for mass object coloring.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
43
diff
changeset
|
74 | // Color used by this object. Comments, gibberish and empty entries |
|
7fd213c6b844
Turned the test palette action into a set color action for mass object coloring.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
43
diff
changeset
|
75 | // do not use this field. |
|
7fd213c6b844
Turned the test palette action into a set color action for mass object coloring.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
43
diff
changeset
|
76 | short dColor; |
|
7fd213c6b844
Turned the test palette action into a set color action for mass object coloring.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
43
diff
changeset
|
77 | |
|
13
3955ff2a7d72
Added logf function to write to message log. Write warnings of unparsable files into the message log.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
11
diff
changeset
|
78 | // Type enumerator of this object |
| 0 | 79 | virtual LDObjectType_e getType () const { |
| 80 | return OBJ_Unidentified; | |
| 81 | }; | |
|
14
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
82 | |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
83 | // A string that represents this line |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
84 | virtual str getContents () { |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
85 | return ""; |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
86 | } |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
87 | |
|
76
42284126072a
Added a New Part dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
88 | // Creates a new LDObject identical to this one and returns a pointer to it. |
|
42284126072a
Added a New Part dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
89 | virtual LDObject* clone () { |
|
55
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
90 | return new LDObject (*this); |
|
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
91 | } |
|
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
92 | |
|
14
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
93 | void commonInit (); |
|
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
94 | |
|
29
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
95 | // Replace this LDObject with another LDObject. This method deletes the |
|
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
96 | // object and any pointers to it become invalid. |
|
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
97 | void replace (LDObject* replacement); |
|
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
98 | |
|
84
c9438ea54ed9
Added move up/down actions.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
76
diff
changeset
|
99 | // Swap this object with another. |
|
c9438ea54ed9
Added move up/down actions.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
76
diff
changeset
|
100 | void swap (LDObject* other); |
|
c9438ea54ed9
Added move up/down actions.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
76
diff
changeset
|
101 | |
|
91
b4dda6348e7e
History handling for list moving
Santeri Piippo <crimsondusk64@gmail.com>
parents:
84
diff
changeset
|
102 | static void moveObjects (std::vector<LDObject*> objs, const bool bUp); |
|
96
2f175b3d8211
Added history dialog, cannot display all types yet
Santeri Piippo <crimsondusk64@gmail.com>
parents:
91
diff
changeset
|
103 | static str objectListContents (std::vector<LDObject*>& objs); |
|
91
b4dda6348e7e
History handling for list moving
Santeri Piippo <crimsondusk64@gmail.com>
parents:
84
diff
changeset
|
104 | |
|
14
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
105 | QTreeWidgetItem* qObjListEntry; |
| 0 | 106 | }; |
| 107 | ||
| 108 | // ============================================================================= | |
| 109 | // LDGibberish | |
| 110 | // | |
| 111 | // Represents a line in the LDraw file that could not be properly parsed. It is | |
| 112 | // represented by a (!) ERROR in the code view. It exists for the purpose of | |
| 113 | // allowing garbage lines be debugged and corrected within LDForge. The member | |
| 114 | // zContent contains the contents of the unparsable line. | |
| 115 | // ============================================================================= | |
| 116 | class LDGibberish : public LDObject { | |
| 117 | public: | |
| 118 | IMPLEMENT_LDTYPE (Gibberish) | |
| 119 | ||
|
11
323390a03294
Color gibberish red. Check for line code length for gibberish (must be 1 to be valid)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
0
diff
changeset
|
120 | LDGibberish (str _zContent, str _zReason); |
|
323390a03294
Color gibberish red. Check for line code length for gibberish (must be 1 to be valid)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
0
diff
changeset
|
121 | |
| 0 | 122 | // Content of this unknown line |
|
14
6d9d8efae2f8
this thing got its own reinterpret_cast now. :P Added SetContents action for altering an object by contents and reinterpreting it.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
13
diff
changeset
|
123 | str zContents; |
|
11
323390a03294
Color gibberish red. Check for line code length for gibberish (must be 1 to be valid)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
0
diff
changeset
|
124 | |
|
323390a03294
Color gibberish red. Check for line code length for gibberish (must be 1 to be valid)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
0
diff
changeset
|
125 | // Why is this gibberish? |
|
323390a03294
Color gibberish red. Check for line code length for gibberish (must be 1 to be valid)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
0
diff
changeset
|
126 | str zReason; |
| 0 | 127 | }; |
| 128 | ||
| 129 | // ============================================================================= | |
| 130 | // LDEmptyLine | |
| 131 | // | |
| 132 | // Represents an empty line in the LDraw code file. | |
| 133 | // ============================================================================= | |
| 134 | class LDEmpty : public LDObject { | |
| 135 | public: | |
| 136 | IMPLEMENT_LDTYPE (Empty) | |
| 137 | }; | |
| 138 | ||
| 139 | // ============================================================================= | |
| 140 | // LDComment | |
| 141 | // | |
| 142 | // Represents a code-0 comment in the LDraw code file. Member zText contains | |
| 143 | // the text of the comment. | |
| 144 | // ============================================================================= | |
| 145 | class LDComment : public LDObject { | |
| 146 | public: | |
| 147 | IMPLEMENT_LDTYPE (Comment) | |
|
76
42284126072a
Added a New Part dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
148 | LDComment (str zText) : zText (zText) {} |
| 0 | 149 | |
| 150 | str zText; // The text of this comment | |
| 151 | }; | |
| 152 | ||
| 153 | // ============================================================================= | |
|
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
154 | // LDBFC |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
155 | // |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
156 | // Represents a 0 BFC statement in the LDraw code. eStatement contains the type |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
157 | // of this statement. |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
158 | // ============================================================================= |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
159 | class LDBFC : public LDComment { |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
160 | public: |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
161 | IMPLEMENT_LDTYPE (BFC) |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
162 | LDBFC (const int dType) : dStatement (dType) {} |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
163 | |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
164 | // Statement strings |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
165 | static const char* saStatements[]; |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
166 | |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
167 | static str statementString (short dValue); |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
168 | short dStatement; |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
169 | }; |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
170 | |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
171 | |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
172 | // ----------------------------------------------------------------------------- |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
173 | // Enumerator for LDBFC's dStatement |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
174 | enum LDBFCType_e { |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
175 | BFC_CertifyCCW, |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
176 | BFC_CCW, |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
177 | BFC_CertifyCW, |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
178 | BFC_CW, |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
179 | BFC_NoCertify, // Winding becomes disabled (0 BFC NOCERTIFY) |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
180 | BFC_InvertNext, // Winding is inverted for next object (0 BFC INVERTNEXT) |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
181 | NUM_BFCStatements |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
182 | }; |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
183 | |
|
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
184 | // ============================================================================= |
| 0 | 185 | // LDSubfile |
| 186 | // | |
| 187 | // Represents a single code-1 subfile reference. | |
| 188 | // ============================================================================= | |
| 189 | class LDSubfile : public LDObject { | |
| 190 | public: | |
| 191 | IMPLEMENT_LDTYPE (Subfile) | |
| 192 | ||
| 193 | vertex vPosition; // Position of the subpart | |
|
64
ada4679d5bce
Considerably improved sub-file inlining. Use a matrix class instead of double[9], educated myself on what matrix multiplication actually is and fixed the algorithm up. Aside from I/O problems, 32551.dat is correctly rendered now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
63
diff
changeset
|
194 | matrix mMatrix; // Transformation matrix for the subpart |
| 0 | 195 | str zFileName; // Filename of the subpart |
|
23
69a91c1ff583
begin work on subfile caching
Santeri Piippo <crimsondusk64@gmail.com>
parents:
21
diff
changeset
|
196 | OpenFile* pFile; // Pointer to opened file for this subfile. nullptr if unopened. |
|
62
915fc477cb6a
Got inlining working. 3002.dat renders properly now! Now just to iron out the bugs and hone the behavior..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
57
diff
changeset
|
197 | |
|
915fc477cb6a
Got inlining working. 3002.dat renders properly now! Now just to iron out the bugs and hone the behavior..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
57
diff
changeset
|
198 | // Gets the inlined contents of this subfile. |
|
66
12aca5d5a51e
Restructured inlining to use a proper caching.. one cache per sub-file reference? What was I thinking? *whacks self with a 55295.dat*
Santeri Piippo <crimsondusk64@gmail.com>
parents:
64
diff
changeset
|
199 | std::vector<LDObject*> inlineContents (bool bDeepInline, bool bCache); |
| 0 | 200 | }; |
| 201 | ||
| 202 | // ============================================================================= | |
| 203 | // LDLine | |
| 204 | // | |
| 205 | // Represents a single code-2 line in the LDraw code file. v0 and v1 are the end | |
| 206 | // points of the line. The line is colored with dColor unless uncolored mode is | |
| 207 | // set. | |
| 208 | // ============================================================================= | |
| 209 | class LDLine : public LDObject { | |
| 210 | public: | |
| 211 | IMPLEMENT_LDTYPE (Line) | |
|
57
6e89589f1fe8
Added polygon bordering function
Santeri Piippo <crimsondusk64@gmail.com>
parents:
55
diff
changeset
|
212 | LDLine (vertex v1, vertex v2); |
| 0 | 213 | |
| 214 | vertex vaCoords[2]; // End points of this line | |
| 215 | }; | |
| 216 | ||
| 217 | // ============================================================================= | |
| 218 | // LDCondLine | |
| 219 | // | |
| 220 | // Represents a single code-5 conditional line. The end-points v0 and v1 are | |
| 221 | // inherited from LDLine, c0 and c1 are the control points of this line. | |
| 222 | // ============================================================================= | |
| 223 | class LDCondLine : public LDLine { | |
| 224 | public: | |
| 225 | IMPLEMENT_LDTYPE (CondLine) | |
| 226 | ||
|
40
215b9f8f0cd7
Added triangle, quad and condline to the add object dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
39
diff
changeset
|
227 | vertex vaCoords[4]; // End points + control points of this line |
| 0 | 228 | }; |
| 229 | ||
| 230 | // ============================================================================= | |
| 231 | // LDTriangle | |
| 232 | // | |
| 233 | // Represents a single code-3 triangle in the LDraw code file. Vertices v0, v1 | |
| 234 | // and v2 contain the end-points of this triangle. dColor is the color the | |
| 235 | // triangle is colored with. | |
| 236 | // ============================================================================= | |
| 237 | class LDTriangle : public LDObject { | |
| 238 | public: | |
| 239 | IMPLEMENT_LDTYPE (Triangle) | |
| 240 | ||
| 241 | vertex vaCoords[3]; | |
| 242 | ||
| 243 | LDTriangle (vertex _v0, vertex _v1, vertex _v2) { | |
| 244 | vaCoords[0] = _v0; | |
| 245 | vaCoords[1] = _v1; | |
| 246 | vaCoords[2] = _v2; | |
| 247 | } | |
| 248 | }; | |
| 249 | ||
| 250 | // ============================================================================= | |
| 251 | // LDQuad | |
| 252 | // | |
| 253 | // Represents a single code-4 quadrilateral. v0, v1, v2 and v3 are the end points | |
| 254 | // of the quad, dColor is the color used for the quad. | |
| 255 | // ============================================================================= | |
| 256 | class LDQuad : public LDObject { | |
| 257 | public: | |
| 258 | IMPLEMENT_LDTYPE (Quad) | |
| 259 | ||
| 260 | vertex vaCoords[4]; | |
|
21
9aebaaafa5da
Added split-quads-to-triangles function
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
261 | |
|
9aebaaafa5da
Added split-quads-to-triangles function
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
262 | // Split this quad into two triangles |
|
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
263 | vector<LDTriangle*> splitToTriangles (); |
| 0 | 264 | }; |
| 265 | ||
| 266 | // ============================================================================= | |
| 267 | // LDVertex | |
| 268 | // | |
| 269 | // The vertex is another LDForce-specific extension. It represents a single | |
| 270 | // vertex which can be used as a parameter to tools or to store coordinates | |
| 271 | // with. Vertices are a part authoring tool and they should not appear in | |
| 272 | // finished parts. | |
| 273 | // ============================================================================= | |
| 274 | class LDVertex : public LDObject { | |
| 275 | public: | |
| 276 | IMPLEMENT_LDTYPE (Vertex) | |
| 277 | ||
| 278 | vertex vPosition; | |
| 279 | }; | |
| 280 | ||
| 281 | // ============================================================================= | |
| 282 | // Object type names. Pass the return value of getType as the index to get a | |
| 283 | // string representation of the object's type. | |
| 284 | extern const char* g_saObjTypeNames[]; | |
| 285 | ||
|
39
110669124caf
Begin work on dialogs for adding objects. Comments functional!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
30
diff
changeset
|
286 | // Icons for these types |
|
110669124caf
Begin work on dialogs for adding objects. Comments functional!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
30
diff
changeset
|
287 | extern const char* g_saObjTypeIcons[]; |
|
110669124caf
Begin work on dialogs for adding objects. Comments functional!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
30
diff
changeset
|
288 | |
| 0 | 289 | #endif |