[poppler] CMakeLists.txt config.h.cmake poppler/JPEG2000Stream.cc

Albert Astals Cid aacid at kemper.freedesktop.org
Fri Dec 1 22:35:47 UTC 2017


 CMakeLists.txt            |   54 +----------------
 config.h.cmake            |    6 -
 poppler/JPEG2000Stream.cc |  145 ----------------------------------------------
 3 files changed, 5 insertions(+), 200 deletions(-)

New commits:
commit 0ea5ad393601f0b1c060268cf1c310b47f928f7b
Author: Albert Astals Cid <aacid at kde.org>
Date:   Fri Dec 1 23:35:28 2017 +0100

    Stop supporting openjpeg1, you really want to use openjpeg2 :)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 20882cf0..5d141ade 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,7 +50,7 @@ option(ENABLE_GLIB "Compile poppler glib wrapper." ON)
 option(ENABLE_GTK_DOC "Whether to generate glib API documentation." OFF)
 option(ENABLE_QT4 "Compile poppler qt4 wrapper." ON)
 option(ENABLE_QT5 "Compile poppler qt5 wrapper." ON)
-set(ENABLE_LIBOPENJPEG "auto" CACHE STRING "Use libopenjpeg for JPX streams. Possible values: auto, openjpeg1, openjpeg2, unmaintained, none. 'auto' prefers openjpeg2 over openjpeg1 if both are available. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no JPX decoder at all. Default: auto")
+set(ENABLE_LIBOPENJPEG "openjpeg2" CACHE STRING "Use libopenjpeg for JPX streams. Possible values: openjpeg2, unmaintained, none. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no JPX decoder at all. Default: openjpeg2")
 set(ENABLE_CMS "lcms2" CACHE STRING "Use color management system. Possible values: lcms2. Unset to disable color management system.")
 set(ENABLE_DCTDECODER "libjpeg" CACHE STRING "Use libjpeg for DCT streams. Possible values: libjpeg, unmaintained, none. will use libjpeg if available or fail if not. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no DCT decoder at all. Default: libjpeg")
 option(ENABLE_LIBCURL "Build libcurl based HTTP support." ON)
@@ -201,33 +201,9 @@ if(ENABLE_ZLIB_UNCOMPRESS AND NOT ENABLE_ZLIB)
   message("Warning: ENABLE_ZLIB_UNCOMPRESS requires ENABLE_ZLIB")
   set(ENABLE_ZLIB_UNCOMPRESS FALSE)
 endif()
-set(USE_OPENJPEG1 FALSE)
-set(USE_OPENJPEG2 FALSE)
 set(WITH_OPENJPEG FALSE)
-if(ENABLE_LIBOPENJPEG STREQUAL "auto")
+if(ENABLE_LIBOPENJPEG STREQUAL "openjpeg2")
   find_package(LIBOPENJPEG2)
-  set(USE_OPENJPEG2 ${LIBOPENJPEG2_FOUND})
-  set(WITH_OPENJPEG ${LIBOPENJPEG2_FOUND})
-  if(NOT LIBOPENJPEG2_FOUND)
-    find_package(LIBOPENJPEG)
-    set(USE_OPENJPEG1 ${LIBOPENJPEG_FOUND})
-    set(WITH_OPENJPEG ${LIBOPENJPEG_FOUND})  
-    if(NOT LIBOPENJPEG_FOUND)
-      message(FATAL_ERROR "Install libopenjpeg2 or libopenjpeg1 before trying to build poppler. You can also decide to use the internal unmaintained JPX decoder or none at all.")
-    endif()
-  endif()
-  set(HAVE_JPX_DECODER ON)
-elseif(ENABLE_LIBOPENJPEG STREQUAL "openjpeg1")
-  find_package(LIBOPENJPEG)
-  set(USE_OPENJPEG1 ${LIBOPENJPEG_FOUND})
-  set(WITH_OPENJPEG ${LIBOPENJPEG_FOUND})
-  if(NOT LIBOPENJPEG_FOUND)
-    message(FATAL_ERROR "Install libopenjpeg1 before trying to build poppler. You can also decide to use the internal unmaintained JPX decoder or none at all.")
-  endif()
-  set(HAVE_JPX_DECODER ON)
-elseif(ENABLE_LIBOPENJPEG STREQUAL "openjpeg2")
-  find_package(LIBOPENJPEG2)
-  set(USE_OPENJPEG2 ${LIBOPENJPEG2_FOUND})
   set(WITH_OPENJPEG ${LIBOPENJPEG2_FOUND})
   if(NOT LIBOPENJPEG2_FOUND)
     message(FATAL_ERROR "Install libopenjpeg2 before trying to build poppler. You can also decide to use the internal unmaintained JPX decoder or none at all.")
@@ -302,9 +278,6 @@ if(TIFF_FOUND)
   include_directories(${TIFF_INCLUDE_DIR})
   set(ENABLE_LIBTIFF ON)
 endif()
-if(LIBOPENJPEG_FOUND)
-  include_directories(${LIBOPENJPEG_INCLUDE_DIR})
-endif()
 if(LIBOPENJPEG2_FOUND)
   include_directories(${LIBOPENJPEG2_INCLUDE_DIRS})
 endif()
@@ -486,17 +459,10 @@ if (ENABLE_NSS3)
   )
   set(poppler_LIBS ${poppler_LIBS} ${NSS3_LIBRARIES})
 endif()
-if(LIBOPENJPEG_FOUND)
+if (LIBOPENJPEG2_FOUND)
   set(poppler_SRCS ${poppler_SRCS}
     poppler/JPEG2000Stream.cc
   )
-  set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG_LIBRARIES})
-  add_definitions(-DUSE_OPENJPEG1)
-elseif (LIBOPENJPEG2_FOUND)
-  set(poppler_SRCS ${poppler_SRCS}
-    poppler/JPEG2000Stream.cc
-  )
-  add_definitions(-DUSE_OPENJPEG2)
   set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG2_LIBRARIES})
 else ()
   set(poppler_SRCS ${poppler_SRCS}
@@ -658,11 +624,7 @@ if(ENABLE_XPDF_HEADERS)
       poppler/CurlPDFDocBuilder.h
       DESTINATION include/poppler)
   endif()
-  if(LIBOPENJPEG_FOUND)
-    install(FILES
-      poppler/JPEG2000Stream.h
-      DESTINATION include/poppler)
-  elseif(LIBOPENJPEG2_FOUND)
+  if(LIBOPENJPEG2_FOUND)
     install(FILES
       poppler/JPEG2000Stream.h
       DESTINATION include/poppler)
@@ -772,13 +734,7 @@ show_end_message_yesno("use zlib compress" ENABLE_ZLIB)
 show_end_message_yesno("use zlib uncompress" ENABLE_ZLIB_UNCOMPRESS)
 show_end_message_yesno("use nss3" ENABLE_NSS3)
 show_end_message_yesno("use curl" ENABLE_LIBCURL)
-show_end_message_yesno("use libopenjpeg" WITH_OPENJPEG)
-if(USE_OPENJPEG1)
-  message("      with openjpeg1")
-endif()
-if(USE_OPENJPEG2)
-  message("      with openjpeg2")
-endif()
+show_end_message_yesno("use libopenjpeg2" WITH_OPENJPEG)
 show_end_message_yesno("use lcms2" USE_CMS)
 show_end_message_yesno("command line utils" ENABLE_UTILS)
 show_end_message("test data dir" ${TESTDATADIR})
diff --git a/config.h.cmake b/config.h.cmake
index 03bebd7d..10ce5580 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -73,9 +73,6 @@
 /* Define if you have the iconv() function and it works. */
 #cmakedefine HAVE_ICONV 1
 
-/* Define to 1 if you have the `openjpeg' library (-lopenjpeg). */
-#cmakedefine HAVE_LIBOPENJPEG 1
-
 /* Define to 1 if you have the `z' library (-lz). */
 #cmakedefine HAVE_LIBZ 1
 
@@ -100,9 +97,6 @@
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #cmakedefine HAVE_NDIR_H 1
 
-/* Define to 1 if you have the <openjpeg.h> header file. */
-#cmakedefine HAVE_OPENJPEG_H 1
-
 /* Define to 1 if you have the `popen' function. */
 #cmakedefine HAVE_POPEN 1
 
diff --git a/poppler/JPEG2000Stream.cc b/poppler/JPEG2000Stream.cc
index 12ee33f1..078465a0 100644
--- a/poppler/JPEG2000Stream.cc
+++ b/poppler/JPEG2000Stream.cc
@@ -24,7 +24,6 @@
 	+ ((minor) *   100)				\
 	+ ((micro) *     1))
 
-#ifdef USE_OPENJPEG2
 #ifdef OPJ_VERSION_MAJOR
 #define OPENJPEG_VERSION OPENJPEG_VERSION_ENCODE(OPJ_VERSION_MAJOR, OPJ_VERSION_MINOR, OPJ_VERSION_BUILD)
 #else
@@ -33,7 +32,6 @@
 // assume there will be no API changes in 2.0.x.
 #define OPENJPEG_VERSION OPENJPEG_VERSION_ENCODE(2, 0, 0)
 #endif
-#endif
 
 struct JPXStreamPrivate {
   opj_image_t *image;
@@ -44,13 +42,7 @@ struct JPXStreamPrivate {
   GBool indexed;
   GBool inited;
   int smaskInData;
-#ifdef USE_OPENJPEG1
-  opj_dinfo_t *dinfo;
-  void init2(unsigned char *buf, int bufLen, OPJ_CODEC_FORMAT format, GBool indexed);
-#endif
-#ifdef USE_OPENJPEG2
   void init2(OPJ_CODEC_FORMAT format, unsigned char *data, int length, GBool indexed);
-#endif
 };
 
 static inline Guchar adjustComp(int r, int adjust, int depth, int sgndcorr, GBool indexed) {
@@ -90,9 +82,6 @@ JPXStream::JPXStream(Stream *strA) : FilterStream(strA) {
   priv->npixels = 0;
   priv->ncomps = 0;
   priv->indexed = gFalse;
-#ifdef USE_OPENJPEG1
-  priv->dinfo = NULL;
-#endif
 }
 
 JPXStream::~JPXStream() {
@@ -112,13 +101,6 @@ void JPXStream::close() {
     priv->image = NULL;
     priv->npixels = 0;
   }
-
-#ifdef USE_OPENJPEG1
-  if (priv->dinfo != NULL) {
-    opj_destroy_decompress(priv->dinfo);
-    priv->dinfo = NULL;
-  }
-#endif
 }
 
 Goffset JPXStream::getPos() {
@@ -162,13 +144,8 @@ void JPXStream::getImageParams(int *bitsPerComponent, StreamColorSpaceMode *csMo
   *bitsPerComponent = 8;
   int numComps = (priv->image) ? priv->image->numcomps : 1;
   if (priv->image) {
-#ifdef USE_OPENJPEG1
-    if (priv->image->color_space == CLRSPC_SRGB && numComps == 4) { numComps = 3; }
-    else if (priv->image->color_space == CLRSPC_SYCC && numComps == 4) { numComps = 3; }
-#else
     if (priv->image->color_space == OPJ_CLRSPC_SRGB && numComps == 4) { numComps = 3; }
     else if (priv->image->color_space == OPJ_CLRSPC_SYCC && numComps == 4) { numComps = 3; }
-#endif
     else if (numComps == 2) { numComps = 1; }
     else if (numComps > 4) { numComps = 4; }
   }
@@ -189,127 +166,6 @@ static void libopenjpeg_warning_callback(const char *msg, void * /*client_data*/
   error(errSyntaxWarning, -1, "{0:s}", msg);
 }
 
-#ifdef USE_OPENJPEG1
-
-#define BUFFER_INITIAL_SIZE 4096
-
-void JPXStream::init()
-{
-  Object oLen, cspace, smaskInData;
-  if (getDict()) oLen = getDict()->lookup("Length");
-  if (getDict()) cspace = getDict()->lookup("ColorSpace");
-  if (getDict()) smaskInData = getDict()->lookup("SMaskInData");
-
-  int bufSize = BUFFER_INITIAL_SIZE;
-  if (oLen.isInt()) bufSize = oLen.getInt();
-
-  if (cspace.isArray() && cspace.arrayGetLength() > 0) {
-    Object cstype = cspace.arrayGet(0);
-    if (cstype.isName("Indexed")) priv->indexed = gTrue;
-  }
-
-  priv->smaskInData = 0;
-  if (smaskInData.isInt()) priv->smaskInData = smaskInData.getInt();
-
-  int length = 0;
-  unsigned char *buf = str->toUnsignedChars(&length, bufSize);
-  priv->init2(buf, length, CODEC_JP2, priv->indexed);
-  free(buf);
-
-  if (priv->image) {
-    int numComps = (priv->image) ? priv->image->numcomps : 1;
-    int alpha = 0;
-    if (priv->image) {
-      if (priv->image->color_space == CLRSPC_SRGB && numComps == 4) { numComps = 3; alpha = 1; }
-      else if (priv->image->color_space == CLRSPC_SYCC && numComps == 4) { numComps = 3; alpha = 1; }
-      else if (numComps == 2) { numComps = 1; alpha = 1; }
-      else if (numComps > 4) { numComps = 4; alpha = 1; }
-      else { alpha = 0; }
-    }
-    priv->npixels = priv->image->comps[0].w * priv->image->comps[0].h;
-    priv->ncomps = priv->image->numcomps;
-    if (alpha == 1 && priv->smaskInData == 0) priv->ncomps--;
-    for (int component = 0; component < priv->ncomps; component++) {
-      if (priv->image->comps[component].data == NULL) {
-        close();
-        break;
-      }
-      unsigned char *cdata = (unsigned char *)priv->image->comps[component].data;
-      int adjust = 0;
-      int depth = priv->image->comps[component].prec;
-      if (priv->image->comps[component].prec > 8)
-	adjust = priv->image->comps[component].prec - 8;
-      int sgndcorr = 0;
-      if (priv->image->comps[component].sgnd)
-	sgndcorr = 1 << (priv->image->comps[0].prec - 1);
-      for (int i = 0; i < priv->npixels; i++) {
-	int r = priv->image->comps[component].data[i];
-	*(cdata++) = adjustComp(r, adjust, depth, sgndcorr, priv->indexed);
-      }
-    }
-  } else
-    priv->npixels = 0;
-
-  priv->counter = 0;
-  priv->ccounter = 0;
-  priv->inited = gTrue;
-}
-
-void JPXStreamPrivate::init2(unsigned char *buf, int bufLen, OPJ_CODEC_FORMAT format, GBool indexed)
-{
-  opj_cio_t *cio = NULL;
-
-  /* Use default decompression parameters */
-  opj_dparameters_t parameters;
-  opj_set_default_decoder_parameters(&parameters);
-#ifdef WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG
-  if (indexed)
-    parameters.flags = OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG;
-#endif
-
-  /* Configure the event manager to receive errors and warnings */
-  opj_event_mgr_t event_mgr;
-  memset(&event_mgr, 0, sizeof(opj_event_mgr_t));
-  event_mgr.error_handler = libopenjpeg_error_callback;
-  event_mgr.warning_handler = libopenjpeg_warning_callback;
-
-  /* Get the decoder handle of the format */
-  dinfo = opj_create_decompress(format);
-  if (dinfo == NULL) goto error;
-  /* Catch events using our callbacks */
-  opj_set_event_mgr((opj_common_ptr)dinfo, &event_mgr, NULL);
-
-  /* Setup the decoder decoding parameters */
-  opj_setup_decoder(dinfo, &parameters);
-
-  /* Open a byte stream */
-  cio = opj_cio_open((opj_common_ptr)dinfo, buf, bufLen);
-  if (cio == NULL) goto error;
-
-  /* Decode the stream and fill the image structure */
-  image = opj_decode(dinfo, cio);
-
-  /* Close the byte stream */
-  opj_cio_close(cio);
-
-  if (image == NULL) goto error;
-  else return;
-
-error:
-  if (format == CODEC_JP2) {
-    error(errSyntaxWarning, -1, "Did not succeed opening JPX Stream as JP2, trying as J2K.");
-    init2(buf, bufLen, CODEC_J2K, indexed);
-  } else if (format == CODEC_J2K) {
-    error(errSyntaxWarning, -1, "Did not succeed opening JPX Stream as J2K, trying as JPT.");
-    init2(buf, bufLen, CODEC_JPT, indexed);
-  } else {
-    error(errSyntaxError, -1, "Did not succeed opening JPX Stream.");
-  }
-}
-#endif
-
-
-#ifdef USE_OPENJPEG2
 typedef struct JPXData_s
 {
   unsigned char *data;
@@ -508,4 +364,3 @@ error:
     error(errSyntaxError, -1, "Did no succeed opening JPX Stream.");
   }
 }
-#endif


More information about the poppler mailing list