X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Ftext%2Fvisual-model.h;h=0cfa4b52df085a23089ebd9c9aee77e0ffd08e41;hp=d47293da2b0fa1fc6f41f8b582e479ad0733b47e;hb=cbf1db0d70086e78736daaf1a4f0dc3e832378e3;hpb=2dd044328238768ae8b27a223cb7d0f5cda53513 diff --git a/dali-toolkit/public-api/text/visual-model.h b/dali-toolkit/public-api/text/visual-model.h index d47293d..0cfa4b5 100644 --- a/dali-toolkit/public-api/text/visual-model.h +++ b/dali-toolkit/public-api/text/visual-model.h @@ -34,6 +34,7 @@ namespace Toolkit namespace Text { +struct LineRun; class VisualModel; typedef IntrusivePtr VisualModelPtr; @@ -85,10 +86,19 @@ public: * @param[in] glyphIndex Index to the first glyph. * @param[in] numberOfGlyphs Number of glyphs to be copied. */ - void GetGlyphs( GlyphIndex glyphIndex, - GlyphInfo* glyphs, + void GetGlyphs( GlyphInfo* glyphs, + GlyphIndex glyphIndex, Length numberOfGlyphs ) const; + /** + * Retrieves a glyph. + * + * @param[in] glyphIndex Index to a glyph. + * + * @return A glyph. + */ + const GlyphInfo& GetGlyphInfo( GlyphIndex glyphIndex ) const; + // Character <--> Glyph conversion /** @@ -119,6 +129,43 @@ public: */ GlyphIndex GetGlyphIndex( CharacterIndex characterIndex ) const; + /** + * Retrieves the whole or part of the character to glyph conversion map. + * + * The size of the buffer needs to be big enough to copy the @p numberOfCharacters. + * + * @param[out] characterToGlyphMap Pointer to a buffer where the conversion map is copied. + * @param[in] characterIndex Index to the first character. + * @param[in] numberOfCharacters The number of characters. + */ + void GetCharacterToGlyphMap( GlyphIndex* characterToGlyphMap, + CharacterIndex characterIndex, + Length numberOfCharacters ) const; + + /** + * Retrieves for each glyph the number of characters the glyph represents. + * + * @param[out] charactersPerGlyph Pointer to a buffer where the number of characters for each glyph are copied. + * @param[in] glyphIndex Index to the first glyph. + * @param[in] numberOfGlyphs The number of glyphs. + */ + void GetCharactersPerGlyphMap( Length* charactersPerGlyph, + GlyphIndex glyphIndex, + Length numberOfGlyphs ) const; + + /** + * Retrieves the whole or part of the glyph to character conversion map. + * + * The size of the buffer needs to be big enough to copy the @p numberOfGlyphs. + * + * @param[out] glyphToCharacter Pointer to a buffer where the conversion map is copied. + * @param[in] glyphIndex Index to the first glyph. + * @param[in] numberOfGlyphs The number of glyphs. + */ + void GetGlyphToCharacterMap( CharacterIndex* glyphToCharacter, + GlyphIndex glyphIndex, + Length numberOfGlyphs ) const; + // Position interface /** @@ -134,14 +181,111 @@ public: * @brief Retrieves the glyph positions. * * @pre The size of the @p positions buffer needs to be big enough to copy the @p numberOfGlyphs positions. - * @param[in] glyphIndex Index to the first glyph position. * @param[out] glyphPositions Pointer to a buffer where the glyph positions are copied. + * @param[in] glyphIndex Index to the first glyph position. * @param[in] numberOfGlyphs The number of positions to be copied. */ - void GetGlyphPositions( GlyphIndex glyphIndex, - Vector2* glyphPositions, + void GetGlyphPositions( Vector2* glyphPositions, + GlyphIndex glyphIndex, Length numberOfGlyphs ) const; + /** + * Retrieve the glyph's position of the given glyph. + * + * @param[in] glyphIndex Index to the glyph. + * + * @return The glyph's position. + */ + const Vector2& GetGlyphPosition( GlyphIndex glyphIndex ) const; + + // Line interface. + + /** + * Sets the lines. + * + * Replaces any lines previously set. + * + * Every line is an item run containing the index to the first glyph of the line and the number of glyphs. + * + * @param[in] lines Pointer to a buffer containing all the line runs. + * @param[in] numberOfLines The number of lines in the buffer. + */ + void SetLines( const LineRun* const lines, + Length numberOfLines ); + + /** + * Retrieves the number of lines of the whole text. + * + * @return The number of lines. + */ + Length GetNumberOfLines() const; + + /** + * Retrieves lines. + * + * The size of the @p lines buffer needs to be big enough to copy the @p numberOfLines. + * + * @param[out] lines Pointer to a buffer where the lines are copied. + * @param[in] lineIndex Index to the first line. + * @param[in] numberOfLines Number of lines to be copied. + */ + void GetLines( LineRun* lines, + LineIndex lineIndex, + Length numberOfLines ) const; + + /** + * Retrieves the number of lines where the given range of glyphs is laid out. + * + * @param[in] glyphIndex Index to the first glyph. + * @param[in] numberOfGlyphs The number of glyph. + * + * @return The number of lines. + */ + TextAbstraction::Length GetNumberOfLines( GlyphIndex glyphIndex, + Length numberOfGlyphs ) const; + /** + * Retrieves the lines where the given range of glyphs is laid out. + * + * The size of the @p lines buffer needs to be big enough to copy the @p numberOfLines. + * + * @param[out] lines Pointer to a buffer where the lines are copied. + * @param[in] glyphIndex Index to the first glyphs of the range. + * @param[in] numberOfGlyphs Number of glyphs in the range. + */ + void GetLinesOfGlyphRange( LineRun* lines, + GlyphIndex glyphIndex, + Length numberOfGlyphs ) const; + + // Size interface + + /** + * Sets the natural size. + * + * @param[in] size The text's natural size. + */ + void SetNaturalSize( const Vector2& size ); + + /** + * Retrieves the natural size. + * + * @return The text's natural size. + */ + const Vector2& GetNaturalSize() const; + + /** + * Sets the text's actual size after it has been laid out. + * + * @param[in] size The text's size. + */ + void SetActualSize( const Vector2& size ); + + /** + * Retrieves the text's actual size after it has been laid out. + * + * @return The text's size. + */ + const Vector2& GetActualSize() const; + protected: /**