#define DALI_INTERNAL_SCENE_GRAPH_RENDER_ITEM_H
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
~RenderItem();
/**
+ * @brief This method is an optimized calculation of a viewport-space AABB (Axis-Aligned-Bounding-Box).
+ *
+ * We use the model-view-matrix, but we do not use projection. Therefore we assume Z = 0.
+ * As the box is Axis-Aligned (in viewport space) rotations on Z axis are correctly delt with by expanding the box as necessary.
+ * Rotations on X & Y axis will resize the AABB, but it will not handle the projection error due to the new coordinates having non-zero Z values.
+ *
+ * Note: We pass in the viewport dimensions rather than allow the caller to modify the raw AABB in order to optimally generate the final result.
+ *
+ * @param[in] viewportWidth The width of the viewport to calculate for
+ * @param[in] viewportHeight The height of the viewport to calculate for
+ * @param[in] useUpdateSizeHint Set to true if you want to use update size hint instead of item size
+ * @return The AABB coordinates in viewport-space (x, y, width, height)
+ */
+ ClippingBox CalculateViewportSpaceAABB( const int viewportWidth, const int viewportHeight, const bool useUpdateSizeHint = false ) const;
+
+ /**
* Overriden delete operator.
* Deletes the RenderItem from its global memory pool
* @param[in] A pointer to the RenderItem to delete.
*/
void operator delete( void* ptr );
-
Matrix mModelMatrix;
Matrix mModelViewMatrix;
Vector3 mSize;
+ Vector3 mUpdateSizeHint;
Render::Renderer* mRenderer;
Node* mNode;
+ const void* mTextureSet; //< Used for sorting only
int mDepthIndex;
bool mIsOpaque:1;
+ bool mPartialUpdateEnabled:1;
private: