25 #include <com/sun/star/awt/XTopWindow.hpp>
26 #include <com/sun/star/awt/Rectangle.hpp>
27 #include <com/sun/star/lang/NoSupportException.hpp>
28 #include <osl/mutex.hxx>
35 using namespace ::
cairo;
41 const uno::Reference< uno::XComponentContext >& ) :
42 maArguments(aArguments)
48 SAL_INFO(
"canvas.cairo",
"CairoSpriteCanvas created " <<
this);
62 maArguments[0].getValueTypeClass() == uno::TypeClass_HYPER &&
63 maArguments[3].getValueTypeClass() == uno::TypeClass_INTERFACE,
64 "CairoSpriteCanvas::initialize: wrong number of arguments, or wrong types" );
69 bool bIsFullscreen(
false );
72 uno::Reference< awt::XWindow > xParentWindow;
77 throw lang::NoSupportException(
78 "Parent window not VCL window, or canvas out-of-process!",
nullptr);
82 "CairoSpriteCanvas::SpriteCanvas: No Cairo capability");
85 const ::basegfx::B2ISize aSize( aPixelSize.Width(),
86 aPixelSize.Height() );
89 maDeviceHelper.init( *pParentWindow,
94 setWindow(uno::Reference<awt::XWindow2>(xParentWindow, uno::UNO_QUERY_THROW));
105 ::osl::MutexGuard aGuard(
m_aMutex );
123 ::osl::MutexGuard aGuard(
m_aMutex );
136 return "com.sun.star.rendering.SpriteCanvas.Cairo";
147 return "com.sun.star.comp.rendering.Canvas.Cairo";
156 return maDeviceHelper.getBufferSurface();
161 return maDeviceHelper.createSurface( rSize, aContent );
170 return maDeviceHelper.createSurface( aData, rSize );
184 return maDeviceHelper.getOutputDevice();
189 return maDeviceHelper.getBufferSurface();
194 return maDeviceHelper.getWindowSurface();
199 return maDeviceHelper.getSizePixel();
212 maDeviceHelper.flush();
216 const rendering::ViewState& viewState,
217 const rendering::RenderState& renderState )
219 return maCanvasHelper.repaint( pSurface, viewState, renderState );
223 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
225 css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any>
const& args)
virtual void disposeThis() override
Dispose all internal references.
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_rendering_SpriteCanvas_Cairo_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &args)
bool SupportsCairo() const
const ::basegfx::B2ISize & getSizePixel() const
SpriteCanvas(const css::uno::Sequence< css::uno::Any > &aArguments, const css::uno::Reference< css::uno::XComponentContext > &rxContext)
Size GetSizePixel() const
virtual OUString SAL_CALL getImplementationName() override
virtual ::cairo::SurfaceSharedPtr createSurface(const ::basegfx::B2ISize &rSize, int aContent) override
virtual ::cairo::SurfaceSharedPtr getSurface() override
static vcl::Window * GetWindow(const css::uno::Reference< css::awt::XWindow > &rxWindow)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
virtual sal_Bool SAL_CALL supportsService(const OUString &sServiceName) override
virtual ::cairo::SurfaceSharedPtr changeSurface() override
SpriteRedrawManager maRedrawManager
css::uno::Sequence< css::uno::Any > maArguments
virtual sal_Bool SAL_CALL showBuffer(sal_Bool bUpdateAll) override
constexpr OUStringLiteral aData
std::shared_ptr< Surface > SurfaceSharedPtr
virtual OUString SAL_CALL getServiceName() override
virtual bool repaint(const ::cairo::SurfaceSharedPtr &pSurface, const css::rendering::ViewState &viewState, const css::rendering::RenderState &renderState) override
virtual sal_Bool SAL_CALL switchBuffer(sal_Bool bUpdateAll) override
bool GetSystemData(BitmapSystemData &rData) const
virtual void disposeThis() override
CanvasHelper maCanvasHelper
#define ENSURE_ARG_OR_THROW(c, m)
::cairo::SurfaceSharedPtr const & getWindowSurface() const
Product of this component's factory.
#define SAL_INFO(area, stream)
void setSizePixel(const ::basegfx::B2ISize &rSize)
::OutputDevice const * GetOutDev() const
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Size GetOutputSizePixel() const
virtual OutputDevice * getOutputDevice() override
::basegfx::B2DRectangle maBounds
bool m_bDetectedRangeSegmentation false
::cairo::SurfaceSharedPtr const & getBufferSurface() const
virtual sal_Bool SAL_CALL updateScreen(sal_Bool bUpdateAll) override