21#include <osl/diagnose.h>
41 std::vector<VclPtr<vcl::Window> > m_aCandidates;
42 std::set<VclPtr<vcl::Window> > m_aDeletedCandidates;
54 if (rEvent.GetId() == VclEventId::ObjectDying)
56 m_aDeletedCandidates.insert(pWindow);
60CandidateMgr::~CandidateMgr()
64 if (m_aDeletedCandidates.find(pCandidate) != m_aDeletedCandidates.end())
66 pCandidate->RemoveEventListener(
LINK(
this, CandidateMgr, WindowEventListener));
75 CandidateMgr aManager;
76 aManager.PaintTransparentChildren(rWindow, rPixelRect);
90 if (aCandidatePosSizePixel.Overlaps(rPixelRect))
92 m_aCandidates.emplace_back(pCandidate);
96 pCandidate = pCandidate->
GetWindow( GetWindowType::Next );
99 for (
const auto& rpCandidate : m_aCandidates)
101 pCandidate = rpCandidate.get();
102 if (m_aDeletedCandidates.find(pCandidate) != m_aDeletedCandidates.end())
107 pCandidate->
Invalidate(InvalidateFlags::NoTransparent|InvalidateFlags::Children);
109 if (m_aDeletedCandidates.find(pCandidate) != m_aDeletedCandidates.end())
116: mpOutputDevice(&rOriginal),
161 for(
const auto& rRect : aRectangles)
164 const Point aTopLeft(rRect.TopLeft());
165 const Size aSize(rRect.GetSize());
188 xOverlayManager->setStripeColorA(aColA);
189 xOverlayManager->setStripeColorB(aColB);
219 OSL_ENSURE(xOverlayManager.is(),
"SdrPaintWindow::SdrPaintWindow: Could not allocate an overlayManager (!)");
231 return xOverlayManager;
242: mpOutputDevice(&rOut),
244 mrPaintView(rNewPaintView),
245 mbTemporaryTarget(false),
246 mbOutputToWindow(
OUTDEV_WINDOW == mpOutputDevice->GetOutDevType()),
283 const bool bPrepareBufferedOutput(
289 if(bPrepareBufferedOutput)
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
OutDevType GetOutDevType() const
virtual vcl::Window * GetOwnerWindow() const
bool IsBufferedOverlayAllowed() const
bool IsBufferedOutputAllowed() const
virtual rtl::Reference< sdr::overlay::OverlayManager > CreateOverlayManager(OutputDevice &rDevice) const
static void InitOverlayManager(rtl::Reference< sdr::overlay::OverlayManager > xOverlayManager)
VclPtr< OutputDevice > mpOutputDevice
rtl::Reference< sdr::overlay::OverlayManager > mxOverlayManager
void DrawOverlay(const vcl::Region &rRegion)
rtl::Reference< sdr::overlay::OverlayManager > const & GetOverlayManager() const
OutputDevice & GetOutputDevice() const
void SetRedrawRegion(const vcl::Region &rNew)
void OutputPreRenderDevice(const vcl::Region &rExpandedRegion)
std::unique_ptr< SdrPreRenderDevice > mpPreRenderDevice
void PreparePreRenderDevice()
tools::Rectangle GetVisibleArea() const
bool OutputToRecordingMetaFile() const
vcl::Region maRedrawRegion
SdrPaintWindow(SdrPaintView &rNewPaintView, OutputDevice &rOut, vcl::Window *pWindow=nullptr)
bool OutputToPrinter() const
void impCreateOverlayManager()
SdrPaintView & mrPaintView
void PreparePreRenderDevice()
VclPtr< OutputDevice > mpOutputDevice
void OutputPreRenderDevice(const vcl::Region &rExpandedRegion)
SdrPreRenderDevice(OutputDevice &rOriginal)
VclPtr< VirtualDevice > mpPreRenderDevice
const Color & GetHighlightColor() const
static rtl::Reference< OverlayManager > create(OutputDevice &rOutputDevice)
static rtl::Reference< OverlayManager > create(OutputDevice &rOutputDevice)
void GetRegionRectangles(RectangleVector &rTarget) const
bool IsPaintTransparent() const
bool SupportsDoubleBuffering() const
vcl::Window * GetWindow(GetWindowType nType) const
bool IsChildTransparentModeEnabled() const
virtual Point GetPosPixel() const
void AddEventListener(const Link< VclWindowEvent &, void > &rEventListener)
virtual Size GetSizePixel() const
void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
#define LINK(Instance, Class, Member)
sal_uInt16 GetStripeLength()
void Create(SvxOrientationItem &rItem, SvStream &rStrm, sal_uInt16)
std::vector< tools::Rectangle > RectangleVector
void PaintTransparentChildren(vcl::Window const &rWindow, tools::Rectangle const &rPixelRect)
paint the transparent children of rWin that overlap rPixelRect (for example, transparent form control...
IMPL_LINK(CandidateMgr, WindowEventListener, VclWindowEvent &, rEvent, void)
VclPtr< vcl::Window > mpWindow