projects
/
platform
/
core
/
uifw
/
dali-toolkit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
support match align for system language direciton
[platform/core/uifw/dali-toolkit.git]
/
dali-toolkit
/
internal
/
text
/
layouts
/
layout-engine.cpp
diff --git
a/dali-toolkit/internal/text/layouts/layout-engine.cpp
b/dali-toolkit/internal/text/layouts/layout-engine.cpp
old mode 100644
(file)
new mode 100755
(executable)
index
061707a
..
0c3d9df
--- a/
dali-toolkit/internal/text/layouts/layout-engine.cpp
+++ b/
dali-toolkit/internal/text/layouts/layout-engine.cpp
@@
-1104,7
+1104,9
@@
struct Engine::Impl
Length numberOfCharacters,
Text::HorizontalAlignment::Type horizontalAlignment,
Vector<LineRun>& lines,
Length numberOfCharacters,
Text::HorizontalAlignment::Type horizontalAlignment,
Vector<LineRun>& lines,
- float& alignmentOffset )
+ float& alignmentOffset,
+ Dali::LayoutDirection::Type layoutDirection,
+ bool matchSystemLanguageDirection )
{
const CharacterIndex lastCharacterPlusOne = startIndex + numberOfCharacters;
{
const CharacterIndex lastCharacterPlusOne = startIndex + numberOfCharacters;
@@
-1132,7
+1134,9
@@
struct Engine::Impl
// the box width, line length, and the paragraph's direction.
CalculateHorizontalAlignment( size.width,
horizontalAlignment,
// the box width, line length, and the paragraph's direction.
CalculateHorizontalAlignment( size.width,
horizontalAlignment,
- line );
+ line,
+ layoutDirection,
+ matchSystemLanguageDirection );
// Updates the alignment offset.
alignmentOffset = std::min( alignmentOffset, line.alignmentOffset );
// Updates the alignment offset.
alignmentOffset = std::min( alignmentOffset, line.alignmentOffset );
@@
-1141,16
+1145,24
@@
struct Engine::Impl
void CalculateHorizontalAlignment( float boxWidth,
HorizontalAlignment::Type horizontalAlignment,
void CalculateHorizontalAlignment( float boxWidth,
HorizontalAlignment::Type horizontalAlignment,
- LineRun& line )
+ LineRun& line,
+ Dali::LayoutDirection::Type layoutDirection,
+ bool matchSystemLanguageDirection )
{
line.alignmentOffset = 0.f;
{
line.alignmentOffset = 0.f;
-
const
bool isRTL = RTL == line.direction;
+ bool isRTL = RTL == line.direction;
float lineLength = line.width;
float lineLength = line.width;
-
HorizontalAlignment::Type alignment = horizontalAlignment;
HorizontalAlignment::Type alignment = horizontalAlignment;
+
+ // match align for system language direction
+ if( matchSystemLanguageDirection )
+ {
+ isRTL = layoutDirection == LayoutDirection::RIGHT_TO_LEFT;
+ }
+
+ // Swap the alignment type if the line is right to left.
if( isRTL )
{
if( isRTL )
{
- // Swap the alignment type if the line is right to left.
switch( alignment )
{
case HorizontalAlignment::BEGIN:
switch( alignment )
{
case HorizontalAlignment::BEGIN:
@@
-1169,6
+1181,7
@@
struct Engine::Impl
break;
}
}
break;
}
}
+
}
// Calculate the horizontal line offset.
}
// Calculate the horizontal line offset.
@@
-1300,14
+1313,18
@@
void Engine::Align( const Size& size,
Length numberOfCharacters,
Text::HorizontalAlignment::Type horizontalAlignment,
Vector<LineRun>& lines,
Length numberOfCharacters,
Text::HorizontalAlignment::Type horizontalAlignment,
Vector<LineRun>& lines,
- float& alignmentOffset )
+ float& alignmentOffset,
+ Dali::LayoutDirection::Type layoutDirection,
+ bool matchSystemLanguageDirection )
{
mImpl->Align( size,
startIndex,
numberOfCharacters,
horizontalAlignment,
lines,
{
mImpl->Align( size,
startIndex,
numberOfCharacters,
horizontalAlignment,
lines,
- alignmentOffset );
+ alignmentOffset,
+ layoutDirection,
+ matchSystemLanguageDirection );
}
void Engine::SetDefaultLineSpacing( float lineSpacing )
}
void Engine::SetDefaultLineSpacing( float lineSpacing )