From: dongsug.song Date: Wed, 31 Jul 2024 00:28:56 +0000 (+0900) Subject: [Tizen] Apply CornerRadius for webview X-Git-Tag: accepted/tizen/8.0/unified/20240809.180200~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cc88549f8a99f06b83c24d02625d85bdb8a4c1a1;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [Tizen] Apply CornerRadius for webview This reverts commit 24bd50fcf6154dee3b54a62fc2cac49efb311dfd. Change-Id: I9848f5d4ed5ec97285769a75d430c4d556667e95 --- diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp index 533a039a50..0893ca6675 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include @@ -163,7 +164,9 @@ WebView::WebView(const std::string& locale, const std::string& timezoneId) mKeyEventsEnabled(true), mVisualChangeRequired(false), mScreenshotCapturedCallback{nullptr}, - mFrameRenderedCallback{nullptr} + mFrameRenderedCallback{nullptr}, + mCornerRadius(Vector4::ZERO), + mCornerRadiusPolicy(1.0f) { mWebEngine = Dali::WebEngine::New(); @@ -187,7 +190,9 @@ WebView::WebView(uint32_t argc, char** argv) mKeyEventsEnabled(true), mVisualChangeRequired(false), mScreenshotCapturedCallback{nullptr}, - mFrameRenderedCallback{nullptr} + mFrameRenderedCallback{nullptr}, + mCornerRadius(Vector4::ZERO), + mCornerRadiusPolicy(1.0f) { mWebEngine = Dali::WebEngine::New(); @@ -292,6 +297,21 @@ void WebView::OnInitialize() mSizeUpdateNotification.NotifySignal().Connect(this, &WebView::OnDisplayAreaUpdated); mScaleUpdateNotification.NotifySignal().Connect(this, &WebView::OnDisplayAreaUpdated); + // Create WebVisual for WebView + Property::Map propertyMap; + propertyMap.Insert(Dali::Toolkit::Visual::Property::TYPE, Dali::Toolkit::Visual::COLOR); + propertyMap.Insert(Dali::Toolkit::Visual::Property::MIX_COLOR, Color::TRANSPARENT); + Toolkit::Visual::Base webVisual = Toolkit::VisualFactory::Get().CreateVisual(propertyMap); + if(webVisual) + { + Dali::Toolkit::DevelControl::RegisterVisual(*this, Toolkit::WebView::Property::URL, webVisual); + } + else + { + DALI_LOG_ERROR("fail to create webVisual for CornerRadius"); + Dali::Toolkit::DevelControl::UnregisterVisual(*this, Toolkit::WebView::Property::URL); + } + if(mWebEngine) { mWebEngine.RegisterFrameRenderedCallback(std::bind(&WebView::OnFrameRendered, this)); @@ -893,8 +913,33 @@ void WebView::OnFrameRendered() mFrameRenderedCallback(); } - // Make sure that mVisual is created only if required. - if(mVisualChangeRequired || !mVisual) + // Make sure that mVisual is created only once. + if (mVisual) + return; + + // Get webVisual for checking corner radius + Toolkit::Visual::Base webVisual = Dali::Toolkit::DevelControl::GetVisual(*this, Toolkit::WebView::Property::URL); + Property::Map webMap; + webVisual.CreatePropertyMap(webMap); + Property::Value* cornerRadiusValue = webMap.Find(Dali::Toolkit::DevelVisual::Property::CORNER_RADIUS); + if(cornerRadiusValue) + { + mCornerRadius = cornerRadiusValue->Get(); + } + Property::Value* cornerRadiusValuePolicy = webMap.Find(Dali::Toolkit::DevelVisual::Property::CORNER_RADIUS_POLICY); + if(cornerRadiusValuePolicy) + { + mCornerRadiusPolicy = cornerRadiusValuePolicy->Get(); + } + + Dali::Toolkit::ImageUrl nativeImageUrl = Dali::Toolkit::Image::GenerateUrl(mWebEngine.GetNativeImageSource()); + Property::Map propertyMap; + propertyMap.Insert(Dali::Toolkit::Visual::Property::TYPE, Dali::Toolkit::Visual::IMAGE); + propertyMap.Insert(Dali::Toolkit::ImageVisual::Property::URL, nativeImageUrl.GetUrl()); + propertyMap.Insert(Dali::Toolkit::DevelVisual::Property::CORNER_RADIUS, mCornerRadius); + propertyMap.Insert(Dali::Toolkit::DevelVisual::Property::CORNER_RADIUS_POLICY, mCornerRadiusPolicy); + mVisual = Toolkit::VisualFactory::Get().CreateVisual(propertyMap); + if(mVisual) { // Reset flag mVisualChangeRequired = false; diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.h b/dali-toolkit/internal/controls/web-view/web-view-impl.h index 1a842e540d..156c723496 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -802,6 +802,10 @@ private: Dali::Toolkit::WebView::WebViewScreenshotCapturedCallback mScreenshotCapturedCallback; Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback; + + Vector4 mCornerRadius; /// < Corner radius + float mCornerRadiusPolicy; /// < Corner radius policy + static std::unordered_map> mPluginWebViewMap; }; } // namespace Internal