include/vcl/window.hxx | 5 +++++ sd/source/ui/slideshow/slideshowviewimpl.cxx | 1 + sd/source/ui/slideshow/slideshowviewimpl.hxx | 3 +++ vcl/source/window/window.cxx | 16 ++++++++++++++++ 4 files changed, 25 insertions(+)
New commits: commit 6daaca4380123ae3542f474090c3a482adb6edc6 Author: Shardul Vikram Singh <shardulvi...@gmail.com> AuthorDate: Mon Jul 14 00:07:44 2025 +0530 Commit: Shardul Vikram Singh <shardulvi...@gmail.com> CommitDate: Mon Jul 14 00:07:44 2025 +0530 Add access to vcl_cairocanvas::SpriteCanvas to vcl::Window and sd::SlideShowView diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index c8f4491caa6a..7cca00775eba 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -85,6 +85,10 @@ namespace vcl { struct ControlLayoutData; } +namespace vcl_cairocanvas { + class SpriteCanvas; +} + namespace svt { class PopupWindowControllerImpl; } namespace weld { class Window; } @@ -551,6 +555,7 @@ public: void DecModalCount(); SAL_DLLPRIVATE static void ImplCalcSymbolRect( tools::Rectangle& rRect ); + std::shared_ptr<vcl_cairocanvas::SpriteCanvas> GetSpriteCanvas(); protected: diff --git a/sd/source/ui/slideshow/slideshowviewimpl.cxx b/sd/source/ui/slideshow/slideshowviewimpl.cxx index 7db8594e4e08..3e16b165fac9 100644 --- a/sd/source/ui/slideshow/slideshowviewimpl.cxx +++ b/sd/source/ui/slideshow/slideshowviewimpl.cxx @@ -101,6 +101,7 @@ SlideShowView::SlideShowView( ShowWindow& rOutputWindow, SlideshowImpl* pSlideShow, bool bFullScreen ) : mpCanvas( ::cppcanvas::VCLFactory::createSpriteCanvas( rOutputWindow ) ), + mpSpriteCanvas( rOutputWindow.GetSpriteCanvas() ), mxWindow( VCLUnoHelper::GetInterface( &rOutputWindow ), uno::UNO_SET_THROW ), mxWindowPeer( mxWindow, uno::UNO_QUERY_THROW ), mpSlideShow( pSlideShow ), diff --git a/sd/source/ui/slideshow/slideshowviewimpl.hxx b/sd/source/ui/slideshow/slideshowviewimpl.hxx index cfce68636acd..0e9c0a601123 100644 --- a/sd/source/ui/slideshow/slideshowviewimpl.hxx +++ b/sd/source/ui/slideshow/slideshowviewimpl.hxx @@ -28,11 +28,13 @@ #include <cppcanvas/spritecanvas.hxx> #include <cppuhelper/weakref.hxx> +#include <memory> #include <slideshow.hxx> namespace com::sun::star::awt { class XPointer; } namespace com::sun::star::awt { class XWindow; } namespace com::sun::star::awt { class XWindowPeer; } +namespace vcl_cairocanvas { class SpriteCanvas; } class SdDrawDocument; namespace sd @@ -157,6 +159,7 @@ private: void disposingImpl( std::unique_lock<std::mutex>& ); ::cppcanvas::SpriteCanvasSharedPtr mpCanvas; + std::shared_ptr<vcl_cairocanvas::SpriteCanvas> mpSpriteCanvas; css::uno::Reference< css::awt::XWindow > mxWindow; css::uno::Reference< css::awt::XWindowPeer > mxWindowPeer; css::uno::Reference< css::awt::XPointer > mxPointer; diff --git a/vcl/source/canvas/cairo/cairo_cachedbitmap.hxx b/vcl/canvas_inc/cairo_cachedbitmap.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_cachedbitmap.hxx rename to vcl/canvas_inc/cairo_cachedbitmap.hxx diff --git a/vcl/source/canvas/cairo/cairo_canvas.hxx b/vcl/canvas_inc/cairo_canvas.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_canvas.hxx rename to vcl/canvas_inc/cairo_canvas.hxx diff --git a/vcl/source/canvas/cairo/cairo_canvasbitmap.hxx b/vcl/canvas_inc/cairo_canvasbitmap.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_canvasbitmap.hxx rename to vcl/canvas_inc/cairo_canvasbitmap.hxx diff --git a/vcl/source/canvas/cairo/cairo_canvascustomsprite.hxx b/vcl/canvas_inc/cairo_canvascustomsprite.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_canvascustomsprite.hxx rename to vcl/canvas_inc/cairo_canvascustomsprite.hxx diff --git a/vcl/source/canvas/cairo/cairo_canvasfont.hxx b/vcl/canvas_inc/cairo_canvasfont.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_canvasfont.hxx rename to vcl/canvas_inc/cairo_canvasfont.hxx diff --git a/vcl/source/canvas/cairo/cairo_canvashelper.hxx b/vcl/canvas_inc/cairo_canvashelper.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_canvashelper.hxx rename to vcl/canvas_inc/cairo_canvashelper.hxx diff --git a/vcl/source/canvas/cairo/cairo_devicehelper.hxx b/vcl/canvas_inc/cairo_devicehelper.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_devicehelper.hxx rename to vcl/canvas_inc/cairo_devicehelper.hxx diff --git a/vcl/source/canvas/cairo/cairo_repainttarget.hxx b/vcl/canvas_inc/cairo_repainttarget.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_repainttarget.hxx rename to vcl/canvas_inc/cairo_repainttarget.hxx diff --git a/vcl/source/canvas/cairo/cairo_sprite.hxx b/vcl/canvas_inc/cairo_sprite.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_sprite.hxx rename to vcl/canvas_inc/cairo_sprite.hxx diff --git a/vcl/source/canvas/cairo/cairo_spritecanvas.hxx b/vcl/canvas_inc/cairo_spritecanvas.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_spritecanvas.hxx rename to vcl/canvas_inc/cairo_spritecanvas.hxx diff --git a/vcl/source/canvas/cairo/cairo_spritecanvashelper.hxx b/vcl/canvas_inc/cairo_spritecanvashelper.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_spritecanvashelper.hxx rename to vcl/canvas_inc/cairo_spritecanvashelper.hxx diff --git a/vcl/source/canvas/cairo/cairo_spritedevicehelper.hxx b/vcl/canvas_inc/cairo_spritedevicehelper.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_spritedevicehelper.hxx rename to vcl/canvas_inc/cairo_spritedevicehelper.hxx diff --git a/vcl/source/canvas/cairo/cairo_spritehelper.hxx b/vcl/canvas_inc/cairo_spritehelper.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_spritehelper.hxx rename to vcl/canvas_inc/cairo_spritehelper.hxx diff --git a/vcl/source/canvas/cairo/cairo_surfaceprovider.hxx b/vcl/canvas_inc/cairo_surfaceprovider.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_surfaceprovider.hxx rename to vcl/canvas_inc/cairo_surfaceprovider.hxx diff --git a/vcl/source/canvas/cairo/cairo_textlayout.hxx b/vcl/canvas_inc/cairo_textlayout.hxx similarity index 100% rename from vcl/source/canvas/cairo/cairo_textlayout.hxx rename to vcl/canvas_inc/cairo_textlayout.hxx diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index a11bfddff75e..631b65fa6f0b 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -17,6 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <memory> #include <sal/config.h> #include <rtl/strbuf.hxx> @@ -60,6 +61,7 @@ #include <helpwin.hxx> #include <dndlistenercontainer.hxx> #include <dndeventdispatcher.hxx> +#include <cairo_spritecanvas.hxx> #include <com/sun/star/accessibility/AccessibleRelation.hpp> #include <com/sun/star/accessibility/XAccessible.hpp> @@ -574,6 +576,20 @@ Window::~Window() return mpWindowImpl ? mpWindowImpl->mxOutDev.get() : nullptr; } +std::shared_ptr<vcl_cairocanvas::SpriteCanvas> Window::GetSpriteCanvas() +{ + Sequence< Any > aArg{ + Any(reinterpret_cast<sal_Int64>(GetOutDev())), + Any(css::awt::Rectangle( 0, 0, 0, 0 )), + Any(false), + Any(Reference< css::awt::XWindow >()), + GetOutDev()->GetSystemGfxDataAny() + }; + const Reference< XComponentContext >& xContext = comphelper::getProcessComponentContext(); + auto pSpriteCanvas = std::make_shared<vcl_cairocanvas::SpriteCanvas>(aArg, xContext); + return pSpriteCanvas; +} + Color WindowOutputDevice::GetBackgroundColor() const { return mxOwnerWindow->GetDisplayBackground().GetColor();