From: sunghyun kim Date: Tue, 23 Jan 2024 09:45:18 +0000 (+0900) Subject: [Tizen] Apply CornerRadius for webview X-Git-Tag: accepted/tizen/7.0/unified/20240124.164050~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e623c57ea71c760dc3d3a25bffc8a9cd1e634863;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [Tizen] Apply CornerRadius for webview Change-Id: Ief9a97223cc3070633b87cf037d19b27ded32b41 --- 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 0269e58..dff4083 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -103,7 +104,9 @@ WebView::WebView(const std::string& locale, const std::string& timezoneId) mMouseEventsEnabled(true), mKeyEventsEnabled(true), mScreenshotCapturedCallback{nullptr}, - mFrameRenderedCallback{nullptr} + mFrameRenderedCallback{nullptr}, + mCornerRadius(Vector4::ZERO), + mCornerRadiusPolicy(1.0f) { mWebEngine = Dali::WebEngine::New(); @@ -124,7 +127,9 @@ WebView::WebView(uint32_t argc, char** argv) mMouseEventsEnabled(true), mKeyEventsEnabled(true), mScreenshotCapturedCallback{nullptr}, - mFrameRenderedCallback{nullptr} + mFrameRenderedCallback{nullptr}, + mCornerRadius(Vector4::ZERO), + mCornerRadiusPolicy(1.0f) { mWebEngine = Dali::WebEngine::New(); @@ -226,6 +231,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)); @@ -811,8 +831,28 @@ void WebView::OnFrameRendered() 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()); - mVisual = Toolkit::VisualFactory::Get().CreateVisual({{Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE}, {Toolkit::ImageVisual::Property::URL, nativeImageUrl.GetUrl()}}); + 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) { DevelControl::RegisterVisual(*this, Toolkit::WebView::Property::URL, mVisual); 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 646a047..e6c8092 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -751,6 +751,8 @@ private: Dali::Toolkit::WebView::WebViewScreenshotCapturedCallback mScreenshotCapturedCallback; Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback; + Vector4 mCornerRadius; /// < Corner radius + float mCornerRadiusPolicy; /// < Corner radius policy static std::unordered_map> mPluginWebViewMap; };