X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fbase%2Frs_preview.cpp;h=2c38235a0cbaf5fdab787741e75e087885f71cb5;hb=bd2b29c8735d83ab48df13c3efee53f63570473e;hp=6bbbb661978588081b1cf4a2e7ac5d7bb45d1e32;hpb=c5e595b3156fdf5f93ab6a1032dcc77e859ac6fa;p=architektonas diff --git a/src/base/rs_preview.cpp b/src/base/rs_preview.cpp index 6bbbb66..2c38235 100644 --- a/src/base/rs_preview.cpp +++ b/src/base/rs_preview.cpp @@ -3,7 +3,9 @@ // Part of the Architektonas Project // Originally part of QCad Community Edition by Andrew Mustun // Extensively rewritten and refactored by James L. Hammons -// (C) 2010 Underground Software +// Portions copyright (C) 2001-2003 RibbonSoft +// Copyright (C) 2010 Underground Software +// See the README and GPLv2 files for licensing and warranty information // // JLH = James L. Hammons // @@ -17,12 +19,14 @@ #include "rs_entitycontainer.h" #include "graphicview.h" #include "rs_information.h" +#include "paintinterface.h" #include "settings.h" /** * Constructor. */ -RS_Preview::RS_Preview(RS_EntityContainer * parent): RS_EntityContainer(parent) +RS_Preview::RS_Preview(RS_EntityContainer * parent): RS_EntityContainer(parent), + visible(false) { settings.beginGroup("Appearance"); maxEntities = settings.value("MaxPreview", 100).toInt(); @@ -93,11 +97,11 @@ void RS_Preview::addEntity(RS_Entity * entity) } /** -* Clones the given entity and adds the clone to the preview. -*/ -void RS_Preview::addCloneOf(RS_Entity* entity) + * Clones the given entity and adds the clone to the preview. + */ +void RS_Preview::addCloneOf(RS_Entity * entity) { - if (entity == NULL) + if (!entity) return; RS_Entity * clone = entity->clone(); @@ -105,8 +109,8 @@ void RS_Preview::addCloneOf(RS_Entity* entity) } /** -* Adds all entities from 'container' to the preview (unselected). -*/ + * Adds all entities from 'container' to the preview (unselected). + */ void RS_Preview::addAllFrom(RS_EntityContainer & container) { int c = 0; @@ -127,8 +131,8 @@ void RS_Preview::addAllFrom(RS_EntityContainer & container) } /** -* Adds all selected entities from 'container' to the preview (unselected). -*/ + * Adds all selected entities from 'container' to the preview (unselected). + */ void RS_Preview::addSelectionFrom(RS_EntityContainer & container) { int c = 0; @@ -149,9 +153,9 @@ void RS_Preview::addSelectionFrom(RS_EntityContainer & container) } /** -* Adds all entities in the given range and those which have endpoints -* in the given range to the preview. -*/ + * Adds all entities in the given range and those which have endpoints in the + * given range to the preview. + */ void RS_Preview::addStretchablesFrom(RS_EntityContainer & container, const Vector & v1, const Vector & v2) { @@ -172,3 +176,39 @@ void RS_Preview::addStretchablesFrom(RS_EntityContainer & container, const Vecto } } } + +void RS_Preview::SetOffset(Vector v) +{ + offset = v; +} + +Vector RS_Preview::Offset(void) +{ + return offset; +} + +void RS_Preview::SetVisible(bool visibility/*= true*/) +{ + visible = visibility; +} + +bool RS_Preview::Visible(void) +{ + return visible; +} + +void RS_Preview::Draw(GraphicView * view, PaintInterface * painter) +{ + if (isEmpty()) + return; + + painter->setPen(RS_Pen(RS_Color(60, 255, 80), RS2::Width00, RS2::SolidLine)); + painter->setOffset(offset); + + // We have to traverse the container ourselves, because RS_Container::draw() + // uses drawEntity() instead of drawEntityPlain()... + for(RS_Entity * e=firstEntity(RS2::ResolveNone); e!=NULL; e=nextEntity(RS2::ResolveNone)) + view->drawEntityPlain(e); + + painter->setOffset(Vector(0, 0)); +}