Commit edef2cd330d0f4ca77f75e7192628a64bf67de3e

Authored by Jay Berkenbilt
1 parent f2409f4f

QPDFJob: make remaining members private

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&amp; 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&lt;std::string&gt;* 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&amp; 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&amp; 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&amp; 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  
... ...