QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RGraphicsSceneQt Class Reference

Qt based 2d graphics scene. More...

#include <RGraphicsSceneQt.h>

Inheritance diagram for RGraphicsSceneQt:
RGraphicsScene RExporter

List of all members.

Public Member Functions

void addPath (REntity::Id entityId, const RPainterPath &path, bool draft)
void addToPreview (const QList< RPainterPath > &painterPaths)
void addToPreview (const RPainterPath &painterPath)
bool beginPath ()
 Starts a new painter path to export geometry into.
virtual void clear ()
 Clears (resets) the scene contents.
virtual void clearPreview ()
 Clears the preview.
void deletePainterPaths ()
virtual void dump ()
void endPath ()
virtual void exportArc (const RArc &arc, double offset=RNANDOUBLE)
virtual void exportArcSegment (const RArc &arc, bool allowForZeroLength=false)
virtual void exportEllipse (const REllipse &ellipse, double offset=RNANDOUBLE)
 Exports an ellipse with the current attributes.
virtual void exportImage (const RImageData &image)
virtual void exportLine (const RLine &line, double offset=RNANDOUBLE)
 Exports a line with the current attributes.
virtual void exportLineSegment (const RLine &line, double angle=RNANDOUBLE)
 Exports a line segment (a line without pattern).
virtual void exportPainterPaths (const QList< RPainterPath > &paths)
virtual void exportPainterPathSource (const RPainterPathSource &pathSource)
virtual void exportPoint (const RPoint &point)
 Exports a point with the current attributes.
virtual void exportPolyline (const RPolyline &polyline, double offset=RNANDOUBLE)
void exportPolylineFill (const RPolyline &polyline)
virtual void exportRay (const RRay &ray)
 Exports an infinite ray.
virtual void exportRectangle (const RVector &p1, const RVector &p2)
 Exports a rectangle with the current attributes.
virtual void exportSpline (const RSpline &spline, double offset=RNANDOUBLE)
virtual void exportTriangle (const RTriangle &triangle)
 Exports a triangle with the current attributes.
virtual void exportXLine (const RXLine &xLine)
 Exports an infinite line.
RGraphicsViewImagegetGraphicsView () const
RImageData getImage (REntity::Id entityId)
virtual double getLineTypePatternScale (const RLinetypePattern &p) const
QList< RPainterPathgetPainterPaths (REntity::Id entityId)
QList< RPainterPathgetPreviewPainterPaths ()
bool hasImageFor (REntity::Id entityId)
virtual void highlightEntity (REntity &entity)
 Highlights the given entity.
 RGraphicsSceneQt (RDocumentInterface &documentInterface)
 Copyright (c) 2011-2014 by Andrew Mustun.
virtual void startEntity (bool topLevelEntity)
virtual void unexportEntity (REntity::Id entityId)
 This is called for entities for which an export was requested but which cannot be instantiated because they either do not exist (anymore) in the DB or they are currently undone.
virtual void updateSelectionStatus (QSet< REntity::Id > &affectedEntities, bool updateViews)
 Updates the selection status of the given entities.
virtual ~RGraphicsSceneQt ()
- Public Member Functions inherited from RGraphicsScene
virtual void beginPreview ()
virtual void endPreview ()
virtual void exportCurrentEntity (bool preview=false, bool forceSelected=false)
 The default implementation calls the REntity::exportEntity() function of the entity.
virtual bool exportDocumentSettings ()
 Override for performance reasons, we don't need settings to be exported for graphics scenes.
RDocumentInterfacegetDocumentInterface ()
QList< RGraphicsView * > getGraphicsViews () const
RVector getHighlightedReferencePoint ()
QMultiMap< REntity::Id, RVector > & getReferencePoints ()
void handleKeyPressEvent (QKeyEvent &event)
void handleKeyReleaseEvent (QKeyEvent &event)
void handleMouseDoubleClickEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface.
void handleMouseMoveEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface.
void handleMousePressEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface.
void handleMouseReleaseEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface.
void handlePanGestureEvent (QPanGesture &gesture)
 Forwards the given gesture to the document interface.
void handlePinchGestureEvent (QPinchGesture &gesture)
 Forwards the given gesture to the document interface.
void handleSwipeGestureEvent (QSwipeGesture &gesture)
 Forwards the given gesture to the document interface.
void handleTabletEvent (RTabletEvent &event)
 Forwards the given tablet event to the document interface.
void handleTerminateEvent (RTerminateEvent &event)
void handleWheelEvent (RWheelEvent &event)
 Forwards the given mouse event to the document interface.
virtual void highlightReferencePoint (const RVector &position)
 Highlights the reference point at the given position.
virtual bool isPreviewEmpty ()
virtual void regenerate (bool undone=false)
 Regenerates this scene from the entity data by exporting the whole document into it.
virtual void regenerate (QSet< REntity::Id > &affectedEntities, bool updateViews)
 Regenerates part of this scene from the entity data by exporting the given entities into it.
virtual void regenerateViews (bool force=false)
 Regenerates all views attached to this scene.
virtual void registerView (RGraphicsView *view, bool regen=true)
 Registers a view with this scene.
virtual void repaintViews ()
 Repaints all views attached to this scene.
 RGraphicsScene (RDocumentInterface &documentInterface)
 Copyright (c) 2011-2014 by Andrew Mustun.
virtual void setCursor (const QCursor &cursor)
virtual void unregisterView (RGraphicsView *view)
 Removes the given view from this scene.
virtual ~RGraphicsScene ()
- Public Member Functions inherited from RExporter
virtual void endEntity ()
virtual void endExport ()
 Called at the end of a completed export.
virtual void exportBlock (RBlock &)
virtual void exportBlock (RBlock::Id blockId)
virtual void exportBlocks ()
virtual void exportBoundingBoxPaths (const QList< RPainterPath > &paths)
virtual void exportBox (const RBox &box)
 Exports the surfaces of the given box.
virtual void exportCircle (const RCircle &circle)
 Exports a circle with the current attributes.
virtual bool exportDocument ()
 Exports the visual representation of all objects (including entities) of the document.
virtual void exportDocumentSetting (const QString &, const QVariant &)
virtual void exportEntities (bool allBlocks=true, bool undone=false)
virtual void exportEntities (const RBox &box)
 Exports the visual representation of all entities that are completely or partly inside the given area.
virtual void exportEntities (QSet< REntity::Id > &entityIds, bool allBlocks=true)
 Calls exportEntity() for all given entities.
virtual void exportEntity (REntity &e, bool preview=false, bool allBlocks=true, bool forceSelected=false)
 Sets the current entity to the given entity and calls exportEntity().
virtual void exportEntity (REntity::Id entityId, bool allBlocks=true, bool forceSelected=false)
 Calls exportEntity(REntity*) for the entity with the given ID.
virtual void exportExplodable (const RExplodable &explodable, double offset=RNANDOUBLE)
virtual void exportLayer (RLayer &)
virtual void exportLayer (RLayer::Id layerId)
virtual void exportLayers ()
virtual void exportLinetype (RLinetype &)
virtual void exportLinetypes ()
virtual void exportQuad (const RVector &p1, const RVector &p2, const RVector &p3, const RVector &p4)
 Exports a quadrilateral with the current attributes.
virtual void exportShape (QSharedPointer< RShape > shape)
 Exports the given shapes as part of the geometry of the current entity.
virtual void exportShapes (const QList< QSharedPointer< RShape > > &shapes)
 Exports the given shapes as part of the geometry of the current entity.
virtual void exportVerticalQuad (const RVector &p1, const RVector &p2, double height)
 Exports a vertical quadrilateral with the two given base points and the given height.
virtual void exportView (RView &)
virtual void exportView (RView::Id viewId)
virtual void exportViews ()
virtual REntitygetBlockRefOrEntity ()
virtual QBrush getBrush (const RPainterPath &path)
virtual QBrush getBrush ()
RDocumentgetDocument () const
 
bool getDraftMode () const
virtual REntitygetEntity ()
 Sets the current export color for entities.
virtual const REntitygetEntity () const
QStack< REntity * > getEntityStack ()
QString getErrorMessage () const
RLinetypePattern getLinetypePattern ()
double getPatternOffset (double length, const RLinetypePattern &pattern)
double getPatternOffset (double length, const RLinetypePattern &pattern, int index, double *gap=NULL)
virtual QPen getPen (const RPainterPath &path)
virtual QPen getPen ()
double getPixelSizeHint () const
RS::ProjectionRenderingHint getProjectionRenderingHint ()
bool getScreenBasedLinetypes () const
bool getTwoColorSelectedMode () const
virtual bool isEntitySelected ()
bool isVisualExporter () const
 RExporter ()
 RExporter (RDocument &document, RMessageHandler *messageHandler=NULL, RProgressHandler *progressHandler=NULL)
void setBlockSource (RDocument *bs)
virtual void setBrush (const QBrush &brush)
virtual void setBrushStyle (Qt::BrushStyle brushStyle)
virtual void setColor (float r, float g, float b, float a=1.0f)
 Sets the current export color in RGB and Alpha.
virtual void setColor (const RColor &color)
virtual void setDashPattern (const QVector< qreal > &dashes)
void setDraftMode (bool on)
virtual void setEntityAttributes (bool forceSelected=false)
void setLayerSource (RDocument *ls)
virtual void setLinetypeId (RLinetype::Id ltId)
virtual void setLinetypePattern (const RLinetypePattern &ltPattern)
virtual void setLineweight (RLineweight::Lineweight weight)
virtual void setPen (const QPen &pen)
 Sets the current pen (currentPen).
void setPixelSizeHint (double v)
void setProjectionRenderingHint (RS::ProjectionRenderingHint p)
 Sets a rendering hint for the current projection used for exports.
void setScreenBasedLinetypes (bool on)
virtual void setStyle (Qt::PenStyle penStyle)
void setTwoColorSelectedMode (bool on)
void setVisualExporter (bool on)
virtual void startExport ()
 Called to start a new, complete export.
void toggleDraftMode ()
void toggleScreenBasedLinetypes ()
virtual ~RExporter ()

Private Attributes

RPainterPath currentPainterPath
QMap< REntity::Id, RImageDataimages
QMap< REntity::Id, QList
< RPainterPath > > 
painterPaths
QList< RPainterPathpreviewPainterPaths

Friends

QDebug operator<< (QDebug dbg, RGraphicsSceneQt &gs)
 Stream operator for QDebug.

Additional Inherited Members

- Protected Member Functions inherited from RGraphicsScene
virtual void exportReferencePoints ()
 Adds the reference points of the entity that is currently being exported to the internal referencePoints map.
- Protected Attributes inherited from RGraphicsScene
RDocumentInterfacedocumentInterface
bool exportToPreview
RVector highlightedReferencePoint
bool previewIsEmpty
QMultiMap< REntity::Id, RVectorreferencePoints
 Internal map of reference points for every selected entity in the scene.
QList< RGraphicsView * > views
- Protected Attributes inherited from RExporter
QStack< REntity * > blockRefStack
RDocumentblockSource
QBrush currentBrush
RLayercurrentLayer
RLinetypePattern currentLinetypePattern
QPen currentPen
RDocumentdocument
bool draftMode
QStack< REntity * > entityStack
QString errorMessage
RDocumentlayerSource
double pixelSizeHint
bool screenBasedLinetypes
bool twoColorSelectedMode
bool visualExporter

Detailed Description

Qt based 2d graphics scene.

This graphics scene is an exporter that exports entities into QPainterPaths (2d).

graphics views.

Scriptable:
This class is wrapped for script environments.

Constructor & Destructor Documentation

RGraphicsSceneQt::RGraphicsSceneQt ( RDocumentInterface documentInterface)

Copyright (c) 2011-2014 by Andrew Mustun.

All rights reserved.

This file is part of the QCAD project.

QCAD is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

QCAD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with QCAD.

RGraphicsSceneQt::~RGraphicsSceneQt ( )
virtual

Member Function Documentation

void RGraphicsSceneQt::addPath ( REntity::Id  entityId,
const RPainterPath path,
bool  draft 
)
void RGraphicsSceneQt::addToPreview ( const QList< RPainterPath > &  painterPaths)
void RGraphicsSceneQt::addToPreview ( const RPainterPath painterPath)
bool RGraphicsSceneQt::beginPath ( )

Starts a new painter path to export geometry into.

Returns:
True if a path has been created, false if there is already a valid path.
void RGraphicsSceneQt::clear ( )
virtual

Clears (resets) the scene contents.

Reimplemented from RGraphicsScene.

void RGraphicsSceneQt::clearPreview ( )
virtual

Clears the preview.

Reimplemented from RGraphicsScene.

void RGraphicsSceneQt::deletePainterPaths ( )
virtual void RGraphicsSceneQt::dump ( )
inlinevirtual

Reimplemented from RGraphicsScene.

void RGraphicsSceneQt::endPath ( )
void RGraphicsSceneQt::exportArc ( const RArc arc,
double  offset = RNANDOUBLE 
)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::exportArcSegment ( const RArc arc,
bool  allowForZeroLength = false 
)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::exportEllipse ( const REllipse ellipse,
double  offset = RNANDOUBLE 
)
virtual

Exports an ellipse with the current attributes.

Todo:
switch from line based interpolation to arcs.

Reimplemented from RExporter.

void RGraphicsSceneQt::exportImage ( const RImageData image)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::exportLine ( const RLine line,
double  offset = RNANDOUBLE 
)
virtual

Exports a line with the current attributes.

Reimplemented from RExporter.

void RGraphicsSceneQt::exportLineSegment ( const RLine line,
double  angle = RNANDOUBLE 
)
virtual

Exports a line segment (a line without pattern).

This is called from the standard implementation of exportLine for every dash in a dashed line.

Implements RExporter.

void RGraphicsSceneQt::exportPainterPaths ( const QList< RPainterPath > &  paths)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::exportPainterPathSource ( const RPainterPathSource pathSource)
virtual
   \par Non-Scriptable:

This function is not available in script environments.

Reimplemented from RExporter.

void RGraphicsSceneQt::exportPoint ( const RPoint point)
virtual

Exports a point with the current attributes.

Implements RExporter.

void RGraphicsSceneQt::exportPolyline ( const RPolyline polyline,
double  offset = RNANDOUBLE 
)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::exportPolylineFill ( const RPolyline polyline)
void RGraphicsSceneQt::exportRay ( const RRay ray)
virtual

Exports an infinite ray.

Used for rays.

Implements RExporter.

void RGraphicsSceneQt::exportRectangle ( const RVector p1,
const RVector p2 
)
virtual

Exports a rectangle with the current attributes.

This is a convenience function that exports two triangles but may also be re-implemented to do something else.

Reimplemented from RExporter.

void RGraphicsSceneQt::exportSpline ( const RSpline spline,
double  offset = RNANDOUBLE 
)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::exportTriangle ( const RTriangle triangle)
virtual

Exports a triangle with the current attributes.

Implements RExporter.

void RGraphicsSceneQt::exportXLine ( const RXLine xLine)
virtual

Exports an infinite line.

Used for xlines (construction lines).

Implements RExporter.

RGraphicsViewImage * RGraphicsSceneQt::getGraphicsView ( ) const
RImageData RGraphicsSceneQt::getImage ( REntity::Id  entityId)
double RGraphicsSceneQt::getLineTypePatternScale ( const RLinetypePattern p) const
virtual
Returns:
Pattern scale factor with scale applied if we are printing.

Reimplemented from RExporter.

QList< RPainterPath > RGraphicsSceneQt::getPainterPaths ( REntity::Id  entityId)
Returns:
A list of all painter paths that represent the entity with the given ID.
QList< RPainterPath > RGraphicsSceneQt::getPreviewPainterPaths ( )
bool RGraphicsSceneQt::hasImageFor ( REntity::Id  entityId)
void RGraphicsSceneQt::highlightEntity ( REntity entity)
virtual

Highlights the given entity.

This is typically used to highlight entities when the mouse hovers over them.

Implements RGraphicsScene.

void RGraphicsSceneQt::startEntity ( bool  topLevelEntity)
virtual

Reimplemented from RExporter.

void RGraphicsSceneQt::unexportEntity ( REntity::Id  entityId)
virtual

This is called for entities for which an export was requested but which cannot be instantiated because they either do not exist (anymore) in the DB or they are currently undone.

Reimplemented from RGraphicsScene.

void RGraphicsSceneQt::updateSelectionStatus ( QSet< REntity::Id > &  affectedEntities,
bool  updateViews 
)
virtual

Updates the selection status of the given entities.

The default implementation exports the entities again. May be overridden for performance reasons.

Reimplemented from RGraphicsScene.


Friends And Related Function Documentation

QDebug operator<< ( QDebug  dbg,
RGraphicsSceneQt gs 
)
friend

Stream operator for QDebug.

   \par Non-Scriptable:

This function is not available in script environments.


Member Data Documentation

RPainterPath RGraphicsSceneQt::currentPainterPath
private
QMap<REntity::Id, RImageData> RGraphicsSceneQt::images
private
QMap<REntity::Id, QList<RPainterPath> > RGraphicsSceneQt::painterPaths
private
QList<RPainterPath> RGraphicsSceneQt::previewPainterPaths
private

The documentation for this class was generated from the following files: