26#include <QSharedPointer>
50#ifndef RDEFAULT_QSTRING
51#define RDEFAULT_QSTRING QString()
108 virtual QList<RObject::Id> orderBackToFront(
const QSet<RObject::Id>& entityIds)
const;
110 QList<RObject::Id> sortBlocks(
const QList<RObject::Id>& blockIds)
const;
112 QList<RObject::Id> sortLayers(
const QList<RObject::Id>& layerIds)
const;
117 static bool lessThan(
const QPair<RObject::Id, int>& p1,
const QPair<RObject::Id, int>& p2);
133 bool allBlocks, QList<RS::EntityType> types) = 0;
255 return queryObject(objectId);
266 virtual QSharedPointer<REntity> queryEntityDirect(
RObject::Id entityId)
const;
268 virtual QSharedPointer<REntity> queryVisibleEntityDirect(
RObject::Id entityId)
const;
277 return queryUcs(ucsId);
284 virtual QSharedPointer<RUcs>
queryUcs(
const QString& ucsName)
const = 0;
293 return queryLayer(layerId);
296 return queryLayerDirect(getLayerId(layerName));
303 virtual QSharedPointer<RLayer>
queryLayer(
const QString& layerName)
const = 0;
306 return queryLayer(getCurrentLayerId());
316 return queryLayerState(layerStateId);
319 return queryLayerStateDirect(getLayerStateId(layerStateName));
326 virtual QSharedPointer<RLayerState>
queryLayerState(
const QString& layerStateName)
const = 0;
336 return queryLayout(layoutId);
343 virtual QSharedPointer<RLayout>
queryLayout(
const QString& layoutName)
const = 0;
346 return queryView(getCurrentViewId());
351 virtual QSharedPointer<RLinetype>
queryLinetype(
const QString& linetypeName)
const = 0;
355 return queryBlockDirect(getBlockId(blockName));
358 virtual QSharedPointer<RBlock>
queryBlock(
const QString& blockName)
const = 0;
361 virtual QSharedPointer<RView>
queryView(
const QString& viewName)
const = 0;
368 return currentViewId;
372 virtual RColor getCurrentColor()
const;
378 void setCurrentLinetype(
const QString& name);
383 return queryLinetype(getCurrentLinetypeId());
386 virtual QSharedPointer<RBlock> queryCurrentBlock();
399 return currentBlockId;
403 currentViewportId = viewportId;
411 return currentViewportId;
415 modelSpaceBlockId = id;
418 return modelSpaceBlockId;
422 currentViewId = viewId;
431 QSharedPointer<RDocumentVariables> startDocumentVariablesTransaction(
RTransaction*& transaction,
bool& useLocalTransaction);
432 void endDocumentVariablesTransaction(
RTransaction* transaction,
bool useLocalTransaction, QSharedPointer<RDocumentVariables> docVars);
440 virtual void setDimensionFont(
const QString& f,
RTransaction* transaction=
NULL);
441 virtual QString getDimensionFont()
const;
444 virtual double getLinetypeScale()
const;
453 virtual bool hasBlock(
const QString& blockName)
const;
458 virtual bool hasView(
const QString& viewName)
const;
469 virtual bool hasLayer(
const QString& layerName)
const;
474 virtual bool hasLayerStates()
const;
475 virtual bool hasLayerState(
const QString& layerStateName)
const;
480 virtual bool hasLayout(
const QString& layoutName)
const;
506 virtual bool hasLinetype(
const QString& linetypeName)
const;
519 virtual void setVariable(
const QString& key,
const QVariant& value,
bool overwrite=
true) = 0;
534 QVariant value = getVariable(key);
535 return value.isValid();
556 return querySelectedEntities().size();
563 QSet<RObject::Id>* affectedEntities=
NULL
583 QSet<RObject::Id>* affectedEntities=
NULL
596 const QSet<RObject::Id>& entityIds,
598 QSet<RObject::Id>* affectedEntities=
NULL
610 QSet<RObject::Id>* affectedEntities=
NULL
621 const QSet<RObject::Id>& entityIds,
622 QSet<RObject::Id>* affectedEntities=
NULL
627 virtual bool isSelectedWorkingSet(
RObject::Id entityId);
631 virtual bool isLayerLocked(
RObject::Id layerId)
const;
632 virtual bool isLayerLocked(
const RLayer& layer)
const;
633 virtual bool isParentLayerLocked(
RObject::Id layerId)
const;
634 virtual bool isParentLayerLocked(
const RLayer& layer)
const;
636 virtual bool isLayerOff(
RObject::Id layerId)
const;
637 virtual bool isLayerOff(
const RLayer& layer)
const;
639 virtual bool isLayerOffOrFrozen(
RObject::Id layerId)
const;
640 virtual bool isLayerOffOrFrozen(
const RLayer& layer)
const;
642 virtual bool isLayerFrozen(
RObject::Id layerId)
const;
643 virtual bool isLayerFrozen(
const RLayer& layer)
const;
644 virtual bool isParentLayerFrozen(
RObject::Id layerId)
const;
645 virtual bool isParentLayerFrozen(
const RLayer& layer)
const;
647 virtual bool isLayerSnappable(
RObject::Id layerId)
const;
648 virtual bool isLayerSnappable(
const RLayer& layer)
const;
649 virtual bool isParentLayerSnappable(
RObject::Id layerId)
const;
650 virtual bool isParentLayerSnappable(
const RLayer& layer)
const;
652 virtual bool isLayerPlottable(
RObject::Id layerId)
const;
653 virtual bool isLayerPlottable(
const RLayer& layer)
const;
654 virtual bool isParentLayerPlottable(
RObject::Id layerId)
const;
655 virtual bool isParentLayerPlottable(
const RLayer& layer)
const;
662 virtual bool isBlockFrozen(
RObject::Id blockId)
const;
667 virtual bool isLayoutBlock(
RObject::Id blockId)
const;
674 virtual void setUndoStatus(
RObject&
object,
bool status);
694 virtual bool saveObject(QSharedPointer<RObject>
object,
bool checkBlockRecursion =
true,
bool keepHandles =
false,
bool* overwrite =
NULL) = 0;
706 return lastTransactionId;
716 lastTransactionId = transactionId;
722 lastTransactionGroup++;
726 return lastTransactionGroup;
787 virtual int getMinDrawOrder();
807 void setModified(
bool m);
824 return lastModified.toString(
"yyyyMMddHHmmsszzz");
835 notifyGlobalListeners = on;
838 return notifyGlobalListeners;
QDebug operator<<(QDebug dbg, const RBox &b)
Stream operator for QDebug.
Definition RBox.cpp:640
#define RDEFAULT_QSTRING
Definition RDebug.h:41
Q_DECLARE_METATYPE(RMath *)
Represents a block definition in a drawing.
Definition RBlock.h:42
Represents a box e.g.
Definition RBox.h:46
Color.
Definition RColor.h:43
Dimension style class.
Definition RDimStyle.h:42
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
This type of object is used to store document wide variables.
Definition RDocumentVariables.h:38
Base class for all entity classes.
Definition REntity.h:63
Represents a layer in a drawing.
Definition RLayer.h:45
Represents a layer state (state of list of layers) in a drawing.
Definition RLayerState.h:37
Represents a layout definition in a drawing.
Definition RLayout.h:42
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RLinetypePattern.h:42
Lineweight
Definition RLineweight.h:44
Abstract base class for classes that are interested in the current state of a storage (modified or un...
Definition RModifiedListener.h:34
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RNonCopyable.h:32
Abstract base class for all objects.
Definition RObject.h:64
static const Id INVALID_ID
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RObject.h:70
int Handle
Definition RObject.h:71
int Id
Definition RObject.h:69
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RRequireHeap.h:30
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityAll
All entities (for filters)
Definition RS.h:241
Measurement
Enum of supported measurement systems.
Definition RS.h:416
KnownVariable
Well established document variables.
Definition RS.h:501
Unit
Enum of supported units (values correspond to DXF spec).
Definition RS.h:425
This is the abstract base class for all storage implementations.
Definition RStorage.h:67
virtual QSet< RObject::Id > queryLayerBlockEntities(RObject::Id layerId, RObject::Id blockId)=0
virtual void clearEntitySelection(QSet< RObject::Id > *affectedEntities=NULL)=0
Clears the selection status of all entities.
virtual RObject::Id getCurrentViewId() const
Definition RStorage.h:367
virtual void setModelSpaceBlockId(RObject::Id id)
Definition RStorage.h:414
virtual QSharedPointer< RLayer > queryLayer(RObject::Id layerId) const =0
virtual QSharedPointer< RLayer > queryLayerDirect(RObject::Id layerId) const
Definition RStorage.h:292
virtual QSharedPointer< RUcs > queryUcsDirect(RObject::Id ucsId) const
Definition RStorage.h:276
virtual void selectAllEntities(QSet< RObject::Id > *affectedEntities=NULL)=0
Sets the selection status of all entities.
virtual QSet< QString > getLinetypeNames() const =0
virtual RBox getBoundingBox(bool ignoreHiddenLayers=true, bool ignoreEmpty=false) const =0
virtual void update()
Clear caches:
Definition RStorage.h:832
RDocument * getDocument() const
Definition RStorage.h:76
virtual RLineweight::Lineweight getMaxLineweight() const =0
virtual void rollbackTransaction()=0
Rolls the current transaction back in order to cancel it.
virtual bool removeObject(QSharedPointer< RObject > object)=0
virtual QString getBlockNameFromLayout(const QString &layoutName) const =0
virtual QSet< RObject::Id > queryAllLayerStates(bool undone=false) const =0
virtual QSharedPointer< RLinetype > queryLinetypeDirect(RObject::Id linetypeId) const =0
virtual QSet< RObject::Id > queryAllLayoutBlocks(bool includeModelSpace=false, bool undone=false) const =0
virtual int selectEntities(const QSet< RObject::Id > &entityIds, bool add=false, QSet< RObject::Id > *affectedEntities=NULL)=0
Selects all entities with the given IDs.
virtual QSet< RObject::Id > querySelectedLayers() const =0
virtual QString getBlockName(RObject::Id blockId) const =0
virtual RObject::Id getViewId(const QString &viewName) const =0
virtual bool setUndoStatus(RObject::Id object, bool status)=0
virtual QSharedPointer< RLayout > queryLayout(const QString &layoutName) const =0
virtual QSet< RObject::Id > queryAllLinetypes()=0
virtual QString getLayoutName(RObject::Id layoutId) const =0
virtual QSharedPointer< RView > queryView(const QString &viewName) const =0
virtual QSharedPointer< RDocumentVariables > queryDocumentVariables() const =0
virtual void setLastTransactionId(int transactionId)
Sets the ID of the last created transaction.
Definition RStorage.h:715
virtual RBox getEntitiesBox(QSet< RObject::Id > &ids) const =0
int lastTransactionGroup
Definition RStorage.h:868
virtual QSharedPointer< RBlock > queryBlockDirect(const QString &blockName) const
Definition RStorage.h:354
virtual void removeVariable(const QString &key)=0
Removes the custom variable with the given key.
virtual QSet< QString > getLayerNames(const QString &rxStr=RDEFAULT_QSTRING) const =0
virtual int deselectEntities(const QSet< RObject::Id > &entityIds, QSet< RObject::Id > *affectedEntities=NULL)=0
Deselects all entities with the given IDs.
virtual QString getViewName(RObject::Id viewId) const =0
virtual QSharedPointer< RLayerState > queryLayerStateDirect(const QString &layerStateName) const
Definition RStorage.h:318
virtual QSet< QString > getLayoutNames(const QString &rxStr=RDEFAULT_QSTRING) const =0
virtual RObject::Id getLayer0Id() const
Definition RStorage.h:466
virtual QSharedPointer< RLinetype > queryCurrentLinetype() const
Definition RStorage.h:382
virtual QSharedPointer< RObject > queryObjectByHandle(RObject::Handle objectHandle) const =0
int lastTransactionId
Definition RStorage.h:867
virtual QString getLinetypeName(RObject::Id linetypeId) const =0
virtual RObject::Id getCurrentBlockId() const
Definition RStorage.h:398
virtual void toggleUndoStatus(RObject::Id object)=0
Toggles the current undo status of the given object.
virtual QSet< RObject::Id > queryAllViewports() const =0
void setCurrentBlock(const QString &blockName)
Definition RStorage.h:390
virtual QSharedPointer< RLinetype > queryLinetype(RObject::Id linetypeId) const =0
QDateTime lastModified
Definition RStorage.h:848
void setCurrentView(const QString &viewName)
Definition RStorage.h:425
bool modified
Definition RStorage.h:849
bool notifyGlobalListeners
Definition RStorage.h:871
bool getNotifyListeners() const
Definition RStorage.h:837
virtual int getMaxTransactionId()=0
virtual QSet< RObject::Id > queryBlockReferences(RObject::Id blockId) const =0
virtual QSharedPointer< RView > queryCurrentView()
Definition RStorage.h:345
virtual QSet< RObject::Id > queryAllViews(bool undone=false)=0
virtual RObject::Id getModelSpaceBlockId() const
Definition RStorage.h:417
virtual QSharedPointer< RBlock > queryBlock(RObject::Id blockId) const =0
bool isModified() const
Definition RStorage.h:812
virtual QSharedPointer< RLayerState > queryLayerState(RObject::Id layerStateId) const =0
virtual void setKnownVariable(RS::KnownVariable key, const QVariant &value, RTransaction *transaction=NULL)=0
Sets a known DXF/DWG variable for this document.
virtual QSet< RObject::Id > queryAllLayers(bool undone=false)=0
virtual void setCurrentViewport(RObject::Id viewportId)
Definition RStorage.h:402
virtual QSharedPointer< RLayer > queryLayerDirect(const QString &layerName) const
Definition RStorage.h:295
virtual QSharedPointer< RDimStyle > queryDimStyle() const =0
virtual QSharedPointer< RUcs > queryUcs(const QString &ucsName) const =0
virtual void setLayer0Id(RObject::Id id)
Definition RStorage.h:463
virtual RObject::Id getCurrentViewportId() const
Definition RStorage.h:410
virtual QSharedPointer< RUcs > queryUcs(RObject::Id ucsId) const =0
virtual QSharedPointer< RBlock > queryBlock(const QString &blockName) const =0
virtual QList< RLinetypePattern > getLinetypePatterns() const =0
void setCurrentView(RObject::Id viewId)
Definition RStorage.h:421
virtual QSet< RObject::Id > queryAllEntities(bool undone=false, bool allBlocks=false, RS::EntityType type=RS::EntityAll)=0
virtual RObject::Id getLinetypeId(const QString &linetypeName) const =0
QString getLastModified() const
Definition RStorage.h:823
virtual bool hasVariable(const QString &key) const
Definition RStorage.h:533
virtual void beginTransaction()=0
Starts a new transaction.
RObject::Handle handleCounter
Definition RStorage.h:850
virtual QSet< RObject::Id > queryBlockEntities(RObject::Id blockId)=0
virtual QSharedPointer< RLayerState > queryLayerStateDirect(RObject::Id layerStateId) const
Definition RStorage.h:315
virtual QStringList getVariables() const =0
virtual QSharedPointer< RBlock > queryBlockDirect(RObject::Id blockId) const =0
virtual RBox getSelectionBox() const =0
virtual void setMaxDrawOrder(int m)
Definition RStorage.h:779
virtual QSet< RObject::Id > queryAllBlockReferences() const =0
virtual ~RStorage()
Definition RStorage.h:70
virtual QSet< QString > getViewNames() const =0
virtual QSet< RObject::Id > queryInfiniteEntities() const =0
virtual QSet< RObject::Id > queryWorkingSetEntities()=0
virtual int countSelectedEntities() const
Definition RStorage.h:555
virtual QVariant getVariable(const QString &key) const =0
void setNotifyListeners(bool on)
Definition RStorage.h:834
void setDocument(RDocument *doc)
Definition RStorage.h:72
virtual QString getLayerStateName(RObject::Id layerStateId) const =0
RObject::Id currentLinetypeId
Definition RStorage.h:860
RObject::Id currentViewportId
Definition RStorage.h:863
static QList< RS::EntityType > customEntityTypes
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RStorage.h:852
RObject::Id currentViewId
Definition RStorage.h:861
virtual bool hasBlockEntities(RObject::Id blockId) const =0
virtual QSharedPointer< RDocumentVariables > queryDocumentVariablesDirect() const =0
virtual RTransaction getTransaction(int transactionId)=0
virtual QSet< QString > getLayerStateNames(const QString &rxStr=RDEFAULT_QSTRING) const =0
virtual void deselectEntity(RObject::Id entityId, QSet< RObject::Id > *affectedEntities=NULL)=0
Deselects the entity with the given ID.
virtual bool isInBackStorage(RObject::Id)
Linked storages should return true if the given object is stored in the storage the linked storage li...
Definition RStorage.h:793
virtual QSet< RObject::Id > queryAllLayouts(bool undone=false)=0
virtual QSharedPointer< RLayerState > queryLayerState(const QString &layerStateName) const =0
virtual void resetTransactionStack()=0
virtual QSet< RObject::Id > queryAllVisibleEntities()=0
virtual int getMaxDrawOrder()
Definition RStorage.h:783
virtual int getTransactionGroup() const
Definition RStorage.h:725
virtual QSharedPointer< RObject > queryObjectDirect(RObject::Id objectId) const
Definition RStorage.h:254
virtual bool hasSelection() const =0
virtual QString getLayerName(RObject::Id layerId) const =0
virtual QSet< QString > getBlockNames(const QString &rxStr=RDEFAULT_QSTRING, bool undone=false) const =0
virtual QSet< RObject::Id > querySelectedEntities() const =0
virtual QString getBlockNameFromHandle(RObject::Handle blockHandle) const =0
RDocument * document
Definition RStorage.h:855
virtual RObject::Id getLayerId(const QString &layerName) const =0
virtual void setVariable(const QString &key, const QVariant &value, bool overwrite=true)=0
Sets a custom variable in the context of this document.
virtual QSet< RObject::Id > queryAllObjects() const =0
RColor currentColor
Definition RStorage.h:858
RObject::Id idCounter
Definition RStorage.h:857
virtual QSharedPointer< RDimStyle > queryDimStyleDirect() const =0
virtual RObject::Id getBlockIdAuto(const QString &blockLayoutName) const =0
virtual void toggleUndoStatus(QSet< RObject::Id > &objects)=0
Toggles the current undo status of all given objects.
virtual void saveTransaction(RTransaction &transaction)=0
Saves the given transaction.
virtual bool saveObject(QSharedPointer< RObject > object, bool checkBlockRecursion=true, bool keepHandles=false, bool *overwrite=NULL)=0
Saves the given object to the storage.
virtual QSharedPointer< REntity > queryEntity(RObject::Id entityId) const =0
virtual RObject::Id getLayoutId(const QString &layoutName) const =0
RLineweight::Lineweight currentLineweight
Definition RStorage.h:859
virtual QSet< RObject::Id > querySelectedLayerEntities(RObject::Id layerId, bool allBlocks=false)=0
virtual RObject * queryObjectCC(RObject::Id objectId) const =0
virtual QSharedPointer< RLayer > queryCurrentLayer()
Definition RStorage.h:305
RObject::Id currentBlockId
Definition RStorage.h:862
virtual QSharedPointer< RLayer > queryLayer(const QString &layerName) const =0
virtual QString getBlockNameFromLayout(RObject::Id layoutId) const =0
virtual bool hasChildEntities(RObject::Id parentId) const =0
virtual QSet< RObject::Id > queryAllUcs()=0
virtual void commitTransaction()=0
Commits the current transaction.
QList< RModifiedListener * > modifiedListeners
Definition RStorage.h:870
virtual QSet< RObject::Id > queryLayerEntities(RObject::Id layerId, bool allBlocks=false)=0
RObject::Id modelSpaceBlockId
Definition RStorage.h:864
virtual void startTransactionGroup()
Definition RStorage.h:721
virtual int getLastTransactionId()
Definition RStorage.h:705
virtual RObject::Id getBlockId(const QString &blockName) const =0
virtual QString getLinetypeDescription(RObject::Id linetypeId) const =0
virtual void selectEntity(RObject::Id entityId, bool add=false, QSet< RObject::Id > *affectedEntities=NULL)=0
Selects the entity with the given ID.
virtual QSet< RObject::Id > queryAllBlocks(bool undone=false)=0
virtual QString getLinetypeLabel(RObject::Id linetypeId) const =0
virtual QSet< RObject::Id > queryAllEntities(bool undone, bool allBlocks, QList< RS::EntityType > types)=0
virtual QSharedPointer< RLinetype > queryLinetype(const QString &linetypeName) const =0
virtual QSharedPointer< RObject > queryObject(RObject::Id objectId) const =0
RObject::Id layer0Id
Definition RStorage.h:865
int maxDrawOrder
Definition RStorage.h:856
virtual QVariant getKnownVariable(RS::KnownVariable key) const =0
virtual bool deleteObject(RObject::Id objectId)=0
Deletes the object with the given ID.
virtual QSharedPointer< RLayout > queryLayoutDirect(RObject::Id layoutId) const
Definition RStorage.h:335
virtual void unsetCurrentViewport()
Definition RStorage.h:406
virtual void deleteTransactionsFrom(int transactionId)=0
Deletes all transactions with IDs from transactionId (inclusive) to the maximum transaction ID.
QDateTime getLastModifiedDateTime() const
Definition RStorage.h:819
virtual QSharedPointer< RView > queryView(RObject::Id viewId) const =0
virtual RObject::Id getLayerStateId(const QString &layerStateName) const =0
virtual QSet< RObject::Id > queryChildEntities(RObject::Id parentId, RS::EntityType type=RS::EntityAll)=0
virtual QSharedPointer< RLayout > queryLayout(RObject::Id layoutId) const =0
Transaction implementation.
Definition RTransaction.h:73
Represents a view in a drawing.
Definition RView.h:41
#define QCADCORE_EXPORT
Definition core_global.h:10
void setCurrentLayer(void layerName)
Sets the current layer to the given layer.
Definition simple_create.js:127
void setCurrentColor(void color)
Sets the current color for newly added entities.
Definition simple_create.js:36
void hasLayer(void name)
Checks if the given layer exists.
Definition simple_create.js:119
void isEntity(void obj)
Checks if the given object is a graphics entity.
Definition library.js:364
char s
Definition opennurbs_string.cpp:32
#define NULL
Definition opennurbs_system.h:256