From 605d24316bd452ef57241c5de742905c25ebd86a Mon Sep 17 00:00:00 2001 From: Yunji Park Date: Tue, 9 Apr 2013 17:15:48 +0900 Subject: [PATCH] Add apis to know first/last line is displayed Change-Id: I936dedd666078de328fd0dbff9f707c73521462b --- src/graphics/inc/FGrp_TextTextObject.h | 4 ++++ src/graphics/text/FGrp_TextTextObject.cpp | 40 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/graphics/inc/FGrp_TextTextObject.h b/src/graphics/inc/FGrp_TextTextObject.h index 06263f8..2589792 100644 --- a/src/graphics/inc/FGrp_TextTextObject.h +++ b/src/graphics/inc/FGrp_TextTextObject.h @@ -129,6 +129,10 @@ public: int GetLineIndexAtPositionY(float y) const; + bool IsDisplayedFirstLine(void) const; + + bool IsDisplayedLastLine(void) const; + int GetFirstTextIndexAt(int lineIndex) const; int GetTextLengthAt(int lineIndex) const; diff --git a/src/graphics/text/FGrp_TextTextObject.cpp b/src/graphics/text/FGrp_TextTextObject.cpp index bf1f21f..9eb8861 100644 --- a/src/graphics/text/FGrp_TextTextObject.cpp +++ b/src/graphics/text/FGrp_TextTextObject.cpp @@ -954,6 +954,46 @@ TextObject::IsDisplayedAtEndPosition(void) const return isDisplayedAtEndPosition; } +bool +TextObject::IsDisplayedFirstLine(void) const +{ + IF_NOT_CONSTRUCTED(return false); + + float firstDisplayPositionY = __pTextColumn->GetFirstDisplayPositionYF(); + float firstLineHeight = GetLineHeightAtF(0); + + bool isDisplayedFirstLine = false; + if(firstDisplayPositionY == 0.0f || firstDisplayPositionY < firstLineHeight) + { + isDisplayedFirstLine = true; + } + + return isDisplayedFirstLine; +} + +bool +TextObject::IsDisplayedLastLine(void) const +{ + IF_NOT_CONSTRUCTED(return false); + + float totalHeight = 0.0f; + float firstDisplayPositionY = 0.0f; + bool isDisplayedLastLine = false; + + firstDisplayPositionY = __pTextColumn->GetFirstDisplayPositionYF(); + totalHeight = __pTextColumn->GetTotalHeightF(); + + float lastLineHeight = GetLineHeightAtF(GetTotalLineCount()-1); + + float remainingHeight = totalHeight - firstDisplayPositionY; + if (remainingHeight - __rect.height < lastLineHeight || remainingHeight <= __rect.height) + { + isDisplayedLastLine = true; + } + + return isDisplayedLastLine; +} + result TextObject::SetAction(TextObjectActionType action) { -- 2.7.4