#include <dali/public-api/object/base-object.h>
// INTERNAL INCLUDES
-#include <dali/public-api/text-abstraction/shaping.h>
+#include <dali/public-api/common/dali-vector.h>
+#include <dali/devel-api/text-abstraction/shaping.h>
namespace Dali
{
-namespace Internal
+namespace TextAbstraction
{
-namespace TextAbstraction
+namespace Internal
{
/**
* Implementation of the Shaping
*/
-
-class Shaping : public Dali::BaseObject
+class Shaping : public BaseObject
{
public:
/**
* @copydoc Dali::Shaping::Get()
*/
- static Dali::TextAbstraction::Shaping Get();
+ static TextAbstraction::Shaping Get();
+
+ /**
+ * @copydoc Dali::Shaping::Shape()
+ */
+ Length Shape( const Character* const text,
+ Length numberOfCharacters,
+ FontId fontId,
+ Script script );
+
+ /**
+ * @copydoc Dali::Shaping::GetGlyphs()
+ */
+ void GetGlyphs( GlyphInfo* glyphInfo,
+ CharacterIndex* glyphToCharacterMap );
+
+private:
+
+ /**
+ * Helper for lazy initialization.
+ */
+ void CreatePlugin();
private:
Shaping( const Shaping& );
// Undefined assignment constructor.
- Shaping& operator=( Shaping& );
+ Shaping& operator=( const Shaping& );
- void* mPlugin; ///< TODO replace this with shaping plugin
+ struct Plugin;
+ Plugin* mPlugin;
}; // class Shaping
+} // namespace Internal
} // namespace TextAbstraction
-} // namespace Internal
-
-inline static Internal::TextAbstraction::Shaping& GetImplementation(Dali::TextAbstraction::Shaping& shaping)
+inline static TextAbstraction::Internal::Shaping& GetImplementation( TextAbstraction::Shaping& shaping )
{
DALI_ASSERT_ALWAYS( shaping && "shaping handle is empty" );
BaseObject& handle = shaping.GetBaseObject();
- return static_cast<Internal::TextAbstraction::Shaping&>(handle);
+ return static_cast<TextAbstraction::Internal::Shaping&>( handle );
}
-inline static const Internal::TextAbstraction::Shaping& GetImplementation(const Dali::TextAbstraction::Shaping& shaping)
+inline static const TextAbstraction::Internal::Shaping& GetImplementation( const TextAbstraction::Shaping& shaping )
{
DALI_ASSERT_ALWAYS( shaping && "shaping handle is empty" );
const BaseObject& handle = shaping.GetBaseObject();
- return static_cast<const Internal::TextAbstraction::Shaping&>(handle);
+ return static_cast<const TextAbstraction::Internal::Shaping&>( handle );
}
} // namespace Dali