Commit edef2cd330d0f4ca77f75e7192628a64bf67de3e
1 parent
f2409f4f
QPDFJob: make remaining members private
Showing
4 changed files
with
57 additions
and
41 deletions
include/qpdf/QPDFJob.hh
| @@ -284,9 +284,8 @@ class QPDFJob | @@ -284,9 +284,8 @@ class QPDFJob | ||
| 284 | QPDF_DLL | 284 | QPDF_DLL |
| 285 | std::shared_ptr<Config> config(); | 285 | std::shared_ptr<Config> config(); |
| 286 | 286 | ||
| 287 | - // QXXXQ set options -- implemented in QPDFJob_options.cc | ||
| 288 | - | ||
| 289 | - // QXXXQ these will not be in the final interface | 287 | + // Options for helping the qpdf CLI use the correct edit code and |
| 288 | + // properly report warnings. | ||
| 290 | QPDF_DLL | 289 | QPDF_DLL |
| 291 | bool suppressWarnings(); | 290 | bool suppressWarnings(); |
| 292 | QPDF_DLL | 291 | QPDF_DLL |
| @@ -295,7 +294,6 @@ class QPDFJob | @@ -295,7 +294,6 @@ class QPDFJob | ||
| 295 | bool checkRequiresPassword(); | 294 | bool checkRequiresPassword(); |
| 296 | QPDF_DLL | 295 | QPDF_DLL |
| 297 | bool checkIsEncrypted(); | 296 | bool checkIsEncrypted(); |
| 298 | - // /QXXXQ | ||
| 299 | 297 | ||
| 300 | // Execute the job | 298 | // Execute the job |
| 301 | QPDF_DLL | 299 | QPDF_DLL |
| @@ -320,17 +318,12 @@ class QPDFJob | @@ -320,17 +318,12 @@ class QPDFJob | ||
| 320 | void doIfVerbose( | 318 | void doIfVerbose( |
| 321 | std::function<void(std::ostream&, std::string const& prefix)> fn); | 319 | std::function<void(std::ostream&, std::string const& prefix)> fn); |
| 322 | 320 | ||
| 323 | - | ||
| 324 | - private: | ||
| 325 | - public: // QXXXQ | 321 | + // Provide a string that is the help information ("schema" for the |
| 322 | + // qpdf-specific JSON object) for version 1 of the JSON output. | ||
| 326 | QPDF_DLL | 323 | QPDF_DLL |
| 327 | - static JSON json_schema(std::set<std::string>* keys = 0); | ||
| 328 | - | ||
| 329 | - private: // QXXXQ | ||
| 330 | - QPDF_DLL | ||
| 331 | - static void parse_object_id( | ||
| 332 | - std::string const& objspec, bool& trailer, int& obj, int& gen); | 324 | + static std::string json_out_schema_v1(); |
| 333 | 325 | ||
| 326 | + private: | ||
| 334 | struct RotationSpec | 327 | struct RotationSpec |
| 335 | { | 328 | { |
| 336 | RotationSpec(int angle = 0, bool relative = false) : | 329 | RotationSpec(int angle = 0, bool relative = false) : |
| @@ -345,7 +338,6 @@ class QPDFJob | @@ -345,7 +338,6 @@ class QPDFJob | ||
| 345 | 338 | ||
| 346 | enum password_mode_e { pm_bytes, pm_hex_bytes, pm_unicode, pm_auto }; | 339 | enum password_mode_e { pm_bytes, pm_hex_bytes, pm_unicode, pm_auto }; |
| 347 | 340 | ||
| 348 | - public: // QXXXQ begin public | ||
| 349 | struct UnderOverlay | 341 | struct UnderOverlay |
| 350 | { | 342 | { |
| 351 | UnderOverlay(char const* which) : | 343 | UnderOverlay(char const* which) : |
| @@ -368,13 +360,10 @@ class QPDFJob | @@ -368,13 +360,10 @@ class QPDFJob | ||
| 368 | std::vector<int> repeat_pagenos; | 360 | std::vector<int> repeat_pagenos; |
| 369 | }; | 361 | }; |
| 370 | 362 | ||
| 371 | - size_t oi_min_width; | ||
| 372 | - size_t oi_min_height; | ||
| 373 | - size_t oi_min_area; | ||
| 374 | - // QXXXQ END-PUBLIC | ||
| 375 | - | ||
| 376 | - private: | ||
| 377 | // Helper functions | 363 | // Helper functions |
| 364 | + static JSON json_schema(std::set<std::string>* keys = 0); | ||
| 365 | + static void parse_object_id( | ||
| 366 | + std::string const& objspec, bool& trailer, int& obj, int& gen); | ||
| 378 | void parseRotationParameter(std::string const&); | 367 | void parseRotationParameter(std::string const&); |
| 379 | std::vector<int> parseNumrange(char const* range, int max); | 368 | std::vector<int> parseNumrange(char const* range, int max); |
| 380 | 369 | ||
| @@ -397,17 +386,19 @@ class QPDFJob | @@ -397,17 +386,19 @@ class QPDFJob | ||
| 397 | std::vector<std::shared_ptr<QPDF>>& page_heap); | 386 | std::vector<std::shared_ptr<QPDF>>& page_heap); |
| 398 | bool shouldRemoveUnreferencedResources(QPDF& pdf); | 387 | bool shouldRemoveUnreferencedResources(QPDF& pdf); |
| 399 | void handleRotations(QPDF& pdf); | 388 | void handleRotations(QPDF& pdf); |
| 389 | + void getUOPagenos(UnderOverlay& uo, | ||
| 390 | + std::map<int, std::vector<int> >& pagenos); | ||
| 400 | void handleUnderOverlay(QPDF& pdf); | 391 | void handleUnderOverlay(QPDF& pdf); |
| 401 | void doUnderOverlayForPage( | 392 | void doUnderOverlayForPage( |
| 402 | QPDF& pdf, | 393 | QPDF& pdf, |
| 403 | - QPDFJob::UnderOverlay& uo, | 394 | + UnderOverlay& uo, |
| 404 | std::map<int, std::vector<int> >& pagenos, | 395 | std::map<int, std::vector<int> >& pagenos, |
| 405 | size_t page_idx, | 396 | size_t page_idx, |
| 406 | std::map<int, QPDFObjectHandle>& fo, | 397 | std::map<int, QPDFObjectHandle>& fo, |
| 407 | std::vector<QPDFPageObjectHelper>& pages, | 398 | std::vector<QPDFPageObjectHelper>& pages, |
| 408 | QPDFPageObjectHelper& dest_page, | 399 | QPDFPageObjectHelper& dest_page, |
| 409 | bool before); | 400 | bool before); |
| 410 | - void validateUnderOverlay(QPDF& pdf, QPDFJob::UnderOverlay* uo); | 401 | + void validateUnderOverlay(QPDF& pdf, UnderOverlay* uo); |
| 411 | void handleTransformations(QPDF& pdf); | 402 | void handleTransformations(QPDF& pdf); |
| 412 | void addAttachments(QPDF& pdf); | 403 | void addAttachments(QPDF& pdf); |
| 413 | void copyAttachments(QPDF& pdf); | 404 | void copyAttachments(QPDF& pdf); |
| @@ -556,6 +547,9 @@ class QPDFJob | @@ -556,6 +547,9 @@ class QPDFJob | ||
| 556 | bool externalize_inline_images; | 547 | bool externalize_inline_images; |
| 557 | bool keep_inline_images; | 548 | bool keep_inline_images; |
| 558 | bool remove_page_labels; | 549 | bool remove_page_labels; |
| 550 | + size_t oi_min_width; | ||
| 551 | + size_t oi_min_height; | ||
| 552 | + size_t oi_min_area; | ||
| 559 | size_t ii_min_bytes; | 553 | size_t ii_min_bytes; |
| 560 | UnderOverlay underlay; | 554 | UnderOverlay underlay; |
| 561 | UnderOverlay overlay; | 555 | UnderOverlay overlay; |
libqpdf/QPDFJob.cc
| @@ -43,7 +43,11 @@ namespace | @@ -43,7 +43,11 @@ namespace | ||
| 43 | class ImageOptimizer: public QPDFObjectHandle::StreamDataProvider | 43 | class ImageOptimizer: public QPDFObjectHandle::StreamDataProvider |
| 44 | { | 44 | { |
| 45 | public: | 45 | public: |
| 46 | - ImageOptimizer(QPDFJob& o, QPDFObjectHandle& image); | 46 | + ImageOptimizer(QPDFJob& o, |
| 47 | + size_t oi_min_width, | ||
| 48 | + size_t oi_min_height, | ||
| 49 | + size_t oi_min_area, | ||
| 50 | + QPDFObjectHandle& image); | ||
| 47 | virtual ~ImageOptimizer() | 51 | virtual ~ImageOptimizer() |
| 48 | { | 52 | { |
| 49 | } | 53 | } |
| @@ -55,6 +59,9 @@ namespace | @@ -55,6 +59,9 @@ namespace | ||
| 55 | 59 | ||
| 56 | private: | 60 | private: |
| 57 | QPDFJob& o; | 61 | QPDFJob& o; |
| 62 | + size_t oi_min_width; | ||
| 63 | + size_t oi_min_height; | ||
| 64 | + size_t oi_min_area; | ||
| 58 | QPDFObjectHandle image; | 65 | QPDFObjectHandle image; |
| 59 | }; | 66 | }; |
| 60 | 67 | ||
| @@ -101,8 +108,15 @@ namespace | @@ -101,8 +108,15 @@ namespace | ||
| 101 | }; | 108 | }; |
| 102 | } | 109 | } |
| 103 | 110 | ||
| 104 | -ImageOptimizer::ImageOptimizer(QPDFJob& o, QPDFObjectHandle& image) : | 111 | +ImageOptimizer::ImageOptimizer(QPDFJob& o, |
| 112 | + size_t oi_min_width, | ||
| 113 | + size_t oi_min_height, | ||
| 114 | + size_t oi_min_area, | ||
| 115 | + QPDFObjectHandle& image) : | ||
| 105 | o(o), | 116 | o(o), |
| 117 | + oi_min_width(oi_min_width), | ||
| 118 | + oi_min_height(oi_min_height), | ||
| 119 | + oi_min_area(oi_min_area), | ||
| 106 | image(image) | 120 | image(image) |
| 107 | { | 121 | { |
| 108 | } | 122 | } |
| @@ -194,9 +208,9 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next) | @@ -194,9 +208,9 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next) | ||
| 194 | } | 208 | } |
| 195 | return result; | 209 | return result; |
| 196 | } | 210 | } |
| 197 | - if (((o.oi_min_width > 0) && (w <= o.oi_min_width)) || | ||
| 198 | - ((o.oi_min_height > 0) && (h <= o.oi_min_height)) || | ||
| 199 | - ((o.oi_min_area > 0) && ((w * h) <= o.oi_min_area))) | 211 | + if (((this->oi_min_width > 0) && (w <= this->oi_min_width)) || |
| 212 | + ((this->oi_min_height > 0) && (h <= this->oi_min_height)) || | ||
| 213 | + ((this->oi_min_area > 0) && ((w * h) <= this->oi_min_area))) | ||
| 200 | { | 214 | { |
| 201 | QTC::TC("qpdf", "qpdf image optimize too small"); | 215 | QTC::TC("qpdf", "qpdf image optimize too small"); |
| 202 | if (! description.empty()) | 216 | if (! description.empty()) |
| @@ -415,7 +429,10 @@ QPDFJob::Members::Members() : | @@ -415,7 +429,10 @@ QPDFJob::Members::Members() : | ||
| 415 | externalize_inline_images(false), | 429 | externalize_inline_images(false), |
| 416 | keep_inline_images(false), | 430 | keep_inline_images(false), |
| 417 | remove_page_labels(false), | 431 | remove_page_labels(false), |
| 418 | - ii_min_bytes(1024), // QXXXQ comment with oi_* | 432 | + oi_min_width(128), // Default values for these |
| 433 | + oi_min_height(128), // oi and ii flags are in --help | ||
| 434 | + oi_min_area(16384), // and in the manual. | ||
| 435 | + ii_min_bytes(1024), // | ||
| 419 | underlay("underlay"), | 436 | underlay("underlay"), |
| 420 | overlay("overlay"), | 437 | overlay("overlay"), |
| 421 | under_overlay(0), | 438 | under_overlay(0), |
| @@ -427,9 +444,6 @@ QPDFJob::Members::Members() : | @@ -427,9 +444,6 @@ QPDFJob::Members::Members() : | ||
| 427 | } | 444 | } |
| 428 | 445 | ||
| 429 | QPDFJob::QPDFJob() : | 446 | QPDFJob::QPDFJob() : |
| 430 | - oi_min_width(128), // Default values for these | ||
| 431 | - oi_min_height(128), // oi flags are in --help | ||
| 432 | - oi_min_area(16384), // and in the manual. | ||
| 433 | m(new Members()) | 447 | m(new Members()) |
| 434 | { | 448 | { |
| 435 | } | 449 | } |
| @@ -1803,6 +1817,12 @@ QPDFJob::json_schema(std::set<std::string>* keys) | @@ -1803,6 +1817,12 @@ QPDFJob::json_schema(std::set<std::string>* keys) | ||
| 1803 | return schema; | 1817 | return schema; |
| 1804 | } | 1818 | } |
| 1805 | 1819 | ||
| 1820 | +std::string | ||
| 1821 | +QPDFJob::json_out_schema_v1() | ||
| 1822 | +{ | ||
| 1823 | + return json_schema().unparse(); | ||
| 1824 | +} | ||
| 1825 | + | ||
| 1806 | void | 1826 | void |
| 1807 | QPDFJob::doJSON(QPDF& pdf) | 1827 | QPDFJob::doJSON(QPDF& pdf) |
| 1808 | { | 1828 | { |
| @@ -2240,8 +2260,9 @@ QPDFJob::doUnderOverlayForPage( | @@ -2240,8 +2260,9 @@ QPDFJob::doUnderOverlayForPage( | ||
| 2240 | } | 2260 | } |
| 2241 | } | 2261 | } |
| 2242 | 2262 | ||
| 2243 | -static void get_uo_pagenos(QPDFJob::UnderOverlay& uo, | ||
| 2244 | - std::map<int, std::vector<int> >& pagenos) | 2263 | +void |
| 2264 | +QPDFJob::getUOPagenos(QPDFJob::UnderOverlay& uo, | ||
| 2265 | + std::map<int, std::vector<int> >& pagenos) | ||
| 2245 | { | 2266 | { |
| 2246 | size_t idx = 0; | 2267 | size_t idx = 0; |
| 2247 | size_t from_size = uo.from_pagenos.size(); | 2268 | size_t from_size = uo.from_pagenos.size(); |
| @@ -2272,9 +2293,9 @@ QPDFJob::handleUnderOverlay(QPDF& pdf) | @@ -2272,9 +2293,9 @@ QPDFJob::handleUnderOverlay(QPDF& pdf) | ||
| 2272 | return; | 2293 | return; |
| 2273 | } | 2294 | } |
| 2274 | std::map<int, std::vector<int> > underlay_pagenos; | 2295 | std::map<int, std::vector<int> > underlay_pagenos; |
| 2275 | - get_uo_pagenos(m->underlay, underlay_pagenos); | 2296 | + getUOPagenos(m->underlay, underlay_pagenos); |
| 2276 | std::map<int, std::vector<int> > overlay_pagenos; | 2297 | std::map<int, std::vector<int> > overlay_pagenos; |
| 2277 | - get_uo_pagenos(m->overlay, overlay_pagenos); | 2298 | + getUOPagenos(m->overlay, overlay_pagenos); |
| 2278 | std::map<int, QPDFObjectHandle> underlay_fo; | 2299 | std::map<int, QPDFObjectHandle> underlay_fo; |
| 2279 | std::map<int, QPDFObjectHandle> overlay_fo; | 2300 | std::map<int, QPDFObjectHandle> overlay_fo; |
| 2280 | std::vector<QPDFPageObjectHelper> upages; | 2301 | std::vector<QPDFPageObjectHelper> upages; |
| @@ -2439,7 +2460,6 @@ QPDFJob::copyAttachments(QPDF& pdf) | @@ -2439,7 +2460,6 @@ QPDFJob::copyAttachments(QPDF& pdf) | ||
| 2439 | void | 2460 | void |
| 2440 | QPDFJob::handleTransformations(QPDF& pdf) | 2461 | QPDFJob::handleTransformations(QPDF& pdf) |
| 2441 | { | 2462 | { |
| 2442 | - QPDFJob& o = *this; // QXXXQ | ||
| 2443 | QPDFPageDocumentHelper dh(pdf); | 2463 | QPDFPageDocumentHelper dh(pdf); |
| 2444 | std::shared_ptr<QPDFAcroFormDocumentHelper> afdh; | 2464 | std::shared_ptr<QPDFAcroFormDocumentHelper> afdh; |
| 2445 | auto make_afdh = [&]() { | 2465 | auto make_afdh = [&]() { |
| @@ -2474,7 +2494,9 @@ QPDFJob::handleTransformations(QPDF& pdf) | @@ -2474,7 +2494,9 @@ QPDFJob::handleTransformations(QPDF& pdf) | ||
| 2474 | { | 2494 | { |
| 2475 | std::string name = iter2.first; | 2495 | std::string name = iter2.first; |
| 2476 | QPDFObjectHandle& image = iter2.second; | 2496 | QPDFObjectHandle& image = iter2.second; |
| 2477 | - ImageOptimizer* io = new ImageOptimizer(o, image); | 2497 | + ImageOptimizer* io = new ImageOptimizer( |
| 2498 | + *this, m->oi_min_width, m->oi_min_height, | ||
| 2499 | + m->oi_min_area, image); | ||
| 2478 | PointerHolder<QPDFObjectHandle::StreamDataProvider> sdp(io); | 2500 | PointerHolder<QPDFObjectHandle::StreamDataProvider> sdp(io); |
| 2479 | if (io->evaluate("image " + name + " on page " + | 2501 | if (io->evaluate("image " + name + " on page " + |
| 2480 | QUtil::int_to_string(pageno))) | 2502 | QUtil::int_to_string(pageno))) |
libqpdf/QPDFJob_argv.cc
| @@ -181,7 +181,7 @@ ArgParser::argJsonHelp() | @@ -181,7 +181,7 @@ ArgParser::argJsonHelp() | ||
| 181 | << std::endl | 181 | << std::endl |
| 182 | << "be null, and others will have values that apply to unencrypted files." | 182 | << "be null, and others will have values that apply to unencrypted files." |
| 183 | << std::endl | 183 | << std::endl |
| 184 | - << QPDFJob::json_schema().unparse() | 184 | + << QPDFJob::json_out_schema_v1() |
| 185 | << std::endl; | 185 | << std::endl; |
| 186 | } | 186 | } |
| 187 | 187 |
libqpdf/QPDFJob_config.cc
| @@ -338,21 +338,21 @@ QPDFJob::Config::normalizeContent(char const* parameter) | @@ -338,21 +338,21 @@ QPDFJob::Config::normalizeContent(char const* parameter) | ||
| 338 | QPDFJob::Config& | 338 | QPDFJob::Config& |
| 339 | QPDFJob::Config::oiMinArea(char const* parameter) | 339 | QPDFJob::Config::oiMinArea(char const* parameter) |
| 340 | { | 340 | { |
| 341 | - o.oi_min_area = QUtil::string_to_uint(parameter); | 341 | + o.m->oi_min_area = QUtil::string_to_uint(parameter); |
| 342 | return *this; | 342 | return *this; |
| 343 | } | 343 | } |
| 344 | 344 | ||
| 345 | QPDFJob::Config& | 345 | QPDFJob::Config& |
| 346 | QPDFJob::Config::oiMinHeight(char const* parameter) | 346 | QPDFJob::Config::oiMinHeight(char const* parameter) |
| 347 | { | 347 | { |
| 348 | - o.oi_min_height = QUtil::string_to_uint(parameter); | 348 | + o.m->oi_min_height = QUtil::string_to_uint(parameter); |
| 349 | return *this; | 349 | return *this; |
| 350 | } | 350 | } |
| 351 | 351 | ||
| 352 | QPDFJob::Config& | 352 | QPDFJob::Config& |
| 353 | QPDFJob::Config::oiMinWidth(char const* parameter) | 353 | QPDFJob::Config::oiMinWidth(char const* parameter) |
| 354 | { | 354 | { |
| 355 | - o.oi_min_width = QUtil::string_to_uint(parameter); | 355 | + o.m->oi_min_width = QUtil::string_to_uint(parameter); |
| 356 | return *this; | 356 | return *this; |
| 357 | } | 357 | } |
| 358 | 358 |