20 #ifndef INCLUDED_VCL_PRINT_HXX
21 #define INCLUDED_VCL_PRINT_HXX
26 #include <rtl/ustring.hxx>
39 #include <com/sun/star/beans/PropertyValue.hpp>
40 #include <com/sun/star/uno/Sequence.hxx>
41 #include <com/sun/star/view/PrintableState.hpp>
44 #include <unordered_map>
55 class PrinterController;
66 friend class ::OutputDevice;
98 ImplGetQueueInfo(
const OUString& rPrinterName,
const OUString* pDriver );
103 VCL_DLLPRIVATE bool StartJob(
const OUString& rJobName, std::shared_ptr<vcl::PrinterController>
const & );
108 SAL_DLLPRIVATE
void ImplPrintTransparent (
110 const Point& rDestPt,
const Size& rDestSize,
111 const Point& rSrcPtPixel,
const Size& rSrcSizePixel );
125 void ImplReleaseGraphics(
bool bRelease =
true);
156 const Point& rDestPt,
const Size& rDestSize,
157 const Point& rSrcPtPixel,
const Size& rSrcSizePixel)
override;
160 const BitmapEx& rBitmapEx,
double fAlpha = 1.0)
override;
166 const Point& rSrcPtPixel,
const Size& rSrcSizePixel,
170 sal_uInt16 nTransparencePercent )
override;
182 Printer(
const OUString& rPrinterName );
184 virtual void dispose()
override;
188 static const std::vector< OUString >&
190 static const QueueInfo* GetQueueInfo(
const OUString& rPrinterName,
bool bStatusUpdate );
191 static OUString GetDefaultPrinterName();
193 const OUString&
GetName()
const {
return maPrinterName; }
197 bool IsValid()
const {
return !IsDisplayPrinter(); }
202 bool SetJobSetup(
const JobSetup& rSetup );
207 bool SetPrinterProps(
const Printer* pPrinter );
227 bool SetPaperBin( sal_uInt16 nPaperBin );
228 sal_uInt16 GetPaperBin()
const;
230 bool SetPaperSizeUser(
const Size& rSize );
232 Paper GetPaper()
const;
234 Size GetSizeOfPaper()
const;
235 static OUString GetPaperName(
Paper ePaper );
238 int GetPaperInfoCount()
const;
241 const PaperInfo& GetPaperInfo(
int nPaper )
const;
242 sal_uInt16 GetPaperBinCount()
const;
243 OUString GetPaperBinName( sal_uInt16 nPaperBin )
const;
245 bool GetPrinterSettingsPreferred()
const;
246 void SetPrinterSettingsPreferred(
bool bPaperSizeFromSetup );
250 Size GetPaperSize(
int nPaper )
const;
254 void SetCopyCount( sal_uInt16 nCopy,
bool bCollate );
268 static void updatePrinters();
274 static void PrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController,
279 virtual void DrawOutDev(
const Point& rDestPt,
const Size& rDestSize,
280 const Point& rSrcPt,
const Size& rSrcSize )
override;
282 virtual void DrawOutDev(
const Point& rDestPt,
const Size& rDestSize,
283 const Point& rSrcPt,
const Size& rSrcSize,
286 virtual void CopyArea(
const Point& rDestPt,
const Point& rSrcPt,
287 const Size& rSrcSize,
bool bWindowInvalidate =
false )
override;
293 static bool PreparePrintJob( std::shared_ptr<vcl::PrinterController> i_pController,
295 static bool ExecutePrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController);
296 static void FinishPrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController );
302 static void VCL_DLLPRIVATE ImplPrintJob(
const std::shared_ptr<vcl::PrinterController>& i_pController,
308 class ImplPrinterControllerData;
317 std::unique_ptr<ImplPrinterControllerData>
338 : nRows( 1 ), nColumns( 1 ), aPaperSize( 21000, 29700 )
339 , nLeftMargin( 0 ), nTopMargin( 0 )
340 , nRightMargin( 0 ), nBottomMargin( 0 )
341 , nHorizontalSpacing( 0 ), nVerticalSpacing( 0 )
342 , bDrawBorder(
false )
355 bool i_bFullPaper =
false)
356 : aSize( i_rSize ), bFullPaper( i_bFullPaper ) {}
371 css::uno::Sequence< css::beans::PropertyValue >
372 getJobProperties(
const css::uno::Sequence< css::beans::PropertyValue >& i_rMergeList )
const;
375 css::beans::PropertyValue*
getValue(
const OUString& i_rPropertyName );
376 const css::beans::PropertyValue*
getValue(
const OUString& i_rPropertyName )
const;
382 bool getBoolProperty(
const OUString& i_rPropertyName,
bool i_bFallback )
const;
388 sal_Int32 getIntProperty(
const OUString& i_rPropertyName, sal_Int32 i_nFallback )
const;
391 void setValue(
const OUString& i_rPropertyName,
const css::uno::Any& i_rValue );
392 void setValue(
const css::beans::PropertyValue& i_rValue );
395 const css::uno::Sequence< css::beans::PropertyValue >&
396 getUIOptions()
const;
402 void setUIOptions(
const css::uno::Sequence< css::beans::PropertyValue >& );
405 bool isUIOptionEnabled(
const OUString& rPropName )
const;
406 bool isUIChoiceEnabled(
const OUString& rPropName, sal_Int32 nChoice )
const;
415 OUString makeEnabled(
const OUString& rPropName );
433 virtual css::uno::Sequence< css::beans::PropertyValue >
434 getPageParameters(
int i_nPage )
const = 0;
436 virtual void printPage(
int i_nPage)
const = 0;
439 virtual void jobStarted();
440 virtual void jobFinished( css::view::PrintableState );
442 css::view::PrintableState getJobState()
const;
446 bool isShowDialogs()
const;
447 bool isDirectPrint()
const;
449 void dialogsParentClosing();
455 int getFilteredPageCount()
const;
457 bool i_bMayUseCache =
false );
458 PageSize getFilteredPageFile(
int i_nFilteredPage,
GDIMetaFile& o_rMtf,
459 bool i_bMayUseCache =
false );
460 void printFilteredPage(
int i_nPage );
462 void createProgressDialog();
463 bool isProgressCanceled()
const;
466 getMultipage()
const;
467 void setLastPage(
bool i_bLastPage );
469 VCL_DLLPRIVATE void setPapersizeFromSetup(
bool i_bPapersizeFromSetup );
473 void setPrinterModified(
bool i_bPapersizeFromSetup );
474 bool getPrinterModified()
const;
477 void setJobState( css::view::PrintableState );
482 getPageParametersProtected(
int i_nPage )
const;
491 std::unordered_map< OUString, css::uno::Any >
493 std::vector< css::beans::PropertyValue >
505 bool processProperties(
const css::uno::Sequence< css::beans::PropertyValue >& i_rNewProp );
512 void appendPrintUIOptions( css::uno::Sequence< css::beans::PropertyValue >& io_rProps )
const;
515 css::uno::Any
getValue(
const OUString& i_rPropertyName )
const;
517 bool getBoolValue(
const OUString& i_rPropertyName,
bool i_bDefault )
const;
519 bool getBoolValue(
const char* i_pPropName,
bool i_bDefault =
false )
const
520 {
return getBoolValue( OUString::createFromAscii( i_pPropName ), i_bDefault ); }
522 sal_Int64 getIntValue(
const OUString& i_rPropertyName, sal_Int64 i_nDefault )
const;
524 sal_Int64
getIntValue(
const char* i_pPropName, sal_Int64 i_nDefault )
const
525 {
return getIntValue( OUString::createFromAscii( i_pPropName ), i_nDefault ); }
527 OUString getStringValue(
const OUString& i_rPropertyName )
const;
530 {
return getStringValue( OUString::createFromAscii( i_pPropName ) ); }
537 std::vector< css::beans::PropertyValue >
545 sal_Int32 i_nDependsOnEntry = -1,
bool i_bAttachToDependency =
false)
546 : maDependsOnName( i_rDependsOnName )
547 , mnDependsOnEntry( i_nDependsOnEntry )
548 , mbAttachToDependency( i_bAttachToDependency )
549 , mbInternalOnly(
false )
550 , mbEnabled( true ) {}
560 static css::uno::Any setUIControlOpt(
const css::uno::Sequence< OUString >& i_rIDs,
const OUString& i_rTitle,
561 const css::uno::Sequence< OUString >& i_rHelpId,
const OUString& i_rType,
562 const css::beans::PropertyValue* i_pValue =
nullptr,
563 const UIControlOptions& i_rControlOptions = UIControlOptions());
566 static css::uno::Any setGroupControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
567 const OUString& i_rHelpId);
570 static css::uno::Any setSubgroupControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
571 const UIControlOptions& i_rControlOptions = UIControlOptions());
574 static css::uno::Any setBoolControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
575 const OUString& i_rProperty,
bool i_bValue,
576 const UIControlOptions& i_rControlOptions = UIControlOptions());
579 static css::uno::Any setChoiceListControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
580 const css::uno::Sequence< OUString >& i_rHelpId,
const OUString& i_rProperty,
581 const css::uno::Sequence< OUString >& i_rChoices, sal_Int32 i_nValue,
582 const css::uno::Sequence< sal_Bool >& i_rDisabledChoices = css::uno::Sequence< sal_Bool >(),
583 const UIControlOptions& i_rControlOptions = UIControlOptions());
586 static css::uno::Any setChoiceRadiosControlOpt(
const css::uno::Sequence< OUString >& i_rIDs,
587 const OUString& i_rTitle,
const css::uno::Sequence< OUString >& i_rHelpId,
588 const OUString& i_rProperty,
const css::uno::Sequence< OUString >& i_rChoices,
590 const css::uno::Sequence< sal_Bool >& i_rDisabledChoices = css::uno::Sequence< sal_Bool >(),
591 const UIControlOptions& i_rControlOptions = UIControlOptions());
597 static css::uno::Any setRangeControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
598 const OUString& i_rProperty, sal_Int32 i_nValue, sal_Int32 i_nMinValue,
599 sal_Int32 i_nMaxValue,
const UIControlOptions& i_rControlOptions);
605 static css::uno::Any setEditControlOpt(
const OUString& i_rID,
const OUString& i_rTitle,
const OUString& i_rHelpId,
606 const OUString& i_rProperty,
const OUString& i_rValue,
607 const UIControlOptions& i_rControlOptions);
613 #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
virtual void SetWaveLineColors(Color const &rColor, tools::Long nLineWidth)
bool CanSubsampleBitmap() const override
virtual tools::Long GetGradientStepCount(tools::Long nMinRect)
const OUString & GetName() const
SalGraphics * mpJobGraphics
virtual bool DrawTransformBitmapExDirect(const basegfx::B2DHomMatrix &aFullTransform, const BitmapEx &rBitmapEx, double fAlpha=1.0)
Transform and draw a bitmap directly.
virtual bool UsePolyPolygonForComplexGradient()=0
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)
const vcl::printer::Options & GetPrinterOptions() const
std::unique_ptr< SalPrinter > mpPrinter
virtual void DrawDeviceMask(const Bitmap &rMask, const Color &rMaskColor, const Point &rDestPt, const Size &rDestSize, const Point &rSrcPtPixel, const Size &rSrcSizePixel)
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
virtual void SetSystemTextColor(SystemTextColorFlags nFlags, bool bEnabled)
bool shouldDrawWavePixelAsRect(tools::Long) const override
virtual Size GetWaveLineSize(tools::Long nLineWidth) const
virtual Bitmap GetBitmap(const Point &rSrcPt, const Size &rSize) const
const Size & GetPaperSizePixel() const
tools::Long nBottomMargin
std::unique_ptr< ImplPrinterControllerData > mpImplData
void DrawRect(const tools::Rectangle &rRect)
VclPtr< VirtualDevice > mpDisplayDev
virtual void CopyArea(const Point &rDestPt, const Point &rSrcPt, const Size &rSrcSize, bool bWindowInvalidate=false)
virtual void EmulateDrawTransparent(const tools::PolyPolygon &rPolyPoly, sal_uInt16 nTransparencePercent)
sal_Int32 mnDependsOnEntry
virtual tools::Rectangle GetBackgroundComponentBounds() const
virtual void dispose() override
virtual bool AcquireGraphics() const =0
Acquire a graphics device that the output device uses to draw on.
const OUString & GetDriverName() const
virtual void SetFontOrientation(LogicalFontInstance *const pFontInstance) const
virtual bool HasMirroredGraphics() const
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
bool mbAttachToDependency
virtual void DrawDeviceBitmapEx(const Point &rDestPt, const Size &rDestSize, const Point &rSrcPtPixel, const Size &rSrcSizePixel, BitmapEx &rBitmapEx)
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_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
sal_Int32 getPageCount(const uno::Reference< frame::XModel > &xModel)
const Point & GetPageOffsetPixel() const
virtual void ReleaseGraphics(bool bRelease=true)=0
Release the graphics device, and remove it from the graphics device list.
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_WHITE
std::unique_ptr< vcl::printer::Options > mpPrinterOptions
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
virtual Size GetButtonBorderSize()
virtual void DrawOutDev(const Point &rDestPt, const Size &rDestSize, const Point &rSrcPt, const Size &rSrcSize)
virtual vcl::Region ClipToDeviceBounds(vcl::Region aRegion) const
Perform actual rect clip against outdev dimensions, to generate empty clips whenever one of the value...
SalInfoPrinter * mpInfoPrinter
virtual bool TransformAndReduceBitmapExToTargetRange(const basegfx::B2DHomMatrix &aFullTransform, basegfx::B2DRange &aVisibleRange, double &fMaximumArea)
Transform and reduce the area that needs to be drawn of the bitmap and return the new visible range a...
OutputDevice & operator=(const OutputDevice &)=delete
bool bFullPaper
Full paper, not only imageable area is printed.
bool IsCollateCopy() const
virtual void ImplReleaseFonts()
bool IsScreenComp() const override
virtual void ClipAndDrawGradientMetafile(const Gradient &rGradient, const tools::PolyPolygon &rPolyPoly)
virtual css::awt::DeviceInfo GetDeviceInfo() const
Color GetBackgroundColor() const override
bool IsSinglePrintJobs() const
bool m_bDetectedRangeSegmentation false
Size GetPaperSize() const