From: Eunki, Hong Date: Fri, 1 Nov 2024 08:50:16 +0000 (+0900) Subject: Open GetPropertyObject() API of Visual::Base as devel-api X-Git-Tag: dali_2.3.50~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa6e54b17b3eff2fdf0e9d79cb35976c845618d0;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Open GetPropertyObject() API of Visual::Base as devel-api Let we open Visual::Base::GetPropertyObject API, so let we allow to call that API out of dali-toolkit without DevelControl::GetVisualProperty() Change-Id: I6af6e2ea4b2b05442cadc25743f9fe99408e8197 Signed-off-by: Eunki, Hong --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index e8e7d8d7b0..652e007653 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -5082,6 +5082,109 @@ int UtcDaliVisualGetType(void) END_TEST; } +int UtcDaliVisualGetPropertyObject01(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliVisualGetPropertyObject01 GetProperty by index"); + + VisualFactory factory = VisualFactory::Get(); + + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::IMAGE; + properties.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); + Visual::Base visual = factory.CreateVisual(properties); + + DALI_TEST_CHECK(visual.GetType() == Visual::IMAGE); + + auto propertyTest = [](Visual::Base visual, Property::Key key, bool expect) { + { + std::ostringstream oss; + oss << "Test for key[" << key << "]"; + tet_printf("%s\n", oss.str().c_str()); + } + + Dali::Property property = visual.GetPropertyObject(std::move(key)); + tet_printf("Result object[%p] index of property[%d]\n", property.object.GetObjectPtr(), property.propertyIndex); + + if(expect) + { + DALI_TEST_CHECK(property.object && property.propertyIndex != Property::INVALID_INDEX); + } + else + { + DALI_TEST_CHECK(!property.object && property.propertyIndex == Property::INVALID_INDEX); + } + }; + + // Test to get valid objects + propertyTest(visual, Visual::Property::MIX_COLOR, true); + propertyTest(visual, Visual::Property::OPACITY, true); + propertyTest(visual, Visual::Transform::Property::SIZE, true); + propertyTest(visual, DevelVisual::Property::CORNER_RADIUS, true); + propertyTest(visual, DevelVisual::Property::BORDERLINE_WIDTH, true); + propertyTest(visual, ImageVisual::Property::PIXEL_AREA, true); + + // Test to get invalid objects + propertyTest(visual, ImageVisual::Property::URL, false); + propertyTest(visual, DevelImageVisual::Property::FAST_TRACK_UPLOADING, false); + propertyTest(visual, Visual::Property::TYPE, false); + propertyTest(visual, Visual::Property::TRANSFORM, false); + propertyTest(visual, Actor::Property::POSITION, false); + + END_TEST; +} + +int UtcDaliVisualGetPropertyObject02(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliVisualGetPropertyObject02 GetProperty by string"); + + VisualFactory factory = VisualFactory::Get(); + + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::ANIMATED_IMAGE; + properties.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); + Visual::Base visual = factory.CreateVisual(properties); + + DALI_TEST_CHECK(visual.GetType() == Visual::IMAGE); + + auto propertyTest = [](Visual::Base visual, Property::Key key, bool expect) { + { + std::ostringstream oss; + oss << "Test for key[" << key << "]"; + tet_printf("%s\n", oss.str().c_str()); + } + + Dali::Property property = visual.GetPropertyObject(std::move(key)); + tet_printf("Result object[%p] index of property[%d]\n", property.object.GetObjectPtr(), property.propertyIndex); + + if(expect) + { + DALI_TEST_CHECK(property.object && property.propertyIndex != Property::INVALID_INDEX); + } + else + { + DALI_TEST_CHECK(!property.object && property.propertyIndex == Property::INVALID_INDEX); + } + }; + + // Test to get valid objects + propertyTest(visual, "mixColor", true); + propertyTest(visual, "opacity", true); + propertyTest(visual, "size", true); + propertyTest(visual, "cornerRadius", true); + propertyTest(visual, "borderlineOffset", true); + propertyTest(visual, "pixelArea", true); + + // Test to get invalid objects + propertyTest(visual, "url", false); + propertyTest(visual, "type", false); + propertyTest(visual, "transform", false); + propertyTest(visual, "", false); + + END_TEST; +} + int UtcDaliVisualGetVisualProperty01(void) { ToolkitTestApplication application; diff --git a/dali-toolkit/devel-api/visual-factory/visual-base.cpp b/dali-toolkit/devel-api/visual-factory/visual-base.cpp index 9a21f90fa6..46d412c94b 100644 --- a/dali-toolkit/devel-api/visual-factory/visual-base.cpp +++ b/dali-toolkit/devel-api/visual-factory/visual-base.cpp @@ -109,6 +109,11 @@ Visual::Type Visual::Base::GetType() const return GetImplementation(*this).GetType(); } +Dali::Property Visual::Base::GetPropertyObject(Dali::Property::Key key) +{ + return GetImplementation(*this).GetPropertyObject(std::move(key)); +} + } // namespace Toolkit } // namespace Dali diff --git a/dali-toolkit/devel-api/visual-factory/visual-base.h b/dali-toolkit/devel-api/visual-factory/visual-base.h index 0025e65c36..35f7fa81fc 100644 --- a/dali-toolkit/devel-api/visual-factory/visual-base.h +++ b/dali-toolkit/devel-api/visual-factory/visual-base.h @@ -217,6 +217,14 @@ public: */ Visual::Type GetType() const; + /** + * @brief Retrieve the property object associated with the property key. + * + * @param[in] key The Property key of the visual. + * @return The Property object + */ + Dali::Property GetPropertyObject(Dali::Property::Key key); + public: // Not intended for application developers explicit DALI_INTERNAL Base(Internal::Visual::Base* impl); }; diff --git a/dali-toolkit/internal/controls/control/control-visual-data.cpp b/dali-toolkit/internal/controls/control/control-visual-data.cpp index 5eaa4c4256..98c7740e24 100644 --- a/dali-toolkit/internal/controls/control/control-visual-data.cpp +++ b/dali-toolkit/internal/controls/control/control-visual-data.cpp @@ -831,8 +831,7 @@ Dali::Property Control::Impl::VisualData::GetVisualProperty(Dali::Property::Inde Toolkit::Visual::Base visual = GetVisualByIndex(mVisuals, index); if(visual) { - Internal::Visual::Base& visualImpl = Toolkit::GetImplementation(visual); - return visualImpl.GetPropertyObject(std::move(visualPropertyKey)); + return visual.GetPropertyObject(std::move(visualPropertyKey)); } Handle handle;