X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fbase%2Frs_preview.cpp;h=841841b68e534007b0aa190704daca51d6e48a54;hb=d774c2655ba2c3657a565f325411144452392277;hp=b6f426864ca80d50f2bf20942d46c0fb7a4e9d73;hpb=16ce54abf01ca3032e42a5bb11a4afcf9014dcca;p=architektonas diff --git a/src/base/rs_preview.cpp b/src/base/rs_preview.cpp index b6f4268..841841b 100644 --- a/src/base/rs_preview.cpp +++ b/src/base/rs_preview.cpp @@ -1,5 +1,6 @@ -// preview.cpp +// rs_preview.cpp // +// 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 @@ -14,14 +15,16 @@ #include "rs_preview.h" #include "rs_entitycontainer.h" -#include "rs_graphicview.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(); @@ -92,11 +95,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(); @@ -104,8 +107,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; @@ -126,8 +129,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; @@ -148,9 +151,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) { @@ -171,3 +174,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)); +}