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 | 284 | QPDF_DLL |
| 285 | 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 | 289 | QPDF_DLL |
| 291 | 290 | bool suppressWarnings(); |
| 292 | 291 | QPDF_DLL |
| ... | ... | @@ -295,7 +294,6 @@ class QPDFJob |
| 295 | 294 | bool checkRequiresPassword(); |
| 296 | 295 | QPDF_DLL |
| 297 | 296 | bool checkIsEncrypted(); |
| 298 | - // /QXXXQ | |
| 299 | 297 | |
| 300 | 298 | // Execute the job |
| 301 | 299 | QPDF_DLL |
| ... | ... | @@ -320,17 +318,12 @@ class QPDFJob |
| 320 | 318 | void doIfVerbose( |
| 321 | 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 | 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 | 327 | struct RotationSpec |
| 335 | 328 | { |
| 336 | 329 | RotationSpec(int angle = 0, bool relative = false) : |
| ... | ... | @@ -345,7 +338,6 @@ class QPDFJob |
| 345 | 338 | |
| 346 | 339 | enum password_mode_e { pm_bytes, pm_hex_bytes, pm_unicode, pm_auto }; |
| 347 | 340 | |
| 348 | - public: // QXXXQ begin public | |
| 349 | 341 | struct UnderOverlay |
| 350 | 342 | { |
| 351 | 343 | UnderOverlay(char const* which) : |
| ... | ... | @@ -368,13 +360,10 @@ class QPDFJob |
| 368 | 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 | 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 | 367 | void parseRotationParameter(std::string const&); |
| 379 | 368 | std::vector<int> parseNumrange(char const* range, int max); |
| 380 | 369 | |
| ... | ... | @@ -397,17 +386,19 @@ class QPDFJob |
| 397 | 386 | std::vector<std::shared_ptr<QPDF>>& page_heap); |
| 398 | 387 | bool shouldRemoveUnreferencedResources(QPDF& pdf); |
| 399 | 388 | void handleRotations(QPDF& pdf); |
| 389 | + void getUOPagenos(UnderOverlay& uo, | |
| 390 | + std::map<int, std::vector<int> >& pagenos); | |
| 400 | 391 | void handleUnderOverlay(QPDF& pdf); |
| 401 | 392 | void doUnderOverlayForPage( |
| 402 | 393 | QPDF& pdf, |
| 403 | - QPDFJob::UnderOverlay& uo, | |
| 394 | + UnderOverlay& uo, | |
| 404 | 395 | std::map<int, std::vector<int> >& pagenos, |
| 405 | 396 | size_t page_idx, |
| 406 | 397 | std::map<int, QPDFObjectHandle>& fo, |
| 407 | 398 | std::vector<QPDFPageObjectHelper>& pages, |
| 408 | 399 | QPDFPageObjectHelper& dest_page, |
| 409 | 400 | bool before); |
| 410 | - void validateUnderOverlay(QPDF& pdf, QPDFJob::UnderOverlay* uo); | |
| 401 | + void validateUnderOverlay(QPDF& pdf, UnderOverlay* uo); | |
| 411 | 402 | void handleTransformations(QPDF& pdf); |
| 412 | 403 | void addAttachments(QPDF& pdf); |
| 413 | 404 | void copyAttachments(QPDF& pdf); |
| ... | ... | @@ -556,6 +547,9 @@ class QPDFJob |
| 556 | 547 | bool externalize_inline_images; |
| 557 | 548 | bool keep_inline_images; |
| 558 | 549 | bool remove_page_labels; |
| 550 | + size_t oi_min_width; | |
| 551 | + size_t oi_min_height; | |
| 552 | + size_t oi_min_area; | |
| 559 | 553 | size_t ii_min_bytes; |
| 560 | 554 | UnderOverlay underlay; |
| 561 | 555 | UnderOverlay overlay; | ... | ... |
libqpdf/QPDFJob.cc
| ... | ... | @@ -43,7 +43,11 @@ namespace |
| 43 | 43 | class ImageOptimizer: public QPDFObjectHandle::StreamDataProvider |
| 44 | 44 | { |
| 45 | 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 | 51 | virtual ~ImageOptimizer() |
| 48 | 52 | { |
| 49 | 53 | } |
| ... | ... | @@ -55,6 +59,9 @@ namespace |
| 55 | 59 | |
| 56 | 60 | private: |
| 57 | 61 | QPDFJob& o; |
| 62 | + size_t oi_min_width; | |
| 63 | + size_t oi_min_height; | |
| 64 | + size_t oi_min_area; | |
| 58 | 65 | QPDFObjectHandle image; |
| 59 | 66 | }; |
| 60 | 67 | |
| ... | ... | @@ -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 | 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 | 120 | image(image) |
| 107 | 121 | { |
| 108 | 122 | } |
| ... | ... | @@ -194,9 +208,9 @@ ImageOptimizer::makePipeline(std::string const& description, Pipeline* next) |
| 194 | 208 | } |
| 195 | 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 | 215 | QTC::TC("qpdf", "qpdf image optimize too small"); |
| 202 | 216 | if (! description.empty()) |
| ... | ... | @@ -415,7 +429,10 @@ QPDFJob::Members::Members() : |
| 415 | 429 | externalize_inline_images(false), |
| 416 | 430 | keep_inline_images(false), |
| 417 | 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 | 436 | underlay("underlay"), |
| 420 | 437 | overlay("overlay"), |
| 421 | 438 | under_overlay(0), |
| ... | ... | @@ -427,9 +444,6 @@ QPDFJob::Members::Members() : |
| 427 | 444 | } |
| 428 | 445 | |
| 429 | 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 | 447 | m(new Members()) |
| 434 | 448 | { |
| 435 | 449 | } |
| ... | ... | @@ -1803,6 +1817,12 @@ QPDFJob::json_schema(std::set<std::string>* keys) |
| 1803 | 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 | 1826 | void |
| 1807 | 1827 | QPDFJob::doJSON(QPDF& pdf) |
| 1808 | 1828 | { |
| ... | ... | @@ -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 | 2267 | size_t idx = 0; |
| 2247 | 2268 | size_t from_size = uo.from_pagenos.size(); |
| ... | ... | @@ -2272,9 +2293,9 @@ QPDFJob::handleUnderOverlay(QPDF& pdf) |
| 2272 | 2293 | return; |
| 2273 | 2294 | } |
| 2274 | 2295 | std::map<int, std::vector<int> > underlay_pagenos; |
| 2275 | - get_uo_pagenos(m->underlay, underlay_pagenos); | |
| 2296 | + getUOPagenos(m->underlay, underlay_pagenos); | |
| 2276 | 2297 | std::map<int, std::vector<int> > overlay_pagenos; |
| 2277 | - get_uo_pagenos(m->overlay, overlay_pagenos); | |
| 2298 | + getUOPagenos(m->overlay, overlay_pagenos); | |
| 2278 | 2299 | std::map<int, QPDFObjectHandle> underlay_fo; |
| 2279 | 2300 | std::map<int, QPDFObjectHandle> overlay_fo; |
| 2280 | 2301 | std::vector<QPDFPageObjectHelper> upages; |
| ... | ... | @@ -2439,7 +2460,6 @@ QPDFJob::copyAttachments(QPDF& pdf) |
| 2439 | 2460 | void |
| 2440 | 2461 | QPDFJob::handleTransformations(QPDF& pdf) |
| 2441 | 2462 | { |
| 2442 | - QPDFJob& o = *this; // QXXXQ | |
| 2443 | 2463 | QPDFPageDocumentHelper dh(pdf); |
| 2444 | 2464 | std::shared_ptr<QPDFAcroFormDocumentHelper> afdh; |
| 2445 | 2465 | auto make_afdh = [&]() { |
| ... | ... | @@ -2474,7 +2494,9 @@ QPDFJob::handleTransformations(QPDF& pdf) |
| 2474 | 2494 | { |
| 2475 | 2495 | std::string name = iter2.first; |
| 2476 | 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 | 2500 | PointerHolder<QPDFObjectHandle::StreamDataProvider> sdp(io); |
| 2479 | 2501 | if (io->evaluate("image " + name + " on page " + |
| 2480 | 2502 | QUtil::int_to_string(pageno))) | ... | ... |
libqpdf/QPDFJob_argv.cc
| ... | ... | @@ -181,7 +181,7 @@ ArgParser::argJsonHelp() |
| 181 | 181 | << std::endl |
| 182 | 182 | << "be null, and others will have values that apply to unencrypted files." |
| 183 | 183 | << std::endl |
| 184 | - << QPDFJob::json_schema().unparse() | |
| 184 | + << QPDFJob::json_out_schema_v1() | |
| 185 | 185 | << std::endl; |
| 186 | 186 | } |
| 187 | 187 | ... | ... |
libqpdf/QPDFJob_config.cc
| ... | ... | @@ -338,21 +338,21 @@ QPDFJob::Config::normalizeContent(char const* parameter) |
| 338 | 338 | QPDFJob::Config& |
| 339 | 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 | 342 | return *this; |
| 343 | 343 | } |
| 344 | 344 | |
| 345 | 345 | QPDFJob::Config& |
| 346 | 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 | 349 | return *this; |
| 350 | 350 | } |
| 351 | 351 | |
| 352 | 352 | QPDFJob::Config& |
| 353 | 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 | 356 | return *this; |
| 357 | 357 | } |
| 358 | 358 | ... | ... |