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=6bbbb661978588081b1cf4a2e7ac5d7bb45d1e32;hpb=c5e595b3156fdf5f93ab6a1032dcc77e859ac6fa;p=architektonas diff --git a/src/base/rs_preview.cpp b/src/base/rs_preview.cpp index 6bbbb66..841841b 100644 --- a/src/base/rs_preview.cpp +++ b/src/base/rs_preview.cpp @@ -17,12 +17,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 +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(); @@ -105,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; @@ -127,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; @@ -149,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) { @@ -172,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)); +}