-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
+/*
+ * Copyright (c) 2014 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
// FILE HEADER
#include "relayout-utilities.h"
// If the exceed policy is ellipsize at the end, negative offsets are not wanted.
// In that case, it will align the line to the left and/or top, and ellipsize the end.
- const bool ellipsizeAlignToLeft = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEndOriginal ) || ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd );
- const bool ellipsizeAlignToTop = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd );
+ const bool ellipsizeAlignToLeft = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEndOriginal ) ||
+ ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd ) ||
+ ( layoutParameters.mExceedPolicy == TextView::SplitEllipsizeEnd );
+ const bool ellipsizeAlignToTop = ( layoutParameters.mExceedPolicy == TextView::EllipsizeEnd ) ||
+ ( layoutParameters.mExceedPolicy == TextView::SplitEllipsizeEnd );
RelayoutParameters relayoutParameters;
break;
}
+ case TextView::SplitEllipsizeEnd:
case TextView::EllipsizeEnd:
{
// Ellipsizes the text if it doesn't fit in the width and fully fits in the text-view's height.
}
else
{
- if( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy )
+ if( ( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy ) ||
+ ( TextView::SplitEllipsizeEnd == layoutParameters.mExceedPolicy ))
{
if( !ellipsizeParameters.mIsLineHeightFullyVisible )
{
characterLayoutInfo.mGradientColor = Vector4::ZERO;
characterLayoutInfo.mStartPoint = Vector2::ZERO;
characterLayoutInfo.mEndPoint = Vector2::ZERO;
+ characterLayoutInfo.mColorAlpha = characterLayoutInfo.mStyledText.mStyle.GetTextColor().a;
} // end characters
} // end words
} // end group of words
// If the next line exceeds the text-view height then it's going to be invisible and current line needs to be ellipsized.
ellipsizeParameters.mIsLineHeightFullyVisible = true;
ellipsizeParameters.mIsNextLineFullyVisibleHeight = true;
- if( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy )
+ if( ( TextView::EllipsizeEnd == layoutParameters.mExceedPolicy ) ||
+ ( TextView::SplitEllipsizeEnd == layoutParameters.mExceedPolicy ) )
{
// Need to check if there is lines which doesn't fit in the height.
break;
}
case TextView::EllipsizeEndOriginal:
+ case TextView::SplitEllipsizeEnd:
case TextView::EllipsizeEnd: // Fall through
{
// Set first all characters to visible as UpdateVisibilityForEllipsize() doesn't traverse all of them.
++textUnderlineStatus.mLineGlobalIndex; // If it's a new line, point to the next one.
}
- if( characterGroup.mStyledText.mStyle.GetUnderline() )
+ if( characterGroup.mStyledText.mStyle.IsUnderlineEnabled() )
{
if( !textUnderlineStatus.mCurrentUnderlineStatus || // Current character is underlined but previous one it wasn't.
isNewLine ) // Current character is underlined and is the first of current laid-out line.
}
}
- if( characterGroup.mStyledText.mStyle.GetUnderline() )
+ if( characterGroup.mStyledText.mStyle.IsUnderlineEnabled() )
{
if( textUnderlineStatus.mCurrentUnderlineStatus )
{
textUnderlineStatus.mCurrentUnderlineStatus = true;
- // Sets the underline's thickness.
- characterGroup.mStyledText.mStyle.SetUnderlineThickness( underlineInfo.mMaxThickness );
-
// Before setting the position it needs to be adjusted to match the base line.
const float bearingOffset = ( currentLineHeight - currentLineAscender ) - ( characterGroup.mSize.height - characterGroup.mAscender );
const float positionOffset = ( underlineInfo.mMaxHeight - characterGroup.mSize.height ) - bearingOffset;
- // Sets the underline's position.
- characterGroup.mStyledText.mStyle.SetUnderlinePosition( underlineInfo.mPosition - positionOffset );
+ // Sets the underline's parameters.
+ characterGroup.mStyledText.mStyle.SetUnderline( true, underlineInfo.mMaxThickness, underlineInfo.mPosition - positionOffset );
// Mark the group of characters to be set the new style into the text-actor.
characterGroup.mSetStyle = true;