// 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 <jlhamm@acm.org>
//
#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();
}
/**
-* 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();
}
/**
-* 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;
}
/**
-* 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;
}
/**
-* 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)
{
}
}
}
+
+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));
+}