Tue, 07 May 2013 01:15:31 +0300
Added visibility toggling
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 |
104 | 3 | * Copyright (C) 2013 Santeri Piippo |
30
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 | |
135
c243df39913e
Cleanup and some restructuring
Santeri Piippo <crimsondusk64@gmail.com>
parents:
120
diff
changeset
|
19 | #ifndef LDTYPES_H |
c243df39913e
Cleanup and some restructuring
Santeri Piippo <crimsondusk64@gmail.com>
parents:
120
diff
changeset
|
20 | #define LDTYPES_H |
0 | 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 | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
25 | #define IMPLEMENT_LDTYPE(T, NUMVERTS) \ |
164 | 26 | LD##T () {} \ |
27 | virtual ~LD##T () {} \ | |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
28 | virtual LDObject::Type getType () const { \ |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
29 | return LDObject::T; \ |
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 (); \ |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
32 | virtual LD##T* clone () { \ |
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
33 | return new LD##T (*this); \ |
102
cacd4681ccb4
Added basic object moving with MLCAD-like controls.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
96
diff
changeset
|
34 | } \ |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
35 | virtual void move (vertex vVector); \ |
138
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
36 | virtual short vertices () const { return NUMVERTS; } \ |
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
37 | |
164 | 38 | #define LDOBJ_SETCOLORED(V) virtual bool isColored () const { return V; } |
39 | #define LDOBJ_COLORED LDOBJ_SETCOLORED (true) | |
40 | #define LDOBJ_UNCOLORED LDOBJ_SETCOLORED (false) | |
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
|
41 | |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
42 | #define LDOBJ_CUSTOM_SCHEMANTIC virtual bool isSchemantic () const |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
43 | #define LDOBJ_SCHEMANTIC LDOBJ_CUSTOM_SCHEMANTIC { return true; } |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
44 | #define LDOBJ_NON_SCHEMANTIC LDOBJ_CUSTOM_SCHEMANTIC { return false; } |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
45 | |
151
15fe6c51de54
Switched the object list from a QTreeWidget to a QListWidget-derivative. Derivative because I'm going to add a context menu.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
138
diff
changeset
|
46 | class QListWidgetItem; |
104 | 47 | class LDSubfile; |
0 | 48 | |
49 | // ============================================================================= | |
50 | // LDObject | |
51 | // | |
52 | // Base class object for all LD* types. Each LDObject represents a single line | |
53 | // in the LDraw code file. The virtual method getType returns an enumerator | |
54 | // which is a token of the object's type. The object can be casted into | |
55 | // sub-classes based on this enumerator. | |
56 | // ============================================================================= | |
57 | class LDObject { | |
58 | public: | |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
59 | // Object type codes. Codes are sorted in order of significance. |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
60 | enum Type { |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
61 | Subfile, // Object represents a sub-file reference |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
62 | Radial, // Object represents a generic radial |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
63 | Quad, // Object represents a quadrilateral |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
64 | Triangle, // Object represents a triangle |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
65 | Line, // Object represents a line |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
66 | CondLine, // Object represents a conditional line |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
67 | Vertex, // Object is a vertex, LDForge extension object |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
68 | BFC, // Object represents a BFC statement |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
69 | Comment, // Object represents a comment |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
70 | Gibberish, // Object is the result of failed parsing |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
71 | Empty, // Object represents an empty line |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
72 | Unidentified, // Object is an uninitialized (SHOULD NEVER HAPPEN) |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
73 | NumTypes // Amount of object types |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
74 | }; |
169
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
75 | |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
76 | enum Group { |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
77 | NoGroup = -1, |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
78 | A = 0, B, C, D, |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
79 | NumGroups |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
80 | }; |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
81 | |
0 | 82 | 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
|
83 | virtual ~LDObject (); |
0 | 84 | |
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
|
85 | // 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
|
86 | 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
|
87 | |
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
|
88 | // 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
|
89 | // 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
|
90 | 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
|
91 | |
103
b0a345196435
Added the ability to add vertices to object corners
Santeri Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
92 | // OpenGL list for this object |
107
195aa036da7f
Picking improvements
Santeri Piippo <crimsondusk64@gmail.com>
parents:
104
diff
changeset
|
93 | uint uGLList, uGLPickList; |
103
b0a345196435
Added the ability to add vertices to object corners
Santeri Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
94 | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
95 | // Vertices of this object |
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
96 | vertex vaCoords[4]; |
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
97 | |
104 | 98 | // Object this object was referenced from, if any |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
99 | LDObject* parent; |
104 | 100 | |
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
|
101 | // Type enumerator of this object |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
102 | virtual LDObject::Type getType () const { |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
103 | return LDObject::Unidentified; |
0 | 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 | |
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
|
106 | // 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
|
107 | 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
|
108 | 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
|
109 | } |
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
|
110 | |
76
42284126072a
Added a New Part dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
111 | // 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
|
112 | virtual LDObject* clone () { |
55
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
113 | return new LDObject (*this); |
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
114 | } |
b08f10e668e5
Added clipboard, added delete action
Santeri Piippo <crimsondusk64@gmail.com>
parents:
50
diff
changeset
|
115 | |
29
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
116 | // 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
|
117 | // object and any pointers to it become invalid. |
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
118 | void replace (LDObject* replacement); |
55406ce7446e
Added LDraw path setting dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
25
diff
changeset
|
119 | |
84
c9438ea54ed9
Added move up/down actions.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
76
diff
changeset
|
120 | // Swap this object with another. |
c9438ea54ed9
Added move up/down actions.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
76
diff
changeset
|
121 | void swap (LDObject* other); |
c9438ea54ed9
Added move up/down actions.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
76
diff
changeset
|
122 | |
102
cacd4681ccb4
Added basic object moving with MLCAD-like controls.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
96
diff
changeset
|
123 | // Moves this object using the given vertex as a movement vector |
cacd4681ccb4
Added basic object moving with MLCAD-like controls.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
96
diff
changeset
|
124 | virtual void move (vertex vVector); |
cacd4681ccb4
Added basic object moving with MLCAD-like controls.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
96
diff
changeset
|
125 | |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
126 | // What object in the current file ultimately references this? |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
127 | LDObject* topLevelParent (); |
104 | 128 | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
129 | // Number of vertices this object has |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
130 | virtual short vertices () const { return 0; } |
138
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
131 | |
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
132 | // Is this object colored? |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
133 | virtual bool isColored () const { return false; } |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
134 | |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
135 | // Does this object have meaning in the part model? |
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
136 | virtual bool isSchemantic () const { return false; } |
138
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
137 | |
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
138 | // Returns a sample object by the given value |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
139 | static LDObject* getDefault (const LDObject::Type type); |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
140 | |
91
b4dda6348e7e
History handling for list moving
Santeri Piippo <crimsondusk64@gmail.com>
parents:
84
diff
changeset
|
141 | static void moveObjects (std::vector<LDObject*> objs, const bool bUp); |
117
7eb7a43a511b
Generalized SetContentsHistory to an EditHistory
Santeri Piippo <crimsondusk64@gmail.com>
parents:
114
diff
changeset
|
142 | static str objectListContents (const std::vector<LDObject*>& objs); |
91
b4dda6348e7e
History handling for list moving
Santeri Piippo <crimsondusk64@gmail.com>
parents:
84
diff
changeset
|
143 | |
151
15fe6c51de54
Switched the object list from a QTreeWidget to a QListWidget-derivative. Derivative because I'm going to add a context menu.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
138
diff
changeset
|
144 | // Object list entry for this object |
15fe6c51de54
Switched the object list from a QTreeWidget to a QListWidget-derivative. Derivative because I'm going to add a context menu.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
138
diff
changeset
|
145 | QListWidgetItem* qObjListEntry; |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
146 | |
169
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
147 | Group group () const { return m_group; } |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
148 | void setGroup (const Group group) { m_group = group; } |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
149 | bool hidden () const { return m_hidden; } |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
150 | void setHidden (const bool hidden) { m_hidden = hidden; } |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
151 | |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
152 | private: |
169
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
153 | Group m_group; |
f562323760a2
Added grouping basics - will be needed for ext programs (Intersector, Isecalc and a lot of others use 2 or more inputs, need to get all of those in somehow...) plus I think they can be useful for the actual authoring process
Santeri Piippo <crimsondusk64@gmail.com>
parents:
168
diff
changeset
|
154 | bool m_hidden; |
0 | 155 | }; |
156 | ||
157 | // ============================================================================= | |
158 | // LDGibberish | |
159 | // | |
160 | // Represents a line in the LDraw file that could not be properly parsed. It is | |
161 | // represented by a (!) ERROR in the code view. It exists for the purpose of | |
162 | // allowing garbage lines be debugged and corrected within LDForge. The member | |
163 | // zContent contains the contents of the unparsable line. | |
164 | // ============================================================================= | |
165 | class LDGibberish : public LDObject { | |
166 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
167 | IMPLEMENT_LDTYPE (Gibberish, 0) |
164 | 168 | LDOBJ_UNCOLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
169 | LDOBJ_SCHEMANTIC |
0 | 170 | |
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
|
171 | 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
|
172 | |
0 | 173 | // 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
|
174 | 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
|
175 | |
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
|
176 | // 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
|
177 | str zReason; |
0 | 178 | }; |
179 | ||
180 | // ============================================================================= | |
181 | // LDEmptyLine | |
182 | // | |
183 | // Represents an empty line in the LDraw code file. | |
184 | // ============================================================================= | |
185 | class LDEmpty : public LDObject { | |
186 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
187 | IMPLEMENT_LDTYPE (Empty, 0) |
164 | 188 | LDOBJ_UNCOLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
189 | LDOBJ_NON_SCHEMANTIC |
0 | 190 | }; |
191 | ||
192 | // ============================================================================= | |
193 | // LDComment | |
194 | // | |
195 | // Represents a code-0 comment in the LDraw code file. Member zText contains | |
196 | // the text of the comment. | |
197 | // ============================================================================= | |
198 | class LDComment : public LDObject { | |
199 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
200 | IMPLEMENT_LDTYPE (Comment, 0) |
164 | 201 | LDOBJ_UNCOLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
202 | LDOBJ_NON_SCHEMANTIC |
138
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
203 | |
164 | 204 | LDComment (str zText) : text (zText) {} |
0 | 205 | |
164 | 206 | str text; // The text of this comment |
0 | 207 | }; |
208 | ||
209 | // ============================================================================= | |
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
210 | // LDBFC |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
211 | // |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
212 | // 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
|
213 | // of this statement. |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
214 | // ============================================================================= |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
215 | class LDBFC : public LDComment { |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
216 | public: |
114
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
217 | enum Type { |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
218 | CertifyCCW, |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
219 | CCW, |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
220 | CertifyCW, |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
221 | CW, |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
222 | NoCertify, // Winding becomes disabled (0 BFC NOCERTIFY) |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
223 | InvertNext, // Winding is inverted for next object (0 BFC INVERTNEXT) |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
224 | NumStatements |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
225 | }; |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
226 | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
227 | IMPLEMENT_LDTYPE (BFC, 0) |
164 | 228 | LDOBJ_UNCOLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
229 | LDOBJ_CUSTOM_SCHEMANTIC { return (type == InvertNext); } |
138
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
230 | |
164 | 231 | LDBFC (const LDBFC::Type eType) : type (eType) {} |
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
232 | |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
233 | // Statement strings |
164 | 234 | static const char* statements[]; |
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
235 | |
164 | 236 | Type type; |
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
237 | }; |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
238 | |
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
239 | // ============================================================================= |
0 | 240 | // LDSubfile |
241 | // | |
242 | // Represents a single code-1 subfile reference. | |
243 | // ============================================================================= | |
244 | class LDSubfile : public LDObject { | |
245 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
246 | IMPLEMENT_LDTYPE (Subfile, 0) |
164 | 247 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
248 | LDOBJ_SCHEMANTIC |
0 | 249 | |
164 | 250 | vertex vPosition; // Position of the subpart (FIXME: should get rid of this) |
162
b7d65e89861a
matrix is now templated with N=int (usually 3)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
151
diff
changeset
|
251 | matrix<3> mMatrix; // Transformation matrix for the subpart |
0 | 252 | str zFileName; // Filename of the subpart |
104 | 253 | OpenFile* pFile; // Pointer to opened file for this subfile. null 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
|
254 | |
164 | 255 | // Inlines this subfile. Note that return type is an array of heap-allocated |
256 | // LDObject-clones, they must be deleted one way or another. | |
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
|
257 | std::vector<LDObject*> inlineContents (bool bDeepInline, bool bCache); |
0 | 258 | }; |
259 | ||
260 | // ============================================================================= | |
261 | // LDLine | |
262 | // | |
263 | // Represents a single code-2 line in the LDraw code file. v0 and v1 are the end | |
264 | // points of the line. The line is colored with dColor unless uncolored mode is | |
265 | // set. | |
266 | // ============================================================================= | |
267 | class LDLine : public LDObject { | |
268 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
269 | IMPLEMENT_LDTYPE (Line, 2) |
164 | 270 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
271 | LDOBJ_SCHEMANTIC |
138
d22d5c1d9e8a
Added new subfile dialog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
135
diff
changeset
|
272 | |
57
6e89589f1fe8
Added polygon bordering function
Santeri Piippo <crimsondusk64@gmail.com>
parents:
55
diff
changeset
|
273 | LDLine (vertex v1, vertex v2); |
0 | 274 | }; |
275 | ||
276 | // ============================================================================= | |
277 | // LDCondLine | |
278 | // | |
279 | // Represents a single code-5 conditional line. The end-points v0 and v1 are | |
280 | // inherited from LDLine, c0 and c1 are the control points of this line. | |
281 | // ============================================================================= | |
282 | class LDCondLine : public LDLine { | |
283 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
284 | IMPLEMENT_LDTYPE (CondLine, 4) |
164 | 285 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
286 | LDOBJ_SCHEMANTIC |
0 | 287 | }; |
288 | ||
289 | // ============================================================================= | |
290 | // LDTriangle | |
291 | // | |
292 | // Represents a single code-3 triangle in the LDraw code file. Vertices v0, v1 | |
293 | // and v2 contain the end-points of this triangle. dColor is the color the | |
294 | // triangle is colored with. | |
295 | // ============================================================================= | |
296 | class LDTriangle : public LDObject { | |
297 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
298 | IMPLEMENT_LDTYPE (Triangle, 3) |
164 | 299 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
300 | LDOBJ_SCHEMANTIC |
0 | 301 | |
302 | LDTriangle (vertex _v0, vertex _v1, vertex _v2) { | |
303 | vaCoords[0] = _v0; | |
304 | vaCoords[1] = _v1; | |
305 | vaCoords[2] = _v2; | |
306 | } | |
307 | }; | |
308 | ||
309 | // ============================================================================= | |
310 | // LDQuad | |
311 | // | |
312 | // Represents a single code-4 quadrilateral. v0, v1, v2 and v3 are the end points | |
313 | // of the quad, dColor is the color used for the quad. | |
314 | // ============================================================================= | |
315 | class LDQuad : public LDObject { | |
316 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
317 | IMPLEMENT_LDTYPE (Quad, 4) |
164 | 318 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
319 | LDOBJ_SCHEMANTIC |
21
9aebaaafa5da
Added split-quads-to-triangles function
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
320 | |
164 | 321 | // Split this quad into two triangles (note: heap-allocated) |
73
d20867ac03cc
Added support for BFC types
Santeri Piippo <crimsondusk64@gmail.com>
parents:
66
diff
changeset
|
322 | vector<LDTriangle*> splitToTriangles (); |
0 | 323 | }; |
324 | ||
325 | // ============================================================================= | |
326 | // LDVertex | |
327 | // | |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
328 | // The vertex is an LDForce-specific extension which represents a single |
0 | 329 | // vertex which can be used as a parameter to tools or to store coordinates |
330 | // with. Vertices are a part authoring tool and they should not appear in | |
331 | // finished parts. | |
332 | // ============================================================================= | |
333 | class LDVertex : public LDObject { | |
334 | public: | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
335 | IMPLEMENT_LDTYPE (Vertex, 0) // TODO: move vPosition to vaCoords[0] |
164 | 336 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
337 | LDOBJ_NON_SCHEMANTIC |
0 | 338 | |
339 | vertex vPosition; | |
340 | }; | |
341 | ||
342 | // ============================================================================= | |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
343 | // LDRadial |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
344 | // |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
345 | // The generic radial primitive (radial for short) is another LDforge-specific |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
346 | // extension which represents an arbitrary circular primitive. Radials can appear |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
347 | // as circles, cylinders, rings, cones, discs and disc negatives; the point is to |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
348 | // allow part authors to add radial primitives to parts without much hassle about |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
349 | // non-existant primitive parts. |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
350 | // ============================================================================= |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
351 | class LDRadial : public LDObject { |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
352 | public: |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
353 | enum Type { |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
354 | Circle, |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
355 | Cylinder, |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
356 | Disc, |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
357 | DiscNeg, |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
358 | Ring, |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
359 | Cone, |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
360 | NumTypes |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
361 | }; |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
362 | |
120
607301744394
Rotation and rounding. Rotation needs work to get proper origin stuff
Santeri Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
363 | IMPLEMENT_LDTYPE (Radial, 0) |
164 | 364 | LDOBJ_COLORED |
168
96691a009dff
Further work on ext programs, LDObjectType_e integrated into LDObject
Santeri Piippo <crimsondusk64@gmail.com>
parents:
164
diff
changeset
|
365 | LDOBJ_SCHEMANTIC |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
366 | |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
367 | LDRadial::Type eRadialType; |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
368 | vertex vPosition; |
162
b7d65e89861a
matrix is now templated with N=int (usually 3)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
151
diff
changeset
|
369 | matrix<3> mMatrix; |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
370 | short dDivisions, dSegments, dRingNum; |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
371 | |
162
b7d65e89861a
matrix is now templated with N=int (usually 3)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
151
diff
changeset
|
372 | LDRadial (LDRadial::Type eRadialType, vertex vPosition, matrix<3> mMatrix, |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
373 | short dDivisions, short dSegments, short dRingNum) : |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
374 | eRadialType (eRadialType), vPosition (vPosition), mMatrix (mMatrix), |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
375 | dDivisions (dDivisions), dSegments (dSegments), dRingNum (dRingNum) {} |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
376 | |
164 | 377 | // Returns a set of objects that provide the equivalent of this radial. |
378 | // Note: objects are heap-allocated. | |
114
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
379 | std::vector<LDObject*> decompose (bool bTransform); |
164 | 380 | |
381 | // Compose a file name for this radial. | |
114
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
382 | str makeFileName (); |
fe1bfc5f59ed
Added functionality for getting a primitive name from a radial.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
113
diff
changeset
|
383 | |
164 | 384 | char const* radialTypeName (); |
113
bbaa40226ec9
Radial saving and reading from files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
111
diff
changeset
|
385 | static char const* radialTypeName (const LDRadial::Type eType); |
111
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
386 | }; |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
387 | |
125e8031dbf1
Added the radial type, this one sure has been on my wishlist for a while. :)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
107
diff
changeset
|
388 | // ============================================================================= |
0 | 389 | // Object type names. Pass the return value of getType as the index to get a |
390 | // string representation of the object's type. | |
391 | extern const char* g_saObjTypeNames[]; | |
392 | ||
39
110669124caf
Begin work on dialogs for adding objects. Comments functional!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
30
diff
changeset
|
393 | // Icons for these types |
110669124caf
Begin work on dialogs for adding objects. Comments functional!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
30
diff
changeset
|
394 | extern const char* g_saObjTypeIcons[]; |
110669124caf
Begin work on dialogs for adding objects. Comments functional!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
30
diff
changeset
|
395 | |
135
c243df39913e
Cleanup and some restructuring
Santeri Piippo <crimsondusk64@gmail.com>
parents:
120
diff
changeset
|
396 | #endif // LDTYPES_H |