QCAD
Open Source 2D CAD
RGraphicsScene Class Referenceabstract

Abstract base class for all graphics scenes. More...

#include <RGraphicsScene.h>

Inheritance diagram for RGraphicsScene:
RExporter RGraphicsSceneQt

Public Member Functions

virtual void addToPreview (REntity::Id entityId, QList< RGraphicsSceneDrawable > &drawables)
 
virtual void addToPreview (REntity::Id entityId, RGraphicsSceneDrawable &drawable)
 
void beginNoColorMode ()
 
virtual void beginPreview ()
 
virtual void clear ()
 Clears (resets) the scene contents. More...
 
virtual void clearPreview ()
 Clears the preview. More...
 
int countReferencePoints () const
 
virtual void dump ()
 
void endNoColorMode ()
 
virtual void endPreview ()
 
virtual void exportCurrentEntity (bool preview=false, bool forceSelected=false)
 The default implementation calls the REntity::exportEntity() function of the entity. More...
 
virtual bool exportDocumentSettings ()
 Override for performance reasons, we don't need settings to be exported for graphics scenes. More...
 
RDocumentInterfacegetDocumentInterface ()
 
QList< RGraphicsView * > getGraphicsViews () const
 
RRefPoint getHighlightedReferencePoint ()
 
bool getNoColorMode () const
 
QMap< REntity::Id, QList< RRefPoint > > & getReferencePoints ()
 
void handleKeyPressEvent (QKeyEvent &event)
 
void handleKeyReleaseEvent (QKeyEvent &event)
 
void handleMouseDoubleClickEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface. More...
 
void handleMouseMoveEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface. More...
 
void handleMousePressEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface. More...
 
void handleMouseReleaseEvent (RMouseEvent &event)
 Forwards the given mouse event to the document interface. More...
 
void handlePanGestureEvent (QPanGesture &gesture)
 Forwards the given gesture to the document interface. More...
 
void handlePinchGestureEvent (QPinchGesture &gesture)
 Forwards the given gesture to the document interface. More...
 
void handleSwipeGestureEvent (QSwipeGesture &gesture)
 Forwards the given gesture to the document interface. More...
 
void handleTabletEvent (RTabletEvent &event)
 Forwards the given tablet event to the document interface. More...
 
void handleTerminateEvent (RTerminateEvent &event)
 
void handleWheelEvent (RWheelEvent &event)
 Forwards the given mouse event to the document interface. More...
 
bool hasSelectedReferencePoints () const
 
virtual void highlightEntity (REntity &entity)=0
 Highlights the given entity. More...
 
virtual void highlightReferencePoint (const RRefPoint &position)
 Highlights the reference point at the given position. More...
 
virtual bool isPreviewEmpty ()
 
virtual void regenerate (bool undone=false)
 Regenerates this scene from the entity data by exporting the whole document into it. More...
 
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. More...
 
virtual void regenerateViews (bool force=false)
 Regenerates all views attached to this scene. More...
 
virtual void regenerateViews (QSet< RObject::Id > &affectedEntities)
 
virtual void registerView (RGraphicsView *view, bool regen=true)
 Registers a view with this scene. More...
 
virtual void repaintViews ()
 Repaints all views attached to this scene. More...
 
 RGraphicsScene (RDocumentInterface &documentInterface)
 Copyright (c) 2011-2018 by Andrew Mustun. More...
 
virtual void selectReferencePoints (const RBox &box, bool add)
 
virtual void setCursor (const QCursor &cursor)
 
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. More...
 
virtual void unregisterView (RGraphicsView *view)
 Removes the given view from this scene. More...
 
virtual void updateSelectionStatus (QSet< REntity::Id > &affectedEntities, bool updateViews)
 Updates the selection status of the given entities. More...
 
virtual ~RGraphicsScene ()
 
- Public Member Functions inherited from RExporter
virtual void endEntity ()
 
virtual void endExport ()
 Called at the end of a completed export. More...
 
virtual void exportArc (const RArc &arc, double offset=RNANDOUBLE)
 
virtual void exportArcSegment (const RArc &arc, bool allowForZeroLength=false)
 
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. More...
 
virtual void exportCircle (const RCircle &circle)
 Exports a circle with the current attributes. More...
 
virtual void exportClipRectangle (const RBox &clipRectangle, bool forceSelected=false)
 
virtual bool exportDocument ()
 Exports the visual representation of all objects (including entities) of the document. More...
 
virtual void exportDocumentSetting (const QString &key, const QVariant &value, const QString &dictionaryName="QCAD_OBJECTS")
 
virtual void exportEllipse (const REllipse &ellipse, double offset=RNANDOUBLE)
 Exports an ellipse with the current attributes. More...
 
virtual void exportEndTransform ()
 
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. More...
 
virtual void exportEntities (QSet< REntity::Id > &entityIds, bool allBlocks=true)
 Calls exportEntity() for all given entities. More...
 
virtual void exportEntity (REntity &entity, bool preview=false, bool allBlocks=true, bool forceSelected=false)
 Exports the given entity as part of a block definition to be reused by block references. More...
 
virtual void exportEntity (REntity::Id entityId, bool allBlocks=true, bool forceSelected=false)
 Calls exportEntity(REntity*) for the entity with the given ID. More...
 
virtual void exportExplodable (const RExplodable &explodable, double offset=RNANDOUBLE)
 
virtual void exportImage (const RImageData &image, bool forceSelected=false)
 
virtual void exportIntListWithName (const QString &dictionaryName, const QString &name, const QString &listName, QList< int64_t > &values)
 
virtual void exportLayer (RLayer &)
 
virtual void exportLayer (RLayer::Id layerId)
 
virtual void exportLayers ()
 
virtual void exportLayerState (RLayerState &)
 
virtual void exportLayerStates ()
 
virtual double exportLine (const RLine &line, double offset=RNANDOUBLE)
 Exports a line with the current attributes. More...
 
virtual void exportLineSegment (const RLine &line, double angle=RNANDOUBLE)=0
 Exports a line segment (a line without pattern). More...
 
virtual void exportLinetype (RLinetype &)
 
virtual void exportLinetypes ()
 
virtual bool exportLinetypeShape (QList< RPainterPath > &pps, const RLine &line, double total, double length, double angle, const RVector &cursor)
 
virtual void exportPainterPaths (const QList< RPainterPath > &paths, double angle, const RVector &pos)
 
virtual void exportPainterPaths (const QList< RPainterPath > &paths, double z=0.0)
 
virtual void exportPainterPathSource (const RPainterPathSource &pathSource, double z=0.0)
 
virtual void exportPoint (const RPoint &point)=0
 Exports a point with the current attributes. More...
 
virtual void exportPolyline (const RPolyline &polyline, bool polylineGen=true, double offset=RNANDOUBLE)
 
virtual void exportQuad (const RVector &p1, const RVector &p2, const RVector &p3, const RVector &p4)
 Exports a quadrilateral with the current attributes. More...
 
virtual void exportRay (const RRay &ray)=0
 Exports an infinite ray. More...
 
virtual void exportRectangle (const RVector &p1, const RVector &p2)
 Exports a rectangle with the current attributes. More...
 
virtual void exportShape (QSharedPointer< RShape > shape)
 Exports the given shapes as part of the geometry of the current entity. More...
 
virtual void exportShapes (const QList< QSharedPointer< RShape > > &shapes)
 Exports the given shapes as part of the geometry of the current entity. More...
 
virtual void exportShapeSegment (QSharedPointer< RShape > shape, double angle)
 
virtual void exportSpline (const RSpline &spline, double offset=RNANDOUBLE)
 
virtual void exportSplineSegment (const RSpline &spline)
 
virtual QList< RPainterPathexportText (const RTextBasedData &text, bool forceSelected=false)
 
virtual void exportThickPolyline (const RPolyline &polyline)
 
virtual void exportTransform (const RTransform &t)
 
virtual void exportTriangle (const RTriangle &triangle)=0
 Exports a triangle with the current attributes. More...
 
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. More...
 
virtual void exportView (RView &)
 
virtual void exportView (RView::Id viewId)
 
virtual void exportViews ()
 
virtual void exportXLine (const RXLine &xLine)=0
 Exports an infinite line. More...
 
virtual REntitygetBlockRefOrEntity ()
 
virtual REntity::Id getBlockRefOrEntityId ()
 
virtual QStack< REntity * > getBlockRefViewportStack () const
 
virtual QBrush getBrush ()
 
virtual QBrush getBrush (const RPainterPath &path)
 
bool getClipping () const
 
virtual RColor getColor (bool resolve)
 
virtual RColor getColor (const RColor &unresolvedColor)
 
virtual REntitygetCurrentBlockRef () const
 
virtual double getCurrentPixelSizeHint () const
 
virtual RViewportEntitygetCurrentViewport () const
 
RDocumentgetDocument () const
 \nonscriptoverwritable More...
 
bool getDraftMode () const
 
virtual REntitygetEntity ()
 
virtual const REntitygetEntity () const
 
virtual QSharedPointer< RLayergetEntityLayer (REntity &entity)
 
QStack< REntity * > getEntityStack ()
 
QString getErrorMessage () const
 
virtual RLinetypePattern getLinetypePattern ()
 
virtual double getLineTypePatternScale (const RLinetypePattern &p) const
 
virtual QPen getPen ()
 
virtual QPen getPen (const RPainterPath &path)
 
double getPixelSizeHint () const
 
bool getPixelUnit () const
 
bool getPixelWidth () const
 
RS::ProjectionRenderingHint getProjectionRenderingHint ()
 
virtual bool getScreenBasedLinetypes () const
 
bool getTwoColorSelectedMode () const
 
virtual bool isEntitySelected ()
 
virtual bool isPatternContinuous (const RLinetypePattern &p)
 
virtual bool isTextRenderedAsText ()
 Override to force text rendering mode. More...
 
virtual bool isVisible (REntity &entity)
 
bool isVisualExporter () const
 
void popEntity ()
 
void pushEntity (REntity *e)
 
 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)
 
void setClipping (bool on)
 
virtual void setColor (const RColor &color)
 
virtual void setColor (float r, float g, float b, float a=1.0f)
 Sets the current export color in RGB and Alpha. More...
 
virtual void setDashPattern (const QVector< qreal > &dashes)
 
void setDraftMode (bool on)
 
void setEnablePatterns (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). More...
 
void setPixelSizeHint (double v)
 
void setPixelUnit (bool on)
 
void setPixelWidth (bool on)
 
void setProjectionRenderingHint (RS::ProjectionRenderingHint p)
 Sets a rendering hint for the current projection used for exports. More...
 
void setScreenBasedLinetypes (bool on)
 
virtual void setStyle (Qt::PenStyle penStyle)
 
void setTwoColorSelectedMode (bool on)
 
void setVisualExporter (bool on)
 
virtual void startEntity (bool)
 
virtual void startExport ()
 Called to start a new, complete export. More...
 
void toggleDraftMode ()
 
void toggleScreenBasedLinetypes ()
 
virtual ~RExporter ()
 

Protected Member Functions

virtual void exportReferencePoints ()
 Adds the reference points of the entity that is currently being exported to the internal referencePoints map. More...
 

Protected Attributes

bool colorMode
 
RDocumentInterfacedocumentInterface
 
bool exportToPreview
 
RRefPoint highlightedReferencePoint
 
bool previewIsEmpty
 
QMap< REntity::Id, QList< RRefPoint > > referencePoints
 Internal map of reference points for every selected entity in the scene. More...
 
QList< RGraphicsView * > views
 
- Protected Attributes inherited from RExporter
QStack< REntity * > blockRefViewportStack
 
RDocumentblockSource
 
bool clipping
 
QBrush currentBrush
 
RLayercurrentLayer
 
RLinetypePattern currentLinetypePattern
 
QPen currentPen
 
RDocumentdocument
 
bool draftMode
 
bool enablePatterns
 
QStack< REntity * > entityStack
 
QString errorMessage
 
RDocumentlayerSource
 
Qt::PenCapStyle penCapStyle
 
double pixelSizeHint
 
bool pixelUnit
 
bool pixelWidth
 
bool screenBasedLinetypes
 
QTransform transform
 
bool twoColorSelectedMode
 
bool visualExporter
 

Private Attributes

bool deleting
 

Friends

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

Detailed Description

Abstract base class for all graphics scenes.

A graphics scene is an exporter that exports entities into something that can be shown in a view (painter paths, triangles, OpenGL lists, ...).

Graphics scenes store a map of reference points of all entities that are currently selected. This information is stored at the scene level and not at the document interface level because a scene that shows for example a wall from the side may show different reference points than a scene that shows the same wall from the top.

graphics views.

Scriptable:\nThis class is available in script environments.\n

Constructor & Destructor Documentation

◆ RGraphicsScene()

RGraphicsScene::RGraphicsScene ( RDocumentInterface documentInterface)

Copyright (c) 2011-2018 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.

◆ ~RGraphicsScene()

RGraphicsScene::~RGraphicsScene ( )
virtual

Member Function Documentation

◆ addToPreview() [1/2]

virtual void RGraphicsScene::addToPreview ( REntity::Id  entityId,
QList< RGraphicsSceneDrawable > &  drawables 
)
inlinevirtual

Reimplemented in RGraphicsSceneQt.

◆ addToPreview() [2/2]

virtual void RGraphicsScene::addToPreview ( REntity::Id  entityId,
RGraphicsSceneDrawable drawable 
)
inlinevirtual

Reimplemented in RGraphicsSceneQt.

◆ beginNoColorMode()

void RGraphicsScene::beginNoColorMode ( )
inline

◆ beginPreview()

void RGraphicsScene::beginPreview ( )
virtual

◆ clear()

void RGraphicsScene::clear ( )
virtual

Clears (resets) the scene contents.

Reimplemented in RGraphicsSceneQt.

◆ clearPreview()

void RGraphicsScene::clearPreview ( )
virtual

Clears the preview.

Reimplemented in RGraphicsSceneQt.

◆ countReferencePoints()

int RGraphicsScene::countReferencePoints ( ) const

◆ dump()

virtual void RGraphicsScene::dump ( )
inlinevirtual

Reimplemented in RGraphicsSceneQt.

◆ endNoColorMode()

void RGraphicsScene::endNoColorMode ( )
inline

◆ endPreview()

void RGraphicsScene::endPreview ( )
virtual

◆ exportCurrentEntity()

void RGraphicsScene::exportCurrentEntity ( bool  preview = false,
bool  forceSelected = false 
)
virtual

The default implementation calls the REntity::exportEntity() function of the entity.

This method may use the currentEntity stack to access the entity that is currently being exported. Exporters can choose to reimplement this function to export an entity in a target platform specific manner (e.g. to optimize things for a specific platform).

Reimplemented from RExporter.

◆ exportDocumentSettings()

virtual bool RGraphicsScene::exportDocumentSettings ( )
inlinevirtual

Override for performance reasons, we don't need settings to be exported for graphics scenes.

Reimplemented from RExporter.

◆ exportReferencePoints()

void RGraphicsScene::exportReferencePoints ( )
protectedvirtual

Adds the reference points of the entity that is currently being exported to the internal referencePoints map.

◆ getDocumentInterface()

RDocumentInterface & RGraphicsScene::getDocumentInterface ( )
Returns
Document interface this scene is attached to.

◆ getGraphicsViews()

QList< RGraphicsView * > RGraphicsScene::getGraphicsViews ( ) const
Returns
List of all views that are attached to this scene.

◆ getHighlightedReferencePoint()

RRefPoint RGraphicsScene::getHighlightedReferencePoint ( )

◆ getNoColorMode()

bool RGraphicsScene::getNoColorMode ( ) const
inline

◆ getReferencePoints()

QMap<REntity::Id, QList<RRefPoint> >& RGraphicsScene::getReferencePoints ( )
inline
Non-Scriptable:\nThis function is not available in script environments.\n

◆ handleKeyPressEvent()

void RGraphicsScene::handleKeyPressEvent ( QKeyEvent &  event)

◆ handleKeyReleaseEvent()

void RGraphicsScene::handleKeyReleaseEvent ( QKeyEvent &  event)

◆ handleMouseDoubleClickEvent()

void RGraphicsScene::handleMouseDoubleClickEvent ( RMouseEvent event)

Forwards the given mouse event to the document interface.

◆ handleMouseMoveEvent()

void RGraphicsScene::handleMouseMoveEvent ( RMouseEvent event)

Forwards the given mouse event to the document interface.

◆ handleMousePressEvent()

void RGraphicsScene::handleMousePressEvent ( RMouseEvent event)

Forwards the given mouse event to the document interface.

◆ handleMouseReleaseEvent()

void RGraphicsScene::handleMouseReleaseEvent ( RMouseEvent event)

Forwards the given mouse event to the document interface.

◆ handlePanGestureEvent()

void RGraphicsScene::handlePanGestureEvent ( QPanGesture &  gesture)

Forwards the given gesture to the document interface.

◆ handlePinchGestureEvent()

void RGraphicsScene::handlePinchGestureEvent ( QPinchGesture &  gesture)

Forwards the given gesture to the document interface.

◆ handleSwipeGestureEvent()

void RGraphicsScene::handleSwipeGestureEvent ( QSwipeGesture &  gesture)

Forwards the given gesture to the document interface.

◆ handleTabletEvent()

void RGraphicsScene::handleTabletEvent ( RTabletEvent event)

Forwards the given tablet event to the document interface.

◆ handleTerminateEvent()

void RGraphicsScene::handleTerminateEvent ( RTerminateEvent event)

◆ handleWheelEvent()

void RGraphicsScene::handleWheelEvent ( RWheelEvent event)

Forwards the given mouse event to the document interface.

◆ hasSelectedReferencePoints()

bool RGraphicsScene::hasSelectedReferencePoints ( ) const

◆ highlightEntity()

virtual void RGraphicsScene::highlightEntity ( REntity entity)
pure virtual

Highlights the given entity.

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

Implemented in RGraphicsSceneQt.

◆ highlightReferencePoint()

void RGraphicsScene::highlightReferencePoint ( const RRefPoint position)
virtual

Highlights the reference point at the given position.

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

◆ isPreviewEmpty()

bool RGraphicsScene::isPreviewEmpty ( )
virtual

◆ regenerate() [1/2]

void RGraphicsScene::regenerate ( bool  undone = false)
virtual

Regenerates this scene from the entity data by exporting the whole document into it.

This can for example regenerate all painter paths or all triangles of the scene. This is called if the scene changes fundamentally or when the entities that are affected by an update are not known.

◆ regenerate() [2/2]

void RGraphicsScene::regenerate ( QSet< REntity::Id > &  affectedEntities,
bool  updateViews 
)
virtual

Regenerates part of this scene from the entity data by exporting the given entities into it.

This is called if the scene changes only partly and the entities that are affected by the update are known.

◆ regenerateViews() [1/2]

void RGraphicsScene::regenerateViews ( bool  force = false)
virtual

Regenerates all views attached to this scene.

◆ regenerateViews() [2/2]

virtual void RGraphicsScene::regenerateViews ( QSet< RObject::Id > &  affectedEntities)
virtual

◆ registerView()

void RGraphicsScene::registerView ( RGraphicsView view,
bool  regen = true 
)
virtual

Registers a view with this scene.

◆ repaintViews()

void RGraphicsScene::repaintViews ( )
virtual

Repaints all views attached to this scene.

◆ selectReferencePoints()

void RGraphicsScene::selectReferencePoints ( const RBox box,
bool  add 
)
virtual

◆ setCursor()

void RGraphicsScene::setCursor ( const QCursor &  cursor)
virtual

◆ unexportEntity()

void RGraphicsScene::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 RExporter.

Reimplemented in RGraphicsSceneQt.

◆ unregisterView()

void RGraphicsScene::unregisterView ( RGraphicsView view)
virtual

Removes the given view from this scene.

◆ updateSelectionStatus()

void RGraphicsScene::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 in RGraphicsSceneQt.

Friends And Related Function Documentation

◆ operator<<

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

Stream operator for QDebug.

Non-Scriptable:\nThis function is not available in script environments.\n

Member Data Documentation

◆ colorMode

bool RGraphicsScene::colorMode
protected

◆ deleting

bool RGraphicsScene::deleting
private

◆ documentInterface

RDocumentInterface& RGraphicsScene::documentInterface
protected

◆ exportToPreview

bool RGraphicsScene::exportToPreview
protected

◆ highlightedReferencePoint

RRefPoint RGraphicsScene::highlightedReferencePoint
protected

◆ previewIsEmpty

bool RGraphicsScene::previewIsEmpty
protected

◆ referencePoints

QMap<REntity::Id, QList<RRefPoint> > RGraphicsScene::referencePoints
protected

Internal map of reference points for every selected entity in the scene.

Used for drawing reference points.

◆ views

QList<RGraphicsView*> RGraphicsScene::views
protected

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