From: Woochan Lee Date: Wed, 7 Aug 2024 05:16:04 +0000 (+0900) Subject: [Tizen] Apply CornerRadius for webview X-Git-Tag: accepted/tizen/unified/20240809.055208~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8ec3ed83bf36a2b7e183d49cd3aa2f7447b3682f;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [Tizen] Apply CornerRadius for webview This reverts commit 39336cfb454b685633c8c77b6737604760831cc4. --- 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 c9abb06..233e1d0 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -165,7 +166,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(); @@ -189,7 +192,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(); @@ -293,6 +298,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)); @@ -886,8 +906,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 c9d25b9..aded781 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -797,6 +797,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