-
-#ifndef __DALI_TOOLKIT_ATLAS_GLYPH_MANAGER_IMPL_H__
-#define __DALI_TOOLKIT_ATLAS_GLYPH_MANAGER_IMPL_H__
+#ifndef DALI_TOOLKIT_ATLAS_GLYPH_MANAGER_IMPL_H
+#define DALI_TOOLKIT_ATLAS_GLYPH_MANAGER_IMPL_H
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
{
public:
- struct GlyphRecord
+ struct GlyphRecordEntry
{
- Text::FontId mFontId;
Text::GlyphIndex mIndex;
uint32_t mImageId;
+ int32_t mCount;
+ uint16_t mOutlineWidth;
+ bool isItalic:1;
+ bool isBold:1;
};
- AtlasGlyphManager();
-
- virtual ~AtlasGlyphManager();
+ struct FontGlyphRecord
+ {
+ Text::FontId mFontId;
+ Vector< GlyphRecordEntry > mGlyphRecords;
+ };
-/**
- * Create a new AtlasGlyphManager
+ /**
+ * @brief Constructor
*/
- static AtlasGlyphManagerPtr New();
+ AtlasGlyphManager();
/**
* @copydoc Toolkit::AtlasGlyphManager::Add
*/
void Add( const Text::GlyphInfo& glyph,
- const BufferImage& bitmap,
+ const Toolkit::AtlasGlyphManager::GlyphStyle& style,
+ const PixelData& bitmap,
Dali::Toolkit::AtlasManager::AtlasSlot& slot );
/**
*/
void GenerateMeshData( uint32_t imageId,
const Vector2& position,
- MeshData& meshData );
+ Toolkit::AtlasManager::Mesh2D& mesh );
/**
- * @copydoc Toolkit::AtlasGlyphManager::StitchMesh
+ * @copydoc Toolkit::AtlasGlyphManager::IsCached
*/
- void StitchMesh( MeshData& first,
- const MeshData& second );
+ bool IsCached( Text::FontId fontId,
+ Text::GlyphIndex index,
+ const Toolkit::AtlasGlyphManager::GlyphStyle& style,
+ Dali::Toolkit::AtlasManager::AtlasSlot& slot );
/**
- * @copydoc Toolkit::AtlasGlyphManager::Cached
+ * @copydoc Toolkit::AtlasGlyphManager::GetAtlasSize
*/
- void Cached( Text::FontId fontId,
- Text::GlyphIndex index,
- Dali::Toolkit::AtlasManager::AtlasSlot& slot );
+ Vector2 GetAtlasSize( uint32_t atlasId );
/**
- * @copydoc Toolkit::AtlasGlyphManager::SetAtlasSize
+ * @copydoc Toolkit::AtlasGlyphManager::SetNewAtlasSize
*/
- void SetAtlasSize( const Vector2& size,
- const Vector2& blockSize );
+ void SetNewAtlasSize( uint32_t width, uint32_t height, uint32_t blockWidth, uint32_t blockHeight );
/**
- * @copydoc Toolkit::AtlasGlyphManager::Remove
+ * @copydoc Toolkit::AtlasGlyphManager::GetPixelFormat
*/
- void Remove( uint32_t imageId );
+ Pixel::Format GetPixelFormat( uint32_t atlasId );
/**
- * @copydoc toolkit::AtlasGlyphManager::GetPixelFormat
+ * @copydoc toolkit::AtlasGlyphManager::AdjustReferenceCount
*/
- Pixel::Format GetPixelFormat( uint32_t atlasId );
+ void AdjustReferenceCount( Text::FontId fontId, Text::GlyphIndex index, const Toolkit::AtlasGlyphManager::GlyphStyle& style, int32_t delta );
+
+ /**
+ * @copydoc Toolkit::AtlasGlyphManager::GetTextures
+ */
+ TextureSet GetTextures( uint32_t atlasId ) const;
+
+ /**
+ * @copydoc Toolkit::AtlasGlyphManager::GetMetrics
+ */
+ const Toolkit::AtlasGlyphManager::Metrics& GetMetrics();
+
+protected:
+
+ /**
+ * A reference counted object may only be deleted by calling Unreference()
+ */
+ virtual ~AtlasGlyphManager();
private:
- Dali::Toolkit::AtlasManager mAtlasManager;
- Vector< GlyphRecord > mGlyphRecords;
- uint32_t mCount;
+ Dali::Toolkit::AtlasManager mAtlasManager; ///> Atlas Manager created by GlyphManager
+ std::vector< FontGlyphRecord > mFontGlyphRecords;
+ Toolkit::AtlasGlyphManager::Metrics mMetrics; ///> Metrics to pass back on GlyphManager status
+ Sampler mSampler;
};
} // namespace Internal
} // namespace Dali
-
- #endif // __DALI_TOOLKIT_ATLAS_GLYPH_MANAGER_IMPL_H__
\ No newline at end of file
+#endif // DALI_TOOLKIT_ATLAS_GLYPH_MANAGER_IMPL_H