Fixed Text Quality Regression
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / text / rendering / atlas / atlas-glyph-manager.h
index cbfa754..85f0969 100644 (file)
@@ -34,7 +34,7 @@ class AtlasGlyphManager;
 }
 
 
-class DALI_IMPORT_API AtlasGlyphManager : public BaseHandle
+class AtlasGlyphManager : public BaseHandle
 {
 public:
 
@@ -88,7 +88,7 @@ public:
    */
   void GenerateMeshData( uint32_t imageId,
                          const Vector2& position,
-                         MeshData& meshData );
+                         Toolkit::AtlasManager::Mesh2D& mesh );
 
   /**
    * @brief Stitch Two Meshes together
@@ -96,8 +96,8 @@ public:
    * @param[in] first first mesh
    * @param[in] second second mesh
    */
-  void StitchMesh( MeshData& first,
-                   const MeshData& second );
+  void StitchMesh( Toolkit::AtlasManager::Mesh2D& first,
+                   const Toolkit::AtlasManager::Mesh2D& second );
 
   /**
    * @brief Check to see if a glyph is being cached
@@ -105,8 +105,10 @@ public:
    * @param[in] fontId The font that this glyph comes from
    * @param[in] index The GlyphIndex of this glyph
    * @param[out] slot container holding information about the glyph( mImage = 0 indicates not being cached )
+   *
+   * @return Whether glyph is cached or not ?
    */
-  void Cached( Text::FontId fontId,
+  bool Cached( Text::FontId fontId,
                Text::GlyphIndex index,
                AtlasManager::AtlasSlot& slot );
 
@@ -119,30 +121,42 @@ public:
    */
   Vector2 GetAtlasSize( uint32_t atlasId );
 
+   /**
+    * @brief Set the atlas size and block size for subsequent Atlas generation
+    *
+    * @param[in] width width of atlas in pixels
+    * @param[in] height height of atlas in pixels
+    * @param[in] blockWidth width of a block in pixels
+    * @param[in] blockHeight height of a block in pixels
+    */
+  void SetNewAtlasSize( uint32_t width, uint32_t height, uint32_t blockWidth, uint32_t blockHeight );
+
   /**
-   * @brief Set the Atlas size and block size for subsequent atlas generation
+   * @brief Get the Pixel Format used by an atlas
    *
-   * @param[in] size size of the atlas in pixels
-   * @param[in] blockSize size of a block in this atlas in pixels
+   * @param[in] atlasId Id of atlas to check
+   *
+   * @return The pixel format of the atlas
    */
-  void SetNewAtlasSize( const Vector2& size,
-                        const Vector2& blockSize );
+  Pixel::Format GetPixelFormat( uint32_t atlasId );
 
   /**
-   * @brief Unreference an image from the atlas and remove from cache if no longer needed
+   * @brief Get the material used by an atlas
+   *
+   * @param[in] atlasId Id of an atlas
    *
-   * @param[in] imageId ID of the image
+   * @return The material used by the atlas
    */
-  void Remove( uint32_t imageId );
+  Material GetMaterial( uint32_t atlasId ) const;
 
   /**
-   * @brief Get the Pixel Format used by an atlas
+   * @brief Get the sampler used by an atlas
    *
-   * @param[in] atlasId Id of atlas to check
+   * @param[in] atlasId Id of an atlas
    *
-   * @return The pixel format of the atlas
+   * @return The sampler used by the atlas
    */
-  Pixel::Format GetPixelFormat( uint32_t atlasId );
+  Sampler GetSampler( uint32_t atlasId ) const;
 
   /**
    * @brief Get Glyph Manager metrics
@@ -151,6 +165,29 @@ public:
    */
   const Metrics& GetMetrics();
 
+  /**
+   * @brief Adjust the reference count for an imageId and remove cache entry if it becomes free
+   *
+   * @param[in] fontId the font this image came from
+   * @param[in] imageId The imageId
+   * @param[in] delta adjustment to make to reference count
+   */
+  void AdjustReferenceCount( Text::FontId fontId, uint32_t imageId, int32_t delta );
+
+  /**
+   * @brief Get Shader used for rendering glyph effect buffers
+   *
+   * @return Handle of shader needed
+   */
+  Shader GetEffectBufferShader() const;
+
+  /**
+   * @brief Get Shader used rendering Glyph Shadows
+   *
+   * @return Handle of shader needed
+   */
+  Shader GetGlyphShadowShader() const;
+
 private:
 
   explicit DALI_INTERNAL AtlasGlyphManager(Internal::AtlasGlyphManager *impl);