///////////////////////////////////////////////////////////////////////////////
// Name: wx/private/print.h
// Purpose: Private printing-related helpers.
// Author: Vadim Zeitlin
// Created: 2024-12-28
// Copyright: (c) 2024 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PRIVATE_PRINT_H_
#define _WX_PRIVATE_PRINT_H_
// ----------------------------------------------------------------------------
// RAII helper ensuring OnEndPrinting() is called on scope exit
// ----------------------------------------------------------------------------
class wxPrintingGuard
{
public:
explicit wxPrintingGuard(wxPrintout *printout)
: m_printout(printout)
{
m_printout->OnBeginPrinting();
}
~wxPrintingGuard()
{
m_printout->OnEndPrinting();
}
private:
wxPrintout * const m_printout;
wxDECLARE_NO_COPY_CLASS(wxPrintingGuard);
};
// ----------------------------------------------------------------------------
// Another helper ensuring EndPage() is called on scope exit
// ----------------------------------------------------------------------------
class wxPrintingPageGuard
{
public:
explicit wxPrintingPageGuard(wxDC& dc)
: m_dc(dc)
{
m_dc.StartPage();
}
~wxPrintingPageGuard()
{
m_dc.EndPage();
}
private:
wxDC& m_dc;
wxDECLARE_NO_COPY_CLASS(wxPrintingPageGuard);
};
#endif // _WX_PRIVATE_PRINT_H_