qt4/src/poppler-ps-converter.cc |   34 ++++++++++++++++++++++++++--------
 qt4/src/poppler-qt4.h           |   26 ++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 8 deletions(-)

New commits:
commit 3366059a25611f19ab592cda18c5efe0b9359771
Author: Pino Toscano <[EMAIL PROTECTED]>
Date:   Sat Sep 6 16:34:58 2008 +0200

    [Qt4] add option flags for the PS converter
    
    - map the 'strictMargins' and 'forceRasterize' bool options as flags
    - add a flag for setting the "printing" mode

diff --git a/qt4/src/poppler-ps-converter.cc b/qt4/src/poppler-ps-converter.cc
index 8562656..c805a40 100644
--- a/qt4/src/poppler-ps-converter.cc
+++ b/qt4/src/poppler-ps-converter.cc
@@ -47,15 +47,14 @@ class PSConverterPrivate : public BaseConverterPrivate
                int marginBottom;
                int marginLeft;
                int marginTop;
-               bool strictMargins;
-               bool forceRasterize;
+               PSConverter::PSOptions opts;
 };
 
 PSConverterPrivate::PSConverterPrivate()
        : BaseConverterPrivate(),
        hDPI(72), vDPI(72), rotate(0), paperWidth(-1), paperHeight(-1),
        marginRight(0), marginBottom(0), marginLeft(0), marginTop(0),
-       strictMargins(false), forceRasterize(false)
+       opts(0)
 {
 }
 
@@ -140,13 +139,31 @@ void PSConverter::setTopMargin(int marginTop)
 void PSConverter::setStrictMargins(bool strictMargins)
 {
        Q_D(PSConverter);
-       d->strictMargins = strictMargins;
+       if (strictMargins)
+               d->opts |= StrictMargins;
+       else
+               d->opts &= ~StrictMargins;
 }
 
 void PSConverter::setForceRasterize(bool forceRasterize)
 {
        Q_D(PSConverter);
-       d->forceRasterize = forceRasterize;
+       if (forceRasterize)
+               d->opts |= ForceRasterization;
+       else
+               d->opts &= ~ForceRasterization;
+}
+
+void PSConverter::setPSOptions(PSConverter::PSOptions options)
+{
+       Q_D(PSConverter);
+       d->opts = options;
+}
+
+PSConverter::PSOptions PSConverter::psOptions() const
+{
+       Q_D(const PSConverter);
+       return d->opts;
 }
 
 bool PSConverter::convert()
@@ -180,9 +197,9 @@ bool PSConverter::convert()
                                             d->marginBottom,
                                             d->paperWidth - d->marginRight,
                                             d->paperHeight - d->marginTop,
-                                            d->forceRasterize);
+                                            (d->opts & ForceRasterization));
        
-       if (d->strictMargins)
+       if (d->opts & StrictMargins)
        {
                double xScale = ((double)d->paperWidth - (double)d->marginLeft 
- (double)d->marginRight) / (double)d->paperWidth;
                double yScale = ((double)d->paperHeight - 
(double)d->marginBottom - (double)d->marginTop) / (double)d->paperHeight;
@@ -191,9 +208,10 @@ bool PSConverter::convert()
        
        if (psOut->isOk())
        {
+               GBool isPrinting = (d->opts & Printing) ? gTrue : gFalse;
                foreach(int page, d->pageList)
                {
-                       d->document->doc->displayPage(psOut, page, d->hDPI, 
d->vDPI, d->rotate, gFalse, gTrue, gTrue);
+                       d->document->doc->displayPage(psOut, page, d->hDPI, 
d->vDPI, d->rotate, gFalse, gTrue, isPrinting);
                }
                delete psOut;
                d->closeDevice();
diff --git a/qt4/src/poppler-qt4.h b/qt4/src/poppler-qt4.h
index b677b4d..fa706a3 100644
--- a/qt4/src/poppler-qt4.h
+++ b/qt4/src/poppler-qt4.h
@@ -1037,6 +1037,18 @@ height = dummy.height();
         friend class Document;
         public:
             /**
+              Options for the PS export.
+
+              \since 0.10
+             */
+            enum PSOption {
+                Printing = 0x00000001,              ///< The PS is generated 
for priting purpouses
+                StrictMargins = 0x00000002,
+                ForceRasterization = 0x00000004
+            };
+            Q_DECLARE_FLAGS( PSOptions, PSOption )
+
+            /**
               Destructor.
             */
             ~PSConverter();
@@ -1106,6 +1118,19 @@ height = dummy.height();
             /** Defines if the page will be rasterized to an image before 
printing. Defaults to false */
             void setForceRasterize(bool forceRasterize);
 
+            /**
+              Sets the options for the PS export.
+
+              \since 0.10
+             */
+            void setPSOptions(PSOptions options);
+            /**
+              The currently set options for the PS export.
+
+              \since 0.10
+             */
+            PSOptions psOptions() const;
+
             bool convert();
 
         private:
@@ -1297,5 +1322,6 @@ height = dummy.height();
 
 Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::Document::RenderHints)
 Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::PDFConverter::PDFOptions)
+Q_DECLARE_OPERATORS_FOR_FLAGS(Poppler::PSConverter::PSOptions)
 
 #endif
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to