X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-base-data-impl.cpp;h=654bb89a34aebe3724b398ae9d10f5a251ccd010;hb=cbae9964e389c6a5cafa3a284f281609a0ed2e60;hp=bb3f8d03dfa5ad02a7a781118e4c176a5ccbbac9;hpb=f2039d47f9bed8104575da80a2ecf0bb6e37ff8d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp index bb3f8d0..654bb89 100644 --- a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -119,16 +119,23 @@ Internal::Visual::Base::Impl::Impl(FittingMode fittingMode, Toolkit::Visual::Typ mTransform(), mMixColor(Color::WHITE), mControlSize(Vector2::ZERO), - mCornerRadius(0.0f), + mBorderlineWidth(0.0f), + mBorderlineColor(Color::BLACK), + mBorderlineOffset(0.0f), + mCornerRadius(Vector4::ZERO), mCornerRadiusPolicy(1.0f), mDepthIndex(0.0f), mMixColorIndex(Property::INVALID_INDEX), + mBorderlineWidthIndex(Property::INVALID_INDEX), + mBorderlineColorIndex(Property::INVALID_INDEX), + mBorderlineOffsetIndex(Property::INVALID_INDEX), mCornerRadiusIndex(Property::INVALID_INDEX), mFittingMode(fittingMode), mFlags(0), mResourceStatus(Toolkit::Visual::ResourceStatus::PREPARING), mType(type), - mNeedCornerRadius(false) + mAlwaysUsingBorderline(false), + mAlwaysUsingCornerRadius(false) { } @@ -378,12 +385,32 @@ void Internal::Visual::Base::Impl::Transform::GetPropertyMap(Property::Map& map) void Internal::Visual::Base::Impl::Transform::RegisterUniforms(Dali::Renderer renderer, Toolkit::Direction::Type direction) { - mSizeIndex = renderer.RegisterProperty(SIZE, mSize); - mOffsetIndex = renderer.RegisterProperty(OFFSET, direction == Toolkit::Direction::LEFT_TO_RIGHT ? mOffset : mOffset * Vector2(-1.0f, 1.0f)); - renderer.RegisterProperty(OFFSET_SIZE_MODE, mOffsetSizeMode); - renderer.RegisterProperty(ORIGIN, PointToVector2(mOrigin, direction) - Vector2(0.5, 0.5)); - renderer.RegisterProperty(ANCHOR_POINT, Vector2(0.5, 0.5) - PointToVector2(mAnchorPoint, direction)); - renderer.RegisterProperty(EXTRA_SIZE, mExtraSize); + // have to test if one of these properties has already been registered on the renderer; as some visuals use more than one renderer, so can't use stored property index. + // + if(Property::INVALID_INDEX == renderer.GetPropertyIndex(SIZE)) + { + mSizeIndex = renderer.RegisterUniqueProperty(SIZE, mSize); + mOffsetIndex = renderer.RegisterUniqueProperty(OFFSET, direction == Toolkit::Direction::LEFT_TO_RIGHT ? mOffset : mOffset * Vector2(-1.0f, 1.0f)); + renderer.RegisterUniqueProperty(OFFSET_SIZE_MODE, mOffsetSizeMode); + renderer.RegisterUniqueProperty(ORIGIN, PointToVector2(mOrigin, direction) - Vector2(0.5, 0.5)); + renderer.RegisterUniqueProperty(ANCHOR_POINT, Vector2(0.5, 0.5) - PointToVector2(mAnchorPoint, direction)); + renderer.RegisterUniqueProperty(EXTRA_SIZE, mExtraSize); + } + else + { + SetUniforms(renderer, direction); + } +} + +void Internal::Visual::Base::Impl::Transform::SetUniforms(Dali::Renderer renderer, Toolkit::Direction::Type direction) +{ + renderer.SetProperty(mSizeIndex, mSize); + renderer.SetProperty(mOffsetIndex, direction == Toolkit::Direction::LEFT_TO_RIGHT ? mOffset : mOffset * Vector2(-1.0f, 1.0f)); + + renderer.SetProperty(renderer.GetPropertyIndex(OFFSET_SIZE_MODE), mOffsetSizeMode); + renderer.SetProperty(renderer.GetPropertyIndex(ORIGIN), PointToVector2(mOrigin, direction) - Vector2(0.5, 0.5)); + renderer.SetProperty(renderer.GetPropertyIndex(ANCHOR_POINT), Vector2(0.5, 0.5) - PointToVector2(mAnchorPoint, direction)); + renderer.SetProperty(renderer.GetPropertyIndex(EXTRA_SIZE), mExtraSize); } Vector2 Internal::Visual::Base::Impl::Transform::GetVisualSize(const Vector2& controlSize)