src/ldtypes.cpp

changeset 402
ec95fc95e5f3
parent 388
7ff483614aa1
child 409
8da2563c645a
equal deleted inserted replaced
401:89a9235b47d3 402:ec95fc95e5f3
24 #include "history.h" 24 #include "history.h"
25 #include "gldraw.h" 25 #include "gldraw.h"
26 #include "colors.h" 26 #include "colors.h"
27 27
28 // List of all LDObjects 28 // List of all LDObjects
29 vector<LDObject*> g_LDObjects; 29 List<LDObject*> g_LDObjects;
30 30
31 // ============================================================================= 31 // =============================================================================
32 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 32 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
33 // ============================================================================= 33 // =============================================================================
34 // LDObject constructors 34 // LDObject constructors
166 } 166 }
167 167
168 // ============================================================================= 168 // =============================================================================
169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
170 // ============================================================================= 170 // =============================================================================
171 vector<LDTriangleObject*> LDQuadObject::splitToTriangles() { 171 List<LDTriangleObject*> LDQuadObject::splitToTriangles() {
172 // Create the two triangles based on this quadrilateral: 172 // Create the two triangles based on this quadrilateral:
173 // 0---3 0---3 3 173 // 0---3 0---3 3
174 // | | | / /| 174 // | | | / /|
175 // | | ==> | / / | 175 // | | ==> | / / |
176 // | | |/ / | 176 // | | |/ / |
180 180
181 // The triangles also inherit the quad's color 181 // The triangles also inherit the quad's color
182 tri1->setColor (color()); 182 tri1->setColor (color());
183 tri2->setColor (color()); 183 tri2->setColor (color());
184 184
185 vector<LDTriangleObject*> triangles; 185 List<LDTriangleObject*> triangles;
186 triangles << tri1; 186 triangles << tri1;
187 triangles << tri2; 187 triangles << tri2;
188 return triangles; 188 return triangles;
189 } 189 }
190 190
275 } 275 }
276 276
277 // ============================================================================= 277 // =============================================================================
278 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 278 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
279 // ============================================================================= 279 // =============================================================================
280 vector<LDObject*> LDSubfileObject::inlineContents (bool deep, bool cache) { 280 List<LDObject*> LDSubfileObject::inlineContents (bool deep, bool cache) {
281 vector<LDObject*> objs, objcache; 281 List<LDObject*> objs, objcache;
282 282
283 // If we have this cached, just clone that 283 // If we have this cached, just clone that
284 if (deep && fileInfo()->cache().size()) { 284 if (deep && fileInfo()->cache().size()) {
285 for (LDObject* obj : fileInfo()->cache()) 285 for (LDObject* obj : fileInfo()->cache())
286 objs << obj->clone(); 286 objs << obj->clone();
297 // just add it into the objects normally. Also, we only cache immediate 297 // just add it into the objects normally. Also, we only cache immediate
298 // subfiles and this is not one. Yay, recursion! 298 // subfiles and this is not one. Yay, recursion!
299 if (deep && obj->getType() == LDObject::Subfile) { 299 if (deep && obj->getType() == LDObject::Subfile) {
300 LDSubfileObject* ref = static_cast<LDSubfileObject*> (obj); 300 LDSubfileObject* ref = static_cast<LDSubfileObject*> (obj);
301 301
302 vector<LDObject*> otherobjs = ref->inlineContents (true, false); 302 List<LDObject*> otherobjs = ref->inlineContents (true, false);
303 303
304 for (LDObject* otherobj : otherobjs) { 304 for (LDObject* otherobj : otherobjs) {
305 // Cache this object, if desired 305 // Cache this object, if desired
306 if (cache) 306 if (cache)
307 objcache << otherobj->clone(); 307 objcache << otherobj->clone();
346 } 346 }
347 347
348 // ============================================================================= 348 // =============================================================================
349 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 349 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
350 // ============================================================================= 350 // =============================================================================
351 void LDObject::moveObjects (vector<LDObject*> objs, const bool up) { 351 void LDObject::moveObjects (List<LDObject*> objs, const bool up) {
352 // If we move down, we need to iterate the array in reverse order. 352 // If we move down, we need to iterate the array in reverse order.
353 const long start = up ? 0 : (objs.size() - 1); 353 const long start = up ? 0 : (objs.size() - 1);
354 const long end = up ? objs.size() : -1; 354 const long end = up ? objs.size() : -1;
355 const long incr = up ? 1 : -1; 355 const long incr = up ? 1 : -1;
356 vector<LDObject*> objsToCompile; 356 List<LDObject*> objsToCompile;
357 357
358 for (long i = start; i != end; i += incr) { 358 for (long i = start; i != end; i += incr) {
359 LDObject* obj = objs[i]; 359 LDObject* obj = objs[i];
360 360
361 const long idx = obj->getIndex(), 361 const long idx = obj->getIndex(),
391 } 391 }
392 392
393 // ============================================================================= 393 // =============================================================================
394 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 394 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
395 // ============================================================================= 395 // =============================================================================
396 str LDObject::objectListContents (const vector<LDObject*>& objs) { 396 str LDObject::objectListContents (const List<LDObject*>& objs) {
397 bool firstDetails = true; 397 bool firstDetails = true;
398 str text = ""; 398 str text = "";
399 399
400 if (objs.size() == 0) 400 if (objs.size() == 0)
401 return "nothing"; // :) 401 return "nothing"; // :)

mercurial