Commit 1253d1be60bd74a94ba78ff7064a8e7fce1ab514
Committed by
Jay Berkenbilt
1 parent
33e8195c
Tidy pdf-create example
Convert loop to use range-based for statement. Remove unnecessary variables.
Showing
1 changed file
with
15 additions
and
27 deletions
examples/pdf-create.cc
| ... | ... | @@ -182,15 +182,15 @@ void add_page(QPDFPageDocumentHelper& dh, QPDFObjectHandle font, |
| 182 | 182 | size_t width = p->getWidth(); |
| 183 | 183 | size_t height = p->getHeight(); |
| 184 | 184 | QPDFObjectHandle image = QPDFObjectHandle::newStream(&pdf); |
| 185 | - image.replaceDict("<<" | |
| 185 | + auto image_dict = "<<" | |
| 186 | 186 | " /Type /XObject" |
| 187 | 187 | " /Subtype /Image" |
| 188 | 188 | " /BitsPerComponent 8" |
| 189 | - ">>"_qpdf); | |
| 190 | - QPDFObjectHandle image_dict = image.getDict(); | |
| 189 | + ">>"_qpdf; | |
| 191 | 190 | image_dict.replaceKey("/ColorSpace", newName(color_space)); |
| 192 | 191 | image_dict.replaceKey("/Width", newInteger(width)); |
| 193 | 192 | image_dict.replaceKey("/Height", newInteger(height)); |
| 193 | + image.replaceDict(image_dict); | |
| 194 | 194 | |
| 195 | 195 | // Provide the stream data. |
| 196 | 196 | image.replaceStreamData(provider, |
| ... | ... | @@ -211,21 +211,16 @@ void add_page(QPDFPageDocumentHelper& dh, QPDFObjectHandle font, |
| 211 | 211 | resources.replaceKey("/Font", rfont); |
| 212 | 212 | resources.replaceKey("/XObject", xobject); |
| 213 | 213 | |
| 214 | - QPDFObjectHandle mediabox = QPDFObjectHandle::newArray(); | |
| 215 | - mediabox.appendItem(newInteger(0)); | |
| 216 | - mediabox.appendItem(newInteger(0)); | |
| 217 | - mediabox.appendItem(newInteger(612)); | |
| 218 | - mediabox.appendItem(newInteger(392)); | |
| 219 | - | |
| 220 | 214 | // Create the page content stream |
| 221 | 215 | QPDFObjectHandle contents = createPageContents( |
| 222 | 216 | pdf, color_space + " with filter " + filter); |
| 223 | 217 | |
| 224 | 218 | // Create the page dictionary |
| 225 | 219 | QPDFObjectHandle page = pdf.makeIndirectObject( |
| 226 | - QPDFObjectHandle::newDictionary()); | |
| 227 | - page.replaceKey("/Type", newName("/Page")); | |
| 228 | - page.replaceKey("/MediaBox", mediabox); | |
| 220 | + "<<" | |
| 221 | + " /Type /Page" | |
| 222 | + " /MediaBox [0 0 612 392]" | |
| 223 | + ">>"_qpdf); | |
| 229 | 224 | page.replaceKey("/Contents", contents); |
| 230 | 225 | page.replaceKey("/Resources", resources); |
| 231 | 226 | |
| ... | ... | @@ -257,20 +252,16 @@ static void check(char const* filename, |
| 257 | 252 | |
| 258 | 253 | QPDF pdf; |
| 259 | 254 | pdf.processFile(filename); |
| 260 | - QPDFPageDocumentHelper dh(pdf); | |
| 261 | - std::vector<QPDFPageObjectHelper> pages = dh.getAllPages(); | |
| 255 | + auto pages = QPDFPageDocumentHelper(pdf).getAllPages(); | |
| 262 | 256 | if (n_color_spaces * n_filters != pages.size()) |
| 263 | 257 | { |
| 264 | 258 | throw std::logic_error("incorrect number of pages"); |
| 265 | 259 | } |
| 266 | 260 | size_t pageno = 1; |
| 267 | 261 | bool errors = false; |
| 268 | - for (std::vector<QPDFPageObjectHelper>::iterator page_iter = | |
| 269 | - pages.begin(); | |
| 270 | - page_iter != pages.end(); ++page_iter) | |
| 262 | + for (auto& page : pages) | |
| 271 | 263 | { |
| 272 | - QPDFPageObjectHelper& page(*page_iter); | |
| 273 | - std::map<std::string, QPDFObjectHandle> images = page.getImages(); | |
| 264 | + auto images = page.getImages(); | |
| 274 | 265 | if (images.size() != 1) |
| 275 | 266 | { |
| 276 | 267 | throw std::logic_error("incorrect number of images on page"); |
| ... | ... | @@ -279,8 +270,7 @@ static void check(char const* filename, |
| 279 | 270 | // Check filter and color space. |
| 280 | 271 | std::string desired_color_space = |
| 281 | 272 | color_spaces[(pageno - 1) / n_color_spaces]; |
| 282 | - std::string desired_filter = | |
| 283 | - filters[(pageno - 1) % n_filters]; | |
| 273 | + std::string desired_filter = filters[(pageno - 1) % n_filters]; | |
| 284 | 274 | // In the default mode, QPDFWriter will compress with |
| 285 | 275 | // /FlateDecode if no filters are provided. |
| 286 | 276 | if (desired_filter == "null") |
| ... | ... | @@ -310,7 +300,7 @@ static void check(char const* filename, |
| 310 | 300 | if (! this_errors) |
| 311 | 301 | { |
| 312 | 302 | // Check image data |
| 313 | - PointerHolder<Buffer> actual_data = | |
| 303 | + auto actual_data = | |
| 314 | 304 | image.getStreamData(qpdf_dl_all); |
| 315 | 305 | ImageProvider* p = new ImageProvider(desired_color_space, "null"); |
| 316 | 306 | PointerHolder<QPDFObjectHandle::StreamDataProvider> provider(p); |
| ... | ... | @@ -399,13 +389,11 @@ static void create_pdf(char const* filename) |
| 399 | 389 | filters.push_back("/DCTDecode"); |
| 400 | 390 | filters.push_back("/RunLengthDecode"); |
| 401 | 391 | QPDFPageDocumentHelper dh(pdf); |
| 402 | - for (std::vector<std::string>::iterator c_iter = color_spaces.begin(); | |
| 403 | - c_iter != color_spaces.end(); ++c_iter) | |
| 392 | + for (auto const& color_space : color_spaces) | |
| 404 | 393 | { |
| 405 | - for (std::vector<std::string>::iterator f_iter = filters.begin(); | |
| 406 | - f_iter != filters.end(); ++f_iter) | |
| 394 | + for (auto const& filter : filters) | |
| 407 | 395 | { |
| 408 | - add_page(dh, font, *c_iter, *f_iter); | |
| 396 | + add_page(dh, font, color_space, filter); | |
| 409 | 397 | } |
| 410 | 398 | } |
| 411 | 399 | ... | ... |