#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/math/matrix.h>
+#include <dali/internal/update/nodes/node.h>
namespace Dali
{
namespace Internal
{
+namespace Render
+{
+class Renderer;
+}
+
namespace SceneGraph
{
-class Renderer;
class RenderItem;
typedef std::vector< RenderItem > RendererItemContainer;
public:
/**
- * Create a new render-item.
+ * Construct a new RenderItem
*/
- RenderItem();
+ static RenderItem* New();
/**
* Non-virtual destructor; RenderItem is not suitable as a base class.
~RenderItem();
/**
+ * Overriden delete operator.
+ * Deletes the RenderItem from its global memory pool
+ */
+ void operator delete( void* ptr );
+
+ /**
* Reset the render-item.
*/
void Reset();
* Retrieve the renderer.
* @return The renderer.
*/
- const Renderer* GetRenderer() const;
+ Render::Renderer& GetRenderer() const;
/**
* Set the renderer
* @param[in] renderer The renderer
*/
- void SetRenderer( Renderer* renderer );
+ void SetRenderer( Render::Renderer* renderer );
/**
+ * Set the node
+ * @param[in] node The node
+ */
+ void SetNode( Node* node );
+
+ /**
+ * Retrieve the node
+ * @return The node
+ */
+ const Node& GetNode() const
+ {
+ return *mNode;
+ }
+ /**
* Retrieve the modelView matrix.
* @return The modelView matrix.
*/
*/
void SetDepthIndex( int depthIndex );
+ /**
+ * Set if the RenderItem is opaque
+ * @param[in] isOpaque true if the RenderItem is opaque, false otherwise
+ */
+ void SetIsOpaque( bool isOpaque );
+
+ /**
+ * Check if the RenderItem is opaque
+ * @return True if it is opaque, false otherwise
+ */
+ bool IsOpaque() const
+ {
+ return mIsOpaque;
+ }
+
+ /**
+ * Sets the size of the render item
+ * @param[in] size The size of the render item
+ */
+ void SetSize( const Vector3& size)
+ {
+ mSize = size;
+ }
+
+ /**
+ * Retrives the size of the render item
+ * @return The size of the render item
+ */
+ const Vector3& GetSize() const
+ {
+ return mSize;
+ }
+
private:
+ /**
+ * Private constructor. See RenderItem::New
+ */
+ RenderItem();
+
// RenderItems should not be copied as they are heavy
RenderItem( const RenderItem& item );
RenderItem& operator = ( const RenderItem& item );
- Matrix mModelViewMatrix;
- Renderer* mRenderer;
- int mDepthIndex;
+ Matrix mModelViewMatrix;
+ Vector3 mSize;
+ Render::Renderer* mRenderer;
+ Node* mNode;
+ int mDepthIndex;
+ bool mIsOpaque:1;
};
} // namespace SceneGraph