20 #ifndef INCLUDED_VCL_PRINT_HXX
21 #define INCLUDED_VCL_PRINT_HXX
23 #include <config_options.h>
24 #include <rtl/ustring.hxx>
34 #include <com/sun/star/beans/PropertyValue.hpp>
35 #include <com/sun/star/uno/Sequence.hxx>
36 #include <com/sun/star/view/PrintableState.hpp>
39 #include <unordered_map>
50 class PrinterController;
78 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) PrinterOptions
82 bool mbReduceTransparency;
84 bool mbReduceGradients;
86 sal_uInt16 mnReducedGradientStepCount;
89 sal_uInt16 mnReducedBitmapResolution;
90 bool mbReducedBitmapsIncludeTransparency;
91 bool mbConvertToGreyscales;
92 bool mbPDFAsStandardPrintJobFormat;
97 bool IsReduceTransparency()
const {
return mbReduceTransparency; }
98 void SetReduceTransparency(
bool bSet ) { mbReduceTransparency = bSet; }
102 { meReducedTransparencyMode = eMode; }
104 bool IsReduceGradients()
const {
return mbReduceGradients; }
105 void SetReduceGradients(
bool bSet ) { mbReduceGradients = bSet; }
108 void SetReducedGradientMode(
PrinterGradientMode eMode ) { meReducedGradientsMode = eMode; }
110 sal_uInt16 GetReducedGradientStepCount()
const {
return mnReducedGradientStepCount; }
111 void SetReducedGradientStepCount( sal_uInt16 nStepCount )
112 { mnReducedGradientStepCount = nStepCount; }
114 bool IsReduceBitmaps()
const {
return mbReduceBitmaps; }
115 void SetReduceBitmaps(
bool bSet ) { mbReduceBitmaps = bSet; }
118 void SetReducedBitmapMode(
PrinterBitmapMode eMode ) { meReducedBitmapMode = eMode; }
120 sal_uInt16 GetReducedBitmapResolution()
const {
return mnReducedBitmapResolution; }
121 void SetReducedBitmapResolution( sal_uInt16 nResolution )
122 { mnReducedBitmapResolution = nResolution; }
124 bool IsReducedBitmapIncludesTransparency()
const {
return mbReducedBitmapsIncludeTransparency; }
125 void SetReducedBitmapIncludesTransparency(
bool bSet )
126 { mbReducedBitmapsIncludeTransparency = bSet; }
128 bool IsConvertToGreyscales()
const {
return mbConvertToGreyscales; }
129 void SetConvertToGreyscales(
bool bSet ) { mbConvertToGreyscales = bSet; }
131 bool IsPDFAsStandardPrintJobFormat()
const {
return mbPDFAsStandardPrintJobFormat; }
132 void SetPDFAsStandardPrintJobFormat(
bool bSet ) { mbPDFAsStandardPrintJobFormat = bSet; }
139 void ReadFromConfig(
bool bFile );
145 friend class ::OutputDevice;
177 ImplGetQueueInfo(
const OUString& rPrinterName,
const OUString* pDriver );
182 VCL_DLLPRIVATE bool StartJob(
const OUString& rJobName, std::shared_ptr<vcl::PrinterController>
const & );
187 SAL_DLLPRIVATE
void ImplPrintTransparent (
189 const Point& rDestPt,
const Size& rDestSize,
190 const Point& rSrcPtPixel,
const Size& rSrcSizePixel );
202 virtual bool AcquireGraphics()
const override;
203 virtual void ReleaseGraphics(
bool bRelease =
true )
override;
204 virtual void ImplReleaseFonts()
override;
207 virtual bool UsePolyPolygonForComplexGradient()
override;
208 virtual void ClipAndDrawGradientMetafile (
const Gradient &rGradient,
217 virtual Bitmap GetBitmap(
const Point& rSrcPt,
const Size& rSize )
const override;
218 virtual Size GetButtonBorderSize()
override;
229 css::awt::DeviceInfo GetDeviceInfo()
const override;
232 virtual void DrawDeviceMask(
const Bitmap& rMask,
const Color& rMaskColor,
233 const Point& rDestPt,
const Size& rDestSize,
234 const Point& rSrcPtPixel,
const Size& rSrcSizePixel)
override;
237 const BitmapEx& rBitmapEx,
double fAlpha = 1.0)
override;
242 void DrawDeviceBitmap(
const Point& rDestPt,
const Size& rDestSize,
243 const Point& rSrcPtPixel,
const Size& rSrcSizePixel,
247 sal_uInt16 nTransparencePercent )
override;
249 virtual void SetFontOrientation(
LogicalFontInstance*
const pFontInstance )
const override;
255 Printer(
const OUString& rPrinterName );
257 virtual void dispose()
override;
261 static const std::vector< OUString >&
263 static const QueueInfo* GetQueueInfo(
const OUString& rPrinterName,
bool bStatusUpdate );
264 static OUString GetDefaultPrinterName();
266 const OUString&
GetName()
const {
return maPrinterName; }
270 bool IsValid()
const {
return !IsDisplayPrinter(); }
275 bool SetJobSetup(
const JobSetup& rSetup );
280 bool SetPrinterProps(
const Printer* pPrinter );
292 VCL_DLLPRIVATE void SetPrinterOptions(
const PrinterOptions& rOptions );
300 bool SetPaperBin( sal_uInt16 nPaperBin );
301 sal_uInt16 GetPaperBin()
const;
303 bool SetPaperSizeUser(
const Size& rSize );
304 Paper GetPaper()
const;
305 static OUString GetPaperName(
Paper ePaper );
308 int GetPaperInfoCount()
const;
311 const PaperInfo& GetPaperInfo(
int nPaper )
const;
312 sal_uInt16 GetPaperBinCount()
const;
313 OUString GetPaperBinName( sal_uInt16 nPaperBin )
const;
315 bool GetPrinterSettingsPreferred()
const;
316 void SetPrinterSettingsPreferred(
bool bPaperSizeFromSetup );
320 Size GetPaperSize(
int nPaper );
324 void SetCopyCount( sal_uInt16 nCopy,
bool bCollate );
338 static void updatePrinters();
344 static void PrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController,
347 virtual bool HasMirroredGraphics()
const override;
349 virtual void DrawOutDev(
const Point& rDestPt,
const Size& rDestSize,
350 const Point& rSrcPt,
const Size& rSrcSize )
override;
352 virtual void DrawOutDev(
const Point& rDestPt,
const Size& rDestSize,
353 const Point& rSrcPt,
const Size& rSrcSize,
356 virtual void CopyArea(
const Point& rDestPt,
const Point& rSrcPt,
357 const Size& rSrcSize,
bool bWindowInvalidate =
false )
override;
363 static bool PreparePrintJob( std::shared_ptr<vcl::PrinterController> i_pController,
365 static bool ExecutePrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController);
366 static void FinishPrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController );
372 static void VCL_DLLPRIVATE ImplPrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController,
378 class ImplPrinterControllerData;
387 std::unique_ptr<ImplPrinterControllerData>
408 : nRows( 1 ), nColumns( 1 ), aPaperSize( 21000, 29700 )
409 , nLeftMargin( 0 ), nTopMargin( 0 )
410 , nRightMargin( 0 ), nBottomMargin( 0 )
411 , nHorizontalSpacing( 0 ), nVerticalSpacing( 0 )
412 , bDrawBorder( false )
425 bool i_bFullPaper =
false)
426 : aSize( i_rSize ), bFullPaper( i_bFullPaper ) {}
441 css::uno::Sequence< css::beans::PropertyValue >
442 getJobProperties(
const css::uno::Sequence< css::beans::PropertyValue >& i_rMergeList )
const;
445 css::beans::PropertyValue*
getValue(
const OUString& i_rPropertyName );
446 const css::beans::PropertyValue*
getValue(
const OUString& i_rPropertyName )
const;
452 bool getBoolProperty(
const OUString& i_rPropertyName,
bool i_bFallback )
const;
458 sal_Int32 getIntProperty(
const OUString& i_rPropertyName, sal_Int32 i_nFallback )
const;
461 void setValue(
const OUString& i_rPropertyName,
const css::uno::Any& i_rValue );
462 void setValue(
const css::beans::PropertyValue& i_rValue );
465 const css::uno::Sequence< css::beans::PropertyValue >&
466 getUIOptions()
const;
472 void setUIOptions(
const css::uno::Sequence< css::beans::PropertyValue >& );
475 bool isUIOptionEnabled(
const OUString& rPropName )
const;
476 bool isUIChoiceEnabled(
const OUString& rPropName, sal_Int32 nChoice )
const;
485 OUString makeEnabled(
const OUString& rPropName );
503 virtual css::uno::Sequence< css::beans::PropertyValue >
504 getPageParameters(
int i_nPage )
const = 0;
506 virtual void printPage(
int i_nPage)
const = 0;
509 virtual void jobStarted();
510 virtual void jobFinished( css::view::PrintableState );
512 css::view::PrintableState getJobState()
const;
516 bool isShowDialogs()
const;
517 bool isDirectPrint()
const;
523 int getFilteredPageCount()
const;
525 bool i_bMayUseCache =
false );
526 PageSize getFilteredPageFile(
int i_nFilteredPage,
GDIMetaFile& o_rMtf,
527 bool i_bMayUseCache =
false );
528 void printFilteredPage(
int i_nPage );
530 void createProgressDialog();
531 bool isProgressCanceled()
const;
534 getMultipage()
const;
535 void setLastPage(
bool i_bLastPage );
537 VCL_DLLPRIVATE void setPapersizeFromSetup(
bool i_bPapersizeFromSetup );
543 void setPrinterModified(
bool i_bPapersizeFromSetup );
544 bool getPrinterModified()
const;
547 void setJobState( css::view::PrintableState );
552 getPageParametersProtected(
int i_nPage )
const;
561 std::unordered_map< OUString, css::uno::Any >
563 std::vector< css::beans::PropertyValue >
575 bool processProperties(
const css::uno::Sequence< css::beans::PropertyValue >& i_rNewProp );
582 void appendPrintUIOptions( css::uno::Sequence< css::beans::PropertyValue >& io_rProps )
const;
585 css::uno::Any
getValue(
const OUString& i_rPropertyName )
const;
587 bool getBoolValue(
const OUString& i_rPropertyName,
bool i_bDefault )
const;
589 bool getBoolValue(
const char* i_pPropName,
bool i_bDefault =
false )
const
590 {
return getBoolValue( OUString::createFromAscii( i_pPropName ), i_bDefault ); }
592 sal_Int64 getIntValue(
const OUString& i_rPropertyName, sal_Int64 i_nDefault )
const;
594 sal_Int64
getIntValue(
const char* i_pPropName, sal_Int64 i_nDefault )
const
595 {
return getIntValue( OUString::createFromAscii( i_pPropName ), i_nDefault ); }
597 OUString getStringValue(
const OUString& i_rPropertyName )
const;
600 {
return getStringValue( OUString::createFromAscii( i_pPropName ) ); }
611 std::vector< css::beans::PropertyValue >
615 sal_Int32 i_nDependsOnEntry = -1,
bool i_bAttachToDependency =
false)
616 : maDependsOnName( i_rDependsOnName )
617 , mnDependsOnEntry( i_nDependsOnEntry )
618 , mbAttachToDependency( i_bAttachToDependency )
619 , mbInternalOnly( false )
620 , mbEnabled( true ) {}
630 static css::uno::Any setUIControlOpt(
const css::uno::Sequence< OUString >& i_rIDs,
const OUString& i_rTitle,
631 const css::uno::Sequence< OUString >& i_rHelpId,
const OUString& i_rType,
632 const css::beans::PropertyValue* i_pValue =
nullptr,
633 const UIControlOptions& i_rControlOptions = UIControlOptions());
636 static css::uno::Any setGroupControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
637 const OUString& i_rHelpId);
640 static css::uno::Any setSubgroupControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
641 const UIControlOptions& i_rControlOptions = UIControlOptions());
644 static css::uno::Any setBoolControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
645 const OUString& i_rProperty,
bool i_bValue,
646 const UIControlOptions& i_rControlOptions = UIControlOptions());
649 static css::uno::Any setChoiceListControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
650 const css::uno::Sequence< OUString >& i_rHelpId,
const OUString& i_rProperty,
651 const css::uno::Sequence< OUString >& i_rChoices, sal_Int32 i_nValue,
652 const css::uno::Sequence< sal_Bool >& i_rDisabledChoices = css::uno::Sequence< sal_Bool >(),
653 const UIControlOptions& i_rControlOptions = UIControlOptions());
656 static css::uno::Any setChoiceRadiosControlOpt(
const css::uno::Sequence< OUString >& i_rIDs,
657 const OUString& i_rTitle,
const css::uno::Sequence< OUString >& i_rHelpId,
658 const OUString& i_rProperty,
const css::uno::Sequence< OUString >& i_rChoices,
660 const css::uno::Sequence< sal_Bool >& i_rDisabledChoices = css::uno::Sequence< sal_Bool >(),
661 const UIControlOptions& i_rControlOptions = UIControlOptions());
667 static css::uno::Any setRangeControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
668 const OUString& i_rProperty, sal_Int32 i_nValue, sal_Int32 i_nMinValue,
669 sal_Int32 i_nMaxValue,
const UIControlOptions& i_rControlOptions);
675 static css::uno::Any setEditControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
676 const OUString& i_rProperty,
const OUString& i_rValue,
677 const UIControlOptions& i_rControlOptions);
683 #endif // INCLUDED_VCL_PRINT_HXX
RegError REGISTRY_CALLTYPE setValue(RegKeyHandle hKey, rtl_uString *keyName, RegValueType valueType, RegValue pData, sal_uInt32 valueSize)
bool getBoolValue(const char *i_pPropName, bool i_bDefault=false) const
const PrinterOptions & GetPrinterOptions() const
bool CanSubsampleBitmap() const override
const OUString & GetName() const
SalGraphics * mpJobGraphics
bool IsDisplayPrinter() const
virtual Color GetMonochromeButtonColor() override
std::unordered_map< OUString, css::uno::Any > m_aPropertyMap
tools::Long nHorizontalSpacing
PageSize(const Size &i_rSize=Size(21000, 29700), bool i_bFullPaper=false)
virtual void SetMetafileMapMode(const MapMode &rNewMapMode, bool) override
tools::Long nVerticalSpacing
std::vector< css::beans::PropertyValue > m_aUIProperties
const JobSetup & GetJobSetup() const
void SetSinglePrintJobs(bool bSinglePrintJobs)
sal_Int64 getIntValue(const char *i_pPropName, sal_Int64 i_nDefault) const
constexpr::Color COL_LIGHTGRAY(0xC0, 0xC0, 0xC0)
std::unique_ptr< SalPrinter > mpPrinter
OUString getStringValue(const char *i_pPropName) const
Point GetPageOffset() const
bool IsDefPrinter() const
std::vector< css::beans::PropertyValue > maAddProps
sal_uInt16 mnPageQueueSize
void DrawBorder(tools::Rectangle aBorderRect) override
const Size & GetPaperSizePixel() const
tools::Long nBottomMargin
std::unique_ptr< ImplPrinterControllerData > mpImplData
VclPtr< VirtualDevice > mpDisplayDev
sal_Int32 mnDependsOnEntry
const OUString & GetDriverName() const
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
bool mbAttachToDependency
UIControlOptions(const OUString &i_rDependsOnName=OUString(), sal_Int32 i_nDependsOnEntry=-1, bool i_bAttachToDependency=false)
sal_uInt16 GetCopyCount() const
css::beans::Optional< css::uno::Any > getValue(std::u16string_view id)
Color GetReadableFontColor(const Color &, const Color &) const override
PrinterOptionsHelper()
Create without ui properties.
sal_Int32 getPageCount(const uno::Reference< frame::XModel > &xModel)
const Point & GetPageOffsetPixel() const
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_WHITE
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
SalInfoPrinter * mpInfoPrinter
void SetLineColor(const css::uno::Reference< css::beans::XPropertySet > &xGridProperties, sal_Int32 nColor)
bool bFullPaper
Full paper, not only imageable area is printed.
bool IsCollateCopy() const
bool IsScreenComp() const override
std::unique_ptr< PrinterOptions > mpPrinterOptions
Color GetBackgroundColor() const override
bool IsSinglePrintJobs() const
Size GetPaperSize() const