X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fatlas-manager%2Fatlas-manager.h;h=6f654ff76ca87cd6e8626f1ae62ebea493a74299;hp=9263ea406a1ff497f83108a0eae51671349ce3de;hb=5f6befa398f1c68fcc8edff409a086f54af4d5f9;hpb=43810310547ea62237f91305e8b9724fd017492a diff --git a/dali-toolkit/internal/atlas-manager/atlas-manager.h b/dali-toolkit/internal/atlas-manager/atlas-manager.h index 9263ea4..6f654ff 100644 --- a/dali-toolkit/internal/atlas-manager/atlas-manager.h +++ b/dali-toolkit/internal/atlas-manager/atlas-manager.h @@ -20,9 +20,9 @@ // EXTERNAL INCLUDES #include #include -#include #include #include +#include namespace Dali { @@ -160,16 +160,21 @@ public: typedef SizeType ImageId; static const bool MESH_OPTIMIZE = true; + struct AtlasSize + { + SizeType mWidth; // width of the atlas in pixels + SizeType mHeight; // height of the atlas in pixels + SizeType mBlockWidth; // width of a block in pixels + SizeType mBlockHeight; // height of a block in pixels + }; + /** * Metrics structures to describe Atlas Manager state * */ struct AtlasMetricsEntry { - SizeType mWidth; // width of the atlas in pixels - SizeType mHeight;; // height of the atlas in pixels - SizeType mBlockWidth; // width of a block in pixels - SizeType mBlockHeight; // height of a block in pixels + AtlasSize mSize; // size of atlas and blocks SizeType mBlocksUsed; // number of blocks used in the atlas SizeType mTotalBlocks; // total blocks used by atlas Pixel::Format mPixelFormat; // pixel format of the atlas @@ -182,6 +187,18 @@ public: Dali::Vector< AtlasMetricsEntry > mAtlasMetrics; // container of atlas information }; + struct Vertex2D + { + Vector2 mPosition; + Vector2 mTexCoords; + }; + + struct Mesh2D + { + Vector< Vertex2D > mVertices; + Vector< unsigned short> mIndices; + }; + /** * Create an AtlasManager handle; this can be initialised with AtlasManager::New() * Calling member functions with an uninitialised handle is not allowed. @@ -225,19 +242,12 @@ public: /** * @brief Create a blank atlas of specific dimensions and pixel format with a certain block size * - * @param[in] width desired atlas width in pixels - * @param[in] height desired atlas height in pixels - * @param[in] blockWidth block width to use in atlas in pixels - * @param[in] blockHeight block height to use in atlas in pixels + * @param[in] size desired atlas dimensions * @param[in] pixelformat format of a pixel in atlas * * @return atlas Id */ - AtlasId CreateAtlas( SizeType width, - SizeType height, - SizeType blockWidth, - SizeType blockHeight, - Pixel::Format pixelformat = Pixel::RGBA8888 ); + AtlasId CreateAtlas( const AtlasSize& size, Pixel::Format pixelformat = Pixel::RGBA8888 ); /** * @brief Set the policy on failure to add an image to an atlas @@ -279,7 +289,7 @@ public: */ void GenerateMeshData( ImageId id, const Vector2& position, - MeshData& mesh ); + Mesh2D& mesh ); /** * @brief Append second mesh to the first mesh @@ -288,8 +298,8 @@ public: * @param[in] second Second mesh * @param[in] optimize should we optimize vertex data */ - void StitchMesh( MeshData& first, - const MeshData& second, + void StitchMesh( Mesh2D& first, + const Mesh2D& second, bool optimize = false ); /** @@ -300,9 +310,9 @@ public: * @param[in] optimize should we optimize vertex data * @param[out] out resulting mesh */ - void StitchMesh( const MeshData& first, - const MeshData& second, - MeshData& out, + void StitchMesh( const Mesh2D& first, + const Mesh2D& second, + Mesh2D& out, bool optimize = false ); /** @@ -322,24 +332,14 @@ public: * @return Atlas Id */ AtlasId GetAtlas( ImageId id ); - - /** - * @brief Get the size of the blocks used in an atlas - * - * @param[in] atlas AtlasId - * - * @return width and height of the blocks used - */ - Vector2 GetBlockSize( AtlasId atlas ); - /** * @brief Get the current size of an atlas * * @param[in] atlas AtlasId * - * @return width and height of the atlas + * @return AtlasSize structure for the atlas */ - Vector2 GetAtlasSize( AtlasId atlas ); + const AtlasSize& GetAtlasSize( AtlasId atlas ); /** * @brief Get the number of blocks available in an atlas @@ -353,12 +353,11 @@ public: /** * @brief Sets the pixel area of any new atlas and also the individual block size * - * @param[in] size pixel area of atlas + * @param[in] size Atlas size structure * * @param blockSize pixel area in atlas for a block */ - void SetNewAtlasSize( const Vector2& size, - const Vector2& blockSize ); + void SetNewAtlasSize( const AtlasSize& size ); /** * @brief Get the number of atlases created @@ -383,6 +382,15 @@ public: */ void GetMetrics( Metrics& metrics ); + /** + * @brief Get Material used by atlas + * + * @param atlas[in] atlas AtlasId + * + * @return Material used by atlas + */ + Material GetMaterial( AtlasId atlas ) const; + private: explicit DALI_INTERNAL AtlasManager(Internal::AtlasManager *impl);