poppler/GlobalParams.cc | 13 ------------- poppler/GlobalParams.h | 17 ----------------- poppler/PSOutputDev.cc | 22 +++++++++++----------- poppler/PSOutputDev.h | 19 +++++++++++++++---- poppler/PreScanOutputDev.cc | 6 ++---- poppler/PreScanOutputDev.h | 7 +++---- utils/pdftops.cc | 8 +++----- 7 files changed, 34 insertions(+), 58 deletions(-)
New commits: commit eaa1e07b591b975946f2f3f7262dd94deb9d54b3 Author: Albert Astals Cid <[email protected]> Date: Mon Nov 2 00:03:04 2020 +0100 Move psLevel to PSOutputDev creation It's were it makes sense, not as part of GlobalParams that we're sloooooooooowly trying to get rid of diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc index 630ec4ab..93024cc7 100644 --- a/poppler/GlobalParams.cc +++ b/poppler/GlobalParams.cc @@ -391,7 +391,6 @@ GlobalParams::GlobalParams(const char *customPopplerDataDir) : popplerDataDir(cu sysFonts = new SysFontList(); psExpandSmaller = false; psShrinkLarger = true; - psLevel = psLevel2; textEncoding = new GooString("UTF-8"); overprintPreview = false; printCommands = false; @@ -1133,12 +1132,6 @@ bool GlobalParams::getPSShrinkLarger() return psShrinkLarger; } -PSLevel GlobalParams::getPSLevel() -{ - globalParamsLocker(); - return psLevel; -} - std::string GlobalParams::getTextEncodingName() const { globalParamsLocker(); @@ -1247,12 +1240,6 @@ void GlobalParams::setPSShrinkLarger(bool shrink) psShrinkLarger = shrink; } -void GlobalParams::setPSLevel(PSLevel level) -{ - globalParamsLocker(); - psLevel = level; -} - void GlobalParams::setTextEncoding(const char *encodingName) { globalParamsLocker(); diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h index 4b41ee38..cc3fa117 100644 --- a/poppler/GlobalParams.h +++ b/poppler/GlobalParams.h @@ -78,20 +78,6 @@ enum SysFontType //------------------------------------------------------------------------ -enum PSLevel -{ - psLevel1, - psLevel1Sep, - psLevel2, - psLevel2Sep, - psLevel3, - psLevel3Sep -}; - -//------------------------------------------------------------------------ - -//------------------------------------------------------------------------ - class GlobalParams { public: @@ -126,7 +112,6 @@ public: GooString *findSystemFontFile(const GfxFont *font, SysFontType *type, int *fontNum, GooString *substituteFontName = nullptr, const GooString *base14Name = nullptr); bool getPSExpandSmaller(); bool getPSShrinkLarger(); - PSLevel getPSLevel(); std::string getTextEncodingName() const; bool getOverprintPreview() { return overprintPreview; } bool getPrintCommands(); @@ -146,7 +131,6 @@ public: void addFontFile(const GooString *fontName, const GooString *path); void setPSExpandSmaller(bool expand); void setPSShrinkLarger(bool shrink); - void setPSLevel(PSLevel level); void setTextEncoding(const char *encodingName); void setOverprintPreview(bool overprintPreviewA); void setPrintCommands(bool printCommandsA); @@ -196,7 +180,6 @@ private: SysFontList *sysFonts; // system fonts bool psExpandSmaller; // expand smaller pages to fill paper bool psShrinkLarger; // shrink larger pages to fit paper - PSLevel psLevel; // PostScript level to generate GooString *textEncoding; // encoding (unicodeMap) to use for text // output bool overprintPreview; // enable overprint preview diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc index 6b99ef2c..2471d56b 100644 --- a/poppler/PSOutputDev.cc +++ b/poppler/PSOutputDev.cc @@ -1086,7 +1086,7 @@ static void outputToFile(void *stream, const char *data, int len) } PSOutputDev::PSOutputDev(const char *fileName, PDFDoc *docA, char *psTitleA, const std::vector<int> &pagesA, PSOutMode modeA, int paperWidthA, int paperHeightA, bool noCropA, bool duplexA, int imgLLXA, int imgLLYA, int imgURXA, int imgURYA, - PSForceRasterize forceRasterizeA, bool manualCtrlA, PSOutCustomCodeCbk customCodeCbkA, void *customCodeCbkDataA) + PSForceRasterize forceRasterizeA, bool manualCtrlA, PSOutCustomCodeCbk customCodeCbkA, void *customCodeCbkDataA, PSLevel levelA) { FILE *f; PSFileType fileTypeA; @@ -1141,11 +1141,11 @@ PSOutputDev::PSOutputDev(const char *fileName, PDFDoc *docA, char *psTitleA, con } } - init(outputToFile, f, fileTypeA, psTitleA, docA, pagesA, modeA, imgLLXA, imgLLYA, imgURXA, imgURYA, manualCtrlA, paperWidthA, paperHeightA, noCropA, duplexA); + init(outputToFile, f, fileTypeA, psTitleA, docA, pagesA, modeA, imgLLXA, imgLLYA, imgURXA, imgURYA, manualCtrlA, paperWidthA, paperHeightA, noCropA, duplexA, levelA); } PSOutputDev::PSOutputDev(PSOutputFunc outputFuncA, void *outputStreamA, char *psTitleA, PDFDoc *docA, const std::vector<int> &pagesA, PSOutMode modeA, int paperWidthA, int paperHeightA, bool noCropA, bool duplexA, int imgLLXA, int imgLLYA, - int imgURXA, int imgURYA, PSForceRasterize forceRasterizeA, bool manualCtrlA, PSOutCustomCodeCbk customCodeCbkA, void *customCodeCbkDataA) + int imgURXA, int imgURYA, PSForceRasterize forceRasterizeA, bool manualCtrlA, PSOutCustomCodeCbk customCodeCbkA, void *customCodeCbkDataA, PSLevel levelA) { underlayCbk = nullptr; underlayCbkData = nullptr; @@ -1168,7 +1168,7 @@ PSOutputDev::PSOutputDev(PSOutputFunc outputFuncA, void *outputStreamA, char *ps forceRasterize = forceRasterizeA; psTitle = nullptr; - init(outputFuncA, outputStreamA, psGeneric, psTitleA, docA, pagesA, modeA, imgLLXA, imgLLYA, imgURXA, imgURYA, manualCtrlA, paperWidthA, paperHeightA, noCropA, duplexA); + init(outputFuncA, outputStreamA, psGeneric, psTitleA, docA, pagesA, modeA, imgLLXA, imgLLYA, imgURXA, imgURYA, manualCtrlA, paperWidthA, paperHeightA, noCropA, duplexA, levelA); } struct StandardMedia @@ -1193,7 +1193,7 @@ static bool pageDimensionEqual(int a, int b) // created the PSOutputDev can use the various setters to change defaults. void PSOutputDev::init(PSOutputFunc outputFuncA, void *outputStreamA, PSFileType fileTypeA, char *psTitleA, PDFDoc *docA, const std::vector<int> &pagesA, PSOutMode modeA, int imgLLXA, int imgLLYA, int imgURXA, int imgURYA, bool manualCtrlA, - int paperWidthA, int paperHeightA, bool noCropA, bool duplexA) + int paperWidthA, int paperHeightA, bool noCropA, bool duplexA, PSLevel levelA) { if (pagesA.empty()) { @@ -1227,7 +1227,7 @@ void PSOutputDev::init(PSOutputFunc outputFuncA, void *outputStreamA, PSFileType fileType = fileTypeA; psTitle = (psTitleA ? strdup(psTitleA) : nullptr); doc = docA; - level = globalParams->getPSLevel(); + level = levelA; pages = pagesA; mode = modeA; paperWidth = paperWidthA; @@ -2523,7 +2523,7 @@ void PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, GooString *fileNam } if (ffTT->isOpenTypeCFF()) { ffTT->convertToCIDType0(psName->c_str(), codeToGID, codeToGIDLen, outputFunc, outputStream); - } else if (globalParams->getPSLevel() >= psLevel3) { + } else if (level >= psLevel3) { // Level 3: use a CID font ffTT->convertToCIDType2(psName->c_str(), codeToGID, codeToGIDLen, needVerticalMetrics, outputFunc, outputStream); } else { @@ -2575,7 +2575,7 @@ void PSOutputDev::setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, GooString *p // convert it to a Type 0 font if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) { if ((ffT1C = FoFiType1C::make(fontBuf, fontLen))) { - if (globalParams->getPSLevel() >= psLevel3) { + if (level >= psLevel3) { // Level 3: use a CID font ffT1C->convertToCIDType0(psName->c_str(), nullptr, 0, outputFunc, outputStream); } else { @@ -2606,7 +2606,7 @@ void PSOutputDev::setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GooString // convert it to a Type 0 font if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) { if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) { - if (globalParams->getPSLevel() >= psLevel3) { + if (level >= psLevel3) { // Level 3: use a CID font ffTT->convertToCIDType2(psName->c_str(), ((GfxCIDFont *)font)->getCIDToGID(), ((GfxCIDFont *)font)->getCIDToGIDLen(), needVerticalMetrics, outputFunc, outputStream); } else { @@ -2657,7 +2657,7 @@ void PSOutputDev::setupEmbeddedOpenTypeCFFFont(GfxFont *font, Ref *id, GooString if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) { if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) { if (ffTT->isOpenTypeCFF()) { - if (globalParams->getPSLevel() >= psLevel3) { + if (level >= psLevel3) { // Level 3: use a CID font ffTT->convertToCIDType0(psName->c_str(), ((GfxCIDFont *)font)->getCIDToGID(), ((GfxCIDFont *)font)->getCIDToGIDLen(), outputFunc, outputStream); } else { @@ -3152,7 +3152,7 @@ bool PSOutputDev::checkPageSlice(Page *page, double /*hDPI*/, double /*vDPI*/, i } else if (forceRasterize == psNeverRasterize) { rasterize = false; } else { - scan = new PreScanOutputDev(doc); + scan = new PreScanOutputDev(level); page->displaySlice(scan, 72, 72, rotateA, useMediaBox, crop, sliceX, sliceY, sliceW, sliceH, printing, abortCheckCbk, abortCheckCbkData, annotDisplayDecideCbk, annotDisplayDecideCbkData); rasterize = scan->usesTransparency() || scan->usesPatternImageMask(); delete scan; diff --git a/poppler/PSOutputDev.h b/poppler/PSOutputDev.h index b93b9dde..e33125dd 100644 --- a/poppler/PSOutputDev.h +++ b/poppler/PSOutputDev.h @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Martin Kretzschmar <[email protected]> // Copyright (C) 2005 Kristian Høgsberg <[email protected]> -// Copyright (C) 2006-2008, 2012, 2013, 2015, 2017-2019 Albert Astals Cid <[email protected]> +// Copyright (C) 2006-2008, 2012, 2013, 2015, 2017-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2007 Brad Hards <[email protected]> // Copyright (C) 2009-2013 Thomas Freitag <[email protected]> // Copyright (C) 2009 Till Kamppeter <[email protected]> @@ -73,6 +73,16 @@ class PSOutputDev; // PSOutputDev //------------------------------------------------------------------------ +enum PSLevel +{ + psLevel1, + psLevel1Sep, + psLevel2, + psLevel2Sep, + psLevel3, + psLevel3Sep +}; + enum PSOutMode { psModePS, @@ -111,13 +121,14 @@ public: // Open a PostScript output file, and write the prolog. // pages has to be sorted in increasing order PSOutputDev(const char *fileName, PDFDoc *docA, char *psTitleA, const std::vector<int> &pages, PSOutMode modeA, int paperWidthA = -1, int paperHeightA = -1, bool noCrop = false, bool duplexA = true, int imgLLXA = 0, int imgLLYA = 0, - int imgURXA = 0, int imgURYA = 0, PSForceRasterize forceRasterizeA = psRasterizeWhenNeeded, bool manualCtrlA = false, PSOutCustomCodeCbk customCodeCbkA = nullptr, void *customCodeCbkDataA = nullptr); + int imgURXA = 0, int imgURYA = 0, PSForceRasterize forceRasterizeA = psRasterizeWhenNeeded, bool manualCtrlA = false, PSOutCustomCodeCbk customCodeCbkA = nullptr, void *customCodeCbkDataA = nullptr, + PSLevel levelA = psLevel2); // Open a PSOutputDev that will write to a generic stream. // pages has to be sorted in increasing order PSOutputDev(PSOutputFunc outputFuncA, void *outputStreamA, char *psTitleA, PDFDoc *docA, const std::vector<int> &pages, PSOutMode modeA, int paperWidthA = -1, int paperHeightA = -1, bool noCrop = false, bool duplexA = true, int imgLLXA = 0, int imgLLYA = 0, int imgURXA = 0, int imgURYA = 0, PSForceRasterize forceRasterizeA = psRasterizeWhenNeeded, bool manualCtrlA = false, PSOutCustomCodeCbk customCodeCbkA = nullptr, - void *customCodeCbkDataA = nullptr); + void *customCodeCbkDataA = nullptr, PSLevel levelA = psLevel2); // Destructor -- writes the trailer and closes the file. ~PSOutputDev() override; @@ -348,7 +359,7 @@ public: private: void init(PSOutputFunc outputFuncA, void *outputStreamA, PSFileType fileTypeA, char *psTitleA, PDFDoc *doc, const std::vector<int> &pages, PSOutMode modeA, int imgLLXA, int imgLLYA, int imgURXA, int imgURYA, bool manualCtrlA, - int paperWidthA, int paperHeightA, bool noCropA, bool duplexA); + int paperWidthA, int paperHeightA, bool noCropA, bool duplexA, PSLevel levelA); void postInit(); void setupResources(Dict *resDict); void setupFonts(Dict *resDict); diff --git a/poppler/PreScanOutputDev.cc b/poppler/PreScanOutputDev.cc index af1496af..478a7f23 100644 --- a/poppler/PreScanOutputDev.cc +++ b/poppler/PreScanOutputDev.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2009 Carlos Garcia Campos <[email protected]> -// Copyright (C) 2010, 2011, 2018, 2019 Albert Astals Cid <[email protected]> +// Copyright (C) 2010, 2011, 2018-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2011, 2014 William Bader <[email protected]> // Copyright (C) 2011, 2013 Thomas Freitag <[email protected]> // Copyright (C) 2011 Adrian Johnson <[email protected]> @@ -39,10 +39,8 @@ // PreScanOutputDev //------------------------------------------------------------------------ -PreScanOutputDev::PreScanOutputDev(PDFDoc *docA) +PreScanOutputDev::PreScanOutputDev(PSLevel levelA) : level(levelA) { - level = globalParams->getPSLevel(); - doc = docA; clearStats(); } diff --git a/poppler/PreScanOutputDev.h b/poppler/PreScanOutputDev.h index db2c56de..7e089a5d 100644 --- a/poppler/PreScanOutputDev.h +++ b/poppler/PreScanOutputDev.h @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2009 Carlos Garcia Campos <[email protected]> -// Copyright (C) 2010, 2018, 2019 Albert Astals Cid <[email protected]> +// Copyright (C) 2010, 2018-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2011, 2014 William Bader <[email protected]> // Copyright (C) 2011, 2013 Thomas Freitag <[email protected]> // Copyright (C) 2011 Adrian Johnson <[email protected]> @@ -29,8 +29,8 @@ #include "Object.h" #include "GfxState.h" -#include "GlobalParams.h" #include "OutputDev.h" +#include "PSOutputDev.h" //------------------------------------------------------------------------ // PreScanOutputDev @@ -40,7 +40,7 @@ class PreScanOutputDev : public OutputDev { public: // Constructor. - PreScanOutputDev(PDFDoc *docA); + PreScanOutputDev(PSLevel levelA); // Destructor. ~PreScanOutputDev() override; @@ -137,7 +137,6 @@ public: private: void check(GfxColorSpace *colorSpace, const GfxColor *color, double opacity, GfxBlendMode blendMode); - PDFDoc *doc; bool mono; bool gray; bool transparency; diff --git a/utils/pdftops.cc b/utils/pdftops.cc index 072c4d5c..73f00de2 100644 --- a/utils/pdftops.cc +++ b/utils/pdftops.cc @@ -16,7 +16,7 @@ // under GPL version 2 or later // // Copyright (C) 2006 Kristian Høgsberg <[email protected]> -// Copyright (C) 2007-2008, 2010, 2015, 2017, 2018 Albert Astals Cid <[email protected]> +// Copyright (C) 2007-2008, 2010, 2015, 2017, 2018, 2020 Albert Astals Cid <[email protected]> // Copyright (C) 2009 Till Kamppeter <[email protected]> // Copyright (C) 2009 Sanjoy Mahajan <[email protected]> // Copyright (C) 2009, 2011, 2012, 2014-2016, 2020 William Bader <[email protected]> @@ -269,9 +269,6 @@ int main(int argc, char *argv[]) if (noShrink) { globalParams->setPSShrinkLarger(false); } - if (level1 || level1Sep || level2 || level2Sep || level3 || level3Sep) { - globalParams->setPSLevel(level); - } if (quiet) { globalParams->setErrQuiet(quiet); } @@ -422,7 +419,8 @@ int main(int argc, char *argv[]) } // write PostScript file - psOut = new PSOutputDev(psFileName->c_str(), doc, nullptr, pages, mode, paperWidth, paperHeight, noCrop, duplex); + psOut = new PSOutputDev(psFileName->c_str(), doc, nullptr, pages, mode, paperWidth, paperHeight, noCrop, duplex, /*imgLLXA*/ 0, /*imgLLYA*/ 0, + /*imgURXA*/ 0, /*imgURYA*/ 0, psRasterizeWhenNeeded, /*manualCtrlA*/ false, /*customCodeCbkA*/ nullptr, /*customCodeCbkDataA*/ nullptr, level); if (noCenter) { psOut->setPSCenter(false); } _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
