summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/data')
-rw-r--r--src/datavisualization/data/customrenderitem.cpp18
-rw-r--r--src/datavisualization/data/customrenderitem_p.h9
2 files changed, 11 insertions, 16 deletions
diff --git a/src/datavisualization/data/customrenderitem.cpp b/src/datavisualization/data/customrenderitem.cpp
index 53db9bd1..a1c70057 100644
--- a/src/datavisualization/data/customrenderitem.cpp
+++ b/src/datavisualization/data/customrenderitem.cpp
@@ -24,29 +24,19 @@ CustomRenderItem::CustomRenderItem()
: AbstractRenderItem(),
m_texture(0),
m_object(0),
- m_visible(true)
+ m_visible(true),
+ m_renderer(0)
{
}
-CustomRenderItem::CustomRenderItem(const CustomRenderItem &other)
- : AbstractRenderItem(other)
-{
- m_texture = other.m_texture;
-}
-
CustomRenderItem::~CustomRenderItem()
{
- if (m_object)
- delete m_object;
+ ObjectHelper::releaseObjectHelper(m_renderer, m_object);
}
void CustomRenderItem::setMesh(const QString &meshFile)
{
- if (m_object)
- delete m_object;
- // Load mesh and make an object of it
- m_object = new ObjectHelper(meshFile);
- m_object->load();
+ ObjectHelper::resetObjectHelper(m_renderer, m_object, meshFile);
}
QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/data/customrenderitem_p.h b/src/datavisualization/data/customrenderitem_p.h
index f05540d0..17195f7b 100644
--- a/src/datavisualization/data/customrenderitem_p.h
+++ b/src/datavisualization/data/customrenderitem_p.h
@@ -35,12 +35,12 @@
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class QCustom3DItem;
+class Abstract3DRenderer;
class CustomRenderItem : public AbstractRenderItem
{
public:
CustomRenderItem();
- CustomRenderItem(const CustomRenderItem &other);
virtual ~CustomRenderItem();
inline void setTexture(GLuint texture) { m_texture = texture; }
@@ -65,19 +65,24 @@ public:
inline int index() const { return m_index; }
inline void setShadowCasting(bool shadowCasting) { m_shadowCasting = shadowCasting; }
inline bool isShadowCasting() const { return m_shadowCasting; }
+ inline void setRenderer(Abstract3DRenderer *renderer) { m_renderer = renderer; }
private:
+ Q_DISABLE_COPY(CustomRenderItem)
+
GLuint m_texture;
QVector3D m_scaling;
QVector3D m_position;
bool m_absolute;
- ObjectHelper *m_object;
+ ObjectHelper *m_object; // shared reference
bool m_needBlend;
bool m_visible;
bool m_valid;
int m_index;
bool m_shadowCasting;
QCustom3DItem *m_item;
+ Abstract3DRenderer *m_renderer;
+
};
typedef QHash<QCustom3DItem *, CustomRenderItem *> CustomRenderItemArray;