20#ifndef RMEMORYSTORAGE_H_
21#define RMEMORYSTORAGE_H_
25#include <QSharedPointer>
71 virtual QSet<RObject::Id>
queryAllEntities(
bool undone,
bool allBlocks, QList<RS::EntityType> types);
77 virtual QSet<RObject::Id>
queryAllLayoutBlocks(
bool includeModelSpace =
false,
bool undone =
false)
const;
91 bool hasBlockReferenceEntities()
const;
103 virtual QSharedPointer<RObject> queryObjectByHandleDirect(
RObject::Handle objectHandle)
const;
106 virtual QSharedPointer<RLayer>
queryLayer(
const QString& layerName)
const;
108 virtual QSharedPointer<RLayerState>
queryLayerState(
const QString& layerStateName)
const;
110 virtual QSharedPointer<RLayout>
queryLayout(
const QString& layoutName)
const;
112 virtual QSharedPointer<RBlock>
queryBlock(
const QString& blockName)
const;
113 virtual QSharedPointer<RBlock>
queryBlockDirect(
const QString& blockName)
const;
115 virtual QSharedPointer<RView>
queryView(
const QString& viewName)
const;
117 virtual QSharedPointer<RUcs>
queryUcs(
const QString& ucsName)
const;
120 virtual QSharedPointer<RLinetype>
queryLinetype(
const QString& linetypeName)
const;
122 void clearVisibleCache();
123 void updateVisibleCache()
const;
125 void clearSelectionCache();
126 void updateSelectedEntityMap()
const;
127 void updateSelectedLayerMap()
const;
133 QSet<RObject::Id>* affectedEntities =
NULL);
135 QSet<RObject::Id>* affectedEntities=
NULL);
138 QSet<RObject::Id>* affectedEntities =
NULL);
140 QSet<RObject::Id>* affectedEntities =
NULL);
141 void setEntitySelected(QSharedPointer<REntity> entity,
bool on,
142 QSet<RObject::Id>* affectedEntities =
NULL,
bool onlyDescend =
false);
150 virtual RBox getBoundingBox(
bool ignoreHiddenLayers =
true,
bool ignoreEmpty=
false)
const;
154 virtual bool removeObject(QSharedPointer<RObject>
object);
155 virtual bool saveObject(QSharedPointer<RObject>
object,
bool checkBlockRecursion =
true,
bool keepHandles =
false,
bool *overwrite =
NULL);
174 virtual void setVariable(
const QString& key,
const QVariant& value,
bool overwrite =
true);
175 virtual QVariant
getVariable(
const QString& key)
const;
248 mutable RBox boundingBox[2][2];
263 mutable QHash<RObject::Id, QHash<RObject::Id, QSharedPointer<REntity> > >
blockEntityMap;
264 QHash<RObject::Id, QSharedPointer<RBlock> >
blockMap;
265 QHash<RS::EntityType, QHash<RObject::Id, QSharedPointer<RObject> > >
typeObjectMap;
266 QHash<RObject::Id, QSharedPointer<RLayer> >
layerMap;
#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
Dimension style class.
Definition RDimStyle.h:42
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
Represents a linetype in a drawing.
Definition RLinetype.h:45
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RLinetypePattern.h:42
Definition RLineweight.h:39
Lineweight
Definition RLineweight.h:44
Basic memory based storage.
Definition RMemoryStorage.h:52
QHash< RS::EntityType, QHash< RObject::Id, QSharedPointer< RObject > > > typeObjectMap
Definition RMemoryStorage.h:265
bool visibleEntityMapDirty
Definition RMemoryStorage.h:260
QHash< QString, QSharedPointer< RLayer > > layerNameMap
Definition RMemoryStorage.h:267
QSharedPointer< RDocumentVariables > documentVariables
Definition RMemoryStorage.h:276
QHash< RObject::Id, QSharedPointer< RLayout > > layoutMap
Definition RMemoryStorage.h:269
QHash< RObject::Id, QSharedPointer< REntity > > visibleEntityMap
Definition RMemoryStorage.h:259
QHash< RObject::Id, QSharedPointer< RLinetype > > linetypeMap
Definition RMemoryStorage.h:270
QSharedPointer< RDimStyle > dimStyle
Definition RMemoryStorage.h:277
QHash< RObject::Id, QSharedPointer< REntity > > selectedEntityMap
Definition RMemoryStorage.h:257
QMap< QString, QString > variableCaseMap
Definition RMemoryStorage.h:280
bool inTransaction
Definition RMemoryStorage.h:253
QHash< int, RTransaction > transactionMap
Definition RMemoryStorage.h:273
QHash< RObject::Id, QSharedPointer< RBlock > > blockMap
Definition RMemoryStorage.h:264
QHash< RObject::Id, QSharedPointer< RLayer > > layerMap
Definition RMemoryStorage.h:266
RLineweight::Lineweight maxLineweight
Definition RMemoryStorage.h:243
QHash< RObject::Id, QSharedPointer< RLayerState > > layerStateMap
Definition RMemoryStorage.h:268
bool boundingBoxDirty
Definition RMemoryStorage.h:249
QMultiHash< RObject::Id, RObject::Id > childMap
maps parent entity IDs to child entity IDs
Definition RMemoryStorage.h:272
bool selectedEntityMapDirty
Definition RMemoryStorage.h:258
QHash< RObject::Handle, QSharedPointer< RObject > > objectHandleMap
Definition RMemoryStorage.h:255
QHash< RObject::Id, QHash< RObject::Id, QSharedPointer< REntity > > > blockEntityMap
Definition RMemoryStorage.h:263
QHash< RObject::Id, QSharedPointer< RObject > > objectMap
Definition RMemoryStorage.h:254
bool selectedLayerMapDirty
Definition RMemoryStorage.h:262
QHash< QString, QVariant > variables
Definition RMemoryStorage.h:279
QHash< RObject::Id, QSharedPointer< REntity > > entityMap
Definition RMemoryStorage.h:256
QHash< RObject::Id, QSharedPointer< RLayer > > selectedLayerMap
Definition RMemoryStorage.h:261
Abstract base class for all objects.
Definition RObject.h:64
int Handle
Definition RObject.h:71
int Id
Definition RObject.h:69
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityAll
All entities (for filters)
Definition RS.h:241
KnownVariable
Well established document variables.
Definition RS.h:501
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 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
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 QSet< RObject::Id > queryAllLinetypes()=0
virtual bool isSelectedWorkingSet(RObject::Id entityId)
Definition RStorage.cpp:130
virtual QString getLayoutName(RObject::Id layoutId) 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
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 QSet< QString > getLayoutNames(const QString &rxStr=RDEFAULT_QSTRING) const =0
virtual QSharedPointer< RObject > queryObjectByHandle(RObject::Handle objectHandle) const =0
virtual QString getLinetypeName(RObject::Id linetypeId) const =0
virtual QSet< RObject::Id > queryAllViewports() const =0
virtual QSharedPointer< RLinetype > queryLinetype(RObject::Id linetypeId) const =0
virtual void clear()
Resets this storage to its initial, empty state.
Definition RStorage.cpp:59
virtual int getMaxTransactionId()=0
virtual QSet< RObject::Id > queryBlockReferences(RObject::Id blockId) const =0
virtual bool isSelected(RObject::Id entityId)
Definition RStorage.cpp:125
virtual QSet< RObject::Id > queryAllViews(bool undone=false)=0
virtual QSharedPointer< RBlock > queryBlock(RObject::Id blockId) const =0
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 void setUndoStatus(RObject &object, bool status)
Definition RStorage.cpp:87
virtual QSet< RObject::Id > queryAllLayers(bool undone=false)=0
virtual QSharedPointer< RDimStyle > queryDimStyle() const =0
virtual QSharedPointer< RUcs > queryUcs(RObject::Id ucsId) const =0
virtual QList< RLinetypePattern > getLinetypePatterns() const =0
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
virtual void setObjectHandle(RObject &object, RObject::Handle objectHandle)
Definition RStorage.cpp:80
virtual bool isEntityVisible(const REntity &entity, RObject::Id blockId) const
Definition RStorage.cpp:1219
virtual void beginTransaction()=0
Starts a new transaction.
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 QSet< RObject::Id > queryAllBlockReferences() const =0
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
virtual QString getLayerStateName(RObject::Id layerStateId) const =0
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 QSet< RObject::Id > queryAllLayouts(bool undone=false)=0
virtual void resetTransactionStack()=0
virtual QSet< RObject::Id > queryAllVisibleEntities()=0
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
virtual QSharedPointer< REntity > queryVisibleEntityDirect(RObject::Id entityId) const
Definition RStorage.cpp:111
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
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
virtual QSet< RObject::Id > querySelectedLayerEntities(RObject::Id layerId, bool allBlocks=false)=0
virtual RObject * queryObjectCC(RObject::Id objectId) const =0
virtual void setCurrentBlock(RObject::Id blockId)
Definition RStorage.cpp:213
virtual bool hasChildEntities(RObject::Id parentId) const =0
virtual QSet< RObject::Id > queryAllUcs()=0
virtual RObject::Handle getNewObjectHandle()
Definition RStorage.cpp:99
virtual void commitTransaction()=0
Commits the current transaction.
virtual void setEntityParentId(REntity &entity, RObject::Id parentId)
Definition RStorage.cpp:141
virtual QSet< RObject::Id > queryLayerEntities(RObject::Id layerId, bool allBlocks=false)=0
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 QSharedPointer< RObject > queryObject(RObject::Id objectId) const =0
virtual QVariant getKnownVariable(RS::KnownVariable key) const =0
virtual QSharedPointer< RLayout > queryLayoutDirect(RObject::Id layoutId) const
Definition RStorage.h:335
virtual void deleteTransactionsFrom(int transactionId)=0
Deletes all transactions with IDs from transactionId (inclusive) to the maximum transaction ID.
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< REntity > queryEntityDirect(RObject::Id entityId) const
Definition RStorage.cpp:107
virtual QSharedPointer< RLayout > queryLayout(RObject::Id layoutId) const =0
Transaction implementation.
Definition RTransaction.h:73
Represents a user coordinate system (UCS) in a drawing.
Definition RUcs.h:41
Represents a view in a drawing.
Definition RView.h:41
#define QCADCORE_EXPORT
Definition core_global.h:10
void deleteObject(void obj)
Deletes the given RObject from the drawing.
Definition simple_create.js:216
#define NULL
Definition opennurbs_system.h:256