Files
loongoffice/include/vcl/jobdata.hxx
Michael Stahl c76cd71fe9 fdo#41524: CUPS printing: use "collate" option when PDF is available
Assume that the CUPS printer is able to handle collating by itself,
don't send multiple print jobs (except if user clicks on "Create single
print jobs for collated output" of course...).

To enable collating with PDF based printers, add the "collate" option;
legacy PS based printers still get the weird stuff read from the PPD
(not sure what the risks of changing that are).

Change-Id: Ia12dc69f9083bba94f2ed633ecbd153aac7e40ab
2014-02-18 22:56:51 +01:00

88 lines
3.0 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_VCL_JOBDATA_HXX
#define INCLUDED_VCL_JOBDATA_HXX
#include <vcl/ppdparser.hxx>
namespace psp {
namespace orientation {
enum type {
Portrait,
Landscape
};
}
struct VCL_DLLPUBLIC JobData
{
int m_nCopies;
bool m_bCollate;
int m_nLeftMarginAdjust;
int m_nRightMarginAdjust;
int m_nTopMarginAdjust;
int m_nBottomMarginAdjust;
// user overrides for PPD
int m_nColorDepth;
int m_nPSLevel; // 0: no override, else languagelevel to use
int m_nColorDevice; // 0: no override, -1 grey scale, +1 color
int m_nPDFDevice; // 0: no override, -1 PostScript, +1: Automatically PDF, +2: Explicitly PDF
orientation::type m_eOrientation;
OUString m_aPrinterName;
const PPDParser* m_pParser;
PPDContext m_aContext;
JobData() :
m_nCopies( 1 ),
m_bCollate(false),
m_nLeftMarginAdjust( 0 ),
m_nRightMarginAdjust( 0 ),
m_nTopMarginAdjust( 0 ),
m_nBottomMarginAdjust( 0 ),
m_nColorDepth( 24 ),
m_nPSLevel( 0 ),
m_nColorDevice( 0 ),
m_nPDFDevice( 0 ),
m_eOrientation( orientation::Portrait ),
m_pParser( NULL ) {}
JobData& operator=(const psp::JobData& rRight);
JobData( const JobData& rData ) { *this = rData; }
void setCollate( bool bCollate );
bool setPaper( int nWidth, int nHeight ); // dimensions in pt
bool setPaperBin( int nPaperBin );
void resolveDefaultBackend();
void setDefaultBackend(bool bUsePDF);
// creates a new buffer using new
// it is up to the user to delete it again
bool getStreamBuffer( void*& pData, int& bytes );
static bool constructFromStreamBuffer( void* pData, int bytes, JobData& rJobData );
};
} // namespace
#endif // PSPRINT_JOBDATA_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */