diff --git a/lib/input.js b/lib/input.js index 26aa2f54..436bfb75 100644 --- a/lib/input.js +++ b/lib/input.js @@ -30,7 +30,7 @@ const inputStreamParameters = [ // Format-specific 'jp2', 'openSlide', 'pdf', 'raw', 'svg', 'tiff', // Deprecated - 'failOnError', 'level', 'pdfBackground', 'subifd' + 'failOnError', 'openSlideLevel', 'pdfBackground', 'tiffSubifd' ]; /** @@ -246,14 +246,14 @@ function _createInputDescriptor (input, inputOptions, containerOptions) { // OpenSlide specific options if (is.object(inputOptions.openSlide) && is.defined(inputOptions.openSlide.level)) { if (is.integer(inputOptions.openSlide.level) && is.inRange(inputOptions.openSlide.level, 0, 256)) { - inputDescriptor.level = inputOptions.openSlide.level; + inputDescriptor.openSlideLevel = inputOptions.openSlide.level; } else { throw is.invalidParameterError('openSlide.level', 'integer between 0 and 256', inputOptions.openSlide.level); } } else if (is.defined(inputOptions.level)) { // Deprecated if (is.integer(inputOptions.level) && is.inRange(inputOptions.level, 0, 256)) { - inputDescriptor.level = inputOptions.level; + inputDescriptor.openSlideLevel = inputOptions.level; } else { throw is.invalidParameterError('level', 'integer between 0 and 256', inputOptions.level); } @@ -261,14 +261,14 @@ function _createInputDescriptor (input, inputOptions, containerOptions) { // TIFF specific options if (is.object(inputOptions.tiff) && is.defined(inputOptions.tiff.subifd)) { if (is.integer(inputOptions.tiff.subifd) && is.inRange(inputOptions.tiff.subifd, -1, 100000)) { - inputDescriptor.subifd = inputOptions.tiff.subifd; + inputDescriptor.tiffSubifd = inputOptions.tiff.subifd; } else { throw is.invalidParameterError('tiff.subifd', 'integer between -1 and 100000', inputOptions.tiff.subifd); } } else if (is.defined(inputOptions.subifd)) { // Deprecated if (is.integer(inputOptions.subifd) && is.inRange(inputOptions.subifd, -1, 100000)) { - inputDescriptor.subifd = inputOptions.subifd; + inputDescriptor.tiffSubifd = inputOptions.subifd; } else { throw is.invalidParameterError('subifd', 'integer between -1 and 100000', inputOptions.subifd); } diff --git a/src/common.cc b/src/common.cc index be285327..e465dc2f 100644 --- a/src/common.cc +++ b/src/common.cc @@ -109,12 +109,12 @@ namespace sharp { descriptor->svgHighBitdepth = AttrAsBool(input, "svgHighBitdepth"); } // Multi-level input (OpenSlide) - if (HasAttr(input, "level")) { - descriptor->level = AttrAsUint32(input, "level"); + if (HasAttr(input, "openSlideLevel")) { + descriptor->openSlideLevel = AttrAsUint32(input, "openSlideLevel"); } // subIFD (OME-TIFF) if (HasAttr(input, "subifd")) { - descriptor->subifd = AttrAsInt32(input, "subifd"); + descriptor->tiffSubifd = AttrAsInt32(input, "tiffSubifd"); } // // PDF background color if (HasAttr(input, "pdfBackground")) { @@ -404,31 +404,34 @@ namespace sharp { if (descriptor->unlimited && ImageTypeSupportsUnlimited(imageType)) { option->set("unlimited", true); } - if (imageType == ImageType::SVG || imageType == ImageType::PDF) { - option->set("dpi", descriptor->density); - } - if (imageType == ImageType::MAGICK) { - option->set("density", std::to_string(descriptor->density).data()); - } if (ImageTypeSupportsPage(imageType)) { option->set("n", descriptor->pages); option->set("page", descriptor->page); } - if (imageType == ImageType::SVG) { - option->set("stylesheet", descriptor->svgStylesheet.data()); - option->set("high_bitdepth", descriptor->svgHighBitdepth); - } - if (imageType == ImageType::OPENSLIDE) { - option->set("level", descriptor->level); - } - if (imageType == ImageType::TIFF) { - option->set("subifd", descriptor->subifd); - } - if (imageType == ImageType::PDF) { - option->set("background", descriptor->pdfBackground); - } - if (imageType == ImageType::JP2) { - option->set("oneshot", descriptor->jp2Oneshot); + switch (imageType) { + case ImageType::SVG: + option->set("dpi", descriptor->density) + ->set("stylesheet", descriptor->svgStylesheet.data()) + ->set("high_bitdepth", descriptor->svgHighBitdepth); + break; + case ImageType::TIFF: + option->set("tiffSubifd", descriptor->tiffSubifd); + break; + case ImageType::PDF: + option->set("dpi", descriptor->density) + ->set("background", descriptor->pdfBackground); + break; + case ImageType::OPENSLIDE: + option->set("openSlideLevel", descriptor->openSlideLevel); + break; + case ImageType::JP2: + option->set("oneshot", descriptor->jp2Oneshot); + break; + case ImageType::MAGICK: + option->set("density", std::to_string(descriptor->density).data()); + break; + default: + break; } return option; } diff --git a/src/common.h b/src/common.h index 37955cf7..e199942d 100644 --- a/src/common.h +++ b/src/common.h @@ -50,8 +50,6 @@ namespace sharp { bool rawPremultiplied; int pages; int page; - int level; - int subifd; int createChannels; int createWidth; int createHeight; @@ -79,6 +77,8 @@ namespace sharp { VipsAlign joinValign; std::string svgStylesheet; bool svgHighBitdepth; + int tiffSubifd; + int openSlideLevel; std::vector pdfBackground; bool jp2Oneshot; @@ -100,8 +100,6 @@ namespace sharp { rawPremultiplied(false), pages(1), page(0), - level(0), - subifd(-1), createChannels(0), createWidth(0), createHeight(0), @@ -124,6 +122,8 @@ namespace sharp { joinHalign(VIPS_ALIGN_LOW), joinValign(VIPS_ALIGN_LOW), svgHighBitdepth(false), + tiffSubifd(-1), + openSlideLevel(0), pdfBackground{ 255.0, 255.0, 255.0, 255.0 }, jp2Oneshot(false) {} };