X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Frendering%2Fatlas%2Fatlas-manager.h;fp=dali-toolkit%2Finternal%2Fatlas-manager%2Fatlas-manager.h;h=cf774b35beadd9bfeb2f5d04f7c0b693e327bce4;hp=6d4141977edb9aeeb71d188139431f795f565cd2;hb=refs%2Fchanges%2F65%2F49465%2F8;hpb=ef1f3134222a99e36397e4c55998b645ec0bbd08 diff --git a/dali-toolkit/internal/atlas-manager/atlas-manager.h b/dali-toolkit/internal/text/rendering/atlas/atlas-manager.h similarity index 62% rename from dali-toolkit/internal/atlas-manager/atlas-manager.h rename to dali-toolkit/internal/text/rendering/atlas/atlas-manager.h index 6d41419..cf774b3 100644 --- a/dali-toolkit/internal/atlas-manager/atlas-manager.h +++ b/dali-toolkit/internal/text/rendering/atlas/atlas-manager.h @@ -37,120 +37,6 @@ class AtlasManager; } // namespace Internal -/** - * AtlasManager - * ------------ - * - * Creates and manages additions and removals of images from Texture Atlases - * - * The AtlasManager will match pixeltype and optimal block use to determine - * the appropriate atlas to upload an image to. - * - * A policy can be specified to determine the action the AtlasManager will carry - * out, should it not be able to add an image. This can return an error, or create - * a new atlas of pre-determined dimensions to accomodate the new image. - * - * Images are referenced by an ImageId once they have been successfully uploaded. - * - * Once an image has been successfully uploaded, Geometry can be generated by passing - * the ImageId to the GenerateMeshData method and geometry can be consolidated via - * the StitchMesh method. - * - * Images are reference counted once mesh data has been generated. An image is removed - * from the Atlas via the Remove( ImageId ) method. This unreferences the image and only - * physically removes it from the atlas once all references have been freed. - * - * If the AddPolicy is set to generate and error if an image can't be uploaded, then it - * is the applications responsibility to deal with the situation. An error will be indicated - * with an ImageId of 0. - * - * Examples using the AtlasManager - * - * Create or obtain the AtlasManager - * @code - * - * AtlasManager manager = AtlasManager::Get(); - * - * @endcode - * - * Set the AtlasManager AddPolicy - * - * @code - * - * // Tell the atlas manager to create a new atlas, if it needs to - * manager.SetAddPolicy( FAIL_ON_ADD_CREATES ); - * - * // Tell the atlas manager to return an error, if it can't add an image - * manager.SetAddPolicy( FAIL_ON_ADD_FAILS ); - * - * @endcode - * - * Simple add and removal of BufferImage to and from an atlas - * - * @code - * - * // Structure returned by AtlasManager operations - * AtlasSlot slot; - * - * // Add image to an atlas ( will be created if none suitable exists ) - * manager.Add( bitmapImage, slot ); - * - * // slot.mImage returns the imageId for the bitmap, slot.mAtlas indicates the atlasId - * // that the image was added to. The imageId is used to communicate with the AtlasManager - * uint32_t imageId = slot.mImage; - * if ( !imageId ) - * { - * // Addition has failed..... - * } - * ... - * ... - * // Done with image, so remove from atlas, if not being used elsewhere - * manager.Remove( imageId ); - * - * @endcode - * - * Create a Specific Atlas for adding BufferImages to - * - * @code - * - * // Create an RGB888 atlas of 2048x2848, with a blocksize of 128x128 - * uint32_t atlas = manager.CreateAtlas( 2048u, 2048u, 128u, 128u, Pixel::RGB888 ); - * - * // Add an image to a preferred atlas ( note not specifying atlas may still result - * // in the bitmap being added to the atlas above ) - * manager.Add( bitmapImage, slot, atlas ); - * - * @endcode - * - * Create Geometry for a previously added image - * - * @code - * - * // Top left corner of geometry to be generated - * Vector2 position( 1.0f, 1.0f ); - * - * // Geometry will end up here! - * MeshData meshData; - * manager.GenerateMeshData( imageId, position, meshData ); - * - * @endcode - * - * Generating Geometry from multiple images in the same atlas - * - * @code - * - * MeshData firstMesh; - * MeshData secondMesh; - * manager.GenerateMeshData( imageid_1, position_1, firstMesh ); - * manager.GenerateMeshData( imageid_2, position_2, secondMesh ); - * - * // Combine the two meshes. Passing MESH_OPTIMIZE as an optional third parameter will remove duplicate vertices - * manager.StitchMesh( first, second ); - * - * @endcode - * - */ - class AtlasManager : public BaseHandle { public: @@ -158,7 +44,6 @@ public: typedef uint32_t SizeType; typedef SizeType AtlasId; typedef SizeType ImageId; - static const bool MESH_OPTIMIZE = true; struct AtlasSize { @@ -197,14 +82,14 @@ public: struct Vertex2D { - Vector2 mPosition; - Vector2 mTexCoords; + Vector2 mPosition; ///< Vertex posiiton + Vector2 mTexCoords; ///< Vertex texture co-ordinates }; struct Mesh2D { - Vector< Vertex2D > mVertices; - Vector< unsigned int> mIndices; + Vector< Vertex2D > mVertices; ///< container of vertices + Vector< SizeType > mIndices; ///< container of indices }; /** @@ -274,8 +159,10 @@ public: * @param[in] image reference to a bitmapimage * @param[out] slot result of add operation * @param[in] atlas optional preferred atlas + * + * @return true if a new atlas was created */ - void Add( const BufferImage& image, + bool Add( const BufferImage& image, AtlasSlot& slot, AtlasId atlas = 0 ); @@ -302,17 +189,6 @@ public: bool addReference = true ); /** - * @brief Append second mesh to the first mesh - * - * @param[in] first First mesh - * @param[in] second Second mesh - * @param[in] optimize should we optimize vertex data - */ - void StitchMesh( Mesh2D& first, - const Mesh2D& second, - bool optimize = false ); - - /** * @brief Get the BufferImage containing an atlas * * @param[in] atlas AtlasId returned when atlas was created @@ -382,20 +258,20 @@ public: /** * @brief Get Material used by atlas * - * @param atlas[in] atlas AtlasId + * @param[in] atlas AtlasId * * @return Material used by atlas */ Material GetMaterial( AtlasId atlas ) const; - /** - * @brief Get Image used by atlas - * - * @param atlas[in] atlas AtlasId + /** + * @brief Set the material used by an atlas * - * @return Sampler used by atlas + * @param[in] atlas AtlasId + * @param[in] material The Material to assign */ - Image GetImage( AtlasId atlas ) const; + void SetMaterial( AtlasId atlas, Material& material ); + private: explicit DALI_INTERNAL AtlasManager(Internal::AtlasManager *impl);