src/types.cpp

changeset 381
241f65769a57
parent 380
e442d9b7c251
child 388
7ff483614aa1
equal deleted inserted replaced
380:e442d9b7c251 381:241f65769a57
22 #include <qfile.h> 22 #include <qfile.h>
23 #include <assert.h> 23 #include <assert.h>
24 #include "common.h" 24 #include "common.h"
25 #include "types.h" 25 #include "types.h"
26 #include "misc.h" 26 #include "misc.h"
27 #include "ldtypes.h"
28 #include "file.h"
27 29
28 str DoFormat( vector<StringFormatArg> args ) 30 str DoFormat( vector<StringFormatArg> args )
29 { 31 {
30 assert( args.size() >= 1 ); 32 assert( args.size() >= 1 );
31 str text = args[0].value(); 33 str text = args[0].value();
484 } 486 }
485 487
486 // ============================================================================= 488 // =============================================================================
487 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 489 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
488 // ============================================================================= 490 // =============================================================================
489 bbox::bbox() { 491 LDBoundingBox::LDBoundingBox() {
490 reset(); 492 reset();
491 } 493 }
492 494
493 // ============================================================================= 495 // =============================================================================
494 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 496 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
495 // ============================================================================= 497 // =============================================================================
496 void bbox::calculate() { 498 void LDBoundingBox::calculate() {
497 reset(); 499 reset();
498 500
499 if (!currentFile()) 501 if (!currentFile())
500 return; 502 return;
501 503
504 } 506 }
505 507
506 // ============================================================================= 508 // =============================================================================
507 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 509 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
508 // ============================================================================= 510 // =============================================================================
509 void bbox::calcObject (LDObject* obj) { 511 void LDBoundingBox::calcObject (LDObject* obj) {
510 switch (obj->getType()) { 512 switch (obj->getType()) {
511 case LDObject::Line: 513 case LDObject::Line:
512 case LDObject::Triangle: 514 case LDObject::Triangle:
513 case LDObject::Quad: 515 case LDObject::Quad:
514 case LDObject::CondLine: 516 case LDObject::CondLine:
531 default: 533 default:
532 break; 534 break;
533 } 535 }
534 } 536 }
535 537
538 LDBoundingBox& LDBoundingBox::operator<< (const vertex& v) {
539 calcVertex (v);
540 return *this;
541 }
542
543 LDBoundingBox& LDBoundingBox::operator<< (LDObject* obj) {
544 calcObject (obj);
545 return *this;
546 }
547
536 // ============================================================================= 548 // =============================================================================
537 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 549 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
538 // ============================================================================= 550 // =============================================================================
539 void bbox::calcVertex (const vertex& v) { 551 void LDBoundingBox::calcVertex (const vertex& v) {
540 for (const Axis ax : g_Axes) { 552 for (const Axis ax : g_Axes) {
541 if (v[ax] < m_v0[ax]) 553 if (v[ax] < m_v0[ax])
542 m_v0[ax] = v[ax]; 554 m_v0[ax] = v[ax];
543 555
544 if (v[ax] > m_v1[ax]) 556 if (v[ax] > m_v1[ax])
549 } 561 }
550 562
551 // ============================================================================= 563 // =============================================================================
552 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 564 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
553 // ============================================================================= 565 // =============================================================================
554 void bbox::reset() { 566 void LDBoundingBox::reset() {
555 m_v0[X] = m_v0[Y] = m_v0[Z] = 0x7FFFFFFF; 567 m_v0[X] = m_v0[Y] = m_v0[Z] = 0x7FFFFFFF;
556 m_v1[X] = m_v1[Y] = m_v1[Z] = 0xFFFFFFFF; 568 m_v1[X] = m_v1[Y] = m_v1[Z] = 0xFFFFFFFF;
557 569
558 m_empty = true; 570 m_empty = true;
559 } 571 }
560 572
561 // ============================================================================= 573 // =============================================================================
562 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 574 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
563 // ============================================================================= 575 // =============================================================================
564 double bbox::size() const { 576 double LDBoundingBox::size() const {
565 double xscale = (m_v0[X] - m_v1[X]); 577 double xscale = (m_v0[X] - m_v1[X]);
566 double yscale = (m_v0[Y] - m_v1[Y]); 578 double yscale = (m_v0[Y] - m_v1[Y]);
567 double zscale = (m_v0[Z] - m_v1[Z]); 579 double zscale = (m_v0[Z] - m_v1[Z]);
568 double size = zscale; 580 double size = zscale;
569 581
578 590
579 return 1.0f; 591 return 1.0f;
580 } 592 }
581 593
582 // ============================================================================= 594 // =============================================================================
583 vertex bbox::center() const { 595 vertex LDBoundingBox::center() const {
584 return vertex ( 596 return vertex (
585 (m_v0[X] + m_v1[X]) / 2, 597 (m_v0[X] + m_v1[X]) / 2,
586 (m_v0[Y] + m_v1[Y]) / 2, 598 (m_v0[Y] + m_v1[Y]) / 2,
587 (m_v0[Z] + m_v1[Z]) / 2); 599 (m_v0[Z] + m_v1[Z]) / 2);
588 } 600 }

mercurial