X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fobject.cpp;fp=src%2Fobject.cpp;h=0000000000000000000000000000000000000000;hb=ea7712f342020baf61cf33ba98b12140da6aecf7;hp=4cc846028a669576f12e8545214b54f69c1a4103;hpb=4a979ddae8aa6b3556f24e8b961f7787c4b40cbe;p=architektonas diff --git a/src/object.cpp b/src/object.cpp deleted file mode 100644 index 4cc8460..0000000 --- a/src/object.cpp +++ /dev/null @@ -1,325 +0,0 @@ -// -// object.cpp: Base class for all CAD objects -// -// Part of the Architektonas Project -// (C) 2011 Underground Software -// See the README and GPLv3 files for licensing and warranty information -// -// JLH = James Hammons -// -// WHO WHEN WHAT -// --- ---------- ------------------------------------------------------------ -// JLH 03/22/2011 Created this file -// JLH 04/01/2011 Added constructor to allow derived objects to have empty -// constructor bodies, added state querying -// JLH 04/02/2001 Added static methods for global states (fixed angle, etc) -// - -#include "object.h" -#include -#include - -// Initialize static variables -bool Object::fixedAngle = false; -bool Object::fixedLength = false; -QFont * Object::font = 0; -int Object::viewportHeight = 0; -bool Object::deleteActive = false; -bool Object::dimensionActive = false; -bool Object::snapToGrid = true; -//snapToPoints all well here? -bool Object::ignoreClicks = false; -bool Object::dontMove = false; -bool Object::selectionInProgress = false; -QRectF Object::selection; -double Object::gridSpacing; -int Object::currentLayer = 0; -Point Object::snapPoint; -bool Object::snapPointIsValid = false; - - -Object::Object(): position(Vector(0, 0)), parent(0), type(OTObject), - state(OSInactive), layer(0), oldState(OSInactive), needUpdate(false) - //, attachedDimension(0) -{ -} - - -Object::Object(Vector v, Object * passedInParent/*= 0*/): position(v), - parent(passedInParent), state(OSInactive), layer(0), oldState(OSInactive), - needUpdate(false)//, attachedDimension(0) -{ -} - - -Object::~Object() -{ -printf("Object: Destroyed!\n"); - for(uint i=0; iDisconnectAll(this); -} - - -/*virtual*/ void Object::Draw(Painter *) -{ -} - - -/*virtual*/ Vector Object::Center(void) -{ - return Vector(); -} - - -/*virtual*/ bool Object::Collided(Vector) -{ - return false; -} - - -/*virtual*/ bool Object::PointerMoved(Vector) -{ - return false; -} - - -/*virtual*/ void Object::PointerReleased(void) -{ -} - - -/*virtual*/ bool Object::NeedsUpdate(void) -{ - return needUpdate; -} - - -/*virtual*/ bool Object::HitTest(Point) -{ - return false; -} - - -// This is intended to be overridden by the Container class, for object morphing -/*virtual*/ void Object::Transmute(Object *, Object *) -{ -} - - -/*virtual*/ Object * Object::GetParent(void) -{ - return parent; -} - - -/*virtual*/ void Object::Add(Object *) -{ -} - - -// This returns a pointer to the point passed in, if it coincides. Otherwise returns NULL. -/*virtual*/ Vector * Object::GetPointAt(Vector) -{ - return 0; -} - - -// This is meant for writing object data to a file. -/*virtual*/ void Object::Enumerate(FILE *) -{ -} - - -/*virtual*/ Object * Object::Copy(void) -{ - return new Object(position, parent); -} - - -// This returns a point on the object at 'parameter', which is between 0 and 1. -// Default is to return the object's position. -/*virtual*/ Vector Object::GetPointAtParameter(double) -{ - return position; -} - - -// Since these functions are pretty much non-object specific, we can implement -// them here. :-) -/*virtual*/ void Object::Connect(Object * obj, double parameter) -{ - // Check to see if this connection is already in our list... - Connection c(obj, parameter); - std::vector::iterator i; - - for(i=connected.begin(); i!=connected.end(); i++) - { - // Bail out if this connection is already present... - if (*i == c) - return; - } - - // Connection is a new one, add it in... - connected.push_back(c); -} - - -/*virtual*/ void Object::Disconnect(Object * obj, double parameter) -{ - std::vector::iterator i; - - for(i=connected.begin(); i!=connected.end(); i++) - { - if (((*i).object == obj) && ((*i).t == parameter)) - { - connected.erase(i); - return; - } - } -} - - -/*virtual*/ void Object::DisconnectAll(Object * obj) -{ - std::vector::iterator i; - - for(i=connected.begin(); i!=connected.end(); ) - { - if ((*i).object == obj) - connected.erase(i); - else - i++; - } -} - - -/*virtual*/ QRectF Object::Extents(void) -{ - // Generic object returns an empty rect... - return QRectF(); -} - - -#if 0 -/*virtual*/ ObjectType Object::Type(void) -{ - return OTObject; -} -#endif - - -/*virtual*/ void Object::Translate(Vector amount) -{ - position += amount; -} - - -/*virtual*/ void Object::Rotate(Point, double) -{ -} - - -/*virtual*/ void Object::Scale(Point, double) -{ -} - - -/*virtual*/ void Object::Mirror(Point, Point) -{ -} - - -/*virtual*/ void Object::Save(void) -{ - oldPosition = position; -} - - -/*virtual*/ void Object::Restore(void) -{ - position = oldPosition; -} - - -ObjectState Object::GetState(void) -{ - return state; -} - - -void Object::Reparent(Object * newParent) -{ - parent = newParent; -} - - -/*Dimension * Object::GetAttachedDimension(void) -{ - return attachedDimension; -}*/ - - -// Class methods... - -void Object::SetFixedAngle(bool state/*= true*/) -{ - fixedAngle = state; -} - - -void Object::SetFixedLength(bool state/*= true*/) -{ - fixedLength = state; -} - - -void Object::SetFont(QFont * f) -{ - font = f; -} - - -void Object::SetViewportHeight(int height) -{ - viewportHeight = height; -} - - -void Object::SetDeleteActive(bool state/*= true*/) -{ - deleteActive = state; -} - - -void Object::SetDimensionActive(bool state/*= true*/) -{ - dimensionActive = state; -} - - -void Object::SetSnapMode(bool state/*= true*/) -{ - snapToGrid = state; -} - - -// -// This looks strange, but it's really quite simple: We want a point that's -// more than half-way to the next grid point to snap there while conversely we -// want a point that's less than half-way to to the next grid point then snap -// to the one before it. So we add half of the grid spacing to the point, then -// divide by it so that we can remove the fractional part, then multiply it -// back to get back to the correct answer. -// -Vector Object::SnapPointToGrid(Vector point) -{ - point += gridSpacing / 2.0; // *This* adds to Z!!! - point /= gridSpacing; - point.x = floor(point.x);//need to fix this for negative numbers... - point.y = floor(point.y); - point.z = 0; // Make *sure* Z doesn't go anywhere!!! - point *= gridSpacing; - return point; -} - -