Built SDL2_image and _mixer static
This commit is contained in:
		
							
								
								
									
										165
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/CMakeLists.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,165 @@ | ||||
| # CMake build for libtiff | ||||
| # | ||||
| # Copyright © 2015 Open Microscopy Environment / University of Dundee | ||||
| # Written by Roger Leigh <rleigh@codelibre.net> | ||||
| # | ||||
| # Permission to use, copy, modify, distribute, and sell this software and | ||||
| # its documentation for any purpose is hereby granted without fee, provided | ||||
| # that (i) the above copyright notices and this permission notice appear in | ||||
| # all copies of the software and related documentation, and (ii) the names of | ||||
| # Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
| # publicity relating to the software without the specific, prior written | ||||
| # permission of Sam Leffler and Silicon Graphics. | ||||
| # | ||||
| # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
| # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
| # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| # | ||||
| # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
| # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
| # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
| # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
| # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
| # OF THIS SOFTWARE. | ||||
|  | ||||
| # Generate headers | ||||
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tif_config.h.cmake.in | ||||
|                ${CMAKE_CURRENT_BINARY_DIR}/tif_config.h | ||||
|                @ONLY) | ||||
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tiffconf.h.cmake.in | ||||
|                ${CMAKE_CURRENT_BINARY_DIR}/tiffconf.h | ||||
|                @ONLY) | ||||
|  | ||||
| extra_dist( | ||||
|   SConstruct | ||||
|   tif_config.h-vms | ||||
|   tif_config.vc.h | ||||
|   tif_config.wince.h | ||||
|   tiffconf.vc.h | ||||
|   tiffconf.wince.h | ||||
|   libtiff.def | ||||
|   libtiff.map | ||||
|   libtiffxx.map) | ||||
|  | ||||
| set(tiff_HEADERS | ||||
|   tiff.h | ||||
|   tiffio.h | ||||
|   tiffvers.h) | ||||
|  | ||||
| set(tiff_noinst_HEADERS | ||||
|   t4.h | ||||
|   tif_dir.h | ||||
|   tif_predict.h | ||||
|   tiffiop.h | ||||
|   uvcode.h) | ||||
|  | ||||
| set(nodist_tiff_HEADERS | ||||
|   ${CMAKE_CURRENT_BINARY_DIR}/tiffconf.h) | ||||
|  | ||||
| set(tiff_SOURCES | ||||
|   tif_aux.c | ||||
|   tif_close.c | ||||
|   tif_codec.c | ||||
|   tif_color.c | ||||
|   tif_compress.c | ||||
|   tif_dir.c | ||||
|   tif_dirinfo.c | ||||
|   tif_dirread.c | ||||
|   tif_dirwrite.c | ||||
|   tif_dumpmode.c | ||||
|   tif_error.c | ||||
|   tif_extension.c | ||||
|   tif_fax3.c | ||||
|   tif_fax3sm.c | ||||
|   tif_flush.c | ||||
|   tif_getimage.c | ||||
|   tif_jbig.c | ||||
|   tif_jpeg.c | ||||
|   tif_jpeg_12.c | ||||
|   tif_luv.c | ||||
|   tif_lzma.c | ||||
|   tif_lzw.c | ||||
|   tif_next.c | ||||
|   tif_ojpeg.c | ||||
|   tif_open.c | ||||
|   tif_packbits.c | ||||
|   tif_pixarlog.c | ||||
|   tif_predict.c | ||||
|   tif_print.c | ||||
|   tif_read.c | ||||
|   tif_strip.c | ||||
|   tif_swab.c | ||||
|   tif_thunder.c | ||||
|   tif_tile.c | ||||
|   tif_version.c | ||||
|   tif_warning.c | ||||
|   tif_write.c | ||||
|   tif_zip.c) | ||||
|  | ||||
| set(tiffxx_HEADERS | ||||
|   tiffio.hxx) | ||||
|  | ||||
| set(tiffxx_SOURCES | ||||
|   tif_stream.cxx) | ||||
|  | ||||
| if(WIN32_IO) | ||||
|   extra_dist(tif_unix.c) | ||||
|   list(APPEND tiff_SOURCES tif_win32.c) | ||||
| else() | ||||
|   extra_dist(tif_win32.c) | ||||
|   list(APPEND tiff_SOURCES tif_unix.c) | ||||
| endif() | ||||
|  | ||||
| include_directories(${CMAKE_CURRENT_SOURCE_DIR} | ||||
|                     ${CMAKE_CURRENT_BINARY_DIR} | ||||
|                     ${TIFF_INCLUDES}) | ||||
|  | ||||
| add_library(tiff ${tiff_SOURCES} ${tiff_HEADERS} ${nodist_tiff_HEADERS} | ||||
|             ${tiff_port_SOURCES} libtiff.def) | ||||
| target_link_libraries(tiff ${TIFF_LIBRARY_DEPS}) | ||||
| set_target_properties(tiff PROPERTIES SOVERSION ${SO_COMPATVERSION}) | ||||
| if(NOT CYGWIN) | ||||
|     # This property causes shared libraries on Linux to have the full version | ||||
|     # encoded into their final filename.  We disable this on Cygwin because | ||||
|     # it causes cygz-${TIFF_FULL_VERSION}.dll to be created when cygz.dll | ||||
|     # seems to be the default. | ||||
|     set_target_properties(tiff PROPERTIES VERSION ${SO_VERSION}) | ||||
| endif() | ||||
| if(HAVE_LD_VERSION_SCRIPT) | ||||
|   set_target_properties(tiff PROPERTIES LINK_FLAGS | ||||
|                         "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiff.map") | ||||
| endif() | ||||
|  | ||||
| install(TARGETS tiff | ||||
|         RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} | ||||
|         LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} | ||||
|         ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) | ||||
|  | ||||
| install(FILES ${tiff_HEADERS} ${nodist_tiff_HEADERS} | ||||
|         DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}") | ||||
|  | ||||
| if(cxx) | ||||
|   add_library(tiffxx ${tiffxx_SOURCES} ${tiffxx_HEADERS}) | ||||
|   target_link_libraries(tiffxx tiff) | ||||
|   set_target_properties(tiffxx PROPERTIES SOVERSION ${SO_COMPATVERSION}) | ||||
|   if(NOT CYGWIN) | ||||
|     # This property causes shared libraries on Linux to have the full version | ||||
|     # encoded into their final filename.  We disable this on Cygwin because | ||||
|     # it causes cygz-${TIFF_FULL_VERSION}.dll to be created when cygz.dll | ||||
|     # seems to be the default. | ||||
|     set_target_properties(tiffxx PROPERTIES VERSION ${SO_VERSION}) | ||||
|   endif() | ||||
|   if(HAVE_LD_VERSION_SCRIPT) | ||||
|     set_target_properties(tiffxx PROPERTIES LINK_FLAGS | ||||
|                           "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiffxx.map") | ||||
|   endif() | ||||
|  | ||||
|   install(TARGETS tiffxx | ||||
|           RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} | ||||
|           LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} | ||||
|           ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) | ||||
|  | ||||
|   install(FILES ${tiffxx_HEADERS} | ||||
|           DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}") | ||||
|  | ||||
| endif() | ||||
							
								
								
									
										154
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/Makefile.am
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/Makefile.am
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,154 @@ | ||||
| # Tag Image File Format (TIFF) Software | ||||
| # | ||||
| # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu> | ||||
| # | ||||
| # Permission to use, copy, modify, distribute, and sell this software and  | ||||
| # its documentation for any purpose is hereby granted without fee, provided | ||||
| # that (i) the above copyright notices and this permission notice appear in | ||||
| # all copies of the software and related documentation, and (ii) the names of | ||||
| # Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
| # publicity relating to the software without the specific, prior written | ||||
| # permission of Sam Leffler and Silicon Graphics. | ||||
| #  | ||||
| # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
| # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
| # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
| #  | ||||
| # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
| # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
| # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
| # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
| # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
| # OF THIS SOFTWARE. | ||||
|  | ||||
| # Process this file with automake to produce Makefile.in. | ||||
|  | ||||
| LIBPORT = $(top_builddir)/port/libport.la | ||||
| LIBTIFF = $(top_builddir)/libtiff/libtiff.la | ||||
| libtiffincludedir = $(includedir) | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	CMakeLists.txt \ | ||||
| 	Makefile.vc \ | ||||
| 	SConstruct \ | ||||
| 	libtiff.def \ | ||||
| 	libtiff.map \ | ||||
| 	libtiffxx.map \ | ||||
| 	tif_config.h-vms \ | ||||
| 	tif_config.h.cmake.in \ | ||||
| 	tif_config.vc.h \ | ||||
| 	tif_config.wince.h \ | ||||
| 	tiffconf.h.cmake.in \ | ||||
| 	tiffconf.vc.h \ | ||||
| 	tiffconf.wince.h | ||||
|  | ||||
| libtiffinclude_HEADERS = \ | ||||
| 	tiff.h \ | ||||
| 	tiffio.h \ | ||||
| 	tiffvers.h | ||||
|  | ||||
| if HAVE_CXX | ||||
| libtiffinclude_HEADERS += tiffio.hxx | ||||
| endif | ||||
|  | ||||
| noinst_HEADERS = \ | ||||
| 	t4.h \ | ||||
| 	tif_dir.h \ | ||||
| 	tif_predict.h \ | ||||
| 	tiffiop.h \ | ||||
| 	uvcode.h | ||||
|  | ||||
| nodist_libtiffinclude_HEADERS = \ | ||||
| 	tiffconf.h | ||||
|  | ||||
| libtiff_la_SOURCES = \ | ||||
| 	tif_aux.c \ | ||||
| 	tif_close.c \ | ||||
| 	tif_codec.c \ | ||||
| 	tif_color.c \ | ||||
| 	tif_compress.c \ | ||||
| 	tif_dir.c \ | ||||
| 	tif_dirinfo.c \ | ||||
| 	tif_dirread.c \ | ||||
| 	tif_dirwrite.c \ | ||||
| 	tif_dumpmode.c \ | ||||
| 	tif_error.c \ | ||||
| 	tif_extension.c \ | ||||
| 	tif_fax3.c \ | ||||
| 	tif_fax3sm.c \ | ||||
| 	tif_flush.c \ | ||||
| 	tif_getimage.c \ | ||||
| 	tif_jbig.c \ | ||||
| 	tif_jpeg.c \ | ||||
| 	tif_jpeg_12.c \ | ||||
| 	tif_luv.c \ | ||||
| 	tif_lzma.c \ | ||||
| 	tif_lzw.c \ | ||||
| 	tif_next.c \ | ||||
| 	tif_ojpeg.c \ | ||||
| 	tif_open.c \ | ||||
| 	tif_packbits.c \ | ||||
| 	tif_pixarlog.c \ | ||||
| 	tif_predict.c \ | ||||
| 	tif_print.c \ | ||||
| 	tif_read.c \ | ||||
| 	tif_strip.c \ | ||||
| 	tif_swab.c \ | ||||
| 	tif_thunder.c \ | ||||
| 	tif_tile.c \ | ||||
| 	tif_version.c \ | ||||
| 	tif_warning.c \ | ||||
| 	tif_write.c \ | ||||
| 	tif_zip.c | ||||
|  | ||||
| libtiffxx_la_SOURCES = \ | ||||
| 	tif_stream.cxx | ||||
|  | ||||
| if WIN32_IO | ||||
| EXTRA_DIST += tif_unix.c | ||||
| libtiff_la_SOURCES += tif_win32.c | ||||
| else | ||||
| EXTRA_DIST += tif_win32.c | ||||
| libtiff_la_SOURCES += tif_unix.c | ||||
| endif | ||||
|  | ||||
| lib_LTLIBRARIES = libtiff.la | ||||
| if HAVE_CXX | ||||
| lib_LTLIBRARIES += libtiffxx.la | ||||
| endif | ||||
|  | ||||
| libtiff_la_LDFLAGS = \ | ||||
| 	-no-undefined \ | ||||
| 	-version-info $(LIBTIFF_VERSION_INFO) | ||||
| if HAVE_RPATH | ||||
| libtiff_la_LDFLAGS += $(LIBDIR) | ||||
| endif | ||||
| if HAVE_LD_VERSION_SCRIPT | ||||
| libtiff_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtiff.map | ||||
| endif | ||||
| libtiff_la_LIBADD = $(LIBPORT) | ||||
|  | ||||
| libtiffxx_la_LDFLAGS = \ | ||||
| 	-no-undefined \ | ||||
| 	-version-info $(LIBTIFF_VERSION_INFO) | ||||
| if HAVE_RPATH | ||||
| libtiffxx_la_LDFLAGS += $(LIBDIR) | ||||
| endif | ||||
| if HAVE_LD_VERSION_SCRIPT | ||||
| libtiffxx_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtiffxx.map | ||||
| endif | ||||
| libtiffxx_la_LIBADD = $(LIBTIFF) $(LIBPORT) | ||||
| libtiffxx_la_DEPENDENCIES = libtiff.la | ||||
|  | ||||
| # | ||||
| # The finite state machine tables used by the G3/G4 decoders | ||||
| # are generated by the mkg3states program.  On systems without | ||||
| # make these rules have to be manually carried out. | ||||
| # | ||||
| noinst_PROGRAMS = mkg3states | ||||
| mkg3states_SOURCES = mkg3states.c tif_fax3.h | ||||
| mkg3states_LDADD = $(LIBPORT) | ||||
|  | ||||
| faxtable: mkg3states | ||||
| 	(rm -f tif_fax3sm.c && ./mkg3states -b -c const tif_fax3sm.c) | ||||
|  | ||||
							
								
								
									
										966
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/Makefile.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										966
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/Makefile.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,966 @@ | ||||
| # Makefile.in generated by automake 1.15 from Makefile.am. | ||||
| # @configure_input@ | ||||
|  | ||||
| # Copyright (C) 1994-2014 Free Software Foundation, Inc. | ||||
|  | ||||
| # This Makefile.in is free software; the Free Software Foundation | ||||
| # gives unlimited permission to copy and/or distribute it, | ||||
| # with or without modifications, as long as this notice is preserved. | ||||
|  | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY, to the extent permitted by law; without | ||||
| # even the implied warranty of MERCHANTABILITY or FITNESS FOR A | ||||
| # PARTICULAR PURPOSE. | ||||
|  | ||||
| @SET_MAKE@ | ||||
|  | ||||
| # Tag Image File Format (TIFF) Software | ||||
| # | ||||
| # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu> | ||||
| # | ||||
| # Permission to use, copy, modify, distribute, and sell this software and  | ||||
| # its documentation for any purpose is hereby granted without fee, provided | ||||
| # that (i) the above copyright notices and this permission notice appear in | ||||
| # all copies of the software and related documentation, and (ii) the names of | ||||
| # Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
| # publicity relating to the software without the specific, prior written | ||||
| # permission of Sam Leffler and Silicon Graphics. | ||||
| #  | ||||
| # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
| # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
| # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
| #  | ||||
| # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
| # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
| # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
| # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
| # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
| # OF THIS SOFTWARE. | ||||
|  | ||||
| # Process this file with automake to produce Makefile.in. | ||||
|  | ||||
|  | ||||
|  | ||||
| VPATH = @srcdir@ | ||||
| am__is_gnu_make = { \ | ||||
|   if test -z '$(MAKELEVEL)'; then \ | ||||
|     false; \ | ||||
|   elif test -n '$(MAKE_HOST)'; then \ | ||||
|     true; \ | ||||
|   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ | ||||
|     true; \ | ||||
|   else \ | ||||
|     false; \ | ||||
|   fi; \ | ||||
| } | ||||
| am__make_running_with_option = \ | ||||
|   case $${target_option-} in \ | ||||
|       ?) ;; \ | ||||
|       *) echo "am__make_running_with_option: internal error: invalid" \ | ||||
|               "target option '$${target_option-}' specified" >&2; \ | ||||
|          exit 1;; \ | ||||
|   esac; \ | ||||
|   has_opt=no; \ | ||||
|   sane_makeflags=$$MAKEFLAGS; \ | ||||
|   if $(am__is_gnu_make); then \ | ||||
|     sane_makeflags=$$MFLAGS; \ | ||||
|   else \ | ||||
|     case $$MAKEFLAGS in \ | ||||
|       *\\[\ \	]*) \ | ||||
|         bs=\\; \ | ||||
|         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | ||||
|           | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \ | ||||
|     esac; \ | ||||
|   fi; \ | ||||
|   skip_next=no; \ | ||||
|   strip_trailopt () \ | ||||
|   { \ | ||||
|     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ | ||||
|   }; \ | ||||
|   for flg in $$sane_makeflags; do \ | ||||
|     test $$skip_next = yes && { skip_next=no; continue; }; \ | ||||
|     case $$flg in \ | ||||
|       *=*|--*) continue;; \ | ||||
|         -*I) strip_trailopt 'I'; skip_next=yes;; \ | ||||
|       -*I?*) strip_trailopt 'I';; \ | ||||
|         -*O) strip_trailopt 'O'; skip_next=yes;; \ | ||||
|       -*O?*) strip_trailopt 'O';; \ | ||||
|         -*l) strip_trailopt 'l'; skip_next=yes;; \ | ||||
|       -*l?*) strip_trailopt 'l';; \ | ||||
|       -[dEDm]) skip_next=yes;; \ | ||||
|       -[JT]) skip_next=yes;; \ | ||||
|     esac; \ | ||||
|     case $$flg in \ | ||||
|       *$$target_option*) has_opt=yes; break;; \ | ||||
|     esac; \ | ||||
|   done; \ | ||||
|   test $$has_opt = yes | ||||
| am__make_dryrun = (target_option=n; $(am__make_running_with_option)) | ||||
| am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) | ||||
| pkgdatadir = $(datadir)/@PACKAGE@ | ||||
| pkgincludedir = $(includedir)/@PACKAGE@ | ||||
| pkglibdir = $(libdir)/@PACKAGE@ | ||||
| pkglibexecdir = $(libexecdir)/@PACKAGE@ | ||||
| am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd | ||||
| install_sh_DATA = $(install_sh) -c -m 644 | ||||
| install_sh_PROGRAM = $(install_sh) -c | ||||
| install_sh_SCRIPT = $(install_sh) -c | ||||
| INSTALL_HEADER = $(INSTALL_DATA) | ||||
| transform = $(program_transform_name) | ||||
| NORMAL_INSTALL = : | ||||
| PRE_INSTALL = : | ||||
| POST_INSTALL = : | ||||
| NORMAL_UNINSTALL = : | ||||
| PRE_UNINSTALL = : | ||||
| POST_UNINSTALL = : | ||||
| build_triplet = @build@ | ||||
| host_triplet = @host@ | ||||
| @HAVE_CXX_TRUE@am__append_1 = tiffio.hxx | ||||
| @WIN32_IO_TRUE@am__append_2 = tif_unix.c | ||||
| @WIN32_IO_TRUE@am__append_3 = tif_win32.c | ||||
| @WIN32_IO_FALSE@am__append_4 = tif_win32.c | ||||
| @WIN32_IO_FALSE@am__append_5 = tif_unix.c | ||||
| @HAVE_CXX_TRUE@am__append_6 = libtiffxx.la | ||||
| @HAVE_RPATH_TRUE@am__append_7 = $(LIBDIR) | ||||
| @HAVE_LD_VERSION_SCRIPT_TRUE@am__append_8 = -Wl,--version-script=$(srcdir)/libtiff.map | ||||
| @HAVE_RPATH_TRUE@am__append_9 = $(LIBDIR) | ||||
| @HAVE_LD_VERSION_SCRIPT_TRUE@am__append_10 = -Wl,--version-script=$(srcdir)/libtiffxx.map | ||||
| noinst_PROGRAMS = mkg3states$(EXEEXT) | ||||
| subdir = libtiff | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \ | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ | ||||
| 	$(ACLOCAL_M4) | ||||
| DIST_COMMON = $(srcdir)/Makefile.am $(am__libtiffinclude_HEADERS_DIST) \ | ||||
| 	$(noinst_HEADERS) $(am__DIST_COMMON) | ||||
| mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs | ||||
| CONFIG_HEADER = tif_config.h tiffconf.h | ||||
| CONFIG_CLEAN_FILES = | ||||
| CONFIG_CLEAN_VPATH_FILES = | ||||
| am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; | ||||
| am__vpath_adj = case $$p in \ | ||||
|     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ | ||||
|     *) f=$$p;; \ | ||||
|   esac; | ||||
| am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; | ||||
| am__install_max = 40 | ||||
| am__nobase_strip_setup = \ | ||||
|   srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` | ||||
| am__nobase_strip = \ | ||||
|   for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" | ||||
| am__nobase_list = $(am__nobase_strip_setup); \ | ||||
|   for p in $$list; do echo "$$p $$p"; done | \ | ||||
|   sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ | ||||
|   $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ | ||||
|     if (++n[$$2] == $(am__install_max)) \ | ||||
|       { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ | ||||
|     END { for (dir in files) print dir, files[dir] }' | ||||
| am__base_list = \ | ||||
|   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ | ||||
|   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | ||||
| am__uninstall_files_from_dir = { \ | ||||
|   test -z "$$files" \ | ||||
|     || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ | ||||
|     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ | ||||
|          $(am__cd) "$$dir" && rm -f $$files; }; \ | ||||
|   } | ||||
| am__installdirs = "$(DESTDIR)$(libdir)" \ | ||||
| 	"$(DESTDIR)$(libtiffincludedir)" \ | ||||
| 	"$(DESTDIR)$(libtiffincludedir)" | ||||
| LTLIBRARIES = $(lib_LTLIBRARIES) | ||||
| libtiff_la_DEPENDENCIES = $(LIBPORT) | ||||
| am__libtiff_la_SOURCES_DIST = tif_aux.c tif_close.c tif_codec.c \ | ||||
| 	tif_color.c tif_compress.c tif_dir.c tif_dirinfo.c \ | ||||
| 	tif_dirread.c tif_dirwrite.c tif_dumpmode.c tif_error.c \ | ||||
| 	tif_extension.c tif_fax3.c tif_fax3sm.c tif_flush.c \ | ||||
| 	tif_getimage.c tif_jbig.c tif_jpeg.c tif_jpeg_12.c tif_luv.c \ | ||||
| 	tif_lzma.c tif_lzw.c tif_next.c tif_ojpeg.c tif_open.c \ | ||||
| 	tif_packbits.c tif_pixarlog.c tif_predict.c tif_print.c \ | ||||
| 	tif_read.c tif_strip.c tif_swab.c tif_thunder.c tif_tile.c \ | ||||
| 	tif_version.c tif_warning.c tif_write.c tif_zip.c tif_win32.c \ | ||||
| 	tif_unix.c | ||||
| @WIN32_IO_TRUE@am__objects_1 = tif_win32.lo | ||||
| @WIN32_IO_FALSE@am__objects_2 = tif_unix.lo | ||||
| am_libtiff_la_OBJECTS = tif_aux.lo tif_close.lo tif_codec.lo \ | ||||
| 	tif_color.lo tif_compress.lo tif_dir.lo tif_dirinfo.lo \ | ||||
| 	tif_dirread.lo tif_dirwrite.lo tif_dumpmode.lo tif_error.lo \ | ||||
| 	tif_extension.lo tif_fax3.lo tif_fax3sm.lo tif_flush.lo \ | ||||
| 	tif_getimage.lo tif_jbig.lo tif_jpeg.lo tif_jpeg_12.lo \ | ||||
| 	tif_luv.lo tif_lzma.lo tif_lzw.lo tif_next.lo tif_ojpeg.lo \ | ||||
| 	tif_open.lo tif_packbits.lo tif_pixarlog.lo tif_predict.lo \ | ||||
| 	tif_print.lo tif_read.lo tif_strip.lo tif_swab.lo \ | ||||
| 	tif_thunder.lo tif_tile.lo tif_version.lo tif_warning.lo \ | ||||
| 	tif_write.lo tif_zip.lo $(am__objects_1) $(am__objects_2) | ||||
| libtiff_la_OBJECTS = $(am_libtiff_la_OBJECTS) | ||||
| AM_V_lt = $(am__v_lt_@AM_V@) | ||||
| am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) | ||||
| am__v_lt_0 = --silent | ||||
| am__v_lt_1 =  | ||||
| libtiff_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ | ||||
| 	$(libtiff_la_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| am_libtiffxx_la_OBJECTS = tif_stream.lo | ||||
| libtiffxx_la_OBJECTS = $(am_libtiffxx_la_OBJECTS) | ||||
| libtiffxx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ | ||||
| 	$(CXXFLAGS) $(libtiffxx_la_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| @HAVE_CXX_TRUE@am_libtiffxx_la_rpath = -rpath $(libdir) | ||||
| PROGRAMS = $(noinst_PROGRAMS) | ||||
| am_mkg3states_OBJECTS = mkg3states.$(OBJEXT) | ||||
| mkg3states_OBJECTS = $(am_mkg3states_OBJECTS) | ||||
| mkg3states_DEPENDENCIES = $(LIBPORT) | ||||
| AM_V_P = $(am__v_P_@AM_V@) | ||||
| am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) | ||||
| am__v_P_0 = false | ||||
| am__v_P_1 = : | ||||
| AM_V_GEN = $(am__v_GEN_@AM_V@) | ||||
| am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) | ||||
| am__v_GEN_0 = @echo "  GEN     " $@; | ||||
| am__v_GEN_1 =  | ||||
| AM_V_at = $(am__v_at_@AM_V@) | ||||
| am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) | ||||
| am__v_at_0 = @ | ||||
| am__v_at_1 =  | ||||
| DEFAULT_INCLUDES = -I.@am__isrc@ | ||||
| depcomp = $(SHELL) $(top_srcdir)/config/depcomp | ||||
| am__depfiles_maybe = depfiles | ||||
| am__mv = mv -f | ||||
| COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ | ||||
| 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
| LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||||
| 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ | ||||
| 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ | ||||
| 	$(AM_CFLAGS) $(CFLAGS) | ||||
| AM_V_CC = $(am__v_CC_@AM_V@) | ||||
| am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) | ||||
| am__v_CC_0 = @echo "  CC      " $@; | ||||
| am__v_CC_1 =  | ||||
| CCLD = $(CC) | ||||
| LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ | ||||
| 	$(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| AM_V_CCLD = $(am__v_CCLD_@AM_V@) | ||||
| am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) | ||||
| am__v_CCLD_0 = @echo "  CCLD    " $@; | ||||
| am__v_CCLD_1 =  | ||||
| CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ | ||||
| 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | ||||
| LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ | ||||
| 	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ | ||||
| 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ | ||||
| 	$(AM_CXXFLAGS) $(CXXFLAGS) | ||||
| AM_V_CXX = $(am__v_CXX_@AM_V@) | ||||
| am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) | ||||
| am__v_CXX_0 = @echo "  CXX     " $@; | ||||
| am__v_CXX_1 =  | ||||
| CXXLD = $(CXX) | ||||
| CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ | ||||
| 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) | ||||
| am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) | ||||
| am__v_CXXLD_0 = @echo "  CXXLD   " $@; | ||||
| am__v_CXXLD_1 =  | ||||
| SOURCES = $(libtiff_la_SOURCES) $(libtiffxx_la_SOURCES) \ | ||||
| 	$(mkg3states_SOURCES) | ||||
| DIST_SOURCES = $(am__libtiff_la_SOURCES_DIST) $(libtiffxx_la_SOURCES) \ | ||||
| 	$(mkg3states_SOURCES) | ||||
| am__can_run_installinfo = \ | ||||
|   case $$AM_UPDATE_INFO_DIR in \ | ||||
|     n|no|NO) false;; \ | ||||
|     *) (install-info --version) >/dev/null 2>&1;; \ | ||||
|   esac | ||||
| am__libtiffinclude_HEADERS_DIST = tiff.h tiffio.h tiffvers.h \ | ||||
| 	tiffio.hxx | ||||
| HEADERS = $(libtiffinclude_HEADERS) $(nodist_libtiffinclude_HEADERS) \ | ||||
| 	$(noinst_HEADERS) | ||||
| am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ | ||||
| 	$(LISP)tif_config.h.in tiffconf.h.in | ||||
| # Read a list of newline-separated strings from the standard input, | ||||
| # and print each of them once, without duplicates.  Input order is | ||||
| # *not* preserved. | ||||
| am__uniquify_input = $(AWK) '\ | ||||
|   BEGIN { nonempty = 0; } \ | ||||
|   { items[$$0] = 1; nonempty = 1; } \ | ||||
|   END { if (nonempty) { for (i in items) print i; }; } \ | ||||
| ' | ||||
| # Make sure the list of sources is unique.  This is necessary because, | ||||
| # e.g., the same source file might be shared among _SOURCES variables | ||||
| # for different programs/libraries. | ||||
| am__define_uniq_tagged_files = \ | ||||
|   list='$(am__tagged_files)'; \ | ||||
|   unique=`for i in $$list; do \ | ||||
|     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ | ||||
|   done | $(am__uniquify_input)` | ||||
| ETAGS = etags | ||||
| CTAGS = ctags | ||||
| am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/tif_config.h.in \ | ||||
| 	$(srcdir)/tiffconf.h.in $(top_srcdir)/config/depcomp \ | ||||
| 	$(top_srcdir)/config/mkinstalldirs | ||||
| DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) | ||||
| ACLOCAL = @ACLOCAL@ | ||||
| AMTAR = @AMTAR@ | ||||
| AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ | ||||
| AR = @AR@ | ||||
| AS = @AS@ | ||||
| AUTOCONF = @AUTOCONF@ | ||||
| AUTOHEADER = @AUTOHEADER@ | ||||
| AUTOMAKE = @AUTOMAKE@ | ||||
| AWK = @AWK@ | ||||
| CC = @CC@ | ||||
| CCDEPMODE = @CCDEPMODE@ | ||||
| CFLAGS = @CFLAGS@ | ||||
| CMAKE = @CMAKE@ | ||||
| CPP = @CPP@ | ||||
| CPPFLAGS = @CPPFLAGS@ | ||||
| CXX = @CXX@ | ||||
| CXXCPP = @CXXCPP@ | ||||
| CXXDEPMODE = @CXXDEPMODE@ | ||||
| CXXFLAGS = @CXXFLAGS@ | ||||
| CYGPATH_W = @CYGPATH_W@ | ||||
| DEFS = @DEFS@ | ||||
| DEPDIR = @DEPDIR@ | ||||
| DLLTOOL = @DLLTOOL@ | ||||
| DSYMUTIL = @DSYMUTIL@ | ||||
| DUMPBIN = @DUMPBIN@ | ||||
| ECHO_C = @ECHO_C@ | ||||
| ECHO_N = @ECHO_N@ | ||||
| ECHO_T = @ECHO_T@ | ||||
| EGREP = @EGREP@ | ||||
| EXEEXT = @EXEEXT@ | ||||
| FGREP = @FGREP@ | ||||
| GLUT_CFLAGS = @GLUT_CFLAGS@ | ||||
| GLUT_LIBS = @GLUT_LIBS@ | ||||
| GLU_CFLAGS = @GLU_CFLAGS@ | ||||
| GLU_LIBS = @GLU_LIBS@ | ||||
| GL_CFLAGS = @GL_CFLAGS@ | ||||
| GL_LIBS = @GL_LIBS@ | ||||
| GREP = @GREP@ | ||||
| INSTALL = @INSTALL@ | ||||
| INSTALL_DATA = @INSTALL_DATA@ | ||||
| INSTALL_PROGRAM = @INSTALL_PROGRAM@ | ||||
| INSTALL_SCRIPT = @INSTALL_SCRIPT@ | ||||
| INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ | ||||
| LD = @LD@ | ||||
| LDFLAGS = @LDFLAGS@ | ||||
| LIBDIR = @LIBDIR@ | ||||
| LIBOBJS = @LIBOBJS@ | ||||
| LIBS = @LIBS@ | ||||
| LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@ | ||||
| LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@ | ||||
| LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@ | ||||
| LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@ | ||||
| LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@ | ||||
| LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@ | ||||
| LIBTIFF_VERSION = @LIBTIFF_VERSION@ | ||||
| LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@ | ||||
| LIBTOOL = @LIBTOOL@ | ||||
| LIPO = @LIPO@ | ||||
| LN_S = @LN_S@ | ||||
| LTLIBOBJS = @LTLIBOBJS@ | ||||
| LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ | ||||
| MAINT = @MAINT@ | ||||
| MAKEINFO = @MAKEINFO@ | ||||
| MANIFEST_TOOL = @MANIFEST_TOOL@ | ||||
| MKDIR_P = @MKDIR_P@ | ||||
| NM = @NM@ | ||||
| NMEDIT = @NMEDIT@ | ||||
| OBJDUMP = @OBJDUMP@ | ||||
| OBJEXT = @OBJEXT@ | ||||
| OTOOL = @OTOOL@ | ||||
| OTOOL64 = @OTOOL64@ | ||||
| PACKAGE = @PACKAGE@ | ||||
| PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ | ||||
| PACKAGE_NAME = @PACKAGE_NAME@ | ||||
| PACKAGE_STRING = @PACKAGE_STRING@ | ||||
| PACKAGE_TARNAME = @PACKAGE_TARNAME@ | ||||
| PACKAGE_URL = @PACKAGE_URL@ | ||||
| PACKAGE_VERSION = @PACKAGE_VERSION@ | ||||
| PATH_SEPARATOR = @PATH_SEPARATOR@ | ||||
| PTHREAD_CC = @PTHREAD_CC@ | ||||
| PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ | ||||
| PTHREAD_LIBS = @PTHREAD_LIBS@ | ||||
| RANLIB = @RANLIB@ | ||||
| SED = @SED@ | ||||
| SET_MAKE = @SET_MAKE@ | ||||
| SHELL = @SHELL@ | ||||
| STRIP = @STRIP@ | ||||
| VERSION = @VERSION@ | ||||
| XMKMF = @XMKMF@ | ||||
| X_CFLAGS = @X_CFLAGS@ | ||||
| X_EXTRA_LIBS = @X_EXTRA_LIBS@ | ||||
| X_LIBS = @X_LIBS@ | ||||
| X_PRE_LIBS = @X_PRE_LIBS@ | ||||
| abs_builddir = @abs_builddir@ | ||||
| abs_srcdir = @abs_srcdir@ | ||||
| abs_top_builddir = @abs_top_builddir@ | ||||
| abs_top_srcdir = @abs_top_srcdir@ | ||||
| ac_ct_AR = @ac_ct_AR@ | ||||
| ac_ct_CC = @ac_ct_CC@ | ||||
| ac_ct_CXX = @ac_ct_CXX@ | ||||
| ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ | ||||
| am__include = @am__include@ | ||||
| am__leading_dot = @am__leading_dot@ | ||||
| am__quote = @am__quote@ | ||||
| am__tar = @am__tar@ | ||||
| am__untar = @am__untar@ | ||||
| ax_pthread_config = @ax_pthread_config@ | ||||
| bindir = @bindir@ | ||||
| build = @build@ | ||||
| build_alias = @build_alias@ | ||||
| build_cpu = @build_cpu@ | ||||
| build_os = @build_os@ | ||||
| build_vendor = @build_vendor@ | ||||
| builddir = @builddir@ | ||||
| datadir = @datadir@ | ||||
| datarootdir = @datarootdir@ | ||||
| docdir = @docdir@ | ||||
| dvidir = @dvidir@ | ||||
| exec_prefix = @exec_prefix@ | ||||
| host = @host@ | ||||
| host_alias = @host_alias@ | ||||
| host_cpu = @host_cpu@ | ||||
| host_os = @host_os@ | ||||
| host_vendor = @host_vendor@ | ||||
| htmldir = @htmldir@ | ||||
| includedir = @includedir@ | ||||
| infodir = @infodir@ | ||||
| install_sh = @install_sh@ | ||||
| libdir = @libdir@ | ||||
| libexecdir = @libexecdir@ | ||||
| localedir = @localedir@ | ||||
| localstatedir = @localstatedir@ | ||||
| mandir = @mandir@ | ||||
| mkdir_p = @mkdir_p@ | ||||
| oldincludedir = @oldincludedir@ | ||||
| pdfdir = @pdfdir@ | ||||
| prefix = @prefix@ | ||||
| program_transform_name = @program_transform_name@ | ||||
| psdir = @psdir@ | ||||
| sbindir = @sbindir@ | ||||
| sharedstatedir = @sharedstatedir@ | ||||
| srcdir = @srcdir@ | ||||
| sysconfdir = @sysconfdir@ | ||||
| target_alias = @target_alias@ | ||||
| tiff_libs_private = @tiff_libs_private@ | ||||
| top_build_prefix = @top_build_prefix@ | ||||
| top_builddir = @top_builddir@ | ||||
| top_srcdir = @top_srcdir@ | ||||
| LIBPORT = $(top_builddir)/port/libport.la | ||||
| LIBTIFF = $(top_builddir)/libtiff/libtiff.la | ||||
| libtiffincludedir = $(includedir) | ||||
| EXTRA_DIST = CMakeLists.txt Makefile.vc SConstruct libtiff.def \ | ||||
| 	libtiff.map libtiffxx.map tif_config.h-vms \ | ||||
| 	tif_config.h.cmake.in tif_config.vc.h tif_config.wince.h \ | ||||
| 	tiffconf.h.cmake.in tiffconf.vc.h tiffconf.wince.h \ | ||||
| 	$(am__append_2) $(am__append_4) | ||||
| libtiffinclude_HEADERS = tiff.h tiffio.h tiffvers.h $(am__append_1) | ||||
| noinst_HEADERS = \ | ||||
| 	t4.h \ | ||||
| 	tif_dir.h \ | ||||
| 	tif_predict.h \ | ||||
| 	tiffiop.h \ | ||||
| 	uvcode.h | ||||
|  | ||||
| nodist_libtiffinclude_HEADERS = \ | ||||
| 	tiffconf.h | ||||
|  | ||||
| libtiff_la_SOURCES = tif_aux.c tif_close.c tif_codec.c tif_color.c \ | ||||
| 	tif_compress.c tif_dir.c tif_dirinfo.c tif_dirread.c \ | ||||
| 	tif_dirwrite.c tif_dumpmode.c tif_error.c tif_extension.c \ | ||||
| 	tif_fax3.c tif_fax3sm.c tif_flush.c tif_getimage.c tif_jbig.c \ | ||||
| 	tif_jpeg.c tif_jpeg_12.c tif_luv.c tif_lzma.c tif_lzw.c \ | ||||
| 	tif_next.c tif_ojpeg.c tif_open.c tif_packbits.c \ | ||||
| 	tif_pixarlog.c tif_predict.c tif_print.c tif_read.c \ | ||||
| 	tif_strip.c tif_swab.c tif_thunder.c tif_tile.c tif_version.c \ | ||||
| 	tif_warning.c tif_write.c tif_zip.c $(am__append_3) \ | ||||
| 	$(am__append_5) | ||||
| libtiffxx_la_SOURCES = \ | ||||
| 	tif_stream.cxx | ||||
|  | ||||
| lib_LTLIBRARIES = libtiff.la $(am__append_6) | ||||
| libtiff_la_LDFLAGS = -no-undefined -version-info \ | ||||
| 	$(LIBTIFF_VERSION_INFO) $(am__append_7) $(am__append_8) | ||||
| libtiff_la_LIBADD = $(LIBPORT) | ||||
| libtiffxx_la_LDFLAGS = -no-undefined -version-info \ | ||||
| 	$(LIBTIFF_VERSION_INFO) $(am__append_9) $(am__append_10) | ||||
| libtiffxx_la_LIBADD = $(LIBTIFF) $(LIBPORT) | ||||
| libtiffxx_la_DEPENDENCIES = libtiff.la | ||||
| mkg3states_SOURCES = mkg3states.c tif_fax3.h | ||||
| mkg3states_LDADD = $(LIBPORT) | ||||
| all: tif_config.h tiffconf.h | ||||
| 	$(MAKE) $(AM_MAKEFLAGS) all-am | ||||
|  | ||||
| .SUFFIXES: | ||||
| .SUFFIXES: .c .cxx .lo .o .obj | ||||
| $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps) | ||||
| 	@for dep in $?; do \ | ||||
| 	  case '$(am__configure_deps)' in \ | ||||
| 	    *$$dep*) \ | ||||
| 	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ | ||||
| 	        && { if test -f $@; then exit 0; else break; fi; }; \ | ||||
| 	      exit 1;; \ | ||||
| 	  esac; \ | ||||
| 	done; \ | ||||
| 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libtiff/Makefile'; \ | ||||
| 	$(am__cd) $(top_srcdir) && \ | ||||
| 	  $(AUTOMAKE) --foreign libtiff/Makefile | ||||
| Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status | ||||
| 	@case '$?' in \ | ||||
| 	  *config.status*) \ | ||||
| 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ | ||||
| 	  *) \ | ||||
| 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ | ||||
| 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ | ||||
| 	esac; | ||||
|  | ||||
| $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) | ||||
| 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||||
|  | ||||
| $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) | ||||
| 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||||
| $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) | ||||
| 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||||
| $(am__aclocal_m4_deps): | ||||
|  | ||||
| tif_config.h: stamp-h1 | ||||
| 	@test -f $@ || rm -f stamp-h1 | ||||
| 	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 | ||||
|  | ||||
| stamp-h1: $(srcdir)/tif_config.h.in $(top_builddir)/config.status | ||||
| 	@rm -f stamp-h1 | ||||
| 	cd $(top_builddir) && $(SHELL) ./config.status libtiff/tif_config.h | ||||
| $(srcdir)/tif_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)  | ||||
| 	($(am__cd) $(top_srcdir) && $(AUTOHEADER)) | ||||
| 	rm -f stamp-h1 | ||||
| 	touch $@ | ||||
|  | ||||
| tiffconf.h: stamp-h2 | ||||
| 	@test -f $@ || rm -f stamp-h2 | ||||
| 	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h2 | ||||
|  | ||||
| stamp-h2: $(srcdir)/tiffconf.h.in $(top_builddir)/config.status | ||||
| 	@rm -f stamp-h2 | ||||
| 	cd $(top_builddir) && $(SHELL) ./config.status libtiff/tiffconf.h | ||||
|  | ||||
| distclean-hdr: | ||||
| 	-rm -f tif_config.h stamp-h1 tiffconf.h stamp-h2 | ||||
|  | ||||
| install-libLTLIBRARIES: $(lib_LTLIBRARIES) | ||||
| 	@$(NORMAL_INSTALL) | ||||
| 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ | ||||
| 	list2=; for p in $$list; do \ | ||||
| 	  if test -f $$p; then \ | ||||
| 	    list2="$$list2 $$p"; \ | ||||
| 	  else :; fi; \ | ||||
| 	done; \ | ||||
| 	test -z "$$list2" || { \ | ||||
| 	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ | ||||
| 	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ | ||||
| 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ | ||||
| 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ | ||||
| 	} | ||||
|  | ||||
| uninstall-libLTLIBRARIES: | ||||
| 	@$(NORMAL_UNINSTALL) | ||||
| 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ | ||||
| 	for p in $$list; do \ | ||||
| 	  $(am__strip_dir) \ | ||||
| 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ | ||||
| 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ | ||||
| 	done | ||||
|  | ||||
| clean-libLTLIBRARIES: | ||||
| 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) | ||||
| 	@list='$(lib_LTLIBRARIES)'; \ | ||||
| 	locs=`for p in $$list; do echo $$p; done | \ | ||||
| 	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ | ||||
| 	      sort -u`; \ | ||||
| 	test -z "$$locs" || { \ | ||||
| 	  echo rm -f $${locs}; \ | ||||
| 	  rm -f $${locs}; \ | ||||
| 	} | ||||
|  | ||||
| libtiff.la: $(libtiff_la_OBJECTS) $(libtiff_la_DEPENDENCIES) $(EXTRA_libtiff_la_DEPENDENCIES)  | ||||
| 	$(AM_V_CCLD)$(libtiff_la_LINK) -rpath $(libdir) $(libtiff_la_OBJECTS) $(libtiff_la_LIBADD) $(LIBS) | ||||
|  | ||||
| libtiffxx.la: $(libtiffxx_la_OBJECTS) $(libtiffxx_la_DEPENDENCIES) $(EXTRA_libtiffxx_la_DEPENDENCIES)  | ||||
| 	$(AM_V_CXXLD)$(libtiffxx_la_LINK) $(am_libtiffxx_la_rpath) $(libtiffxx_la_OBJECTS) $(libtiffxx_la_LIBADD) $(LIBS) | ||||
|  | ||||
| clean-noinstPROGRAMS: | ||||
| 	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ | ||||
| 	echo " rm -f" $$list; \ | ||||
| 	rm -f $$list || exit $$?; \ | ||||
| 	test -n "$(EXEEXT)" || exit 0; \ | ||||
| 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ | ||||
| 	echo " rm -f" $$list; \ | ||||
| 	rm -f $$list | ||||
|  | ||||
| mkg3states$(EXEEXT): $(mkg3states_OBJECTS) $(mkg3states_DEPENDENCIES) $(EXTRA_mkg3states_DEPENDENCIES)  | ||||
| 	@rm -f mkg3states$(EXEEXT) | ||||
| 	$(AM_V_CCLD)$(LINK) $(mkg3states_OBJECTS) $(mkg3states_LDADD) $(LIBS) | ||||
|  | ||||
| mostlyclean-compile: | ||||
| 	-rm -f *.$(OBJEXT) | ||||
|  | ||||
| distclean-compile: | ||||
| 	-rm -f *.tab.c | ||||
|  | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkg3states.Po@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_aux.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_close.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_codec.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_color.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_compress.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_dir.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_dirinfo.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_dirread.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_dirwrite.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_dumpmode.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_error.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_extension.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_fax3.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_fax3sm.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_flush.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_getimage.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_jbig.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_jpeg.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_jpeg_12.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_luv.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_lzma.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_lzw.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_next.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_ojpeg.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_open.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_packbits.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_pixarlog.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_predict.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_print.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_read.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_stream.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_strip.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_swab.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_thunder.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_tile.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_unix.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_version.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_warning.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_win32.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_write.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_zip.Plo@am__quote@ | ||||
|  | ||||
| .c.o: | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< | ||||
|  | ||||
| .c.obj: | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` | ||||
|  | ||||
| .c.lo: | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< | ||||
|  | ||||
| .cxx.o: | ||||
| @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||||
| @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||||
| @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< | ||||
|  | ||||
| .cxx.obj: | ||||
| @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` | ||||
| @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po | ||||
| @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` | ||||
|  | ||||
| .cxx.lo: | ||||
| @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< | ||||
| @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo | ||||
| @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< | ||||
|  | ||||
| mostlyclean-libtool: | ||||
| 	-rm -f *.lo | ||||
|  | ||||
| clean-libtool: | ||||
| 	-rm -rf .libs _libs | ||||
| install-libtiffincludeHEADERS: $(libtiffinclude_HEADERS) | ||||
| 	@$(NORMAL_INSTALL) | ||||
| 	@list='$(libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \ | ||||
| 	if test -n "$$list"; then \ | ||||
| 	  echo " $(MKDIR_P) '$(DESTDIR)$(libtiffincludedir)'"; \ | ||||
| 	  $(MKDIR_P) "$(DESTDIR)$(libtiffincludedir)" || exit 1; \ | ||||
| 	fi; \ | ||||
| 	for p in $$list; do \ | ||||
| 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | ||||
| 	  echo "$$d$$p"; \ | ||||
| 	done | $(am__base_list) | \ | ||||
| 	while read files; do \ | ||||
| 	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libtiffincludedir)'"; \ | ||||
| 	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libtiffincludedir)" || exit $$?; \ | ||||
| 	done | ||||
|  | ||||
| uninstall-libtiffincludeHEADERS: | ||||
| 	@$(NORMAL_UNINSTALL) | ||||
| 	@list='$(libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \ | ||||
| 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ | ||||
| 	dir='$(DESTDIR)$(libtiffincludedir)'; $(am__uninstall_files_from_dir) | ||||
| install-nodist_libtiffincludeHEADERS: $(nodist_libtiffinclude_HEADERS) | ||||
| 	@$(NORMAL_INSTALL) | ||||
| 	@list='$(nodist_libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \ | ||||
| 	if test -n "$$list"; then \ | ||||
| 	  echo " $(MKDIR_P) '$(DESTDIR)$(libtiffincludedir)'"; \ | ||||
| 	  $(MKDIR_P) "$(DESTDIR)$(libtiffincludedir)" || exit 1; \ | ||||
| 	fi; \ | ||||
| 	for p in $$list; do \ | ||||
| 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | ||||
| 	  echo "$$d$$p"; \ | ||||
| 	done | $(am__base_list) | \ | ||||
| 	while read files; do \ | ||||
| 	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libtiffincludedir)'"; \ | ||||
| 	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libtiffincludedir)" || exit $$?; \ | ||||
| 	done | ||||
|  | ||||
| uninstall-nodist_libtiffincludeHEADERS: | ||||
| 	@$(NORMAL_UNINSTALL) | ||||
| 	@list='$(nodist_libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \ | ||||
| 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ | ||||
| 	dir='$(DESTDIR)$(libtiffincludedir)'; $(am__uninstall_files_from_dir) | ||||
|  | ||||
| ID: $(am__tagged_files) | ||||
| 	$(am__define_uniq_tagged_files); mkid -fID $$unique | ||||
| tags: tags-am | ||||
| TAGS: tags | ||||
|  | ||||
| tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) | ||||
| 	set x; \ | ||||
| 	here=`pwd`; \ | ||||
| 	$(am__define_uniq_tagged_files); \ | ||||
| 	shift; \ | ||||
| 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ | ||||
| 	  test -n "$$unique" || unique=$$empty_fix; \ | ||||
| 	  if test $$# -gt 0; then \ | ||||
| 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ | ||||
| 	      "$$@" $$unique; \ | ||||
| 	  else \ | ||||
| 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ | ||||
| 	      $$unique; \ | ||||
| 	  fi; \ | ||||
| 	fi | ||||
| ctags: ctags-am | ||||
|  | ||||
| CTAGS: ctags | ||||
| ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) | ||||
| 	$(am__define_uniq_tagged_files); \ | ||||
| 	test -z "$(CTAGS_ARGS)$$unique" \ | ||||
| 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ | ||||
| 	     $$unique | ||||
|  | ||||
| GTAGS: | ||||
| 	here=`$(am__cd) $(top_builddir) && pwd` \ | ||||
| 	  && $(am__cd) $(top_srcdir) \ | ||||
| 	  && gtags -i $(GTAGS_ARGS) "$$here" | ||||
| cscopelist: cscopelist-am | ||||
|  | ||||
| cscopelist-am: $(am__tagged_files) | ||||
| 	list='$(am__tagged_files)'; \ | ||||
| 	case "$(srcdir)" in \ | ||||
| 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ | ||||
| 	  *) sdir=$(subdir)/$(srcdir) ;; \ | ||||
| 	esac; \ | ||||
| 	for i in $$list; do \ | ||||
| 	  if test -f "$$i"; then \ | ||||
| 	    echo "$(subdir)/$$i"; \ | ||||
| 	  else \ | ||||
| 	    echo "$$sdir/$$i"; \ | ||||
| 	  fi; \ | ||||
| 	done >> $(top_builddir)/cscope.files | ||||
|  | ||||
| distclean-tags: | ||||
| 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags | ||||
|  | ||||
| distdir: $(DISTFILES) | ||||
| 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ | ||||
| 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ | ||||
| 	list='$(DISTFILES)'; \ | ||||
| 	  dist_files=`for file in $$list; do echo $$file; done | \ | ||||
| 	  sed -e "s|^$$srcdirstrip/||;t" \ | ||||
| 	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ | ||||
| 	case $$dist_files in \ | ||||
| 	  */*) $(MKDIR_P) `echo "$$dist_files" | \ | ||||
| 			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ | ||||
| 			   sort -u` ;; \ | ||||
| 	esac; \ | ||||
| 	for file in $$dist_files; do \ | ||||
| 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ | ||||
| 	  if test -d $$d/$$file; then \ | ||||
| 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ | ||||
| 	    if test -d "$(distdir)/$$file"; then \ | ||||
| 	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ | ||||
| 	    fi; \ | ||||
| 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ | ||||
| 	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ | ||||
| 	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ | ||||
| 	    fi; \ | ||||
| 	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ | ||||
| 	  else \ | ||||
| 	    test -f "$(distdir)/$$file" \ | ||||
| 	    || cp -p $$d/$$file "$(distdir)/$$file" \ | ||||
| 	    || exit 1; \ | ||||
| 	  fi; \ | ||||
| 	done | ||||
| check-am: all-am | ||||
| check: check-am | ||||
| all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) tif_config.h \ | ||||
| 		tiffconf.h | ||||
| installdirs: | ||||
| 	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libtiffincludedir)" "$(DESTDIR)$(libtiffincludedir)"; do \ | ||||
| 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \ | ||||
| 	done | ||||
| install: install-am | ||||
| install-exec: install-exec-am | ||||
| install-data: install-data-am | ||||
| uninstall: uninstall-am | ||||
|  | ||||
| install-am: all-am | ||||
| 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am | ||||
|  | ||||
| installcheck: installcheck-am | ||||
| install-strip: | ||||
| 	if test -z '$(STRIP)'; then \ | ||||
| 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ | ||||
| 	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ | ||||
| 	      install; \ | ||||
| 	else \ | ||||
| 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ | ||||
| 	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ | ||||
| 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ | ||||
| 	fi | ||||
| mostlyclean-generic: | ||||
|  | ||||
| clean-generic: | ||||
|  | ||||
| distclean-generic: | ||||
| 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) | ||||
| 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) | ||||
|  | ||||
| maintainer-clean-generic: | ||||
| 	@echo "This command is intended for maintainers to use" | ||||
| 	@echo "it deletes files that may require special tools to rebuild." | ||||
| clean: clean-am | ||||
|  | ||||
| clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ | ||||
| 	clean-noinstPROGRAMS mostlyclean-am | ||||
|  | ||||
| distclean: distclean-am | ||||
| 	-rm -rf ./$(DEPDIR) | ||||
| 	-rm -f Makefile | ||||
| distclean-am: clean-am distclean-compile distclean-generic \ | ||||
| 	distclean-hdr distclean-tags | ||||
|  | ||||
| dvi: dvi-am | ||||
|  | ||||
| dvi-am: | ||||
|  | ||||
| html: html-am | ||||
|  | ||||
| html-am: | ||||
|  | ||||
| info: info-am | ||||
|  | ||||
| info-am: | ||||
|  | ||||
| install-data-am: install-libtiffincludeHEADERS \ | ||||
| 	install-nodist_libtiffincludeHEADERS | ||||
|  | ||||
| install-dvi: install-dvi-am | ||||
|  | ||||
| install-dvi-am: | ||||
|  | ||||
| install-exec-am: install-libLTLIBRARIES | ||||
|  | ||||
| install-html: install-html-am | ||||
|  | ||||
| install-html-am: | ||||
|  | ||||
| install-info: install-info-am | ||||
|  | ||||
| install-info-am: | ||||
|  | ||||
| install-man: | ||||
|  | ||||
| install-pdf: install-pdf-am | ||||
|  | ||||
| install-pdf-am: | ||||
|  | ||||
| install-ps: install-ps-am | ||||
|  | ||||
| install-ps-am: | ||||
|  | ||||
| installcheck-am: | ||||
|  | ||||
| maintainer-clean: maintainer-clean-am | ||||
| 	-rm -rf ./$(DEPDIR) | ||||
| 	-rm -f Makefile | ||||
| maintainer-clean-am: distclean-am maintainer-clean-generic | ||||
|  | ||||
| mostlyclean: mostlyclean-am | ||||
|  | ||||
| mostlyclean-am: mostlyclean-compile mostlyclean-generic \ | ||||
| 	mostlyclean-libtool | ||||
|  | ||||
| pdf: pdf-am | ||||
|  | ||||
| pdf-am: | ||||
|  | ||||
| ps: ps-am | ||||
|  | ||||
| ps-am: | ||||
|  | ||||
| uninstall-am: uninstall-libLTLIBRARIES uninstall-libtiffincludeHEADERS \ | ||||
| 	uninstall-nodist_libtiffincludeHEADERS | ||||
|  | ||||
| .MAKE: all install-am install-strip | ||||
|  | ||||
| .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ | ||||
| 	clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ | ||||
| 	cscopelist-am ctags ctags-am distclean distclean-compile \ | ||||
| 	distclean-generic distclean-hdr distclean-libtool \ | ||||
| 	distclean-tags distdir dvi dvi-am html html-am info info-am \ | ||||
| 	install install-am install-data install-data-am install-dvi \ | ||||
| 	install-dvi-am install-exec install-exec-am install-html \ | ||||
| 	install-html-am install-info install-info-am \ | ||||
| 	install-libLTLIBRARIES install-libtiffincludeHEADERS \ | ||||
| 	install-man install-nodist_libtiffincludeHEADERS install-pdf \ | ||||
| 	install-pdf-am install-ps install-ps-am install-strip \ | ||||
| 	installcheck installcheck-am installdirs maintainer-clean \ | ||||
| 	maintainer-clean-generic mostlyclean mostlyclean-compile \ | ||||
| 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ | ||||
| 	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ | ||||
| 	uninstall-libtiffincludeHEADERS \ | ||||
| 	uninstall-nodist_libtiffincludeHEADERS | ||||
|  | ||||
| .PRECIOUS: Makefile | ||||
|  | ||||
|  | ||||
| faxtable: mkg3states | ||||
| 	(rm -f tif_fax3sm.c && ./mkg3states -b -c const tif_fax3sm.c) | ||||
|  | ||||
| # Tell versions [3.59,3.63) of GNU make to not export all variables. | ||||
| # Otherwise a system limit (for SysV at least) may be exceeded. | ||||
| .NOEXPORT: | ||||
							
								
								
									
										102
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/Makefile.vc
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/Makefile.vc
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | ||||
| # $Id: Makefile.vc,v 1.23 2015-08-19 02:31:04 bfriesen Exp $ | ||||
| # | ||||
| # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu> | ||||
| # | ||||
| # Permission to use, copy, modify, distribute, and sell this software and  | ||||
| # its documentation for any purpose is hereby granted without fee, provided | ||||
| # that (i) the above copyright notices and this permission notice appear in | ||||
| # all copies of the software and related documentation, and (ii) the names of | ||||
| # Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
| # publicity relating to the software without the specific, prior written | ||||
| # permission of Sam Leffler and Silicon Graphics. | ||||
| #  | ||||
| # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
| # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
| # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
| #  | ||||
| # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
| # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
| # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
| # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
| # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
| # OF THIS SOFTWARE. | ||||
| # | ||||
| # Makefile for MS Visual C and Watcom C compilers. | ||||
| # | ||||
| # To build: | ||||
| # C:\libtiff\libtiff> nmake /f makefile.vc all | ||||
| # | ||||
|  | ||||
| !INCLUDE ..\nmake.opt | ||||
|  | ||||
| INCL	= -I. $(JPEG_INCLUDE) $(ZLIB_INCLUDE) $(JBIG_INCLUDE) | ||||
|  | ||||
| !IFDEF USE_WIN_CRT_LIB | ||||
| OBJ_SYSDEP_MODULE = tif_unix.obj | ||||
| !ELSE | ||||
| OBJ_SYSDEP_MODULE = tif_win32.obj | ||||
| !ENDIF | ||||
|  | ||||
| OBJ	= \ | ||||
| 	tif_aux.obj \ | ||||
| 	tif_close.obj \ | ||||
| 	tif_codec.obj \ | ||||
| 	tif_color.obj \ | ||||
| 	tif_compress.obj \ | ||||
| 	tif_dir.obj \ | ||||
| 	tif_dirinfo.obj \ | ||||
| 	tif_dirread.obj \ | ||||
| 	tif_dirwrite.obj \ | ||||
| 	tif_dumpmode.obj \ | ||||
| 	tif_error.obj \ | ||||
| 	tif_extension.obj \ | ||||
| 	tif_fax3.obj \ | ||||
| 	tif_fax3sm.obj \ | ||||
| 	tif_getimage.obj \ | ||||
| 	tif_jbig.obj \ | ||||
| 	tif_jpeg.obj \ | ||||
| 	tif_jpeg_12.obj \ | ||||
| 	tif_ojpeg.obj \ | ||||
| 	tif_flush.obj \ | ||||
| 	tif_luv.obj \ | ||||
| 	tif_lzw.obj \ | ||||
| 	tif_next.obj \ | ||||
| 	tif_open.obj \ | ||||
| 	tif_packbits.obj \ | ||||
| 	tif_pixarlog.obj \ | ||||
| 	tif_predict.obj \ | ||||
| 	tif_print.obj \ | ||||
| 	tif_read.obj \ | ||||
| 	tif_stream.obj \ | ||||
| 	tif_swab.obj \ | ||||
| 	tif_strip.obj \ | ||||
| 	tif_thunder.obj \ | ||||
| 	tif_tile.obj \ | ||||
| 	tif_version.obj \ | ||||
| 	tif_warning.obj \ | ||||
| 	tif_write.obj \ | ||||
| 	tif_zip.obj \ | ||||
| 	$(OBJ_SYSDEP_MODULE) | ||||
|  | ||||
| all:	libtiff.lib $(DLLNAME) | ||||
|  | ||||
| tif_config.h:	tif_config.vc.h | ||||
| 	copy tif_config.vc.h tif_config.h | ||||
|  | ||||
| tiffconf.h:	tiffconf.vc.h | ||||
| 	copy tiffconf.vc.h tiffconf.h | ||||
|  | ||||
| libtiff.lib:	tif_config.h tiffconf.h $(OBJ) | ||||
| 	$(AR) /out:libtiff.lib ..\port\libport.lib $(OBJ) $(LIBS) | ||||
|  | ||||
| $(DLLNAME):	tif_config.h tiffconf.h libtiff.def $(OBJ) | ||||
| 	$(LD) /debug /dll /def:libtiff.def /out:$(DLLNAME) \ | ||||
| 	/implib:libtiff_i.lib ..\port\libport.lib $(OBJ) $(LIBS) | ||||
| 	 | ||||
| clean: | ||||
| 	-del tif_config.h tiffconf.h | ||||
| 	-del *.obj | ||||
| 	-del *.lib | ||||
| 	-del *.dll | ||||
| 	-del *.dll.manifest | ||||
| 	-del *.pdb | ||||
							
								
								
									
										73
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/SConstruct
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/SConstruct
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,73 @@ | ||||
| # $Id: SConstruct,v 1.4 2007/02/24 15:03:50 dron Exp $ | ||||
|  | ||||
| # Tag Image File Format (TIFF) Software | ||||
| # | ||||
| # Copyright (C) 2005, Andrey Kiselev <dron@ak4719.spb.edu> | ||||
| # | ||||
| # Permission to use, copy, modify, distribute, and sell this software and  | ||||
| # its documentation for any purpose is hereby granted without fee, provided | ||||
| # that (i) the above copyright notices and this permission notice appear in | ||||
| # all copies of the software and related documentation, and (ii) the names of | ||||
| # Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
| # publicity relating to the software without the specific, prior written | ||||
| # permission of Sam Leffler and Silicon Graphics. | ||||
| #  | ||||
| # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
| # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
| # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
| #  | ||||
| # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
| # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
| # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
| # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
| # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
| # OF THIS SOFTWARE. | ||||
|  | ||||
| # This file contains rules to build software with the SCons tool | ||||
| # (see the http://www.scons.org/ for details on SCons). | ||||
|  | ||||
| # Import globally defined options | ||||
| Import([ 'env', 'idir_lib' ]) | ||||
|  | ||||
| SRCS = [ \ | ||||
| 	'tif_aux.c', \ | ||||
| 	'tif_close.c', \ | ||||
| 	'tif_codec.c', \ | ||||
| 	'tif_color.c', \ | ||||
| 	'tif_compress.c', \ | ||||
| 	'tif_dir.c', \ | ||||
| 	'tif_dirinfo.c', \ | ||||
| 	'tif_dirread.c', \ | ||||
| 	'tif_dirwrite.c', \ | ||||
| 	'tif_dumpmode.c', \ | ||||
| 	'tif_error.c', \ | ||||
| 	'tif_extension.c', \ | ||||
| 	'tif_fax3.c', \ | ||||
| 	'tif_fax3sm.c', \ | ||||
| 	'tif_flush.c', \ | ||||
| 	'tif_getimage.c', \ | ||||
| 	'tif_jbig.c', \ | ||||
| 	'tif_jpeg.c', \ | ||||
| 	'tif_luv.c', \ | ||||
| 	'tif_lzw.c', \ | ||||
| 	'tif_next.c', \ | ||||
| 	'tif_ojpeg.c', \ | ||||
| 	'tif_open.c', \ | ||||
| 	'tif_packbits.c', \ | ||||
| 	'tif_pixarlog.c', \ | ||||
| 	'tif_predict.c', \ | ||||
| 	'tif_print.c', \ | ||||
| 	'tif_read.c', \ | ||||
| 	'tif_strip.c', \ | ||||
| 	'tif_swab.c', \ | ||||
| 	'tif_thunder.c', \ | ||||
| 	'tif_tile.c', \ | ||||
| 	'tif_unix.c', \ | ||||
| 	'tif_version.c', \ | ||||
| 	'tif_warning.c', \ | ||||
| 	'tif_write.c', \ | ||||
| 	'tif_zip.c' ] | ||||
|  | ||||
| StaticLibrary('tiff', SRCS) | ||||
| SharedLibrary('tiff', SRCS) | ||||
|  | ||||
							
								
								
									
										168
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/libtiff.def
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										168
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/libtiff.def
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,168 @@ | ||||
| EXPORTS	TIFFAccessTagMethods | ||||
| 	TIFFCIELabToRGBInit | ||||
| 	TIFFCIELabToXYZ | ||||
| 	TIFFCheckTile | ||||
| 	TIFFCheckpointDirectory | ||||
| 	TIFFCleanup | ||||
| 	TIFFClientOpen | ||||
| 	TIFFClientdata | ||||
| 	TIFFClose | ||||
| 	TIFFComputeStrip | ||||
| 	TIFFComputeTile | ||||
| 	TIFFCreateCustomDirectory | ||||
| 	TIFFCreateDirectory | ||||
| 	TIFFCreateEXIFDirectory | ||||
| 	TIFFCurrentDirOffset | ||||
| 	TIFFCurrentDirectory | ||||
| 	TIFFCurrentRow | ||||
| 	TIFFCurrentStrip | ||||
| 	TIFFCurrentTile | ||||
| 	TIFFDataWidth | ||||
| 	TIFFDefaultStripSize | ||||
| 	TIFFDefaultTileSize | ||||
| 	TIFFError | ||||
| 	TIFFErrorExt | ||||
| 	TIFFFdOpen | ||||
| 	TIFFFieldDataType | ||||
| 	TIFFFieldName | ||||
| 	TIFFFieldPassCount | ||||
| 	TIFFFieldReadCount | ||||
| 	TIFFFieldTag | ||||
| 	TIFFFieldWithName | ||||
| 	TIFFFieldWithTag | ||||
| 	TIFFFieldWriteCount | ||||
| 	TIFFFileName | ||||
| 	TIFFFileno | ||||
| 	TIFFFindCODEC | ||||
| 	TIFFFindField | ||||
| 	TIFFFlush | ||||
| 	TIFFFlushData | ||||
| 	TIFFFreeDirectory | ||||
| 	TIFFGetBitRevTable | ||||
| 	TIFFGetClientInfo | ||||
| 	TIFFGetCloseProc | ||||
| 	TIFFGetConfiguredCODECs | ||||
| 	TIFFGetField | ||||
| 	TIFFGetFieldDefaulted | ||||
| 	TIFFGetMapFileProc | ||||
| 	TIFFGetMode | ||||
| 	TIFFGetReadProc | ||||
| 	TIFFGetSeekProc | ||||
| 	TIFFGetSizeProc | ||||
| 	TIFFGetTagListCount | ||||
| 	TIFFGetTagListEntry | ||||
| 	TIFFGetUnmapFileProc | ||||
| 	TIFFGetVersion | ||||
| 	TIFFGetWriteProc | ||||
| 	TIFFIsBigEndian | ||||
| 	TIFFIsByteSwapped | ||||
| 	TIFFIsCODECConfigured | ||||
| 	TIFFIsMSB2LSB | ||||
| 	TIFFIsTiled | ||||
| 	TIFFIsUpSampled | ||||
| 	TIFFLastDirectory | ||||
| 	TIFFMergeFieldInfo | ||||
| 	TIFFNumberOfDirectories | ||||
| 	TIFFNumberOfStrips | ||||
| 	TIFFNumberOfTiles | ||||
| 	TIFFOpen | ||||
| 	TIFFOpenW | ||||
| 	TIFFPrintDirectory | ||||
| 	TIFFRGBAImageBegin | ||||
| 	TIFFRGBAImageEnd | ||||
| 	TIFFRGBAImageGet | ||||
| 	TIFFRGBAImageOK | ||||
| 	TIFFRasterScanlineSize | ||||
| 	TIFFRasterScanlineSize64 | ||||
| 	TIFFRawStripSize | ||||
| 	TIFFRawStripSize64 | ||||
| 	TIFFReadBufferSetup | ||||
| 	TIFFReadCustomDirectory | ||||
| 	TIFFReadDirectory | ||||
| 	TIFFReadEXIFDirectory | ||||
| 	TIFFReadEncodedStrip | ||||
| 	TIFFReadEncodedTile | ||||
| 	TIFFReadRGBAImage | ||||
| 	TIFFReadRGBAImageOriented | ||||
| 	TIFFReadRGBAStrip | ||||
| 	TIFFReadRGBAStripExt | ||||
| 	TIFFReadRGBATile | ||||
| 	TIFFReadRGBATileExt | ||||
| 	TIFFReadRawStrip | ||||
| 	TIFFReadRawTile | ||||
| 	TIFFReadScanline | ||||
| 	TIFFReadTile | ||||
| 	TIFFRegisterCODEC | ||||
| 	TIFFReverseBits | ||||
| 	TIFFRewriteDirectory | ||||
| 	TIFFScanlineSize | ||||
| 	TIFFScanlineSize64 | ||||
| 	TIFFSetClientInfo | ||||
| 	TIFFSetClientdata | ||||
| 	TIFFSetCompressionScheme | ||||
| 	TIFFSetDirectory | ||||
| 	TIFFSetErrorHandler | ||||
| 	TIFFSetErrorHandlerExt | ||||
| 	TIFFSetField | ||||
| 	TIFFSetFileName | ||||
| 	TIFFSetFileno | ||||
| 	TIFFSetMode | ||||
| 	TIFFSetSubDirectory | ||||
| 	TIFFSetTagExtender | ||||
| 	TIFFSetWarningHandler | ||||
| 	TIFFSetWarningHandlerExt | ||||
| 	TIFFSetWriteOffset | ||||
| 	TIFFSetupStrips | ||||
| 	TIFFStripSize | ||||
| 	TIFFStripSize64 | ||||
| 	TIFFSwabArrayOfDouble | ||||
| 	TIFFSwabArrayOfFloat | ||||
| 	TIFFSwabArrayOfLong | ||||
| 	TIFFSwabArrayOfLong8 | ||||
| 	TIFFSwabArrayOfShort | ||||
| 	TIFFSwabArrayOfTriples | ||||
| 	TIFFSwabDouble | ||||
| 	TIFFSwabFloat | ||||
| 	TIFFSwabLong | ||||
| 	TIFFSwabLong8 | ||||
| 	TIFFSwabShort | ||||
| 	TIFFTileRowSize | ||||
| 	TIFFTileRowSize64 | ||||
| 	TIFFTileSize | ||||
| 	TIFFTileSize64 | ||||
| 	TIFFUnRegisterCODEC | ||||
| 	TIFFUnlinkDirectory | ||||
| 	TIFFUnsetField | ||||
| 	TIFFVGetField | ||||
| 	TIFFVGetFieldDefaulted | ||||
| 	TIFFVSetField | ||||
| 	TIFFVStripSize | ||||
| 	TIFFVStripSize64 | ||||
| 	TIFFVTileSize | ||||
| 	TIFFVTileSize64 | ||||
| 	TIFFWarning | ||||
| 	TIFFWarningExt | ||||
| 	TIFFWriteBufferSetup | ||||
| 	TIFFWriteCheck | ||||
| 	TIFFWriteCustomDirectory | ||||
| 	TIFFWriteDirectory | ||||
| 	TIFFWriteEncodedStrip | ||||
| 	TIFFWriteEncodedTile | ||||
| 	TIFFWriteRawStrip | ||||
| 	TIFFWriteRawTile | ||||
| 	TIFFWriteScanline | ||||
| 	TIFFWriteTile | ||||
| 	TIFFXYZToRGB | ||||
| 	TIFFYCbCrToRGBInit | ||||
| 	TIFFYCbCrtoRGB | ||||
| 	_TIFFCheckMalloc | ||||
| 	_TIFFCheckRealloc | ||||
| 	_TIFFRewriteField | ||||
| 	_TIFFfree | ||||
| 	_TIFFmalloc | ||||
| 	_TIFFmemcmp | ||||
| 	_TIFFmemcpy | ||||
| 	_TIFFmemset | ||||
| 	_TIFFrealloc | ||||
|         _TIFFMultiply32 | ||||
|         _TIFFMultiply64 | ||||
							
								
								
									
										4
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/libtiff.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/libtiff.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| LIBTIFF_4.0 { | ||||
|   global: | ||||
|     *; | ||||
| }; | ||||
							
								
								
									
										4
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/libtiffxx.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/libtiffxx.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| LIBTIFFXX_4.0 { | ||||
|   global: | ||||
|     *; | ||||
| }; | ||||
							
								
								
									
										68
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mingw/Makefile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mingw/Makefile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | ||||
| CROSS	= | ||||
| CC	= $(CROSS)gcc | ||||
|  | ||||
| DLLNAME = libtiff-5.dll | ||||
| LIBNAME = libtiff.dll.a | ||||
| INCLUDES= -I. -Iexternal/include | ||||
| CPPFLAGS= -DDLL_EXPORT | ||||
| CFLAGS	= -O2 -Wall | ||||
| LDFLAGS = -Wl,--enable-auto-image-base -Wl,--no-undefined | ||||
| LDLIBS	= -Lexternal/lib -ljpeg -lz | ||||
|  | ||||
| OBJ =	tif_aux.o \ | ||||
| 	tif_close.o \ | ||||
| 	tif_codec.o \ | ||||
| 	tif_color.o \ | ||||
| 	tif_compress.o \ | ||||
| 	tif_dir.o \ | ||||
| 	tif_dirinfo.o \ | ||||
| 	tif_dirread.o \ | ||||
| 	tif_dirwrite.o \ | ||||
| 	tif_dumpmode.o \ | ||||
| 	tif_error.o \ | ||||
| 	tif_extension.o \ | ||||
| 	tif_fax3.o \ | ||||
| 	tif_fax3sm.o \ | ||||
| 	tif_flush.o \ | ||||
| 	tif_getimage.o \ | ||||
| 	tif_jbig.o \ | ||||
| 	tif_jpeg.o \ | ||||
| 	tif_jpeg_12.o \ | ||||
| 	tif_luv.o \ | ||||
| 	tif_lzma.o \ | ||||
| 	tif_lzw.o \ | ||||
| 	tif_next.o \ | ||||
| 	tif_ojpeg.o \ | ||||
| 	tif_open.o \ | ||||
| 	tif_packbits.o \ | ||||
| 	tif_pixarlog.o \ | ||||
| 	tif_predict.o \ | ||||
| 	tif_print.o \ | ||||
| 	tif_read.o \ | ||||
| 	tif_strip.o \ | ||||
| 	tif_swab.o \ | ||||
| 	tif_thunder.o \ | ||||
| 	tif_tile.o \ | ||||
| 	tif_version.o \ | ||||
| 	tif_warning.o \ | ||||
| 	tif_write.o \ | ||||
| 	tif_zip.o \ | ||||
| 	tif_win32.o | ||||
|  | ||||
| all: $(DLLNAME) | ||||
|  | ||||
| .PHONY: clean distclean | ||||
| .SUFFIXES: | ||||
| .SUFFIXES: .o .c | ||||
|  | ||||
| %.o: ../%.c | ||||
| 	$(CC) -c $(CPPFLAGS) $(INCLUDES) $(CFLAGS) -o $@ $< | ||||
|  | ||||
| $(DLLNAME): $(OBJ) | ||||
| 	$(CC) -shared -o $(DLLNAME) ../libtiff.def $(OBJ) $(LDFLAGS) $(LDLIBS) \ | ||||
| 		-Xlinker --out-implib -Xlinker $(LIBNAME) | ||||
|  | ||||
| distclean: clean | ||||
| 	$(RM) *.dll *.a | ||||
| clean: | ||||
| 	$(RM) *.o | ||||
							
								
								
									
										435
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mingw/tif_config.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										435
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mingw/tif_config.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,435 @@ | ||||
| /* libtiff/tif_config.h.  Generated from tif_config.h.in by configure.  */ | ||||
| /* libtiff/tif_config.h.in.  Generated from configure.ac by autoheader.  */ | ||||
|  | ||||
| /* Define if building universal (internal helper macro) */ | ||||
| /* #undef AC_APPLE_UNIVERSAL_BUILD */ | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #define CCITT_SUPPORT 1 | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #define CHECK_JPEG_YCBCR_SUBSAMPLING 1 | ||||
|  | ||||
| /* enable partial strip reading for large strips (experimental) */ | ||||
| /* #undef CHUNKY_STRIP_READ_SUPPORT */ | ||||
|  | ||||
| /* Support C++ stream API (requires C++ compiler) */ | ||||
| #define CXX_SUPPORT 1 | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 | ||||
|  | ||||
| /* enable deferred strip/tile offset/size loading (experimental) */ | ||||
| /* #undef DEFER_STRILE_LOAD */ | ||||
|  | ||||
| /* Define to 1 if you have the <assert.h> header file. */ | ||||
| #define HAVE_ASSERT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. | ||||
|    */ | ||||
| #define HAVE_DECL_OPTARG 1 | ||||
|  | ||||
| /* Define to 1 if you have the <dlfcn.h> header file. */ | ||||
| /* #undef HAVE_DLFCN_H */ | ||||
|  | ||||
| /* Define to 1 if you have the <fcntl.h> header file. */ | ||||
| #define HAVE_FCNTL_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `floor' function. */ | ||||
| #define HAVE_FLOOR 1 | ||||
|  | ||||
| /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ | ||||
| /* #undef HAVE_FSEEKO */ | ||||
|  | ||||
| /* Define to 1 if you have the `getopt' function. */ | ||||
| #define HAVE_GETOPT 1 | ||||
|  | ||||
| /* Define to 1 if you have the <GLUT/glut.h> header file. */ | ||||
| /* #undef HAVE_GLUT_GLUT_H */ | ||||
|  | ||||
| /* Define to 1 if you have the <GL/glut.h> header file. */ | ||||
| /* #undef HAVE_GL_GLUT_H */ | ||||
|  | ||||
| /* Define to 1 if you have the <GL/glu.h> header file. */ | ||||
| #define HAVE_GL_GLU_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <GL/gl.h> header file. */ | ||||
| #define HAVE_GL_GL_H 1 | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| /* #undef HAVE_INT16 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| /* #undef HAVE_INT32 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| /* #undef HAVE_INT8 */ | ||||
|  | ||||
| /* Define to 1 if you have the <inttypes.h> header file. */ | ||||
| #define HAVE_INTTYPES_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <io.h> header file. */ | ||||
| #define HAVE_IO_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `isascii' function. */ | ||||
| #define HAVE_ISASCII 1 | ||||
|  | ||||
| /* Define to 1 if you have the `jbg_newlen' function. */ | ||||
| /* #undef HAVE_JBG_NEWLEN */ | ||||
|  | ||||
| /* Define to 1 if you have the `lfind' function. */ | ||||
| #define HAVE_LFIND 1 | ||||
|  | ||||
| /* Define to 1 if you have the <limits.h> header file. */ | ||||
| #define HAVE_LIMITS_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <malloc.h> header file. */ | ||||
| #define HAVE_MALLOC_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `memmove' function. */ | ||||
| #define HAVE_MEMMOVE 1 | ||||
|  | ||||
| /* Define to 1 if you have the <memory.h> header file. */ | ||||
| #define HAVE_MEMORY_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `memset' function. */ | ||||
| #define HAVE_MEMSET 1 | ||||
|  | ||||
| /* Define to 1 if you have the `mmap' function. */ | ||||
| /* #undef HAVE_MMAP */ | ||||
|  | ||||
| /* Define to 1 if you have the <OpenGL/glu.h> header file. */ | ||||
| /* #undef HAVE_OPENGL_GLU_H */ | ||||
|  | ||||
| /* Define to 1 if you have the <OpenGL/gl.h> header file. */ | ||||
| /* #undef HAVE_OPENGL_GL_H */ | ||||
|  | ||||
| /* Define to 1 if you have the `pow' function. */ | ||||
| #define HAVE_POW 1 | ||||
|  | ||||
| /* Define if you have POSIX threads libraries and header files. */ | ||||
| /* #undef HAVE_PTHREAD */ | ||||
|  | ||||
| /* Define to 1 if you have the <search.h> header file. */ | ||||
| #define HAVE_SEARCH_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `setmode' function. */ | ||||
| #define HAVE_SETMODE 1 | ||||
|  | ||||
| /* Define to 1 if you have the `snprintf' function. */ | ||||
| #define HAVE_SNPRINTF 1 | ||||
|  | ||||
| /* Define to 1 if you have the `sqrt' function. */ | ||||
| #define HAVE_SQRT 1 | ||||
|  | ||||
| /* Define to 1 if you have the <stdint.h> header file. */ | ||||
| #define HAVE_STDINT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <stdlib.h> header file. */ | ||||
| #define HAVE_STDLIB_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strcasecmp' function. */ | ||||
| #define HAVE_STRCASECMP 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strchr' function. */ | ||||
| #define HAVE_STRCHR 1 | ||||
|  | ||||
| /* Define to 1 if you have the <strings.h> header file. */ | ||||
| #define HAVE_STRINGS_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <string.h> header file. */ | ||||
| #define HAVE_STRING_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strrchr' function. */ | ||||
| #define HAVE_STRRCHR 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strstr' function. */ | ||||
| #define HAVE_STRSTR 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strtol' function. */ | ||||
| #define HAVE_STRTOL 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strtoul' function. */ | ||||
| #define HAVE_STRTOUL 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strtoull' function. */ | ||||
| #define HAVE_STRTOULL 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/stat.h> header file. */ | ||||
| #define HAVE_SYS_STAT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/time.h> header file. */ | ||||
| #define HAVE_SYS_TIME_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/types.h> header file. */ | ||||
| #define HAVE_SYS_TYPES_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <unistd.h> header file. */ | ||||
| #define HAVE_UNISTD_H 1 | ||||
|  | ||||
| /* Use nonstandard varargs form for the GLU tesselator callback */ | ||||
| /* #undef HAVE_VARARGS_GLU_TESSCB */ | ||||
|  | ||||
| /* Define to 1 if you have the <windows.h> header file. */ | ||||
| #define HAVE_WINDOWS_H 1 | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #define HOST_BIGENDIAN 0 | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Support ISO JBIG compression (requires JBIG-KIT library) */ | ||||
| /* #undef JBIG_SUPPORT */ | ||||
|  | ||||
| /* 8/12 bit libjpeg dual mode enabled */ | ||||
| /* #undef JPEG_DUAL_MODE_8_12 */ | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| #define JPEG_SUPPORT 1 | ||||
|  | ||||
| /* 12bit libjpeg primary include file with path */ | ||||
| /* #undef LIBJPEG_12_PATH */ | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #define LOGLUV_SUPPORT 1 | ||||
|  | ||||
| /* Define to the sub-directory where libtool stores uninstalled libraries. */ | ||||
| #define LT_OBJDIR ".libs/" | ||||
|  | ||||
| /* Support LZMA2 compression */ | ||||
| /* #undef LZMA_SUPPORT */ | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #define LZW_SUPPORT 1 | ||||
|  | ||||
| /* Support Microsoft Document Imaging format */ | ||||
| #define MDI_SUPPORT 1 | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #define NEXT_SUPPORT 1 | ||||
|  | ||||
| /* Support Old JPEG compresson (read-only) */ | ||||
| #define OJPEG_SUPPORT 1 | ||||
|  | ||||
| /* Name of package */ | ||||
| #define PACKAGE "tiff" | ||||
|  | ||||
| /* Define to the address where bug reports for this package should be sent. */ | ||||
| #define PACKAGE_BUGREPORT "tiff@lists.maptools.org" | ||||
|  | ||||
| /* Define to the full name of this package. */ | ||||
| #define PACKAGE_NAME "LibTIFF Software" | ||||
|  | ||||
| /* Define to the full name and version of this package. */ | ||||
| #define PACKAGE_STRING "LibTIFF Software 4.0.9" | ||||
|  | ||||
| /* Define to the one symbol short name of this package. */ | ||||
| #define PACKAGE_TARNAME "tiff" | ||||
|  | ||||
| /* Define to the home page for this package. */ | ||||
| #define PACKAGE_URL "" | ||||
|  | ||||
| /* Define to the version of this package. */ | ||||
| #define PACKAGE_VERSION "4.0.9" | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #define PACKBITS_SUPPORT 1 | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| #define PIXARLOG_SUPPORT 1 | ||||
|  | ||||
| /* Define to necessary symbol if this constant uses a non-standard name on | ||||
|    your system. */ | ||||
| /* #undef PTHREAD_CREATE_JOINABLE */ | ||||
|  | ||||
| /* The size of `signed int', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_INT 4 | ||||
|  | ||||
| /* The size of `signed long', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_LONG 4 | ||||
|  | ||||
| /* The size of `signed long long', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_LONG_LONG 8 | ||||
|  | ||||
| /* The size of `signed short', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_SHORT 2 | ||||
|  | ||||
| /* The size of `size_t', as computed by sizeof. */ | ||||
| #ifdef _WIN64 | ||||
| #define SIZEOF_SIZE_T 8 | ||||
| #else | ||||
| #define SIZEOF_SIZE_T 4 | ||||
| #endif | ||||
|  | ||||
| /* The size of `unsigned char *', as computed by sizeof. */ | ||||
| #ifdef _WIN64 | ||||
| #define SIZEOF_UNSIGNED_CHAR_P 8 | ||||
| #else | ||||
| #define SIZEOF_UNSIGNED_CHAR_P 4 | ||||
| #endif | ||||
|  | ||||
| /* The size of `unsigned int', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_INT 4 | ||||
|  | ||||
| /* The size of `unsigned long', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_LONG 4 | ||||
|  | ||||
| /* The size of `unsigned long long', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_LONG_LONG 8 | ||||
|  | ||||
| /* The size of `unsigned short', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_SHORT 2 | ||||
|  | ||||
| /* Define to 1 if you have the ANSI C header files. */ | ||||
| #define STDC_HEADERS 1 | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of specified size to reduce memory usage) */ | ||||
| #define STRIPCHOP_DEFAULT TIFF_STRIPCHOP | ||||
|  | ||||
| /* Default size of the strip in bytes (when strip chopping enabled) */ | ||||
| #define STRIP_SIZE_DEFAULT 8192 | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #define SUBIFD_SUPPORT 1 | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #define THUNDER_SUPPORT 1 | ||||
|  | ||||
| /* Signed 16-bit type */ | ||||
| #define TIFF_INT16_T signed short | ||||
|  | ||||
| /* Signed 32-bit type formatter */ | ||||
| #define TIFF_INT32_FORMAT "%d" | ||||
|  | ||||
| /* Signed 32-bit type */ | ||||
| #define TIFF_INT32_T signed int | ||||
|  | ||||
| /* Signed 64-bit type formatter */ | ||||
| #define TIFF_INT64_FORMAT "%I64d" | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #define TIFF_INT64_T signed long long | ||||
|  | ||||
| /* Signed 8-bit type */ | ||||
| #define TIFF_INT8_T signed char | ||||
|  | ||||
| /* Pointer difference type formatter */ | ||||
| #define TIFF_PTRDIFF_FORMAT "%ld" | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #define TIFF_PTRDIFF_T ptrdiff_t | ||||
|  | ||||
| /* Size type formatter */ | ||||
| #ifdef _WIN64 | ||||
| #define TIFF_SIZE_FORMAT "%I64u" | ||||
| #else | ||||
| #define TIFF_SIZE_FORMAT "%u" | ||||
| #endif | ||||
|  | ||||
| /* Unsigned size type */ | ||||
| #ifdef _WIN64 | ||||
| #define TIFF_SIZE_T unsigned long long | ||||
| #else | ||||
| #define TIFF_SIZE_T unsigned int | ||||
| #endif | ||||
|  | ||||
| /* Signed size type formatter */ | ||||
| #ifdef _WIN64 | ||||
| #define TIFF_SSIZE_FORMAT "%I64d" | ||||
| #else | ||||
| #define TIFF_SSIZE_FORMAT "%d" | ||||
| #endif | ||||
|  | ||||
| /* Signed size type */ | ||||
| #ifdef _WIN64 | ||||
| #define TIFF_SSIZE_T signed long long | ||||
| #else | ||||
| #define TIFF_SSIZE_T signed int | ||||
| #endif | ||||
|  | ||||
| /* Unsigned 16-bit type */ | ||||
| #define TIFF_UINT16_T unsigned short | ||||
|  | ||||
| /* Unsigned 32-bit type formatter */ | ||||
| #define TIFF_UINT32_FORMAT "%u" | ||||
|  | ||||
| /* Unsigned 32-bit type */ | ||||
| #define TIFF_UINT32_T unsigned int | ||||
|  | ||||
| /* Unsigned 64-bit type formatter */ | ||||
| #define TIFF_UINT64_FORMAT "%I64u" | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #define TIFF_UINT64_T unsigned long long | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #define TIFF_UINT8_T unsigned char | ||||
|  | ||||
| /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | ||||
| #define TIME_WITH_SYS_TIME 1 | ||||
|  | ||||
| /* Define to 1 if your <sys/time.h> declares `struct tm'. */ | ||||
| /* #undef TM_IN_SYS_TIME */ | ||||
|  | ||||
| /* define to use win32 IO system */ | ||||
| #define USE_WIN32_FILEIO 1 | ||||
|  | ||||
| /* Version number of package */ | ||||
| #define VERSION "4.0.9" | ||||
|  | ||||
| /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most | ||||
|    significant byte first (like Motorola and SPARC, unlike Intel). */ | ||||
| #if defined AC_APPLE_UNIVERSAL_BUILD | ||||
| # if defined __BIG_ENDIAN__ | ||||
| #  define WORDS_BIGENDIAN 1 | ||||
| # endif | ||||
| #else | ||||
| # ifndef WORDS_BIGENDIAN | ||||
| /* #  undef WORDS_BIGENDIAN */ | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| /* Define to 1 if the X Window System is missing or not being used. */ | ||||
| /* #undef X_DISPLAY_MISSING */ | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| #define ZIP_SUPPORT 1 | ||||
|  | ||||
| /* Enable large inode numbers on Mac OS X 10.5.  */ | ||||
| #ifndef _DARWIN_USE_64_BIT_INODE | ||||
| # define _DARWIN_USE_64_BIT_INODE 1 | ||||
| #endif | ||||
|  | ||||
| /* Number of bits in a file offset, on hosts where this is settable. */ | ||||
| /* #undef _FILE_OFFSET_BITS */ | ||||
|  | ||||
| /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ | ||||
| /* #undef _LARGEFILE_SOURCE */ | ||||
|  | ||||
| /* Define for large files, on AIX-style hosts. */ | ||||
| /* #undef _LARGE_FILES */ | ||||
|  | ||||
| /* Define to empty if `const' does not conform to ANSI C. */ | ||||
| /* #undef const */ | ||||
|  | ||||
| /* Define to `__inline__' or `__inline' if that's what the C compiler | ||||
|    calls it, or to nothing if 'inline' is not supported under any name.  */ | ||||
| #ifndef __cplusplus | ||||
| /* #undef inline */ | ||||
| #endif | ||||
|  | ||||
| /* Define to `long int' if <sys/types.h> does not define. */ | ||||
| /* #undef off_t */ | ||||
|  | ||||
| /* Define to `unsigned int' if <sys/types.h> does not define. */ | ||||
| /* #undef size_t */ | ||||
							
								
								
									
										132
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mingw/tiffconf.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mingw/tiffconf.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,132 @@ | ||||
| /* libtiff/tiffconf.h.  Generated from tiffconf.h.in by configure.  */ | ||||
| /* | ||||
|   Configuration defines for installed libtiff. | ||||
|   This file maintained for backward compatibility. Do not use definitions | ||||
|   from this file in your programs. | ||||
| */ | ||||
|  | ||||
| #ifndef _TIFFCONF_ | ||||
| #define _TIFFCONF_ | ||||
|  | ||||
| /* Signed 16-bit type */ | ||||
| #define TIFF_INT16_T signed short | ||||
|  | ||||
| /* Signed 32-bit type */ | ||||
| #define TIFF_INT32_T signed int | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #define TIFF_INT64_T signed long long | ||||
|  | ||||
| /* Signed 8-bit type */ | ||||
| #define TIFF_INT8_T signed char | ||||
|  | ||||
| /* Unsigned 16-bit type */ | ||||
| #define TIFF_UINT16_T unsigned short | ||||
|  | ||||
| /* Unsigned 32-bit type */ | ||||
| #define TIFF_UINT32_T unsigned int | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #define TIFF_UINT64_T unsigned long long | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #define TIFF_UINT8_T unsigned char | ||||
|  | ||||
| /* Signed size type */ | ||||
| #if defined _WIN64 | ||||
| #define TIFF_SSIZE_T signed long long | ||||
| #else | ||||
| #define TIFF_SSIZE_T signed int | ||||
| #endif | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #define TIFF_PTRDIFF_T ptrdiff_t | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| /* #undef HAVE_INT16 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| /* #undef HAVE_INT32 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| /* #undef HAVE_INT8 */ | ||||
|  | ||||
| /* Compatibility stuff. */ | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #define HOST_BIGENDIAN 0 | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #define CCITT_SUPPORT 1 | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| #define JPEG_SUPPORT 1 | ||||
|  | ||||
| /* Support JBIG compression (requires JBIG-KIT library) */ | ||||
| /* #undef JBIG_SUPPORT */ | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #define LOGLUV_SUPPORT 1 | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #define LZW_SUPPORT 1 | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #define NEXT_SUPPORT 1 | ||||
|  | ||||
| /* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation | ||||
|    fails with unpatched IJG JPEG library) */ | ||||
| #define OJPEG_SUPPORT 1 | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #define PACKBITS_SUPPORT 1 | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| #define PIXARLOG_SUPPORT 1 | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #define THUNDER_SUPPORT 1 | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| #define ZIP_SUPPORT 1 | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of ~8Kb to reduce memory usage) */ | ||||
| #define STRIPCHOP_DEFAULT TIFF_STRIPCHOP | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #define SUBIFD_SUPPORT 1 | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #define CHECK_JPEG_YCBCR_SUBSAMPLING 1 | ||||
|  | ||||
| /* Support MS MDI magic number files as TIFF */ | ||||
| #define MDI_SUPPORT 1 | ||||
|  | ||||
| /* | ||||
|  * Feature support definitions. | ||||
|  * XXX: These macros are obsoleted. Don't use them in your apps! | ||||
|  * Macros stays here for backward compatibility and should be always defined. | ||||
|  */ | ||||
| #define COLORIMETRY_SUPPORT | ||||
| #define YCBCR_SUPPORT | ||||
| #define CMYK_SUPPORT | ||||
| #define ICC_SUPPORT | ||||
| #define PHOTOSHOP_SUPPORT | ||||
| #define IPTC_SUPPORT | ||||
|  | ||||
| #endif /* _TIFFCONF_ */ | ||||
							
								
								
									
										454
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mkg3states.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										454
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/mkg3states.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,454 @@ | ||||
| /* "$Id: mkg3states.c,v 1.12 2015-06-21 01:09:09 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1991-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* Initialise fax decoder tables | ||||
|  * Decoder support is derived, with permission, from the code | ||||
|  * in Frank Cringle's viewfax program; | ||||
|  *      Copyright (C) 1990, 1995  Frank D. Cringle. | ||||
|  */ | ||||
| #include "tif_config.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| #ifdef HAVE_UNISTD_H | ||||
| # include <unistd.h> | ||||
| #endif | ||||
|  | ||||
| #include "tif_fax3.h" | ||||
|  | ||||
| #ifndef HAVE_GETOPT | ||||
| extern int getopt(int, char**, char*); | ||||
| #endif | ||||
|  | ||||
| #define	streq(a,b)	(strcmp(a,b) == 0) | ||||
|  | ||||
| /* NB: can't use names in tif_fax3.h 'cuz they are declared const */ | ||||
| TIFFFaxTabEnt MainTable[128]; | ||||
| TIFFFaxTabEnt WhiteTable[4096]; | ||||
| TIFFFaxTabEnt BlackTable[8192]; | ||||
|  | ||||
| struct proto { | ||||
|     uint16 code;		/* right justified, lsb-first, zero filled */ | ||||
|     uint16 val;		/* (pixel count)<<4 + code width  */ | ||||
| }; | ||||
|  | ||||
| static struct proto Pass[] = { | ||||
| { 0x0008, 4 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto Horiz[]  = { | ||||
| { 0x0004, 3 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto V0[]  = { | ||||
| { 0x0001, 1 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto VR[]  = { | ||||
| { 0x0006, (1<<4)+3 }, | ||||
| { 0x0030, (2<<4)+6 }, | ||||
| { 0x0060, (3<<4)+7 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto VL[]  = { | ||||
| { 0x0002, (1<<4)+3 }, | ||||
| { 0x0010, (2<<4)+6 }, | ||||
| { 0x0020, (3<<4)+7 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto Ext[]  = { | ||||
| { 0x0040, 7 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto EOLV[]  = { | ||||
| { 0x0000, 7 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto MakeUpW[] = { | ||||
| { 0x001b, 1029 }, | ||||
| { 0x0009, 2053 }, | ||||
| { 0x003a, 3078 }, | ||||
| { 0x0076, 4103 }, | ||||
| { 0x006c, 5128 }, | ||||
| { 0x00ec, 6152 }, | ||||
| { 0x0026, 7176 }, | ||||
| { 0x00a6, 8200 }, | ||||
| { 0x0016, 9224 }, | ||||
| { 0x00e6, 10248 }, | ||||
| { 0x0066, 11273 }, | ||||
| { 0x0166, 12297 }, | ||||
| { 0x0096, 13321 }, | ||||
| { 0x0196, 14345 }, | ||||
| { 0x0056, 15369 }, | ||||
| { 0x0156, 16393 }, | ||||
| { 0x00d6, 17417 }, | ||||
| { 0x01d6, 18441 }, | ||||
| { 0x0036, 19465 }, | ||||
| { 0x0136, 20489 }, | ||||
| { 0x00b6, 21513 }, | ||||
| { 0x01b6, 22537 }, | ||||
| { 0x0032, 23561 }, | ||||
| { 0x0132, 24585 }, | ||||
| { 0x00b2, 25609 }, | ||||
| { 0x0006, 26630 }, | ||||
| { 0x01b2, 27657 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto MakeUpB[] = { | ||||
| { 0x03c0, 1034 }, | ||||
| { 0x0130, 2060 }, | ||||
| { 0x0930, 3084 }, | ||||
| { 0x0da0, 4108 }, | ||||
| { 0x0cc0, 5132 }, | ||||
| { 0x02c0, 6156 }, | ||||
| { 0x0ac0, 7180 }, | ||||
| { 0x06c0, 8205 }, | ||||
| { 0x16c0, 9229 }, | ||||
| { 0x0a40, 10253 }, | ||||
| { 0x1a40, 11277 }, | ||||
| { 0x0640, 12301 }, | ||||
| { 0x1640, 13325 }, | ||||
| { 0x09c0, 14349 }, | ||||
| { 0x19c0, 15373 }, | ||||
| { 0x05c0, 16397 }, | ||||
| { 0x15c0, 17421 }, | ||||
| { 0x0dc0, 18445 }, | ||||
| { 0x1dc0, 19469 }, | ||||
| { 0x0940, 20493 }, | ||||
| { 0x1940, 21517 }, | ||||
| { 0x0540, 22541 }, | ||||
| { 0x1540, 23565 }, | ||||
| { 0x0b40, 24589 }, | ||||
| { 0x1b40, 25613 }, | ||||
| { 0x04c0, 26637 }, | ||||
| { 0x14c0, 27661 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto MakeUp[] = { | ||||
| { 0x0080, 28683 }, | ||||
| { 0x0180, 29707 }, | ||||
| { 0x0580, 30731 }, | ||||
| { 0x0480, 31756 }, | ||||
| { 0x0c80, 32780 }, | ||||
| { 0x0280, 33804 }, | ||||
| { 0x0a80, 34828 }, | ||||
| { 0x0680, 35852 }, | ||||
| { 0x0e80, 36876 }, | ||||
| { 0x0380, 37900 }, | ||||
| { 0x0b80, 38924 }, | ||||
| { 0x0780, 39948 }, | ||||
| { 0x0f80, 40972 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto TermW[] = { | ||||
| { 0x00ac, 8 }, | ||||
| { 0x0038, 22 }, | ||||
| { 0x000e, 36 }, | ||||
| { 0x0001, 52 }, | ||||
| { 0x000d, 68 }, | ||||
| { 0x0003, 84 }, | ||||
| { 0x0007, 100 }, | ||||
| { 0x000f, 116 }, | ||||
| { 0x0019, 133 }, | ||||
| { 0x0005, 149 }, | ||||
| { 0x001c, 165 }, | ||||
| { 0x0002, 181 }, | ||||
| { 0x0004, 198 }, | ||||
| { 0x0030, 214 }, | ||||
| { 0x000b, 230 }, | ||||
| { 0x002b, 246 }, | ||||
| { 0x0015, 262 }, | ||||
| { 0x0035, 278 }, | ||||
| { 0x0072, 295 }, | ||||
| { 0x0018, 311 }, | ||||
| { 0x0008, 327 }, | ||||
| { 0x0074, 343 }, | ||||
| { 0x0060, 359 }, | ||||
| { 0x0010, 375 }, | ||||
| { 0x000a, 391 }, | ||||
| { 0x006a, 407 }, | ||||
| { 0x0064, 423 }, | ||||
| { 0x0012, 439 }, | ||||
| { 0x000c, 455 }, | ||||
| { 0x0040, 472 }, | ||||
| { 0x00c0, 488 }, | ||||
| { 0x0058, 504 }, | ||||
| { 0x00d8, 520 }, | ||||
| { 0x0048, 536 }, | ||||
| { 0x00c8, 552 }, | ||||
| { 0x0028, 568 }, | ||||
| { 0x00a8, 584 }, | ||||
| { 0x0068, 600 }, | ||||
| { 0x00e8, 616 }, | ||||
| { 0x0014, 632 }, | ||||
| { 0x0094, 648 }, | ||||
| { 0x0054, 664 }, | ||||
| { 0x00d4, 680 }, | ||||
| { 0x0034, 696 }, | ||||
| { 0x00b4, 712 }, | ||||
| { 0x0020, 728 }, | ||||
| { 0x00a0, 744 }, | ||||
| { 0x0050, 760 }, | ||||
| { 0x00d0, 776 }, | ||||
| { 0x004a, 792 }, | ||||
| { 0x00ca, 808 }, | ||||
| { 0x002a, 824 }, | ||||
| { 0x00aa, 840 }, | ||||
| { 0x0024, 856 }, | ||||
| { 0x00a4, 872 }, | ||||
| { 0x001a, 888 }, | ||||
| { 0x009a, 904 }, | ||||
| { 0x005a, 920 }, | ||||
| { 0x00da, 936 }, | ||||
| { 0x0052, 952 }, | ||||
| { 0x00d2, 968 }, | ||||
| { 0x004c, 984 }, | ||||
| { 0x00cc, 1000 }, | ||||
| { 0x002c, 1016 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto TermB[] = { | ||||
| { 0x03b0, 10 }, | ||||
| { 0x0002, 19 }, | ||||
| { 0x0003, 34 }, | ||||
| { 0x0001, 50 }, | ||||
| { 0x0006, 67 }, | ||||
| { 0x000c, 84 }, | ||||
| { 0x0004, 100 }, | ||||
| { 0x0018, 117 }, | ||||
| { 0x0028, 134 }, | ||||
| { 0x0008, 150 }, | ||||
| { 0x0010, 167 }, | ||||
| { 0x0050, 183 }, | ||||
| { 0x0070, 199 }, | ||||
| { 0x0020, 216 }, | ||||
| { 0x00e0, 232 }, | ||||
| { 0x0030, 249 }, | ||||
| { 0x03a0, 266 }, | ||||
| { 0x0060, 282 }, | ||||
| { 0x0040, 298 }, | ||||
| { 0x0730, 315 }, | ||||
| { 0x00b0, 331 }, | ||||
| { 0x01b0, 347 }, | ||||
| { 0x0760, 363 }, | ||||
| { 0x00a0, 379 }, | ||||
| { 0x0740, 395 }, | ||||
| { 0x00c0, 411 }, | ||||
| { 0x0530, 428 }, | ||||
| { 0x0d30, 444 }, | ||||
| { 0x0330, 460 }, | ||||
| { 0x0b30, 476 }, | ||||
| { 0x0160, 492 }, | ||||
| { 0x0960, 508 }, | ||||
| { 0x0560, 524 }, | ||||
| { 0x0d60, 540 }, | ||||
| { 0x04b0, 556 }, | ||||
| { 0x0cb0, 572 }, | ||||
| { 0x02b0, 588 }, | ||||
| { 0x0ab0, 604 }, | ||||
| { 0x06b0, 620 }, | ||||
| { 0x0eb0, 636 }, | ||||
| { 0x0360, 652 }, | ||||
| { 0x0b60, 668 }, | ||||
| { 0x05b0, 684 }, | ||||
| { 0x0db0, 700 }, | ||||
| { 0x02a0, 716 }, | ||||
| { 0x0aa0, 732 }, | ||||
| { 0x06a0, 748 }, | ||||
| { 0x0ea0, 764 }, | ||||
| { 0x0260, 780 }, | ||||
| { 0x0a60, 796 }, | ||||
| { 0x04a0, 812 }, | ||||
| { 0x0ca0, 828 }, | ||||
| { 0x0240, 844 }, | ||||
| { 0x0ec0, 860 }, | ||||
| { 0x01c0, 876 }, | ||||
| { 0x0e40, 892 }, | ||||
| { 0x0140, 908 }, | ||||
| { 0x01a0, 924 }, | ||||
| { 0x09a0, 940 }, | ||||
| { 0x0d40, 956 }, | ||||
| { 0x0340, 972 }, | ||||
| { 0x05a0, 988 }, | ||||
| { 0x0660, 1004 }, | ||||
| { 0x0e60, 1020 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static struct proto EOLH[] = { | ||||
| { 0x0000, 11 }, | ||||
| { 0, 0 } | ||||
| }; | ||||
|  | ||||
| static void | ||||
| FillTable(TIFFFaxTabEnt *T, int Size, struct proto *P, int State) | ||||
| { | ||||
|     int limit = 1 << Size; | ||||
|  | ||||
|     while (P->val) { | ||||
| 	int width = P->val & 15; | ||||
| 	int param = P->val >> 4; | ||||
| 	int incr = 1 << width; | ||||
| 	int code; | ||||
| 	for (code = P->code; code < limit; code += incr) { | ||||
| 	    TIFFFaxTabEnt *E = T+code; | ||||
| 	    E->State = State; | ||||
| 	    E->Width = width; | ||||
| 	    E->Param = param; | ||||
| 	} | ||||
| 	P++; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static	char* storage_class = ""; | ||||
| static	char* const_class = ""; | ||||
| static	int packoutput = 1; | ||||
| static	char* prebrace = ""; | ||||
| static	char* postbrace = ""; | ||||
|  | ||||
| void | ||||
| WriteTable(FILE* fd, const TIFFFaxTabEnt* T, int Size, const char* name) | ||||
| { | ||||
|     int i; | ||||
|     char* sep; | ||||
|  | ||||
|     fprintf(fd, "%s %s TIFFFaxTabEnt %s[%d] = {", | ||||
| 	storage_class, const_class, name, Size); | ||||
|     if (packoutput) { | ||||
| 	sep = "\n"; | ||||
| 	for (i = 0; i < Size; i++) { | ||||
| 	    fprintf(fd, "%s%s%d,%d,%d%s", | ||||
| 		sep, prebrace, T->State, T->Width, (int) T->Param, postbrace); | ||||
| 	    if (((i+1) % 10) == 0) | ||||
| 		    sep = ",\n"; | ||||
| 	    else | ||||
| 		    sep = ","; | ||||
| 	    T++; | ||||
| 	} | ||||
|     } else { | ||||
| 	sep = "\n "; | ||||
| 	for (i = 0; i < Size; i++) { | ||||
| 	    fprintf(fd, "%s%s%3d,%3d,%4d%s", | ||||
| 		sep, prebrace, T->State, T->Width, (int) T->Param, postbrace); | ||||
| 	    if (((i+1) % 6) == 0) | ||||
| 		    sep = ",\n "; | ||||
| 	    else | ||||
| 		    sep = ","; | ||||
| 	    T++; | ||||
| 	} | ||||
|     } | ||||
|     fprintf(fd, "\n};\n"); | ||||
| } | ||||
|  | ||||
| /* initialise the huffman code tables */ | ||||
| int | ||||
| main(int argc, char* argv[]) | ||||
| { | ||||
|     FILE* fd; | ||||
|     char* outputfile; | ||||
|     int c; | ||||
|  | ||||
| #if !HAVE_DECL_OPTARG | ||||
|     extern int optind; | ||||
|     extern char* optarg; | ||||
| #endif | ||||
|  | ||||
|     while ((c = getopt(argc, argv, "c:s:bp")) != -1) | ||||
| 	switch (c) { | ||||
| 	case 'c': | ||||
| 	    const_class = optarg; | ||||
| 	    break; | ||||
| 	case 's': | ||||
| 	    storage_class = optarg; | ||||
| 	    break; | ||||
| 	case 'p': | ||||
| 	    packoutput = 0; | ||||
| 	    break; | ||||
| 	case 'b': | ||||
| 	    prebrace = "{"; | ||||
| 	    postbrace = "}"; | ||||
| 	    break; | ||||
| 	case '?': | ||||
| 	    fprintf(stderr, | ||||
| 		"usage: %s [-c const] [-s storage] [-p] [-b] file\n", | ||||
| 		argv[0]); | ||||
| 	    return (-1); | ||||
| 	} | ||||
|     outputfile = optind < argc ? argv[optind] : "g3states.h"; | ||||
|     fd = fopen(outputfile, "w"); | ||||
|     if (fd == NULL) { | ||||
| 	fprintf(stderr, "%s: %s: Cannot create output file.\n", | ||||
| 	    argv[0], outputfile); | ||||
| 	return (-2); | ||||
|     } | ||||
|     FillTable(MainTable, 7, Pass, S_Pass); | ||||
|     FillTable(MainTable, 7, Horiz, S_Horiz); | ||||
|     FillTable(MainTable, 7, V0, S_V0); | ||||
|     FillTable(MainTable, 7, VR, S_VR); | ||||
|     FillTable(MainTable, 7, VL, S_VL); | ||||
|     FillTable(MainTable, 7, Ext, S_Ext); | ||||
|     FillTable(MainTable, 7, EOLV, S_EOL); | ||||
|     FillTable(WhiteTable, 12, MakeUpW, S_MakeUpW); | ||||
|     FillTable(WhiteTable, 12, MakeUp, S_MakeUp); | ||||
|     FillTable(WhiteTable, 12, TermW, S_TermW); | ||||
|     FillTable(WhiteTable, 12, EOLH, S_EOL); | ||||
|     FillTable(BlackTable, 13, MakeUpB, S_MakeUpB); | ||||
|     FillTable(BlackTable, 13, MakeUp, S_MakeUp); | ||||
|     FillTable(BlackTable, 13, TermB, S_TermB); | ||||
|     FillTable(BlackTable, 13, EOLH, S_EOL); | ||||
|  | ||||
|     fprintf(fd, "/* WARNING, this file was automatically generated by the\n"); | ||||
|     fprintf(fd, "    mkg3states program */\n"); | ||||
|     fprintf(fd, "#include \"tiff.h\"\n"); | ||||
|     fprintf(fd, "#include \"tif_fax3.h\"\n"); | ||||
|     WriteTable(fd, MainTable, 128, "TIFFFaxMainTable"); | ||||
|     WriteTable(fd, WhiteTable, 4096, "TIFFFaxWhiteTable"); | ||||
|     WriteTable(fd, BlackTable, 8192, "TIFFFaxBlackTable"); | ||||
|     fclose(fd); | ||||
|     return (0); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										292
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/t4.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/t4.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,292 @@ | ||||
| /* $Id: t4.h,v 1.3 2010-03-10 18:56:48 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _T4_ | ||||
| #define	_T4_ | ||||
| /* | ||||
|  * CCITT T.4 1D Huffman runlength codes and | ||||
|  * related definitions.  Given the small sizes | ||||
|  * of these tables it does not seem | ||||
|  * worthwhile to make code & length 8 bits. | ||||
|  */ | ||||
| typedef struct tableentry { | ||||
|     unsigned short length;  /* bit length of g3 code */ | ||||
|     unsigned short code;    /* g3 code */ | ||||
|     short runlen;           /* run length in bits */ | ||||
| } tableentry; | ||||
|  | ||||
| #define EOL	0x001	/* EOL code value - 0000 0000 0000 1 */ | ||||
|  | ||||
| /* status values returned instead of a run length */ | ||||
| #define G3CODE_EOL	-1	/* NB: ACT_EOL - ACT_WRUNT */ | ||||
| #define G3CODE_INVALID	-2	/* NB: ACT_INVALID - ACT_WRUNT */ | ||||
| #define G3CODE_EOF	-3	/* end of input data */ | ||||
| #define G3CODE_INCOMP	-4	/* incomplete run code */ | ||||
|  | ||||
| /* | ||||
|  * Note that these tables are ordered such that the | ||||
|  * index into the table is known to be either the | ||||
|  * run length, or (run length / 64) + a fixed offset. | ||||
|  * | ||||
|  * NB: The G3CODE_INVALID entries are only used | ||||
|  *     during state generation (see mkg3states.c). | ||||
|  */ | ||||
| #ifdef G3CODES | ||||
| const tableentry TIFFFaxWhiteCodes[] = { | ||||
|     { 8, 0x35, 0 },	/* 0011 0101 */ | ||||
|     { 6, 0x7, 1 },	/* 0001 11 */ | ||||
|     { 4, 0x7, 2 },	/* 0111 */ | ||||
|     { 4, 0x8, 3 },	/* 1000 */ | ||||
|     { 4, 0xB, 4 },	/* 1011 */ | ||||
|     { 4, 0xC, 5 },	/* 1100 */ | ||||
|     { 4, 0xE, 6 },	/* 1110 */ | ||||
|     { 4, 0xF, 7 },	/* 1111 */ | ||||
|     { 5, 0x13, 8 },	/* 1001 1 */ | ||||
|     { 5, 0x14, 9 },	/* 1010 0 */ | ||||
|     { 5, 0x7, 10 },	/* 0011 1 */ | ||||
|     { 5, 0x8, 11 },	/* 0100 0 */ | ||||
|     { 6, 0x8, 12 },	/* 0010 00 */ | ||||
|     { 6, 0x3, 13 },	/* 0000 11 */ | ||||
|     { 6, 0x34, 14 },	/* 1101 00 */ | ||||
|     { 6, 0x35, 15 },	/* 1101 01 */ | ||||
|     { 6, 0x2A, 16 },	/* 1010 10 */ | ||||
|     { 6, 0x2B, 17 },	/* 1010 11 */ | ||||
|     { 7, 0x27, 18 },	/* 0100 111 */ | ||||
|     { 7, 0xC, 19 },	/* 0001 100 */ | ||||
|     { 7, 0x8, 20 },	/* 0001 000 */ | ||||
|     { 7, 0x17, 21 },	/* 0010 111 */ | ||||
|     { 7, 0x3, 22 },	/* 0000 011 */ | ||||
|     { 7, 0x4, 23 },	/* 0000 100 */ | ||||
|     { 7, 0x28, 24 },	/* 0101 000 */ | ||||
|     { 7, 0x2B, 25 },	/* 0101 011 */ | ||||
|     { 7, 0x13, 26 },	/* 0010 011 */ | ||||
|     { 7, 0x24, 27 },	/* 0100 100 */ | ||||
|     { 7, 0x18, 28 },	/* 0011 000 */ | ||||
|     { 8, 0x2, 29 },	/* 0000 0010 */ | ||||
|     { 8, 0x3, 30 },	/* 0000 0011 */ | ||||
|     { 8, 0x1A, 31 },	/* 0001 1010 */ | ||||
|     { 8, 0x1B, 32 },	/* 0001 1011 */ | ||||
|     { 8, 0x12, 33 },	/* 0001 0010 */ | ||||
|     { 8, 0x13, 34 },	/* 0001 0011 */ | ||||
|     { 8, 0x14, 35 },	/* 0001 0100 */ | ||||
|     { 8, 0x15, 36 },	/* 0001 0101 */ | ||||
|     { 8, 0x16, 37 },	/* 0001 0110 */ | ||||
|     { 8, 0x17, 38 },	/* 0001 0111 */ | ||||
|     { 8, 0x28, 39 },	/* 0010 1000 */ | ||||
|     { 8, 0x29, 40 },	/* 0010 1001 */ | ||||
|     { 8, 0x2A, 41 },	/* 0010 1010 */ | ||||
|     { 8, 0x2B, 42 },	/* 0010 1011 */ | ||||
|     { 8, 0x2C, 43 },	/* 0010 1100 */ | ||||
|     { 8, 0x2D, 44 },	/* 0010 1101 */ | ||||
|     { 8, 0x4, 45 },	/* 0000 0100 */ | ||||
|     { 8, 0x5, 46 },	/* 0000 0101 */ | ||||
|     { 8, 0xA, 47 },	/* 0000 1010 */ | ||||
|     { 8, 0xB, 48 },	/* 0000 1011 */ | ||||
|     { 8, 0x52, 49 },	/* 0101 0010 */ | ||||
|     { 8, 0x53, 50 },	/* 0101 0011 */ | ||||
|     { 8, 0x54, 51 },	/* 0101 0100 */ | ||||
|     { 8, 0x55, 52 },	/* 0101 0101 */ | ||||
|     { 8, 0x24, 53 },	/* 0010 0100 */ | ||||
|     { 8, 0x25, 54 },	/* 0010 0101 */ | ||||
|     { 8, 0x58, 55 },	/* 0101 1000 */ | ||||
|     { 8, 0x59, 56 },	/* 0101 1001 */ | ||||
|     { 8, 0x5A, 57 },	/* 0101 1010 */ | ||||
|     { 8, 0x5B, 58 },	/* 0101 1011 */ | ||||
|     { 8, 0x4A, 59 },	/* 0100 1010 */ | ||||
|     { 8, 0x4B, 60 },	/* 0100 1011 */ | ||||
|     { 8, 0x32, 61 },	/* 0011 0010 */ | ||||
|     { 8, 0x33, 62 },	/* 0011 0011 */ | ||||
|     { 8, 0x34, 63 },	/* 0011 0100 */ | ||||
|     { 5, 0x1B, 64 },	/* 1101 1 */ | ||||
|     { 5, 0x12, 128 },	/* 1001 0 */ | ||||
|     { 6, 0x17, 192 },	/* 0101 11 */ | ||||
|     { 7, 0x37, 256 },	/* 0110 111 */ | ||||
|     { 8, 0x36, 320 },	/* 0011 0110 */ | ||||
|     { 8, 0x37, 384 },	/* 0011 0111 */ | ||||
|     { 8, 0x64, 448 },	/* 0110 0100 */ | ||||
|     { 8, 0x65, 512 },	/* 0110 0101 */ | ||||
|     { 8, 0x68, 576 },	/* 0110 1000 */ | ||||
|     { 8, 0x67, 640 },	/* 0110 0111 */ | ||||
|     { 9, 0xCC, 704 },	/* 0110 0110 0 */ | ||||
|     { 9, 0xCD, 768 },	/* 0110 0110 1 */ | ||||
|     { 9, 0xD2, 832 },	/* 0110 1001 0 */ | ||||
|     { 9, 0xD3, 896 },	/* 0110 1001 1 */ | ||||
|     { 9, 0xD4, 960 },	/* 0110 1010 0 */ | ||||
|     { 9, 0xD5, 1024 },	/* 0110 1010 1 */ | ||||
|     { 9, 0xD6, 1088 },	/* 0110 1011 0 */ | ||||
|     { 9, 0xD7, 1152 },	/* 0110 1011 1 */ | ||||
|     { 9, 0xD8, 1216 },	/* 0110 1100 0 */ | ||||
|     { 9, 0xD9, 1280 },	/* 0110 1100 1 */ | ||||
|     { 9, 0xDA, 1344 },	/* 0110 1101 0 */ | ||||
|     { 9, 0xDB, 1408 },	/* 0110 1101 1 */ | ||||
|     { 9, 0x98, 1472 },	/* 0100 1100 0 */ | ||||
|     { 9, 0x99, 1536 },	/* 0100 1100 1 */ | ||||
|     { 9, 0x9A, 1600 },	/* 0100 1101 0 */ | ||||
|     { 6, 0x18, 1664 },	/* 0110 00 */ | ||||
|     { 9, 0x9B, 1728 },	/* 0100 1101 1 */ | ||||
|     { 11, 0x8, 1792 },	/* 0000 0001 000 */ | ||||
|     { 11, 0xC, 1856 },	/* 0000 0001 100 */ | ||||
|     { 11, 0xD, 1920 },	/* 0000 0001 101 */ | ||||
|     { 12, 0x12, 1984 },	/* 0000 0001 0010 */ | ||||
|     { 12, 0x13, 2048 },	/* 0000 0001 0011 */ | ||||
|     { 12, 0x14, 2112 },	/* 0000 0001 0100 */ | ||||
|     { 12, 0x15, 2176 },	/* 0000 0001 0101 */ | ||||
|     { 12, 0x16, 2240 },	/* 0000 0001 0110 */ | ||||
|     { 12, 0x17, 2304 },	/* 0000 0001 0111 */ | ||||
|     { 12, 0x1C, 2368 },	/* 0000 0001 1100 */ | ||||
|     { 12, 0x1D, 2432 },	/* 0000 0001 1101 */ | ||||
|     { 12, 0x1E, 2496 },	/* 0000 0001 1110 */ | ||||
|     { 12, 0x1F, 2560 },	/* 0000 0001 1111 */ | ||||
|     { 12, 0x1, G3CODE_EOL },	/* 0000 0000 0001 */ | ||||
|     { 9, 0x1, G3CODE_INVALID },	/* 0000 0000 1 */ | ||||
|     { 10, 0x1, G3CODE_INVALID },	/* 0000 0000 01 */ | ||||
|     { 11, 0x1, G3CODE_INVALID },	/* 0000 0000 001 */ | ||||
|     { 12, 0x0, G3CODE_INVALID },	/* 0000 0000 0000 */ | ||||
| }; | ||||
|  | ||||
| const tableentry TIFFFaxBlackCodes[] = { | ||||
|     { 10, 0x37, 0 },	/* 0000 1101 11 */ | ||||
|     { 3, 0x2, 1 },	/* 010 */ | ||||
|     { 2, 0x3, 2 },	/* 11 */ | ||||
|     { 2, 0x2, 3 },	/* 10 */ | ||||
|     { 3, 0x3, 4 },	/* 011 */ | ||||
|     { 4, 0x3, 5 },	/* 0011 */ | ||||
|     { 4, 0x2, 6 },	/* 0010 */ | ||||
|     { 5, 0x3, 7 },	/* 0001 1 */ | ||||
|     { 6, 0x5, 8 },	/* 0001 01 */ | ||||
|     { 6, 0x4, 9 },	/* 0001 00 */ | ||||
|     { 7, 0x4, 10 },	/* 0000 100 */ | ||||
|     { 7, 0x5, 11 },	/* 0000 101 */ | ||||
|     { 7, 0x7, 12 },	/* 0000 111 */ | ||||
|     { 8, 0x4, 13 },	/* 0000 0100 */ | ||||
|     { 8, 0x7, 14 },	/* 0000 0111 */ | ||||
|     { 9, 0x18, 15 },	/* 0000 1100 0 */ | ||||
|     { 10, 0x17, 16 },	/* 0000 0101 11 */ | ||||
|     { 10, 0x18, 17 },	/* 0000 0110 00 */ | ||||
|     { 10, 0x8, 18 },	/* 0000 0010 00 */ | ||||
|     { 11, 0x67, 19 },	/* 0000 1100 111 */ | ||||
|     { 11, 0x68, 20 },	/* 0000 1101 000 */ | ||||
|     { 11, 0x6C, 21 },	/* 0000 1101 100 */ | ||||
|     { 11, 0x37, 22 },	/* 0000 0110 111 */ | ||||
|     { 11, 0x28, 23 },	/* 0000 0101 000 */ | ||||
|     { 11, 0x17, 24 },	/* 0000 0010 111 */ | ||||
|     { 11, 0x18, 25 },	/* 0000 0011 000 */ | ||||
|     { 12, 0xCA, 26 },	/* 0000 1100 1010 */ | ||||
|     { 12, 0xCB, 27 },	/* 0000 1100 1011 */ | ||||
|     { 12, 0xCC, 28 },	/* 0000 1100 1100 */ | ||||
|     { 12, 0xCD, 29 },	/* 0000 1100 1101 */ | ||||
|     { 12, 0x68, 30 },	/* 0000 0110 1000 */ | ||||
|     { 12, 0x69, 31 },	/* 0000 0110 1001 */ | ||||
|     { 12, 0x6A, 32 },	/* 0000 0110 1010 */ | ||||
|     { 12, 0x6B, 33 },	/* 0000 0110 1011 */ | ||||
|     { 12, 0xD2, 34 },	/* 0000 1101 0010 */ | ||||
|     { 12, 0xD3, 35 },	/* 0000 1101 0011 */ | ||||
|     { 12, 0xD4, 36 },	/* 0000 1101 0100 */ | ||||
|     { 12, 0xD5, 37 },	/* 0000 1101 0101 */ | ||||
|     { 12, 0xD6, 38 },	/* 0000 1101 0110 */ | ||||
|     { 12, 0xD7, 39 },	/* 0000 1101 0111 */ | ||||
|     { 12, 0x6C, 40 },	/* 0000 0110 1100 */ | ||||
|     { 12, 0x6D, 41 },	/* 0000 0110 1101 */ | ||||
|     { 12, 0xDA, 42 },	/* 0000 1101 1010 */ | ||||
|     { 12, 0xDB, 43 },	/* 0000 1101 1011 */ | ||||
|     { 12, 0x54, 44 },	/* 0000 0101 0100 */ | ||||
|     { 12, 0x55, 45 },	/* 0000 0101 0101 */ | ||||
|     { 12, 0x56, 46 },	/* 0000 0101 0110 */ | ||||
|     { 12, 0x57, 47 },	/* 0000 0101 0111 */ | ||||
|     { 12, 0x64, 48 },	/* 0000 0110 0100 */ | ||||
|     { 12, 0x65, 49 },	/* 0000 0110 0101 */ | ||||
|     { 12, 0x52, 50 },	/* 0000 0101 0010 */ | ||||
|     { 12, 0x53, 51 },	/* 0000 0101 0011 */ | ||||
|     { 12, 0x24, 52 },	/* 0000 0010 0100 */ | ||||
|     { 12, 0x37, 53 },	/* 0000 0011 0111 */ | ||||
|     { 12, 0x38, 54 },	/* 0000 0011 1000 */ | ||||
|     { 12, 0x27, 55 },	/* 0000 0010 0111 */ | ||||
|     { 12, 0x28, 56 },	/* 0000 0010 1000 */ | ||||
|     { 12, 0x58, 57 },	/* 0000 0101 1000 */ | ||||
|     { 12, 0x59, 58 },	/* 0000 0101 1001 */ | ||||
|     { 12, 0x2B, 59 },	/* 0000 0010 1011 */ | ||||
|     { 12, 0x2C, 60 },	/* 0000 0010 1100 */ | ||||
|     { 12, 0x5A, 61 },	/* 0000 0101 1010 */ | ||||
|     { 12, 0x66, 62 },	/* 0000 0110 0110 */ | ||||
|     { 12, 0x67, 63 },	/* 0000 0110 0111 */ | ||||
|     { 10, 0xF, 64 },	/* 0000 0011 11 */ | ||||
|     { 12, 0xC8, 128 },	/* 0000 1100 1000 */ | ||||
|     { 12, 0xC9, 192 },	/* 0000 1100 1001 */ | ||||
|     { 12, 0x5B, 256 },	/* 0000 0101 1011 */ | ||||
|     { 12, 0x33, 320 },	/* 0000 0011 0011 */ | ||||
|     { 12, 0x34, 384 },	/* 0000 0011 0100 */ | ||||
|     { 12, 0x35, 448 },	/* 0000 0011 0101 */ | ||||
|     { 13, 0x6C, 512 },	/* 0000 0011 0110 0 */ | ||||
|     { 13, 0x6D, 576 },	/* 0000 0011 0110 1 */ | ||||
|     { 13, 0x4A, 640 },	/* 0000 0010 0101 0 */ | ||||
|     { 13, 0x4B, 704 },	/* 0000 0010 0101 1 */ | ||||
|     { 13, 0x4C, 768 },	/* 0000 0010 0110 0 */ | ||||
|     { 13, 0x4D, 832 },	/* 0000 0010 0110 1 */ | ||||
|     { 13, 0x72, 896 },	/* 0000 0011 1001 0 */ | ||||
|     { 13, 0x73, 960 },	/* 0000 0011 1001 1 */ | ||||
|     { 13, 0x74, 1024 },	/* 0000 0011 1010 0 */ | ||||
|     { 13, 0x75, 1088 },	/* 0000 0011 1010 1 */ | ||||
|     { 13, 0x76, 1152 },	/* 0000 0011 1011 0 */ | ||||
|     { 13, 0x77, 1216 },	/* 0000 0011 1011 1 */ | ||||
|     { 13, 0x52, 1280 },	/* 0000 0010 1001 0 */ | ||||
|     { 13, 0x53, 1344 },	/* 0000 0010 1001 1 */ | ||||
|     { 13, 0x54, 1408 },	/* 0000 0010 1010 0 */ | ||||
|     { 13, 0x55, 1472 },	/* 0000 0010 1010 1 */ | ||||
|     { 13, 0x5A, 1536 },	/* 0000 0010 1101 0 */ | ||||
|     { 13, 0x5B, 1600 },	/* 0000 0010 1101 1 */ | ||||
|     { 13, 0x64, 1664 },	/* 0000 0011 0010 0 */ | ||||
|     { 13, 0x65, 1728 },	/* 0000 0011 0010 1 */ | ||||
|     { 11, 0x8, 1792 },	/* 0000 0001 000 */ | ||||
|     { 11, 0xC, 1856 },	/* 0000 0001 100 */ | ||||
|     { 11, 0xD, 1920 },	/* 0000 0001 101 */ | ||||
|     { 12, 0x12, 1984 },	/* 0000 0001 0010 */ | ||||
|     { 12, 0x13, 2048 },	/* 0000 0001 0011 */ | ||||
|     { 12, 0x14, 2112 },	/* 0000 0001 0100 */ | ||||
|     { 12, 0x15, 2176 },	/* 0000 0001 0101 */ | ||||
|     { 12, 0x16, 2240 },	/* 0000 0001 0110 */ | ||||
|     { 12, 0x17, 2304 },	/* 0000 0001 0111 */ | ||||
|     { 12, 0x1C, 2368 },	/* 0000 0001 1100 */ | ||||
|     { 12, 0x1D, 2432 },	/* 0000 0001 1101 */ | ||||
|     { 12, 0x1E, 2496 },	/* 0000 0001 1110 */ | ||||
|     { 12, 0x1F, 2560 },	/* 0000 0001 1111 */ | ||||
|     { 12, 0x1, G3CODE_EOL },	/* 0000 0000 0001 */ | ||||
|     { 9, 0x1, G3CODE_INVALID },	/* 0000 0000 1 */ | ||||
|     { 10, 0x1, G3CODE_INVALID },	/* 0000 0000 01 */ | ||||
|     { 11, 0x1, G3CODE_INVALID },	/* 0000 0000 001 */ | ||||
|     { 12, 0x0, G3CODE_INVALID },	/* 0000 0000 0000 */ | ||||
| }; | ||||
| #else | ||||
| extern const tableentry TIFFFaxWhiteCodes[]; | ||||
| extern const tableentry TIFFFaxBlackCodes[]; | ||||
| #endif | ||||
| #endif /* _T4_ */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										376
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_aux.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										376
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_aux.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,376 @@ | ||||
| /* $Id: tif_aux.c,v 1.31 2017-11-17 20:21:00 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1991-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Auxiliary Support Routines. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
| #include "tif_predict.h" | ||||
| #include <math.h> | ||||
|  | ||||
| uint32 | ||||
| _TIFFMultiply32(TIFF* tif, uint32 first, uint32 second, const char* where) | ||||
| { | ||||
| 	uint32 bytes = first * second; | ||||
|  | ||||
| 	if (second && bytes / second != first) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where); | ||||
| 		bytes = 0; | ||||
| 	} | ||||
|  | ||||
| 	return bytes; | ||||
| } | ||||
|  | ||||
| uint64 | ||||
| _TIFFMultiply64(TIFF* tif, uint64 first, uint64 second, const char* where) | ||||
| { | ||||
| 	uint64 bytes = first * second; | ||||
|  | ||||
| 	if (second && bytes / second != first) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where); | ||||
| 		bytes = 0; | ||||
| 	} | ||||
|  | ||||
| 	return bytes; | ||||
| } | ||||
|  | ||||
| void* | ||||
| _TIFFCheckRealloc(TIFF* tif, void* buffer, | ||||
| 		  tmsize_t nmemb, tmsize_t elem_size, const char* what) | ||||
| { | ||||
| 	void* cp = NULL; | ||||
| 	tmsize_t bytes = nmemb * elem_size; | ||||
|  | ||||
| 	/* | ||||
| 	 * XXX: Check for integer overflow. | ||||
| 	 */ | ||||
| 	if (nmemb && elem_size && bytes / elem_size == nmemb) | ||||
| 		cp = _TIFFrealloc(buffer, bytes); | ||||
|  | ||||
| 	if (cp == NULL) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "Failed to allocate memory for %s " | ||||
| 			     "(%ld elements of %ld bytes each)", | ||||
| 			     what,(long) nmemb, (long) elem_size); | ||||
| 	} | ||||
|  | ||||
| 	return cp; | ||||
| } | ||||
|  | ||||
| void* | ||||
| _TIFFCheckMalloc(TIFF* tif, tmsize_t nmemb, tmsize_t elem_size, const char* what) | ||||
| { | ||||
| 	return _TIFFCheckRealloc(tif, NULL, nmemb, elem_size, what);   | ||||
| } | ||||
|  | ||||
| static int | ||||
| TIFFDefaultTransferFunction(TIFFDirectory* td) | ||||
| { | ||||
| 	uint16 **tf = td->td_transferfunction; | ||||
| 	tmsize_t i, n, nbytes; | ||||
|  | ||||
| 	tf[0] = tf[1] = tf[2] = 0; | ||||
| 	if (td->td_bitspersample >= sizeof(tmsize_t) * 8 - 2) | ||||
| 		return 0; | ||||
|  | ||||
| 	n = ((tmsize_t)1)<<td->td_bitspersample; | ||||
| 	nbytes = n * sizeof (uint16); | ||||
|         tf[0] = (uint16 *)_TIFFmalloc(nbytes); | ||||
| 	if (tf[0] == NULL) | ||||
| 		return 0; | ||||
| 	tf[0][0] = 0; | ||||
| 	for (i = 1; i < n; i++) { | ||||
| 		double t = (double)i/((double) n-1.); | ||||
| 		tf[0][i] = (uint16)floor(65535.*pow(t, 2.2) + .5); | ||||
| 	} | ||||
|  | ||||
| 	if (td->td_samplesperpixel - td->td_extrasamples > 1) { | ||||
|                 tf[1] = (uint16 *)_TIFFmalloc(nbytes); | ||||
| 		if(tf[1] == NULL) | ||||
| 			goto bad; | ||||
| 		_TIFFmemcpy(tf[1], tf[0], nbytes); | ||||
|                 tf[2] = (uint16 *)_TIFFmalloc(nbytes); | ||||
| 		if (tf[2] == NULL) | ||||
| 			goto bad; | ||||
| 		_TIFFmemcpy(tf[2], tf[0], nbytes); | ||||
| 	} | ||||
| 	return 1; | ||||
|  | ||||
| bad: | ||||
| 	if (tf[0]) | ||||
| 		_TIFFfree(tf[0]); | ||||
| 	if (tf[1]) | ||||
| 		_TIFFfree(tf[1]); | ||||
| 	if (tf[2]) | ||||
| 		_TIFFfree(tf[2]); | ||||
| 	tf[0] = tf[1] = tf[2] = 0; | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| TIFFDefaultRefBlackWhite(TIFFDirectory* td) | ||||
| { | ||||
| 	int i; | ||||
|  | ||||
|         td->td_refblackwhite = (float *)_TIFFmalloc(6*sizeof (float)); | ||||
| 	if (td->td_refblackwhite == NULL) | ||||
| 		return 0; | ||||
|         if (td->td_photometric == PHOTOMETRIC_YCBCR) { | ||||
| 		/* | ||||
| 		 * YCbCr (Class Y) images must have the ReferenceBlackWhite | ||||
| 		 * tag set. Fix the broken images, which lacks that tag. | ||||
| 		 */ | ||||
| 		td->td_refblackwhite[0] = 0.0F; | ||||
| 		td->td_refblackwhite[1] = td->td_refblackwhite[3] = | ||||
| 			td->td_refblackwhite[5] = 255.0F; | ||||
| 		td->td_refblackwhite[2] = td->td_refblackwhite[4] = 128.0F; | ||||
| 	} else { | ||||
| 		/* | ||||
| 		 * Assume RGB (Class R) | ||||
| 		 */ | ||||
| 		for (i = 0; i < 3; i++) { | ||||
| 		    td->td_refblackwhite[2*i+0] = 0; | ||||
| 		    td->td_refblackwhite[2*i+1] = | ||||
| 			    (float)((1L<<td->td_bitspersample)-1L); | ||||
| 		} | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Like TIFFGetField, but return any default | ||||
|  * value if the tag is not present in the directory. | ||||
|  * | ||||
|  * NB:	We use the value in the directory, rather than | ||||
|  *	explicit values so that defaults exist only one | ||||
|  *	place in the library -- in TIFFDefaultDirectory. | ||||
|  */ | ||||
| int | ||||
| TIFFVGetFieldDefaulted(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
|  | ||||
| 	if (TIFFVGetField(tif, tag, ap)) | ||||
| 		return (1); | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_SUBFILETYPE: | ||||
| 		*va_arg(ap, uint32 *) = td->td_subfiletype; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_BITSPERSAMPLE: | ||||
| 		*va_arg(ap, uint16 *) = td->td_bitspersample; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_THRESHHOLDING: | ||||
| 		*va_arg(ap, uint16 *) = td->td_threshholding; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_FILLORDER: | ||||
| 		*va_arg(ap, uint16 *) = td->td_fillorder; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_ORIENTATION: | ||||
| 		*va_arg(ap, uint16 *) = td->td_orientation; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_SAMPLESPERPIXEL: | ||||
| 		*va_arg(ap, uint16 *) = td->td_samplesperpixel; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_ROWSPERSTRIP: | ||||
| 		*va_arg(ap, uint32 *) = td->td_rowsperstrip; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_MINSAMPLEVALUE: | ||||
| 		*va_arg(ap, uint16 *) = td->td_minsamplevalue; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_MAXSAMPLEVALUE: | ||||
| 		*va_arg(ap, uint16 *) = td->td_maxsamplevalue; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_PLANARCONFIG: | ||||
| 		*va_arg(ap, uint16 *) = td->td_planarconfig; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_RESOLUTIONUNIT: | ||||
| 		*va_arg(ap, uint16 *) = td->td_resolutionunit; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_PREDICTOR: | ||||
|     { | ||||
|         TIFFPredictorState* sp = (TIFFPredictorState*) tif->tif_data; | ||||
|         if( sp == NULL ) | ||||
|         { | ||||
|             TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
|                          "Cannot get \"Predictor\" tag as plugin is not configured"); | ||||
|             *va_arg(ap, uint16*) = 0; | ||||
|             return 0; | ||||
|         } | ||||
|         *va_arg(ap, uint16*) = (uint16) sp->predictor; | ||||
|         return 1; | ||||
|     } | ||||
| 	case TIFFTAG_DOTRANGE: | ||||
| 		*va_arg(ap, uint16 *) = 0; | ||||
| 		*va_arg(ap, uint16 *) = (1<<td->td_bitspersample)-1; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_INKSET: | ||||
| 		*va_arg(ap, uint16 *) = INKSET_CMYK; | ||||
| 		return 1; | ||||
| 	case TIFFTAG_NUMBEROFINKS: | ||||
| 		*va_arg(ap, uint16 *) = 4; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_EXTRASAMPLES: | ||||
| 		*va_arg(ap, uint16 *) = td->td_extrasamples; | ||||
| 		*va_arg(ap, uint16 **) = td->td_sampleinfo; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_MATTEING: | ||||
| 		*va_arg(ap, uint16 *) = | ||||
| 		    (td->td_extrasamples == 1 && | ||||
| 		     td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA); | ||||
| 		return (1); | ||||
| 	case TIFFTAG_TILEDEPTH: | ||||
| 		*va_arg(ap, uint32 *) = td->td_tiledepth; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_DATATYPE: | ||||
| 		*va_arg(ap, uint16 *) = td->td_sampleformat-1; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_SAMPLEFORMAT: | ||||
| 		*va_arg(ap, uint16 *) = td->td_sampleformat; | ||||
|                 return(1); | ||||
| 	case TIFFTAG_IMAGEDEPTH: | ||||
| 		*va_arg(ap, uint32 *) = td->td_imagedepth; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_YCBCRCOEFFICIENTS: | ||||
| 		{ | ||||
| 			/* defaults are from CCIR Recommendation 601-1 */ | ||||
| 			static float ycbcrcoeffs[] = { 0.299f, 0.587f, 0.114f }; | ||||
| 			*va_arg(ap, float **) = ycbcrcoeffs; | ||||
| 			return 1; | ||||
| 		} | ||||
| 	case TIFFTAG_YCBCRSUBSAMPLING: | ||||
| 		*va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[0]; | ||||
| 		*va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[1]; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_YCBCRPOSITIONING: | ||||
| 		*va_arg(ap, uint16 *) = td->td_ycbcrpositioning; | ||||
| 		return (1); | ||||
| 	case TIFFTAG_WHITEPOINT: | ||||
| 		{ | ||||
| 			static float whitepoint[2]; | ||||
|  | ||||
| 			/* TIFF 6.0 specification tells that it is no default | ||||
| 			   value for the WhitePoint, but AdobePhotoshop TIFF | ||||
| 			   Technical Note tells that it should be CIE D50. */ | ||||
| 			whitepoint[0] =	D50_X0 / (D50_X0 + D50_Y0 + D50_Z0); | ||||
| 			whitepoint[1] =	D50_Y0 / (D50_X0 + D50_Y0 + D50_Z0); | ||||
| 			*va_arg(ap, float **) = whitepoint; | ||||
| 			return 1; | ||||
| 		} | ||||
| 	case TIFFTAG_TRANSFERFUNCTION: | ||||
| 		if (!td->td_transferfunction[0] && | ||||
| 		    !TIFFDefaultTransferFunction(td)) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "No space for \"TransferFunction\" tag"); | ||||
| 			return (0); | ||||
| 		} | ||||
| 		*va_arg(ap, uint16 **) = td->td_transferfunction[0]; | ||||
| 		if (td->td_samplesperpixel - td->td_extrasamples > 1) { | ||||
| 			*va_arg(ap, uint16 **) = td->td_transferfunction[1]; | ||||
| 			*va_arg(ap, uint16 **) = td->td_transferfunction[2]; | ||||
| 		} | ||||
| 		return (1); | ||||
| 	case TIFFTAG_REFERENCEBLACKWHITE: | ||||
| 		if (!td->td_refblackwhite && !TIFFDefaultRefBlackWhite(td)) | ||||
| 			return (0); | ||||
| 		*va_arg(ap, float **) = td->td_refblackwhite; | ||||
| 		return (1); | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Like TIFFGetField, but return any default | ||||
|  * value if the tag is not present in the directory. | ||||
|  */ | ||||
| int | ||||
| TIFFGetFieldDefaulted(TIFF* tif, uint32 tag, ...) | ||||
| { | ||||
| 	int ok; | ||||
| 	va_list ap; | ||||
|  | ||||
| 	va_start(ap, tag); | ||||
| 	ok =  TIFFVGetFieldDefaulted(tif, tag, ap); | ||||
| 	va_end(ap); | ||||
| 	return (ok); | ||||
| } | ||||
|  | ||||
| struct _Int64Parts { | ||||
| 	int32 low, high; | ||||
| }; | ||||
|  | ||||
| typedef union { | ||||
| 	struct _Int64Parts part; | ||||
| 	int64 value; | ||||
| } _Int64; | ||||
|  | ||||
| float | ||||
| _TIFFUInt64ToFloat(uint64 ui64) | ||||
| { | ||||
| 	_Int64 i; | ||||
|  | ||||
| 	i.value = ui64; | ||||
| 	if (i.part.high >= 0) { | ||||
| 		return (float)i.value; | ||||
| 	} else { | ||||
| 		long double df; | ||||
| 		df = (long double)i.value; | ||||
| 		df += 18446744073709551616.0; /* adding 2**64 */ | ||||
| 		return (float)df; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| double | ||||
| _TIFFUInt64ToDouble(uint64 ui64) | ||||
| { | ||||
| 	_Int64 i; | ||||
|  | ||||
| 	i.value = ui64; | ||||
| 	if (i.part.high >= 0) { | ||||
| 		return (double)i.value; | ||||
| 	} else { | ||||
| 		long double df; | ||||
| 		df = (long double)i.value; | ||||
| 		df += 18446744073709551616.0; /* adding 2**64 */ | ||||
| 		return (double)df; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| int _TIFFSeekOK(TIFF* tif, toff_t off) | ||||
| { | ||||
|     /* Huge offsets, especially -1 / UINT64_MAX, can cause issues */ | ||||
|     /* See http://bugzilla.maptools.org/show_bug.cgi?id=2726 */ | ||||
|     return off <= (~(uint64)0)/2 && TIFFSeekFile(tif,off,SEEK_SET)==off; | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										140
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_close.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_close.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,140 @@ | ||||
| /* $Id: tif_close.c,v 1.21 2016-01-23 21:20:34 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
| #include <string.h> | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*                            TIFFCleanup()                             */ | ||||
| /************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * Auxiliary function to free the TIFF structure. Given structure will be | ||||
|  * completely freed, so you should save opened file handle and pointer | ||||
|  * to the close procedure in external variables before calling | ||||
|  * _TIFFCleanup(), if you will need these ones to close the file. | ||||
|  *  | ||||
|  * @param tif A TIFF pointer. | ||||
|  */ | ||||
|  | ||||
| void | ||||
| TIFFCleanup(TIFF* tif) | ||||
| { | ||||
| 	/* | ||||
|          * Flush buffered data and directory (if dirty). | ||||
|          */ | ||||
| 	if (tif->tif_mode != O_RDONLY) | ||||
| 		TIFFFlush(tif); | ||||
| 	(*tif->tif_cleanup)(tif); | ||||
| 	TIFFFreeDirectory(tif); | ||||
|  | ||||
| 	if (tif->tif_dirlist) | ||||
| 		_TIFFfree(tif->tif_dirlist); | ||||
|  | ||||
| 	/* | ||||
|          * Clean up client info links. | ||||
|          */ | ||||
| 	while( tif->tif_clientinfo ) | ||||
| 	{ | ||||
| 		TIFFClientInfoLink *psLink = tif->tif_clientinfo; | ||||
|  | ||||
| 		tif->tif_clientinfo = psLink->next; | ||||
| 		_TIFFfree( psLink->name ); | ||||
| 		_TIFFfree( psLink ); | ||||
| 	} | ||||
|  | ||||
| 	if (tif->tif_rawdata && (tif->tif_flags&TIFF_MYBUFFER)) | ||||
| 		_TIFFfree(tif->tif_rawdata); | ||||
| 	if (isMapped(tif)) | ||||
| 		TIFFUnmapFileContents(tif, tif->tif_base, (toff_t)tif->tif_size); | ||||
|  | ||||
| 	/* | ||||
|          * Clean up custom fields. | ||||
|          */ | ||||
| 	if (tif->tif_fields && tif->tif_nfields > 0) { | ||||
| 		uint32 i; | ||||
|  | ||||
| 		for (i = 0; i < tif->tif_nfields; i++) { | ||||
| 			TIFFField *fld = tif->tif_fields[i]; | ||||
| 			if (fld->field_bit == FIELD_CUSTOM && | ||||
| 			    strncmp("Tag ", fld->field_name, 4) == 0) { | ||||
| 				_TIFFfree(fld->field_name); | ||||
| 				_TIFFfree(fld); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		_TIFFfree(tif->tif_fields); | ||||
| 	} | ||||
|  | ||||
|         if (tif->tif_nfieldscompat > 0) { | ||||
|                 uint32 i; | ||||
|  | ||||
|                 for (i = 0; i < tif->tif_nfieldscompat; i++) { | ||||
|                         if (tif->tif_fieldscompat[i].allocated_size) | ||||
|                                 _TIFFfree(tif->tif_fieldscompat[i].fields); | ||||
|                 } | ||||
|                 _TIFFfree(tif->tif_fieldscompat); | ||||
|         } | ||||
|  | ||||
| 	_TIFFfree(tif); | ||||
| } | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*                            TIFFClose()                               */ | ||||
| /************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * Close a previously opened TIFF file. | ||||
|  * | ||||
|  * TIFFClose closes a file that was previously opened with TIFFOpen(). | ||||
|  * Any buffered data are flushed to the file, including the contents of | ||||
|  * the current directory (if modified); and all resources are reclaimed. | ||||
|  *  | ||||
|  * @param tif A TIFF pointer. | ||||
|  */ | ||||
|  | ||||
| void | ||||
| TIFFClose(TIFF* tif) | ||||
| { | ||||
| 	TIFFCloseProc closeproc = tif->tif_closeproc; | ||||
| 	thandle_t fd = tif->tif_clientdata; | ||||
|  | ||||
| 	TIFFCleanup(tif); | ||||
| 	(void) (*closeproc)(fd); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										165
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_codec.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_codec.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,165 @@ | ||||
| /* $Id: tif_codec.c,v 1.17 2015-08-19 02:31:04 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library | ||||
|  * | ||||
|  * Builtin Compression Scheme Configuration Support. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| static int NotConfigured(TIFF*, int); | ||||
|  | ||||
| #ifndef LZW_SUPPORT | ||||
| #define TIFFInitLZW NotConfigured | ||||
| #endif | ||||
| #ifndef PACKBITS_SUPPORT | ||||
| #define TIFFInitPackBits NotConfigured | ||||
| #endif | ||||
| #ifndef THUNDER_SUPPORT | ||||
| #define TIFFInitThunderScan NotConfigured | ||||
| #endif | ||||
| #ifndef NEXT_SUPPORT | ||||
| #define TIFFInitNeXT NotConfigured | ||||
| #endif | ||||
| #ifndef JPEG_SUPPORT | ||||
| #define TIFFInitJPEG NotConfigured | ||||
| #endif | ||||
| #ifndef OJPEG_SUPPORT | ||||
| #define TIFFInitOJPEG NotConfigured | ||||
| #endif | ||||
| #ifndef CCITT_SUPPORT | ||||
| #define TIFFInitCCITTRLE NotConfigured | ||||
| #define TIFFInitCCITTRLEW NotConfigured | ||||
| #define TIFFInitCCITTFax3 NotConfigured | ||||
| #define TIFFInitCCITTFax4 NotConfigured | ||||
| #endif | ||||
| #ifndef JBIG_SUPPORT | ||||
| #define TIFFInitJBIG NotConfigured | ||||
| #endif | ||||
| #ifndef ZIP_SUPPORT | ||||
| #define TIFFInitZIP NotConfigured | ||||
| #endif | ||||
| #ifndef PIXARLOG_SUPPORT | ||||
| #define TIFFInitPixarLog NotConfigured | ||||
| #endif | ||||
| #ifndef LOGLUV_SUPPORT | ||||
| #define TIFFInitSGILog NotConfigured | ||||
| #endif | ||||
| #ifndef LZMA_SUPPORT | ||||
| #define TIFFInitLZMA NotConfigured | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Compression schemes statically built into the library. | ||||
|  */ | ||||
| #ifdef VMS | ||||
| const TIFFCodec _TIFFBuiltinCODECS[] = { | ||||
| #else | ||||
| TIFFCodec _TIFFBuiltinCODECS[] = { | ||||
| #endif | ||||
|     { "None",		COMPRESSION_NONE,	TIFFInitDumpMode }, | ||||
|     { "LZW",		COMPRESSION_LZW,	TIFFInitLZW }, | ||||
|     { "PackBits",	COMPRESSION_PACKBITS,	TIFFInitPackBits }, | ||||
|     { "ThunderScan",	COMPRESSION_THUNDERSCAN,TIFFInitThunderScan }, | ||||
|     { "NeXT",		COMPRESSION_NEXT,	TIFFInitNeXT }, | ||||
|     { "JPEG",		COMPRESSION_JPEG,	TIFFInitJPEG }, | ||||
|     { "Old-style JPEG",	COMPRESSION_OJPEG,	TIFFInitOJPEG }, | ||||
|     { "CCITT RLE",	COMPRESSION_CCITTRLE,	TIFFInitCCITTRLE }, | ||||
|     { "CCITT RLE/W",	COMPRESSION_CCITTRLEW,	TIFFInitCCITTRLEW }, | ||||
|     { "CCITT Group 3",	COMPRESSION_CCITTFAX3,	TIFFInitCCITTFax3 }, | ||||
|     { "CCITT Group 4",	COMPRESSION_CCITTFAX4,	TIFFInitCCITTFax4 }, | ||||
|     { "ISO JBIG",	COMPRESSION_JBIG,	TIFFInitJBIG }, | ||||
|     { "Deflate",	COMPRESSION_DEFLATE,	TIFFInitZIP }, | ||||
|     { "AdobeDeflate",   COMPRESSION_ADOBE_DEFLATE , TIFFInitZIP },  | ||||
|     { "PixarLog",	COMPRESSION_PIXARLOG,	TIFFInitPixarLog }, | ||||
|     { "SGILog",		COMPRESSION_SGILOG,	TIFFInitSGILog }, | ||||
|     { "SGILog24",	COMPRESSION_SGILOG24,	TIFFInitSGILog }, | ||||
|     { "LZMA",		COMPRESSION_LZMA,	TIFFInitLZMA }, | ||||
|     { NULL,             0,                      NULL } | ||||
| }; | ||||
|  | ||||
| static int | ||||
| _notConfigured(TIFF* tif) | ||||
| { | ||||
| 	const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); | ||||
|         char compression_code[20]; | ||||
|          | ||||
|         sprintf(compression_code, "%d",tif->tif_dir.td_compression ); | ||||
| 	TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
|                      "%s compression support is not configured",  | ||||
|                      c ? c->name : compression_code ); | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static int | ||||
| NotConfigured(TIFF* tif, int scheme) | ||||
| { | ||||
| 	(void) scheme; | ||||
|  | ||||
| 	tif->tif_fixuptags = _notConfigured; | ||||
| 	tif->tif_decodestatus = FALSE; | ||||
| 	tif->tif_setupdecode = _notConfigured; | ||||
| 	tif->tif_encodestatus = FALSE; | ||||
| 	tif->tif_setupencode = _notConfigured; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*                       TIFFIsCODECConfigured()                        */ | ||||
| /************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * Check whether we have working codec for the specific coding scheme. | ||||
|  * | ||||
|  * @return returns 1 if the codec is configured and working. Otherwise | ||||
|  * 0 will be returned. | ||||
|  */ | ||||
|  | ||||
| int | ||||
| TIFFIsCODECConfigured(uint16 scheme) | ||||
| { | ||||
| 	const TIFFCodec* codec = TIFFFindCODEC(scheme); | ||||
|  | ||||
| 	if(codec == NULL) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if(codec->init == NULL) { | ||||
| 		return 0; | ||||
| 	} | ||||
| 	if(codec->init != NotConfigured){ | ||||
| 		return 1; | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										309
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_color.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										309
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_color.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,309 @@ | ||||
| /* $Id: tif_color.c,v 1.24 2017-05-29 10:12:54 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * CIE L*a*b* to CIE XYZ and CIE XYZ to RGB conversion routines are taken | ||||
|  * from the VIPS library (http://www.vips.ecs.soton.ac.uk) with | ||||
|  * the permission of John Cupitt, the VIPS author. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Color space conversion routines. | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
| #include <math.h> | ||||
|  | ||||
| /* | ||||
|  * Convert color value from the CIE L*a*b* 1976 space to CIE XYZ. | ||||
|  */ | ||||
| void | ||||
| TIFFCIELabToXYZ(TIFFCIELabToRGB *cielab, uint32 l, int32 a, int32 b, | ||||
| 		float *X, float *Y, float *Z) | ||||
| { | ||||
| 	float L = (float)l * 100.0F / 255.0F; | ||||
| 	float cby, tmp; | ||||
|  | ||||
| 	if( L < 8.856F ) { | ||||
| 		*Y = (L * cielab->Y0) / 903.292F; | ||||
| 		cby = 7.787F * (*Y / cielab->Y0) + 16.0F / 116.0F; | ||||
| 	} else { | ||||
| 		cby = (L + 16.0F) / 116.0F; | ||||
| 		*Y = cielab->Y0 * cby * cby * cby; | ||||
| 	} | ||||
|  | ||||
| 	tmp = (float)a / 500.0F + cby; | ||||
| 	if( tmp < 0.2069F ) | ||||
| 		*X = cielab->X0 * (tmp - 0.13793F) / 7.787F; | ||||
| 	else     | ||||
| 		*X = cielab->X0 * tmp * tmp * tmp; | ||||
|  | ||||
| 	tmp = cby - (float)b / 200.0F; | ||||
| 	if( tmp < 0.2069F ) | ||||
| 		*Z = cielab->Z0 * (tmp - 0.13793F) / 7.787F; | ||||
| 	else     | ||||
| 		*Z = cielab->Z0 * tmp * tmp * tmp; | ||||
| } | ||||
|  | ||||
| #define RINT(R) ((uint32)((R)>0?((R)+0.5):((R)-0.5))) | ||||
| /* | ||||
|  * Convert color value from the XYZ space to RGB. | ||||
|  */ | ||||
| void | ||||
| TIFFXYZToRGB(TIFFCIELabToRGB *cielab, float X, float Y, float Z, | ||||
| 	     uint32 *r, uint32 *g, uint32 *b) | ||||
| { | ||||
| 	int i; | ||||
| 	float Yr, Yg, Yb; | ||||
| 	float *matrix = &cielab->display.d_mat[0][0]; | ||||
|  | ||||
| 	/* Multiply through the matrix to get luminosity values. */ | ||||
| 	Yr =  matrix[0] * X + matrix[1] * Y + matrix[2] * Z; | ||||
| 	Yg =  matrix[3] * X + matrix[4] * Y + matrix[5] * Z; | ||||
| 	Yb =  matrix[6] * X + matrix[7] * Y + matrix[8] * Z; | ||||
|  | ||||
| 	/* Clip input */ | ||||
| 	Yr = TIFFmax(Yr, cielab->display.d_Y0R); | ||||
| 	Yg = TIFFmax(Yg, cielab->display.d_Y0G); | ||||
| 	Yb = TIFFmax(Yb, cielab->display.d_Y0B); | ||||
|  | ||||
| 	/* Avoid overflow in case of wrong input values */ | ||||
| 	Yr = TIFFmin(Yr, cielab->display.d_YCR); | ||||
| 	Yg = TIFFmin(Yg, cielab->display.d_YCG); | ||||
| 	Yb = TIFFmin(Yb, cielab->display.d_YCB); | ||||
|  | ||||
| 	/* Turn luminosity to colour value. */ | ||||
| 	i = (int)((Yr - cielab->display.d_Y0R) / cielab->rstep); | ||||
| 	i = TIFFmin(cielab->range, i); | ||||
| 	*r = RINT(cielab->Yr2r[i]); | ||||
|  | ||||
| 	i = (int)((Yg - cielab->display.d_Y0G) / cielab->gstep); | ||||
| 	i = TIFFmin(cielab->range, i); | ||||
| 	*g = RINT(cielab->Yg2g[i]); | ||||
|  | ||||
| 	i = (int)((Yb - cielab->display.d_Y0B) / cielab->bstep); | ||||
| 	i = TIFFmin(cielab->range, i); | ||||
| 	*b = RINT(cielab->Yb2b[i]); | ||||
|  | ||||
| 	/* Clip output. */ | ||||
| 	*r = TIFFmin(*r, cielab->display.d_Vrwr); | ||||
| 	*g = TIFFmin(*g, cielab->display.d_Vrwg); | ||||
| 	*b = TIFFmin(*b, cielab->display.d_Vrwb); | ||||
| } | ||||
| #undef RINT | ||||
|  | ||||
| /*  | ||||
|  * Allocate conversion state structures and make look_up tables for | ||||
|  * the Yr,Yb,Yg <=> r,g,b conversions. | ||||
|  */ | ||||
| int | ||||
| TIFFCIELabToRGBInit(TIFFCIELabToRGB* cielab, | ||||
| 		    const TIFFDisplay *display, float *refWhite) | ||||
| { | ||||
| 	int i; | ||||
| 	double dfGamma; | ||||
|  | ||||
| 	cielab->range = CIELABTORGB_TABLE_RANGE; | ||||
|  | ||||
| 	_TIFFmemcpy(&cielab->display, display, sizeof(TIFFDisplay)); | ||||
|  | ||||
| 	/* Red */ | ||||
| 	dfGamma = 1.0 / cielab->display.d_gammaR ; | ||||
| 	cielab->rstep = | ||||
| 		(cielab->display.d_YCR - cielab->display.d_Y0R)	/ cielab->range; | ||||
| 	for(i = 0; i <= cielab->range; i++) { | ||||
| 		cielab->Yr2r[i] = cielab->display.d_Vrwr | ||||
| 		    * ((float)pow((double)i / cielab->range, dfGamma)); | ||||
| 	} | ||||
|  | ||||
| 	/* Green */ | ||||
| 	dfGamma = 1.0 / cielab->display.d_gammaG ; | ||||
| 	cielab->gstep = | ||||
| 	    (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range; | ||||
| 	for(i = 0; i <= cielab->range; i++) { | ||||
| 		cielab->Yg2g[i] = cielab->display.d_Vrwg | ||||
| 		    * ((float)pow((double)i / cielab->range, dfGamma)); | ||||
| 	} | ||||
|  | ||||
| 	/* Blue */ | ||||
| 	dfGamma = 1.0 / cielab->display.d_gammaB ; | ||||
| 	cielab->bstep = | ||||
| 	    (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range; | ||||
| 	for(i = 0; i <= cielab->range; i++) { | ||||
| 		cielab->Yb2b[i] = cielab->display.d_Vrwb | ||||
| 		    * ((float)pow((double)i / cielab->range, dfGamma)); | ||||
| 	} | ||||
|  | ||||
| 	/* Init reference white point */ | ||||
| 	cielab->X0 = refWhite[0]; | ||||
| 	cielab->Y0 = refWhite[1]; | ||||
| 	cielab->Z0 = refWhite[2]; | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| /*  | ||||
|  * Convert color value from the YCbCr space to CIE XYZ. | ||||
|  * The colorspace conversion algorithm comes from the IJG v5a code; | ||||
|  * see below for more information on how it works. | ||||
|  */ | ||||
| #define	SHIFT			16 | ||||
| #define	FIX(x)			((int32)((x) * (1L<<SHIFT) + 0.5)) | ||||
| #define	ONE_HALF		((int32)(1<<(SHIFT-1))) | ||||
| #define	Code2V(c, RB, RW, CR)	((((c)-(int32)(RB))*(float)(CR))/(float)(((RW)-(RB)!=0) ? ((RW)-(RB)) : 1)) | ||||
| #define	CLAMP(f,min,max)	((f)<(min)?(min):(f)>(max)?(max):(f)) | ||||
| #define HICLAMP(f,max)		((f)>(max)?(max):(f)) | ||||
|  | ||||
| void | ||||
| TIFFYCbCrtoRGB(TIFFYCbCrToRGB *ycbcr, uint32 Y, int32 Cb, int32 Cr, | ||||
| 	       uint32 *r, uint32 *g, uint32 *b) | ||||
| { | ||||
| 	int32 i; | ||||
|  | ||||
| 	/* XXX: Only 8-bit YCbCr input supported for now */ | ||||
| 	Y = HICLAMP(Y, 255); | ||||
| 	Cb = CLAMP(Cb, 0, 255); | ||||
| 	Cr = CLAMP(Cr, 0, 255); | ||||
|  | ||||
| 	i = ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr]; | ||||
| 	*r = CLAMP(i, 0, 255); | ||||
| 	i = ycbcr->Y_tab[Y] | ||||
| 	    + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT); | ||||
| 	*g = CLAMP(i, 0, 255); | ||||
| 	i = ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb]; | ||||
| 	*b = CLAMP(i, 0, 255); | ||||
| } | ||||
|  | ||||
| /* Clamp function for sanitization purposes. Normally clamping should not */ | ||||
| /* occur for well behaved chroma and refBlackWhite coefficients */ | ||||
| static float CLAMPw(float v, float vmin, float vmax) | ||||
| { | ||||
|     if( v < vmin ) | ||||
|     { | ||||
|         /* printf("%f clamped to %f\n", v, vmin); */ | ||||
|         return vmin; | ||||
|     } | ||||
|     if( v > vmax ) | ||||
|     { | ||||
|         /* printf("%f clamped to %f\n", v, vmax); */ | ||||
|         return vmax; | ||||
|     } | ||||
|     return v; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Initialize the YCbCr->RGB conversion tables.  The conversion | ||||
|  * is done according to the 6.0 spec: | ||||
|  * | ||||
|  *    R = Y + Cr*(2 - 2*LumaRed) | ||||
|  *    B = Y + Cb*(2 - 2*LumaBlue) | ||||
|  *    G =   Y | ||||
|  *        - LumaBlue*Cb*(2-2*LumaBlue)/LumaGreen | ||||
|  *        - LumaRed*Cr*(2-2*LumaRed)/LumaGreen | ||||
|  * | ||||
|  * To avoid floating point arithmetic the fractional constants that | ||||
|  * come out of the equations are represented as fixed point values | ||||
|  * in the range 0...2^16.  We also eliminate multiplications by | ||||
|  * pre-calculating possible values indexed by Cb and Cr (this code | ||||
|  * assumes conversion is being done for 8-bit samples). | ||||
|  */ | ||||
| int | ||||
| TIFFYCbCrToRGBInit(TIFFYCbCrToRGB* ycbcr, float *luma, float *refBlackWhite) | ||||
| { | ||||
|     TIFFRGBValue* clamptab; | ||||
|     int i; | ||||
|      | ||||
| #define LumaRed	    luma[0] | ||||
| #define LumaGreen   luma[1] | ||||
| #define LumaBlue    luma[2] | ||||
|  | ||||
|     clamptab = (TIFFRGBValue*)( | ||||
| 	(uint8*) ycbcr+TIFFroundup_32(sizeof (TIFFYCbCrToRGB), sizeof (long)));   | ||||
|     _TIFFmemset(clamptab, 0, 256);		/* v < 0 => 0 */ | ||||
|     ycbcr->clamptab = (clamptab += 256); | ||||
|     for (i = 0; i < 256; i++) | ||||
| 	clamptab[i] = (TIFFRGBValue) i; | ||||
|     _TIFFmemset(clamptab+256, 255, 2*256);	/* v > 255 => 255 */ | ||||
|     ycbcr->Cr_r_tab = (int*) (clamptab + 3*256); | ||||
|     ycbcr->Cb_b_tab = ycbcr->Cr_r_tab + 256; | ||||
|     ycbcr->Cr_g_tab = (int32*) (ycbcr->Cb_b_tab + 256); | ||||
|     ycbcr->Cb_g_tab = ycbcr->Cr_g_tab + 256; | ||||
|     ycbcr->Y_tab = ycbcr->Cb_g_tab + 256; | ||||
|  | ||||
|     { float f1 = 2-2*LumaRed;		int32 D1 = FIX(CLAMP(f1,0.0F,2.0F)); | ||||
|       float f2 = LumaRed*f1/LumaGreen;	int32 D2 = -FIX(CLAMP(f2,0.0F,2.0F)); | ||||
|       float f3 = 2-2*LumaBlue;		int32 D3 = FIX(CLAMP(f3,0.0F,2.0F)); | ||||
|       float f4 = LumaBlue*f3/LumaGreen;	int32 D4 = -FIX(CLAMP(f4,0.0F,2.0F)); | ||||
|       int x; | ||||
|  | ||||
| #undef LumaBlue | ||||
| #undef LumaGreen | ||||
| #undef LumaRed | ||||
|        | ||||
|       /* | ||||
|        * i is the actual input pixel value in the range 0..255 | ||||
|        * Cb and Cr values are in the range -128..127 (actually | ||||
|        * they are in a range defined by the ReferenceBlackWhite | ||||
|        * tag) so there is some range shifting to do here when | ||||
|        * constructing tables indexed by the raw pixel data. | ||||
|        */ | ||||
|       for (i = 0, x = -128; i < 256; i++, x++) { | ||||
| 	    int32 Cr = (int32)CLAMPw(Code2V(x, refBlackWhite[4] - 128.0F, | ||||
| 			    refBlackWhite[5] - 128.0F, 127), | ||||
|                             -128.0F * 32, 128.0F * 32); | ||||
| 	    int32 Cb = (int32)CLAMPw(Code2V(x, refBlackWhite[2] - 128.0F, | ||||
| 			    refBlackWhite[3] - 128.0F, 127), | ||||
|                             -128.0F * 32, 128.0F * 32); | ||||
|  | ||||
| 	    ycbcr->Cr_r_tab[i] = (int32)((D1*Cr + ONE_HALF)>>SHIFT); | ||||
| 	    ycbcr->Cb_b_tab[i] = (int32)((D3*Cb + ONE_HALF)>>SHIFT); | ||||
| 	    ycbcr->Cr_g_tab[i] = D2*Cr; | ||||
| 	    ycbcr->Cb_g_tab[i] = D4*Cb + ONE_HALF; | ||||
| 	    ycbcr->Y_tab[i] = | ||||
| 		    (int32)CLAMPw(Code2V(x + 128, refBlackWhite[0], refBlackWhite[1], 255), | ||||
|                                   -128.0F * 32, 128.0F * 32); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
| #undef	HICLAMP | ||||
| #undef	CLAMP | ||||
| #undef	Code2V | ||||
| #undef	SHIFT | ||||
| #undef	ONE_HALF | ||||
| #undef	FIX | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										304
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_compress.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										304
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_compress.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,304 @@ | ||||
| /* $Id: tif_compress.c,v 1.25 2016-10-25 20:04:22 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library | ||||
|  * | ||||
|  * Compression Scheme Configuration Support. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| static int | ||||
| TIFFNoEncode(TIFF* tif, const char* method) | ||||
| { | ||||
| 	const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); | ||||
|  | ||||
| 	if (c) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "%s %s encoding is not implemented", | ||||
| 			     c->name, method); | ||||
| 	} else { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			"Compression scheme %u %s encoding is not implemented", | ||||
| 			     tif->tif_dir.td_compression, method); | ||||
| 	} | ||||
| 	return (-1); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) pp; (void) cc; (void) s; | ||||
| 	return (TIFFNoEncode(tif, "scanline")); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) pp; (void) cc; (void) s; | ||||
| 	return (TIFFNoEncode(tif, "strip")); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoTileEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) pp; (void) cc; (void) s; | ||||
| 	return (TIFFNoEncode(tif, "tile")); | ||||
| } | ||||
|  | ||||
| static int | ||||
| TIFFNoDecode(TIFF* tif, const char* method) | ||||
| { | ||||
| 	const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); | ||||
|  | ||||
| 	if (c) | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "%s %s decoding is not implemented", | ||||
| 			     c->name, method); | ||||
| 	else | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "Compression scheme %u %s decoding is not implemented", | ||||
| 			     tif->tif_dir.td_compression, method); | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static int | ||||
| _TIFFNoFixupTags(TIFF* tif) | ||||
| { | ||||
| 	(void) tif; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) pp; (void) cc; (void) s; | ||||
| 	return (TIFFNoDecode(tif, "scanline")); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) pp; (void) cc; (void) s; | ||||
| 	return (TIFFNoDecode(tif, "strip")); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoTileDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) pp; (void) cc; (void) s; | ||||
| 	return (TIFFNoDecode(tif, "tile")); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoSeek(TIFF* tif, uint32 off) | ||||
| { | ||||
| 	(void) off; | ||||
| 	TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 		     "Compression algorithm does not support random access"); | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFNoPreCode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	(void) tif; (void) s; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); } | ||||
| static void _TIFFvoid(TIFF* tif) { (void) tif; } | ||||
|  | ||||
| void | ||||
| _TIFFSetDefaultCompressionState(TIFF* tif) | ||||
| { | ||||
| 	tif->tif_fixuptags = _TIFFNoFixupTags;  | ||||
| 	tif->tif_decodestatus = TRUE; | ||||
| 	tif->tif_setupdecode = _TIFFtrue; | ||||
| 	tif->tif_predecode = _TIFFNoPreCode; | ||||
| 	tif->tif_decoderow = _TIFFNoRowDecode;   | ||||
| 	tif->tif_decodestrip = _TIFFNoStripDecode; | ||||
| 	tif->tif_decodetile = _TIFFNoTileDecode;   | ||||
| 	tif->tif_encodestatus = TRUE; | ||||
| 	tif->tif_setupencode = _TIFFtrue; | ||||
| 	tif->tif_preencode = _TIFFNoPreCode; | ||||
| 	tif->tif_postencode = _TIFFtrue; | ||||
| 	tif->tif_encoderow = _TIFFNoRowEncode; | ||||
| 	tif->tif_encodestrip = _TIFFNoStripEncode;   | ||||
| 	tif->tif_encodetile = _TIFFNoTileEncode;   | ||||
| 	tif->tif_close = _TIFFvoid; | ||||
| 	tif->tif_seek = _TIFFNoSeek; | ||||
| 	tif->tif_cleanup = _TIFFvoid; | ||||
| 	tif->tif_defstripsize = _TIFFDefaultStripSize; | ||||
| 	tif->tif_deftilesize = _TIFFDefaultTileSize; | ||||
| 	tif->tif_flags &= ~(TIFF_NOBITREV|TIFF_NOREADRAW); | ||||
| } | ||||
|  | ||||
| int | ||||
| TIFFSetCompressionScheme(TIFF* tif, int scheme) | ||||
| { | ||||
| 	const TIFFCodec *c = TIFFFindCODEC((uint16) scheme); | ||||
|  | ||||
| 	_TIFFSetDefaultCompressionState(tif); | ||||
| 	/* | ||||
| 	 * Don't treat an unknown compression scheme as an error. | ||||
| 	 * This permits applications to open files with data that | ||||
| 	 * the library does not have builtin support for, but which | ||||
| 	 * may still be meaningful. | ||||
| 	 */ | ||||
| 	return (c ? (*c->init)(tif, scheme) : 1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Other compression schemes may be registered.  Registered | ||||
|  * schemes can also override the builtin versions provided | ||||
|  * by this library. | ||||
|  */ | ||||
| typedef struct _codec { | ||||
| 	struct _codec* next; | ||||
| 	TIFFCodec* info; | ||||
| } codec_t; | ||||
| static codec_t* registeredCODECS = NULL; | ||||
|  | ||||
| const TIFFCodec* | ||||
| TIFFFindCODEC(uint16 scheme) | ||||
| { | ||||
| 	const TIFFCodec* c; | ||||
| 	codec_t* cd; | ||||
|  | ||||
| 	for (cd = registeredCODECS; cd; cd = cd->next) | ||||
| 		if (cd->info->scheme == scheme) | ||||
| 			return ((const TIFFCodec*) cd->info); | ||||
| 	for (c = _TIFFBuiltinCODECS; c->name; c++) | ||||
| 		if (c->scheme == scheme) | ||||
| 			return (c); | ||||
| 	return ((const TIFFCodec*) 0); | ||||
| } | ||||
|  | ||||
| TIFFCodec* | ||||
| TIFFRegisterCODEC(uint16 scheme, const char* name, TIFFInitMethod init) | ||||
| { | ||||
| 	codec_t* cd = (codec_t*) | ||||
| 	    _TIFFmalloc((tmsize_t)(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1)); | ||||
|  | ||||
| 	if (cd != NULL) { | ||||
| 		cd->info = (TIFFCodec*) ((uint8*) cd + sizeof (codec_t)); | ||||
| 		cd->info->name = (char*) | ||||
| 		    ((uint8*) cd->info + sizeof (TIFFCodec)); | ||||
| 		strcpy(cd->info->name, name); | ||||
| 		cd->info->scheme = scheme; | ||||
| 		cd->info->init = init; | ||||
| 		cd->next = registeredCODECS; | ||||
| 		registeredCODECS = cd; | ||||
| 	} else { | ||||
| 		TIFFErrorExt(0, "TIFFRegisterCODEC", | ||||
| 		    "No space to register compression scheme %s", name); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	return (cd->info); | ||||
| } | ||||
|  | ||||
| void | ||||
| TIFFUnRegisterCODEC(TIFFCodec* c) | ||||
| { | ||||
| 	codec_t* cd; | ||||
| 	codec_t** pcd; | ||||
|  | ||||
| 	for (pcd = ®isteredCODECS; (cd = *pcd) != NULL; pcd = &cd->next) | ||||
| 		if (cd->info == c) { | ||||
| 			*pcd = cd->next; | ||||
| 			_TIFFfree(cd); | ||||
| 			return; | ||||
| 		} | ||||
| 	TIFFErrorExt(0, "TIFFUnRegisterCODEC", | ||||
| 	    "Cannot remove compression scheme %s; not registered", c->name); | ||||
| } | ||||
|  | ||||
| /************************************************************************/ | ||||
| /*                       TIFFGetConfisuredCODECs()                      */ | ||||
| /************************************************************************/ | ||||
|  | ||||
| /** | ||||
|  * Get list of configured codecs, both built-in and registered by user. | ||||
|  * Caller is responsible to free this structure. | ||||
|  *  | ||||
|  * @return returns array of TIFFCodec records (the last record should be NULL) | ||||
|  * or NULL if function failed. | ||||
|  */ | ||||
|  | ||||
| TIFFCodec* | ||||
| TIFFGetConfiguredCODECs() | ||||
| { | ||||
| 	int i = 1; | ||||
| 	codec_t *cd; | ||||
| 	const TIFFCodec* c; | ||||
| 	TIFFCodec* codecs = NULL; | ||||
| 	TIFFCodec* new_codecs; | ||||
|  | ||||
| 	for (cd = registeredCODECS; cd; cd = cd->next) { | ||||
| 		new_codecs = (TIFFCodec *) | ||||
| 			_TIFFrealloc(codecs, i * sizeof(TIFFCodec)); | ||||
| 		if (!new_codecs) { | ||||
| 			_TIFFfree (codecs); | ||||
| 			return NULL; | ||||
| 		} | ||||
| 		codecs = new_codecs; | ||||
| 		_TIFFmemcpy(codecs + i - 1, cd, sizeof(TIFFCodec)); | ||||
| 		i++; | ||||
| 	} | ||||
| 	for (c = _TIFFBuiltinCODECS; c->name; c++) { | ||||
| 		if (TIFFIsCODECConfigured(c->scheme)) { | ||||
| 			new_codecs = (TIFFCodec *) | ||||
| 				_TIFFrealloc(codecs, i * sizeof(TIFFCodec)); | ||||
| 			if (!new_codecs) { | ||||
| 				_TIFFfree (codecs); | ||||
| 				return NULL; | ||||
| 			} | ||||
| 			codecs = new_codecs; | ||||
| 			_TIFFmemcpy(codecs + i - 1, (const void*)c, sizeof(TIFFCodec)); | ||||
| 			i++; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	new_codecs = (TIFFCodec *) _TIFFrealloc(codecs, i * sizeof(TIFFCodec)); | ||||
| 	if (!new_codecs) { | ||||
| 		_TIFFfree (codecs); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 	codecs = new_codecs; | ||||
| 	_TIFFmemset(codecs + i - 1, 0, sizeof(TIFFCodec)); | ||||
|  | ||||
| 	return codecs; | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										46
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.h-vms
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.h-vms
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| /* Define to 1 if you have the <assert.h> header file. */ | ||||
| #define HAVE_ASSERT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <fcntl.h> header file. */ | ||||
| #define HAVE_FCNTL_H 1 | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| #define HAVE_UNISTD_H 1 | ||||
|  | ||||
| #define HAVE_STRING_H 1 | ||||
| /* Define to 1 if you have the <sys/types.h> header file. */ | ||||
| #define HAVE_SYS_TYPES_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <io.h> header file. */ | ||||
| //#define HAVE_IO_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <search.h> header file. */ | ||||
| //#define HAVE_SEARCH_H 1 | ||||
|  | ||||
| /* The size of a `int', as computed by sizeof. */ | ||||
| #define SIZEOF_INT 4 | ||||
|  | ||||
| /* The size of a `long', as computed by sizeof. */ | ||||
| #define SIZEOF_LONG 4 | ||||
|  | ||||
| /* Set the native cpu bit order */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Define to 1 if your processor stores words with the most significant byte | ||||
|    first (like Motorola and SPARC, unlike Intel and VAX). */ | ||||
| /* #undef WORDS_BIGENDIAN */ | ||||
|  | ||||
| /* Define to `__inline__' or `__inline' if that's what the C compiler | ||||
|    calls it, or to nothing if 'inline' is not supported under any name.  */ | ||||
| /* | ||||
| #ifndef __cplusplus | ||||
| # ifndef inline | ||||
| #  define inline __inline | ||||
| # endif | ||||
| #endif | ||||
| */ | ||||
|  | ||||
| // #define lfind _lfind | ||||
							
								
								
									
										261
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.h.cmake.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.h.cmake.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,261 @@ | ||||
| /* libtiff/tif_config.h.cmake.in.  Not generated, but originated from autoheader.  */ | ||||
| /* This file must be kept up-to-date with needed substitutions from libtiff/tif_config.h.in. */ | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #cmakedefine CCITT_SUPPORT 1 | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #cmakedefine CHECK_JPEG_YCBCR_SUBSAMPLING 1 | ||||
|  | ||||
| /* enable partial strip reading for large strips (experimental) */ | ||||
| #cmakedefine CHUNKY_STRIP_READ_SUPPORT 1 | ||||
|  | ||||
| /* Support C++ stream API (requires C++ compiler) */ | ||||
| #cmakedefine CXX_SUPPORT 1 | ||||
|  | ||||
| /* enable deferred strip/tile offset/size loading (experimental) */ | ||||
| #cmakedefine DEFER_STRILE_LOAD 1 | ||||
|  | ||||
| /* Define to 1 if you have the <assert.h> header file. */ | ||||
| #cmakedefine HAVE_ASSERT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <dlfcn.h> header file. */ | ||||
| #cmakedefine HAVE_DLFCN_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <fcntl.h> header file. */ | ||||
| #cmakedefine HAVE_FCNTL_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `floor' function. */ | ||||
| #cmakedefine HAVE_FLOOR 1 | ||||
|  | ||||
| /* Define to 1 if you have the `getopt' function. */ | ||||
| #cmakedefine HAVE_GETOPT 1 | ||||
|  | ||||
| /* Define to 1 if you have the <GLUT/glut.h> header file. */ | ||||
| #cmakedefine HAVE_GLUT_GLUT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <GL/glut.h> header file. */ | ||||
| #cmakedefine HAVE_GL_GLUT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <GL/glu.h> header file. */ | ||||
| #cmakedefine HAVE_GL_GLU_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <GL/gl.h> header file. */ | ||||
| #cmakedefine HAVE_GL_GL_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <inttypes.h> header file. */ | ||||
| #cmakedefine HAVE_INTTYPES_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <io.h> header file. */ | ||||
| #cmakedefine HAVE_IO_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `isascii' function. */ | ||||
| #cmakedefine HAVE_ISASCII 1 | ||||
|  | ||||
| /* Define to 1 if you have the `jbg_newlen' function. */ | ||||
| #cmakedefine HAVE_JBG_NEWLEN 1 | ||||
|  | ||||
| /* Define to 1 if you have the `lfind' function. */ | ||||
| #cmakedefine HAVE_LFIND 1 | ||||
|  | ||||
| /* Define to 1 if you have the <limits.h> header file. */ | ||||
| #cmakedefine HAVE_LIMITS_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <malloc.h> header file. */ | ||||
| #cmakedefine HAVE_MALLOC_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `memmove' function. */ | ||||
| #cmakedefine HAVE_MEMMOVE 1 | ||||
|  | ||||
| /* Define to 1 if you have the <memory.h> header file. */ | ||||
| #cmakedefine HAVE_MEMORY_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `memset' function. */ | ||||
| #cmakedefine HAVE_MEMSET 1 | ||||
|  | ||||
| /* Define to 1 if you have the `mmap' function. */ | ||||
| #cmakedefine HAVE_MMAP 1 | ||||
|  | ||||
| /* Define to 1 if you have the <OpenGL/glu.h> header file. */ | ||||
| #cmakedefine HAVE_OPENGL_GLU_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <OpenGL/gl.h> header file. */ | ||||
| #cmakedefine HAVE_OPENGL_GL_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `pow' function. */ | ||||
| #cmakedefine HAVE_POW 1 | ||||
|  | ||||
| /* Define to 1 if you have the <search.h> header file. */ | ||||
| #cmakedefine HAVE_SEARCH_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `setmode' function. */ | ||||
| #cmakedefine HAVE_SETMODE 1 | ||||
|  | ||||
| /* Define to 1 if you have the `snprintf' function. */ | ||||
| #cmakedefine HAVE_SNPRINTF 1 | ||||
|  | ||||
| /* Define to 1 if you have the `sqrt' function. */ | ||||
| #cmakedefine HAVE_SQRT 1 | ||||
|  | ||||
| /* Define to 1 if you have the <stdint.h> header file. */ | ||||
| #cmakedefine HAVE_STDINT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strcasecmp' function. */ | ||||
| #cmakedefine HAVE_STRCASECMP 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strchr' function. */ | ||||
| #cmakedefine HAVE_STRCHR 1 | ||||
|  | ||||
| /* Define to 1 if you have the <strings.h> header file. */ | ||||
| #cmakedefine HAVE_STRINGS_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <string.h> header file. */ | ||||
| #cmakedefine HAVE_STRING_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strrchr' function. */ | ||||
| #cmakedefine HAVE_STRRCHR 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strstr' function. */ | ||||
| #cmakedefine HAVE_STRSTR 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strtol' function. */ | ||||
| #cmakedefine HAVE_STRTOL 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strtoul' function. */ | ||||
| #cmakedefine HAVE_STRTOUL 1 | ||||
|  | ||||
| /* Define to 1 if you have the `strtoull' function. */ | ||||
| #cmakedefine HAVE_STRTOULL 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/time.h> header file. */ | ||||
| #cmakedefine HAVE_SYS_TIME_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/types.h> header file. */ | ||||
| #cmakedefine HAVE_SYS_TYPES_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <unistd.h> header file. */ | ||||
| #cmakedefine HAVE_UNISTD_H 1 | ||||
|  | ||||
| /* 8/12 bit libjpeg dual mode enabled */ | ||||
| #cmakedefine JPEG_DUAL_MODE_8_12 1 | ||||
|  | ||||
| /* 12bit libjpeg primary include file with path */ | ||||
| #define LIBJPEG_12_PATH @LIBJPEG_12_PATH@ | ||||
|  | ||||
| /* Support LZMA2 compression */ | ||||
| #cmakedefine LZMA_SUPPORT 1 | ||||
|  | ||||
| /* Name of package */ | ||||
| #define PACKAGE "@PACKAGE_NAME@" | ||||
|  | ||||
| /* Define to the address where bug reports for this package should be sent. */ | ||||
| #define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" | ||||
|  | ||||
| /* Define to the full name of this package. */ | ||||
| #define PACKAGE_NAME "@PACKAGE_NAME@" | ||||
|  | ||||
| /* Define to the full name and version of this package. */ | ||||
| #define PACKAGE_STRING "@PACKAGE_STRING@" | ||||
|  | ||||
| /* Define to the one symbol short name of this package. */ | ||||
| #define PACKAGE_TARNAME "@PACKAGE_TARNAME@" | ||||
|  | ||||
| /* Define to the home page for this package. */ | ||||
| #define PACKAGE_URL "@PACKAGE_URL@" | ||||
|  | ||||
| /* Define to the version of this package. */ | ||||
| #define PACKAGE_VERSION "@PACKAGE_VERSION@" | ||||
|  | ||||
| /* The size of `signed int', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_INT @SIZEOF_SIGNED_INT@ | ||||
|  | ||||
| /* The size of `signed long', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_LONG @SIZEOF_SIGNED_LONG@ | ||||
|  | ||||
| /* The size of `signed long long', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_LONG_LONG @SIZEOF_SIGNED_LONG_LONG@ | ||||
|  | ||||
| /* The size of `signed short', as computed by sizeof. */ | ||||
| #define SIZEOF_SIGNED_SHORT @SIZEOF_SIGNED_SHORT@ | ||||
|  | ||||
| /* The size of `unsigned char *', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_CHAR_P @SIZEOF_UNSIGNED_CHAR_P@ | ||||
|  | ||||
| /* The size of `unsigned int', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_INT @SIZEOF_UNSIGNED_INT@ | ||||
|  | ||||
| /* The size of `unsigned long', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_LONG @SIZEOF_UNSIGNED_LONG@ | ||||
|  | ||||
| /* The size of `unsigned long long', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_LONG_LONG @SIZEOF_UNSIGNED_LONG_LONG@ | ||||
|  | ||||
| /* The size of `unsigned short', as computed by sizeof. */ | ||||
| #define SIZEOF_UNSIGNED_SHORT @SIZEOF_UNSIGNED_SHORT@ | ||||
|  | ||||
| /* Default size of the strip in bytes (when strip chopping enabled) */ | ||||
| #define STRIP_SIZE_DEFAULT @STRIP_SIZE_DEFAULT@ | ||||
|  | ||||
| /* Signed 32-bit type formatter */ | ||||
| #define TIFF_INT32_FORMAT "@TIFF_INT32_FORMAT@" | ||||
|  | ||||
| /* Signed 64-bit type formatter */ | ||||
| #define TIFF_INT64_FORMAT "@TIFF_INT64_FORMAT@" | ||||
|  | ||||
| /* Pointer difference type formatter */ | ||||
| #define TIFF_PTRDIFF_FORMAT "@TIFF_PTRDIFF_FORMAT@" | ||||
|  | ||||
| /* Unsigned size type formatter */ | ||||
| #define TIFF_SIZE_FORMAT "@TIFF_SIZE_FORMAT@" | ||||
|  | ||||
| /* Signed size type formatter */ | ||||
| #define TIFF_SSIZE_FORMAT "@TIFF_SSIZE_FORMAT@" | ||||
|  | ||||
| /* Unsigned 32-bit type formatter */ | ||||
| #define TIFF_UINT32_FORMAT "@TIFF_UINT32_FORMAT@" | ||||
|  | ||||
| /* Unsigned 64-bit type formatter */ | ||||
| #define TIFF_UINT64_FORMAT "@TIFF_UINT64_FORMAT@" | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #define TIFF_UINT8_T @TIFF_UINT8_T@ | ||||
|  | ||||
| /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | ||||
| #undef TIME_WITH_SYS_TIME | ||||
|  | ||||
| /* Define to 1 if your <sys/time.h> declares `struct tm'. */ | ||||
| #cmakedefine TM_IN_SYS_TIME 1 | ||||
|  | ||||
| /* define to use win32 IO system */ | ||||
| #cmakedefine USE_WIN32_FILEIO 1 | ||||
|  | ||||
| /* Version number of package */ | ||||
| #define VERSION "@PACKAGE_VERSION@" | ||||
|  | ||||
| /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most | ||||
|    significant byte first (like Motorola and SPARC, unlike Intel). */ | ||||
| #if defined AC_APPLE_UNIVERSAL_BUILD | ||||
| # if defined __BIG_ENDIAN__ | ||||
| #  define WORDS_BIGENDIAN 1 | ||||
| # endif | ||||
| #else | ||||
| # ifndef WORDS_BIGENDIAN | ||||
| #  undef WORDS_BIGENDIAN | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| /* Number of bits in a file offset, on hosts where this is settable. */ | ||||
| #define _FILE_OFFSET_BITS @FILE_OFFSET_BITS@ | ||||
|  | ||||
| /* Define to `__inline__' or `__inline' if that's what the C compiler | ||||
|    calls it, or to nothing if 'inline' is not supported under any name.  */ | ||||
| #ifndef __cplusplus | ||||
| #define inline @INLINE_KEYWORD@ | ||||
| #endif | ||||
|  | ||||
| /* Define to `long int' if <sys/types.h> does not define. */ | ||||
| #undef off_t | ||||
|  | ||||
| /* Define to `unsigned int' if <sys/types.h> does not define. */ | ||||
| #undef size_t | ||||
							
								
								
									
										410
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.h.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										410
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.h.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,410 @@ | ||||
| /* libtiff/tif_config.h.in.  Generated from configure.ac by autoheader.  */ | ||||
|  | ||||
| /* Define if building universal (internal helper macro) */ | ||||
| #undef AC_APPLE_UNIVERSAL_BUILD | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #undef CCITT_SUPPORT | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #undef CHECK_JPEG_YCBCR_SUBSAMPLING | ||||
|  | ||||
| /* enable partial strip reading for large strips (experimental) */ | ||||
| #undef CHUNKY_STRIP_READ_SUPPORT | ||||
|  | ||||
| /* Support C++ stream API (requires C++ compiler) */ | ||||
| #undef CXX_SUPPORT | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #undef DEFAULT_EXTRASAMPLE_AS_ALPHA | ||||
|  | ||||
| /* enable deferred strip/tile offset/size loading (experimental) */ | ||||
| #undef DEFER_STRILE_LOAD | ||||
|  | ||||
| /* Define to 1 if you have the <assert.h> header file. */ | ||||
| #undef HAVE_ASSERT_H | ||||
|  | ||||
| /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. | ||||
|    */ | ||||
| #undef HAVE_DECL_OPTARG | ||||
|  | ||||
| /* Define to 1 if you have the <dlfcn.h> header file. */ | ||||
| #undef HAVE_DLFCN_H | ||||
|  | ||||
| /* Define to 1 if you have the <fcntl.h> header file. */ | ||||
| #undef HAVE_FCNTL_H | ||||
|  | ||||
| /* Define to 1 if you have the `floor' function. */ | ||||
| #undef HAVE_FLOOR | ||||
|  | ||||
| /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ | ||||
| #undef HAVE_FSEEKO | ||||
|  | ||||
| /* Define to 1 if you have the `getopt' function. */ | ||||
| #undef HAVE_GETOPT | ||||
|  | ||||
| /* Define to 1 if you have the <GLUT/glut.h> header file. */ | ||||
| #undef HAVE_GLUT_GLUT_H | ||||
|  | ||||
| /* Define to 1 if you have the <GL/glut.h> header file. */ | ||||
| #undef HAVE_GL_GLUT_H | ||||
|  | ||||
| /* Define to 1 if you have the <GL/glu.h> header file. */ | ||||
| #undef HAVE_GL_GLU_H | ||||
|  | ||||
| /* Define to 1 if you have the <GL/gl.h> header file. */ | ||||
| #undef HAVE_GL_GL_H | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #undef HAVE_IEEEFP | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| #undef HAVE_INT16 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| #undef HAVE_INT32 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| #undef HAVE_INT8 | ||||
|  | ||||
| /* Define to 1 if you have the <inttypes.h> header file. */ | ||||
| #undef HAVE_INTTYPES_H | ||||
|  | ||||
| /* Define to 1 if you have the <io.h> header file. */ | ||||
| #undef HAVE_IO_H | ||||
|  | ||||
| /* Define to 1 if you have the `isascii' function. */ | ||||
| #undef HAVE_ISASCII | ||||
|  | ||||
| /* Define to 1 if you have the `jbg_newlen' function. */ | ||||
| #undef HAVE_JBG_NEWLEN | ||||
|  | ||||
| /* Define to 1 if you have the `lfind' function. */ | ||||
| #undef HAVE_LFIND | ||||
|  | ||||
| /* Define to 1 if you have the <limits.h> header file. */ | ||||
| #undef HAVE_LIMITS_H | ||||
|  | ||||
| /* Define to 1 if you have the <malloc.h> header file. */ | ||||
| #undef HAVE_MALLOC_H | ||||
|  | ||||
| /* Define to 1 if you have the `memmove' function. */ | ||||
| #undef HAVE_MEMMOVE | ||||
|  | ||||
| /* Define to 1 if you have the <memory.h> header file. */ | ||||
| #undef HAVE_MEMORY_H | ||||
|  | ||||
| /* Define to 1 if you have the `memset' function. */ | ||||
| #undef HAVE_MEMSET | ||||
|  | ||||
| /* Define to 1 if you have the `mmap' function. */ | ||||
| #undef HAVE_MMAP | ||||
|  | ||||
| /* Define to 1 if you have the <OpenGL/glu.h> header file. */ | ||||
| #undef HAVE_OPENGL_GLU_H | ||||
|  | ||||
| /* Define to 1 if you have the <OpenGL/gl.h> header file. */ | ||||
| #undef HAVE_OPENGL_GL_H | ||||
|  | ||||
| /* Define to 1 if you have the `pow' function. */ | ||||
| #undef HAVE_POW | ||||
|  | ||||
| /* Define if you have POSIX threads libraries and header files. */ | ||||
| #undef HAVE_PTHREAD | ||||
|  | ||||
| /* Define to 1 if you have the <search.h> header file. */ | ||||
| #undef HAVE_SEARCH_H | ||||
|  | ||||
| /* Define to 1 if you have the `setmode' function. */ | ||||
| #undef HAVE_SETMODE | ||||
|  | ||||
| /* Define to 1 if you have the `snprintf' function. */ | ||||
| #undef HAVE_SNPRINTF | ||||
|  | ||||
| /* Define to 1 if you have the `sqrt' function. */ | ||||
| #undef HAVE_SQRT | ||||
|  | ||||
| /* Define to 1 if you have the <stdint.h> header file. */ | ||||
| #undef HAVE_STDINT_H | ||||
|  | ||||
| /* Define to 1 if you have the <stdlib.h> header file. */ | ||||
| #undef HAVE_STDLIB_H | ||||
|  | ||||
| /* Define to 1 if you have the `strcasecmp' function. */ | ||||
| #undef HAVE_STRCASECMP | ||||
|  | ||||
| /* Define to 1 if you have the `strchr' function. */ | ||||
| #undef HAVE_STRCHR | ||||
|  | ||||
| /* Define to 1 if you have the <strings.h> header file. */ | ||||
| #undef HAVE_STRINGS_H | ||||
|  | ||||
| /* Define to 1 if you have the <string.h> header file. */ | ||||
| #undef HAVE_STRING_H | ||||
|  | ||||
| /* Define to 1 if you have the `strrchr' function. */ | ||||
| #undef HAVE_STRRCHR | ||||
|  | ||||
| /* Define to 1 if you have the `strstr' function. */ | ||||
| #undef HAVE_STRSTR | ||||
|  | ||||
| /* Define to 1 if you have the `strtol' function. */ | ||||
| #undef HAVE_STRTOL | ||||
|  | ||||
| /* Define to 1 if you have the `strtoul' function. */ | ||||
| #undef HAVE_STRTOUL | ||||
|  | ||||
| /* Define to 1 if you have the `strtoull' function. */ | ||||
| #undef HAVE_STRTOULL | ||||
|  | ||||
| /* Define to 1 if you have the <sys/stat.h> header file. */ | ||||
| #undef HAVE_SYS_STAT_H | ||||
|  | ||||
| /* Define to 1 if you have the <sys/time.h> header file. */ | ||||
| #undef HAVE_SYS_TIME_H | ||||
|  | ||||
| /* Define to 1 if you have the <sys/types.h> header file. */ | ||||
| #undef HAVE_SYS_TYPES_H | ||||
|  | ||||
| /* Define to 1 if you have the <unistd.h> header file. */ | ||||
| #undef HAVE_UNISTD_H | ||||
|  | ||||
| /* Use nonstandard varargs form for the GLU tesselator callback */ | ||||
| #undef HAVE_VARARGS_GLU_TESSCB | ||||
|  | ||||
| /* Define to 1 if you have the <windows.h> header file. */ | ||||
| #undef HAVE_WINDOWS_H | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #undef HOST_BIGENDIAN | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #undef HOST_FILLORDER | ||||
|  | ||||
| /* Support ISO JBIG compression (requires JBIG-KIT library) */ | ||||
| #undef JBIG_SUPPORT | ||||
|  | ||||
| /* 8/12 bit libjpeg dual mode enabled */ | ||||
| #undef JPEG_DUAL_MODE_8_12 | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| #undef JPEG_SUPPORT | ||||
|  | ||||
| /* 12bit libjpeg primary include file with path */ | ||||
| #undef LIBJPEG_12_PATH | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #undef LOGLUV_SUPPORT | ||||
|  | ||||
| /* Define to the sub-directory where libtool stores uninstalled libraries. */ | ||||
| #undef LT_OBJDIR | ||||
|  | ||||
| /* Support LZMA2 compression */ | ||||
| #undef LZMA_SUPPORT | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #undef LZW_SUPPORT | ||||
|  | ||||
| /* Support Microsoft Document Imaging format */ | ||||
| #undef MDI_SUPPORT | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #undef NEXT_SUPPORT | ||||
|  | ||||
| /* Support Old JPEG compresson (read-only) */ | ||||
| #undef OJPEG_SUPPORT | ||||
|  | ||||
| /* Name of package */ | ||||
| #undef PACKAGE | ||||
|  | ||||
| /* Define to the address where bug reports for this package should be sent. */ | ||||
| #undef PACKAGE_BUGREPORT | ||||
|  | ||||
| /* Define to the full name of this package. */ | ||||
| #undef PACKAGE_NAME | ||||
|  | ||||
| /* Define to the full name and version of this package. */ | ||||
| #undef PACKAGE_STRING | ||||
|  | ||||
| /* Define to the one symbol short name of this package. */ | ||||
| #undef PACKAGE_TARNAME | ||||
|  | ||||
| /* Define to the home page for this package. */ | ||||
| #undef PACKAGE_URL | ||||
|  | ||||
| /* Define to the version of this package. */ | ||||
| #undef PACKAGE_VERSION | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #undef PACKBITS_SUPPORT | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| #undef PIXARLOG_SUPPORT | ||||
|  | ||||
| /* Define to necessary symbol if this constant uses a non-standard name on | ||||
|    your system. */ | ||||
| #undef PTHREAD_CREATE_JOINABLE | ||||
|  | ||||
| /* The size of `signed int', as computed by sizeof. */ | ||||
| #undef SIZEOF_SIGNED_INT | ||||
|  | ||||
| /* The size of `signed long', as computed by sizeof. */ | ||||
| #undef SIZEOF_SIGNED_LONG | ||||
|  | ||||
| /* The size of `signed long long', as computed by sizeof. */ | ||||
| #undef SIZEOF_SIGNED_LONG_LONG | ||||
|  | ||||
| /* The size of `signed short', as computed by sizeof. */ | ||||
| #undef SIZEOF_SIGNED_SHORT | ||||
|  | ||||
| /* The size of `size_t', as computed by sizeof. */ | ||||
| #undef SIZEOF_SIZE_T | ||||
|  | ||||
| /* The size of `unsigned char *', as computed by sizeof. */ | ||||
| #undef SIZEOF_UNSIGNED_CHAR_P | ||||
|  | ||||
| /* The size of `unsigned int', as computed by sizeof. */ | ||||
| #undef SIZEOF_UNSIGNED_INT | ||||
|  | ||||
| /* The size of `unsigned long', as computed by sizeof. */ | ||||
| #undef SIZEOF_UNSIGNED_LONG | ||||
|  | ||||
| /* The size of `unsigned long long', as computed by sizeof. */ | ||||
| #undef SIZEOF_UNSIGNED_LONG_LONG | ||||
|  | ||||
| /* The size of `unsigned short', as computed by sizeof. */ | ||||
| #undef SIZEOF_UNSIGNED_SHORT | ||||
|  | ||||
| /* Define to 1 if you have the ANSI C header files. */ | ||||
| #undef STDC_HEADERS | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of specified size to reduce memory usage) */ | ||||
| #undef STRIPCHOP_DEFAULT | ||||
|  | ||||
| /* Default size of the strip in bytes (when strip chopping enabled) */ | ||||
| #undef STRIP_SIZE_DEFAULT | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #undef SUBIFD_SUPPORT | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #undef THUNDER_SUPPORT | ||||
|  | ||||
| /* Signed 16-bit type */ | ||||
| #undef TIFF_INT16_T | ||||
|  | ||||
| /* Signed 32-bit type formatter */ | ||||
| #undef TIFF_INT32_FORMAT | ||||
|  | ||||
| /* Signed 32-bit type */ | ||||
| #undef TIFF_INT32_T | ||||
|  | ||||
| /* Signed 64-bit type formatter */ | ||||
| #undef TIFF_INT64_FORMAT | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #undef TIFF_INT64_T | ||||
|  | ||||
| /* Signed 8-bit type */ | ||||
| #undef TIFF_INT8_T | ||||
|  | ||||
| /* Pointer difference type formatter */ | ||||
| #undef TIFF_PTRDIFF_FORMAT | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #undef TIFF_PTRDIFF_T | ||||
|  | ||||
| /* Size type formatter */ | ||||
| #undef TIFF_SIZE_FORMAT | ||||
|  | ||||
| /* Unsigned size type */ | ||||
| #undef TIFF_SIZE_T | ||||
|  | ||||
| /* Signed size type formatter */ | ||||
| #undef TIFF_SSIZE_FORMAT | ||||
|  | ||||
| /* Signed size type */ | ||||
| #undef TIFF_SSIZE_T | ||||
|  | ||||
| /* Unsigned 16-bit type */ | ||||
| #undef TIFF_UINT16_T | ||||
|  | ||||
| /* Unsigned 32-bit type formatter */ | ||||
| #undef TIFF_UINT32_FORMAT | ||||
|  | ||||
| /* Unsigned 32-bit type */ | ||||
| #undef TIFF_UINT32_T | ||||
|  | ||||
| /* Unsigned 64-bit type formatter */ | ||||
| #undef TIFF_UINT64_FORMAT | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #undef TIFF_UINT64_T | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #undef TIFF_UINT8_T | ||||
|  | ||||
| /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ | ||||
| #undef TIME_WITH_SYS_TIME | ||||
|  | ||||
| /* Define to 1 if your <sys/time.h> declares `struct tm'. */ | ||||
| #undef TM_IN_SYS_TIME | ||||
|  | ||||
| /* define to use win32 IO system */ | ||||
| #undef USE_WIN32_FILEIO | ||||
|  | ||||
| /* Version number of package */ | ||||
| #undef VERSION | ||||
|  | ||||
| /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most | ||||
|    significant byte first (like Motorola and SPARC, unlike Intel). */ | ||||
| #if defined AC_APPLE_UNIVERSAL_BUILD | ||||
| # if defined __BIG_ENDIAN__ | ||||
| #  define WORDS_BIGENDIAN 1 | ||||
| # endif | ||||
| #else | ||||
| # ifndef WORDS_BIGENDIAN | ||||
| #  undef WORDS_BIGENDIAN | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| /* Define to 1 if the X Window System is missing or not being used. */ | ||||
| #undef X_DISPLAY_MISSING | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| #undef ZIP_SUPPORT | ||||
|  | ||||
| /* Enable large inode numbers on Mac OS X 10.5.  */ | ||||
| #ifndef _DARWIN_USE_64_BIT_INODE | ||||
| # define _DARWIN_USE_64_BIT_INODE 1 | ||||
| #endif | ||||
|  | ||||
| /* Number of bits in a file offset, on hosts where this is settable. */ | ||||
| #undef _FILE_OFFSET_BITS | ||||
|  | ||||
| /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ | ||||
| #undef _LARGEFILE_SOURCE | ||||
|  | ||||
| /* Define for large files, on AIX-style hosts. */ | ||||
| #undef _LARGE_FILES | ||||
|  | ||||
| /* Define to empty if `const' does not conform to ANSI C. */ | ||||
| #undef const | ||||
|  | ||||
| /* Define to `__inline__' or `__inline' if that's what the C compiler | ||||
|    calls it, or to nothing if 'inline' is not supported under any name.  */ | ||||
| #ifndef __cplusplus | ||||
| #undef inline | ||||
| #endif | ||||
|  | ||||
| /* Define to `long int' if <sys/types.h> does not define. */ | ||||
| #undef off_t | ||||
|  | ||||
| /* Define to `unsigned int' if <sys/types.h> does not define. */ | ||||
| #undef size_t | ||||
							
								
								
									
										137
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.vc.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.vc.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,137 @@ | ||||
| #ifndef _TIF_CONFIG_H_ | ||||
| #define _TIF_CONFIG_H_ | ||||
|  | ||||
| /* Define to 1 if you have the <assert.h> header file. */ | ||||
| #define HAVE_ASSERT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <fcntl.h> header file. */ | ||||
| #define HAVE_FCNTL_H 1 | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Define to 1 if you have the `jbg_newlen' function. */ | ||||
| #define HAVE_JBG_NEWLEN 1 | ||||
|  | ||||
| /* Define to 1 if you have the <string.h> header file. */ | ||||
| #define HAVE_STRING_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/types.h> header file. */ | ||||
| #define HAVE_SYS_TYPES_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <io.h> header file. */ | ||||
| #define HAVE_IO_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <search.h> header file. */ | ||||
| #define HAVE_SEARCH_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `setmode' function. */ | ||||
| #define HAVE_SETMODE 1 | ||||
|  | ||||
| /* Define to 1 if you have the declaration of `optarg', and to 0 if you don't. */ | ||||
| #define HAVE_DECL_OPTARG 0 | ||||
|  | ||||
| /* The size of a `int', as computed by sizeof. */ | ||||
| #define SIZEOF_INT 4 | ||||
|  | ||||
| /* The size of a `long', as computed by sizeof. */ | ||||
| #define SIZEOF_LONG 4 | ||||
|  | ||||
| /* Signed 64-bit type formatter */ | ||||
| #define TIFF_INT64_FORMAT "%I64d" | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #define TIFF_INT64_T signed __int64 | ||||
|  | ||||
| /* Unsigned 64-bit type formatter */ | ||||
| #define TIFF_UINT64_FORMAT "%I64u" | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #define TIFF_UINT64_T unsigned __int64 | ||||
|  | ||||
| #if _WIN64 | ||||
| /* | ||||
|   Windows 64-bit build | ||||
| */ | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #  define TIFF_PTRDIFF_T TIFF_INT64_T | ||||
|  | ||||
| /* The size of `size_t', as computed by sizeof. */ | ||||
| #  define SIZEOF_SIZE_T 8 | ||||
|  | ||||
| /* Size type formatter */ | ||||
| #  define TIFF_SIZE_FORMAT TIFF_INT64_FORMAT | ||||
|  | ||||
| /* Unsigned size type */ | ||||
| #  define TIFF_SIZE_T TIFF_UINT64_T | ||||
|  | ||||
| /* Signed size type formatter */ | ||||
| #  define TIFF_SSIZE_FORMAT TIFF_INT64_FORMAT | ||||
|  | ||||
| /* Signed size type */ | ||||
| #  define TIFF_SSIZE_T TIFF_INT64_T | ||||
|  | ||||
| #else | ||||
| /* | ||||
|   Windows 32-bit build | ||||
| */ | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #  define TIFF_PTRDIFF_T signed int | ||||
|  | ||||
| /* The size of `size_t', as computed by sizeof. */ | ||||
| #  define SIZEOF_SIZE_T 4 | ||||
|  | ||||
| /* Size type formatter */ | ||||
| #  define TIFF_SIZE_FORMAT "%u" | ||||
|  | ||||
| /* Size type formatter */ | ||||
| #  define TIFF_SIZE_FORMAT "%u" | ||||
|  | ||||
| /* Unsigned size type */ | ||||
| #  define TIFF_SIZE_T unsigned int | ||||
|  | ||||
| /* Signed size type formatter */ | ||||
| #  define TIFF_SSIZE_FORMAT "%d" | ||||
|  | ||||
| /* Signed size type */ | ||||
| #  define TIFF_SSIZE_T signed int | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /* Set the native cpu bit order */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Visual Studio 2015 / VC 14 / MSVC 19.00 finally has snprintf() */ | ||||
| #if defined(_MSC_VER) && _MSC_VER < 1900 | ||||
| #define snprintf _snprintf | ||||
| #else | ||||
| #define HAVE_SNPRINTF 1 | ||||
| #endif | ||||
|  | ||||
| /* Define to 1 if your processor stores words with the most significant byte | ||||
|    first (like Motorola and SPARC, unlike Intel and VAX). */ | ||||
| /* #undef WORDS_BIGENDIAN */ | ||||
|  | ||||
| /* Define to `__inline__' or `__inline' if that's what the C compiler | ||||
|    calls it, or to nothing if 'inline' is not supported under any name.  */ | ||||
| #ifndef __cplusplus | ||||
| # ifndef inline | ||||
| #  define inline __inline | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| #define lfind _lfind | ||||
|  | ||||
| #pragma warning(disable : 4996) /* function deprecation warnings */ | ||||
|  | ||||
| #endif /* _TIF_CONFIG_H_ */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										71
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.wince.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_config.wince.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | ||||
| /* $Id: tif_config.wince.h,v 1.3 2010-03-10 18:56:48 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * TIFF library configuration header for Windows CE platform. | ||||
|  */ | ||||
| #ifndef _WIN32_WCE | ||||
| # error This version of tif_config.h header is dedicated for Windows CE platform! | ||||
| #endif | ||||
|  | ||||
| /* Define to 1 if you have the <assert.h> header file. */ | ||||
| #define HAVE_ASSERT_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <fcntl.h> header file. */ | ||||
| #define  HAVE_FCNTL_H 1 | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Define to 1 if you have the `jbg_newlen' function. */ | ||||
| #define HAVE_JBG_NEWLEN 1 | ||||
|  | ||||
| /* Define to 1 if you have the <string.h> header file. */ | ||||
| #define HAVE_STRING_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <sys/types.h> header file. */ | ||||
| #undef HAVE_SYS_TYPES_H | ||||
|  | ||||
| /* Define to 1 if you have the <io.h> header file. */ | ||||
| #define HAVE_IO_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the <search.h> header file. */ | ||||
| #define HAVE_SEARCH_H 1 | ||||
|  | ||||
| /* Define to 1 if you have the `setmode' function. */ | ||||
| #define HAVE_SETMODE 1 | ||||
|  | ||||
| /* Define to 1 if you have the `bsearch' function. */ | ||||
| #define HAVE_BSEARCH 1 | ||||
| #define bsearch wceex_bsearch | ||||
|  | ||||
| /* Define to 1 if you have the `lfind' function. */ | ||||
| #define HAVE_LFIND 1 | ||||
| #define lfind wceex_lfind | ||||
|  | ||||
| /* The size of a `int', as computed by sizeof. */ | ||||
| #define SIZEOF_INT 4 | ||||
|  | ||||
| /* Set the native cpu bit order */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Define to 1 if your processor stores words with the most significant byte | ||||
|    first (like Motorola and SPARC, unlike Intel and VAX). */ | ||||
| /* #undef WORDS_BIGENDIAN */ | ||||
|  | ||||
| /* Define to `__inline__' or `__inline' if that's what the C compiler | ||||
|    calls it, or to nothing if 'inline' is not supported under any name.  */ | ||||
| #ifndef __cplusplus | ||||
| # ifndef inline | ||||
| #  define inline __inline | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1770
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dir.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1770
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dir.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										309
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dir.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										309
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dir.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,309 @@ | ||||
| /* $Id: tif_dir.h,v 1.55 2017-06-01 12:44:04 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _TIFFDIR_ | ||||
| #define	_TIFFDIR_ | ||||
| /* | ||||
|  * ``Library-private'' Directory-related Definitions. | ||||
|  */ | ||||
|  | ||||
| typedef struct { | ||||
| 	const TIFFField *info; | ||||
| 	int             count; | ||||
| 	void           *value; | ||||
| } TIFFTagValue; | ||||
|  | ||||
| /* | ||||
|  * TIFF Image File Directories are comprised of a table of field | ||||
|  * descriptors of the form shown below.  The table is sorted in | ||||
|  * ascending order by tag.  The values associated with each entry are | ||||
|  * disjoint and may appear anywhere in the file (so long as they are | ||||
|  * placed on a word boundary). | ||||
|  * | ||||
|  * If the value is 4 bytes or less, in ClassicTIFF, or 8 bytes or less in | ||||
|  * BigTIFF, then it is placed in the offset field to save space. If so, | ||||
|  * it is left-justified in the offset field. | ||||
|  */ | ||||
| typedef struct { | ||||
| 	uint16 tdir_tag;        /* see below */ | ||||
| 	uint16 tdir_type;       /* data type; see below */ | ||||
| 	uint64 tdir_count;      /* number of items; length in spec */ | ||||
| 	union { | ||||
| 		uint16 toff_short; | ||||
| 		uint32 toff_long; | ||||
| 		uint64 toff_long8; | ||||
| 	} tdir_offset;		/* either offset or the data itself if fits */ | ||||
| } TIFFDirEntry; | ||||
|  | ||||
| /* | ||||
|  * Internal format of a TIFF directory entry. | ||||
|  */ | ||||
| typedef struct { | ||||
| #define FIELD_SETLONGS 4 | ||||
| 	/* bit vector of fields that are set */ | ||||
| 	unsigned long td_fieldsset[FIELD_SETLONGS]; | ||||
|  | ||||
| 	uint32  td_imagewidth, td_imagelength, td_imagedepth; | ||||
| 	uint32  td_tilewidth, td_tilelength, td_tiledepth; | ||||
| 	uint32  td_subfiletype; | ||||
| 	uint16  td_bitspersample; | ||||
| 	uint16  td_sampleformat; | ||||
| 	uint16  td_compression; | ||||
| 	uint16  td_photometric; | ||||
| 	uint16  td_threshholding; | ||||
| 	uint16  td_fillorder; | ||||
| 	uint16  td_orientation; | ||||
| 	uint16  td_samplesperpixel; | ||||
| 	uint32  td_rowsperstrip; | ||||
| 	uint16  td_minsamplevalue, td_maxsamplevalue; | ||||
| 	double* td_sminsamplevalue; | ||||
| 	double* td_smaxsamplevalue; | ||||
| 	float   td_xresolution, td_yresolution; | ||||
| 	uint16  td_resolutionunit; | ||||
| 	uint16  td_planarconfig; | ||||
| 	float   td_xposition, td_yposition; | ||||
| 	uint16  td_pagenumber[2]; | ||||
| 	uint16* td_colormap[3]; | ||||
| 	uint16  td_halftonehints[2]; | ||||
| 	uint16  td_extrasamples; | ||||
| 	uint16* td_sampleinfo; | ||||
| 	/* even though the name is misleading, td_stripsperimage is the number | ||||
| 	 * of striles (=strips or tiles) per plane, and td_nstrips the total | ||||
| 	 * number of striles */ | ||||
| 	uint32  td_stripsperimage;   | ||||
| 	uint32  td_nstrips;              /* size of offset & bytecount arrays */ | ||||
| 	uint64* td_stripoffset; | ||||
| 	uint64* td_stripbytecount; | ||||
| 	int     td_stripbytecountsorted; /* is the bytecount array sorted ascending? */ | ||||
| #if defined(DEFER_STRILE_LOAD) | ||||
|         TIFFDirEntry td_stripoffset_entry;    /* for deferred loading */ | ||||
|         TIFFDirEntry td_stripbytecount_entry; /* for deferred loading */ | ||||
| #endif | ||||
| 	uint16  td_nsubifd; | ||||
| 	uint64* td_subifd; | ||||
| 	/* YCbCr parameters */ | ||||
| 	uint16  td_ycbcrsubsampling[2]; | ||||
| 	uint16  td_ycbcrpositioning; | ||||
| 	/* Colorimetry parameters */ | ||||
| 	uint16* td_transferfunction[3]; | ||||
| 	float*	td_refblackwhite; | ||||
| 	/* CMYK parameters */ | ||||
| 	int     td_inknameslen; | ||||
| 	char*   td_inknames; | ||||
|  | ||||
| 	int     td_customValueCount; | ||||
|         TIFFTagValue *td_customValues; | ||||
| } TIFFDirectory; | ||||
|  | ||||
| /* | ||||
|  * Field flags used to indicate fields that have been set in a directory, and | ||||
|  * to reference fields when manipulating a directory. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * FIELD_IGNORE is used to signify tags that are to be processed but otherwise | ||||
|  * ignored.  This permits antiquated tags to be quietly read and discarded. | ||||
|  * Note that a bit *is* allocated for ignored tags; this is understood by the | ||||
|  * directory reading logic which uses this fact to avoid special-case handling | ||||
|  */ | ||||
| #define FIELD_IGNORE                   0 | ||||
|  | ||||
| /* multi-item fields */ | ||||
| #define FIELD_IMAGEDIMENSIONS          1 | ||||
| #define FIELD_TILEDIMENSIONS           2 | ||||
| #define FIELD_RESOLUTION               3 | ||||
| #define FIELD_POSITION                 4 | ||||
|  | ||||
| /* single-item fields */ | ||||
| #define FIELD_SUBFILETYPE              5 | ||||
| #define FIELD_BITSPERSAMPLE            6 | ||||
| #define FIELD_COMPRESSION              7 | ||||
| #define FIELD_PHOTOMETRIC              8 | ||||
| #define FIELD_THRESHHOLDING            9 | ||||
| #define FIELD_FILLORDER                10 | ||||
| #define FIELD_ORIENTATION              15 | ||||
| #define FIELD_SAMPLESPERPIXEL          16 | ||||
| #define FIELD_ROWSPERSTRIP             17 | ||||
| #define FIELD_MINSAMPLEVALUE           18 | ||||
| #define FIELD_MAXSAMPLEVALUE           19 | ||||
| #define FIELD_PLANARCONFIG             20 | ||||
| #define FIELD_RESOLUTIONUNIT           22 | ||||
| #define FIELD_PAGENUMBER               23 | ||||
| #define FIELD_STRIPBYTECOUNTS          24 | ||||
| #define FIELD_STRIPOFFSETS             25 | ||||
| #define FIELD_COLORMAP                 26 | ||||
| #define FIELD_EXTRASAMPLES             31 | ||||
| #define FIELD_SAMPLEFORMAT             32 | ||||
| #define FIELD_SMINSAMPLEVALUE          33 | ||||
| #define FIELD_SMAXSAMPLEVALUE          34 | ||||
| #define FIELD_IMAGEDEPTH               35 | ||||
| #define FIELD_TILEDEPTH                36 | ||||
| #define FIELD_HALFTONEHINTS            37 | ||||
| #define FIELD_YCBCRSUBSAMPLING         39 | ||||
| #define FIELD_YCBCRPOSITIONING         40 | ||||
| #define	FIELD_REFBLACKWHITE            41 | ||||
| #define FIELD_TRANSFERFUNCTION         44 | ||||
| #define FIELD_INKNAMES                 46 | ||||
| #define FIELD_SUBIFD                   49 | ||||
| /*      FIELD_CUSTOM (see tiffio.h)    65 */ | ||||
| /* end of support for well-known tags; codec-private tags follow */ | ||||
| #define FIELD_CODEC                    66  /* base of codec-private tags */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Pseudo-tags don't normally need field bits since they are not written to an | ||||
|  * output file (by definition). The library also has express logic to always | ||||
|  * query a codec for a pseudo-tag so allocating a field bit for one is a | ||||
|  * waste.   If codec wants to promote the notion of a pseudo-tag being ``set'' | ||||
|  * or ``unset'' then it can do using internal state flags without polluting | ||||
|  * the field bit space defined for real tags. | ||||
|  */ | ||||
| #define FIELD_PSEUDO			0 | ||||
|  | ||||
| #define FIELD_LAST			(32*FIELD_SETLONGS-1) | ||||
|  | ||||
| #define BITn(n)				(((unsigned long)1L)<<((n)&0x1f)) | ||||
| #define BITFIELDn(tif, n)		((tif)->tif_dir.td_fieldsset[(n)/32]) | ||||
| #define TIFFFieldSet(tif, field)	(BITFIELDn(tif, field) & BITn(field)) | ||||
| #define TIFFSetFieldBit(tif, field)	(BITFIELDn(tif, field) |= BITn(field)) | ||||
| #define TIFFClrFieldBit(tif, field)	(BITFIELDn(tif, field) &= ~BITn(field)) | ||||
|  | ||||
| #define FieldSet(fields, f)		(fields[(f)/32] & BITn(f)) | ||||
| #define ResetFieldBit(fields, f)	(fields[(f)/32] &= ~BITn(f)) | ||||
|  | ||||
| typedef enum { | ||||
| 	TIFF_SETGET_UNDEFINED = 0, | ||||
| 	TIFF_SETGET_ASCII = 1, | ||||
| 	TIFF_SETGET_UINT8 = 2, | ||||
| 	TIFF_SETGET_SINT8 = 3, | ||||
| 	TIFF_SETGET_UINT16 = 4, | ||||
| 	TIFF_SETGET_SINT16 = 5, | ||||
| 	TIFF_SETGET_UINT32 = 6, | ||||
| 	TIFF_SETGET_SINT32 = 7, | ||||
| 	TIFF_SETGET_UINT64 = 8, | ||||
| 	TIFF_SETGET_SINT64 = 9, | ||||
| 	TIFF_SETGET_FLOAT = 10, | ||||
| 	TIFF_SETGET_DOUBLE = 11, | ||||
| 	TIFF_SETGET_IFD8 = 12, | ||||
| 	TIFF_SETGET_INT = 13, | ||||
| 	TIFF_SETGET_UINT16_PAIR = 14, | ||||
| 	TIFF_SETGET_C0_ASCII = 15, | ||||
| 	TIFF_SETGET_C0_UINT8 = 16, | ||||
| 	TIFF_SETGET_C0_SINT8 = 17, | ||||
| 	TIFF_SETGET_C0_UINT16 = 18, | ||||
| 	TIFF_SETGET_C0_SINT16 = 19, | ||||
| 	TIFF_SETGET_C0_UINT32 = 20, | ||||
| 	TIFF_SETGET_C0_SINT32 = 21, | ||||
| 	TIFF_SETGET_C0_UINT64 = 22, | ||||
| 	TIFF_SETGET_C0_SINT64 = 23, | ||||
| 	TIFF_SETGET_C0_FLOAT = 24, | ||||
| 	TIFF_SETGET_C0_DOUBLE = 25, | ||||
| 	TIFF_SETGET_C0_IFD8 = 26, | ||||
| 	TIFF_SETGET_C16_ASCII = 27, | ||||
| 	TIFF_SETGET_C16_UINT8 = 28, | ||||
| 	TIFF_SETGET_C16_SINT8 = 29, | ||||
| 	TIFF_SETGET_C16_UINT16 = 30, | ||||
| 	TIFF_SETGET_C16_SINT16 = 31, | ||||
| 	TIFF_SETGET_C16_UINT32 = 32, | ||||
| 	TIFF_SETGET_C16_SINT32 = 33, | ||||
| 	TIFF_SETGET_C16_UINT64 = 34, | ||||
| 	TIFF_SETGET_C16_SINT64 = 35, | ||||
| 	TIFF_SETGET_C16_FLOAT = 36, | ||||
| 	TIFF_SETGET_C16_DOUBLE = 37, | ||||
| 	TIFF_SETGET_C16_IFD8 = 38, | ||||
| 	TIFF_SETGET_C32_ASCII = 39, | ||||
| 	TIFF_SETGET_C32_UINT8 = 40, | ||||
| 	TIFF_SETGET_C32_SINT8 = 41, | ||||
| 	TIFF_SETGET_C32_UINT16 = 42, | ||||
| 	TIFF_SETGET_C32_SINT16 = 43, | ||||
| 	TIFF_SETGET_C32_UINT32 = 44, | ||||
| 	TIFF_SETGET_C32_SINT32 = 45, | ||||
| 	TIFF_SETGET_C32_UINT64 = 46, | ||||
| 	TIFF_SETGET_C32_SINT64 = 47, | ||||
| 	TIFF_SETGET_C32_FLOAT = 48, | ||||
| 	TIFF_SETGET_C32_DOUBLE = 49, | ||||
| 	TIFF_SETGET_C32_IFD8 = 50, | ||||
| 	TIFF_SETGET_OTHER = 51 | ||||
| } TIFFSetGetFieldType; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| extern const TIFFFieldArray* _TIFFGetFields(void); | ||||
| extern const TIFFFieldArray* _TIFFGetExifFields(void); | ||||
| extern void _TIFFSetupFields(TIFF* tif, const TIFFFieldArray* infoarray); | ||||
| extern void _TIFFPrintFieldInfo(TIFF*, FILE*); | ||||
|  | ||||
| extern int _TIFFFillStriles(TIFF*);         | ||||
|  | ||||
| typedef enum { | ||||
| 	tfiatImage, | ||||
| 	tfiatExif, | ||||
| 	tfiatOther | ||||
| } TIFFFieldArrayType; | ||||
|  | ||||
| struct _TIFFFieldArray { | ||||
| 	TIFFFieldArrayType type;    /* array type, will be used to determine if IFD is image and such */ | ||||
| 	uint32 allocated_size;      /* 0 if array is constant, other if modified by future definition extension support */ | ||||
| 	uint32 count;               /* number of elements in fields array */ | ||||
| 	TIFFField* fields;          /* actual field info */ | ||||
| }; | ||||
|  | ||||
| struct _TIFFField { | ||||
| 	uint32 field_tag;                       /* field's tag */ | ||||
| 	short field_readcount;                  /* read count/TIFF_VARIABLE/TIFF_SPP */ | ||||
| 	short field_writecount;                 /* write count/TIFF_VARIABLE */ | ||||
| 	TIFFDataType field_type;                /* type of associated data */ | ||||
| 	uint32 reserved;                        /* reserved for future extension */ | ||||
| 	TIFFSetGetFieldType set_field_type;     /* type to be passed to TIFFSetField */ | ||||
| 	TIFFSetGetFieldType get_field_type;     /* type to be passed to TIFFGetField */ | ||||
| 	unsigned short field_bit;               /* bit in fieldsset bit vector */ | ||||
| 	unsigned char field_oktochange;         /* if true, can change while writing */ | ||||
| 	unsigned char field_passcount;          /* if true, pass dir count on set */ | ||||
| 	char* field_name;                       /* ASCII name */ | ||||
| 	TIFFFieldArray* field_subfields;        /* if field points to child ifds, child ifd field definition array */ | ||||
| }; | ||||
|  | ||||
| extern int _TIFFMergeFields(TIFF*, const TIFFField[], uint32); | ||||
| extern const TIFFField* _TIFFFindOrRegisterField(TIFF *, uint32, TIFFDataType); | ||||
| extern  TIFFField* _TIFFCreateAnonField(TIFF *, uint32, TIFFDataType); | ||||
| extern int _TIFFCheckFieldIsValidForCodec(TIFF *tif, ttag_t tag); | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
| #endif /* _TIFFDIR_ */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1070
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dirinfo.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1070
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dirinfo.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5875
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dirread.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5875
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dirread.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3027
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dirwrite.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3027
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dirwrite.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										143
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dumpmode.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_dumpmode.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,143 @@ | ||||
| /* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dumpmode.c,v 1.15 2015-12-12 18:04:26 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * "Null" Compression Algorithm Support. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| static int | ||||
| DumpFixupTags(TIFF* tif) | ||||
| { | ||||
| 	(void) tif; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode a hunk of pixels. | ||||
|  */ | ||||
| static int | ||||
| DumpModeEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	(void) s; | ||||
| 	while (cc > 0) { | ||||
| 		tmsize_t n; | ||||
|  | ||||
| 		n = cc; | ||||
| 		if (tif->tif_rawcc + n > tif->tif_rawdatasize) | ||||
| 			n = tif->tif_rawdatasize - tif->tif_rawcc; | ||||
|  | ||||
| 		assert( n > 0 ); | ||||
|  | ||||
| 		/* | ||||
| 		 * Avoid copy if client has setup raw | ||||
| 		 * data buffer to avoid extra copy. | ||||
| 		 */ | ||||
| 		if (tif->tif_rawcp != pp) | ||||
| 			_TIFFmemcpy(tif->tif_rawcp, pp, n); | ||||
| 		tif->tif_rawcp += n; | ||||
| 		tif->tif_rawcc += n; | ||||
| 		pp += n; | ||||
| 		cc -= n; | ||||
| 		if (tif->tif_rawcc >= tif->tif_rawdatasize && | ||||
| 		    !TIFFFlushData1(tif)) | ||||
| 			return (0); | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Decode a hunk of pixels. | ||||
|  */ | ||||
| static int | ||||
| DumpModeDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "DumpModeDecode"; | ||||
| 	(void) s; | ||||
| 	if (tif->tif_rawcc < cc) { | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| "Not enough data for scanline %lu, expected a request for at most %I64d bytes, got a request for %I64d bytes", | ||||
| 		             (unsigned long) tif->tif_row, | ||||
| 		             (signed __int64) tif->tif_rawcc, | ||||
| 		             (signed __int64) cc); | ||||
| #else | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| "Not enough data for scanline %lu, expected a request for at most %lld bytes, got a request for %lld bytes", | ||||
| 		             (unsigned long) tif->tif_row, | ||||
| 		             (signed long long) tif->tif_rawcc, | ||||
| 		             (signed long long) cc); | ||||
| #endif | ||||
| 		return (0); | ||||
| 	} | ||||
| 	/* | ||||
| 	 * Avoid copy if client has setup raw | ||||
| 	 * data buffer to avoid extra copy. | ||||
| 	 */ | ||||
| 	if (tif->tif_rawcp != buf) | ||||
| 		_TIFFmemcpy(buf, tif->tif_rawcp, cc); | ||||
| 	tif->tif_rawcp += cc; | ||||
| 	tif->tif_rawcc -= cc;   | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Seek forwards nrows in the current strip. | ||||
|  */ | ||||
| static int | ||||
| DumpModeSeek(TIFF* tif, uint32 nrows) | ||||
| { | ||||
| 	tif->tif_rawcp += nrows * tif->tif_scanlinesize; | ||||
| 	tif->tif_rawcc -= nrows * tif->tif_scanlinesize; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Initialize dump mode. | ||||
|  */ | ||||
| int | ||||
| TIFFInitDumpMode(TIFF* tif, int scheme) | ||||
| { | ||||
| 	(void) scheme; | ||||
| 	tif->tif_fixuptags = DumpFixupTags;   | ||||
| 	tif->tif_decoderow = DumpModeDecode; | ||||
| 	tif->tif_decodestrip = DumpModeDecode; | ||||
| 	tif->tif_decodetile = DumpModeDecode; | ||||
| 	tif->tif_encoderow = DumpModeEncode; | ||||
| 	tif->tif_encodestrip = DumpModeEncode; | ||||
| 	tif->tif_encodetile = DumpModeEncode;  | ||||
| 	tif->tif_seek = DumpModeSeek; | ||||
| 	return (1); | ||||
| } | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										88
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_error.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_error.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,88 @@ | ||||
| /* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_error.c,v 1.6 2017-07-04 12:54:42 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| TIFFErrorHandlerExt _TIFFerrorHandlerExt = NULL; | ||||
|  | ||||
| TIFFErrorHandler | ||||
| TIFFSetErrorHandler(TIFFErrorHandler handler) | ||||
| { | ||||
| 	TIFFErrorHandler prev = _TIFFerrorHandler; | ||||
| 	_TIFFerrorHandler = handler; | ||||
| 	return (prev); | ||||
| } | ||||
|  | ||||
| TIFFErrorHandlerExt | ||||
| TIFFSetErrorHandlerExt(TIFFErrorHandlerExt handler) | ||||
| { | ||||
| 	TIFFErrorHandlerExt prev = _TIFFerrorHandlerExt; | ||||
| 	_TIFFerrorHandlerExt = handler; | ||||
| 	return (prev); | ||||
| } | ||||
|  | ||||
| void | ||||
| TIFFError(const char* module, const char* fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 	if (_TIFFerrorHandler) { | ||||
| 		va_start(ap, fmt);	 | ||||
| 		(*_TIFFerrorHandler)(module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| 	if (_TIFFerrorHandlerExt) { | ||||
| 		va_start(ap, fmt); | ||||
| 		(*_TIFFerrorHandlerExt)(0, module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
| TIFFErrorExt(thandle_t fd, const char* module, const char* fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 	if (_TIFFerrorHandler) { | ||||
| 		va_start(ap, fmt); | ||||
| 		(*_TIFFerrorHandler)(module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| 	if (_TIFFerrorHandlerExt) { | ||||
| 		va_start(ap, fmt); | ||||
| 		(*_TIFFerrorHandlerExt)(fd, module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										118
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_extension.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_extension.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,118 @@ | ||||
| /* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_extension.c,v 1.8 2015-12-06 11:13:43 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Various routines support external extension of the tag set, and other | ||||
|  * application extension capabilities.  | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| int TIFFGetTagListCount( TIFF *tif ) | ||||
|  | ||||
| { | ||||
|     TIFFDirectory* td = &tif->tif_dir; | ||||
|      | ||||
|     return td->td_customValueCount; | ||||
| } | ||||
|  | ||||
| uint32 TIFFGetTagListEntry( TIFF *tif, int tag_index ) | ||||
|  | ||||
| { | ||||
|     TIFFDirectory* td = &tif->tif_dir; | ||||
|  | ||||
|     if( tag_index < 0 || tag_index >= td->td_customValueCount ) | ||||
|         return (uint32)(-1); | ||||
|     else | ||||
|         return td->td_customValues[tag_index].info->field_tag; | ||||
| } | ||||
|  | ||||
| /* | ||||
| ** This provides read/write access to the TIFFTagMethods within the TIFF | ||||
| ** structure to application code without giving access to the private | ||||
| ** TIFF structure. | ||||
| */ | ||||
| TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif ) | ||||
|  | ||||
| { | ||||
|     return &(tif->tif_tagmethods); | ||||
| } | ||||
|  | ||||
| void *TIFFGetClientInfo( TIFF *tif, const char *name ) | ||||
|  | ||||
| { | ||||
|     TIFFClientInfoLink *psLink = tif->tif_clientinfo; | ||||
|  | ||||
|     while( psLink != NULL && strcmp(psLink->name,name) != 0 ) | ||||
|         psLink = psLink->next; | ||||
|  | ||||
|     if( psLink != NULL ) | ||||
|         return psLink->data; | ||||
|     else | ||||
|         return NULL; | ||||
| } | ||||
|  | ||||
| void TIFFSetClientInfo( TIFF *tif, void *data, const char *name ) | ||||
|  | ||||
| { | ||||
|     TIFFClientInfoLink *psLink = tif->tif_clientinfo; | ||||
|  | ||||
|     /* | ||||
|     ** Do we have an existing link with this name?  If so, just | ||||
|     ** set it. | ||||
|     */ | ||||
|     while( psLink != NULL && strcmp(psLink->name,name) != 0 ) | ||||
|         psLink = psLink->next; | ||||
|  | ||||
|     if( psLink != NULL ) | ||||
|     { | ||||
|         psLink->data = data; | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     /* | ||||
|     ** Create a new link. | ||||
|     */ | ||||
|  | ||||
|     psLink = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink)); | ||||
|     assert (psLink != NULL); | ||||
|     psLink->next = tif->tif_clientinfo; | ||||
|     psLink->name = (char *) _TIFFmalloc((tmsize_t)(strlen(name)+1)); | ||||
|     assert (psLink->name != NULL); | ||||
|     strcpy(psLink->name, name); | ||||
|     psLink->data = data; | ||||
|  | ||||
|     tif->tif_clientinfo = psLink; | ||||
| } | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1648
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_fax3.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1648
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_fax3.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										540
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_fax3.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										540
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_fax3.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,540 @@ | ||||
| /* $Id: tif_fax3.h,v 1.13 2016-12-14 18:36:27 faxguy Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1990-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _FAX3_ | ||||
| #define	_FAX3_ | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * CCITT Group 3 (T.4) and Group 4 (T.6) Decompression Support. | ||||
|  * | ||||
|  * Decoder support is derived, with permission, from the code | ||||
|  * in Frank Cringle's viewfax program; | ||||
|  *      Copyright (C) 1990, 1995  Frank D. Cringle. | ||||
|  */ | ||||
| #include "tiff.h" | ||||
|  | ||||
| /* | ||||
|  * To override the default routine used to image decoded | ||||
|  * spans one can use the pseudo tag TIFFTAG_FAXFILLFUNC. | ||||
|  * The routine must have the type signature given below; | ||||
|  * for example: | ||||
|  * | ||||
|  * fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx) | ||||
|  * | ||||
|  * where buf is place to set the bits, runs is the array of b&w run | ||||
|  * lengths (white then black), erun is the last run in the array, and | ||||
|  * lastx is the width of the row in pixels.  Fill routines can assume | ||||
|  * the run array has room for at least lastx runs and can overwrite | ||||
|  * data in the run array as needed (e.g. to append zero runs to bring | ||||
|  * the count up to a nice multiple). | ||||
|  */ | ||||
| typedef void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32); | ||||
|  | ||||
| /* | ||||
|  * The default run filler; made external for other decoders. | ||||
|  */ | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
| extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32); | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* finite state machine codes */ | ||||
| #define S_Null     0 | ||||
| #define S_Pass     1 | ||||
| #define S_Horiz    2 | ||||
| #define S_V0       3 | ||||
| #define S_VR       4 | ||||
| #define S_VL       5 | ||||
| #define S_Ext      6 | ||||
| #define S_TermW    7 | ||||
| #define S_TermB    8 | ||||
| #define S_MakeUpW  9 | ||||
| #define S_MakeUpB  10 | ||||
| #define S_MakeUp   11 | ||||
| #define S_EOL      12 | ||||
|  | ||||
| /* WARNING: do not change the layout of this structure as the HylaFAX software */ | ||||
| /* really depends on it. See http://bugzilla.maptools.org/show_bug.cgi?id=2636 */ | ||||
| typedef struct {                /* state table entry */ | ||||
| 	unsigned char State;    /* see above */ | ||||
| 	unsigned char Width;    /* width of code in bits */ | ||||
| 	uint32 Param;           /* unsigned 32-bit run length in bits (holds on 16 bit actually, but cannot be changed. See above warning) */ | ||||
| } TIFFFaxTabEnt; | ||||
|  | ||||
| extern const TIFFFaxTabEnt TIFFFaxMainTable[]; | ||||
| extern const TIFFFaxTabEnt TIFFFaxWhiteTable[]; | ||||
| extern const TIFFFaxTabEnt TIFFFaxBlackTable[]; | ||||
|  | ||||
| /* | ||||
|  * The following macros define the majority of the G3/G4 decoder | ||||
|  * algorithm using the state tables defined elsewhere.  To build | ||||
|  * a decoder you need some setup code and some glue code. Note | ||||
|  * that you may also need/want to change the way the NeedBits* | ||||
|  * macros get input data if, for example, you know the data to be | ||||
|  * decoded is properly aligned and oriented (doing so before running | ||||
|  * the decoder can be a big performance win). | ||||
|  * | ||||
|  * Consult the decoder in the TIFF library for an idea of what you | ||||
|  * need to define and setup to make use of these definitions. | ||||
|  * | ||||
|  * NB: to enable a debugging version of these macros define FAX3_DEBUG | ||||
|  *     before including this file.  Trace output goes to stdout. | ||||
|  */ | ||||
|  | ||||
| #ifndef EndOfData | ||||
| #define EndOfData()	(cp >= ep) | ||||
| #endif | ||||
| /* | ||||
|  * Need <=8 or <=16 bits of input data.  Unlike viewfax we | ||||
|  * cannot use/assume a word-aligned, properly bit swizzled | ||||
|  * input data set because data may come from an arbitrarily | ||||
|  * aligned, read-only source such as a memory-mapped file. | ||||
|  * Note also that the viewfax decoder does not check for | ||||
|  * running off the end of the input data buffer.  This is | ||||
|  * possible for G3-encoded data because it prescans the input | ||||
|  * data to count EOL markers, but can cause problems for G4 | ||||
|  * data.  In any event, we don't prescan and must watch for | ||||
|  * running out of data since we can't permit the library to | ||||
|  * scan past the end of the input data buffer. | ||||
|  * | ||||
|  * Finally, note that we must handle remaindered data at the end | ||||
|  * of a strip specially.  The coder asks for a fixed number of | ||||
|  * bits when scanning for the next code.  This may be more bits | ||||
|  * than are actually present in the data stream.  If we appear | ||||
|  * to run out of data but still have some number of valid bits | ||||
|  * remaining then we makeup the requested amount with zeros and | ||||
|  * return successfully.  If the returned data is incorrect then | ||||
|  * we should be called again and get a premature EOF error; | ||||
|  * otherwise we should get the right answer. | ||||
|  */ | ||||
| #ifndef NeedBits8 | ||||
| #define NeedBits8(n,eoflab) do {					\ | ||||
|     if (BitsAvail < (n)) {						\ | ||||
| 	if (EndOfData()) {						\ | ||||
| 	    if (BitsAvail == 0)			/* no valid bits */	\ | ||||
| 		goto eoflab;						\ | ||||
| 	    BitsAvail = (n);			/* pad with zeros */	\ | ||||
| 	} else {							\ | ||||
| 	    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;		\ | ||||
| 	    BitsAvail += 8;						\ | ||||
| 	}								\ | ||||
|     }									\ | ||||
| } while (0) | ||||
| #endif | ||||
| #ifndef NeedBits16 | ||||
| #define NeedBits16(n,eoflab) do {					\ | ||||
|     if (BitsAvail < (n)) {						\ | ||||
| 	if (EndOfData()) {						\ | ||||
| 	    if (BitsAvail == 0)			/* no valid bits */	\ | ||||
| 		goto eoflab;						\ | ||||
| 	    BitsAvail = (n);			/* pad with zeros */	\ | ||||
| 	} else {							\ | ||||
| 	    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;		\ | ||||
| 	    if ((BitsAvail += 8) < (n)) {				\ | ||||
| 		if (EndOfData()) {					\ | ||||
| 		    /* NB: we know BitsAvail is non-zero here */	\ | ||||
| 		    BitsAvail = (n);		/* pad with zeros */	\ | ||||
| 		} else {						\ | ||||
| 		    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;	\ | ||||
| 		    BitsAvail += 8;					\ | ||||
| 		}							\ | ||||
| 	    }								\ | ||||
| 	}								\ | ||||
|     }									\ | ||||
| } while (0) | ||||
| #endif | ||||
| #define GetBits(n)	(BitAcc & ((1<<(n))-1)) | ||||
| #define ClrBits(n) do {							\ | ||||
|     BitsAvail -= (n);							\ | ||||
|     BitAcc >>= (n);							\ | ||||
| } while (0) | ||||
|  | ||||
| #ifdef FAX3_DEBUG | ||||
| static const char* StateNames[] = { | ||||
|     "Null   ", | ||||
|     "Pass   ", | ||||
|     "Horiz  ", | ||||
|     "V0     ", | ||||
|     "VR     ", | ||||
|     "VL     ", | ||||
|     "Ext    ", | ||||
|     "TermW  ", | ||||
|     "TermB  ", | ||||
|     "MakeUpW", | ||||
|     "MakeUpB", | ||||
|     "MakeUp ", | ||||
|     "EOL    ", | ||||
| }; | ||||
| #define DEBUG_SHOW putchar(BitAcc & (1 << t) ? '1' : '0') | ||||
| #define LOOKUP8(wid,tab,eoflab) do {					\ | ||||
|     int t;								\ | ||||
|     NeedBits8(wid,eoflab);						\ | ||||
|     TabEnt = tab + GetBits(wid);					\ | ||||
|     printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail,		\ | ||||
| 	   StateNames[TabEnt->State], TabEnt->Param);			\ | ||||
|     for (t = 0; t < TabEnt->Width; t++)					\ | ||||
| 	DEBUG_SHOW;							\ | ||||
|     putchar('\n');							\ | ||||
|     fflush(stdout);							\ | ||||
|     ClrBits(TabEnt->Width);						\ | ||||
| } while (0) | ||||
| #define LOOKUP16(wid,tab,eoflab) do {					\ | ||||
|     int t;								\ | ||||
|     NeedBits16(wid,eoflab);						\ | ||||
|     TabEnt = tab + GetBits(wid);					\ | ||||
|     printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail,		\ | ||||
| 	   StateNames[TabEnt->State], TabEnt->Param);			\ | ||||
|     for (t = 0; t < TabEnt->Width; t++)					\ | ||||
| 	DEBUG_SHOW;							\ | ||||
|     putchar('\n');							\ | ||||
|     fflush(stdout);							\ | ||||
|     ClrBits(TabEnt->Width);						\ | ||||
| } while (0) | ||||
|  | ||||
| #define SETVALUE(x) do {							\ | ||||
|     *pa++ = RunLength + (x);						\ | ||||
|     printf("SETVALUE: %d\t%d\n", RunLength + (x), a0);			\ | ||||
|     a0 += x;								\ | ||||
|     RunLength = 0;							\ | ||||
| } while (0) | ||||
| #else | ||||
| #define LOOKUP8(wid,tab,eoflab) do {					\ | ||||
|     NeedBits8(wid,eoflab);						\ | ||||
|     TabEnt = tab + GetBits(wid);					\ | ||||
|     ClrBits(TabEnt->Width);						\ | ||||
| } while (0) | ||||
| #define LOOKUP16(wid,tab,eoflab) do {					\ | ||||
|     NeedBits16(wid,eoflab);						\ | ||||
|     TabEnt = tab + GetBits(wid);					\ | ||||
|     ClrBits(TabEnt->Width);						\ | ||||
| } while (0) | ||||
|  | ||||
| /* | ||||
|  * Append a run to the run length array for the | ||||
|  * current row and reset decoding state. | ||||
|  */ | ||||
| #define SETVALUE(x) do {							\ | ||||
|     *pa++ = RunLength + (x);						\ | ||||
|     a0 += (x);								\ | ||||
|     RunLength = 0;							\ | ||||
| } while (0) | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Synchronize input decoding at the start of each | ||||
|  * row by scanning for an EOL (if appropriate) and | ||||
|  * skipping any trash data that might be present | ||||
|  * after a decoding error.  Note that the decoding | ||||
|  * done elsewhere that recognizes an EOL only consumes | ||||
|  * 11 consecutive zero bits.  This means that if EOLcnt | ||||
|  * is non-zero then we still need to scan for the final flag | ||||
|  * bit that is part of the EOL code. | ||||
|  */ | ||||
| #define	SYNC_EOL(eoflab) do {						\ | ||||
|     if (EOLcnt == 0) {							\ | ||||
| 	for (;;) {							\ | ||||
| 	    NeedBits16(11,eoflab);					\ | ||||
| 	    if (GetBits(11) == 0)					\ | ||||
| 		break;							\ | ||||
| 	    ClrBits(1);							\ | ||||
| 	}								\ | ||||
|     }									\ | ||||
|     for (;;) {								\ | ||||
| 	NeedBits8(8,eoflab);						\ | ||||
| 	if (GetBits(8))							\ | ||||
| 	    break;							\ | ||||
| 	ClrBits(8);							\ | ||||
|     }									\ | ||||
|     while (GetBits(1) == 0)						\ | ||||
| 	ClrBits(1);							\ | ||||
|     ClrBits(1);				/* EOL bit */			\ | ||||
|     EOLcnt = 0;				/* reset EOL counter/flag */	\ | ||||
| } while (0) | ||||
|  | ||||
| /* | ||||
|  * Cleanup the array of runs after decoding a row. | ||||
|  * We adjust final runs to insure the user buffer is not | ||||
|  * overwritten and/or undecoded area is white filled. | ||||
|  */ | ||||
| #define	CLEANUP_RUNS() do {						\ | ||||
|     if (RunLength)							\ | ||||
| 	SETVALUE(0);							\ | ||||
|     if (a0 != lastx) {							\ | ||||
| 	badlength(a0, lastx);						\ | ||||
| 	while (a0 > lastx && pa > thisrun)				\ | ||||
| 	    a0 -= *--pa;						\ | ||||
| 	if (a0 < lastx) {						\ | ||||
| 	    if (a0 < 0)							\ | ||||
| 		a0 = 0;							\ | ||||
| 	    if ((pa-thisrun)&1)						\ | ||||
| 		SETVALUE(0);						\ | ||||
| 	    SETVALUE(lastx - a0);						\ | ||||
| 	} else if (a0 > lastx) {					\ | ||||
| 	    SETVALUE(lastx);						\ | ||||
| 	    SETVALUE(0);							\ | ||||
| 	}								\ | ||||
|     }									\ | ||||
| } while (0) | ||||
|  | ||||
| /* | ||||
|  * Decode a line of 1D-encoded data. | ||||
|  * | ||||
|  * The line expanders are written as macros so that they can be reused | ||||
|  * but still have direct access to the local variables of the "calling" | ||||
|  * function. | ||||
|  * | ||||
|  * Note that unlike the original version we have to explicitly test for | ||||
|  * a0 >= lastx after each black/white run is decoded.  This is because | ||||
|  * the original code depended on the input data being zero-padded to | ||||
|  * insure the decoder recognized an EOL before running out of data. | ||||
|  */ | ||||
| #define EXPAND1D(eoflab) do {						\ | ||||
|     for (;;) {								\ | ||||
| 	for (;;) {							\ | ||||
| 	    LOOKUP16(12, TIFFFaxWhiteTable, eof1d);			\ | ||||
| 	    switch (TabEnt->State) {					\ | ||||
| 	    case S_EOL:							\ | ||||
| 		EOLcnt = 1;						\ | ||||
| 		goto done1d;						\ | ||||
| 	    case S_TermW:						\ | ||||
| 		SETVALUE(TabEnt->Param);					\ | ||||
| 		goto doneWhite1d;					\ | ||||
| 	    case S_MakeUpW:						\ | ||||
| 	    case S_MakeUp:						\ | ||||
| 		a0 += TabEnt->Param;					\ | ||||
| 		RunLength += TabEnt->Param;				\ | ||||
| 		break;							\ | ||||
| 	    default:							\ | ||||
| 		unexpected("WhiteTable", a0);				\ | ||||
| 		goto done1d;						\ | ||||
| 	    }								\ | ||||
| 	}								\ | ||||
|     doneWhite1d:							\ | ||||
| 	if (a0 >= lastx)						\ | ||||
| 	    goto done1d;						\ | ||||
| 	for (;;) {							\ | ||||
| 	    LOOKUP16(13, TIFFFaxBlackTable, eof1d);			\ | ||||
| 	    switch (TabEnt->State) {					\ | ||||
| 	    case S_EOL:							\ | ||||
| 		EOLcnt = 1;						\ | ||||
| 		goto done1d;						\ | ||||
| 	    case S_TermB:						\ | ||||
| 		SETVALUE(TabEnt->Param);					\ | ||||
| 		goto doneBlack1d;					\ | ||||
| 	    case S_MakeUpB:						\ | ||||
| 	    case S_MakeUp:						\ | ||||
| 		a0 += TabEnt->Param;					\ | ||||
| 		RunLength += TabEnt->Param;				\ | ||||
| 		break;							\ | ||||
| 	    default:							\ | ||||
| 		unexpected("BlackTable", a0);				\ | ||||
| 		goto done1d;						\ | ||||
| 	    }								\ | ||||
| 	}								\ | ||||
|     doneBlack1d:							\ | ||||
| 	if (a0 >= lastx)						\ | ||||
| 	    goto done1d;						\ | ||||
|         if( *(pa-1) == 0 && *(pa-2) == 0 )				\ | ||||
|             pa -= 2;                                                    \ | ||||
|     }									\ | ||||
| eof1d:									\ | ||||
|     prematureEOF(a0);							\ | ||||
|     CLEANUP_RUNS();							\ | ||||
|     goto eoflab;							\ | ||||
| done1d:									\ | ||||
|     CLEANUP_RUNS();							\ | ||||
| } while (0) | ||||
|  | ||||
| /* | ||||
|  * Update the value of b1 using the array | ||||
|  * of runs for the reference line. | ||||
|  */ | ||||
| #define CHECK_b1 do {							\ | ||||
|     if (pa != thisrun) while (b1 <= a0 && b1 < lastx) {			\ | ||||
| 	b1 += pb[0] + pb[1];						\ | ||||
| 	pb += 2;							\ | ||||
|     }									\ | ||||
| } while (0) | ||||
|  | ||||
| /* | ||||
|  * Expand a row of 2D-encoded data. | ||||
|  */ | ||||
| #define EXPAND2D(eoflab) do {						\ | ||||
|     while (a0 < lastx) {						\ | ||||
| 	LOOKUP8(7, TIFFFaxMainTable, eof2d);				\ | ||||
| 	switch (TabEnt->State) {					\ | ||||
| 	case S_Pass:							\ | ||||
| 	    CHECK_b1;							\ | ||||
| 	    b1 += *pb++;						\ | ||||
| 	    RunLength += b1 - a0;					\ | ||||
| 	    a0 = b1;							\ | ||||
| 	    b1 += *pb++;						\ | ||||
| 	    break;							\ | ||||
| 	case S_Horiz:							\ | ||||
| 	    if ((pa-thisrun)&1) {					\ | ||||
| 		for (;;) {	/* black first */			\ | ||||
| 		    LOOKUP16(13, TIFFFaxBlackTable, eof2d);		\ | ||||
| 		    switch (TabEnt->State) {				\ | ||||
| 		    case S_TermB:					\ | ||||
| 			SETVALUE(TabEnt->Param);				\ | ||||
| 			goto doneWhite2da;				\ | ||||
| 		    case S_MakeUpB:					\ | ||||
| 		    case S_MakeUp:					\ | ||||
| 			a0 += TabEnt->Param;				\ | ||||
| 			RunLength += TabEnt->Param;			\ | ||||
| 			break;						\ | ||||
| 		    default:						\ | ||||
| 			goto badBlack2d;				\ | ||||
| 		    }							\ | ||||
| 		}							\ | ||||
| 	    doneWhite2da:;						\ | ||||
| 		for (;;) {	/* then white */			\ | ||||
| 		    LOOKUP16(12, TIFFFaxWhiteTable, eof2d);		\ | ||||
| 		    switch (TabEnt->State) {				\ | ||||
| 		    case S_TermW:					\ | ||||
| 			SETVALUE(TabEnt->Param);				\ | ||||
| 			goto doneBlack2da;				\ | ||||
| 		    case S_MakeUpW:					\ | ||||
| 		    case S_MakeUp:					\ | ||||
| 			a0 += TabEnt->Param;				\ | ||||
| 			RunLength += TabEnt->Param;			\ | ||||
| 			break;						\ | ||||
| 		    default:						\ | ||||
| 			goto badWhite2d;				\ | ||||
| 		    }							\ | ||||
| 		}							\ | ||||
| 	    doneBlack2da:;						\ | ||||
| 	    } else {							\ | ||||
| 		for (;;) {	/* white first */			\ | ||||
| 		    LOOKUP16(12, TIFFFaxWhiteTable, eof2d);		\ | ||||
| 		    switch (TabEnt->State) {				\ | ||||
| 		    case S_TermW:					\ | ||||
| 			SETVALUE(TabEnt->Param);				\ | ||||
| 			goto doneWhite2db;				\ | ||||
| 		    case S_MakeUpW:					\ | ||||
| 		    case S_MakeUp:					\ | ||||
| 			a0 += TabEnt->Param;				\ | ||||
| 			RunLength += TabEnt->Param;			\ | ||||
| 			break;						\ | ||||
| 		    default:						\ | ||||
| 			goto badWhite2d;				\ | ||||
| 		    }							\ | ||||
| 		}							\ | ||||
| 	    doneWhite2db:;						\ | ||||
| 		for (;;) {	/* then black */			\ | ||||
| 		    LOOKUP16(13, TIFFFaxBlackTable, eof2d);		\ | ||||
| 		    switch (TabEnt->State) {				\ | ||||
| 		    case S_TermB:					\ | ||||
| 			SETVALUE(TabEnt->Param);				\ | ||||
| 			goto doneBlack2db;				\ | ||||
| 		    case S_MakeUpB:					\ | ||||
| 		    case S_MakeUp:					\ | ||||
| 			a0 += TabEnt->Param;				\ | ||||
| 			RunLength += TabEnt->Param;			\ | ||||
| 			break;						\ | ||||
| 		    default:						\ | ||||
| 			goto badBlack2d;				\ | ||||
| 		    }							\ | ||||
| 		}							\ | ||||
| 	    doneBlack2db:;						\ | ||||
| 	    }								\ | ||||
| 	    CHECK_b1;							\ | ||||
| 	    break;							\ | ||||
| 	case S_V0:							\ | ||||
| 	    CHECK_b1;							\ | ||||
| 	    SETVALUE(b1 - a0);						\ | ||||
| 	    b1 += *pb++;						\ | ||||
| 	    break;							\ | ||||
| 	case S_VR:							\ | ||||
| 	    CHECK_b1;							\ | ||||
| 	    SETVALUE(b1 - a0 + TabEnt->Param);				\ | ||||
| 	    b1 += *pb++;						\ | ||||
| 	    break;							\ | ||||
| 	case S_VL:							\ | ||||
| 	    CHECK_b1;							\ | ||||
| 	    if (b1 <= (int) (a0 + TabEnt->Param)) {			\ | ||||
| 		if (b1 < (int) (a0 + TabEnt->Param) || pa != thisrun) {	\ | ||||
| 		    unexpected("VL", a0);				\ | ||||
| 		    goto eol2d;						\ | ||||
| 		}							\ | ||||
| 	    }								\ | ||||
| 	    SETVALUE(b1 - a0 - TabEnt->Param);				\ | ||||
| 	    b1 -= *--pb;						\ | ||||
| 	    break;							\ | ||||
| 	case S_Ext:							\ | ||||
| 	    *pa++ = lastx - a0;						\ | ||||
| 	    extension(a0);						\ | ||||
| 	    goto eol2d;							\ | ||||
| 	case S_EOL:							\ | ||||
| 	    *pa++ = lastx - a0;						\ | ||||
| 	    NeedBits8(4,eof2d);						\ | ||||
| 	    if (GetBits(4))						\ | ||||
| 		unexpected("EOL", a0);					\ | ||||
|             ClrBits(4);                                                 \ | ||||
| 	    EOLcnt = 1;							\ | ||||
| 	    goto eol2d;							\ | ||||
| 	default:							\ | ||||
| 	badMain2d:							\ | ||||
| 	    unexpected("MainTable", a0);				\ | ||||
| 	    goto eol2d;							\ | ||||
| 	badBlack2d:							\ | ||||
| 	    unexpected("BlackTable", a0);				\ | ||||
| 	    goto eol2d;							\ | ||||
| 	badWhite2d:							\ | ||||
| 	    unexpected("WhiteTable", a0);				\ | ||||
| 	    goto eol2d;							\ | ||||
| 	eof2d:								\ | ||||
| 	    prematureEOF(a0);						\ | ||||
| 	    CLEANUP_RUNS();						\ | ||||
| 	    goto eoflab;						\ | ||||
| 	}								\ | ||||
|     }									\ | ||||
|     if (RunLength) {							\ | ||||
| 	if (RunLength + a0 < lastx) {					\ | ||||
| 	    /* expect a final V0 */					\ | ||||
| 	    NeedBits8(1,eof2d);						\ | ||||
| 	    if (!GetBits(1))						\ | ||||
| 		goto badMain2d;						\ | ||||
| 	    ClrBits(1);							\ | ||||
| 	}								\ | ||||
| 	SETVALUE(0);							\ | ||||
|     }									\ | ||||
| eol2d:									\ | ||||
|     CLEANUP_RUNS();							\ | ||||
| } while (0) | ||||
| #endif /* _FAX3_ */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1260
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_fax3sm.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1260
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_fax3sm.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										118
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_flush.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_flush.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,118 @@ | ||||
| /* $Id: tif_flush.c,v 1.9 2010-03-31 06:40:10 fwarmerdam Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| int | ||||
| TIFFFlush(TIFF* tif) | ||||
| { | ||||
|     if( tif->tif_mode == O_RDONLY ) | ||||
|         return 1; | ||||
|  | ||||
|     if (!TIFFFlushData(tif)) | ||||
|         return (0); | ||||
|                  | ||||
|     /* In update (r+) mode we try to detect the case where  | ||||
|        only the strip/tile map has been altered, and we try to  | ||||
|        rewrite only that portion of the directory without  | ||||
|        making any other changes */ | ||||
|                  | ||||
|     if( (tif->tif_flags & TIFF_DIRTYSTRIP) | ||||
|         && !(tif->tif_flags & TIFF_DIRTYDIRECT)  | ||||
|         && tif->tif_mode == O_RDWR ) | ||||
|     { | ||||
|         uint64  *offsets=NULL, *sizes=NULL; | ||||
|  | ||||
|         if( TIFFIsTiled(tif) ) | ||||
|         { | ||||
|             if( TIFFGetField( tif, TIFFTAG_TILEOFFSETS, &offsets )  | ||||
|                 && TIFFGetField( tif, TIFFTAG_TILEBYTECOUNTS, &sizes )  | ||||
|                 && _TIFFRewriteField( tif, TIFFTAG_TILEOFFSETS, TIFF_LONG8,  | ||||
|                                       tif->tif_dir.td_nstrips, offsets ) | ||||
|                 && _TIFFRewriteField( tif, TIFFTAG_TILEBYTECOUNTS, TIFF_LONG8,  | ||||
|                                       tif->tif_dir.td_nstrips, sizes ) ) | ||||
|             { | ||||
|                 tif->tif_flags &= ~TIFF_DIRTYSTRIP; | ||||
|                 tif->tif_flags &= ~TIFF_BEENWRITING; | ||||
|                 return 1; | ||||
|             } | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             if( TIFFGetField( tif, TIFFTAG_STRIPOFFSETS, &offsets )  | ||||
|                 && TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &sizes )  | ||||
|                 && _TIFFRewriteField( tif, TIFFTAG_STRIPOFFSETS, TIFF_LONG8,  | ||||
|                                       tif->tif_dir.td_nstrips, offsets ) | ||||
|                 && _TIFFRewriteField( tif, TIFFTAG_STRIPBYTECOUNTS, TIFF_LONG8,  | ||||
|                                       tif->tif_dir.td_nstrips, sizes ) ) | ||||
|             { | ||||
|                 tif->tif_flags &= ~TIFF_DIRTYSTRIP; | ||||
|                 tif->tif_flags &= ~TIFF_BEENWRITING; | ||||
|                 return 1; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if ((tif->tif_flags & (TIFF_DIRTYDIRECT|TIFF_DIRTYSTRIP))  | ||||
|         && !TIFFRewriteDirectory(tif)) | ||||
|         return (0); | ||||
|  | ||||
|     return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Flush buffered data to the file. | ||||
|  * | ||||
|  * Frank Warmerdam'2000: I modified this to return 1 if TIFF_BEENWRITING | ||||
|  * is not set, so that TIFFFlush() will proceed to write out the directory. | ||||
|  * The documentation says returning 1 is an error indicator, but not having | ||||
|  * been writing isn't exactly a an error.  Hopefully this doesn't cause | ||||
|  * problems for other people.  | ||||
|  */ | ||||
| int | ||||
| TIFFFlushData(TIFF* tif) | ||||
| { | ||||
| 	if ((tif->tif_flags & TIFF_BEENWRITING) == 0) | ||||
| 		return (1); | ||||
| 	if (tif->tif_flags & TIFF_POSTENCODE) { | ||||
| 		tif->tif_flags &= ~TIFF_POSTENCODE; | ||||
| 		if (!(*tif->tif_postencode)(tif)) | ||||
| 			return (0); | ||||
| 	} | ||||
| 	return (TIFFFlushData1(tif)); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										3048
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_getimage.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3048
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_getimage.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										214
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_jbig.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_jbig.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,214 @@ | ||||
| /* $Id: tif_jbig.c,v 1.16 2017-06-26 15:20:00 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * JBIG Compression Algorithm Support. | ||||
|  * Contributed by Lee Howard <faxguy@deanox.com> | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| #ifdef JBIG_SUPPORT | ||||
| #include "jbig.h" | ||||
|  | ||||
| static int JBIGSetupDecode(TIFF* tif) | ||||
| { | ||||
| 	if (TIFFNumberOfStrips(tif) != 1) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, "JBIG", "Multistrip images not supported in decoder"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int JBIGDecode(TIFF* tif, uint8* buffer, tmsize_t size, uint16 s) | ||||
| { | ||||
| 	struct jbg_dec_state decoder; | ||||
| 	int decodeStatus = 0; | ||||
| 	unsigned char* pImage = NULL; | ||||
| 	(void) size, (void) s; | ||||
|  | ||||
| 	if (isFillOrder(tif, tif->tif_dir.td_fillorder)) | ||||
| 	{ | ||||
| 		TIFFReverseBits(tif->tif_rawdata, tif->tif_rawdatasize); | ||||
| 	} | ||||
|  | ||||
| 	jbg_dec_init(&decoder); | ||||
|  | ||||
| #if defined(HAVE_JBG_NEWLEN) | ||||
| 	jbg_newlen(tif->tif_rawdata, (size_t)tif->tif_rawdatasize); | ||||
| 	/* | ||||
| 	 * I do not check the return status of jbg_newlen because even if this | ||||
| 	 * function fails it does not necessarily mean that decoding the image | ||||
| 	 * will fail.  It is generally only needed for received fax images | ||||
| 	 * that do not contain the actual length of the image in the BIE | ||||
| 	 * header.  I do not log when an error occurs because that will cause | ||||
| 	 * problems when converting JBIG encoded TIFF's to | ||||
| 	 * PostScript.  As long as the actual image length is contained in the | ||||
| 	 * BIE header jbg_dec_in should succeed. | ||||
| 	 */ | ||||
| #endif /* HAVE_JBG_NEWLEN */ | ||||
|  | ||||
| 	decodeStatus = jbg_dec_in(&decoder, (unsigned char*)tif->tif_rawdata, | ||||
| 				  (size_t)tif->tif_rawdatasize, NULL); | ||||
| 	if (JBG_EOK != decodeStatus) | ||||
| 	{ | ||||
| 		/* | ||||
| 		 * XXX: JBG_EN constant was defined in pre-2.0 releases of the | ||||
| 		 * JBIG-KIT. Since the 2.0 the error reporting functions were | ||||
| 		 * changed. We will handle both cases here. | ||||
| 		 */ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, | ||||
| 			     "JBIG", "Error (%d) decoding: %s", | ||||
| 			     decodeStatus, | ||||
| #if defined(JBG_EN) | ||||
| 			     jbg_strerror(decodeStatus, JBG_EN) | ||||
| #else | ||||
| 			     jbg_strerror(decodeStatus) | ||||
| #endif | ||||
| 			     ); | ||||
| 		jbg_dec_free(&decoder); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	pImage = jbg_dec_getimage(&decoder, 0); | ||||
| 	_TIFFmemcpy(buffer, pImage, jbg_dec_getsize(&decoder)); | ||||
| 	jbg_dec_free(&decoder); | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int JBIGSetupEncode(TIFF* tif) | ||||
| { | ||||
| 	if (TIFFNumberOfStrips(tif) != 1) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, "JBIG", "Multistrip images not supported in encoder"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int JBIGCopyEncodedData(TIFF* tif, unsigned char* pp, size_t cc, uint16 s) | ||||
| { | ||||
| 	(void) s; | ||||
| 	while (cc > 0) | ||||
| 	{ | ||||
| 		tmsize_t n = (tmsize_t)cc; | ||||
|  | ||||
| 		if (tif->tif_rawcc + n > tif->tif_rawdatasize) | ||||
| 		{ | ||||
| 			n = tif->tif_rawdatasize - tif->tif_rawcc; | ||||
| 		} | ||||
|  | ||||
| 		assert(n > 0); | ||||
| 		_TIFFmemcpy(tif->tif_rawcp, pp, n); | ||||
| 		tif->tif_rawcp += n; | ||||
| 		tif->tif_rawcc += n; | ||||
| 		pp += n; | ||||
| 		cc -= (size_t)n; | ||||
| 		if (tif->tif_rawcc >= tif->tif_rawdatasize && | ||||
| 		    !TIFFFlushData1(tif)) | ||||
| 		{ | ||||
| 			return (-1); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static void JBIGOutputBie(unsigned char* buffer, size_t len, void* userData) | ||||
| { | ||||
| 	TIFF* tif = (TIFF*)userData; | ||||
|  | ||||
| 	if (isFillOrder(tif, tif->tif_dir.td_fillorder)) | ||||
| 	{ | ||||
| 		TIFFReverseBits(buffer, (tmsize_t)len); | ||||
| 	} | ||||
|  | ||||
| 	JBIGCopyEncodedData(tif, buffer, len, 0); | ||||
| } | ||||
|  | ||||
| static int JBIGEncode(TIFF* tif, uint8* buffer, tmsize_t size, uint16 s) | ||||
| { | ||||
| 	TIFFDirectory* dir = &tif->tif_dir; | ||||
| 	struct jbg_enc_state encoder; | ||||
|  | ||||
| 	(void) size, (void) s; | ||||
|  | ||||
| 	jbg_enc_init(&encoder, | ||||
| 		     dir->td_imagewidth, | ||||
| 		     dir->td_imagelength, | ||||
| 		     1, | ||||
| 		     &buffer, | ||||
| 		     JBIGOutputBie, | ||||
| 		     tif); | ||||
| 	/* | ||||
| 	 * jbg_enc_out does the "real" encoding.  As data is encoded, | ||||
| 	 * JBIGOutputBie is called, which writes the data to the directory. | ||||
| 	 */ | ||||
| 	jbg_enc_out(&encoder); | ||||
| 	jbg_enc_free(&encoder); | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| int TIFFInitJBIG(TIFF* tif, int scheme) | ||||
| { | ||||
| 	assert(scheme == COMPRESSION_JBIG); | ||||
|  | ||||
| 	/* | ||||
| 	 * These flags are set so the JBIG Codec can control when to reverse | ||||
| 	 * bits and when not to and to allow the jbig decoder and bit reverser | ||||
| 	 * to write to memory when necessary. | ||||
| 	 */ | ||||
| 	tif->tif_flags |= TIFF_NOBITREV; | ||||
| 	tif->tif_flags &= ~TIFF_MAPPED; | ||||
|  | ||||
| 	/* Setup the function pointers for encode, decode, and cleanup. */ | ||||
| 	tif->tif_setupdecode = JBIGSetupDecode; | ||||
| 	tif->tif_decodestrip = JBIGDecode; | ||||
|  | ||||
| 	tif->tif_setupencode = JBIGSetupEncode; | ||||
| 	tif->tif_encodestrip = JBIGEncode; | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| #endif /* JBIG_SUPPORT */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										2601
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_jpeg.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2601
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_jpeg.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										69
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_jpeg_12.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_jpeg_12.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| #if defined(JPEG_DUAL_MODE_8_12) | ||||
|  | ||||
| #  define TIFFInitJPEG TIFFInitJPEG_12 | ||||
| #  define TIFFJPEGIsFullStripRequired TIFFJPEGIsFullStripRequired_12 | ||||
|  | ||||
| int | ||||
| TIFFInitJPEG_12(TIFF* tif, int scheme); | ||||
|  | ||||
| #  include LIBJPEG_12_PATH | ||||
|  | ||||
| #  include "tif_jpeg.c" | ||||
|  | ||||
| int TIFFReInitJPEG_12( TIFF *tif, int scheme, int is_encode ) | ||||
|  | ||||
| { | ||||
|     JPEGState* sp; | ||||
|  | ||||
|     assert(scheme == COMPRESSION_JPEG); | ||||
|  | ||||
|     sp = JState(tif); | ||||
|     sp->tif = tif;				/* back link */ | ||||
|  | ||||
|     /* | ||||
|      * Override parent get/set field methods. | ||||
|      */ | ||||
|     tif->tif_tagmethods.vgetfield = JPEGVGetField; /* hook for codec tags */ | ||||
|     tif->tif_tagmethods.vsetfield = JPEGVSetField; /* hook for codec tags */ | ||||
|     tif->tif_tagmethods.printdir = JPEGPrintDir;   /* hook for codec tags */ | ||||
|  | ||||
|     /* | ||||
|      * Install codec methods. | ||||
|      */ | ||||
|     tif->tif_fixuptags = JPEGFixupTags; | ||||
|     tif->tif_setupdecode = JPEGSetupDecode; | ||||
|     tif->tif_predecode = JPEGPreDecode; | ||||
|     tif->tif_decoderow = JPEGDecode; | ||||
|     tif->tif_decodestrip = JPEGDecode; | ||||
|     tif->tif_decodetile = JPEGDecode; | ||||
|     tif->tif_setupencode = JPEGSetupEncode; | ||||
|     tif->tif_preencode = JPEGPreEncode; | ||||
|     tif->tif_postencode = JPEGPostEncode; | ||||
|     tif->tif_encoderow = JPEGEncode; | ||||
|     tif->tif_encodestrip = JPEGEncode; | ||||
|     tif->tif_encodetile = JPEGEncode;   | ||||
|     tif->tif_cleanup = JPEGCleanup; | ||||
|     tif->tif_defstripsize = JPEGDefaultStripSize; | ||||
|     tif->tif_deftilesize = JPEGDefaultTileSize; | ||||
|     tif->tif_flags |= TIFF_NOBITREV;	/* no bit reversal, please */ | ||||
|  | ||||
|     sp->cinfo_initialized = FALSE; | ||||
|  | ||||
|     if( is_encode ) | ||||
|         return JPEGSetupEncode(tif); | ||||
|     else | ||||
|         return JPEGSetupDecode(tif); | ||||
| } | ||||
|  | ||||
| #endif /* defined(JPEG_DUAL_MODE_8_12) */ | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1765
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_luv.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1765
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_luv.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										495
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_lzma.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										495
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_lzma.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,495 @@ | ||||
| /* $Id: tif_lzma.c,v 1.6 2016-09-17 09:18:59 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 2010, Andrey Kiselev <dron@ak4719.spb.edu> | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
| #ifdef LZMA_SUPPORT | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * LZMA2 Compression Support | ||||
|  * | ||||
|  * You need an LZMA2 SDK to link with. See http://tukaani.org/xz/ for details. | ||||
|  * | ||||
|  * The codec is derived from ZLIB codec (tif_zip.c). | ||||
|  */ | ||||
|  | ||||
| #include "tif_predict.h" | ||||
| #include "lzma.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| /* | ||||
|  * State block for each open TIFF file using LZMA2 compression/decompression. | ||||
|  */ | ||||
| typedef struct { | ||||
| 	TIFFPredictorState predict; | ||||
|         lzma_stream	stream; | ||||
| 	lzma_filter	filters[LZMA_FILTERS_MAX + 1]; | ||||
| 	lzma_options_delta opt_delta;		/* delta filter options */ | ||||
| 	lzma_options_lzma opt_lzma;		/* LZMA2 filter options */ | ||||
| 	int             preset;			/* compression level */ | ||||
| 	lzma_check	check;			/* type of the integrity check */ | ||||
| 	int             state;			/* state flags */ | ||||
| #define LSTATE_INIT_DECODE 0x01 | ||||
| #define LSTATE_INIT_ENCODE 0x02 | ||||
|  | ||||
| 	TIFFVGetMethod  vgetparent;            /* super-class method */ | ||||
| 	TIFFVSetMethod  vsetparent;            /* super-class method */ | ||||
| } LZMAState; | ||||
|  | ||||
| #define LState(tif)             ((LZMAState*) (tif)->tif_data) | ||||
| #define DecoderState(tif)       LState(tif) | ||||
| #define EncoderState(tif)       LState(tif) | ||||
|  | ||||
| static int LZMAEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s); | ||||
| static int LZMADecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s); | ||||
|  | ||||
| static const char * | ||||
| LZMAStrerror(lzma_ret ret) | ||||
| { | ||||
| 	switch (ret) { | ||||
| 		case LZMA_OK: | ||||
| 		    return "operation completed successfully"; | ||||
| 		case LZMA_STREAM_END: | ||||
| 		    return "end of stream was reached"; | ||||
| 		case LZMA_NO_CHECK: | ||||
| 		    return "input stream has no integrity check"; | ||||
| 		case LZMA_UNSUPPORTED_CHECK: | ||||
| 		    return "cannot calculate the integrity check"; | ||||
| 		case LZMA_GET_CHECK: | ||||
| 		    return "integrity check type is now available"; | ||||
| 		case LZMA_MEM_ERROR: | ||||
| 		    return "cannot allocate memory"; | ||||
| 		case LZMA_MEMLIMIT_ERROR: | ||||
| 		    return "memory usage limit was reached"; | ||||
| 		case LZMA_FORMAT_ERROR: | ||||
| 		    return "file format not recognized"; | ||||
| 		case LZMA_OPTIONS_ERROR: | ||||
| 		    return "invalid or unsupported options"; | ||||
| 		case LZMA_DATA_ERROR: | ||||
| 		    return "data is corrupt"; | ||||
| 		case LZMA_BUF_ERROR: | ||||
| 		    return "no progress is possible (stream is truncated or corrupt)"; | ||||
| 		case LZMA_PROG_ERROR: | ||||
| 		    return "programming error"; | ||||
| 		default: | ||||
| 		    return "unidentified liblzma error"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static int | ||||
| LZMAFixupTags(TIFF* tif) | ||||
| { | ||||
| 	(void) tif; | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| LZMASetupDecode(TIFF* tif) | ||||
| { | ||||
| 	LZMAState* sp = DecoderState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
|          | ||||
|         /* if we were last encoding, terminate this mode */ | ||||
| 	if (sp->state & LSTATE_INIT_ENCODE) { | ||||
| 	    lzma_end(&sp->stream); | ||||
| 	    sp->state = 0; | ||||
| 	} | ||||
|  | ||||
| 	sp->state |= LSTATE_INIT_DECODE; | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Setup state for decoding a strip. | ||||
|  */ | ||||
| static int | ||||
| LZMAPreDecode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "LZMAPreDecode"; | ||||
| 	LZMAState* sp = DecoderState(tif); | ||||
| 	lzma_ret ret; | ||||
|  | ||||
| 	(void) s; | ||||
| 	assert(sp != NULL); | ||||
|  | ||||
| 	if( (sp->state & LSTATE_INIT_DECODE) == 0 ) | ||||
|             tif->tif_setupdecode(tif); | ||||
|  | ||||
| 	sp->stream.next_in = tif->tif_rawdata; | ||||
| 	sp->stream.avail_in = (size_t) tif->tif_rawcc; | ||||
| 	if ((tmsize_t)sp->stream.avail_in != tif->tif_rawcc) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Liblzma cannot deal with buffers this size"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| 	 * Disable memory limit when decoding. UINT64_MAX is a flag to disable | ||||
| 	 * the limit, we are passing (uint64_t)-1 which should be the same. | ||||
| 	 */ | ||||
| 	ret = lzma_stream_decoder(&sp->stream, (uint64_t)-1, 0); | ||||
| 	if (ret != LZMA_OK) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Error initializing the stream decoder, %s", | ||||
| 			     LZMAStrerror(ret)); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| LZMADecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "LZMADecode"; | ||||
| 	LZMAState* sp = DecoderState(tif); | ||||
|  | ||||
| 	(void) s; | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->state == LSTATE_INIT_DECODE); | ||||
|  | ||||
|         sp->stream.next_in = tif->tif_rawcp; | ||||
|         sp->stream.avail_in = (size_t) tif->tif_rawcc; | ||||
|  | ||||
| 	sp->stream.next_out = op; | ||||
| 	sp->stream.avail_out = (size_t) occ; | ||||
| 	if ((tmsize_t)sp->stream.avail_out != occ) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Liblzma cannot deal with buffers this size"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	do { | ||||
| 		/* | ||||
| 		 * Save the current stream state to properly recover from the | ||||
| 		 * decoding errors later. | ||||
| 		 */ | ||||
| 		const uint8_t *next_in = sp->stream.next_in; | ||||
| 		size_t avail_in = sp->stream.avail_in; | ||||
|  | ||||
| 		lzma_ret ret = lzma_code(&sp->stream, LZMA_RUN); | ||||
| 		if (ret == LZMA_STREAM_END) | ||||
| 			break; | ||||
| 		if (ret == LZMA_MEMLIMIT_ERROR) { | ||||
| 			lzma_ret r = lzma_stream_decoder(&sp->stream, | ||||
| 							 lzma_memusage(&sp->stream), 0); | ||||
| 			if (r != LZMA_OK) { | ||||
| 				TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 					     "Error initializing the stream decoder, %s", | ||||
| 					     LZMAStrerror(r)); | ||||
| 				break; | ||||
| 			} | ||||
| 			sp->stream.next_in = next_in; | ||||
| 			sp->stream.avail_in = avail_in; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (ret != LZMA_OK) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "Decoding error at scanline %lu, %s", | ||||
| 			    (unsigned long) tif->tif_row, LZMAStrerror(ret)); | ||||
| 			break; | ||||
| 		} | ||||
| 	} while (sp->stream.avail_out > 0); | ||||
| 	if (sp->stream.avail_out != 0) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 		    "Not enough data at scanline %lu (short %lu bytes)", | ||||
| 		    (unsigned long) tif->tif_row, (unsigned long) sp->stream.avail_out); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
|         tif->tif_rawcp = (uint8 *)sp->stream.next_in; /* cast away const */ | ||||
|         tif->tif_rawcc = sp->stream.avail_in; | ||||
|          | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| LZMASetupEncode(TIFF* tif) | ||||
| { | ||||
| 	LZMAState* sp = EncoderState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	if (sp->state & LSTATE_INIT_DECODE) { | ||||
| 		lzma_end(&sp->stream); | ||||
| 		sp->state = 0; | ||||
| 	} | ||||
|  | ||||
| 	sp->state |= LSTATE_INIT_ENCODE; | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Reset encoding state at the start of a strip. | ||||
|  */ | ||||
| static int | ||||
| LZMAPreEncode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "LZMAPreEncode"; | ||||
| 	LZMAState *sp = EncoderState(tif); | ||||
|  | ||||
| 	(void) s; | ||||
| 	assert(sp != NULL); | ||||
| 	if( sp->state != LSTATE_INIT_ENCODE ) | ||||
|             tif->tif_setupencode(tif); | ||||
|  | ||||
| 	sp->stream.next_out = tif->tif_rawdata; | ||||
| 	sp->stream.avail_out = (size_t)tif->tif_rawdatasize; | ||||
| 	if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Liblzma cannot deal with buffers this size"); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	return (lzma_stream_encoder(&sp->stream, sp->filters, sp->check) == LZMA_OK); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode a chunk of pixels. | ||||
|  */ | ||||
| static int | ||||
| LZMAEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "LZMAEncode"; | ||||
| 	LZMAState *sp = EncoderState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->state == LSTATE_INIT_ENCODE); | ||||
|  | ||||
| 	(void) s; | ||||
| 	sp->stream.next_in = bp; | ||||
| 	sp->stream.avail_in = (size_t) cc; | ||||
| 	if ((tmsize_t)sp->stream.avail_in != cc) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Liblzma cannot deal with buffers this size"); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	do { | ||||
| 		lzma_ret ret = lzma_code(&sp->stream, LZMA_RUN); | ||||
| 		if (ret != LZMA_OK) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 				"Encoding error at scanline %lu, %s", | ||||
| 				(unsigned long) tif->tif_row, LZMAStrerror(ret)); | ||||
| 			return 0; | ||||
| 		} | ||||
| 		if (sp->stream.avail_out == 0) { | ||||
| 			tif->tif_rawcc = tif->tif_rawdatasize; | ||||
| 			TIFFFlushData1(tif); | ||||
| 			sp->stream.next_out = tif->tif_rawdata; | ||||
| 			sp->stream.avail_out = (size_t)tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in LZMAPreEncode */ | ||||
| 		} | ||||
| 	} while (sp->stream.avail_in > 0); | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Finish off an encoded strip by flushing the last | ||||
|  * string and tacking on an End Of Information code. | ||||
|  */ | ||||
| static int | ||||
| LZMAPostEncode(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "LZMAPostEncode"; | ||||
| 	LZMAState *sp = EncoderState(tif); | ||||
| 	lzma_ret ret; | ||||
|  | ||||
| 	sp->stream.avail_in = 0; | ||||
| 	do { | ||||
| 		ret = lzma_code(&sp->stream, LZMA_FINISH); | ||||
| 		switch (ret) { | ||||
| 		case LZMA_STREAM_END: | ||||
| 		case LZMA_OK: | ||||
| 			if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) { | ||||
| 				tif->tif_rawcc = | ||||
| 					tif->tif_rawdatasize - sp->stream.avail_out; | ||||
| 				TIFFFlushData1(tif); | ||||
| 				sp->stream.next_out = tif->tif_rawdata; | ||||
| 				sp->stream.avail_out = (size_t)tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in ZIPPreEncode */ | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, "Liblzma error: %s", | ||||
| 				     LZMAStrerror(ret)); | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} while (ret != LZMA_STREAM_END); | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static void | ||||
| LZMACleanup(TIFF* tif) | ||||
| { | ||||
| 	LZMAState* sp = LState(tif); | ||||
|  | ||||
| 	assert(sp != 0); | ||||
|  | ||||
| 	(void)TIFFPredictorCleanup(tif); | ||||
|  | ||||
| 	tif->tif_tagmethods.vgetfield = sp->vgetparent; | ||||
| 	tif->tif_tagmethods.vsetfield = sp->vsetparent; | ||||
|  | ||||
| 	if (sp->state) { | ||||
| 		lzma_end(&sp->stream); | ||||
| 		sp->state = 0; | ||||
| 	} | ||||
| 	_TIFFfree(sp); | ||||
| 	tif->tif_data = NULL; | ||||
|  | ||||
| 	_TIFFSetDefaultCompressionState(tif); | ||||
| } | ||||
|  | ||||
| static int | ||||
| LZMAVSetField(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	static const char module[] = "LZMAVSetField"; | ||||
| 	LZMAState* sp = LState(tif); | ||||
|  | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_LZMAPRESET: | ||||
| 		sp->preset = (int) va_arg(ap, int); | ||||
| 		lzma_lzma_preset(&sp->opt_lzma, sp->preset); | ||||
| 		if (sp->state & LSTATE_INIT_ENCODE) { | ||||
| 			lzma_ret ret = lzma_stream_encoder(&sp->stream, | ||||
| 							   sp->filters, | ||||
| 							   sp->check); | ||||
| 			if (ret != LZMA_OK) { | ||||
| 				TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 					     "Liblzma error: %s", | ||||
| 					     LZMAStrerror(ret)); | ||||
| 			} | ||||
| 		} | ||||
| 		return 1; | ||||
| 	default: | ||||
| 		return (*sp->vsetparent)(tif, tag, ap); | ||||
| 	} | ||||
| 	/*NOTREACHED*/ | ||||
| } | ||||
|  | ||||
| static int | ||||
| LZMAVGetField(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	LZMAState* sp = LState(tif); | ||||
|  | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_LZMAPRESET: | ||||
| 		*va_arg(ap, int*) = sp->preset; | ||||
| 		break; | ||||
| 	default: | ||||
| 		return (*sp->vgetparent)(tif, tag, ap); | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static const TIFFField lzmaFields[] = { | ||||
| 	{ TIFFTAG_LZMAPRESET, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, | ||||
| 		FIELD_PSEUDO, TRUE, FALSE, "LZMA2 Compression Preset", NULL }, | ||||
| }; | ||||
|  | ||||
| int | ||||
| TIFFInitLZMA(TIFF* tif, int scheme) | ||||
| { | ||||
| 	static const char module[] = "TIFFInitLZMA"; | ||||
| 	LZMAState* sp; | ||||
| 	lzma_stream tmp_stream = LZMA_STREAM_INIT; | ||||
|  | ||||
| 	assert( scheme == COMPRESSION_LZMA ); | ||||
|  | ||||
| 	/* | ||||
| 	 * Merge codec-specific tag information. | ||||
| 	 */ | ||||
| 	if (!_TIFFMergeFields(tif, lzmaFields, TIFFArrayCount(lzmaFields))) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Merging LZMA2 codec-specific tags failed"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| 	 * Allocate state block so tag methods have storage to record values. | ||||
| 	 */ | ||||
| 	tif->tif_data = (uint8*) _TIFFmalloc(sizeof(LZMAState)); | ||||
| 	if (tif->tif_data == NULL) | ||||
| 		goto bad; | ||||
| 	sp = LState(tif); | ||||
| 	memcpy(&sp->stream, &tmp_stream, sizeof(lzma_stream)); | ||||
|  | ||||
| 	/* | ||||
| 	 * Override parent get/set field methods. | ||||
| 	 */ | ||||
| 	sp->vgetparent = tif->tif_tagmethods.vgetfield; | ||||
| 	tif->tif_tagmethods.vgetfield = LZMAVGetField;	/* hook for codec tags */ | ||||
| 	sp->vsetparent = tif->tif_tagmethods.vsetfield; | ||||
| 	tif->tif_tagmethods.vsetfield = LZMAVSetField;	/* hook for codec tags */ | ||||
|  | ||||
| 	/* Default values for codec-specific fields */ | ||||
| 	sp->preset = LZMA_PRESET_DEFAULT;		/* default comp. level */ | ||||
| 	sp->check = LZMA_CHECK_NONE; | ||||
| 	sp->state = 0; | ||||
|  | ||||
| 	/* Data filters. So far we are using delta and LZMA2 filters only. */ | ||||
| 	sp->opt_delta.type = LZMA_DELTA_TYPE_BYTE; | ||||
| 	/* | ||||
| 	 * The sample size in bytes seems to be reasonable distance for delta | ||||
| 	 * filter. | ||||
| 	 */ | ||||
| 	sp->opt_delta.dist = (tif->tif_dir.td_bitspersample % 8) ? | ||||
| 		1 : tif->tif_dir.td_bitspersample / 8; | ||||
| 	sp->filters[0].id = LZMA_FILTER_DELTA; | ||||
| 	sp->filters[0].options = &sp->opt_delta; | ||||
|  | ||||
| 	lzma_lzma_preset(&sp->opt_lzma, sp->preset); | ||||
| 	sp->filters[1].id = LZMA_FILTER_LZMA2; | ||||
| 	sp->filters[1].options = &sp->opt_lzma; | ||||
|  | ||||
| 	sp->filters[2].id = LZMA_VLI_UNKNOWN; | ||||
| 	sp->filters[2].options = NULL; | ||||
|  | ||||
| 	/* | ||||
| 	 * Install codec methods. | ||||
| 	 */ | ||||
| 	tif->tif_fixuptags = LZMAFixupTags; | ||||
| 	tif->tif_setupdecode = LZMASetupDecode; | ||||
| 	tif->tif_predecode = LZMAPreDecode; | ||||
| 	tif->tif_decoderow = LZMADecode; | ||||
| 	tif->tif_decodestrip = LZMADecode; | ||||
| 	tif->tif_decodetile = LZMADecode; | ||||
| 	tif->tif_setupencode = LZMASetupEncode; | ||||
| 	tif->tif_preencode = LZMAPreEncode; | ||||
| 	tif->tif_postencode = LZMAPostEncode; | ||||
| 	tif->tif_encoderow = LZMAEncode; | ||||
| 	tif->tif_encodestrip = LZMAEncode; | ||||
| 	tif->tif_encodetile = LZMAEncode; | ||||
| 	tif->tif_cleanup = LZMACleanup; | ||||
| 	/* | ||||
| 	 * Setup predictor setup. | ||||
| 	 */ | ||||
| 	(void) TIFFPredictorInit(tif); | ||||
| 	return 1; | ||||
| bad: | ||||
| 	TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 		     "No space for LZMA2 state block"); | ||||
| 	return 0; | ||||
| } | ||||
| #endif /* LZMA_SUPPORT */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
							
								
								
									
										1224
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_lzw.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1224
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_lzw.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										189
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_next.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_next.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,189 @@ | ||||
| /* $Id: tif_next.c,v 1.19 2016-09-04 21:32:56 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
| #ifdef NEXT_SUPPORT | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * NeXT 2-bit Grey Scale Compression Algorithm Support | ||||
|  */ | ||||
|  | ||||
| #define SETPIXEL(op, v) {			\ | ||||
| 	switch (npixels++ & 3) {		\ | ||||
| 	case 0:	op[0]  = (unsigned char) ((v) << 6); break;	\ | ||||
| 	case 1:	op[0] |= (v) << 4; break;	\ | ||||
| 	case 2:	op[0] |= (v) << 2; break;	\ | ||||
| 	case 3:	*op++ |= (v);	   op_offset++; break;	\ | ||||
| 	}					\ | ||||
| } | ||||
|  | ||||
| #define LITERALROW	0x00 | ||||
| #define LITERALSPAN	0x40 | ||||
| #define WHITE   	((1<<2)-1) | ||||
|  | ||||
| static int | ||||
| NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "NeXTDecode"; | ||||
| 	unsigned char *bp, *op; | ||||
| 	tmsize_t cc; | ||||
| 	uint8* row; | ||||
| 	tmsize_t scanline, n; | ||||
|  | ||||
| 	(void) s; | ||||
| 	/* | ||||
| 	 * Each scanline is assumed to start off as all | ||||
| 	 * white (we assume a PhotometricInterpretation | ||||
| 	 * of ``min-is-black''). | ||||
| 	 */ | ||||
| 	for (op = (unsigned char*) buf, cc = occ; cc-- > 0;) | ||||
| 		*op++ = 0xff; | ||||
|  | ||||
| 	bp = (unsigned char *)tif->tif_rawcp; | ||||
| 	cc = tif->tif_rawcc; | ||||
| 	scanline = tif->tif_scanlinesize; | ||||
| 	if (occ % scanline) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	for (row = buf; cc > 0 && occ > 0; occ -= scanline, row += scanline) { | ||||
| 		n = *bp++; | ||||
| 		cc--; | ||||
| 		switch (n) { | ||||
| 		case LITERALROW: | ||||
| 			/* | ||||
| 			 * The entire scanline is given as literal values. | ||||
| 			 */ | ||||
| 			if (cc < scanline) | ||||
| 				goto bad; | ||||
| 			_TIFFmemcpy(row, bp, scanline); | ||||
| 			bp += scanline; | ||||
| 			cc -= scanline; | ||||
| 			break; | ||||
| 		case LITERALSPAN: { | ||||
| 			tmsize_t off; | ||||
| 			/* | ||||
| 			 * The scanline has a literal span that begins at some | ||||
| 			 * offset. | ||||
| 			 */ | ||||
| 			if( cc < 4 ) | ||||
| 				goto bad; | ||||
| 			off = (bp[0] * 256) + bp[1]; | ||||
| 			n = (bp[2] * 256) + bp[3]; | ||||
| 			if (cc < 4+n || off+n > scanline) | ||||
| 				goto bad; | ||||
| 			_TIFFmemcpy(row+off, bp+4, n); | ||||
| 			bp += 4+n; | ||||
| 			cc -= 4+n; | ||||
| 			break; | ||||
| 		} | ||||
| 		default: { | ||||
| 			uint32 npixels = 0, grey; | ||||
| 			tmsize_t op_offset = 0; | ||||
| 			uint32 imagewidth = tif->tif_dir.td_imagewidth; | ||||
|             if( isTiled(tif) ) | ||||
|                 imagewidth = tif->tif_dir.td_tilewidth; | ||||
|  | ||||
| 			/* | ||||
| 			 * The scanline is composed of a sequence of constant | ||||
| 			 * color ``runs''.  We shift into ``run mode'' and | ||||
| 			 * interpret bytes as codes of the form | ||||
| 			 * <color><npixels> until we've filled the scanline. | ||||
| 			 */ | ||||
| 			op = row; | ||||
| 			for (;;) { | ||||
| 				grey = (uint32)((n>>6) & 0x3); | ||||
| 				n &= 0x3f; | ||||
| 				/* | ||||
| 				 * Ensure the run does not exceed the scanline | ||||
| 				 * bounds, potentially resulting in a security | ||||
| 				 * issue. | ||||
| 				 */ | ||||
| 				while (n-- > 0 && npixels < imagewidth && op_offset < scanline) | ||||
| 					SETPIXEL(op, grey); | ||||
| 				if (npixels >= imagewidth) | ||||
| 					break; | ||||
|                 if (op_offset >= scanline ) { | ||||
|                     TIFFErrorExt(tif->tif_clientdata, module, "Invalid data for scanline %ld", | ||||
|                         (long) tif->tif_row); | ||||
|                     return (0); | ||||
|                 } | ||||
| 				if (cc == 0) | ||||
| 					goto bad; | ||||
| 				n = *bp++; | ||||
| 				cc--; | ||||
| 			} | ||||
| 			break; | ||||
| 		} | ||||
| 		} | ||||
| 	} | ||||
| 	tif->tif_rawcp = (uint8*) bp; | ||||
| 	tif->tif_rawcc = cc; | ||||
| 	return (1); | ||||
| bad: | ||||
| 	TIFFErrorExt(tif->tif_clientdata, module, "Not enough data for scanline %ld", | ||||
| 	    (long) tif->tif_row); | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static int | ||||
| NeXTPreDecode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "NeXTPreDecode"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	(void)s; | ||||
|  | ||||
| 	if( td->td_bitspersample != 2 ) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Unsupported BitsPerSample = %d", | ||||
| 					 td->td_bitspersample); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
| 	 | ||||
| int | ||||
| TIFFInitNeXT(TIFF* tif, int scheme) | ||||
| { | ||||
| 	(void) scheme; | ||||
| 	tif->tif_predecode = NeXTPreDecode;   | ||||
| 	tif->tif_decoderow = NeXTDecode;   | ||||
| 	tif->tif_decodestrip = NeXTDecode;   | ||||
| 	tif->tif_decodetile = NeXTDecode; | ||||
| 	return (1); | ||||
| } | ||||
| #endif /* NEXT_SUPPORT */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										2563
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_ojpeg.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2563
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_ojpeg.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										725
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_open.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										725
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_open.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,725 @@ | ||||
| /* $Id: tif_open.c,v 1.48 2016-11-20 22:29:47 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| /* | ||||
|  * Dummy functions to fill the omitted client procedures. | ||||
|  */ | ||||
| static int | ||||
| _tiffDummyMapProc(thandle_t fd, void** pbase, toff_t* psize) | ||||
| { | ||||
| 	(void) fd; (void) pbase; (void) psize; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _tiffDummyUnmapProc(thandle_t fd, void* base, toff_t size) | ||||
| { | ||||
| 	(void) fd; (void) base; (void) size; | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFgetMode(const char* mode, const char* module) | ||||
| { | ||||
| 	int m = -1; | ||||
|  | ||||
| 	switch (mode[0]) { | ||||
| 	case 'r': | ||||
| 		m = O_RDONLY; | ||||
| 		if (mode[1] == '+') | ||||
| 			m = O_RDWR; | ||||
| 		break; | ||||
| 	case 'w': | ||||
| 	case 'a': | ||||
| 		m = O_RDWR|O_CREAT; | ||||
| 		if (mode[0] == 'w') | ||||
| 			m |= O_TRUNC; | ||||
| 		break; | ||||
| 	default: | ||||
| 		TIFFErrorExt(0, module, "\"%s\": Bad mode", mode); | ||||
| 		break; | ||||
| 	} | ||||
| 	return (m); | ||||
| } | ||||
|  | ||||
| TIFF* | ||||
| TIFFClientOpen( | ||||
| 	const char* name, const char* mode, | ||||
| 	thandle_t clientdata, | ||||
| 	TIFFReadWriteProc readproc, | ||||
| 	TIFFReadWriteProc writeproc, | ||||
| 	TIFFSeekProc seekproc, | ||||
| 	TIFFCloseProc closeproc, | ||||
| 	TIFFSizeProc sizeproc, | ||||
| 	TIFFMapFileProc mapproc, | ||||
| 	TIFFUnmapFileProc unmapproc | ||||
| ) | ||||
| { | ||||
| 	static const char module[] = "TIFFClientOpen"; | ||||
| 	TIFF *tif; | ||||
| 	int m; | ||||
| 	const char* cp; | ||||
|  | ||||
| 	/* The following are configuration checks. They should be redundant, but should not | ||||
| 	 * compile to any actual code in an optimised release build anyway. If any of them | ||||
| 	 * fail, (makefile-based or other) configuration is not correct */ | ||||
| 	assert(sizeof(uint8)==1); | ||||
| 	assert(sizeof(int8)==1); | ||||
| 	assert(sizeof(uint16)==2); | ||||
| 	assert(sizeof(int16)==2); | ||||
| 	assert(sizeof(uint32)==4); | ||||
| 	assert(sizeof(int32)==4); | ||||
| 	assert(sizeof(uint64)==8); | ||||
| 	assert(sizeof(int64)==8); | ||||
| 	assert(sizeof(tmsize_t)==sizeof(void*)); | ||||
| 	{ | ||||
| 		union{ | ||||
| 			uint8 a8[2]; | ||||
| 			uint16 a16; | ||||
| 		} n; | ||||
| 		n.a8[0]=1; | ||||
| 		n.a8[1]=0; | ||||
| 		#ifdef WORDS_BIGENDIAN | ||||
| 		assert(n.a16==256); | ||||
| 		#else | ||||
| 		assert(n.a16==1); | ||||
| 		#endif | ||||
| 	} | ||||
|  | ||||
| 	m = _TIFFgetMode(mode, module); | ||||
| 	if (m == -1) | ||||
| 		goto bad2; | ||||
| 	tif = (TIFF *)_TIFFmalloc((tmsize_t)(sizeof (TIFF) + strlen(name) + 1)); | ||||
| 	if (tif == NULL) { | ||||
| 		TIFFErrorExt(clientdata, module, "%s: Out of memory (TIFF structure)", name); | ||||
| 		goto bad2; | ||||
| 	} | ||||
| 	_TIFFmemset(tif, 0, sizeof (*tif)); | ||||
| 	tif->tif_name = (char *)tif + sizeof (TIFF); | ||||
| 	strcpy(tif->tif_name, name); | ||||
| 	tif->tif_mode = m &~ (O_CREAT|O_TRUNC); | ||||
| 	tif->tif_curdir = (uint16) -1;		/* non-existent directory */ | ||||
| 	tif->tif_curoff = 0; | ||||
| 	tif->tif_curstrip = (uint32) -1;	/* invalid strip */ | ||||
| 	tif->tif_row = (uint32) -1;		/* read/write pre-increment */ | ||||
| 	tif->tif_clientdata = clientdata; | ||||
| 	if (!readproc || !writeproc || !seekproc || !closeproc || !sizeproc) { | ||||
| 		TIFFErrorExt(clientdata, module, | ||||
| 		    "One of the client procedures is NULL pointer."); | ||||
| 		goto bad2; | ||||
| 	} | ||||
| 	tif->tif_readproc = readproc; | ||||
| 	tif->tif_writeproc = writeproc; | ||||
| 	tif->tif_seekproc = seekproc; | ||||
| 	tif->tif_closeproc = closeproc; | ||||
| 	tif->tif_sizeproc = sizeproc; | ||||
| 	if (mapproc) | ||||
| 		tif->tif_mapproc = mapproc; | ||||
| 	else | ||||
| 		tif->tif_mapproc = _tiffDummyMapProc; | ||||
| 	if (unmapproc) | ||||
| 		tif->tif_unmapproc = unmapproc; | ||||
| 	else | ||||
| 		tif->tif_unmapproc = _tiffDummyUnmapProc; | ||||
| 	_TIFFSetDefaultCompressionState(tif);    /* setup default state */ | ||||
| 	/* | ||||
| 	 * Default is to return data MSB2LSB and enable the | ||||
| 	 * use of memory-mapped files and strip chopping when | ||||
| 	 * a file is opened read-only. | ||||
| 	 */ | ||||
| 	tif->tif_flags = FILLORDER_MSB2LSB; | ||||
| 	if (m == O_RDONLY ) | ||||
| 		tif->tif_flags |= TIFF_MAPPED; | ||||
|  | ||||
| 	#ifdef STRIPCHOP_DEFAULT | ||||
| 	if (m == O_RDONLY || m == O_RDWR) | ||||
| 		tif->tif_flags |= STRIPCHOP_DEFAULT; | ||||
| 	#endif | ||||
|  | ||||
| 	/* | ||||
| 	 * Process library-specific flags in the open mode string. | ||||
| 	 * The following flags may be used to control intrinsic library | ||||
| 	 * behaviour that may or may not be desirable (usually for | ||||
| 	 * compatibility with some application that claims to support | ||||
| 	 * TIFF but only supports some brain dead idea of what the | ||||
| 	 * vendor thinks TIFF is): | ||||
| 	 * | ||||
| 	 * 'l' use little-endian byte order for creating a file | ||||
| 	 * 'b' use big-endian byte order for creating a file | ||||
| 	 * 'L' read/write information using LSB2MSB bit order | ||||
| 	 * 'B' read/write information using MSB2LSB bit order | ||||
| 	 * 'H' read/write information using host bit order | ||||
| 	 * 'M' enable use of memory-mapped files when supported | ||||
| 	 * 'm' disable use of memory-mapped files | ||||
| 	 * 'C' enable strip chopping support when reading | ||||
| 	 * 'c' disable strip chopping support | ||||
| 	 * 'h' read TIFF header only, do not load the first IFD | ||||
| 	 * '4' ClassicTIFF for creating a file (default) | ||||
| 	 * '8' BigTIFF for creating a file | ||||
| 	 * | ||||
| 	 * The use of the 'l' and 'b' flags is strongly discouraged. | ||||
| 	 * These flags are provided solely because numerous vendors, | ||||
| 	 * typically on the PC, do not correctly support TIFF; they | ||||
| 	 * only support the Intel little-endian byte order.  This | ||||
| 	 * support is not configured by default because it supports | ||||
| 	 * the violation of the TIFF spec that says that readers *MUST* | ||||
| 	 * support both byte orders.  It is strongly recommended that | ||||
| 	 * you not use this feature except to deal with busted apps | ||||
| 	 * that write invalid TIFF.  And even in those cases you should | ||||
| 	 * bang on the vendors to fix their software. | ||||
| 	 * | ||||
| 	 * The 'L', 'B', and 'H' flags are intended for applications | ||||
| 	 * that can optimize operations on data by using a particular | ||||
| 	 * bit order.  By default the library returns data in MSB2LSB | ||||
| 	 * bit order for compatibility with older versions of this | ||||
| 	 * library.  Returning data in the bit order of the native CPU | ||||
| 	 * makes the most sense but also requires applications to check | ||||
| 	 * the value of the FillOrder tag; something they probably do | ||||
| 	 * not do right now. | ||||
| 	 * | ||||
| 	 * The 'M' and 'm' flags are provided because some virtual memory | ||||
| 	 * systems exhibit poor behaviour when large images are mapped. | ||||
| 	 * These options permit clients to control the use of memory-mapped | ||||
| 	 * files on a per-file basis. | ||||
| 	 * | ||||
| 	 * The 'C' and 'c' flags are provided because the library support | ||||
| 	 * for chopping up large strips into multiple smaller strips is not | ||||
| 	 * application-transparent and as such can cause problems.  The 'c' | ||||
| 	 * option permits applications that only want to look at the tags, | ||||
| 	 * for example, to get the unadulterated TIFF tag information. | ||||
| 	 */ | ||||
| 	for (cp = mode; *cp; cp++) | ||||
| 		switch (*cp) { | ||||
| 			case 'b': | ||||
| 				#ifndef WORDS_BIGENDIAN | ||||
| 				if (m&O_CREAT) | ||||
| 					tif->tif_flags |= TIFF_SWAB; | ||||
| 				#endif | ||||
| 				break; | ||||
| 			case 'l': | ||||
| 				#ifdef WORDS_BIGENDIAN | ||||
| 				if ((m&O_CREAT)) | ||||
| 					tif->tif_flags |= TIFF_SWAB; | ||||
| 				#endif | ||||
| 				break; | ||||
| 			case 'B': | ||||
| 				tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) | | ||||
| 				    FILLORDER_MSB2LSB; | ||||
| 				break; | ||||
| 			case 'L': | ||||
| 				tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) | | ||||
| 				    FILLORDER_LSB2MSB; | ||||
| 				break; | ||||
| 			case 'H': | ||||
| 				tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) | | ||||
| 				    HOST_FILLORDER; | ||||
| 				break; | ||||
| 			case 'M': | ||||
| 				if (m == O_RDONLY) | ||||
| 					tif->tif_flags |= TIFF_MAPPED; | ||||
| 				break; | ||||
| 			case 'm': | ||||
| 				if (m == O_RDONLY) | ||||
| 					tif->tif_flags &= ~TIFF_MAPPED; | ||||
| 				break; | ||||
| 			case 'C': | ||||
| 				if (m == O_RDONLY) | ||||
| 					tif->tif_flags |= TIFF_STRIPCHOP; | ||||
| 				break; | ||||
| 			case 'c': | ||||
| 				if (m == O_RDONLY) | ||||
| 					tif->tif_flags &= ~TIFF_STRIPCHOP; | ||||
| 				break; | ||||
| 			case 'h': | ||||
| 				tif->tif_flags |= TIFF_HEADERONLY; | ||||
| 				break; | ||||
| 			case '8': | ||||
| 				if (m&O_CREAT) | ||||
| 					tif->tif_flags |= TIFF_BIGTIFF; | ||||
| 				break; | ||||
| 		} | ||||
| 	/* | ||||
| 	 * Read in TIFF header. | ||||
| 	 */ | ||||
| 	if ((m & O_TRUNC) || | ||||
| 	    !ReadOK(tif, &tif->tif_header, sizeof (TIFFHeaderClassic))) { | ||||
| 		if (tif->tif_mode == O_RDONLY) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 			    "Cannot read TIFF header"); | ||||
| 			goto bad; | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Setup header and write. | ||||
| 		 */ | ||||
| 		#ifdef WORDS_BIGENDIAN | ||||
| 		tif->tif_header.common.tiff_magic = (tif->tif_flags & TIFF_SWAB) | ||||
| 		    ? TIFF_LITTLEENDIAN : TIFF_BIGENDIAN; | ||||
| 		#else | ||||
| 		tif->tif_header.common.tiff_magic = (tif->tif_flags & TIFF_SWAB) | ||||
| 		    ? TIFF_BIGENDIAN : TIFF_LITTLEENDIAN; | ||||
| 		#endif | ||||
| 		if (!(tif->tif_flags&TIFF_BIGTIFF)) | ||||
| 		{ | ||||
| 			tif->tif_header.common.tiff_version = TIFF_VERSION_CLASSIC; | ||||
| 			tif->tif_header.classic.tiff_diroff = 0; | ||||
| 			if (tif->tif_flags & TIFF_SWAB) | ||||
| 				TIFFSwabShort(&tif->tif_header.common.tiff_version); | ||||
| 			tif->tif_header_size = sizeof(TIFFHeaderClassic); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			tif->tif_header.common.tiff_version = TIFF_VERSION_BIG; | ||||
| 			tif->tif_header.big.tiff_offsetsize = 8; | ||||
| 			tif->tif_header.big.tiff_unused = 0; | ||||
| 			tif->tif_header.big.tiff_diroff = 0; | ||||
| 			if (tif->tif_flags & TIFF_SWAB) | ||||
| 			{ | ||||
| 				TIFFSwabShort(&tif->tif_header.common.tiff_version); | ||||
| 				TIFFSwabShort(&tif->tif_header.big.tiff_offsetsize); | ||||
| 			} | ||||
| 			tif->tif_header_size = sizeof (TIFFHeaderBig); | ||||
| 		} | ||||
| 		/* | ||||
| 		 * The doc for "fopen" for some STD_C_LIBs says that if you | ||||
| 		 * open a file for modify ("+"), then you must fseek (or | ||||
| 		 * fflush?) between any freads and fwrites.  This is not | ||||
| 		 * necessary on most systems, but has been shown to be needed | ||||
| 		 * on Solaris. | ||||
| 		 */ | ||||
| 		TIFFSeekFile( tif, 0, SEEK_SET ); | ||||
| 		if (!WriteOK(tif, &tif->tif_header, (tmsize_t)(tif->tif_header_size))) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 			    "Error writing TIFF header"); | ||||
| 			goto bad; | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Setup the byte order handling. | ||||
| 		 */ | ||||
| 		if (tif->tif_header.common.tiff_magic == TIFF_BIGENDIAN) { | ||||
| 			#ifndef WORDS_BIGENDIAN | ||||
| 			tif->tif_flags |= TIFF_SWAB; | ||||
| 			#endif | ||||
| 		} else { | ||||
| 			#ifdef WORDS_BIGENDIAN | ||||
| 			tif->tif_flags |= TIFF_SWAB; | ||||
| 			#endif | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Setup default directory. | ||||
| 		 */ | ||||
| 		if (!TIFFDefaultDirectory(tif)) | ||||
| 			goto bad; | ||||
| 		tif->tif_diroff = 0; | ||||
| 		tif->tif_dirlist = NULL; | ||||
| 		tif->tif_dirlistsize = 0; | ||||
| 		tif->tif_dirnumber = 0; | ||||
| 		return (tif); | ||||
| 	} | ||||
| 	/* | ||||
| 	 * Setup the byte order handling. | ||||
| 	 */ | ||||
| 	if (tif->tif_header.common.tiff_magic != TIFF_BIGENDIAN && | ||||
| 	    tif->tif_header.common.tiff_magic != TIFF_LITTLEENDIAN | ||||
| 	    #if MDI_SUPPORT | ||||
| 	    && | ||||
| 	    #if HOST_BIGENDIAN | ||||
| 	    tif->tif_header.common.tiff_magic != MDI_BIGENDIAN | ||||
| 	    #else | ||||
| 	    tif->tif_header.common.tiff_magic != MDI_LITTLEENDIAN | ||||
| 	    #endif | ||||
| 	    ) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 		    "Not a TIFF or MDI file, bad magic number %d (0x%x)", | ||||
| 	    #else | ||||
| 	    ) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 		    "Not a TIFF file, bad magic number %d (0x%x)", | ||||
| 	    #endif | ||||
| 		    tif->tif_header.common.tiff_magic, | ||||
| 		    tif->tif_header.common.tiff_magic); | ||||
| 		goto bad; | ||||
| 	} | ||||
| 	if (tif->tif_header.common.tiff_magic == TIFF_BIGENDIAN) { | ||||
| 		#ifndef WORDS_BIGENDIAN | ||||
| 		tif->tif_flags |= TIFF_SWAB; | ||||
| 		#endif | ||||
| 	} else { | ||||
| 		#ifdef WORDS_BIGENDIAN | ||||
| 		tif->tif_flags |= TIFF_SWAB; | ||||
| 		#endif | ||||
| 	} | ||||
| 	if (tif->tif_flags & TIFF_SWAB)  | ||||
| 		TIFFSwabShort(&tif->tif_header.common.tiff_version); | ||||
| 	if ((tif->tif_header.common.tiff_version != TIFF_VERSION_CLASSIC)&& | ||||
| 	    (tif->tif_header.common.tiff_version != TIFF_VERSION_BIG)) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 		    "Not a TIFF file, bad version number %d (0x%x)", | ||||
| 		    tif->tif_header.common.tiff_version, | ||||
| 		    tif->tif_header.common.tiff_version); | ||||
| 		goto bad; | ||||
| 	} | ||||
| 	if (tif->tif_header.common.tiff_version == TIFF_VERSION_CLASSIC) | ||||
| 	{ | ||||
| 		if (tif->tif_flags & TIFF_SWAB) | ||||
| 			TIFFSwabLong(&tif->tif_header.classic.tiff_diroff); | ||||
| 		tif->tif_header_size = sizeof(TIFFHeaderClassic); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		if (!ReadOK(tif, ((uint8*)(&tif->tif_header) + sizeof(TIFFHeaderClassic)), (sizeof(TIFFHeaderBig)-sizeof(TIFFHeaderClassic)))) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 			    "Cannot read TIFF header"); | ||||
| 			goto bad; | ||||
| 		} | ||||
| 		if (tif->tif_flags & TIFF_SWAB) | ||||
| 		{ | ||||
| 			TIFFSwabShort(&tif->tif_header.big.tiff_offsetsize); | ||||
| 			TIFFSwabLong8(&tif->tif_header.big.tiff_diroff); | ||||
| 		} | ||||
| 		if (tif->tif_header.big.tiff_offsetsize != 8) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 			    "Not a TIFF file, bad BigTIFF offsetsize %d (0x%x)", | ||||
| 			    tif->tif_header.big.tiff_offsetsize, | ||||
| 			    tif->tif_header.big.tiff_offsetsize); | ||||
| 			goto bad; | ||||
| 		} | ||||
| 		if (tif->tif_header.big.tiff_unused != 0) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata, name, | ||||
| 			    "Not a TIFF file, bad BigTIFF unused %d (0x%x)", | ||||
| 			    tif->tif_header.big.tiff_unused, | ||||
| 			    tif->tif_header.big.tiff_unused); | ||||
| 			goto bad; | ||||
| 		} | ||||
| 		tif->tif_header_size = sizeof(TIFFHeaderBig); | ||||
| 		tif->tif_flags |= TIFF_BIGTIFF; | ||||
| 	} | ||||
| 	tif->tif_flags |= TIFF_MYBUFFER; | ||||
| 	tif->tif_rawcp = tif->tif_rawdata = 0; | ||||
| 	tif->tif_rawdatasize = 0; | ||||
|         tif->tif_rawdataoff = 0; | ||||
|         tif->tif_rawdataloaded = 0; | ||||
|  | ||||
| 	switch (mode[0]) { | ||||
| 		case 'r': | ||||
| 			if (!(tif->tif_flags&TIFF_BIGTIFF)) | ||||
| 				tif->tif_nextdiroff = tif->tif_header.classic.tiff_diroff; | ||||
| 			else | ||||
| 				tif->tif_nextdiroff = tif->tif_header.big.tiff_diroff; | ||||
| 			/* | ||||
| 			 * Try to use a memory-mapped file if the client | ||||
| 			 * has not explicitly suppressed usage with the | ||||
| 			 * 'm' flag in the open mode (see above). | ||||
| 			 */ | ||||
| 			if (tif->tif_flags & TIFF_MAPPED) | ||||
| 			{ | ||||
| 				toff_t n; | ||||
| 				if (TIFFMapFileContents(tif,(void**)(&tif->tif_base),&n)) | ||||
| 				{ | ||||
| 					tif->tif_size=(tmsize_t)n; | ||||
| 					assert((toff_t)tif->tif_size==n); | ||||
| 				} | ||||
| 				else | ||||
| 					tif->tif_flags &= ~TIFF_MAPPED; | ||||
| 			} | ||||
| 			/* | ||||
| 			 * Sometimes we do not want to read the first directory (for example, | ||||
| 			 * it may be broken) and want to proceed to other directories. I this | ||||
| 			 * case we use the TIFF_HEADERONLY flag to open file and return | ||||
| 			 * immediately after reading TIFF header. | ||||
| 			 */ | ||||
| 			if (tif->tif_flags & TIFF_HEADERONLY) | ||||
| 				return (tif); | ||||
|  | ||||
| 			/* | ||||
| 			 * Setup initial directory. | ||||
| 			 */ | ||||
| 			if (TIFFReadDirectory(tif)) { | ||||
| 				tif->tif_rawcc = (tmsize_t)-1; | ||||
| 				tif->tif_flags |= TIFF_BUFFERSETUP; | ||||
| 				return (tif); | ||||
| 			} | ||||
| 			break; | ||||
| 		case 'a': | ||||
| 			/* | ||||
| 			 * New directories are automatically append | ||||
| 			 * to the end of the directory chain when they | ||||
| 			 * are written out (see TIFFWriteDirectory). | ||||
| 			 */ | ||||
| 			if (!TIFFDefaultDirectory(tif)) | ||||
| 				goto bad; | ||||
| 			return (tif); | ||||
| 	} | ||||
| bad: | ||||
| 	tif->tif_mode = O_RDONLY;	/* XXX avoid flush */ | ||||
|         TIFFCleanup(tif); | ||||
| bad2: | ||||
| 	return ((TIFF*)0); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Query functions to access private data. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * Return open file's name. | ||||
|  */ | ||||
| const char * | ||||
| TIFFFileName(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_name); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Set the file name. | ||||
|  */ | ||||
| const char * | ||||
| TIFFSetFileName(TIFF* tif, const char *name) | ||||
| { | ||||
| 	const char* old_name = tif->tif_name; | ||||
| 	tif->tif_name = (char *)name; | ||||
| 	return (old_name); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return open file's I/O descriptor. | ||||
|  */ | ||||
| int | ||||
| TIFFFileno(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_fd); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Set open file's I/O descriptor, and return previous value. | ||||
|  */ | ||||
| int | ||||
| TIFFSetFileno(TIFF* tif, int fd) | ||||
| { | ||||
|         int old_fd = tif->tif_fd; | ||||
| 	tif->tif_fd = fd; | ||||
| 	return old_fd; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return open file's clientdata. | ||||
|  */ | ||||
| thandle_t | ||||
| TIFFClientdata(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_clientdata); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Set open file's clientdata, and return previous value. | ||||
|  */ | ||||
| thandle_t | ||||
| TIFFSetClientdata(TIFF* tif, thandle_t newvalue) | ||||
| { | ||||
| 	thandle_t m = tif->tif_clientdata; | ||||
| 	tif->tif_clientdata = newvalue; | ||||
| 	return m; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return read/write mode. | ||||
|  */ | ||||
| int | ||||
| TIFFGetMode(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_mode); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return read/write mode. | ||||
|  */ | ||||
| int | ||||
| TIFFSetMode(TIFF* tif, int mode) | ||||
| { | ||||
| 	int old_mode = tif->tif_mode; | ||||
| 	tif->tif_mode = mode; | ||||
| 	return (old_mode); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return nonzero if file is organized in | ||||
|  * tiles; zero if organized as strips. | ||||
|  */ | ||||
| int | ||||
| TIFFIsTiled(TIFF* tif) | ||||
| { | ||||
| 	return (isTiled(tif)); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return current row being read/written. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFCurrentRow(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_row); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return index of the current directory. | ||||
|  */ | ||||
| uint16 | ||||
| TIFFCurrentDirectory(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_curdir); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return current strip. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFCurrentStrip(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_curstrip); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return current tile. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFCurrentTile(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_curtile); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return nonzero if the file has byte-swapped data. | ||||
|  */ | ||||
| int | ||||
| TIFFIsByteSwapped(TIFF* tif) | ||||
| { | ||||
| 	return ((tif->tif_flags & TIFF_SWAB) != 0); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return nonzero if the data is returned up-sampled. | ||||
|  */ | ||||
| int | ||||
| TIFFIsUpSampled(TIFF* tif) | ||||
| { | ||||
| 	return (isUpSampled(tif)); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return nonzero if the data is returned in MSB-to-LSB bit order. | ||||
|  */ | ||||
| int | ||||
| TIFFIsMSB2LSB(TIFF* tif) | ||||
| { | ||||
| 	return (isFillOrder(tif, FILLORDER_MSB2LSB)); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return nonzero if given file was written in big-endian order. | ||||
|  */ | ||||
| int | ||||
| TIFFIsBigEndian(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_header.common.tiff_magic == TIFF_BIGENDIAN); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to file read method. | ||||
|  */ | ||||
| TIFFReadWriteProc | ||||
| TIFFGetReadProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_readproc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to file write method. | ||||
|  */ | ||||
| TIFFReadWriteProc | ||||
| TIFFGetWriteProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_writeproc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to file seek method. | ||||
|  */ | ||||
| TIFFSeekProc | ||||
| TIFFGetSeekProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_seekproc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to file close method. | ||||
|  */ | ||||
| TIFFCloseProc | ||||
| TIFFGetCloseProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_closeproc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to file size requesting method. | ||||
|  */ | ||||
| TIFFSizeProc | ||||
| TIFFGetSizeProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_sizeproc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to memory mapping method. | ||||
|  */ | ||||
| TIFFMapFileProc | ||||
| TIFFGetMapFileProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_mapproc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return pointer to memory unmapping method. | ||||
|  */ | ||||
| TIFFUnmapFileProc | ||||
| TIFFGetUnmapFileProc(TIFF* tif) | ||||
| { | ||||
| 	return (tif->tif_unmapproc); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										311
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_packbits.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										311
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_packbits.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,311 @@ | ||||
| /* $Id: tif_packbits.c,v 1.26 2017-05-14 02:26:07 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
| #ifdef PACKBITS_SUPPORT | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * PackBits Compression Algorithm Support | ||||
|  */ | ||||
| #include <stdio.h> | ||||
|  | ||||
| static int | ||||
| PackBitsPreEncode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	(void) s; | ||||
|  | ||||
|         tif->tif_data = (uint8*)_TIFFmalloc(sizeof(tmsize_t)); | ||||
| 	if (tif->tif_data == NULL) | ||||
| 		return (0); | ||||
| 	/* | ||||
| 	 * Calculate the scanline/tile-width size in bytes. | ||||
| 	 */ | ||||
| 	if (isTiled(tif)) | ||||
| 		*(tmsize_t*)tif->tif_data = TIFFTileRowSize(tif); | ||||
| 	else | ||||
| 		*(tmsize_t*)tif->tif_data = TIFFScanlineSize(tif); | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static int | ||||
| PackBitsPostEncode(TIFF* tif) | ||||
| { | ||||
|         if (tif->tif_data) | ||||
|             _TIFFfree(tif->tif_data); | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode a run of pixels. | ||||
|  */ | ||||
| static int | ||||
| PackBitsEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	unsigned char* bp = (unsigned char*) buf; | ||||
| 	uint8* op; | ||||
| 	uint8* ep; | ||||
| 	uint8* lastliteral; | ||||
| 	long n, slop; | ||||
| 	int b; | ||||
| 	enum { BASE, LITERAL, RUN, LITERAL_RUN } state; | ||||
|  | ||||
| 	(void) s; | ||||
| 	op = tif->tif_rawcp; | ||||
| 	ep = tif->tif_rawdata + tif->tif_rawdatasize; | ||||
| 	state = BASE; | ||||
| 	lastliteral = 0; | ||||
| 	while (cc > 0) { | ||||
| 		/* | ||||
| 		 * Find the longest string of identical bytes. | ||||
| 		 */ | ||||
| 		b = *bp++; | ||||
| 		cc--; | ||||
| 		n = 1; | ||||
| 		for (; cc > 0 && b == *bp; cc--, bp++) | ||||
| 			n++; | ||||
| 	again: | ||||
| 		if (op + 2 >= ep) {		/* insure space for new data */ | ||||
| 			/* | ||||
| 			 * Be careful about writing the last | ||||
| 			 * literal.  Must write up to that point | ||||
| 			 * and then copy the remainder to the | ||||
| 			 * front of the buffer. | ||||
| 			 */ | ||||
| 			if (state == LITERAL || state == LITERAL_RUN) { | ||||
| 				slop = (long)(op - lastliteral); | ||||
| 				tif->tif_rawcc += (tmsize_t)(lastliteral - tif->tif_rawcp); | ||||
| 				if (!TIFFFlushData1(tif)) | ||||
| 					return (0); | ||||
| 				op = tif->tif_rawcp; | ||||
| 				while (slop-- > 0) | ||||
| 					*op++ = *lastliteral++; | ||||
| 				lastliteral = tif->tif_rawcp; | ||||
| 			} else { | ||||
| 				tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); | ||||
| 				if (!TIFFFlushData1(tif)) | ||||
| 					return (0); | ||||
| 				op = tif->tif_rawcp; | ||||
| 			} | ||||
| 		} | ||||
| 		switch (state) { | ||||
| 		case BASE:		/* initial state, set run/literal */ | ||||
| 			if (n > 1) { | ||||
| 				state = RUN; | ||||
| 				if (n > 128) { | ||||
| 					*op++ = (uint8) -127; | ||||
| 					*op++ = (uint8) b; | ||||
| 					n -= 128; | ||||
| 					goto again; | ||||
| 				} | ||||
| 				*op++ = (uint8)(-(n-1)); | ||||
| 				*op++ = (uint8) b; | ||||
| 			} else { | ||||
| 				lastliteral = op; | ||||
| 				*op++ = 0; | ||||
| 				*op++ = (uint8) b; | ||||
| 				state = LITERAL; | ||||
| 			} | ||||
| 			break; | ||||
| 		case LITERAL:		/* last object was literal string */ | ||||
| 			if (n > 1) { | ||||
| 				state = LITERAL_RUN; | ||||
| 				if (n > 128) { | ||||
| 					*op++ = (uint8) -127; | ||||
| 					*op++ = (uint8) b; | ||||
| 					n -= 128; | ||||
| 					goto again; | ||||
| 				} | ||||
| 				*op++ = (uint8)(-(n-1));	/* encode run */ | ||||
| 				*op++ = (uint8) b; | ||||
| 			} else {			/* extend literal */ | ||||
| 				if (++(*lastliteral) == 127) | ||||
| 					state = BASE; | ||||
| 				*op++ = (uint8) b; | ||||
| 			} | ||||
| 			break; | ||||
| 		case RUN:		/* last object was run */ | ||||
| 			if (n > 1) { | ||||
| 				if (n > 128) { | ||||
| 					*op++ = (uint8) -127; | ||||
| 					*op++ = (uint8) b; | ||||
| 					n -= 128; | ||||
| 					goto again; | ||||
| 				} | ||||
| 				*op++ = (uint8)(-(n-1)); | ||||
| 				*op++ = (uint8) b; | ||||
| 			} else { | ||||
| 				lastliteral = op; | ||||
| 				*op++ = 0; | ||||
| 				*op++ = (uint8) b; | ||||
| 				state = LITERAL; | ||||
| 			} | ||||
| 			break; | ||||
| 		case LITERAL_RUN:	/* literal followed by a run */ | ||||
| 			/* | ||||
| 			 * Check to see if previous run should | ||||
| 			 * be converted to a literal, in which | ||||
| 			 * case we convert literal-run-literal | ||||
| 			 * to a single literal. | ||||
| 			 */ | ||||
| 			if (n == 1 && op[-2] == (uint8) -1 && | ||||
| 			    *lastliteral < 126) { | ||||
| 				state = (((*lastliteral) += 2) == 127 ? | ||||
| 				    BASE : LITERAL); | ||||
| 				op[-2] = op[-1];	/* replicate */ | ||||
| 			} else | ||||
| 				state = RUN; | ||||
| 			goto again; | ||||
| 		} | ||||
| 	} | ||||
| 	tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp); | ||||
| 	tif->tif_rawcp = op; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode a rectangular chunk of pixels.  We break it up | ||||
|  * into row-sized pieces to insure that encoded runs do | ||||
|  * not span rows.  Otherwise, there can be problems with | ||||
|  * the decoder if data is read, for example, by scanlines | ||||
|  * when it was encoded by strips. | ||||
|  */ | ||||
| static int | ||||
| PackBitsEncodeChunk(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	tmsize_t rowsize = *(tmsize_t*)tif->tif_data; | ||||
|  | ||||
| 	while (cc > 0) { | ||||
| 		tmsize_t chunk = rowsize; | ||||
| 		 | ||||
| 		if( cc < chunk ) | ||||
| 		    chunk = cc; | ||||
|  | ||||
| 		if (PackBitsEncode(tif, bp, chunk, s) < 0) | ||||
| 		    return (-1); | ||||
| 		bp += chunk; | ||||
| 		cc -= chunk; | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static int | ||||
| PackBitsDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "PackBitsDecode"; | ||||
| 	char *bp; | ||||
| 	tmsize_t cc; | ||||
| 	long n; | ||||
| 	int b; | ||||
|  | ||||
| 	(void) s; | ||||
| 	bp = (char*) tif->tif_rawcp; | ||||
| 	cc = tif->tif_rawcc; | ||||
| 	while (cc > 0 && occ > 0) { | ||||
| 		n = (long) *bp++; | ||||
| 		cc--; | ||||
| 		/* | ||||
| 		 * Watch out for compilers that | ||||
| 		 * don't sign extend chars... | ||||
| 		 */ | ||||
| 		if (n >= 128) | ||||
| 			n -= 256; | ||||
| 		if (n < 0) {		/* replicate next byte -n+1 times */ | ||||
| 			if (n == -128)	/* nop */ | ||||
| 				continue; | ||||
| 			n = -n + 1; | ||||
| 			if( occ < (tmsize_t)n ) | ||||
| 			{ | ||||
| 				TIFFWarningExt(tif->tif_clientdata, module, | ||||
| 				    "Discarding %lu bytes to avoid buffer overrun", | ||||
| 				    (unsigned long) ((tmsize_t)n - occ)); | ||||
| 				n = (long)occ; | ||||
| 			} | ||||
| 			if( cc == 0 ) | ||||
| 			{ | ||||
| 				TIFFWarningExt(tif->tif_clientdata, module, | ||||
| 					       "Terminating PackBitsDecode due to lack of data."); | ||||
| 				break; | ||||
| 			} | ||||
| 			occ -= n; | ||||
| 			b = *bp++; | ||||
| 			cc--; | ||||
| 			while (n-- > 0) | ||||
| 				*op++ = (uint8) b; | ||||
| 		} else {		/* copy next n+1 bytes literally */ | ||||
| 			if (occ < (tmsize_t)(n + 1)) | ||||
| 			{ | ||||
| 				TIFFWarningExt(tif->tif_clientdata, module, | ||||
| 				    "Discarding %lu bytes to avoid buffer overrun", | ||||
| 				    (unsigned long) ((tmsize_t)n - occ + 1)); | ||||
| 				n = (long)occ - 1; | ||||
| 			} | ||||
| 			if (cc < (tmsize_t) (n+1))  | ||||
| 			{ | ||||
| 				TIFFWarningExt(tif->tif_clientdata, module, | ||||
| 					       "Terminating PackBitsDecode due to lack of data."); | ||||
| 				break; | ||||
| 			} | ||||
| 			_TIFFmemcpy(op, bp, ++n); | ||||
| 			op += n; occ -= n; | ||||
| 			bp += n; cc -= n; | ||||
| 		} | ||||
| 	} | ||||
| 	tif->tif_rawcp = (uint8*) bp; | ||||
| 	tif->tif_rawcc = cc; | ||||
| 	if (occ > 0) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 		    "Not enough data for scanline %lu", | ||||
| 		    (unsigned long) tif->tif_row); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| int | ||||
| TIFFInitPackBits(TIFF* tif, int scheme) | ||||
| { | ||||
| 	(void) scheme; | ||||
| 	tif->tif_decoderow = PackBitsDecode; | ||||
| 	tif->tif_decodestrip = PackBitsDecode; | ||||
| 	tif->tif_decodetile = PackBitsDecode; | ||||
| 	tif->tif_preencode = PackBitsPreEncode; | ||||
| 	tif->tif_postencode = PackBitsPostEncode; | ||||
| 	tif->tif_encoderow = PackBitsEncode; | ||||
| 	tif->tif_encodestrip = PackBitsEncodeChunk; | ||||
| 	tif->tif_encodetile = PackBitsEncodeChunk; | ||||
| 	return (1); | ||||
| } | ||||
| #endif /* PACKBITS_SUPPORT */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1485
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_pixarlog.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1485
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_pixarlog.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										881
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_predict.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										881
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_predict.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,881 @@ | ||||
| /* $Id: tif_predict.c,v 1.44 2017-06-18 10:31:50 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Predictor Tag Support (used by multiple codecs). | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
| #include "tif_predict.h" | ||||
|  | ||||
| #define	PredictorState(tif)	((TIFFPredictorState*) (tif)->tif_data) | ||||
|  | ||||
| static int horAcc8(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int horAcc16(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int horAcc32(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int swabHorAcc16(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int swabHorAcc32(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int horDiff8(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int horDiff16(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int horDiff32(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int swabHorDiff16(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int swabHorDiff32(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int fpAcc(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int fpDiff(TIFF* tif, uint8* cp0, tmsize_t cc); | ||||
| static int PredictorDecodeRow(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s); | ||||
| static int PredictorDecodeTile(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s); | ||||
| static int PredictorEncodeRow(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s); | ||||
| static int PredictorEncodeTile(TIFF* tif, uint8* bp0, tmsize_t cc0, uint16 s); | ||||
|  | ||||
| static int | ||||
| PredictorSetup(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "PredictorSetup"; | ||||
|  | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
| 	TIFFDirectory* td = &tif->tif_dir; | ||||
|  | ||||
| 	switch (sp->predictor)		/* no differencing */ | ||||
| 	{ | ||||
| 		case PREDICTOR_NONE: | ||||
| 			return 1; | ||||
| 		case PREDICTOR_HORIZONTAL: | ||||
| 			if (td->td_bitspersample != 8 | ||||
| 			    && td->td_bitspersample != 16 | ||||
| 			    && td->td_bitspersample != 32) { | ||||
| 				TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 				    "Horizontal differencing \"Predictor\" not supported with %d-bit samples", | ||||
| 				    td->td_bitspersample); | ||||
| 				return 0; | ||||
| 			} | ||||
| 			break; | ||||
| 		case PREDICTOR_FLOATINGPOINT: | ||||
| 			if (td->td_sampleformat != SAMPLEFORMAT_IEEEFP) { | ||||
| 				TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 				    "Floating point \"Predictor\" not supported with %d data format", | ||||
| 				    td->td_sampleformat); | ||||
| 				return 0; | ||||
| 			} | ||||
|                         if (td->td_bitspersample != 16 | ||||
|                             && td->td_bitspersample != 24 | ||||
|                             && td->td_bitspersample != 32 | ||||
|                             && td->td_bitspersample != 64) { /* Should 64 be allowed? */ | ||||
|                                 TIFFErrorExt(tif->tif_clientdata, module, | ||||
|                                              "Floating point \"Predictor\" not supported with %d-bit samples", | ||||
|                                              td->td_bitspersample); | ||||
| 				return 0; | ||||
|                             } | ||||
| 			break; | ||||
| 		default: | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "\"Predictor\" value %d not supported", | ||||
| 			    sp->predictor); | ||||
| 			return 0; | ||||
| 	} | ||||
| 	sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ? | ||||
| 	    td->td_samplesperpixel : 1); | ||||
| 	/* | ||||
| 	 * Calculate the scanline/tile-width size in bytes. | ||||
| 	 */ | ||||
| 	if (isTiled(tif)) | ||||
| 		sp->rowsize = TIFFTileRowSize(tif); | ||||
| 	else | ||||
| 		sp->rowsize = TIFFScanlineSize(tif); | ||||
| 	if (sp->rowsize == 0) | ||||
| 		return 0; | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| PredictorSetupDecode(TIFF* tif) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
| 	TIFFDirectory* td = &tif->tif_dir; | ||||
|  | ||||
| 	/* Note: when PredictorSetup() fails, the effets of setupdecode() */ | ||||
| 	/* will not be "cancelled" so setupdecode() might be robust to */ | ||||
| 	/* be called several times. */ | ||||
| 	if (!(*sp->setupdecode)(tif) || !PredictorSetup(tif)) | ||||
| 		return 0; | ||||
|  | ||||
| 	if (sp->predictor == 2) { | ||||
| 		switch (td->td_bitspersample) { | ||||
| 			case 8:  sp->decodepfunc = horAcc8; break; | ||||
| 			case 16: sp->decodepfunc = horAcc16; break; | ||||
| 			case 32: sp->decodepfunc = horAcc32; break; | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Override default decoding method with one that does the | ||||
| 		 * predictor stuff. | ||||
| 		 */ | ||||
|                 if( tif->tif_decoderow != PredictorDecodeRow ) | ||||
|                 { | ||||
|                     sp->decoderow = tif->tif_decoderow; | ||||
|                     tif->tif_decoderow = PredictorDecodeRow; | ||||
|                     sp->decodestrip = tif->tif_decodestrip; | ||||
|                     tif->tif_decodestrip = PredictorDecodeTile; | ||||
|                     sp->decodetile = tif->tif_decodetile; | ||||
|                     tif->tif_decodetile = PredictorDecodeTile; | ||||
|                 } | ||||
|  | ||||
| 		/* | ||||
| 		 * If the data is horizontally differenced 16-bit data that | ||||
| 		 * requires byte-swapping, then it must be byte swapped before | ||||
| 		 * the accumulation step.  We do this with a special-purpose | ||||
| 		 * routine and override the normal post decoding logic that | ||||
| 		 * the library setup when the directory was read. | ||||
| 		 */ | ||||
| 		if (tif->tif_flags & TIFF_SWAB) { | ||||
| 			if (sp->decodepfunc == horAcc16) { | ||||
| 				sp->decodepfunc = swabHorAcc16; | ||||
| 				tif->tif_postdecode = _TIFFNoPostDecode; | ||||
|             } else if (sp->decodepfunc == horAcc32) { | ||||
| 				sp->decodepfunc = swabHorAcc32; | ||||
| 				tif->tif_postdecode = _TIFFNoPostDecode; | ||||
|             } | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	else if (sp->predictor == 3) { | ||||
| 		sp->decodepfunc = fpAcc; | ||||
| 		/* | ||||
| 		 * Override default decoding method with one that does the | ||||
| 		 * predictor stuff. | ||||
| 		 */ | ||||
|                 if( tif->tif_decoderow != PredictorDecodeRow ) | ||||
|                 { | ||||
|                     sp->decoderow = tif->tif_decoderow; | ||||
|                     tif->tif_decoderow = PredictorDecodeRow; | ||||
|                     sp->decodestrip = tif->tif_decodestrip; | ||||
|                     tif->tif_decodestrip = PredictorDecodeTile; | ||||
|                     sp->decodetile = tif->tif_decodetile; | ||||
|                     tif->tif_decodetile = PredictorDecodeTile; | ||||
|                 } | ||||
| 		/* | ||||
| 		 * The data should not be swapped outside of the floating | ||||
| 		 * point predictor, the accumulation routine should return | ||||
| 		 * byres in the native order. | ||||
| 		 */ | ||||
| 		if (tif->tif_flags & TIFF_SWAB) { | ||||
| 			tif->tif_postdecode = _TIFFNoPostDecode; | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Allocate buffer to keep the decoded bytes before | ||||
| 		 * rearranging in the right order | ||||
| 		 */ | ||||
| 	} | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| PredictorSetupEncode(TIFF* tif) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
| 	TIFFDirectory* td = &tif->tif_dir; | ||||
|  | ||||
| 	if (!(*sp->setupencode)(tif) || !PredictorSetup(tif)) | ||||
| 		return 0; | ||||
|  | ||||
| 	if (sp->predictor == 2) { | ||||
| 		switch (td->td_bitspersample) { | ||||
| 			case 8:  sp->encodepfunc = horDiff8; break; | ||||
| 			case 16: sp->encodepfunc = horDiff16; break; | ||||
| 			case 32: sp->encodepfunc = horDiff32; break; | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Override default encoding method with one that does the | ||||
| 		 * predictor stuff. | ||||
| 		 */ | ||||
|                 if( tif->tif_encoderow != PredictorEncodeRow ) | ||||
|                 { | ||||
|                     sp->encoderow = tif->tif_encoderow; | ||||
|                     tif->tif_encoderow = PredictorEncodeRow; | ||||
|                     sp->encodestrip = tif->tif_encodestrip; | ||||
|                     tif->tif_encodestrip = PredictorEncodeTile; | ||||
|                     sp->encodetile = tif->tif_encodetile; | ||||
|                     tif->tif_encodetile = PredictorEncodeTile; | ||||
|                 } | ||||
|  | ||||
|                 /* | ||||
|                  * If the data is horizontally differenced 16-bit data that | ||||
|                  * requires byte-swapping, then it must be byte swapped after | ||||
|                  * the differentiation step.  We do this with a special-purpose | ||||
|                  * routine and override the normal post decoding logic that | ||||
|                  * the library setup when the directory was read. | ||||
|                  */ | ||||
|                 if (tif->tif_flags & TIFF_SWAB) { | ||||
|                     if (sp->encodepfunc == horDiff16) { | ||||
|                             sp->encodepfunc = swabHorDiff16; | ||||
|                             tif->tif_postdecode = _TIFFNoPostDecode; | ||||
|                     } else if (sp->encodepfunc == horDiff32) { | ||||
|                             sp->encodepfunc = swabHorDiff32; | ||||
|                             tif->tif_postdecode = _TIFFNoPostDecode; | ||||
|                     } | ||||
|                 } | ||||
|         } | ||||
|  | ||||
| 	else if (sp->predictor == 3) { | ||||
| 		sp->encodepfunc = fpDiff; | ||||
| 		/* | ||||
| 		 * Override default encoding method with one that does the | ||||
| 		 * predictor stuff. | ||||
| 		 */ | ||||
|                 if( tif->tif_encoderow != PredictorEncodeRow ) | ||||
|                 { | ||||
|                     sp->encoderow = tif->tif_encoderow; | ||||
|                     tif->tif_encoderow = PredictorEncodeRow; | ||||
|                     sp->encodestrip = tif->tif_encodestrip; | ||||
|                     tif->tif_encodestrip = PredictorEncodeTile; | ||||
|                     sp->encodetile = tif->tif_encodetile; | ||||
|                     tif->tif_encodetile = PredictorEncodeTile; | ||||
|                 } | ||||
| 	} | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| #define REPEAT4(n, op)		\ | ||||
|     switch (n) {		\ | ||||
|     default: { \ | ||||
|         tmsize_t i; for (i = n-4; i > 0; i--) { op; } }  /*-fallthrough*/  \ | ||||
|     case 4:  op; /*-fallthrough*/ \ | ||||
|     case 3:  op; /*-fallthrough*/ \ | ||||
|     case 2:  op; /*-fallthrough*/ \ | ||||
|     case 1:  op; /*-fallthrough*/ \ | ||||
|     case 0:  ;			\ | ||||
|     } | ||||
|  | ||||
| /* Remarks related to C standard compliance in all below functions : */ | ||||
| /* - to avoid any undefined behaviour, we only operate on unsigned types */ | ||||
| /*   since the behaviour of "overflows" is defined (wrap over) */ | ||||
| /* - when storing into the byte stream, we explicitly mask with 0xff so */ | ||||
| /*   as to make icc -check=conversions happy (not necessary by the standard) */ | ||||
|  | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| horAcc8(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	tmsize_t stride = PredictorState(tif)->stride; | ||||
|  | ||||
| 	unsigned char* cp = (unsigned char*) cp0; | ||||
|     if((cc%stride)!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "horAcc8", | ||||
|                      "%s", "(cc%stride)!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| 	if (cc > stride) { | ||||
| 		/* | ||||
| 		 * Pipeline the most common cases. | ||||
| 		 */ | ||||
| 		if (stride == 3)  { | ||||
| 			unsigned int cr = cp[0]; | ||||
| 			unsigned int cg = cp[1]; | ||||
| 			unsigned int cb = cp[2]; | ||||
| 			cc -= 3; | ||||
| 			cp += 3; | ||||
| 			while (cc>0) { | ||||
| 				cp[0] = (unsigned char) ((cr += cp[0]) & 0xff); | ||||
| 				cp[1] = (unsigned char) ((cg += cp[1]) & 0xff); | ||||
| 				cp[2] = (unsigned char) ((cb += cp[2]) & 0xff); | ||||
| 				cc -= 3; | ||||
| 				cp += 3; | ||||
| 			} | ||||
| 		} else if (stride == 4)  { | ||||
| 			unsigned int cr = cp[0]; | ||||
| 			unsigned int cg = cp[1]; | ||||
| 			unsigned int cb = cp[2]; | ||||
| 			unsigned int ca = cp[3]; | ||||
| 			cc -= 4; | ||||
| 			cp += 4; | ||||
| 			while (cc>0) { | ||||
| 				cp[0] = (unsigned char) ((cr += cp[0]) & 0xff); | ||||
| 				cp[1] = (unsigned char) ((cg += cp[1]) & 0xff); | ||||
| 				cp[2] = (unsigned char) ((cb += cp[2]) & 0xff); | ||||
| 				cp[3] = (unsigned char) ((ca += cp[3]) & 0xff); | ||||
| 				cc -= 4; | ||||
| 				cp += 4; | ||||
| 			} | ||||
| 		} else  { | ||||
| 			cc -= stride; | ||||
| 			do { | ||||
| 				REPEAT4(stride, cp[stride] = | ||||
| 					(unsigned char) ((cp[stride] + *cp) & 0xff); cp++) | ||||
| 				cc -= stride; | ||||
| 			} while (cc>0); | ||||
| 		} | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| swabHorAcc16(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	uint16* wp = (uint16*) cp0; | ||||
| 	tmsize_t wc = cc / 2; | ||||
|  | ||||
|         TIFFSwabArrayOfShort(wp, wc); | ||||
|         return horAcc16(tif, cp0, cc); | ||||
| } | ||||
|  | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| horAcc16(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	tmsize_t stride = PredictorState(tif)->stride; | ||||
| 	uint16* wp = (uint16*) cp0; | ||||
| 	tmsize_t wc = cc / 2; | ||||
|  | ||||
|     if((cc%(2*stride))!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "horAcc16", | ||||
|                      "%s", "cc%(2*stride))!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| 	if (wc > stride) { | ||||
| 		wc -= stride; | ||||
| 		do { | ||||
| 			REPEAT4(stride, wp[stride] = (uint16)(((unsigned int)wp[stride] + (unsigned int)wp[0]) & 0xffff); wp++) | ||||
| 			wc -= stride; | ||||
| 		} while (wc > 0); | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| swabHorAcc32(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	uint32* wp = (uint32*) cp0; | ||||
| 	tmsize_t wc = cc / 4; | ||||
|  | ||||
|         TIFFSwabArrayOfLong(wp, wc); | ||||
| 	return horAcc32(tif, cp0, cc); | ||||
| } | ||||
|  | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| horAcc32(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	tmsize_t stride = PredictorState(tif)->stride; | ||||
| 	uint32* wp = (uint32*) cp0; | ||||
| 	tmsize_t wc = cc / 4; | ||||
|  | ||||
|     if((cc%(4*stride))!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "horAcc32", | ||||
|                      "%s", "cc%(4*stride))!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| 	if (wc > stride) { | ||||
| 		wc -= stride; | ||||
| 		do { | ||||
| 			REPEAT4(stride, wp[stride] += wp[0]; wp++) | ||||
| 			wc -= stride; | ||||
| 		} while (wc > 0); | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Floating point predictor accumulation routine. | ||||
|  */ | ||||
| static int | ||||
| fpAcc(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	tmsize_t stride = PredictorState(tif)->stride; | ||||
| 	uint32 bps = tif->tif_dir.td_bitspersample / 8; | ||||
| 	tmsize_t wc = cc / bps; | ||||
| 	tmsize_t count = cc; | ||||
| 	uint8 *cp = (uint8 *) cp0; | ||||
| 	uint8 *tmp; | ||||
|  | ||||
|     if(cc%(bps*stride)!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "fpAcc", | ||||
|                      "%s", "cc%(bps*stride))!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     tmp = (uint8 *)_TIFFmalloc(cc); | ||||
| 	if (!tmp) | ||||
| 		return 0; | ||||
|  | ||||
| 	while (count > stride) { | ||||
| 		REPEAT4(stride, cp[stride] = | ||||
|                         (unsigned char) ((cp[stride] + cp[0]) & 0xff); cp++) | ||||
| 		count -= stride; | ||||
| 	} | ||||
|  | ||||
| 	_TIFFmemcpy(tmp, cp0, cc); | ||||
| 	cp = (uint8 *) cp0; | ||||
| 	for (count = 0; count < wc; count++) { | ||||
| 		uint32 byte; | ||||
| 		for (byte = 0; byte < bps; byte++) { | ||||
| 			#if WORDS_BIGENDIAN | ||||
| 			cp[bps * count + byte] = tmp[byte * wc + count]; | ||||
| 			#else | ||||
| 			cp[bps * count + byte] = | ||||
| 				tmp[(bps - byte - 1) * wc + count]; | ||||
| 			#endif | ||||
| 		} | ||||
| 	} | ||||
| 	_TIFFfree(tmp); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Decode a scanline and apply the predictor routine. | ||||
|  */ | ||||
| static int | ||||
| PredictorDecodeRow(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s) | ||||
| { | ||||
| 	TIFFPredictorState *sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->decoderow != NULL); | ||||
| 	assert(sp->decodepfunc != NULL);   | ||||
|  | ||||
| 	if ((*sp->decoderow)(tif, op0, occ0, s)) { | ||||
| 		return (*sp->decodepfunc)(tif, op0, occ0); | ||||
| 	} else | ||||
| 		return 0; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Decode a tile/strip and apply the predictor routine. | ||||
|  * Note that horizontal differencing must be done on a | ||||
|  * row-by-row basis.  The width of a "row" has already | ||||
|  * been calculated at pre-decode time according to the | ||||
|  * strip/tile dimensions. | ||||
|  */ | ||||
| static int | ||||
| PredictorDecodeTile(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s) | ||||
| { | ||||
| 	TIFFPredictorState *sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->decodetile != NULL); | ||||
|  | ||||
| 	if ((*sp->decodetile)(tif, op0, occ0, s)) { | ||||
| 		tmsize_t rowsize = sp->rowsize; | ||||
| 		assert(rowsize > 0); | ||||
| 		if((occ0%rowsize) !=0) | ||||
|         { | ||||
|             TIFFErrorExt(tif->tif_clientdata, "PredictorDecodeTile", | ||||
|                          "%s", "occ0%rowsize != 0"); | ||||
|             return 0; | ||||
|         } | ||||
| 		assert(sp->decodepfunc != NULL); | ||||
| 		while (occ0 > 0) { | ||||
| 			if( !(*sp->decodepfunc)(tif, op0, rowsize) ) | ||||
|                 return 0; | ||||
| 			occ0 -= rowsize; | ||||
| 			op0 += rowsize; | ||||
| 		} | ||||
| 		return 1; | ||||
| 	} else | ||||
| 		return 0; | ||||
| } | ||||
|  | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| horDiff8(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
| 	tmsize_t stride = sp->stride; | ||||
| 	unsigned char* cp = (unsigned char*) cp0; | ||||
|  | ||||
|     if((cc%stride)!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "horDiff8", | ||||
|                      "%s", "(cc%stride)!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| 	if (cc > stride) { | ||||
| 		cc -= stride; | ||||
| 		/* | ||||
| 		 * Pipeline the most common cases. | ||||
| 		 */ | ||||
| 		if (stride == 3) { | ||||
| 			unsigned int r1, g1, b1; | ||||
| 			unsigned int r2 = cp[0]; | ||||
| 			unsigned int g2 = cp[1]; | ||||
| 			unsigned  int b2 = cp[2]; | ||||
| 			do { | ||||
| 				r1 = cp[3]; cp[3] = (unsigned char)((r1-r2)&0xff); r2 = r1; | ||||
| 				g1 = cp[4]; cp[4] = (unsigned char)((g1-g2)&0xff); g2 = g1; | ||||
| 				b1 = cp[5]; cp[5] = (unsigned char)((b1-b2)&0xff); b2 = b1; | ||||
| 				cp += 3; | ||||
| 			} while ((cc -= 3) > 0); | ||||
| 		} else if (stride == 4) { | ||||
| 			unsigned int r1, g1, b1, a1; | ||||
| 			unsigned int r2 = cp[0]; | ||||
| 			unsigned int g2 = cp[1]; | ||||
| 			unsigned int b2 = cp[2]; | ||||
| 			unsigned int a2 = cp[3]; | ||||
| 			do { | ||||
| 				r1 = cp[4]; cp[4] = (unsigned char)((r1-r2)&0xff); r2 = r1; | ||||
| 				g1 = cp[5]; cp[5] = (unsigned char)((g1-g2)&0xff); g2 = g1; | ||||
| 				b1 = cp[6]; cp[6] = (unsigned char)((b1-b2)&0xff); b2 = b1; | ||||
| 				a1 = cp[7]; cp[7] = (unsigned char)((a1-a2)&0xff); a2 = a1; | ||||
| 				cp += 4; | ||||
| 			} while ((cc -= 4) > 0); | ||||
| 		} else { | ||||
| 			cp += cc - 1; | ||||
| 			do { | ||||
| 				REPEAT4(stride, cp[stride] = (unsigned char)((cp[stride] - cp[0])&0xff); cp--) | ||||
| 			} while ((cc -= stride) > 0); | ||||
| 		} | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| horDiff16(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
| 	tmsize_t stride = sp->stride; | ||||
| 	uint16 *wp = (uint16*) cp0; | ||||
| 	tmsize_t wc = cc/2; | ||||
|  | ||||
|     if((cc%(2*stride))!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "horDiff8", | ||||
|                      "%s", "(cc%(2*stride))!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| 	if (wc > stride) { | ||||
| 		wc -= stride; | ||||
| 		wp += wc - 1; | ||||
| 		do { | ||||
| 			REPEAT4(stride, wp[stride] = (uint16)(((unsigned int)wp[stride] - (unsigned int)wp[0]) & 0xffff); wp--) | ||||
| 			wc -= stride; | ||||
| 		} while (wc > 0); | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| swabHorDiff16(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
|     uint16* wp = (uint16*) cp0; | ||||
|     tmsize_t wc = cc / 2; | ||||
|  | ||||
|     if( !horDiff16(tif, cp0, cc) ) | ||||
|         return 0; | ||||
|  | ||||
|     TIFFSwabArrayOfShort(wp, wc); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| horDiff32(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
| 	tmsize_t stride = sp->stride; | ||||
| 	uint32 *wp = (uint32*) cp0; | ||||
| 	tmsize_t wc = cc/4; | ||||
|  | ||||
|     if((cc%(4*stride))!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "horDiff32", | ||||
|                      "%s", "(cc%(4*stride))!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| 	if (wc > stride) { | ||||
| 		wc -= stride; | ||||
| 		wp += wc - 1; | ||||
| 		do { | ||||
| 			REPEAT4(stride, wp[stride] -= wp[0]; wp--) | ||||
| 			wc -= stride; | ||||
| 		} while (wc > 0); | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| swabHorDiff32(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
|     uint32* wp = (uint32*) cp0; | ||||
|     tmsize_t wc = cc / 4; | ||||
|  | ||||
|     if( !horDiff32(tif, cp0, cc) ) | ||||
|         return 0; | ||||
|  | ||||
|     TIFFSwabArrayOfLong(wp, wc); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Floating point predictor differencing routine. | ||||
|  */ | ||||
| TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| static int | ||||
| fpDiff(TIFF* tif, uint8* cp0, tmsize_t cc) | ||||
| { | ||||
| 	tmsize_t stride = PredictorState(tif)->stride; | ||||
| 	uint32 bps = tif->tif_dir.td_bitspersample / 8; | ||||
| 	tmsize_t wc = cc / bps; | ||||
| 	tmsize_t count; | ||||
| 	uint8 *cp = (uint8 *) cp0; | ||||
| 	uint8 *tmp; | ||||
|  | ||||
|     if((cc%(bps*stride))!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "fpDiff", | ||||
|                      "%s", "(cc%(bps*stride))!=0"); | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
|     tmp = (uint8 *)_TIFFmalloc(cc); | ||||
| 	if (!tmp) | ||||
| 		return 0; | ||||
|  | ||||
| 	_TIFFmemcpy(tmp, cp0, cc); | ||||
| 	for (count = 0; count < wc; count++) { | ||||
| 		uint32 byte; | ||||
| 		for (byte = 0; byte < bps; byte++) { | ||||
| 			#if WORDS_BIGENDIAN | ||||
| 			cp[byte * wc + count] = tmp[bps * count + byte]; | ||||
| 			#else | ||||
| 			cp[(bps - byte - 1) * wc + count] = | ||||
| 				tmp[bps * count + byte]; | ||||
| 			#endif | ||||
| 		} | ||||
| 	} | ||||
| 	_TIFFfree(tmp); | ||||
|  | ||||
| 	cp = (uint8 *) cp0; | ||||
| 	cp += cc - stride - 1; | ||||
| 	for (count = cc; count > stride; count -= stride) | ||||
| 		REPEAT4(stride, cp[stride] = (unsigned char)((cp[stride] - cp[0])&0xff); cp--) | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| PredictorEncodeRow(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	TIFFPredictorState *sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->encodepfunc != NULL); | ||||
| 	assert(sp->encoderow != NULL); | ||||
|  | ||||
| 	/* XXX horizontal differencing alters user's data XXX */ | ||||
| 	if( !(*sp->encodepfunc)(tif, bp, cc) ) | ||||
|         return 0; | ||||
| 	return (*sp->encoderow)(tif, bp, cc, s); | ||||
| } | ||||
|  | ||||
| static int | ||||
| PredictorEncodeTile(TIFF* tif, uint8* bp0, tmsize_t cc0, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "PredictorEncodeTile"; | ||||
| 	TIFFPredictorState *sp = PredictorState(tif); | ||||
|         uint8 *working_copy; | ||||
| 	tmsize_t cc = cc0, rowsize; | ||||
| 	unsigned char* bp; | ||||
|         int result_code; | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->encodepfunc != NULL); | ||||
| 	assert(sp->encodetile != NULL); | ||||
|  | ||||
|         /*  | ||||
|          * Do predictor manipulation in a working buffer to avoid altering | ||||
|          * the callers buffer. http://trac.osgeo.org/gdal/ticket/1965 | ||||
|          */ | ||||
|         working_copy = (uint8*) _TIFFmalloc(cc0); | ||||
|         if( working_copy == NULL ) | ||||
|         { | ||||
|             TIFFErrorExt(tif->tif_clientdata, module,  | ||||
|                          "Out of memory allocating " TIFF_SSIZE_FORMAT " byte temp buffer.", | ||||
|                          cc0 ); | ||||
|             return 0; | ||||
|         } | ||||
|         memcpy( working_copy, bp0, cc0 ); | ||||
|         bp = working_copy; | ||||
|  | ||||
| 	rowsize = sp->rowsize; | ||||
| 	assert(rowsize > 0); | ||||
| 	if((cc0%rowsize)!=0) | ||||
|     { | ||||
|         TIFFErrorExt(tif->tif_clientdata, "PredictorEncodeTile", | ||||
|                      "%s", "(cc0%rowsize)!=0"); | ||||
|         _TIFFfree( working_copy ); | ||||
|         return 0; | ||||
|     } | ||||
| 	while (cc > 0) { | ||||
| 		(*sp->encodepfunc)(tif, bp, rowsize); | ||||
| 		cc -= rowsize; | ||||
| 		bp += rowsize; | ||||
| 	} | ||||
| 	result_code = (*sp->encodetile)(tif, working_copy, cc0, s); | ||||
|  | ||||
|         _TIFFfree( working_copy ); | ||||
|  | ||||
|         return result_code; | ||||
| } | ||||
|  | ||||
| #define	FIELD_PREDICTOR	(FIELD_CODEC+0)		/* XXX */ | ||||
|  | ||||
| static const TIFFField predictFields[] = { | ||||
|     { TIFFTAG_PREDICTOR, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UINT16, FIELD_PREDICTOR, FALSE, FALSE, "Predictor", NULL }, | ||||
| }; | ||||
|  | ||||
| static int | ||||
| PredictorVSetField(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	TIFFPredictorState *sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->vsetparent != NULL); | ||||
|  | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_PREDICTOR: | ||||
| 		sp->predictor = (uint16) va_arg(ap, uint16_vap); | ||||
| 		TIFFSetFieldBit(tif, FIELD_PREDICTOR); | ||||
| 		break; | ||||
| 	default: | ||||
| 		return (*sp->vsetparent)(tif, tag, ap); | ||||
| 	} | ||||
| 	tif->tif_flags |= TIFF_DIRTYDIRECT; | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| PredictorVGetField(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	TIFFPredictorState *sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->vgetparent != NULL); | ||||
|  | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_PREDICTOR: | ||||
| 		*va_arg(ap, uint16*) = (uint16)sp->predictor; | ||||
| 		break; | ||||
| 	default: | ||||
| 		return (*sp->vgetparent)(tif, tag, ap); | ||||
| 	} | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| static void | ||||
| PredictorPrintDir(TIFF* tif, FILE* fd, long flags) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
|  | ||||
| 	(void) flags; | ||||
| 	if (TIFFFieldSet(tif,FIELD_PREDICTOR)) { | ||||
| 		fprintf(fd, "  Predictor: "); | ||||
| 		switch (sp->predictor) { | ||||
| 			case 1: fprintf(fd, "none "); break; | ||||
| 			case 2: fprintf(fd, "horizontal differencing "); break; | ||||
| 			case 3: fprintf(fd, "floating point predictor "); break; | ||||
| 		} | ||||
| 		fprintf(fd, "%d (0x%x)\n", sp->predictor, sp->predictor); | ||||
| 	} | ||||
| 	if (sp->printdir) | ||||
| 		(*sp->printdir)(tif, fd, flags); | ||||
| } | ||||
|  | ||||
| int | ||||
| TIFFPredictorInit(TIFF* tif) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != 0); | ||||
|  | ||||
| 	/* | ||||
| 	 * Merge codec-specific tag information. | ||||
| 	 */ | ||||
| 	if (!_TIFFMergeFields(tif, predictFields, | ||||
| 			      TIFFArrayCount(predictFields))) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, "TIFFPredictorInit", | ||||
| 		    "Merging Predictor codec-specific tags failed"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| 	 * Override parent get/set field methods. | ||||
| 	 */ | ||||
| 	sp->vgetparent = tif->tif_tagmethods.vgetfield; | ||||
| 	tif->tif_tagmethods.vgetfield = | ||||
|             PredictorVGetField;/* hook for predictor tag */ | ||||
| 	sp->vsetparent = tif->tif_tagmethods.vsetfield; | ||||
| 	tif->tif_tagmethods.vsetfield = | ||||
| 	    PredictorVSetField;/* hook for predictor tag */ | ||||
| 	sp->printdir = tif->tif_tagmethods.printdir; | ||||
| 	tif->tif_tagmethods.printdir = | ||||
|             PredictorPrintDir;	/* hook for predictor tag */ | ||||
|  | ||||
| 	sp->setupdecode = tif->tif_setupdecode; | ||||
| 	tif->tif_setupdecode = PredictorSetupDecode; | ||||
| 	sp->setupencode = tif->tif_setupencode; | ||||
| 	tif->tif_setupencode = PredictorSetupEncode; | ||||
|  | ||||
| 	sp->predictor = 1;			/* default value */ | ||||
| 	sp->encodepfunc = NULL;			/* no predictor routine */ | ||||
| 	sp->decodepfunc = NULL;			/* no predictor routine */ | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| int | ||||
| TIFFPredictorCleanup(TIFF* tif) | ||||
| { | ||||
| 	TIFFPredictorState* sp = PredictorState(tif); | ||||
|  | ||||
| 	assert(sp != 0); | ||||
|  | ||||
| 	tif->tif_tagmethods.vgetfield = sp->vgetparent; | ||||
| 	tif->tif_tagmethods.vsetfield = sp->vsetparent; | ||||
| 	tif->tif_tagmethods.printdir = sp->printdir; | ||||
| 	tif->tif_setupdecode = sp->setupdecode; | ||||
| 	tif->tif_setupencode = sp->setupencode; | ||||
|  | ||||
| 	return 1; | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										79
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_predict.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_predict.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | ||||
| /* $Id: tif_predict.h,v 1.9 2016-10-31 17:24:26 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1995-1997 Sam Leffler | ||||
|  * Copyright (c) 1995-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _TIFFPREDICT_ | ||||
| #define	_TIFFPREDICT_ | ||||
| /* | ||||
|  * ``Library-private'' Support for the Predictor Tag | ||||
|  */ | ||||
|  | ||||
| typedef int (*TIFFEncodeDecodeMethod)(TIFF* tif, uint8* buf, tmsize_t size); | ||||
|  | ||||
| /* | ||||
|  * Codecs that want to support the Predictor tag must place | ||||
|  * this structure first in their private state block so that | ||||
|  * the predictor code can cast tif_data to find its state. | ||||
|  */ | ||||
| typedef struct { | ||||
| 	int             predictor;	/* predictor tag value */ | ||||
| 	tmsize_t        stride;		/* sample stride over data */ | ||||
| 	tmsize_t        rowsize;	/* tile/strip row size */ | ||||
|  | ||||
| 	TIFFCodeMethod  encoderow;	/* parent codec encode/decode row */ | ||||
| 	TIFFCodeMethod  encodestrip;	/* parent codec encode/decode strip */ | ||||
| 	TIFFCodeMethod  encodetile;	/* parent codec encode/decode tile */  | ||||
| 	TIFFEncodeDecodeMethod  encodepfunc;	/* horizontal differencer */ | ||||
|  | ||||
| 	TIFFCodeMethod  decoderow;	/* parent codec encode/decode row */ | ||||
| 	TIFFCodeMethod  decodestrip;	/* parent codec encode/decode strip */ | ||||
| 	TIFFCodeMethod  decodetile;	/* parent codec encode/decode tile */  | ||||
| 	TIFFEncodeDecodeMethod  decodepfunc;	/* horizontal accumulator */ | ||||
|  | ||||
| 	TIFFVGetMethod  vgetparent;	/* super-class method */ | ||||
| 	TIFFVSetMethod  vsetparent;	/* super-class method */ | ||||
| 	TIFFPrintMethod printdir;	/* super-class method */ | ||||
| 	TIFFBoolMethod  setupdecode;	/* super-class method */ | ||||
| 	TIFFBoolMethod  setupencode;	/* super-class method */ | ||||
| } TIFFPredictorState; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
| extern int TIFFPredictorInit(TIFF*); | ||||
| extern int TIFFPredictorCleanup(TIFF*); | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
| #endif /* _TIFFPREDICT_ */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										722
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_print.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										722
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_print.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,722 @@ | ||||
| /* $Id: tif_print.c,v 1.65 2016-11-20 22:31:22 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Directory Printing Support | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <ctype.h> | ||||
|  | ||||
| static void | ||||
| _TIFFprintAsciiBounded(FILE* fd, const char* cp, size_t max_chars); | ||||
|  | ||||
| static const char * const photoNames[] = { | ||||
|     "min-is-white",				/* PHOTOMETRIC_MINISWHITE */ | ||||
|     "min-is-black",				/* PHOTOMETRIC_MINISBLACK */ | ||||
|     "RGB color",				/* PHOTOMETRIC_RGB */ | ||||
|     "palette color (RGB from colormap)",	/* PHOTOMETRIC_PALETTE */ | ||||
|     "transparency mask",			/* PHOTOMETRIC_MASK */ | ||||
|     "separated",				/* PHOTOMETRIC_SEPARATED */ | ||||
|     "YCbCr",					/* PHOTOMETRIC_YCBCR */ | ||||
|     "7 (0x7)", | ||||
|     "CIE L*a*b*",				/* PHOTOMETRIC_CIELAB */ | ||||
|     "ICC L*a*b*",				/* PHOTOMETRIC_ICCLAB */ | ||||
|     "ITU L*a*b*" 				/* PHOTOMETRIC_ITULAB */ | ||||
| }; | ||||
| #define	NPHOTONAMES	(sizeof (photoNames) / sizeof (photoNames[0])) | ||||
|  | ||||
| static const char * const orientNames[] = { | ||||
|     "0 (0x0)", | ||||
|     "row 0 top, col 0 lhs",			/* ORIENTATION_TOPLEFT */ | ||||
|     "row 0 top, col 0 rhs",			/* ORIENTATION_TOPRIGHT */ | ||||
|     "row 0 bottom, col 0 rhs",			/* ORIENTATION_BOTRIGHT */ | ||||
|     "row 0 bottom, col 0 lhs",			/* ORIENTATION_BOTLEFT */ | ||||
|     "row 0 lhs, col 0 top",			/* ORIENTATION_LEFTTOP */ | ||||
|     "row 0 rhs, col 0 top",			/* ORIENTATION_RIGHTTOP */ | ||||
|     "row 0 rhs, col 0 bottom",			/* ORIENTATION_RIGHTBOT */ | ||||
|     "row 0 lhs, col 0 bottom",			/* ORIENTATION_LEFTBOT */ | ||||
| }; | ||||
| #define	NORIENTNAMES	(sizeof (orientNames) / sizeof (orientNames[0])) | ||||
|  | ||||
| static void | ||||
| _TIFFPrintField(FILE* fd, const TIFFField *fip, | ||||
| 		uint32 value_count, void *raw_data) | ||||
| { | ||||
| 	uint32 j; | ||||
| 		 | ||||
| 	fprintf(fd, "  %s: ", fip->field_name); | ||||
|  | ||||
| 	for(j = 0; j < value_count; j++) { | ||||
| 		if(fip->field_type == TIFF_BYTE) | ||||
| 			fprintf(fd, "%u", ((uint8 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_UNDEFINED) | ||||
| 			fprintf(fd, "0x%x", | ||||
| 			    (unsigned int) ((unsigned char *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_SBYTE) | ||||
| 			fprintf(fd, "%d", ((int8 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_SHORT) | ||||
| 			fprintf(fd, "%u", ((uint16 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_SSHORT) | ||||
| 			fprintf(fd, "%d", ((int16 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_LONG) | ||||
| 			fprintf(fd, "%lu", | ||||
| 			    (unsigned long)((uint32 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_SLONG) | ||||
| 			fprintf(fd, "%ld", (long)((int32 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_IFD) | ||||
| 			fprintf(fd, "0x%lx", | ||||
| 				(unsigned long)((uint32 *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_RATIONAL | ||||
| 			|| fip->field_type == TIFF_SRATIONAL | ||||
| 			|| fip->field_type == TIFF_FLOAT) | ||||
| 			fprintf(fd, "%f", ((float *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_LONG8) | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 			fprintf(fd, "%I64u", | ||||
| 			    (unsigned __int64)((uint64 *) raw_data)[j]); | ||||
| #else | ||||
| 			fprintf(fd, "%llu", | ||||
| 			    (unsigned long long)((uint64 *) raw_data)[j]); | ||||
| #endif | ||||
| 		else if(fip->field_type == TIFF_SLONG8) | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 			fprintf(fd, "%I64d", (__int64)((int64 *) raw_data)[j]); | ||||
| #else | ||||
| 			fprintf(fd, "%lld", (long long)((int64 *) raw_data)[j]); | ||||
| #endif | ||||
| 		else if(fip->field_type == TIFF_IFD8) | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 			fprintf(fd, "0x%I64x", | ||||
| 				(unsigned __int64)((uint64 *) raw_data)[j]); | ||||
| #else | ||||
| 			fprintf(fd, "0x%llx", | ||||
| 				(unsigned long long)((uint64 *) raw_data)[j]); | ||||
| #endif | ||||
| 		else if(fip->field_type == TIFF_FLOAT) | ||||
| 			fprintf(fd, "%f", ((float *)raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_DOUBLE) | ||||
| 			fprintf(fd, "%f", ((double *) raw_data)[j]); | ||||
| 		else if(fip->field_type == TIFF_ASCII) { | ||||
| 			fprintf(fd, "%s", (char *) raw_data); | ||||
| 			break; | ||||
| 		} | ||||
| 		else { | ||||
| 			fprintf(fd, "<unsupported data type in TIFFPrint>"); | ||||
| 			break; | ||||
| 		} | ||||
|  | ||||
| 		if(j < value_count - 1) | ||||
| 			fprintf(fd, ","); | ||||
| 	} | ||||
|  | ||||
| 	fprintf(fd, "\n"); | ||||
| } | ||||
|  | ||||
| static int | ||||
| _TIFFPrettyPrintField(TIFF* tif, const TIFFField *fip, FILE* fd, uint32 tag, | ||||
| 		      uint32 value_count, void *raw_data) | ||||
| { | ||||
|         (void) tif; | ||||
|  | ||||
| 	/* do not try to pretty print auto-defined fields */ | ||||
| 	if (strncmp(fip->field_name,"Tag ", 4) == 0) { | ||||
| 		return 0; | ||||
| 	} | ||||
|          | ||||
| 	switch (tag) | ||||
| 	{ | ||||
| 		case TIFFTAG_INKSET: | ||||
| 			if (value_count == 2 && fip->field_type == TIFF_SHORT) { | ||||
| 				fprintf(fd, "  Ink Set: "); | ||||
| 				switch (*((uint16*)raw_data)) { | ||||
| 				case INKSET_CMYK: | ||||
| 					fprintf(fd, "CMYK\n"); | ||||
| 					break; | ||||
| 				default: | ||||
| 					fprintf(fd, "%u (0x%x)\n", | ||||
| 						*((uint16*)raw_data), | ||||
| 						*((uint16*)raw_data)); | ||||
| 					break; | ||||
| 				} | ||||
| 				return 1; | ||||
| 			} | ||||
| 			return 0; | ||||
|  | ||||
| 		case TIFFTAG_DOTRANGE: | ||||
| 			if (value_count == 2 && fip->field_type == TIFF_SHORT) { | ||||
| 				fprintf(fd, "  Dot Range: %u-%u\n", | ||||
| 					((uint16*)raw_data)[0], ((uint16*)raw_data)[1]); | ||||
| 				return 1; | ||||
| 			} | ||||
| 			return 0; | ||||
|  | ||||
| 		case TIFFTAG_WHITEPOINT: | ||||
| 			if (value_count == 2 && fip->field_type == TIFF_RATIONAL) { | ||||
| 				fprintf(fd, "  White Point: %g-%g\n", | ||||
| 					((float *)raw_data)[0], ((float *)raw_data)[1]); | ||||
| 				return 1; | ||||
| 			}  | ||||
| 			return 0; | ||||
|  | ||||
| 		case TIFFTAG_XMLPACKET: | ||||
| 		{ | ||||
| 			uint32 i; | ||||
|  | ||||
| 			fprintf(fd, "  XMLPacket (XMP Metadata):\n" ); | ||||
| 			for(i = 0; i < value_count; i++) | ||||
| 				fputc(((char *)raw_data)[i], fd); | ||||
| 			fprintf( fd, "\n" ); | ||||
| 			return 1; | ||||
| 		} | ||||
| 		case TIFFTAG_RICHTIFFIPTC: | ||||
| 			/* | ||||
| 			 * XXX: for some weird reason RichTIFFIPTC tag | ||||
| 			 * defined as array of LONG values. | ||||
| 			 */ | ||||
| 			fprintf(fd, | ||||
| 			    "  RichTIFFIPTC Data: <present>, %lu bytes\n", | ||||
| 			    (unsigned long) value_count * 4); | ||||
| 			return 1; | ||||
|  | ||||
| 		case TIFFTAG_PHOTOSHOP: | ||||
| 			fprintf(fd, "  Photoshop Data: <present>, %lu bytes\n", | ||||
| 			    (unsigned long) value_count); | ||||
| 			return 1; | ||||
|  | ||||
| 		case TIFFTAG_ICCPROFILE: | ||||
| 			fprintf(fd, "  ICC Profile: <present>, %lu bytes\n", | ||||
| 			    (unsigned long) value_count); | ||||
| 			return 1; | ||||
|  | ||||
| 		case TIFFTAG_STONITS: | ||||
| 			if (value_count == 1 && fip->field_type == TIFF_DOUBLE) {  | ||||
| 				fprintf(fd, | ||||
| 					"  Sample to Nits conversion factor: %.4e\n", | ||||
| 					*((double*)raw_data)); | ||||
| 				return 1; | ||||
| 			} | ||||
| 			return 0; | ||||
| 	} | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Print the contents of the current directory | ||||
|  * to the specified stdio file stream. | ||||
|  */ | ||||
| void | ||||
| TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	char *sep; | ||||
| 	long l, n; | ||||
|  | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 	fprintf(fd, "TIFF Directory at offset 0x%I64x (%I64u)\n", | ||||
| 		(unsigned __int64) tif->tif_diroff, | ||||
| 		(unsigned __int64) tif->tif_diroff); | ||||
| #else | ||||
| 	fprintf(fd, "TIFF Directory at offset 0x%llx (%llu)\n", | ||||
| 		(unsigned long long) tif->tif_diroff, | ||||
| 		(unsigned long long) tif->tif_diroff); | ||||
| #endif | ||||
| 	if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) { | ||||
| 		fprintf(fd, "  Subfile Type:"); | ||||
| 		sep = " "; | ||||
| 		if (td->td_subfiletype & FILETYPE_REDUCEDIMAGE) { | ||||
| 			fprintf(fd, "%sreduced-resolution image", sep); | ||||
| 			sep = "/"; | ||||
| 		} | ||||
| 		if (td->td_subfiletype & FILETYPE_PAGE) { | ||||
| 			fprintf(fd, "%smulti-page document", sep); | ||||
| 			sep = "/"; | ||||
| 		} | ||||
| 		if (td->td_subfiletype & FILETYPE_MASK) | ||||
| 			fprintf(fd, "%stransparency mask", sep); | ||||
| 		fprintf(fd, " (%lu = 0x%lx)\n", | ||||
| 		    (unsigned long) td->td_subfiletype, (long) td->td_subfiletype); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) { | ||||
| 		fprintf(fd, "  Image Width: %lu Image Length: %lu", | ||||
| 		    (unsigned long) td->td_imagewidth, (unsigned long) td->td_imagelength); | ||||
| 		if (TIFFFieldSet(tif,FIELD_IMAGEDEPTH)) | ||||
| 			fprintf(fd, " Image Depth: %lu", | ||||
| 			    (unsigned long) td->td_imagedepth); | ||||
| 		fprintf(fd, "\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) { | ||||
| 		fprintf(fd, "  Tile Width: %lu Tile Length: %lu", | ||||
| 		    (unsigned long) td->td_tilewidth, (unsigned long) td->td_tilelength); | ||||
| 		if (TIFFFieldSet(tif,FIELD_TILEDEPTH)) | ||||
| 			fprintf(fd, " Tile Depth: %lu", | ||||
| 			    (unsigned long) td->td_tiledepth); | ||||
| 		fprintf(fd, "\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_RESOLUTION)) { | ||||
| 		fprintf(fd, "  Resolution: %g, %g", | ||||
| 		    td->td_xresolution, td->td_yresolution); | ||||
| 		if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) { | ||||
| 			switch (td->td_resolutionunit) { | ||||
| 			case RESUNIT_NONE: | ||||
| 				fprintf(fd, " (unitless)"); | ||||
| 				break; | ||||
| 			case RESUNIT_INCH: | ||||
| 				fprintf(fd, " pixels/inch"); | ||||
| 				break; | ||||
| 			case RESUNIT_CENTIMETER: | ||||
| 				fprintf(fd, " pixels/cm"); | ||||
| 				break; | ||||
| 			default: | ||||
| 				fprintf(fd, " (unit %u = 0x%x)", | ||||
| 				    td->td_resolutionunit, | ||||
| 				    td->td_resolutionunit); | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		fprintf(fd, "\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_POSITION)) | ||||
| 		fprintf(fd, "  Position: %g, %g\n", | ||||
| 		    td->td_xposition, td->td_yposition); | ||||
| 	if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE)) | ||||
| 		fprintf(fd, "  Bits/Sample: %u\n", td->td_bitspersample); | ||||
| 	if (TIFFFieldSet(tif,FIELD_SAMPLEFORMAT)) { | ||||
| 		fprintf(fd, "  Sample Format: "); | ||||
| 		switch (td->td_sampleformat) { | ||||
| 		case SAMPLEFORMAT_VOID: | ||||
| 			fprintf(fd, "void\n"); | ||||
| 			break; | ||||
| 		case SAMPLEFORMAT_INT: | ||||
| 			fprintf(fd, "signed integer\n"); | ||||
| 			break; | ||||
| 		case SAMPLEFORMAT_UINT: | ||||
| 			fprintf(fd, "unsigned integer\n"); | ||||
| 			break; | ||||
| 		case SAMPLEFORMAT_IEEEFP: | ||||
| 			fprintf(fd, "IEEE floating point\n"); | ||||
| 			break; | ||||
| 		case SAMPLEFORMAT_COMPLEXINT: | ||||
| 			fprintf(fd, "complex signed integer\n"); | ||||
| 			break; | ||||
| 		case SAMPLEFORMAT_COMPLEXIEEEFP: | ||||
| 			fprintf(fd, "complex IEEE floating point\n"); | ||||
| 			break; | ||||
| 		default: | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_sampleformat, td->td_sampleformat); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_COMPRESSION)) { | ||||
| 		const TIFFCodec* c = TIFFFindCODEC(td->td_compression); | ||||
| 		fprintf(fd, "  Compression Scheme: "); | ||||
| 		if (c) | ||||
| 			fprintf(fd, "%s\n", c->name); | ||||
| 		else | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_compression, td->td_compression); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) { | ||||
| 		fprintf(fd, "  Photometric Interpretation: "); | ||||
| 		if (td->td_photometric < NPHOTONAMES) | ||||
| 			fprintf(fd, "%s\n", photoNames[td->td_photometric]); | ||||
| 		else { | ||||
| 			switch (td->td_photometric) { | ||||
| 			case PHOTOMETRIC_LOGL: | ||||
| 				fprintf(fd, "CIE Log2(L)\n"); | ||||
| 				break; | ||||
| 			case PHOTOMETRIC_LOGLUV: | ||||
| 				fprintf(fd, "CIE Log2(L) (u',v')\n"); | ||||
| 				break; | ||||
| 			default: | ||||
| 				fprintf(fd, "%u (0x%x)\n", | ||||
| 				    td->td_photometric, td->td_photometric); | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_EXTRASAMPLES) && td->td_extrasamples) { | ||||
| 		uint16 i; | ||||
| 		fprintf(fd, "  Extra Samples: %u<", td->td_extrasamples); | ||||
| 		sep = ""; | ||||
| 		for (i = 0; i < td->td_extrasamples; i++) { | ||||
| 			switch (td->td_sampleinfo[i]) { | ||||
| 			case EXTRASAMPLE_UNSPECIFIED: | ||||
| 				fprintf(fd, "%sunspecified", sep); | ||||
| 				break; | ||||
| 			case EXTRASAMPLE_ASSOCALPHA: | ||||
| 				fprintf(fd, "%sassoc-alpha", sep); | ||||
| 				break; | ||||
| 			case EXTRASAMPLE_UNASSALPHA: | ||||
| 				fprintf(fd, "%sunassoc-alpha", sep); | ||||
| 				break; | ||||
| 			default: | ||||
| 				fprintf(fd, "%s%u (0x%x)", sep, | ||||
| 				    td->td_sampleinfo[i], td->td_sampleinfo[i]); | ||||
| 				break; | ||||
| 			} | ||||
| 			sep = ", "; | ||||
| 		} | ||||
| 		fprintf(fd, ">\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_INKNAMES)) { | ||||
| 		char* cp; | ||||
| 		uint16 i; | ||||
| 		fprintf(fd, "  Ink Names: "); | ||||
| 		i = td->td_samplesperpixel; | ||||
| 		sep = ""; | ||||
| 		for (cp = td->td_inknames;  | ||||
| 		     i > 0 && cp < td->td_inknames + td->td_inknameslen;  | ||||
| 		     cp = strchr(cp,'\0')+1, i--) { | ||||
| 			size_t max_chars =  | ||||
| 				td->td_inknameslen - (cp - td->td_inknames); | ||||
| 			fputs(sep, fd); | ||||
| 			_TIFFprintAsciiBounded(fd, cp, max_chars); | ||||
| 			sep = ", "; | ||||
| 		} | ||||
|                 fputs("\n", fd); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_THRESHHOLDING)) { | ||||
| 		fprintf(fd, "  Thresholding: "); | ||||
| 		switch (td->td_threshholding) { | ||||
| 		case THRESHHOLD_BILEVEL: | ||||
| 			fprintf(fd, "bilevel art scan\n"); | ||||
| 			break; | ||||
| 		case THRESHHOLD_HALFTONE: | ||||
| 			fprintf(fd, "halftone or dithered scan\n"); | ||||
| 			break; | ||||
| 		case THRESHHOLD_ERRORDIFFUSE: | ||||
| 			fprintf(fd, "error diffused\n"); | ||||
| 			break; | ||||
| 		default: | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_threshholding, td->td_threshholding); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_FILLORDER)) { | ||||
| 		fprintf(fd, "  FillOrder: "); | ||||
| 		switch (td->td_fillorder) { | ||||
| 		case FILLORDER_MSB2LSB: | ||||
| 			fprintf(fd, "msb-to-lsb\n"); | ||||
| 			break; | ||||
| 		case FILLORDER_LSB2MSB: | ||||
| 			fprintf(fd, "lsb-to-msb\n"); | ||||
| 			break; | ||||
| 		default: | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_fillorder, td->td_fillorder); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_YCBCRSUBSAMPLING)) | ||||
|         { | ||||
| 		fprintf(fd, "  YCbCr Subsampling: %u, %u\n", | ||||
| 			td->td_ycbcrsubsampling[0], td->td_ycbcrsubsampling[1] ); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_YCBCRPOSITIONING)) { | ||||
| 		fprintf(fd, "  YCbCr Positioning: "); | ||||
| 		switch (td->td_ycbcrpositioning) { | ||||
| 		case YCBCRPOSITION_CENTERED: | ||||
| 			fprintf(fd, "centered\n"); | ||||
| 			break; | ||||
| 		case YCBCRPOSITION_COSITED: | ||||
| 			fprintf(fd, "cosited\n"); | ||||
| 			break; | ||||
| 		default: | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_ycbcrpositioning, td->td_ycbcrpositioning); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_HALFTONEHINTS)) | ||||
| 		fprintf(fd, "  Halftone Hints: light %u dark %u\n", | ||||
| 		    td->td_halftonehints[0], td->td_halftonehints[1]); | ||||
| 	if (TIFFFieldSet(tif,FIELD_ORIENTATION)) { | ||||
| 		fprintf(fd, "  Orientation: "); | ||||
| 		if (td->td_orientation < NORIENTNAMES) | ||||
| 			fprintf(fd, "%s\n", orientNames[td->td_orientation]); | ||||
| 		else | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_orientation, td->td_orientation); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL)) | ||||
| 		fprintf(fd, "  Samples/Pixel: %u\n", td->td_samplesperpixel); | ||||
| 	if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP)) { | ||||
| 		fprintf(fd, "  Rows/Strip: "); | ||||
| 		if (td->td_rowsperstrip == (uint32) -1) | ||||
| 			fprintf(fd, "(infinite)\n"); | ||||
| 		else | ||||
| 			fprintf(fd, "%lu\n", (unsigned long) td->td_rowsperstrip); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE)) | ||||
| 		fprintf(fd, "  Min Sample Value: %u\n", td->td_minsamplevalue); | ||||
| 	if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE)) | ||||
| 		fprintf(fd, "  Max Sample Value: %u\n", td->td_maxsamplevalue); | ||||
| 	if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE)) { | ||||
| 		int i; | ||||
| 		int count = (tif->tif_flags & TIFF_PERSAMPLE) ? td->td_samplesperpixel : 1; | ||||
| 		fprintf(fd, "  SMin Sample Value:"); | ||||
| 		for (i = 0; i < count; ++i) | ||||
| 			fprintf(fd, " %g", td->td_sminsamplevalue[i]); | ||||
| 		fprintf(fd, "\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE)) { | ||||
| 		int i; | ||||
| 		int count = (tif->tif_flags & TIFF_PERSAMPLE) ? td->td_samplesperpixel : 1; | ||||
| 		fprintf(fd, "  SMax Sample Value:"); | ||||
| 		for (i = 0; i < count; ++i) | ||||
| 			fprintf(fd, " %g", td->td_smaxsamplevalue[i]); | ||||
| 		fprintf(fd, "\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) { | ||||
| 		fprintf(fd, "  Planar Configuration: "); | ||||
| 		switch (td->td_planarconfig) { | ||||
| 		case PLANARCONFIG_CONTIG: | ||||
| 			fprintf(fd, "single image plane\n"); | ||||
| 			break; | ||||
| 		case PLANARCONFIG_SEPARATE: | ||||
| 			fprintf(fd, "separate image planes\n"); | ||||
| 			break; | ||||
| 		default: | ||||
| 			fprintf(fd, "%u (0x%x)\n", | ||||
| 			    td->td_planarconfig, td->td_planarconfig); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_PAGENUMBER)) | ||||
| 		fprintf(fd, "  Page Number: %u-%u\n", | ||||
| 		    td->td_pagenumber[0], td->td_pagenumber[1]); | ||||
| 	if (TIFFFieldSet(tif,FIELD_COLORMAP)) { | ||||
| 		fprintf(fd, "  Color Map: "); | ||||
| 		if (flags & TIFFPRINT_COLORMAP) { | ||||
| 			fprintf(fd, "\n"); | ||||
| 			n = 1L<<td->td_bitspersample; | ||||
| 			for (l = 0; l < n; l++) | ||||
| 				fprintf(fd, "   %5ld: %5u %5u %5u\n", | ||||
| 				    l, | ||||
| 				    td->td_colormap[0][l], | ||||
| 				    td->td_colormap[1][l], | ||||
| 				    td->td_colormap[2][l]); | ||||
| 		} else | ||||
| 			fprintf(fd, "(present)\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_REFBLACKWHITE)) { | ||||
| 		int i; | ||||
| 		fprintf(fd, "  Reference Black/White:\n"); | ||||
| 		for (i = 0; i < 3; i++) | ||||
| 		fprintf(fd, "    %2d: %5g %5g\n", i, | ||||
| 			td->td_refblackwhite[2*i+0], | ||||
| 			td->td_refblackwhite[2*i+1]); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif,FIELD_TRANSFERFUNCTION)) { | ||||
| 		fprintf(fd, "  Transfer Function: "); | ||||
| 		if (flags & TIFFPRINT_CURVES) { | ||||
| 			fprintf(fd, "\n"); | ||||
| 			n = 1L<<td->td_bitspersample; | ||||
| 			for (l = 0; l < n; l++) { | ||||
| 				uint16 i; | ||||
| 				fprintf(fd, "    %2ld: %5u", | ||||
| 				    l, td->td_transferfunction[0][l]); | ||||
| 				for (i = 1; i < td->td_samplesperpixel - td->td_extrasamples && i < 3; i++) | ||||
| 					fprintf(fd, " %5u", | ||||
| 					    td->td_transferfunction[i][l]); | ||||
| 				fputc('\n', fd); | ||||
| 			} | ||||
| 		} else | ||||
| 			fprintf(fd, "(present)\n"); | ||||
| 	} | ||||
| 	if (TIFFFieldSet(tif, FIELD_SUBIFD) && (td->td_subifd)) { | ||||
| 		uint16 i; | ||||
| 		fprintf(fd, "  SubIFD Offsets:"); | ||||
| 		for (i = 0; i < td->td_nsubifd; i++) | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 			fprintf(fd, " %5I64u", | ||||
| 				(unsigned __int64) td->td_subifd[i]); | ||||
| #else | ||||
| 			fprintf(fd, " %5llu", | ||||
| 				(unsigned long long) td->td_subifd[i]); | ||||
| #endif | ||||
| 		fputc('\n', fd); | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| 	** Custom tag support. | ||||
| 	*/ | ||||
| 	{ | ||||
| 		int  i; | ||||
| 		short count; | ||||
|  | ||||
| 		count = (short) TIFFGetTagListCount(tif); | ||||
| 		for(i = 0; i < count; i++) { | ||||
| 			uint32 tag = TIFFGetTagListEntry(tif, i); | ||||
| 			const TIFFField *fip; | ||||
| 			uint32 value_count; | ||||
| 			int mem_alloc = 0; | ||||
| 			void *raw_data; | ||||
|  | ||||
| 			fip = TIFFFieldWithTag(tif, tag); | ||||
| 			if(fip == NULL) | ||||
| 				continue; | ||||
|  | ||||
| 			if(fip->field_passcount) { | ||||
| 				if (fip->field_readcount == TIFF_VARIABLE2 ) { | ||||
| 					if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1) | ||||
| 						continue; | ||||
| 				} else if (fip->field_readcount == TIFF_VARIABLE ) { | ||||
| 					uint16 small_value_count; | ||||
| 					if(TIFFGetField(tif, tag, &small_value_count, &raw_data) != 1) | ||||
| 						continue; | ||||
| 					value_count = small_value_count; | ||||
| 				} else { | ||||
| 					assert (fip->field_readcount == TIFF_VARIABLE | ||||
| 						|| fip->field_readcount == TIFF_VARIABLE2); | ||||
| 					continue; | ||||
| 				}  | ||||
| 			} else { | ||||
| 				if (fip->field_readcount == TIFF_VARIABLE | ||||
| 				    || fip->field_readcount == TIFF_VARIABLE2) | ||||
| 					value_count = 1; | ||||
| 				else if (fip->field_readcount == TIFF_SPP) | ||||
| 					value_count = td->td_samplesperpixel; | ||||
| 				else | ||||
| 					value_count = fip->field_readcount; | ||||
| 				if (fip->field_tag == TIFFTAG_DOTRANGE | ||||
| 				    && strcmp(fip->field_name,"DotRange") == 0) { | ||||
| 					/* TODO: This is an evil exception and should not have been | ||||
| 					   handled this way ... likely best if we move it into | ||||
| 					   the directory structure with an explicit field in  | ||||
| 					   libtiff 4.1 and assign it a FIELD_ value */ | ||||
| 					static uint16 dotrange[2]; | ||||
| 					raw_data = dotrange; | ||||
| 					TIFFGetField(tif, tag, dotrange+0, dotrange+1); | ||||
| 				} else if (fip->field_type == TIFF_ASCII | ||||
| 					   || fip->field_readcount == TIFF_VARIABLE | ||||
| 					   || fip->field_readcount == TIFF_VARIABLE2 | ||||
| 					   || fip->field_readcount == TIFF_SPP | ||||
| 					   || value_count > 1) { | ||||
| 					if(TIFFGetField(tif, tag, &raw_data) != 1) | ||||
| 						continue; | ||||
| 				} else { | ||||
| 					raw_data = _TIFFmalloc( | ||||
| 					    _TIFFDataSize(fip->field_type) | ||||
| 					    * value_count); | ||||
| 					mem_alloc = 1; | ||||
| 					if(TIFFGetField(tif, tag, raw_data) != 1) { | ||||
| 						_TIFFfree(raw_data); | ||||
| 						continue; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			/* | ||||
| 			 * Catch the tags which needs to be specially handled | ||||
| 			 * and pretty print them. If tag not handled in | ||||
| 			 * _TIFFPrettyPrintField() fall down and print it as | ||||
| 			 * any other tag. | ||||
| 			 */ | ||||
| 			if (!_TIFFPrettyPrintField(tif, fip, fd, tag, value_count, raw_data)) | ||||
| 				_TIFFPrintField(fd, fip, value_count, raw_data); | ||||
|  | ||||
| 			if(mem_alloc) | ||||
| 				_TIFFfree(raw_data); | ||||
| 		} | ||||
| 	} | ||||
|          | ||||
| 	if (tif->tif_tagmethods.printdir) | ||||
| 		(*tif->tif_tagmethods.printdir)(tif, fd, flags); | ||||
|  | ||||
|         _TIFFFillStriles( tif ); | ||||
|          | ||||
| 	if ((flags & TIFFPRINT_STRIPS) && | ||||
| 	    TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) { | ||||
| 		uint32 s; | ||||
|  | ||||
| 		fprintf(fd, "  %lu %s:\n", | ||||
| 		    (unsigned long) td->td_nstrips, | ||||
| 		    isTiled(tif) ? "Tiles" : "Strips"); | ||||
| 		for (s = 0; s < td->td_nstrips; s++) | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 			fprintf(fd, "    %3lu: [%8I64u, %8I64u]\n", | ||||
| 			    (unsigned long) s, | ||||
| 			    td->td_stripoffset ? (unsigned __int64) td->td_stripoffset[s] : 0, | ||||
| 			    td->td_stripbytecount ? (unsigned __int64) td->td_stripbytecount[s] : 0); | ||||
| #else | ||||
| 			fprintf(fd, "    %3lu: [%8llu, %8llu]\n", | ||||
| 			    (unsigned long) s, | ||||
| 			    td->td_stripoffset ? (unsigned long long) td->td_stripoffset[s] : 0, | ||||
| 			    td->td_stripbytecount ? (unsigned long long) td->td_stripbytecount[s] : 0); | ||||
| #endif | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFprintAscii(FILE* fd, const char* cp) | ||||
| { | ||||
| 	_TIFFprintAsciiBounded( fd, cp, strlen(cp)); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _TIFFprintAsciiBounded(FILE* fd, const char* cp, size_t max_chars) | ||||
| { | ||||
| 	for (; max_chars > 0 && *cp != '\0'; cp++, max_chars--) { | ||||
| 		const char* tp; | ||||
|  | ||||
| 		if (isprint((int)*cp)) { | ||||
| 			fputc(*cp, fd); | ||||
| 			continue; | ||||
| 		} | ||||
| 		for (tp = "\tt\bb\rr\nn\vv"; *tp; tp++) | ||||
| 			if (*tp++ == *cp) | ||||
| 				break; | ||||
| 		if (*tp) | ||||
| 			fprintf(fd, "\\%c", *tp); | ||||
| 		else | ||||
| 			fprintf(fd, "\\%03o", *cp & 0xff); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFprintAsciiTag(FILE* fd, const char* name, const char* value) | ||||
| { | ||||
| 	fprintf(fd, "  %s: \"", name); | ||||
| 	_TIFFprintAscii(fd, value); | ||||
| 	fprintf(fd, "\"\n"); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										1572
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_read.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1572
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_read.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										430
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_stream.cxx
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										430
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_stream.cxx
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,430 @@ | ||||
| /* $Id: tif_stream.cxx,v 1.13 2015-05-28 01:50:22 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1996 Sam Leffler | ||||
|  * Copyright (c) 1991-1996 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library UNIX-specific Routines. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
| #include <iostream> | ||||
|  | ||||
| #ifndef __VMS | ||||
| using namespace std; | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|   ISO C++ uses a 'std::streamsize' type to define counts.  This makes | ||||
|   it similar to, (but perhaps not the same as) size_t. | ||||
|  | ||||
|   The std::ios::pos_type is used to represent stream positions as used | ||||
|   by tellg(), tellp(), seekg(), and seekp().  This makes it similar to | ||||
|   (but perhaps not the same as) 'off_t'.  The std::ios::streampos type | ||||
|   is used for character streams, but is documented to not be an | ||||
|   integral type anymore, so it should *not* be assigned to an integral | ||||
|   type. | ||||
|  | ||||
|   The std::ios::off_type is used to specify relative offsets needed by | ||||
|   the variants of seekg() and seekp() which accept a relative offset | ||||
|   argument. | ||||
|  | ||||
|   Useful prototype knowledge: | ||||
|  | ||||
|   Obtain read position | ||||
|     ios::pos_type basic_istream::tellg() | ||||
|  | ||||
|   Set read position | ||||
|     basic_istream& basic_istream::seekg(ios::pos_type) | ||||
|     basic_istream& basic_istream::seekg(ios::off_type, ios_base::seekdir) | ||||
|  | ||||
|   Read data | ||||
|     basic_istream& istream::read(char *str, streamsize count) | ||||
|  | ||||
|   Number of characters read in last unformatted read | ||||
|     streamsize istream::gcount(); | ||||
|  | ||||
|   Obtain write position | ||||
|     ios::pos_type basic_ostream::tellp() | ||||
|  | ||||
|   Set write position | ||||
|     basic_ostream& basic_ostream::seekp(ios::pos_type) | ||||
|     basic_ostream& basic_ostream::seekp(ios::off_type, ios_base::seekdir) | ||||
|  | ||||
|   Write data | ||||
|     basic_ostream& ostream::write(const char *str, streamsize count) | ||||
| */ | ||||
|  | ||||
| struct tiffis_data; | ||||
| struct tiffos_data; | ||||
|  | ||||
| extern "C" { | ||||
|  | ||||
| 	static tmsize_t _tiffosReadProc(thandle_t, void*, tmsize_t); | ||||
| 	static tmsize_t _tiffisReadProc(thandle_t fd, void* buf, tmsize_t size); | ||||
| 	static tmsize_t _tiffosWriteProc(thandle_t fd, void* buf, tmsize_t size); | ||||
| 	static tmsize_t _tiffisWriteProc(thandle_t, void*, tmsize_t); | ||||
| 	static uint64   _tiffosSeekProc(thandle_t fd, uint64 off, int whence); | ||||
| 	static uint64   _tiffisSeekProc(thandle_t fd, uint64 off, int whence); | ||||
| 	static uint64   _tiffosSizeProc(thandle_t fd); | ||||
| 	static uint64   _tiffisSizeProc(thandle_t fd); | ||||
| 	static int      _tiffosCloseProc(thandle_t fd); | ||||
| 	static int      _tiffisCloseProc(thandle_t fd); | ||||
| 	static int 	_tiffDummyMapProc(thandle_t , void** base, toff_t* size ); | ||||
| 	static void     _tiffDummyUnmapProc(thandle_t , void* base, toff_t size ); | ||||
| 	static TIFF*    _tiffStreamOpen(const char* name, const char* mode, void *fd); | ||||
|  | ||||
| struct tiffis_data | ||||
| { | ||||
| 	istream	*stream; | ||||
|         ios::pos_type start_pos; | ||||
| }; | ||||
|  | ||||
| struct tiffos_data | ||||
| { | ||||
| 	ostream	*stream; | ||||
| 	ios::pos_type start_pos; | ||||
| }; | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffosReadProc(thandle_t, void*, tmsize_t) | ||||
| { | ||||
|         return 0; | ||||
| } | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffisReadProc(thandle_t fd, void* buf, tmsize_t size) | ||||
| { | ||||
|         tiffis_data	*data = reinterpret_cast<tiffis_data *>(fd); | ||||
|  | ||||
|         // Verify that type does not overflow. | ||||
|         streamsize request_size = size; | ||||
|         if (static_cast<tmsize_t>(request_size) != size) | ||||
|           return static_cast<tmsize_t>(-1); | ||||
|  | ||||
|         data->stream->read((char *) buf, request_size); | ||||
|  | ||||
|         return static_cast<tmsize_t>(data->stream->gcount()); | ||||
| } | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffosWriteProc(thandle_t fd, void* buf, tmsize_t size) | ||||
| { | ||||
| 	tiffos_data	*data = reinterpret_cast<tiffos_data *>(fd); | ||||
| 	ostream		*os = data->stream; | ||||
| 	ios::pos_type	pos = os->tellp(); | ||||
|  | ||||
|         // Verify that type does not overflow. | ||||
|         streamsize request_size = size; | ||||
|         if (static_cast<tmsize_t>(request_size) != size) | ||||
|           return static_cast<tmsize_t>(-1); | ||||
|  | ||||
| 	os->write(reinterpret_cast<const char *>(buf), request_size); | ||||
|  | ||||
| 	return static_cast<tmsize_t>(os->tellp() - pos); | ||||
| } | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffisWriteProc(thandle_t, void*, tmsize_t) | ||||
| { | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffosSeekProc(thandle_t fd, uint64 off, int whence) | ||||
| { | ||||
| 	tiffos_data	*data = reinterpret_cast<tiffos_data *>(fd); | ||||
| 	ostream		*os = data->stream; | ||||
|  | ||||
| 	// if the stream has already failed, don't do anything | ||||
| 	if( os->fail() ) | ||||
| 		return static_cast<uint64>(-1); | ||||
|  | ||||
| 	switch(whence) { | ||||
| 	case SEEK_SET: | ||||
| 		{ | ||||
| 			// Compute 64-bit offset | ||||
| 			uint64 new_offset = static_cast<uint64>(data->start_pos) + off; | ||||
|  | ||||
| 			// Verify that value does not overflow | ||||
| 			ios::off_type offset = static_cast<ios::off_type>(new_offset); | ||||
| 			if (static_cast<uint64>(offset) != new_offset) | ||||
| 				return static_cast<uint64>(-1); | ||||
| 			 | ||||
| 			os->seekp(offset, ios::beg); | ||||
| 		break; | ||||
| 		} | ||||
| 	case SEEK_CUR: | ||||
| 		{ | ||||
| 			// Verify that value does not overflow | ||||
| 			ios::off_type offset = static_cast<ios::off_type>(off); | ||||
| 			if (static_cast<uint64>(offset) != off) | ||||
| 				return static_cast<uint64>(-1); | ||||
|  | ||||
| 			os->seekp(offset, ios::cur); | ||||
| 			break; | ||||
| 		} | ||||
| 	case SEEK_END: | ||||
| 		{ | ||||
| 			// Verify that value does not overflow | ||||
| 			ios::off_type offset = static_cast<ios::off_type>(off); | ||||
| 			if (static_cast<uint64>(offset) != off) | ||||
| 				return static_cast<uint64>(-1); | ||||
|  | ||||
| 			os->seekp(offset, ios::end); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Attempt to workaround problems with seeking past the end of the | ||||
| 	// stream.  ofstream doesn't have a problem with this but | ||||
| 	// ostrstream/ostringstream does. In that situation, add intermediate | ||||
| 	// '\0' characters. | ||||
| 	if( os->fail() ) { | ||||
| #ifdef __VMS | ||||
| 		int		old_state; | ||||
| #else | ||||
| 		ios::iostate	old_state; | ||||
| #endif | ||||
| 		ios::pos_type	origin; | ||||
|  | ||||
| 		old_state = os->rdstate(); | ||||
| 		// reset the fail bit or else tellp() won't work below | ||||
| 		os->clear(os->rdstate() & ~ios::failbit); | ||||
| 		switch( whence ) { | ||||
| 			case SEEK_SET: | ||||
|                         default: | ||||
| 				origin = data->start_pos; | ||||
| 				break; | ||||
| 			case SEEK_CUR: | ||||
| 				origin = os->tellp(); | ||||
| 				break; | ||||
| 			case SEEK_END: | ||||
| 				os->seekp(0, ios::end); | ||||
| 				origin = os->tellp(); | ||||
| 				break; | ||||
| 		} | ||||
| 		// restore original stream state | ||||
| 		os->clear(old_state);	 | ||||
|  | ||||
| 		// only do something if desired seek position is valid | ||||
| 		if( (static_cast<uint64>(origin) + off) > static_cast<uint64>(data->start_pos) ) { | ||||
| 			uint64	num_fill; | ||||
|  | ||||
| 			// clear the fail bit  | ||||
| 			os->clear(os->rdstate() & ~ios::failbit); | ||||
|  | ||||
| 			// extend the stream to the expected size | ||||
| 			os->seekp(0, ios::end); | ||||
| 			num_fill = (static_cast<uint64>(origin)) + off - os->tellp(); | ||||
| 			for( uint64 i = 0; i < num_fill; i++ ) | ||||
| 				os->put('\0'); | ||||
|  | ||||
| 			// retry the seek | ||||
| 			os->seekp(static_cast<ios::off_type>(static_cast<uint64>(origin) + off), ios::beg); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return static_cast<uint64>(os->tellp()); | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffisSeekProc(thandle_t fd, uint64 off, int whence) | ||||
| { | ||||
| 	tiffis_data	*data = reinterpret_cast<tiffis_data *>(fd); | ||||
|  | ||||
| 	switch(whence) { | ||||
| 	case SEEK_SET: | ||||
| 		{ | ||||
| 			// Compute 64-bit offset | ||||
| 			uint64 new_offset = static_cast<uint64>(data->start_pos) + off; | ||||
| 			 | ||||
| 			// Verify that value does not overflow | ||||
| 			ios::off_type offset = static_cast<ios::off_type>(new_offset); | ||||
| 			if (static_cast<uint64>(offset) != new_offset) | ||||
| 				return static_cast<uint64>(-1); | ||||
|  | ||||
| 			data->stream->seekg(offset, ios::beg); | ||||
| 			break; | ||||
| 		} | ||||
| 	case SEEK_CUR: | ||||
| 		{ | ||||
| 			// Verify that value does not overflow | ||||
| 			ios::off_type offset = static_cast<ios::off_type>(off); | ||||
| 			if (static_cast<uint64>(offset) != off) | ||||
| 				return static_cast<uint64>(-1); | ||||
|  | ||||
| 			data->stream->seekg(offset, ios::cur); | ||||
| 			break; | ||||
| 		} | ||||
| 	case SEEK_END: | ||||
| 		{ | ||||
| 			// Verify that value does not overflow | ||||
| 			ios::off_type offset = static_cast<ios::off_type>(off); | ||||
| 			if (static_cast<uint64>(offset) != off) | ||||
| 				return static_cast<uint64>(-1); | ||||
|  | ||||
| 			data->stream->seekg(offset, ios::end); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return (uint64) (data->stream->tellg() - data->start_pos); | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffosSizeProc(thandle_t fd) | ||||
| { | ||||
| 	tiffos_data	*data = reinterpret_cast<tiffos_data *>(fd); | ||||
| 	ostream		*os = data->stream; | ||||
| 	ios::pos_type	pos = os->tellp(); | ||||
| 	ios::pos_type	len; | ||||
|  | ||||
| 	os->seekp(0, ios::end); | ||||
| 	len = os->tellp(); | ||||
| 	os->seekp(pos); | ||||
|  | ||||
| 	return (uint64) len; | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffisSizeProc(thandle_t fd) | ||||
| { | ||||
| 	tiffis_data	*data = reinterpret_cast<tiffis_data *>(fd); | ||||
| 	ios::pos_type	pos = data->stream->tellg(); | ||||
| 	ios::pos_type	len; | ||||
|  | ||||
| 	data->stream->seekg(0, ios::end); | ||||
| 	len = data->stream->tellg(); | ||||
| 	data->stream->seekg(pos); | ||||
|  | ||||
| 	return (uint64) len; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _tiffosCloseProc(thandle_t fd) | ||||
| { | ||||
| 	// Our stream was not allocated by us, so it shouldn't be closed by us. | ||||
| 	delete reinterpret_cast<tiffos_data *>(fd); | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _tiffisCloseProc(thandle_t fd) | ||||
| { | ||||
| 	// Our stream was not allocated by us, so it shouldn't be closed by us. | ||||
| 	delete reinterpret_cast<tiffis_data *>(fd); | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static int | ||||
| _tiffDummyMapProc(thandle_t , void** base, toff_t* size ) | ||||
| { | ||||
| 	(void) base; | ||||
| 	(void) size; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _tiffDummyUnmapProc(thandle_t , void* base, toff_t size ) | ||||
| { | ||||
| 	(void) base; | ||||
| 	(void) size; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Open a TIFF file descriptor for read/writing. | ||||
|  */ | ||||
| static TIFF* | ||||
| _tiffStreamOpen(const char* name, const char* mode, void *fd) | ||||
| { | ||||
| 	TIFF*	tif; | ||||
|  | ||||
| 	if( strchr(mode, 'w') ) { | ||||
| 		tiffos_data	*data = new tiffos_data; | ||||
| 		data->stream = reinterpret_cast<ostream *>(fd); | ||||
| 		data->start_pos = data->stream->tellp(); | ||||
|  | ||||
| 		// Open for writing. | ||||
| 		tif = TIFFClientOpen(name, mode, | ||||
| 				reinterpret_cast<thandle_t>(data), | ||||
| 				_tiffosReadProc, | ||||
|                                 _tiffosWriteProc, | ||||
| 				_tiffosSeekProc, | ||||
|                                 _tiffosCloseProc, | ||||
| 				_tiffosSizeProc, | ||||
| 				_tiffDummyMapProc, | ||||
|                                 _tiffDummyUnmapProc); | ||||
| 	} else { | ||||
| 		tiffis_data	*data = new tiffis_data; | ||||
| 		data->stream = reinterpret_cast<istream *>(fd); | ||||
| 		data->start_pos = data->stream->tellg(); | ||||
| 		// Open for reading. | ||||
| 		tif = TIFFClientOpen(name, mode, | ||||
| 				reinterpret_cast<thandle_t>(data), | ||||
| 				_tiffisReadProc, | ||||
|                                 _tiffisWriteProc, | ||||
| 				_tiffisSeekProc, | ||||
|                                 _tiffisCloseProc, | ||||
| 				_tiffisSizeProc, | ||||
| 				_tiffDummyMapProc, | ||||
|                                 _tiffDummyUnmapProc); | ||||
| 	} | ||||
|  | ||||
| 	return (tif); | ||||
| } | ||||
|  | ||||
| } /* extern "C" */ | ||||
|  | ||||
| TIFF* | ||||
| TIFFStreamOpen(const char* name, ostream *os) | ||||
| { | ||||
| 	// If os is either a ostrstream or ostringstream, and has no data | ||||
| 	// written to it yet, then tellp() will return -1 which will break us. | ||||
| 	// We workaround this by writing out a dummy character and | ||||
| 	// then seek back to the beginning. | ||||
| 	if( !os->fail() && static_cast<int>(os->tellp()) < 0 ) { | ||||
| 		*os << '\0'; | ||||
| 		os->seekp(0); | ||||
| 	} | ||||
|  | ||||
| 	// NB: We don't support mapped files with streams so add 'm' | ||||
| 	return _tiffStreamOpen(name, "wm", os); | ||||
| } | ||||
|  | ||||
| TIFF* | ||||
| TIFFStreamOpen(const char* name, istream *is) | ||||
| { | ||||
| 	// NB: We don't support mapped files with streams so add 'm' | ||||
| 	return _tiffStreamOpen(name, "rm", is); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
|  | ||||
							
								
								
									
										389
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_strip.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										389
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_strip.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,389 @@ | ||||
| /* $Id: tif_strip.c,v 1.38 2016-12-03 11:02:15 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1991-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Strip-organized Image Support Routines. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| /* | ||||
|  * Compute which strip a (row,sample) value is in. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFComputeStrip(TIFF* tif, uint32 row, uint16 sample) | ||||
| { | ||||
| 	static const char module[] = "TIFFComputeStrip"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint32 strip; | ||||
|  | ||||
| 	strip = row / td->td_rowsperstrip; | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { | ||||
| 		if (sample >= td->td_samplesperpixel) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "%lu: Sample out of range, max %lu", | ||||
| 			    (unsigned long) sample, (unsigned long) td->td_samplesperpixel); | ||||
| 			return (0); | ||||
| 		} | ||||
| 		strip += (uint32)sample*td->td_stripsperimage; | ||||
| 	} | ||||
| 	return (strip); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute how many strips are in an image. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFNumberOfStrips(TIFF* tif) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint32 nstrips; | ||||
|  | ||||
| 	nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 : | ||||
| 	     TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip)); | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) | ||||
| 		nstrips = _TIFFMultiply32(tif, nstrips, (uint32)td->td_samplesperpixel, | ||||
| 		    "TIFFNumberOfStrips"); | ||||
| 	return (nstrips); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute the # bytes in a variable height, row-aligned strip. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFVStripSize64(TIFF* tif, uint32 nrows) | ||||
| { | ||||
| 	static const char module[] = "TIFFVStripSize64"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	if (nrows==(uint32)(-1)) | ||||
| 		nrows=td->td_imagelength; | ||||
| 	if ((td->td_planarconfig==PLANARCONFIG_CONTIG)&& | ||||
| 	    (td->td_photometric == PHOTOMETRIC_YCBCR)&& | ||||
| 	    (!isUpSampled(tif))) | ||||
| 	{ | ||||
| 		/* | ||||
| 		 * Packed YCbCr data contain one Cb+Cr for every | ||||
| 		 * HorizontalSampling*VerticalSampling Y values. | ||||
| 		 * Must also roundup width and height when calculating | ||||
| 		 * since images that are not a multiple of the | ||||
| 		 * horizontal/vertical subsampling area include | ||||
| 		 * YCbCr data for the extended image. | ||||
| 		 */ | ||||
| 		uint16 ycbcrsubsampling[2]; | ||||
| 		uint16 samplingblock_samples; | ||||
| 		uint32 samplingblocks_hor; | ||||
| 		uint32 samplingblocks_ver; | ||||
| 		uint64 samplingrow_samples; | ||||
| 		uint64 samplingrow_size; | ||||
| 		if(td->td_samplesperpixel!=3) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata,module, | ||||
| 			    "Invalid td_samplesperpixel value"); | ||||
| 			return 0; | ||||
| 		} | ||||
| 		TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0, | ||||
| 		    ycbcrsubsampling+1); | ||||
| 		if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4) | ||||
| 		    ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4)) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata,module, | ||||
| 				     "Invalid YCbCr subsampling (%dx%d)",  | ||||
| 				     ycbcrsubsampling[0],  | ||||
| 				     ycbcrsubsampling[1] ); | ||||
| 			return 0; | ||||
| 		} | ||||
| 		samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; | ||||
| 		samplingblocks_hor=TIFFhowmany_32(td->td_imagewidth,ycbcrsubsampling[0]); | ||||
| 		samplingblocks_ver=TIFFhowmany_32(nrows,ycbcrsubsampling[1]); | ||||
| 		samplingrow_samples=_TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module); | ||||
| 		samplingrow_size=TIFFhowmany8_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module)); | ||||
| 		return(_TIFFMultiply64(tif,samplingrow_size,samplingblocks_ver,module)); | ||||
| 	} | ||||
| 	else | ||||
| 		return(_TIFFMultiply64(tif,nrows,TIFFScanlineSize64(tif),module)); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFVStripSize(TIFF* tif, uint32 nrows) | ||||
| { | ||||
| 	static const char module[] = "TIFFVStripSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFVStripSize64(tif,nrows); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute the # bytes in a raw strip. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFRawStripSize64(TIFF* tif, uint32 strip) | ||||
| { | ||||
| 	static const char module[] = "TIFFRawStripSize64"; | ||||
| 	TIFFDirectory* td = &tif->tif_dir; | ||||
| 	uint64 bytecount = td->td_stripbytecount[strip]; | ||||
|  | ||||
| 	if (bytecount == 0) | ||||
| 	{ | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "%I64u: Invalid strip byte count, strip %lu", | ||||
| 			     (unsigned __int64) bytecount, | ||||
| 			     (unsigned long) strip); | ||||
| #else | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "%llu: Invalid strip byte count, strip %lu", | ||||
| 			     (unsigned long long) bytecount, | ||||
| 			     (unsigned long) strip); | ||||
| #endif | ||||
| 		bytecount = (uint64) -1; | ||||
| 	} | ||||
|  | ||||
| 	return bytecount; | ||||
| } | ||||
| tmsize_t | ||||
| TIFFRawStripSize(TIFF* tif, uint32 strip) | ||||
| { | ||||
| 	static const char module[] = "TIFFRawStripSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFRawStripSize64(tif,strip); | ||||
| 	if (m==(uint64)(-1)) | ||||
| 		n=(tmsize_t)(-1); | ||||
| 	else | ||||
| 	{ | ||||
| 		n=(tmsize_t)m; | ||||
| 		if ((uint64)n!=m) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); | ||||
| 			n=0; | ||||
| 		} | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute the # bytes in a (row-aligned) strip. | ||||
|  * | ||||
|  * Note that if RowsPerStrip is larger than the | ||||
|  * recorded ImageLength, then the strip size is | ||||
|  * truncated to reflect the actual space required | ||||
|  * to hold the strip. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFStripSize64(TIFF* tif) | ||||
| { | ||||
| 	TIFFDirectory* td = &tif->tif_dir; | ||||
| 	uint32 rps = td->td_rowsperstrip; | ||||
| 	if (rps > td->td_imagelength) | ||||
| 		rps = td->td_imagelength; | ||||
| 	return (TIFFVStripSize64(tif, rps)); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFStripSize(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFStripSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFStripSize64(tif); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute a default strip size based on the image | ||||
|  * characteristics and a requested value.  If the | ||||
|  * request is <1 then we choose a strip size according | ||||
|  * to certain heuristics. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFDefaultStripSize(TIFF* tif, uint32 request) | ||||
| { | ||||
| 	return (*tif->tif_defstripsize)(tif, request); | ||||
| } | ||||
|  | ||||
| uint32 | ||||
| _TIFFDefaultStripSize(TIFF* tif, uint32 s) | ||||
| { | ||||
| 	if ((int32) s < 1) { | ||||
| 		/* | ||||
| 		 * If RowsPerStrip is unspecified, try to break the | ||||
| 		 * image up into strips that are approximately | ||||
| 		 * STRIP_SIZE_DEFAULT bytes long. | ||||
| 		 */ | ||||
| 		uint64 scanlinesize; | ||||
| 		uint64 rows; | ||||
| 		scanlinesize=TIFFScanlineSize64(tif); | ||||
| 		if (scanlinesize==0) | ||||
| 			scanlinesize=1; | ||||
| 		rows=(uint64)STRIP_SIZE_DEFAULT/scanlinesize; | ||||
| 		if (rows==0) | ||||
| 			rows=1; | ||||
| 		else if (rows>0xFFFFFFFF) | ||||
| 			rows=0xFFFFFFFF; | ||||
| 		s=(uint32)rows; | ||||
| 	} | ||||
| 	return (s); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return the number of bytes to read/write in a call to | ||||
|  * one of the scanline-oriented i/o routines.  Note that | ||||
|  * this number may be 1/samples-per-pixel if data is | ||||
|  * stored as separate planes. | ||||
|  * The ScanlineSize in case of YCbCrSubsampling is defined as the | ||||
|  * strip size divided by the strip height, i.e. the size of a pack of vertical | ||||
|  * subsampling lines divided by vertical subsampling. It should thus make | ||||
|  * sense when multiplied by a multiple of vertical subsampling. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFScanlineSize64(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFScanlineSize64"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint64 scanline_size; | ||||
| 	if (td->td_planarconfig==PLANARCONFIG_CONTIG) | ||||
| 	{ | ||||
| 		if ((td->td_photometric==PHOTOMETRIC_YCBCR)&& | ||||
| 		    (td->td_samplesperpixel==3)&& | ||||
| 		    (!isUpSampled(tif))) | ||||
| 		{ | ||||
| 			uint16 ycbcrsubsampling[2]; | ||||
| 			uint16 samplingblock_samples; | ||||
| 			uint32 samplingblocks_hor; | ||||
| 			uint64 samplingrow_samples; | ||||
| 			uint64 samplingrow_size; | ||||
| 			if(td->td_samplesperpixel!=3) | ||||
| 			{ | ||||
|                             TIFFErrorExt(tif->tif_clientdata,module, | ||||
|                                          "Invalid td_samplesperpixel value"); | ||||
|                             return 0; | ||||
| 			} | ||||
| 			TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING, | ||||
|                                               ycbcrsubsampling+0, | ||||
|                                               ycbcrsubsampling+1); | ||||
| 			if (((ycbcrsubsampling[0]!=1)&&(ycbcrsubsampling[0]!=2)&&(ycbcrsubsampling[0]!=4)) || | ||||
| 			    ((ycbcrsubsampling[1]!=1)&&(ycbcrsubsampling[1]!=2)&&(ycbcrsubsampling[1]!=4))) | ||||
| 			{ | ||||
|                             TIFFErrorExt(tif->tif_clientdata,module, | ||||
|                                          "Invalid YCbCr subsampling"); | ||||
|                             return 0; | ||||
| 			} | ||||
| 			samplingblock_samples = ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; | ||||
| 			samplingblocks_hor = TIFFhowmany_32(td->td_imagewidth,ycbcrsubsampling[0]); | ||||
| 			samplingrow_samples = _TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module); | ||||
| 			samplingrow_size = TIFFhowmany_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module),8); | ||||
| 			scanline_size = (samplingrow_size/ycbcrsubsampling[1]); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			uint64 scanline_samples; | ||||
| 			scanline_samples=_TIFFMultiply64(tif,td->td_imagewidth,td->td_samplesperpixel,module); | ||||
| 			scanline_size=TIFFhowmany_64(_TIFFMultiply64(tif,scanline_samples,td->td_bitspersample,module),8); | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
|         { | ||||
| 		scanline_size=TIFFhowmany_64(_TIFFMultiply64(tif,td->td_imagewidth,td->td_bitspersample,module),8); | ||||
|         } | ||||
|         if (scanline_size == 0) | ||||
|         { | ||||
|                 TIFFErrorExt(tif->tif_clientdata,module,"Computed scanline size is zero"); | ||||
|                 return 0; | ||||
|         } | ||||
| 	return(scanline_size); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFScanlineSize(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFScanlineSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFScanlineSize64(tif); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer arithmetic overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Return the number of bytes required to store a complete | ||||
|  * decoded and packed raster scanline (as opposed to the | ||||
|  * I/O size returned by TIFFScanlineSize which may be less | ||||
|  * if data is store as separate planes). | ||||
|  */ | ||||
| uint64 | ||||
| TIFFRasterScanlineSize64(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFRasterScanlineSize64"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint64 scanline; | ||||
|  | ||||
| 	scanline = _TIFFMultiply64(tif, td->td_bitspersample, td->td_imagewidth, module); | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_CONTIG) { | ||||
| 		scanline = _TIFFMultiply64(tif, scanline, td->td_samplesperpixel, module); | ||||
| 		return (TIFFhowmany8_64(scanline)); | ||||
| 	} else | ||||
| 		return (_TIFFMultiply64(tif, TIFFhowmany8_64(scanline), | ||||
| 		    td->td_samplesperpixel, module)); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFRasterScanlineSize(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFRasterScanlineSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFRasterScanlineSize64(tif); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer arithmetic overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										312
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_swab.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										312
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_swab.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,312 @@ | ||||
| /* $Id: tif_swab.c,v 1.15 2017-06-08 16:39:50 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library Bit & Byte Swapping Support. | ||||
|  * | ||||
|  * XXX We assume short = 16-bits and long = 32-bits XXX | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabShort) | ||||
| void | ||||
| TIFFSwabShort(uint16* wp) | ||||
| { | ||||
| 	register unsigned char* cp = (unsigned char*) wp; | ||||
| 	unsigned char t; | ||||
| 	assert(sizeof(uint16)==2); | ||||
| 	t = cp[1]; cp[1] = cp[0]; cp[0] = t; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabLong) | ||||
| void | ||||
| TIFFSwabLong(uint32* lp) | ||||
| { | ||||
| 	register unsigned char* cp = (unsigned char*) lp; | ||||
| 	unsigned char t; | ||||
| 	assert(sizeof(uint32)==4); | ||||
| 	t = cp[3]; cp[3] = cp[0]; cp[0] = t; | ||||
| 	t = cp[2]; cp[2] = cp[1]; cp[1] = t; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabLong8) | ||||
| void | ||||
| TIFFSwabLong8(uint64* lp) | ||||
| { | ||||
| 	register unsigned char* cp = (unsigned char*) lp; | ||||
| 	unsigned char t; | ||||
| 	assert(sizeof(uint64)==8); | ||||
| 	t = cp[7]; cp[7] = cp[0]; cp[0] = t; | ||||
| 	t = cp[6]; cp[6] = cp[1]; cp[1] = t; | ||||
| 	t = cp[5]; cp[5] = cp[2]; cp[2] = t; | ||||
| 	t = cp[4]; cp[4] = cp[3]; cp[3] = t; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabArrayOfShort) | ||||
| void | ||||
| TIFFSwabArrayOfShort(register uint16* wp, tmsize_t n) | ||||
| { | ||||
| 	register unsigned char* cp; | ||||
| 	register unsigned char t; | ||||
| 	assert(sizeof(uint16)==2); | ||||
| 	/* XXX unroll loop some */ | ||||
| 	while (n-- > 0) { | ||||
| 		cp = (unsigned char*) wp; | ||||
| 		t = cp[1]; cp[1] = cp[0]; cp[0] = t; | ||||
| 		wp++; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabArrayOfTriples) | ||||
| void | ||||
| TIFFSwabArrayOfTriples(register uint8* tp, tmsize_t n) | ||||
| { | ||||
| 	unsigned char* cp; | ||||
| 	unsigned char t; | ||||
|  | ||||
| 	/* XXX unroll loop some */ | ||||
| 	while (n-- > 0) { | ||||
| 		cp = (unsigned char*) tp; | ||||
| 		t = cp[2]; cp[2] = cp[0]; cp[0] = t; | ||||
| 		tp += 3; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabArrayOfLong) | ||||
| void | ||||
| TIFFSwabArrayOfLong(register uint32* lp, tmsize_t n) | ||||
| { | ||||
| 	register unsigned char *cp; | ||||
| 	register unsigned char t; | ||||
| 	assert(sizeof(uint32)==4); | ||||
| 	/* XXX unroll loop some */ | ||||
| 	while (n-- > 0) { | ||||
| 		cp = (unsigned char *)lp; | ||||
| 		t = cp[3]; cp[3] = cp[0]; cp[0] = t; | ||||
| 		t = cp[2]; cp[2] = cp[1]; cp[1] = t; | ||||
| 		lp++; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabArrayOfLong8) | ||||
| void | ||||
| TIFFSwabArrayOfLong8(register uint64* lp, tmsize_t n) | ||||
| { | ||||
| 	register unsigned char *cp; | ||||
| 	register unsigned char t; | ||||
| 	assert(sizeof(uint64)==8); | ||||
| 	/* XXX unroll loop some */ | ||||
| 	while (n-- > 0) { | ||||
| 		cp = (unsigned char *)lp; | ||||
| 		t = cp[7]; cp[7] = cp[0]; cp[0] = t; | ||||
| 		t = cp[6]; cp[6] = cp[1]; cp[1] = t; | ||||
| 		t = cp[5]; cp[5] = cp[2]; cp[2] = t; | ||||
| 		t = cp[4]; cp[4] = cp[3]; cp[3] = t; | ||||
| 		lp++; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabFloat) | ||||
| void | ||||
| TIFFSwabFloat(float* fp) | ||||
| { | ||||
| 	register unsigned char* cp = (unsigned char*) fp; | ||||
| 	unsigned char t; | ||||
| 	assert(sizeof(float)==4); | ||||
| 	t = cp[3]; cp[3] = cp[0]; cp[0] = t; | ||||
| 	t = cp[2]; cp[2] = cp[1]; cp[1] = t; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabArrayOfFloat) | ||||
| void | ||||
| TIFFSwabArrayOfFloat(register float* fp, tmsize_t n) | ||||
| { | ||||
| 	register unsigned char *cp; | ||||
| 	register unsigned char t; | ||||
| 	assert(sizeof(float)==4); | ||||
| 	/* XXX unroll loop some */ | ||||
| 	while (n-- > 0) { | ||||
| 		cp = (unsigned char *)fp; | ||||
| 		t = cp[3]; cp[3] = cp[0]; cp[0] = t; | ||||
| 		t = cp[2]; cp[2] = cp[1]; cp[1] = t; | ||||
| 		fp++; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabDouble) | ||||
| void | ||||
| TIFFSwabDouble(double *dp) | ||||
| { | ||||
| 	register unsigned char* cp = (unsigned char*) dp; | ||||
| 	unsigned char t; | ||||
| 	assert(sizeof(double)==8); | ||||
| 	t = cp[7]; cp[7] = cp[0]; cp[0] = t; | ||||
| 	t = cp[6]; cp[6] = cp[1]; cp[1] = t; | ||||
| 	t = cp[5]; cp[5] = cp[2]; cp[2] = t; | ||||
| 	t = cp[4]; cp[4] = cp[3]; cp[3] = t; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(DISABLE_CHECK_TIFFSWABMACROS) || !defined(TIFFSwabArrayOfDouble) | ||||
| void | ||||
| TIFFSwabArrayOfDouble(double* dp, tmsize_t n) | ||||
| { | ||||
| 	register unsigned char *cp; | ||||
| 	register unsigned char t; | ||||
| 	assert(sizeof(double)==8); | ||||
| 	/* XXX unroll loop some */ | ||||
| 	while (n-- > 0) { | ||||
| 		cp = (unsigned char *)dp; | ||||
| 		t = cp[7]; cp[7] = cp[0]; cp[0] = t; | ||||
| 		t = cp[6]; cp[6] = cp[1]; cp[1] = t; | ||||
| 		t = cp[5]; cp[5] = cp[2]; cp[2] = t; | ||||
| 		t = cp[4]; cp[4] = cp[3]; cp[3] = t; | ||||
| 		dp++; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Bit reversal tables.  TIFFBitRevTable[<byte>] gives | ||||
|  * the bit reversed value of <byte>.  Used in various | ||||
|  * places in the library when the FillOrder requires | ||||
|  * bit reversal of byte values (e.g. CCITT Fax 3 | ||||
|  * encoding/decoding).  TIFFNoBitRevTable is provided | ||||
|  * for algorithms that want an equivalent table that | ||||
|  * do not reverse bit values. | ||||
|  */ | ||||
| static const unsigned char TIFFBitRevTable[256] = { | ||||
|     0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, | ||||
|     0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, | ||||
|     0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, | ||||
|     0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, | ||||
|     0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, | ||||
|     0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, | ||||
|     0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, | ||||
|     0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, | ||||
|     0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, | ||||
|     0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, | ||||
|     0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, | ||||
|     0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, | ||||
|     0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, | ||||
|     0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, | ||||
|     0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, | ||||
|     0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, | ||||
|     0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, | ||||
|     0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, | ||||
|     0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, | ||||
|     0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, | ||||
|     0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, | ||||
|     0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, | ||||
|     0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, | ||||
|     0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, | ||||
|     0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, | ||||
|     0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, | ||||
|     0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, | ||||
|     0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, | ||||
|     0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, | ||||
|     0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, | ||||
|     0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, | ||||
|     0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff | ||||
| }; | ||||
| static const unsigned char TIFFNoBitRevTable[256] = { | ||||
|     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,  | ||||
|     0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,  | ||||
|     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,  | ||||
|     0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,  | ||||
|     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,  | ||||
|     0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,  | ||||
|     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,  | ||||
|     0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,  | ||||
|     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,  | ||||
|     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,  | ||||
|     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,  | ||||
|     0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,  | ||||
|     0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,  | ||||
|     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,  | ||||
|     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,  | ||||
|     0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,  | ||||
|     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,  | ||||
|     0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,  | ||||
|     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,  | ||||
|     0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,  | ||||
|     0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,  | ||||
|     0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,  | ||||
|     0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,  | ||||
|     0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,  | ||||
|     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,  | ||||
|     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,  | ||||
|     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,  | ||||
|     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,  | ||||
|     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,  | ||||
|     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,  | ||||
|     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,  | ||||
|     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,  | ||||
| }; | ||||
|  | ||||
| const unsigned char* | ||||
| TIFFGetBitRevTable(int reversed) | ||||
| { | ||||
| 	return (reversed ? TIFFBitRevTable : TIFFNoBitRevTable); | ||||
| } | ||||
|  | ||||
| void | ||||
| TIFFReverseBits(uint8* cp, tmsize_t n)   | ||||
| { | ||||
| 	for (; n > 8; n -= 8) { | ||||
| 		cp[0] = TIFFBitRevTable[cp[0]]; | ||||
| 		cp[1] = TIFFBitRevTable[cp[1]]; | ||||
| 		cp[2] = TIFFBitRevTable[cp[2]]; | ||||
| 		cp[3] = TIFFBitRevTable[cp[3]]; | ||||
| 		cp[4] = TIFFBitRevTable[cp[4]]; | ||||
| 		cp[5] = TIFFBitRevTable[cp[5]]; | ||||
| 		cp[6] = TIFFBitRevTable[cp[6]]; | ||||
| 		cp[7] = TIFFBitRevTable[cp[7]]; | ||||
| 		cp += 8; | ||||
| 	} | ||||
| 	while (n-- > 0) { | ||||
| 		*cp = TIFFBitRevTable[*cp]; | ||||
| 		cp++; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										208
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_thunder.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										208
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_thunder.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,208 @@ | ||||
| /* $Id: tif_thunder.c,v 1.13 2016-09-04 21:32:56 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
| #include <assert.h> | ||||
| #ifdef THUNDER_SUPPORT | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * ThunderScan 4-bit Compression Algorithm Support | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * ThunderScan uses an encoding scheme designed for | ||||
|  * 4-bit pixel values.  Data is encoded in bytes, with | ||||
|  * each byte split into a 2-bit code word and a 6-bit | ||||
|  * data value.  The encoding gives raw data, runs of | ||||
|  * pixels, or pixel values encoded as a delta from the | ||||
|  * previous pixel value.  For the latter, either 2-bit | ||||
|  * or 3-bit delta values are used, with the deltas packed | ||||
|  * into a single byte. | ||||
|  */ | ||||
| #define	THUNDER_DATA		0x3f	/* mask for 6-bit data */ | ||||
| #define	THUNDER_CODE		0xc0	/* mask for 2-bit code word */ | ||||
| /* code values */ | ||||
| #define	THUNDER_RUN		0x00	/* run of pixels w/ encoded count */ | ||||
| #define	THUNDER_2BITDELTAS	0x40	/* 3 pixels w/ encoded 2-bit deltas */ | ||||
| #define	    DELTA2_SKIP		2	/* skip code for 2-bit deltas */ | ||||
| #define	THUNDER_3BITDELTAS	0x80	/* 2 pixels w/ encoded 3-bit deltas */ | ||||
| #define	    DELTA3_SKIP		4	/* skip code for 3-bit deltas */ | ||||
| #define	THUNDER_RAW		0xc0	/* raw data encoded */ | ||||
|  | ||||
| static const int twobitdeltas[4] = { 0, 1, 0, -1 }; | ||||
| static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 }; | ||||
|  | ||||
| #define	SETPIXEL(op, v) {                     \ | ||||
| 	lastpixel = (v) & 0xf;                \ | ||||
|         if ( npixels < maxpixels )         \ | ||||
|         {                                     \ | ||||
| 	  if (npixels++ & 1)                  \ | ||||
| 	    *op++ |= lastpixel;               \ | ||||
| 	  else                                \ | ||||
| 	    op[0] = (uint8) (lastpixel << 4); \ | ||||
|         }                                     \ | ||||
| } | ||||
|  | ||||
| static int | ||||
| ThunderSetupDecode(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "ThunderSetupDecode"; | ||||
|  | ||||
|         if( tif->tif_dir.td_bitspersample != 4 ) | ||||
|         { | ||||
|                 TIFFErrorExt(tif->tif_clientdata, module, | ||||
|                              "Wrong bitspersample value (%d), Thunder decoder only supports 4bits per sample.", | ||||
|                              (int) tif->tif_dir.td_bitspersample ); | ||||
|                 return 0; | ||||
|         } | ||||
|          | ||||
|  | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static int | ||||
| ThunderDecode(TIFF* tif, uint8* op, tmsize_t maxpixels) | ||||
| { | ||||
| 	static const char module[] = "ThunderDecode"; | ||||
| 	register unsigned char *bp; | ||||
| 	register tmsize_t cc; | ||||
| 	unsigned int lastpixel; | ||||
| 	tmsize_t npixels; | ||||
|  | ||||
| 	bp = (unsigned char *)tif->tif_rawcp; | ||||
| 	cc = tif->tif_rawcc; | ||||
| 	lastpixel = 0; | ||||
| 	npixels = 0; | ||||
| 	while (cc > 0 && npixels < maxpixels) { | ||||
| 		int n, delta; | ||||
|  | ||||
| 		n = *bp++; | ||||
| 		cc--; | ||||
| 		switch (n & THUNDER_CODE) { | ||||
| 		case THUNDER_RUN:		/* pixel run */ | ||||
| 			/* | ||||
| 			 * Replicate the last pixel n times, | ||||
| 			 * where n is the lower-order 6 bits. | ||||
| 			 */ | ||||
| 			if (npixels & 1) { | ||||
| 				op[0] |= lastpixel; | ||||
| 				lastpixel = *op++; npixels++; n--; | ||||
| 			} else | ||||
| 				lastpixel |= lastpixel << 4; | ||||
| 			npixels += n; | ||||
| 			if (npixels < maxpixels) { | ||||
| 				for (; n > 0; n -= 2) | ||||
| 					*op++ = (uint8) lastpixel; | ||||
| 			} | ||||
| 			if (n == -1) | ||||
| 				*--op &= 0xf0; | ||||
| 			lastpixel &= 0xf; | ||||
| 			break; | ||||
| 		case THUNDER_2BITDELTAS:	/* 2-bit deltas */ | ||||
| 			if ((delta = ((n >> 4) & 3)) != DELTA2_SKIP) | ||||
| 				SETPIXEL(op, lastpixel + twobitdeltas[delta]); | ||||
| 			if ((delta = ((n >> 2) & 3)) != DELTA2_SKIP) | ||||
| 				SETPIXEL(op, lastpixel + twobitdeltas[delta]); | ||||
| 			if ((delta = (n & 3)) != DELTA2_SKIP) | ||||
| 				SETPIXEL(op, lastpixel + twobitdeltas[delta]); | ||||
| 			break; | ||||
| 		case THUNDER_3BITDELTAS:	/* 3-bit deltas */ | ||||
| 			if ((delta = ((n >> 3) & 7)) != DELTA3_SKIP) | ||||
| 				SETPIXEL(op, lastpixel + threebitdeltas[delta]); | ||||
| 			if ((delta = (n & 7)) != DELTA3_SKIP) | ||||
| 				SETPIXEL(op, lastpixel + threebitdeltas[delta]); | ||||
| 			break; | ||||
| 		case THUNDER_RAW:		/* raw data */ | ||||
| 			SETPIXEL(op, n); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	tif->tif_rawcp = (uint8*) bp; | ||||
| 	tif->tif_rawcc = cc; | ||||
| 	if (npixels != maxpixels) { | ||||
| #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "%s data at scanline %lu (%I64u != %I64u)", | ||||
| 			     npixels < maxpixels ? "Not enough" : "Too much", | ||||
| 			     (unsigned long) tif->tif_row, | ||||
| 			     (unsigned __int64) npixels, | ||||
| 			     (unsigned __int64) maxpixels); | ||||
| #else | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "%s data at scanline %lu (%llu != %llu)", | ||||
| 			     npixels < maxpixels ? "Not enough" : "Too much", | ||||
| 			     (unsigned long) tif->tif_row, | ||||
| 			     (unsigned long long) npixels, | ||||
| 			     (unsigned long long) maxpixels); | ||||
| #endif | ||||
| 		return (0); | ||||
| 	} | ||||
|  | ||||
|         return (1); | ||||
| } | ||||
|  | ||||
| static int | ||||
| ThunderDecodeRow(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "ThunderDecodeRow"; | ||||
| 	uint8* row = buf; | ||||
| 	 | ||||
| 	(void) s; | ||||
| 	if (occ % tif->tif_scanlinesize) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	while (occ > 0) { | ||||
| 		if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth)) | ||||
| 			return (0); | ||||
| 		occ -= tif->tif_scanlinesize; | ||||
| 		row += tif->tif_scanlinesize; | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| int | ||||
| TIFFInitThunderScan(TIFF* tif, int scheme) | ||||
| { | ||||
| 	(void) scheme; | ||||
|  | ||||
|         tif->tif_setupdecode = ThunderSetupDecode; | ||||
| 	tif->tif_decoderow = ThunderDecodeRow; | ||||
| 	tif->tif_decodestrip = ThunderDecodeRow;  | ||||
| 	return (1); | ||||
| } | ||||
| #endif /* THUNDER_SUPPORT */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										322
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_tile.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_tile.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,322 @@ | ||||
| /* $Id: tif_tile.c,v 1.24 2015-06-07 22:35:40 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1991-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Tiled Image Support Routines. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| /* | ||||
|  * Compute which tile an (x,y,z,s) value is in. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint32 dx = td->td_tilewidth; | ||||
| 	uint32 dy = td->td_tilelength; | ||||
| 	uint32 dz = td->td_tiledepth; | ||||
| 	uint32 tile = 1; | ||||
|  | ||||
| 	if (td->td_imagedepth == 1) | ||||
| 		z = 0; | ||||
| 	if (dx == (uint32) -1) | ||||
| 		dx = td->td_imagewidth; | ||||
| 	if (dy == (uint32) -1) | ||||
| 		dy = td->td_imagelength; | ||||
| 	if (dz == (uint32) -1) | ||||
| 		dz = td->td_imagedepth; | ||||
| 	if (dx != 0 && dy != 0 && dz != 0) { | ||||
| 		uint32 xpt = TIFFhowmany_32(td->td_imagewidth, dx); | ||||
| 		uint32 ypt = TIFFhowmany_32(td->td_imagelength, dy); | ||||
| 		uint32 zpt = TIFFhowmany_32(td->td_imagedepth, dz); | ||||
|  | ||||
| 		if (td->td_planarconfig == PLANARCONFIG_SEPARATE)  | ||||
| 			tile = (xpt*ypt*zpt)*s + | ||||
| 			     (xpt*ypt)*(z/dz) + | ||||
| 			     xpt*(y/dy) + | ||||
| 			     x/dx; | ||||
| 		else | ||||
| 			tile = (xpt*ypt)*(z/dz) + xpt*(y/dy) + x/dx; | ||||
| 	} | ||||
| 	return (tile); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Check an (x,y,z,s) coordinate | ||||
|  * against the image bounds. | ||||
|  */ | ||||
| int | ||||
| TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
|  | ||||
| 	if (x >= td->td_imagewidth) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "%lu: Col out of range, max %lu", | ||||
| 			     (unsigned long) x, | ||||
| 			     (unsigned long) (td->td_imagewidth - 1)); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (y >= td->td_imagelength) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "%lu: Row out of range, max %lu", | ||||
| 			     (unsigned long) y, | ||||
| 			     (unsigned long) (td->td_imagelength - 1)); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (z >= td->td_imagedepth) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "%lu: Depth out of range, max %lu", | ||||
| 			     (unsigned long) z, | ||||
| 			     (unsigned long) (td->td_imagedepth - 1)); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_SEPARATE && | ||||
| 	    s >= td->td_samplesperpixel) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, | ||||
| 			     "%lu: Sample out of range, max %lu", | ||||
| 			     (unsigned long) s, | ||||
| 			     (unsigned long) (td->td_samplesperpixel - 1)); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute how many tiles are in an image. | ||||
|  */ | ||||
| uint32 | ||||
| TIFFNumberOfTiles(TIFF* tif) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint32 dx = td->td_tilewidth; | ||||
| 	uint32 dy = td->td_tilelength; | ||||
| 	uint32 dz = td->td_tiledepth; | ||||
| 	uint32 ntiles; | ||||
|  | ||||
| 	if (dx == (uint32) -1) | ||||
| 		dx = td->td_imagewidth; | ||||
| 	if (dy == (uint32) -1) | ||||
| 		dy = td->td_imagelength; | ||||
| 	if (dz == (uint32) -1) | ||||
| 		dz = td->td_imagedepth; | ||||
| 	ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 : | ||||
| 	    _TIFFMultiply32(tif, _TIFFMultiply32(tif, TIFFhowmany_32(td->td_imagewidth, dx), | ||||
| 	    TIFFhowmany_32(td->td_imagelength, dy), | ||||
| 	    "TIFFNumberOfTiles"), | ||||
| 	    TIFFhowmany_32(td->td_imagedepth, dz), "TIFFNumberOfTiles"); | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) | ||||
| 		ntiles = _TIFFMultiply32(tif, ntiles, td->td_samplesperpixel, | ||||
| 		    "TIFFNumberOfTiles"); | ||||
| 	return (ntiles); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute the # bytes in each row of a tile. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFTileRowSize64(TIFF* tif) | ||||
| { | ||||
|         static const char module[] = "TIFFTileRowSize64"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint64 rowsize; | ||||
| 	uint64 tilerowsize; | ||||
|  | ||||
| 	if (td->td_tilelength == 0) | ||||
|         { | ||||
|                 TIFFErrorExt(tif->tif_clientdata,module,"Tile length is zero"); | ||||
|                 return 0; | ||||
|         } | ||||
|         if (td->td_tilewidth == 0) | ||||
|         { | ||||
|                 TIFFErrorExt(tif->tif_clientdata,module,"Tile width is zero"); | ||||
| 		return (0); | ||||
|         } | ||||
| 	rowsize = _TIFFMultiply64(tif, td->td_bitspersample, td->td_tilewidth, | ||||
| 	    "TIFFTileRowSize"); | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_CONTIG) | ||||
|         { | ||||
|                 if (td->td_samplesperpixel == 0) | ||||
|                 { | ||||
|                         TIFFErrorExt(tif->tif_clientdata,module,"Samples per pixel is zero"); | ||||
|                         return 0; | ||||
|                 } | ||||
| 		rowsize = _TIFFMultiply64(tif, rowsize, td->td_samplesperpixel, | ||||
| 		    "TIFFTileRowSize"); | ||||
|         } | ||||
|         tilerowsize=TIFFhowmany8_64(rowsize); | ||||
|         if (tilerowsize == 0) | ||||
|         { | ||||
|                 TIFFErrorExt(tif->tif_clientdata,module,"Computed tile row size is zero"); | ||||
|                 return 0; | ||||
|         } | ||||
| 	return (tilerowsize); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFTileRowSize(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFTileRowSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFTileRowSize64(tif); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute the # bytes in a variable length, row-aligned tile. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFVTileSize64(TIFF* tif, uint32 nrows) | ||||
| { | ||||
| 	static const char module[] = "TIFFVTileSize64"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	if (td->td_tilelength == 0 || td->td_tilewidth == 0 || | ||||
| 	    td->td_tiledepth == 0) | ||||
| 		return (0); | ||||
| 	if ((td->td_planarconfig==PLANARCONFIG_CONTIG)&& | ||||
| 	    (td->td_photometric==PHOTOMETRIC_YCBCR)&& | ||||
| 	    (td->td_samplesperpixel==3)&& | ||||
| 	    (!isUpSampled(tif))) | ||||
| 	{ | ||||
| 		/* | ||||
| 		 * Packed YCbCr data contain one Cb+Cr for every | ||||
| 		 * HorizontalSampling*VerticalSampling Y values. | ||||
| 		 * Must also roundup width and height when calculating | ||||
| 		 * since images that are not a multiple of the | ||||
| 		 * horizontal/vertical subsampling area include | ||||
| 		 * YCbCr data for the extended image. | ||||
| 		 */ | ||||
| 		uint16 ycbcrsubsampling[2]; | ||||
| 		uint16 samplingblock_samples; | ||||
| 		uint32 samplingblocks_hor; | ||||
| 		uint32 samplingblocks_ver; | ||||
| 		uint64 samplingrow_samples; | ||||
| 		uint64 samplingrow_size; | ||||
| 		TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0, | ||||
| 		    ycbcrsubsampling+1); | ||||
| 		if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4) | ||||
| 		    ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4)) | ||||
| 		{ | ||||
| 			TIFFErrorExt(tif->tif_clientdata,module, | ||||
| 				     "Invalid YCbCr subsampling (%dx%d)",  | ||||
| 				     ycbcrsubsampling[0],  | ||||
| 				     ycbcrsubsampling[1] ); | ||||
| 			return 0; | ||||
| 		} | ||||
| 		samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2; | ||||
| 		samplingblocks_hor=TIFFhowmany_32(td->td_tilewidth,ycbcrsubsampling[0]); | ||||
| 		samplingblocks_ver=TIFFhowmany_32(nrows,ycbcrsubsampling[1]); | ||||
| 		samplingrow_samples=_TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module); | ||||
| 		samplingrow_size=TIFFhowmany8_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module)); | ||||
| 		return(_TIFFMultiply64(tif,samplingrow_size,samplingblocks_ver,module)); | ||||
| 	} | ||||
| 	else | ||||
| 		return(_TIFFMultiply64(tif,nrows,TIFFTileRowSize64(tif),module)); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFVTileSize(TIFF* tif, uint32 nrows) | ||||
| { | ||||
| 	static const char module[] = "TIFFVTileSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFVTileSize64(tif,nrows); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute the # bytes in a row-aligned tile. | ||||
|  */ | ||||
| uint64 | ||||
| TIFFTileSize64(TIFF* tif) | ||||
| { | ||||
| 	return (TIFFVTileSize64(tif, tif->tif_dir.td_tilelength)); | ||||
| } | ||||
| tmsize_t | ||||
| TIFFTileSize(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "TIFFTileSize"; | ||||
| 	uint64 m; | ||||
| 	tmsize_t n; | ||||
| 	m=TIFFTileSize64(tif); | ||||
| 	n=(tmsize_t)m; | ||||
| 	if ((uint64)n!=m) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow"); | ||||
| 		n=0; | ||||
| 	} | ||||
| 	return(n); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Compute a default tile size based on the image | ||||
|  * characteristics and a requested value.  If a | ||||
|  * request is <1 then we choose a size according | ||||
|  * to certain heuristics. | ||||
|  */ | ||||
| void | ||||
| TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th) | ||||
| { | ||||
| 	(*tif->tif_deftilesize)(tif, tw, th); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th) | ||||
| { | ||||
| 	(void) tif; | ||||
| 	if (*(int32*) tw < 1) | ||||
| 		*tw = 256; | ||||
| 	if (*(int32*) th < 1) | ||||
| 		*th = 256; | ||||
| 	/* roundup to a multiple of 16 per the spec */ | ||||
| 	if (*tw & 0xf) | ||||
| 		*tw = TIFFroundup_32(*tw, 16); | ||||
| 	if (*th & 0xf) | ||||
| 		*th = TIFFroundup_32(*th, 16); | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										386
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_unix.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_unix.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,386 @@ | ||||
| /* $Id: tif_unix.c,v 1.28 2017-01-11 19:02:49 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library UNIX-specific Routines. These are should also work with the | ||||
|  * Windows Common RunTime Library. | ||||
|  */ | ||||
|  | ||||
| #include "tif_config.h" | ||||
|  | ||||
| #ifdef HAVE_SYS_TYPES_H | ||||
| # include <sys/types.h> | ||||
| #endif | ||||
|  | ||||
| #include <errno.h> | ||||
|  | ||||
| #include <stdarg.h> | ||||
| #include <stdlib.h> | ||||
| #include <sys/stat.h> | ||||
|  | ||||
| #ifdef HAVE_UNISTD_H | ||||
| # include <unistd.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_FCNTL_H | ||||
| # include <fcntl.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_IO_H | ||||
| # include <io.h> | ||||
| #endif | ||||
|  | ||||
| #include "tiffiop.h" | ||||
|  | ||||
|  | ||||
| #define TIFF_IO_MAX 2147483647U | ||||
|  | ||||
|  | ||||
| typedef union fd_as_handle_union | ||||
| { | ||||
| 	int fd; | ||||
| 	thandle_t h; | ||||
| } fd_as_handle_union_t; | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffReadProc(thandle_t fd, void* buf, tmsize_t size) | ||||
| { | ||||
| 	fd_as_handle_union_t fdh; | ||||
|         const size_t bytes_total = (size_t) size; | ||||
|         size_t bytes_read; | ||||
|         tmsize_t count = -1; | ||||
| 	if ((tmsize_t) bytes_total != size) | ||||
| 	{ | ||||
| 		errno=EINVAL; | ||||
| 		return (tmsize_t) -1; | ||||
| 	} | ||||
| 	fdh.h = fd; | ||||
|         for (bytes_read=0; bytes_read < bytes_total; bytes_read+=count) | ||||
|         { | ||||
|                 char *buf_offset = (char *) buf+bytes_read; | ||||
|                 size_t io_size = bytes_total-bytes_read; | ||||
|                 if (io_size > TIFF_IO_MAX) | ||||
|                         io_size = TIFF_IO_MAX; | ||||
|                 count=read(fdh.fd, buf_offset, (TIFFIOSize_t) io_size); | ||||
|                 if (count <= 0) | ||||
|                         break; | ||||
|         } | ||||
|         if (count < 0) | ||||
|                 return (tmsize_t)-1; | ||||
|         return (tmsize_t) bytes_read; | ||||
| } | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffWriteProc(thandle_t fd, void* buf, tmsize_t size) | ||||
| { | ||||
| 	fd_as_handle_union_t fdh; | ||||
| 	const size_t bytes_total = (size_t) size; | ||||
|         size_t bytes_written; | ||||
|         tmsize_t count = -1; | ||||
| 	if ((tmsize_t) bytes_total != size) | ||||
| 	{ | ||||
| 		errno=EINVAL; | ||||
| 		return (tmsize_t) -1; | ||||
| 	} | ||||
| 	fdh.h = fd; | ||||
|         for (bytes_written=0; bytes_written < bytes_total; bytes_written+=count) | ||||
|         { | ||||
|                 const char *buf_offset = (char *) buf+bytes_written; | ||||
|                 size_t io_size = bytes_total-bytes_written; | ||||
|                 if (io_size > TIFF_IO_MAX) | ||||
|                         io_size = TIFF_IO_MAX; | ||||
|                 count=write(fdh.fd, buf_offset, (TIFFIOSize_t) io_size); | ||||
|                 if (count <= 0) | ||||
|                         break; | ||||
|         } | ||||
|         if (count < 0) | ||||
|                 return (tmsize_t)-1; | ||||
|         return (tmsize_t) bytes_written; | ||||
| 	/* return ((tmsize_t) write(fdh.fd, buf, bytes_total)); */ | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffSeekProc(thandle_t fd, uint64 off, int whence) | ||||
| { | ||||
| 	fd_as_handle_union_t fdh; | ||||
| 	_TIFF_off_t off_io = (_TIFF_off_t) off; | ||||
| 	if ((uint64) off_io != off) | ||||
| 	{ | ||||
| 		errno=EINVAL; | ||||
| 		return (uint64) -1; /* this is really gross */ | ||||
| 	} | ||||
| 	fdh.h = fd; | ||||
| 	return((uint64)_TIFF_lseek_f(fdh.fd,off_io,whence)); | ||||
| } | ||||
|  | ||||
| static int | ||||
| _tiffCloseProc(thandle_t fd) | ||||
| { | ||||
| 	fd_as_handle_union_t fdh; | ||||
| 	fdh.h = fd; | ||||
| 	return(close(fdh.fd)); | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffSizeProc(thandle_t fd) | ||||
| { | ||||
| 	_TIFF_stat_s sb; | ||||
| 	fd_as_handle_union_t fdh; | ||||
| 	fdh.h = fd; | ||||
| 	if (_TIFF_fstat_f(fdh.fd,&sb)<0) | ||||
| 		return(0); | ||||
| 	else | ||||
| 		return((uint64)sb.st_size); | ||||
| } | ||||
|  | ||||
| #ifdef HAVE_MMAP | ||||
| #include <sys/mman.h> | ||||
|  | ||||
| static int | ||||
| _tiffMapProc(thandle_t fd, void** pbase, toff_t* psize) | ||||
| { | ||||
| 	uint64 size64 = _tiffSizeProc(fd); | ||||
| 	tmsize_t sizem = (tmsize_t)size64; | ||||
| 	if ((uint64)sizem==size64) { | ||||
| 		fd_as_handle_union_t fdh; | ||||
| 		fdh.h = fd; | ||||
| 		*pbase = (void*) | ||||
| 		    mmap(0, (size_t)sizem, PROT_READ, MAP_SHARED, fdh.fd, 0); | ||||
| 		if (*pbase != (void*) -1) { | ||||
| 			*psize = (tmsize_t)sizem; | ||||
| 			return (1); | ||||
| 		} | ||||
| 	} | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _tiffUnmapProc(thandle_t fd, void* base, toff_t size) | ||||
| { | ||||
| 	(void) fd; | ||||
| 	(void) munmap(base, (off_t) size); | ||||
| } | ||||
| #else /* !HAVE_MMAP */ | ||||
| static int | ||||
| _tiffMapProc(thandle_t fd, void** pbase, toff_t* psize) | ||||
| { | ||||
| 	(void) fd; (void) pbase; (void) psize; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _tiffUnmapProc(thandle_t fd, void* base, toff_t size) | ||||
| { | ||||
| 	(void) fd; (void) base; (void) size; | ||||
| } | ||||
| #endif /* !HAVE_MMAP */ | ||||
|  | ||||
| /* | ||||
|  * Open a TIFF file descriptor for read/writing. | ||||
|  */ | ||||
| TIFF* | ||||
| TIFFFdOpen(int fd, const char* name, const char* mode) | ||||
| { | ||||
| 	TIFF* tif; | ||||
|  | ||||
| 	fd_as_handle_union_t fdh; | ||||
| 	fdh.fd = fd; | ||||
| 	tif = TIFFClientOpen(name, mode, | ||||
| 	    fdh.h, | ||||
| 	    _tiffReadProc, _tiffWriteProc, | ||||
| 	    _tiffSeekProc, _tiffCloseProc, _tiffSizeProc, | ||||
| 	    _tiffMapProc, _tiffUnmapProc); | ||||
| 	if (tif) | ||||
| 		tif->tif_fd = fd; | ||||
| 	return (tif); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Open a TIFF file for read/writing. | ||||
|  */ | ||||
| TIFF* | ||||
| TIFFOpen(const char* name, const char* mode) | ||||
| { | ||||
| 	static const char module[] = "TIFFOpen"; | ||||
| 	int m, fd; | ||||
| 	TIFF* tif; | ||||
|  | ||||
| 	m = _TIFFgetMode(mode, module); | ||||
| 	if (m == -1) | ||||
| 		return ((TIFF*)0); | ||||
|  | ||||
| /* for cygwin and mingw */ | ||||
| #ifdef O_BINARY | ||||
| 	m |= O_BINARY; | ||||
| #endif | ||||
|  | ||||
| 	fd = open(name, m, 0666); | ||||
| 	if (fd < 0) { | ||||
| 		if (errno > 0 && strerror(errno) != NULL ) { | ||||
| 			TIFFErrorExt(0, module, "%s: %s", name, strerror(errno) ); | ||||
| 		} else { | ||||
| 			TIFFErrorExt(0, module, "%s: Cannot open", name); | ||||
| 		} | ||||
| 		return ((TIFF *)0); | ||||
| 	} | ||||
|  | ||||
| 	tif = TIFFFdOpen((int)fd, name, mode); | ||||
| 	if(!tif) | ||||
| 		close(fd); | ||||
| 	return tif; | ||||
| } | ||||
|  | ||||
| #ifdef __WIN32__ | ||||
| #include <windows.h> | ||||
| /* | ||||
|  * Open a TIFF file with a Unicode filename, for read/writing. | ||||
|  */ | ||||
| TIFF* | ||||
| TIFFOpenW(const wchar_t* name, const char* mode) | ||||
| { | ||||
| 	static const char module[] = "TIFFOpenW"; | ||||
| 	int m, fd; | ||||
| 	int mbsize; | ||||
| 	char *mbname; | ||||
| 	TIFF* tif; | ||||
|  | ||||
| 	m = _TIFFgetMode(mode, module); | ||||
| 	if (m == -1) | ||||
| 		return ((TIFF*)0); | ||||
|  | ||||
| /* for cygwin and mingw */ | ||||
| #ifdef O_BINARY | ||||
| 	m |= O_BINARY; | ||||
| #endif | ||||
|  | ||||
| 	fd = _wopen(name, m, 0666); | ||||
| 	if (fd < 0) { | ||||
| 		TIFFErrorExt(0, module, "%ls: Cannot open", name); | ||||
| 		return ((TIFF *)0); | ||||
| 	} | ||||
|  | ||||
| 	mbname = NULL; | ||||
| 	mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL); | ||||
| 	if (mbsize > 0) { | ||||
| 		mbname = _TIFFmalloc(mbsize); | ||||
| 		if (!mbname) { | ||||
| 			TIFFErrorExt(0, module, | ||||
| 			"Can't allocate space for filename conversion buffer"); | ||||
| 			return ((TIFF*)0); | ||||
| 		} | ||||
|  | ||||
| 		WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize, | ||||
| 				    NULL, NULL); | ||||
| 	} | ||||
|  | ||||
| 	tif = TIFFFdOpen((int)fd, (mbname != NULL) ? mbname : "<unknown>", | ||||
| 			 mode); | ||||
| 	 | ||||
| 	_TIFFfree(mbname); | ||||
| 	 | ||||
| 	if(!tif) | ||||
| 		close(fd); | ||||
| 	return tif; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| void* | ||||
| _TIFFmalloc(tmsize_t s) | ||||
| { | ||||
|         if (s == 0) | ||||
|                 return ((void *) NULL); | ||||
|  | ||||
| 	return (malloc((size_t) s)); | ||||
| } | ||||
|  | ||||
| void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz) | ||||
| { | ||||
|     if( nmemb == 0 || siz == 0 ) | ||||
|         return ((void *) NULL); | ||||
|  | ||||
|     return calloc((size_t) nmemb, (size_t)siz); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFfree(void* p) | ||||
| { | ||||
| 	free(p); | ||||
| } | ||||
|  | ||||
| void* | ||||
| _TIFFrealloc(void* p, tmsize_t s) | ||||
| { | ||||
| 	return (realloc(p, (size_t) s)); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFmemset(void* p, int v, tmsize_t c) | ||||
| { | ||||
| 	memset(p, v, (size_t) c); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFmemcpy(void* d, const void* s, tmsize_t c) | ||||
| { | ||||
| 	memcpy(d, s, (size_t) c); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c) | ||||
| { | ||||
| 	return (memcmp(p1, p2, (size_t) c)); | ||||
| } | ||||
|  | ||||
| static void | ||||
| unixWarningHandler(const char* module, const char* fmt, va_list ap) | ||||
| { | ||||
| 	if (module != NULL) | ||||
| 		fprintf(stderr, "%s: ", module); | ||||
| 	fprintf(stderr, "Warning, "); | ||||
| 	vfprintf(stderr, fmt, ap); | ||||
| 	fprintf(stderr, ".\n"); | ||||
| } | ||||
| TIFFErrorHandler _TIFFwarningHandler = unixWarningHandler; | ||||
|  | ||||
| static void | ||||
| unixErrorHandler(const char* module, const char* fmt, va_list ap) | ||||
| { | ||||
| 	if (module != NULL) | ||||
| 		fprintf(stderr, "%s: ", module); | ||||
| 	vfprintf(stderr, fmt, ap); | ||||
| 	fprintf(stderr, ".\n"); | ||||
| } | ||||
| TIFFErrorHandler _TIFFerrorHandler = unixErrorHandler; | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										40
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_version.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_version.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| /* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_version.c,v 1.3 2010-03-10 18:56:49 bfriesen Exp $ */ | ||||
| /* | ||||
|  * Copyright (c) 1992-1997 Sam Leffler | ||||
|  * Copyright (c) 1992-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| static const char TIFFVersion[] = TIFFLIB_VERSION_STR; | ||||
|  | ||||
| const char* | ||||
| TIFFGetVersion(void) | ||||
| { | ||||
| 	return (TIFFVersion); | ||||
| } | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										89
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_warning.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_warning.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | ||||
| /* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_warning.c,v 1.4 2017-07-04 12:54:42 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| TIFFErrorHandlerExt _TIFFwarningHandlerExt = NULL; | ||||
|  | ||||
| TIFFErrorHandler | ||||
| TIFFSetWarningHandler(TIFFErrorHandler handler) | ||||
| { | ||||
| 	TIFFErrorHandler prev = _TIFFwarningHandler; | ||||
| 	_TIFFwarningHandler = handler; | ||||
| 	return (prev); | ||||
| } | ||||
|  | ||||
| TIFFErrorHandlerExt | ||||
| TIFFSetWarningHandlerExt(TIFFErrorHandlerExt handler) | ||||
| { | ||||
| 	TIFFErrorHandlerExt prev = _TIFFwarningHandlerExt; | ||||
| 	_TIFFwarningHandlerExt = handler; | ||||
| 	return (prev); | ||||
| } | ||||
|  | ||||
| void | ||||
| TIFFWarning(const char* module, const char* fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 	if (_TIFFwarningHandler) { | ||||
| 		va_start(ap, fmt); | ||||
| 		(*_TIFFwarningHandler)(module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| 	if (_TIFFwarningHandlerExt) { | ||||
| 		va_start(ap, fmt); | ||||
| 		(*_TIFFwarningHandlerExt)(0, module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void | ||||
| TIFFWarningExt(thandle_t fd, const char* module, const char* fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 	if (_TIFFwarningHandler) { | ||||
| 		va_start(ap, fmt);	 | ||||
| 		(*_TIFFwarningHandler)(module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| 	if (_TIFFwarningHandlerExt) { | ||||
| 		va_start(ap, fmt); | ||||
| 		(*_TIFFwarningHandlerExt)(fd, module, fmt, ap); | ||||
| 		va_end(ap); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										476
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_win32.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										476
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_win32.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,476 @@ | ||||
| /* $Id: tif_win32.c,v 1.42 2017-01-11 19:02:49 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library Win32-specific Routines.  Adapted from tif_unix.c 4/5/95 by | ||||
|  * Scott Wagner (wagner@itek.com), Itek Graphix, Rochester, NY USA | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|   CreateFileA/CreateFileW return type 'HANDLE'. | ||||
|  | ||||
|   thandle_t is declared like | ||||
|  | ||||
|     DECLARE_HANDLE(thandle_t); | ||||
|  | ||||
|   in tiffio.h. | ||||
|  | ||||
|   Windows (from winnt.h) DECLARE_HANDLE logic looks like | ||||
|  | ||||
|   #ifdef STRICT | ||||
|     typedef void *HANDLE; | ||||
|   #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name | ||||
|   #else | ||||
|     typedef PVOID HANDLE; | ||||
|   #define DECLARE_HANDLE(name) typedef HANDLE name | ||||
|   #endif | ||||
|  | ||||
|   See http://bugzilla.maptools.org/show_bug.cgi?id=1941 for problems in WIN64 | ||||
|   builds resulting from this.  Unfortunately, the proposed patch was lost. | ||||
|  | ||||
| */ | ||||
|    | ||||
| #include "tiffiop.h" | ||||
|  | ||||
| #include <windows.h> | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffReadProc(thandle_t fd, void* buf, tmsize_t size) | ||||
| { | ||||
| 	/* tmsize_t is 64bit on 64bit systems, but the WinAPI ReadFile takes | ||||
| 	 * 32bit sizes, so we loop through the data in suitable 32bit sized | ||||
| 	 * chunks */ | ||||
| 	uint8* ma; | ||||
| 	uint64 mb; | ||||
| 	DWORD n; | ||||
| 	DWORD o; | ||||
| 	tmsize_t p; | ||||
| 	ma=(uint8*)buf; | ||||
| 	mb=size; | ||||
| 	p=0; | ||||
| 	while (mb>0) | ||||
| 	{ | ||||
| 		n=0x80000000UL; | ||||
| 		if ((uint64)n>mb) | ||||
| 			n=(DWORD)mb; | ||||
| 		if (!ReadFile(fd,(LPVOID)ma,n,&o,NULL)) | ||||
| 			return(0); | ||||
| 		ma+=o; | ||||
| 		mb-=o; | ||||
| 		p+=o; | ||||
| 		if (o!=n) | ||||
| 			break; | ||||
| 	} | ||||
| 	return(p); | ||||
| } | ||||
|  | ||||
| static tmsize_t | ||||
| _tiffWriteProc(thandle_t fd, void* buf, tmsize_t size) | ||||
| { | ||||
| 	/* tmsize_t is 64bit on 64bit systems, but the WinAPI WriteFile takes | ||||
| 	 * 32bit sizes, so we loop through the data in suitable 32bit sized | ||||
| 	 * chunks */ | ||||
| 	uint8* ma; | ||||
| 	uint64 mb; | ||||
| 	DWORD n; | ||||
| 	DWORD o; | ||||
| 	tmsize_t p; | ||||
| 	ma=(uint8*)buf; | ||||
| 	mb=size; | ||||
| 	p=0; | ||||
| 	while (mb>0) | ||||
| 	{ | ||||
| 		n=0x80000000UL; | ||||
| 		if ((uint64)n>mb) | ||||
| 			n=(DWORD)mb; | ||||
| 		if (!WriteFile(fd,(LPVOID)ma,n,&o,NULL)) | ||||
| 			return(0); | ||||
| 		ma+=o; | ||||
| 		mb-=o; | ||||
| 		p+=o; | ||||
| 		if (o!=n) | ||||
| 			break; | ||||
| 	} | ||||
| 	return(p); | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffSeekProc(thandle_t fd, uint64 off, int whence) | ||||
| { | ||||
| 	LARGE_INTEGER offli; | ||||
| 	DWORD dwMoveMethod; | ||||
| 	offli.QuadPart = off; | ||||
| 	switch(whence) | ||||
| 	{ | ||||
| 		case SEEK_SET: | ||||
| 			dwMoveMethod = FILE_BEGIN; | ||||
| 			break; | ||||
| 		case SEEK_CUR: | ||||
| 			dwMoveMethod = FILE_CURRENT; | ||||
| 			break; | ||||
| 		case SEEK_END: | ||||
| 			dwMoveMethod = FILE_END; | ||||
| 			break; | ||||
| 		default: | ||||
| 			dwMoveMethod = FILE_BEGIN; | ||||
| 			break; | ||||
| 	} | ||||
| 	offli.LowPart=SetFilePointer(fd,offli.LowPart,&offli.HighPart,dwMoveMethod); | ||||
| 	if ((offli.LowPart==INVALID_SET_FILE_POINTER)&&(GetLastError()!=NO_ERROR)) | ||||
| 		offli.QuadPart=0; | ||||
| 	return(offli.QuadPart); | ||||
| } | ||||
|  | ||||
| static int | ||||
| _tiffCloseProc(thandle_t fd) | ||||
| { | ||||
| 	return (CloseHandle(fd) ? 0 : -1); | ||||
| } | ||||
|  | ||||
| static uint64 | ||||
| _tiffSizeProc(thandle_t fd) | ||||
| { | ||||
| 	ULARGE_INTEGER m; | ||||
| 	m.LowPart=GetFileSize(fd,&m.HighPart); | ||||
| 	return(m.QuadPart); | ||||
| } | ||||
|  | ||||
| static int | ||||
| _tiffDummyMapProc(thandle_t fd, void** pbase, toff_t* psize) | ||||
| { | ||||
| 	(void) fd; | ||||
| 	(void) pbase; | ||||
| 	(void) psize; | ||||
| 	return (0); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * From "Hermann Josef Hill" <lhill@rhein-zeitung.de>: | ||||
|  * | ||||
|  * Windows uses both a handle and a pointer for file mapping, | ||||
|  * but according to the SDK documentation and Richter's book | ||||
|  * "Advanced Windows Programming" it is safe to free the handle | ||||
|  * after obtaining the file mapping pointer | ||||
|  * | ||||
|  * This removes a nasty OS dependency and cures a problem | ||||
|  * with Visual C++ 5.0 | ||||
|  */ | ||||
| static int | ||||
| _tiffMapProc(thandle_t fd, void** pbase, toff_t* psize) | ||||
| { | ||||
| 	uint64 size; | ||||
| 	tmsize_t sizem; | ||||
| 	HANDLE hMapFile; | ||||
|  | ||||
| 	size = _tiffSizeProc(fd); | ||||
| 	sizem = (tmsize_t)size; | ||||
| 	if ((uint64)sizem!=size) | ||||
| 		return (0); | ||||
|  | ||||
| 	/* By passing in 0 for the maximum file size, it specifies that we | ||||
| 	   create a file mapping object for the full file size. */ | ||||
| 	hMapFile = CreateFileMapping(fd, NULL, PAGE_READONLY, 0, 0, NULL); | ||||
| 	if (hMapFile == NULL) | ||||
| 		return (0); | ||||
| 	*pbase = MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); | ||||
| 	CloseHandle(hMapFile); | ||||
| 	if (*pbase == NULL) | ||||
| 		return (0); | ||||
| 	*psize = size; | ||||
| 	return(1); | ||||
| } | ||||
|  | ||||
| static void | ||||
| _tiffDummyUnmapProc(thandle_t fd, void* base, toff_t size) | ||||
| { | ||||
| 	(void) fd; | ||||
| 	(void) base; | ||||
| 	(void) size; | ||||
| } | ||||
|  | ||||
| static void | ||||
| _tiffUnmapProc(thandle_t fd, void* base, toff_t size) | ||||
| { | ||||
| 	(void) fd; | ||||
| 	(void) size; | ||||
| 	UnmapViewOfFile(base); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Open a TIFF file descriptor for read/writing. | ||||
|  * Note that TIFFFdOpen and TIFFOpen recognise the character 'u' in the mode | ||||
|  * string, which forces the file to be opened unmapped. | ||||
|  */ | ||||
| TIFF* | ||||
| TIFFFdOpen(int ifd, const char* name, const char* mode) | ||||
| { | ||||
| 	TIFF* tif; | ||||
| 	int fSuppressMap; | ||||
| 	int m; | ||||
| 	fSuppressMap=0; | ||||
| 	for (m=0; mode[m]!=0; m++) | ||||
| 	{ | ||||
| 		if (mode[m]=='u') | ||||
| 		{ | ||||
| 			fSuppressMap=1; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	tif = TIFFClientOpen(name, mode, (thandle_t)ifd, /* FIXME: WIN64 cast to pointer warning */ | ||||
| 			_tiffReadProc, _tiffWriteProc, | ||||
| 			_tiffSeekProc, _tiffCloseProc, _tiffSizeProc, | ||||
| 			fSuppressMap ? _tiffDummyMapProc : _tiffMapProc, | ||||
| 			fSuppressMap ? _tiffDummyUnmapProc : _tiffUnmapProc); | ||||
| 	if (tif) | ||||
| 		tif->tif_fd = ifd; | ||||
| 	return (tif); | ||||
| } | ||||
|  | ||||
| #ifndef _WIN32_WCE | ||||
|  | ||||
| /* | ||||
|  * Open a TIFF file for read/writing. | ||||
|  */ | ||||
| TIFF* | ||||
| TIFFOpen(const char* name, const char* mode) | ||||
| { | ||||
| 	static const char module[] = "TIFFOpen"; | ||||
| 	thandle_t fd; | ||||
| 	int m; | ||||
| 	DWORD dwMode; | ||||
| 	TIFF* tif; | ||||
|  | ||||
| 	m = _TIFFgetMode(mode, module); | ||||
|  | ||||
| 	switch(m) { | ||||
| 		case O_RDONLY:			dwMode = OPEN_EXISTING; break; | ||||
| 		case O_RDWR:			dwMode = OPEN_ALWAYS;   break; | ||||
| 		case O_RDWR|O_CREAT:		dwMode = OPEN_ALWAYS;   break; | ||||
| 		case O_RDWR|O_TRUNC:		dwMode = CREATE_ALWAYS; break; | ||||
| 		case O_RDWR|O_CREAT|O_TRUNC:	dwMode = CREATE_ALWAYS; break; | ||||
| 		default:			return ((TIFF*)0); | ||||
| 	} | ||||
|          | ||||
| 	fd = (thandle_t)CreateFileA(name, | ||||
| 		(m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE), | ||||
| 		FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode, | ||||
| 		(m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL, | ||||
| 		NULL); | ||||
| 	if (fd == INVALID_HANDLE_VALUE) { | ||||
| 		TIFFErrorExt(0, module, "%s: Cannot open", name); | ||||
| 		return ((TIFF *)0); | ||||
| 	} | ||||
|  | ||||
| 	tif = TIFFFdOpen((int)fd, name, mode);   /* FIXME: WIN64 cast from pointer to int warning */ | ||||
| 	if(!tif) | ||||
| 		CloseHandle(fd); | ||||
| 	return tif; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Open a TIFF file with a Unicode filename, for read/writing. | ||||
|  */ | ||||
| TIFF* | ||||
| TIFFOpenW(const wchar_t* name, const char* mode) | ||||
| { | ||||
| 	static const char module[] = "TIFFOpenW"; | ||||
| 	thandle_t fd; | ||||
| 	int m; | ||||
| 	DWORD dwMode; | ||||
| 	int mbsize; | ||||
| 	char *mbname; | ||||
| 	TIFF *tif; | ||||
|  | ||||
| 	m = _TIFFgetMode(mode, module); | ||||
|  | ||||
| 	switch(m) { | ||||
| 		case O_RDONLY:			dwMode = OPEN_EXISTING; break; | ||||
| 		case O_RDWR:			dwMode = OPEN_ALWAYS;   break; | ||||
| 		case O_RDWR|O_CREAT:		dwMode = OPEN_ALWAYS;   break; | ||||
| 		case O_RDWR|O_TRUNC:		dwMode = CREATE_ALWAYS; break; | ||||
| 		case O_RDWR|O_CREAT|O_TRUNC:	dwMode = CREATE_ALWAYS; break; | ||||
| 		default:			return ((TIFF*)0); | ||||
| 	} | ||||
|  | ||||
| 	fd = (thandle_t)CreateFileW(name, | ||||
| 		(m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE), | ||||
| 		FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode, | ||||
| 		(m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL, | ||||
| 		NULL); | ||||
| 	if (fd == INVALID_HANDLE_VALUE) { | ||||
| 		TIFFErrorExt(0, module, "%S: Cannot open", name); | ||||
| 		return ((TIFF *)0); | ||||
| 	} | ||||
|  | ||||
| 	mbname = NULL; | ||||
| 	mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL); | ||||
| 	if (mbsize > 0) { | ||||
| 		mbname = (char *)_TIFFmalloc(mbsize); | ||||
| 		if (!mbname) { | ||||
| 			TIFFErrorExt(0, module, | ||||
| 			"Can't allocate space for filename conversion buffer"); | ||||
| 			return ((TIFF*)0); | ||||
| 		} | ||||
|  | ||||
| 		WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize, | ||||
| 				    NULL, NULL); | ||||
| 	} | ||||
|  | ||||
| 	tif = TIFFFdOpen((int)fd,    /* FIXME: WIN64 cast from pointer to int warning */ | ||||
| 			 (mbname != NULL) ? mbname : "<unknown>", mode); | ||||
| 	if(!tif) | ||||
| 		CloseHandle(fd); | ||||
|  | ||||
| 	_TIFFfree(mbname); | ||||
|  | ||||
| 	return tif; | ||||
| } | ||||
|  | ||||
| #endif /* ndef _WIN32_WCE */ | ||||
|  | ||||
| void* | ||||
| _TIFFmalloc(tmsize_t s) | ||||
| { | ||||
|         if (s == 0) | ||||
|                 return ((void *) NULL); | ||||
|  | ||||
| 	return (malloc((size_t) s)); | ||||
| } | ||||
|  | ||||
| void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz) | ||||
| { | ||||
|     if( nmemb == 0 || siz == 0 ) | ||||
|         return ((void *) NULL); | ||||
|  | ||||
|     return calloc((size_t) nmemb, (size_t)siz); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFfree(void* p) | ||||
| { | ||||
| 	free(p); | ||||
| } | ||||
|  | ||||
| void* | ||||
| _TIFFrealloc(void* p, tmsize_t s) | ||||
| { | ||||
| 	return (realloc(p, (size_t) s)); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFmemset(void* p, int v, tmsize_t c) | ||||
| { | ||||
| 	memset(p, v, (size_t) c); | ||||
| } | ||||
|  | ||||
| void | ||||
| _TIFFmemcpy(void* d, const void* s, tmsize_t c) | ||||
| { | ||||
| 	memcpy(d, s, (size_t) c); | ||||
| } | ||||
|  | ||||
| int | ||||
| _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c) | ||||
| { | ||||
| 	return (memcmp(p1, p2, (size_t) c)); | ||||
| } | ||||
|  | ||||
| #ifndef _WIN32_WCE | ||||
|  | ||||
| #if (_MSC_VER < 1500) | ||||
| #  define vsnprintf _vsnprintf | ||||
| #endif | ||||
|  | ||||
| static void | ||||
| Win32WarningHandler(const char* module, const char* fmt, va_list ap) | ||||
| { | ||||
| #ifndef TIF_PLATFORM_CONSOLE | ||||
| 	LPTSTR szTitle; | ||||
| 	LPTSTR szTmp; | ||||
| 	LPCTSTR szTitleText = "%s Warning"; | ||||
| 	LPCTSTR szDefaultModule = "LIBTIFF"; | ||||
| 	LPCTSTR szTmpModule = (module == NULL) ? szDefaultModule : module; | ||||
|         SIZE_T nBufSize = (strlen(szTmpModule) + | ||||
|                         strlen(szTitleText) + strlen(fmt) + 256)*sizeof(char); | ||||
|  | ||||
| 	if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, nBufSize)) == NULL) | ||||
| 		return; | ||||
| 	sprintf(szTitle, szTitleText, szTmpModule); | ||||
| 	szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char); | ||||
| 	vsnprintf(szTmp, nBufSize-(strlen(szTitle)+2)*sizeof(char), fmt, ap); | ||||
| 	MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONINFORMATION); | ||||
| 	LocalFree(szTitle); | ||||
|  | ||||
| 	return; | ||||
| #else | ||||
| 	if (module != NULL) | ||||
| 		fprintf(stderr, "%s: ", module); | ||||
| 	fprintf(stderr, "Warning, "); | ||||
| 	vfprintf(stderr, fmt, ap); | ||||
| 	fprintf(stderr, ".\n"); | ||||
| #endif         | ||||
| } | ||||
| TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler; | ||||
|  | ||||
| static void | ||||
| Win32ErrorHandler(const char* module, const char* fmt, va_list ap) | ||||
| { | ||||
| #ifndef TIF_PLATFORM_CONSOLE | ||||
| 	LPTSTR szTitle; | ||||
| 	LPTSTR szTmp; | ||||
| 	LPCTSTR szTitleText = "%s Error"; | ||||
| 	LPCTSTR szDefaultModule = "LIBTIFF"; | ||||
| 	LPCTSTR szTmpModule = (module == NULL) ? szDefaultModule : module; | ||||
|         SIZE_T nBufSize = (strlen(szTmpModule) + | ||||
|                         strlen(szTitleText) + strlen(fmt) + 256)*sizeof(char); | ||||
|  | ||||
| 	if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, nBufSize)) == NULL) | ||||
| 		return; | ||||
| 	sprintf(szTitle, szTitleText, szTmpModule); | ||||
| 	szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char); | ||||
| 	vsnprintf(szTmp, nBufSize-(strlen(szTitle)+2)*sizeof(char), fmt, ap); | ||||
| 	MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONEXCLAMATION); | ||||
| 	LocalFree(szTitle); | ||||
| 	return; | ||||
| #else | ||||
| 	if (module != NULL) | ||||
| 		fprintf(stderr, "%s: ", module); | ||||
| 	vfprintf(stderr, fmt, ap); | ||||
| 	fprintf(stderr, ".\n"); | ||||
| #endif         | ||||
| } | ||||
| TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler; | ||||
|  | ||||
| #endif /* ndef _WIN32_WCE */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										836
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_write.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										836
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_write.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,836 @@ | ||||
| /* $Id: tif_write.c,v 1.46 2016-12-03 21:57:44 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * Scanline-oriented Write Support | ||||
|  */ | ||||
| #include "tiffiop.h" | ||||
| #include <stdio.h> | ||||
|  | ||||
| #define STRIPINCR	20		/* expansion factor on strip array */ | ||||
|  | ||||
| #define WRITECHECKSTRIPS(tif, module)				\ | ||||
| 	(((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),0,module)) | ||||
| #define WRITECHECKTILES(tif, module)				\ | ||||
| 	(((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),1,module)) | ||||
| #define BUFFERCHECK(tif)					\ | ||||
| 	((((tif)->tif_flags & TIFF_BUFFERSETUP) && tif->tif_rawdata) ||	\ | ||||
| 	    TIFFWriteBufferSetup((tif), NULL, (tmsize_t) -1)) | ||||
|  | ||||
| static int TIFFGrowStrips(TIFF* tif, uint32 delta, const char* module); | ||||
| static int TIFFAppendToStrip(TIFF* tif, uint32 strip, uint8* data, tmsize_t cc); | ||||
|  | ||||
| int | ||||
| TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample) | ||||
| { | ||||
| 	static const char module[] = "TIFFWriteScanline"; | ||||
| 	register TIFFDirectory *td; | ||||
| 	int status, imagegrew = 0; | ||||
| 	uint32 strip; | ||||
|  | ||||
| 	if (!WRITECHECKSTRIPS(tif, module)) | ||||
| 		return (-1); | ||||
| 	/* | ||||
| 	 * Handle delayed allocation of data buffer.  This | ||||
| 	 * permits it to be sized more intelligently (using | ||||
| 	 * directory information). | ||||
| 	 */ | ||||
| 	if (!BUFFERCHECK(tif)) | ||||
| 		return (-1); | ||||
|         tif->tif_flags |= TIFF_BUF4WRITE; /* not strictly sure this is right*/ | ||||
|  | ||||
| 	td = &tif->tif_dir; | ||||
| 	/* | ||||
| 	 * Extend image length if needed | ||||
| 	 * (but only for PlanarConfig=1). | ||||
| 	 */ | ||||
| 	if (row >= td->td_imagelength) {	/* extend image */ | ||||
| 		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "Can not change \"ImageLength\" when using separate planes"); | ||||
| 			return (-1); | ||||
| 		} | ||||
| 		td->td_imagelength = row+1; | ||||
| 		imagegrew = 1; | ||||
| 	} | ||||
| 	/* | ||||
| 	 * Calculate strip and check for crossings. | ||||
| 	 */ | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { | ||||
| 		if (sample >= td->td_samplesperpixel) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "%lu: Sample out of range, max %lu", | ||||
| 			    (unsigned long) sample, (unsigned long) td->td_samplesperpixel); | ||||
| 			return (-1); | ||||
| 		} | ||||
| 		strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip; | ||||
| 	} else | ||||
| 		strip = row / td->td_rowsperstrip; | ||||
| 	/* | ||||
| 	 * Check strip array to make sure there's space. We don't support | ||||
| 	 * dynamically growing files that have data organized in separate | ||||
| 	 * bitplanes because it's too painful.  In that case we require that | ||||
| 	 * the imagelength be set properly before the first write (so that the | ||||
| 	 * strips array will be fully allocated above). | ||||
| 	 */ | ||||
| 	if (strip >= td->td_nstrips && !TIFFGrowStrips(tif, 1, module)) | ||||
| 		return (-1); | ||||
| 	if (strip != tif->tif_curstrip) { | ||||
| 		/* | ||||
| 		 * Changing strips -- flush any data present. | ||||
| 		 */ | ||||
| 		if (!TIFFFlushData(tif)) | ||||
| 			return (-1); | ||||
| 		tif->tif_curstrip = strip; | ||||
| 		/* | ||||
| 		 * Watch out for a growing image.  The value of strips/image | ||||
| 		 * will initially be 1 (since it can't be deduced until the | ||||
| 		 * imagelength is known). | ||||
| 		 */ | ||||
| 		if (strip >= td->td_stripsperimage && imagegrew) | ||||
| 			td->td_stripsperimage = | ||||
| 			    TIFFhowmany_32(td->td_imagelength,td->td_rowsperstrip); | ||||
|                 if (td->td_stripsperimage == 0) { | ||||
|                         TIFFErrorExt(tif->tif_clientdata, module, "Zero strips per image"); | ||||
|                         return (-1); | ||||
|                 } | ||||
| 		tif->tif_row = | ||||
| 		    (strip % td->td_stripsperimage) * td->td_rowsperstrip; | ||||
| 		if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { | ||||
| 			if (!(*tif->tif_setupencode)(tif)) | ||||
| 				return (-1); | ||||
| 			tif->tif_flags |= TIFF_CODERSETUP; | ||||
| 		} | ||||
|          | ||||
| 		tif->tif_rawcc = 0; | ||||
| 		tif->tif_rawcp = tif->tif_rawdata; | ||||
|  | ||||
| 		if( td->td_stripbytecount[strip] > 0 ) | ||||
| 		{ | ||||
| 			/* if we are writing over existing tiles, zero length */ | ||||
| 			td->td_stripbytecount[strip] = 0; | ||||
|  | ||||
| 			/* this forces TIFFAppendToStrip() to do a seek */ | ||||
| 			tif->tif_curoff = 0; | ||||
| 		} | ||||
|  | ||||
| 		if (!(*tif->tif_preencode)(tif, sample)) | ||||
| 			return (-1); | ||||
| 		tif->tif_flags |= TIFF_POSTENCODE; | ||||
| 	} | ||||
| 	/* | ||||
| 	 * Ensure the write is either sequential or at the | ||||
| 	 * beginning of a strip (or that we can randomly | ||||
| 	 * access the data -- i.e. no encoding). | ||||
| 	 */ | ||||
| 	if (row != tif->tif_row) { | ||||
| 		if (row < tif->tif_row) { | ||||
| 			/* | ||||
| 			 * Moving backwards within the same strip: | ||||
| 			 * backup to the start and then decode | ||||
| 			 * forward (below). | ||||
| 			 */ | ||||
| 			tif->tif_row = (strip % td->td_stripsperimage) * | ||||
| 			    td->td_rowsperstrip; | ||||
| 			tif->tif_rawcp = tif->tif_rawdata; | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Seek forward to the desired row. | ||||
| 		 */ | ||||
| 		if (!(*tif->tif_seek)(tif, row - tif->tif_row)) | ||||
| 			return (-1); | ||||
| 		tif->tif_row = row; | ||||
| 	} | ||||
|  | ||||
| 	/* swab if needed - note that source buffer will be altered */ | ||||
| 	tif->tif_postdecode( tif, (uint8*) buf, tif->tif_scanlinesize ); | ||||
|  | ||||
| 	status = (*tif->tif_encoderow)(tif, (uint8*) buf, | ||||
| 	    tif->tif_scanlinesize, sample); | ||||
|  | ||||
|         /* we are now poised at the beginning of the next row */ | ||||
| 	tif->tif_row = row + 1; | ||||
| 	return (status); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode the supplied data and write it to the | ||||
|  * specified strip. | ||||
|  * | ||||
|  * NB: Image length must be setup before writing. | ||||
|  */ | ||||
| tmsize_t | ||||
| TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc) | ||||
| { | ||||
| 	static const char module[] = "TIFFWriteEncodedStrip"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint16 sample; | ||||
|  | ||||
| 	if (!WRITECHECKSTRIPS(tif, module)) | ||||
| 		return ((tmsize_t) -1); | ||||
| 	/* | ||||
| 	 * Check strip array to make sure there's space. | ||||
| 	 * We don't support dynamically growing files that | ||||
| 	 * have data organized in separate bitplanes because | ||||
| 	 * it's too painful.  In that case we require that | ||||
| 	 * the imagelength be set properly before the first | ||||
| 	 * write (so that the strips array will be fully | ||||
| 	 * allocated above). | ||||
| 	 */ | ||||
| 	if (strip >= td->td_nstrips) { | ||||
| 		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "Can not grow image by strips when using separate planes"); | ||||
| 			return ((tmsize_t) -1); | ||||
| 		} | ||||
| 		if (!TIFFGrowStrips(tif, 1, module)) | ||||
| 			return ((tmsize_t) -1); | ||||
| 		td->td_stripsperimage = | ||||
| 		    TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip);   | ||||
| 	} | ||||
| 	/* | ||||
| 	 * Handle delayed allocation of data buffer.  This | ||||
| 	 * permits it to be sized according to the directory | ||||
| 	 * info. | ||||
| 	 */ | ||||
| 	if (!BUFFERCHECK(tif)) | ||||
| 		return ((tmsize_t) -1); | ||||
|  | ||||
|         tif->tif_flags |= TIFF_BUF4WRITE; | ||||
| 	tif->tif_curstrip = strip; | ||||
|  | ||||
|         if (td->td_stripsperimage == 0) { | ||||
|                 TIFFErrorExt(tif->tif_clientdata, module, "Zero strips per image"); | ||||
|                 return ((tmsize_t) -1); | ||||
|         } | ||||
|  | ||||
| 	tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip; | ||||
| 	if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { | ||||
| 		if (!(*tif->tif_setupencode)(tif)) | ||||
| 			return ((tmsize_t) -1); | ||||
| 		tif->tif_flags |= TIFF_CODERSETUP; | ||||
| 	} | ||||
|  | ||||
| 	if( td->td_stripbytecount[strip] > 0 ) | ||||
|         { | ||||
|             /* Make sure that at the first attempt of rewriting the tile, we will have */ | ||||
|             /* more bytes available in the output buffer than the previous byte count, */ | ||||
|             /* so that TIFFAppendToStrip() will detect the overflow when it is called the first */ | ||||
|             /* time if the new compressed tile is bigger than the older one. (GDAL #4771) */ | ||||
|             if( tif->tif_rawdatasize <= (tmsize_t)td->td_stripbytecount[strip] ) | ||||
|             { | ||||
|                 if( !(TIFFWriteBufferSetup(tif, NULL, | ||||
|                     (tmsize_t)TIFFroundup_64((uint64)(td->td_stripbytecount[strip] + 1), 1024))) ) | ||||
|                     return ((tmsize_t)(-1)); | ||||
|             } | ||||
|  | ||||
| 	    /* Force TIFFAppendToStrip() to consider placing data at end | ||||
|                of file. */ | ||||
|             tif->tif_curoff = 0; | ||||
|         } | ||||
|  | ||||
|     tif->tif_rawcc = 0; | ||||
|     tif->tif_rawcp = tif->tif_rawdata; | ||||
|  | ||||
| 	tif->tif_flags &= ~TIFF_POSTENCODE; | ||||
|  | ||||
|     /* shortcut to avoid an extra memcpy() */ | ||||
|     if( td->td_compression == COMPRESSION_NONE ) | ||||
|     { | ||||
|         /* swab if needed - note that source buffer will be altered */ | ||||
|         tif->tif_postdecode( tif, (uint8*) data, cc ); | ||||
|  | ||||
|         if (!isFillOrder(tif, td->td_fillorder) && | ||||
|             (tif->tif_flags & TIFF_NOBITREV) == 0) | ||||
|             TIFFReverseBits((uint8*) data, cc); | ||||
|  | ||||
|         if (cc > 0 && | ||||
|             !TIFFAppendToStrip(tif, strip, (uint8*) data, cc)) | ||||
|             return ((tmsize_t) -1); | ||||
|         return (cc); | ||||
|     } | ||||
|  | ||||
| 	sample = (uint16)(strip / td->td_stripsperimage); | ||||
| 	if (!(*tif->tif_preencode)(tif, sample)) | ||||
| 		return ((tmsize_t) -1); | ||||
|  | ||||
|         /* swab if needed - note that source buffer will be altered */ | ||||
| 	tif->tif_postdecode( tif, (uint8*) data, cc ); | ||||
|  | ||||
| 	if (!(*tif->tif_encodestrip)(tif, (uint8*) data, cc, sample)) | ||||
| 		return ((tmsize_t) -1); | ||||
| 	if (!(*tif->tif_postencode)(tif)) | ||||
| 		return ((tmsize_t) -1); | ||||
| 	if (!isFillOrder(tif, td->td_fillorder) && | ||||
| 	    (tif->tif_flags & TIFF_NOBITREV) == 0) | ||||
| 		TIFFReverseBits(tif->tif_rawdata, tif->tif_rawcc); | ||||
| 	if (tif->tif_rawcc > 0 && | ||||
| 	    !TIFFAppendToStrip(tif, strip, tif->tif_rawdata, tif->tif_rawcc)) | ||||
| 		return ((tmsize_t) -1); | ||||
| 	tif->tif_rawcc = 0; | ||||
| 	tif->tif_rawcp = tif->tif_rawdata; | ||||
| 	return (cc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Write the supplied data to the specified strip. | ||||
|  * | ||||
|  * NB: Image length must be setup before writing. | ||||
|  */ | ||||
| tmsize_t | ||||
| TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc) | ||||
| { | ||||
| 	static const char module[] = "TIFFWriteRawStrip"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
|  | ||||
| 	if (!WRITECHECKSTRIPS(tif, module)) | ||||
| 		return ((tmsize_t) -1); | ||||
| 	/* | ||||
| 	 * Check strip array to make sure there's space. | ||||
| 	 * We don't support dynamically growing files that | ||||
| 	 * have data organized in separate bitplanes because | ||||
| 	 * it's too painful.  In that case we require that | ||||
| 	 * the imagelength be set properly before the first | ||||
| 	 * write (so that the strips array will be fully | ||||
| 	 * allocated above). | ||||
| 	 */ | ||||
| 	if (strip >= td->td_nstrips) { | ||||
| 		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "Can not grow image by strips when using separate planes"); | ||||
| 			return ((tmsize_t) -1); | ||||
| 		} | ||||
| 		/* | ||||
| 		 * Watch out for a growing image.  The value of | ||||
| 		 * strips/image will initially be 1 (since it | ||||
| 		 * can't be deduced until the imagelength is known). | ||||
| 		 */ | ||||
| 		if (strip >= td->td_stripsperimage) | ||||
| 			td->td_stripsperimage = | ||||
| 			    TIFFhowmany_32(td->td_imagelength,td->td_rowsperstrip); | ||||
| 		if (!TIFFGrowStrips(tif, 1, module)) | ||||
| 			return ((tmsize_t) -1); | ||||
| 	} | ||||
| 	tif->tif_curstrip = strip; | ||||
|         if (td->td_stripsperimage == 0) { | ||||
|                 TIFFErrorExt(tif->tif_clientdata, module,"Zero strips per image"); | ||||
|                 return ((tmsize_t) -1); | ||||
|         } | ||||
| 	tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip; | ||||
| 	return (TIFFAppendToStrip(tif, strip, (uint8*) data, cc) ? | ||||
| 	    cc : (tmsize_t) -1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Write and compress a tile of data.  The | ||||
|  * tile is selected by the (x,y,z,s) coordinates. | ||||
|  */ | ||||
| tmsize_t | ||||
| TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s) | ||||
| { | ||||
| 	if (!TIFFCheckTile(tif, x, y, z, s)) | ||||
| 		return ((tmsize_t)(-1)); | ||||
| 	/* | ||||
| 	 * NB: A tile size of -1 is used instead of tif_tilesize knowing | ||||
| 	 *     that TIFFWriteEncodedTile will clamp this to the tile size. | ||||
| 	 *     This is done because the tile size may not be defined until | ||||
| 	 *     after the output buffer is setup in TIFFWriteBufferSetup. | ||||
| 	 */ | ||||
| 	return (TIFFWriteEncodedTile(tif, | ||||
| 	    TIFFComputeTile(tif, x, y, z, s), buf, (tmsize_t)(-1))); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode the supplied data and write it to the | ||||
|  * specified tile.  There must be space for the | ||||
|  * data.  The function clamps individual writes | ||||
|  * to a tile to the tile size, but does not (and | ||||
|  * can not) check that multiple writes to the same | ||||
|  * tile do not write more than tile size data. | ||||
|  * | ||||
|  * NB: Image length must be setup before writing; this | ||||
|  *     interface does not support automatically growing | ||||
|  *     the image on each write (as TIFFWriteScanline does). | ||||
|  */ | ||||
| tmsize_t | ||||
| TIFFWriteEncodedTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc) | ||||
| { | ||||
| 	static const char module[] = "TIFFWriteEncodedTile"; | ||||
| 	TIFFDirectory *td; | ||||
| 	uint16 sample; | ||||
|         uint32 howmany32; | ||||
|  | ||||
| 	if (!WRITECHECKTILES(tif, module)) | ||||
| 		return ((tmsize_t)(-1)); | ||||
| 	td = &tif->tif_dir; | ||||
| 	if (tile >= td->td_nstrips) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Tile %lu out of range, max %lu", | ||||
| 		    (unsigned long) tile, (unsigned long) td->td_nstrips); | ||||
| 		return ((tmsize_t)(-1)); | ||||
| 	} | ||||
| 	/* | ||||
| 	 * Handle delayed allocation of data buffer.  This | ||||
| 	 * permits it to be sized more intelligently (using | ||||
| 	 * directory information). | ||||
| 	 */ | ||||
| 	if (!BUFFERCHECK(tif)) | ||||
| 		return ((tmsize_t)(-1)); | ||||
|  | ||||
|         tif->tif_flags |= TIFF_BUF4WRITE; | ||||
| 	tif->tif_curtile = tile; | ||||
|  | ||||
| 	if( td->td_stripbytecount[tile] > 0 ) | ||||
|         { | ||||
|             /* Make sure that at the first attempt of rewriting the tile, we will have */ | ||||
|             /* more bytes available in the output buffer than the previous byte count, */ | ||||
|             /* so that TIFFAppendToStrip() will detect the overflow when it is called the first */ | ||||
|             /* time if the new compressed tile is bigger than the older one. (GDAL #4771) */ | ||||
|             if( tif->tif_rawdatasize <= (tmsize_t) td->td_stripbytecount[tile] ) | ||||
|             { | ||||
|                 if( !(TIFFWriteBufferSetup(tif, NULL, | ||||
|                     (tmsize_t)TIFFroundup_64((uint64)(td->td_stripbytecount[tile] + 1), 1024))) ) | ||||
|                     return ((tmsize_t)(-1)); | ||||
|             } | ||||
|  | ||||
| 	    /* Force TIFFAppendToStrip() to consider placing data at end | ||||
|                of file. */ | ||||
|             tif->tif_curoff = 0; | ||||
|         } | ||||
|  | ||||
| 	tif->tif_rawcc = 0; | ||||
| 	tif->tif_rawcp = tif->tif_rawdata; | ||||
|  | ||||
| 	/*  | ||||
| 	 * Compute tiles per row & per column to compute | ||||
| 	 * current row and column | ||||
| 	 */ | ||||
|         howmany32=TIFFhowmany_32(td->td_imagelength, td->td_tilelength); | ||||
|         if (howmany32 == 0) { | ||||
|                  TIFFErrorExt(tif->tif_clientdata,module,"Zero tiles"); | ||||
|                 return ((tmsize_t)(-1)); | ||||
|         } | ||||
| 	tif->tif_row = (tile % howmany32) * td->td_tilelength; | ||||
|         howmany32=TIFFhowmany_32(td->td_imagewidth, td->td_tilewidth); | ||||
|         if (howmany32 == 0) { | ||||
|                  TIFFErrorExt(tif->tif_clientdata,module,"Zero tiles"); | ||||
|                 return ((tmsize_t)(-1)); | ||||
|         } | ||||
| 	tif->tif_col = (tile % howmany32) * td->td_tilewidth; | ||||
|  | ||||
| 	if ((tif->tif_flags & TIFF_CODERSETUP) == 0) { | ||||
| 		if (!(*tif->tif_setupencode)(tif)) | ||||
| 			return ((tmsize_t)(-1)); | ||||
| 		tif->tif_flags |= TIFF_CODERSETUP; | ||||
| 	} | ||||
| 	tif->tif_flags &= ~TIFF_POSTENCODE; | ||||
|  | ||||
| 	/* | ||||
| 	 * Clamp write amount to the tile size.  This is mostly | ||||
| 	 * done so that callers can pass in some large number | ||||
| 	 * (e.g. -1) and have the tile size used instead. | ||||
| 	 */ | ||||
| 	if ( cc < 1 || cc > tif->tif_tilesize) | ||||
| 		cc = tif->tif_tilesize; | ||||
|  | ||||
|     /* shortcut to avoid an extra memcpy() */ | ||||
|     if( td->td_compression == COMPRESSION_NONE ) | ||||
|     { | ||||
|         /* swab if needed - note that source buffer will be altered */ | ||||
|         tif->tif_postdecode( tif, (uint8*) data, cc ); | ||||
|  | ||||
|         if (!isFillOrder(tif, td->td_fillorder) && | ||||
|             (tif->tif_flags & TIFF_NOBITREV) == 0) | ||||
|             TIFFReverseBits((uint8*) data, cc); | ||||
|  | ||||
|         if (cc > 0 && | ||||
|             !TIFFAppendToStrip(tif, tile, (uint8*) data, cc)) | ||||
|             return ((tmsize_t) -1); | ||||
|         return (cc); | ||||
|     } | ||||
|  | ||||
|     sample = (uint16)(tile/td->td_stripsperimage); | ||||
|     if (!(*tif->tif_preencode)(tif, sample)) | ||||
|         return ((tmsize_t)(-1)); | ||||
|     /* swab if needed - note that source buffer will be altered */ | ||||
|     tif->tif_postdecode( tif, (uint8*) data, cc ); | ||||
|  | ||||
|     if (!(*tif->tif_encodetile)(tif, (uint8*) data, cc, sample)) | ||||
|             return ((tmsize_t) -1); | ||||
|     if (!(*tif->tif_postencode)(tif)) | ||||
|             return ((tmsize_t)(-1)); | ||||
|     if (!isFillOrder(tif, td->td_fillorder) && | ||||
|         (tif->tif_flags & TIFF_NOBITREV) == 0) | ||||
|             TIFFReverseBits((uint8*)tif->tif_rawdata, tif->tif_rawcc); | ||||
|     if (tif->tif_rawcc > 0 && !TIFFAppendToStrip(tif, tile, | ||||
|         tif->tif_rawdata, tif->tif_rawcc)) | ||||
|             return ((tmsize_t)(-1)); | ||||
|     tif->tif_rawcc = 0; | ||||
|     tif->tif_rawcp = tif->tif_rawdata; | ||||
|     return (cc); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Write the supplied data to the specified strip. | ||||
|  * There must be space for the data; we don't check | ||||
|  * if strips overlap! | ||||
|  * | ||||
|  * NB: Image length must be setup before writing; this | ||||
|  *     interface does not support automatically growing | ||||
|  *     the image on each write (as TIFFWriteScanline does). | ||||
|  */ | ||||
| tmsize_t | ||||
| TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc) | ||||
| { | ||||
| 	static const char module[] = "TIFFWriteRawTile"; | ||||
|  | ||||
| 	if (!WRITECHECKTILES(tif, module)) | ||||
| 		return ((tmsize_t)(-1)); | ||||
| 	if (tile >= tif->tif_dir.td_nstrips) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Tile %lu out of range, max %lu", | ||||
| 		    (unsigned long) tile, | ||||
| 		    (unsigned long) tif->tif_dir.td_nstrips); | ||||
| 		return ((tmsize_t)(-1)); | ||||
| 	} | ||||
| 	return (TIFFAppendToStrip(tif, tile, (uint8*) data, cc) ? | ||||
| 	    cc : (tmsize_t)(-1)); | ||||
| } | ||||
|  | ||||
| #define	isUnspecified(tif, f) \ | ||||
|     (TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0) | ||||
|  | ||||
| int | ||||
| TIFFSetupStrips(TIFF* tif) | ||||
| { | ||||
| 	TIFFDirectory* td = &tif->tif_dir; | ||||
|  | ||||
| 	if (isTiled(tif)) | ||||
| 		td->td_stripsperimage = | ||||
| 		    isUnspecified(tif, FIELD_TILEDIMENSIONS) ? | ||||
| 			td->td_samplesperpixel : TIFFNumberOfTiles(tif); | ||||
| 	else | ||||
| 		td->td_stripsperimage = | ||||
| 		    isUnspecified(tif, FIELD_ROWSPERSTRIP) ? | ||||
| 			td->td_samplesperpixel : TIFFNumberOfStrips(tif); | ||||
| 	td->td_nstrips = td->td_stripsperimage; | ||||
| 	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) | ||||
| 		td->td_stripsperimage /= td->td_samplesperpixel; | ||||
| 	td->td_stripoffset = (uint64 *) | ||||
|             _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64), | ||||
|                              "for \"StripOffsets\" array"); | ||||
| 	td->td_stripbytecount = (uint64 *) | ||||
|             _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64), | ||||
|                              "for \"StripByteCounts\" array"); | ||||
| 	if (td->td_stripoffset == NULL || td->td_stripbytecount == NULL) | ||||
| 		return (0); | ||||
| 	/* | ||||
| 	 * Place data at the end-of-file | ||||
| 	 * (by setting offsets to zero). | ||||
| 	 */ | ||||
| 	_TIFFmemset(td->td_stripoffset, 0, td->td_nstrips*sizeof (uint64)); | ||||
| 	_TIFFmemset(td->td_stripbytecount, 0, td->td_nstrips*sizeof (uint64)); | ||||
| 	TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS); | ||||
| 	TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS); | ||||
| 	return (1); | ||||
| } | ||||
| #undef isUnspecified | ||||
|  | ||||
| /* | ||||
|  * Verify file is writable and that the directory | ||||
|  * information is setup properly.  In doing the latter | ||||
|  * we also "freeze" the state of the directory so | ||||
|  * that important information is not changed. | ||||
|  */ | ||||
| int | ||||
| TIFFWriteCheck(TIFF* tif, int tiles, const char* module) | ||||
| { | ||||
| 	if (tif->tif_mode == O_RDONLY) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "File not open for writing"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (tiles ^ isTiled(tif)) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, tiles ? | ||||
| 		    "Can not write tiles to a stripped image" : | ||||
| 		    "Can not write scanlines to a tiled image"); | ||||
| 		return (0); | ||||
| 	} | ||||
|  | ||||
|         _TIFFFillStriles( tif ); | ||||
|          | ||||
| 	/* | ||||
| 	 * On the first write verify all the required information | ||||
| 	 * has been setup and initialize any data structures that | ||||
| 	 * had to wait until directory information was set. | ||||
| 	 * Note that a lot of our work is assumed to remain valid | ||||
| 	 * because we disallow any of the important parameters | ||||
| 	 * from changing after we start writing (i.e. once | ||||
| 	 * TIFF_BEENWRITING is set, TIFFSetField will only allow | ||||
| 	 * the image's length to be changed). | ||||
| 	 */ | ||||
| 	if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 		    "Must set \"ImageWidth\" before writing data"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (tif->tif_dir.td_samplesperpixel == 1) { | ||||
| 		/*  | ||||
| 		 * Planarconfiguration is irrelevant in case of single band | ||||
| 		 * images and need not be included. We will set it anyway, | ||||
| 		 * because this field is used in other parts of library even | ||||
| 		 * in the single band case. | ||||
| 		 */ | ||||
| 		if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) | ||||
|                     tif->tif_dir.td_planarconfig = PLANARCONFIG_CONTIG; | ||||
| 	} else { | ||||
| 		if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "Must set \"PlanarConfiguration\" before writing data"); | ||||
| 			return (0); | ||||
| 		} | ||||
| 	} | ||||
| 	if (tif->tif_dir.td_stripoffset == NULL && !TIFFSetupStrips(tif)) { | ||||
| 		tif->tif_dir.td_nstrips = 0; | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "No space for %s arrays", | ||||
| 		    isTiled(tif) ? "tile" : "strip"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (isTiled(tif)) | ||||
| 	{ | ||||
| 		tif->tif_tilesize = TIFFTileSize(tif); | ||||
| 		if (tif->tif_tilesize == 0) | ||||
| 			return (0); | ||||
| 	} | ||||
| 	else | ||||
| 		tif->tif_tilesize = (tmsize_t)(-1); | ||||
| 	tif->tif_scanlinesize = TIFFScanlineSize(tif); | ||||
| 	if (tif->tif_scanlinesize == 0) | ||||
| 		return (0); | ||||
| 	tif->tif_flags |= TIFF_BEENWRITING; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Setup the raw data buffer used for encoding. | ||||
|  */ | ||||
| int | ||||
| TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size) | ||||
| { | ||||
| 	static const char module[] = "TIFFWriteBufferSetup"; | ||||
|  | ||||
| 	if (tif->tif_rawdata) { | ||||
| 		if (tif->tif_flags & TIFF_MYBUFFER) { | ||||
| 			_TIFFfree(tif->tif_rawdata); | ||||
| 			tif->tif_flags &= ~TIFF_MYBUFFER; | ||||
| 		} | ||||
| 		tif->tif_rawdata = NULL; | ||||
| 	} | ||||
| 	if (size == (tmsize_t)(-1)) { | ||||
| 		size = (isTiled(tif) ? | ||||
| 		    tif->tif_tilesize : TIFFStripSize(tif)); | ||||
| 		/* | ||||
| 		 * Make raw data buffer at least 8K | ||||
| 		 */ | ||||
| 		if (size < 8*1024) | ||||
| 			size = 8*1024; | ||||
| 		bp = NULL;			/* NB: force malloc */ | ||||
| 	} | ||||
| 	if (bp == NULL) { | ||||
| 		bp = _TIFFmalloc(size); | ||||
| 		if (bp == NULL) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, "No space for output buffer"); | ||||
| 			return (0); | ||||
| 		} | ||||
| 		tif->tif_flags |= TIFF_MYBUFFER; | ||||
| 	} else | ||||
| 		tif->tif_flags &= ~TIFF_MYBUFFER; | ||||
| 	tif->tif_rawdata = (uint8*) bp; | ||||
| 	tif->tif_rawdatasize = size; | ||||
| 	tif->tif_rawcc = 0; | ||||
| 	tif->tif_rawcp = tif->tif_rawdata; | ||||
| 	tif->tif_flags |= TIFF_BUFFERSETUP; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Grow the strip data structures by delta strips. | ||||
|  */ | ||||
| static int | ||||
| TIFFGrowStrips(TIFF* tif, uint32 delta, const char* module) | ||||
| { | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint64* new_stripoffset; | ||||
| 	uint64* new_stripbytecount; | ||||
|  | ||||
| 	assert(td->td_planarconfig == PLANARCONFIG_CONTIG); | ||||
| 	new_stripoffset = (uint64*)_TIFFrealloc(td->td_stripoffset, | ||||
| 		(td->td_nstrips + delta) * sizeof (uint64)); | ||||
| 	new_stripbytecount = (uint64*)_TIFFrealloc(td->td_stripbytecount, | ||||
| 		(td->td_nstrips + delta) * sizeof (uint64)); | ||||
| 	if (new_stripoffset == NULL || new_stripbytecount == NULL) { | ||||
| 		if (new_stripoffset) | ||||
| 			_TIFFfree(new_stripoffset); | ||||
| 		if (new_stripbytecount) | ||||
| 			_TIFFfree(new_stripbytecount); | ||||
| 		td->td_nstrips = 0; | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "No space to expand strip arrays"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	td->td_stripoffset = new_stripoffset; | ||||
| 	td->td_stripbytecount = new_stripbytecount; | ||||
| 	_TIFFmemset(td->td_stripoffset + td->td_nstrips, | ||||
| 		    0, delta*sizeof (uint64)); | ||||
| 	_TIFFmemset(td->td_stripbytecount + td->td_nstrips, | ||||
| 		    0, delta*sizeof (uint64)); | ||||
| 	td->td_nstrips += delta; | ||||
|         tif->tif_flags |= TIFF_DIRTYDIRECT; | ||||
|  | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Append the data to the specified strip. | ||||
|  */ | ||||
| static int | ||||
| TIFFAppendToStrip(TIFF* tif, uint32 strip, uint8* data, tmsize_t cc) | ||||
| { | ||||
| 	static const char module[] = "TIFFAppendToStrip"; | ||||
| 	TIFFDirectory *td = &tif->tif_dir; | ||||
| 	uint64 m; | ||||
|         int64 old_byte_count = -1; | ||||
|  | ||||
| 	if (td->td_stripoffset[strip] == 0 || tif->tif_curoff == 0) { | ||||
|             assert(td->td_nstrips > 0); | ||||
|  | ||||
|             if( td->td_stripbytecount[strip] != 0  | ||||
|                 && td->td_stripoffset[strip] != 0  | ||||
|                 && td->td_stripbytecount[strip] >= (uint64) cc ) | ||||
|             { | ||||
|                 /*  | ||||
|                  * There is already tile data on disk, and the new tile | ||||
|                  * data we have will fit in the same space.  The only  | ||||
|                  * aspect of this that is risky is that there could be | ||||
|                  * more data to append to this strip before we are done | ||||
|                  * depending on how we are getting called. | ||||
|                  */ | ||||
|                 if (!SeekOK(tif, td->td_stripoffset[strip])) { | ||||
|                     TIFFErrorExt(tif->tif_clientdata, module, | ||||
|                                  "Seek error at scanline %lu", | ||||
|                                  (unsigned long)tif->tif_row); | ||||
|                     return (0); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 /*  | ||||
|                  * Seek to end of file, and set that as our location to  | ||||
|                  * write this strip. | ||||
|                  */ | ||||
|                 td->td_stripoffset[strip] = TIFFSeekFile(tif, 0, SEEK_END); | ||||
|                 tif->tif_flags |= TIFF_DIRTYSTRIP; | ||||
|             } | ||||
|  | ||||
|             tif->tif_curoff = td->td_stripoffset[strip]; | ||||
|  | ||||
|             /* | ||||
|              * We are starting a fresh strip/tile, so set the size to zero. | ||||
|              */ | ||||
|             old_byte_count = td->td_stripbytecount[strip]; | ||||
|             td->td_stripbytecount[strip] = 0; | ||||
| 	} | ||||
|  | ||||
| 	m = tif->tif_curoff+cc; | ||||
| 	if (!(tif->tif_flags&TIFF_BIGTIFF)) | ||||
| 		m = (uint32)m; | ||||
| 	if ((m<tif->tif_curoff)||(m<(uint64)cc)) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Maximum TIFF file size exceeded"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	if (!WriteOK(tif, data, cc)) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "Write error at scanline %lu", | ||||
| 		    (unsigned long) tif->tif_row); | ||||
| 		    return (0); | ||||
| 	} | ||||
| 	tif->tif_curoff = m; | ||||
| 	td->td_stripbytecount[strip] += cc; | ||||
|  | ||||
|         if( (int64) td->td_stripbytecount[strip] != old_byte_count ) | ||||
|             tif->tif_flags |= TIFF_DIRTYSTRIP; | ||||
|              | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Internal version of TIFFFlushData that can be | ||||
|  * called by ``encodestrip routines'' w/o concern | ||||
|  * for infinite recursion. | ||||
|  */ | ||||
| int | ||||
| TIFFFlushData1(TIFF* tif) | ||||
| { | ||||
| 	if (tif->tif_rawcc > 0 && tif->tif_flags & TIFF_BUF4WRITE ) { | ||||
| 		if (!isFillOrder(tif, tif->tif_dir.td_fillorder) && | ||||
| 		    (tif->tif_flags & TIFF_NOBITREV) == 0) | ||||
| 			TIFFReverseBits((uint8*)tif->tif_rawdata, | ||||
| 			    tif->tif_rawcc); | ||||
| 		if (!TIFFAppendToStrip(tif, | ||||
| 		    isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip, | ||||
| 		    tif->tif_rawdata, tif->tif_rawcc)) | ||||
|         { | ||||
|             /* We update those variables even in case of error since there's */ | ||||
|             /* code that doesn't really check the return code of this */ | ||||
|             /* function */ | ||||
|             tif->tif_rawcc = 0; | ||||
|             tif->tif_rawcp = tif->tif_rawdata; | ||||
| 			return (0); | ||||
|         } | ||||
| 		tif->tif_rawcc = 0; | ||||
| 		tif->tif_rawcp = tif->tif_rawdata; | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Set the current write offset.  This should only be | ||||
|  * used to set the offset to a known previous location | ||||
|  * (very carefully), or to 0 so that the next write gets | ||||
|  * appended to the end of the file. | ||||
|  */ | ||||
| void | ||||
| TIFFSetWriteOffset(TIFF* tif, toff_t off) | ||||
| { | ||||
| 	tif->tif_curoff = off; | ||||
| } | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										476
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_zip.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										476
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tif_zip.c
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,476 @@ | ||||
| /* $Id: tif_zip.c,v 1.37 2017-05-10 15:21:16 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1995-1997 Sam Leffler | ||||
|  * Copyright (c) 1995-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "tiffiop.h" | ||||
| #ifdef ZIP_SUPPORT | ||||
| /* | ||||
|  * TIFF Library. | ||||
|  * | ||||
|  * ZIP (aka Deflate) Compression Support | ||||
|  * | ||||
|  * This file is simply an interface to the zlib library written by | ||||
|  * Jean-loup Gailly and Mark Adler.  You must use version 1.0 or later | ||||
|  * of the library: this code assumes the 1.0 API and also depends on | ||||
|  * the ability to write the zlib header multiple times (one per strip) | ||||
|  * which was not possible with versions prior to 0.95.  Note also that | ||||
|  * older versions of this codec avoided this bug by suppressing the header | ||||
|  * entirely.  This means that files written with the old library cannot | ||||
|  * be read; they should be converted to a different compression scheme | ||||
|  * and then reconverted. | ||||
|  * | ||||
|  * The data format used by the zlib library is described in the files | ||||
|  * zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available in the | ||||
|  * directory ftp://ftp.uu.net/pub/archiving/zip/doc.  The library was | ||||
|  * last found at ftp://ftp.uu.net/pub/archiving/zip/zlib/zlib-0.99.tar.gz. | ||||
|  */ | ||||
| #include "tif_predict.h" | ||||
| #include "zlib.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| /* | ||||
|  * Sigh, ZLIB_VERSION is defined as a string so there's no | ||||
|  * way to do a proper check here.  Instead we guess based | ||||
|  * on the presence of #defines that were added between the | ||||
|  * 0.95 and 1.0 distributions. | ||||
|  */ | ||||
| #if !defined(Z_NO_COMPRESSION) || !defined(Z_DEFLATED) | ||||
| #error "Antiquated ZLIB software; you must use version 1.0 or later" | ||||
| #endif | ||||
|  | ||||
| #define SAFE_MSG(sp)   ((sp)->stream.msg == NULL ? "" : (sp)->stream.msg) | ||||
|  | ||||
| /* | ||||
|  * State block for each open TIFF | ||||
|  * file using ZIP compression/decompression. | ||||
|  */ | ||||
| typedef struct { | ||||
| 	TIFFPredictorState predict; | ||||
|         z_stream        stream; | ||||
| 	int             zipquality;            /* compression level */ | ||||
| 	int             state;                 /* state flags */ | ||||
| #define ZSTATE_INIT_DECODE 0x01 | ||||
| #define ZSTATE_INIT_ENCODE 0x02 | ||||
|  | ||||
| 	TIFFVGetMethod  vgetparent;            /* super-class method */ | ||||
| 	TIFFVSetMethod  vsetparent;            /* super-class method */ | ||||
| } ZIPState; | ||||
|  | ||||
| #define ZState(tif)             ((ZIPState*) (tif)->tif_data) | ||||
| #define DecoderState(tif)       ZState(tif) | ||||
| #define EncoderState(tif)       ZState(tif) | ||||
|  | ||||
| static int ZIPEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s); | ||||
| static int ZIPDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s); | ||||
|  | ||||
| static int | ||||
| ZIPFixupTags(TIFF* tif) | ||||
| { | ||||
| 	(void) tif; | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static int | ||||
| ZIPSetupDecode(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "ZIPSetupDecode"; | ||||
| 	ZIPState* sp = DecoderState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
|          | ||||
|         /* if we were last encoding, terminate this mode */ | ||||
| 	if (sp->state & ZSTATE_INIT_ENCODE) { | ||||
| 	    deflateEnd(&sp->stream); | ||||
| 	    sp->state = 0; | ||||
| 	} | ||||
|  | ||||
| 	/* This function can possibly be called several times by */ | ||||
| 	/* PredictorSetupDecode() if this function succeeds but */ | ||||
| 	/* PredictorSetup() fails */ | ||||
| 	if ((sp->state & ZSTATE_INIT_DECODE) == 0 && | ||||
| 	    inflateInit(&sp->stream) != Z_OK) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "%s", SAFE_MSG(sp)); | ||||
| 		return (0); | ||||
| 	} else { | ||||
| 		sp->state |= ZSTATE_INIT_DECODE; | ||||
| 		return (1); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Setup state for decoding a strip. | ||||
|  */ | ||||
| static int | ||||
| ZIPPreDecode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "ZIPPreDecode"; | ||||
| 	ZIPState* sp = DecoderState(tif); | ||||
|  | ||||
| 	(void) s; | ||||
| 	assert(sp != NULL); | ||||
|  | ||||
| 	if( (sp->state & ZSTATE_INIT_DECODE) == 0 ) | ||||
|             tif->tif_setupdecode( tif ); | ||||
|  | ||||
| 	sp->stream.next_in = tif->tif_rawdata; | ||||
| 	assert(sizeof(sp->stream.avail_in)==4);  /* if this assert gets raised, | ||||
| 	    we need to simplify this code to reflect a ZLib that is likely updated | ||||
| 	    to deal with 8byte memory sizes, though this code will respond | ||||
| 	    appropriately even before we simplify it */ | ||||
| 	sp->stream.avail_in = (uInt) tif->tif_rawcc; | ||||
| 	if ((tmsize_t)sp->stream.avail_in != tif->tif_rawcc) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	return (inflateReset(&sp->stream) == Z_OK); | ||||
| } | ||||
|  | ||||
| static int | ||||
| ZIPDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "ZIPDecode"; | ||||
| 	ZIPState* sp = DecoderState(tif); | ||||
|  | ||||
| 	(void) s; | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->state == ZSTATE_INIT_DECODE); | ||||
|  | ||||
|         sp->stream.next_in = tif->tif_rawcp; | ||||
| 	sp->stream.avail_in = (uInt) tif->tif_rawcc; | ||||
|          | ||||
| 	sp->stream.next_out = op; | ||||
| 	assert(sizeof(sp->stream.avail_out)==4);  /* if this assert gets raised, | ||||
| 	    we need to simplify this code to reflect a ZLib that is likely updated | ||||
| 	    to deal with 8byte memory sizes, though this code will respond | ||||
| 	    appropriately even before we simplify it */ | ||||
| 	sp->stream.avail_out = (uInt) occ; | ||||
| 	if ((tmsize_t)sp->stream.avail_out != occ) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	do { | ||||
| 		int state = inflate(&sp->stream, Z_PARTIAL_FLUSH); | ||||
| 		if (state == Z_STREAM_END) | ||||
| 			break; | ||||
| 		if (state == Z_DATA_ERROR) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			    "Decoding error at scanline %lu, %s", | ||||
| 			     (unsigned long) tif->tif_row, SAFE_MSG(sp)); | ||||
| 			if (inflateSync(&sp->stream) != Z_OK) | ||||
| 				return (0); | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (state != Z_OK) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module,  | ||||
| 				     "ZLib error: %s", SAFE_MSG(sp)); | ||||
| 			return (0); | ||||
| 		} | ||||
| 	} while (sp->stream.avail_out > 0); | ||||
| 	if (sp->stream.avail_out != 0) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 		    "Not enough data at scanline %lu (short " TIFF_UINT64_FORMAT " bytes)", | ||||
| 		    (unsigned long) tif->tif_row, (TIFF_UINT64_T) sp->stream.avail_out); | ||||
| 		return (0); | ||||
| 	} | ||||
|  | ||||
|         tif->tif_rawcp = sp->stream.next_in; | ||||
|         tif->tif_rawcc = sp->stream.avail_in; | ||||
|  | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static int | ||||
| ZIPSetupEncode(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "ZIPSetupEncode"; | ||||
| 	ZIPState* sp = EncoderState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	if (sp->state & ZSTATE_INIT_DECODE) { | ||||
| 		inflateEnd(&sp->stream); | ||||
| 		sp->state = 0; | ||||
| 	} | ||||
|  | ||||
| 	if (deflateInit(&sp->stream, sp->zipquality) != Z_OK) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "%s", SAFE_MSG(sp)); | ||||
| 		return (0); | ||||
| 	} else { | ||||
| 		sp->state |= ZSTATE_INIT_ENCODE; | ||||
| 		return (1); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Reset encoding state at the start of a strip. | ||||
|  */ | ||||
| static int | ||||
| ZIPPreEncode(TIFF* tif, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "ZIPPreEncode"; | ||||
| 	ZIPState *sp = EncoderState(tif); | ||||
|  | ||||
| 	(void) s; | ||||
| 	assert(sp != NULL); | ||||
| 	if( sp->state != ZSTATE_INIT_ENCODE ) | ||||
|             tif->tif_setupencode( tif ); | ||||
|  | ||||
| 	sp->stream.next_out = tif->tif_rawdata; | ||||
| 	assert(sizeof(sp->stream.avail_out)==4);  /* if this assert gets raised, | ||||
| 	    we need to simplify this code to reflect a ZLib that is likely updated | ||||
| 	    to deal with 8byte memory sizes, though this code will respond | ||||
| 	    appropriately even before we simplify it */ | ||||
| 	sp->stream.avail_out = (uInt)tif->tif_rawdatasize; | ||||
| 	if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	return (deflateReset(&sp->stream) == Z_OK); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Encode a chunk of pixels. | ||||
|  */ | ||||
| static int | ||||
| ZIPEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s) | ||||
| { | ||||
| 	static const char module[] = "ZIPEncode"; | ||||
| 	ZIPState *sp = EncoderState(tif); | ||||
|  | ||||
| 	assert(sp != NULL); | ||||
| 	assert(sp->state == ZSTATE_INIT_ENCODE); | ||||
|  | ||||
| 	(void) s; | ||||
| 	sp->stream.next_in = bp; | ||||
| 	assert(sizeof(sp->stream.avail_in)==4);  /* if this assert gets raised, | ||||
| 	    we need to simplify this code to reflect a ZLib that is likely updated | ||||
| 	    to deal with 8byte memory sizes, though this code will respond | ||||
| 	    appropriately even before we simplify it */ | ||||
| 	sp->stream.avail_in = (uInt) cc; | ||||
| 	if ((tmsize_t)sp->stream.avail_in != cc) | ||||
| 	{ | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size"); | ||||
| 		return (0); | ||||
| 	} | ||||
| 	do { | ||||
| 		if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) { | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module,  | ||||
| 				     "Encoder error: %s", | ||||
| 				     SAFE_MSG(sp)); | ||||
| 			return (0); | ||||
| 		} | ||||
| 		if (sp->stream.avail_out == 0) { | ||||
| 			tif->tif_rawcc = tif->tif_rawdatasize; | ||||
| 			TIFFFlushData1(tif); | ||||
| 			sp->stream.next_out = tif->tif_rawdata; | ||||
| 			sp->stream.avail_out = (uInt) tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in ZIPPreEncode */ | ||||
| 		} | ||||
| 	} while (sp->stream.avail_in > 0); | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Finish off an encoded strip by flushing the last | ||||
|  * string and tacking on an End Of Information code. | ||||
|  */ | ||||
| static int | ||||
| ZIPPostEncode(TIFF* tif) | ||||
| { | ||||
| 	static const char module[] = "ZIPPostEncode"; | ||||
| 	ZIPState *sp = EncoderState(tif); | ||||
| 	int state; | ||||
|  | ||||
| 	sp->stream.avail_in = 0; | ||||
| 	do { | ||||
| 		state = deflate(&sp->stream, Z_FINISH); | ||||
| 		switch (state) { | ||||
| 		case Z_STREAM_END: | ||||
| 		case Z_OK: | ||||
| 			if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) | ||||
| 			{ | ||||
| 				tif->tif_rawcc =  tif->tif_rawdatasize - sp->stream.avail_out; | ||||
| 				TIFFFlushData1(tif); | ||||
| 				sp->stream.next_out = tif->tif_rawdata; | ||||
| 				sp->stream.avail_out = (uInt) tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in ZIPPreEncode */ | ||||
| 			} | ||||
| 			break; | ||||
| 		default: | ||||
| 			TIFFErrorExt(tif->tif_clientdata, module,  | ||||
| 				     "ZLib error: %s", SAFE_MSG(sp)); | ||||
| 			return (0); | ||||
| 		} | ||||
| 	} while (state != Z_STREAM_END); | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static void | ||||
| ZIPCleanup(TIFF* tif) | ||||
| { | ||||
| 	ZIPState* sp = ZState(tif); | ||||
|  | ||||
| 	assert(sp != 0); | ||||
|  | ||||
| 	(void)TIFFPredictorCleanup(tif); | ||||
|  | ||||
| 	tif->tif_tagmethods.vgetfield = sp->vgetparent; | ||||
| 	tif->tif_tagmethods.vsetfield = sp->vsetparent; | ||||
|  | ||||
| 	if (sp->state & ZSTATE_INIT_ENCODE) { | ||||
| 		deflateEnd(&sp->stream); | ||||
| 		sp->state = 0; | ||||
| 	} else if( sp->state & ZSTATE_INIT_DECODE) { | ||||
| 		inflateEnd(&sp->stream); | ||||
| 		sp->state = 0; | ||||
| 	} | ||||
| 	_TIFFfree(sp); | ||||
| 	tif->tif_data = NULL; | ||||
|  | ||||
| 	_TIFFSetDefaultCompressionState(tif); | ||||
| } | ||||
|  | ||||
| static int | ||||
| ZIPVSetField(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	static const char module[] = "ZIPVSetField"; | ||||
| 	ZIPState* sp = ZState(tif); | ||||
|  | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_ZIPQUALITY: | ||||
| 		sp->zipquality = (int) va_arg(ap, int); | ||||
| 		if ( sp->state&ZSTATE_INIT_ENCODE ) { | ||||
| 			if (deflateParams(&sp->stream, | ||||
| 			    sp->zipquality, Z_DEFAULT_STRATEGY) != Z_OK) { | ||||
| 				TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s", | ||||
| 					     SAFE_MSG(sp)); | ||||
| 				return (0); | ||||
| 			} | ||||
| 		} | ||||
| 		return (1); | ||||
| 	default: | ||||
| 		return (*sp->vsetparent)(tif, tag, ap); | ||||
| 	} | ||||
| 	/*NOTREACHED*/ | ||||
| } | ||||
|  | ||||
| static int | ||||
| ZIPVGetField(TIFF* tif, uint32 tag, va_list ap) | ||||
| { | ||||
| 	ZIPState* sp = ZState(tif); | ||||
|  | ||||
| 	switch (tag) { | ||||
| 	case TIFFTAG_ZIPQUALITY: | ||||
| 		*va_arg(ap, int*) = sp->zipquality; | ||||
| 		break; | ||||
| 	default: | ||||
| 		return (*sp->vgetparent)(tif, tag, ap); | ||||
| 	} | ||||
| 	return (1); | ||||
| } | ||||
|  | ||||
| static const TIFFField zipFields[] = { | ||||
|     { TIFFTAG_ZIPQUALITY, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "", NULL }, | ||||
| }; | ||||
|  | ||||
| int | ||||
| TIFFInitZIP(TIFF* tif, int scheme) | ||||
| { | ||||
| 	static const char module[] = "TIFFInitZIP"; | ||||
| 	ZIPState* sp; | ||||
|  | ||||
| 	assert( (scheme == COMPRESSION_DEFLATE) | ||||
| 		|| (scheme == COMPRESSION_ADOBE_DEFLATE)); | ||||
|  | ||||
| 	/* | ||||
| 	 * Merge codec-specific tag information. | ||||
| 	 */ | ||||
| 	if (!_TIFFMergeFields(tif, zipFields, TIFFArrayCount(zipFields))) { | ||||
| 		TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 			     "Merging Deflate codec-specific tags failed"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| 	 * Allocate state block so tag methods have storage to record values. | ||||
| 	 */ | ||||
| 	tif->tif_data = (uint8*) _TIFFmalloc(sizeof (ZIPState)); | ||||
| 	if (tif->tif_data == NULL) | ||||
| 		goto bad; | ||||
| 	sp = ZState(tif); | ||||
| 	sp->stream.zalloc = NULL; | ||||
| 	sp->stream.zfree = NULL; | ||||
| 	sp->stream.opaque = NULL; | ||||
| 	sp->stream.data_type = Z_BINARY; | ||||
|  | ||||
| 	/* | ||||
| 	 * Override parent get/set field methods. | ||||
| 	 */ | ||||
| 	sp->vgetparent = tif->tif_tagmethods.vgetfield; | ||||
| 	tif->tif_tagmethods.vgetfield = ZIPVGetField; /* hook for codec tags */ | ||||
| 	sp->vsetparent = tif->tif_tagmethods.vsetfield; | ||||
| 	tif->tif_tagmethods.vsetfield = ZIPVSetField; /* hook for codec tags */ | ||||
|  | ||||
| 	/* Default values for codec-specific fields */ | ||||
| 	sp->zipquality = Z_DEFAULT_COMPRESSION;	/* default comp. level */ | ||||
| 	sp->state = 0; | ||||
|  | ||||
| 	/* | ||||
| 	 * Install codec methods. | ||||
| 	 */ | ||||
| 	tif->tif_fixuptags = ZIPFixupTags;  | ||||
| 	tif->tif_setupdecode = ZIPSetupDecode; | ||||
| 	tif->tif_predecode = ZIPPreDecode; | ||||
| 	tif->tif_decoderow = ZIPDecode; | ||||
| 	tif->tif_decodestrip = ZIPDecode; | ||||
| 	tif->tif_decodetile = ZIPDecode;   | ||||
| 	tif->tif_setupencode = ZIPSetupEncode; | ||||
| 	tif->tif_preencode = ZIPPreEncode; | ||||
| 	tif->tif_postencode = ZIPPostEncode; | ||||
| 	tif->tif_encoderow = ZIPEncode; | ||||
| 	tif->tif_encodestrip = ZIPEncode; | ||||
| 	tif->tif_encodetile = ZIPEncode; | ||||
| 	tif->tif_cleanup = ZIPCleanup; | ||||
| 	/* | ||||
| 	 * Setup predictor setup. | ||||
| 	 */ | ||||
| 	(void) TIFFPredictorInit(tif); | ||||
| 	return (1); | ||||
| bad: | ||||
| 	TIFFErrorExt(tif->tif_clientdata, module, | ||||
| 		     "No space for ZIP state block"); | ||||
| 	return (0); | ||||
| } | ||||
| #endif /* ZIP_SUPPORT */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										681
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiff.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										681
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiff.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,681 @@ | ||||
| /* $Id: tiff.h,v 1.70 2016-01-23 21:20:34 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _TIFF_ | ||||
| #define	_TIFF_ | ||||
|  | ||||
| #include "tiffconf.h" | ||||
|  | ||||
| /* | ||||
|  * Tag Image File Format (TIFF) | ||||
|  * | ||||
|  * Based on Rev 6.0 from: | ||||
|  *    Developer's Desk | ||||
|  *    Aldus Corporation | ||||
|  *    411 First Ave. South | ||||
|  *    Suite 200 | ||||
|  *    Seattle, WA  98104 | ||||
|  *    206-622-5500 | ||||
|  * | ||||
|  *    (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf) | ||||
|  * | ||||
|  * For BigTIFF design notes see the following links | ||||
|  *    http://www.remotesensing.org/libtiff/bigtiffdesign.html | ||||
|  *    http://www.awaresystems.be/imaging/tiff/bigtiff.html | ||||
|  */ | ||||
|  | ||||
| #define TIFF_VERSION_CLASSIC 42 | ||||
| #define TIFF_VERSION_BIG 43 | ||||
|  | ||||
| #define TIFF_BIGENDIAN      0x4d4d | ||||
| #define TIFF_LITTLEENDIAN   0x4949 | ||||
| #define MDI_LITTLEENDIAN    0x5045 | ||||
| #define MDI_BIGENDIAN       0x4550 | ||||
|  | ||||
| /* | ||||
|  * Intrinsic data types required by the file format: | ||||
|  * | ||||
|  * 8-bit quantities     int8/uint8 | ||||
|  * 16-bit quantities    int16/uint16 | ||||
|  * 32-bit quantities    int32/uint32 | ||||
|  * 64-bit quantities    int64/uint64 | ||||
|  * strings              unsigned char* | ||||
|  */ | ||||
|  | ||||
| typedef TIFF_INT8_T   int8; | ||||
| typedef TIFF_UINT8_T  uint8; | ||||
|  | ||||
| typedef TIFF_INT16_T  int16; | ||||
| typedef TIFF_UINT16_T uint16; | ||||
|  | ||||
| typedef TIFF_INT32_T  int32; | ||||
| typedef TIFF_UINT32_T uint32; | ||||
|  | ||||
| typedef TIFF_INT64_T  int64; | ||||
| typedef TIFF_UINT64_T uint64; | ||||
|  | ||||
| /* | ||||
|  * Some types as promoted in a variable argument list | ||||
|  * We use uint16_vap rather then directly using int, because this way | ||||
|  * we document the type we actually want to pass through, conceptually, | ||||
|  * rather then confusing the issue by merely stating the type it gets | ||||
|  * promoted to | ||||
|  */ | ||||
|  | ||||
| typedef int uint16_vap; | ||||
|  | ||||
| /* | ||||
|  * TIFF header. | ||||
|  */ | ||||
| typedef struct { | ||||
| 	uint16 tiff_magic;      /* magic number (defines byte order) */ | ||||
| 	uint16 tiff_version;    /* TIFF version number */ | ||||
| } TIFFHeaderCommon; | ||||
| typedef struct { | ||||
| 	uint16 tiff_magic;      /* magic number (defines byte order) */ | ||||
| 	uint16 tiff_version;    /* TIFF version number */ | ||||
| 	uint32 tiff_diroff;     /* byte offset to first directory */ | ||||
| } TIFFHeaderClassic; | ||||
| typedef struct { | ||||
| 	uint16 tiff_magic;      /* magic number (defines byte order) */ | ||||
| 	uint16 tiff_version;    /* TIFF version number */ | ||||
| 	uint16 tiff_offsetsize; /* size of offsets, should be 8 */ | ||||
| 	uint16 tiff_unused;     /* unused word, should be 0 */ | ||||
| 	uint64 tiff_diroff;     /* byte offset to first directory */ | ||||
| } TIFFHeaderBig; | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * NB: In the comments below, | ||||
|  *  - items marked with a + are obsoleted by revision 5.0, | ||||
|  *  - items marked with a ! are introduced in revision 6.0. | ||||
|  *  - items marked with a % are introduced post revision 6.0. | ||||
|  *  - items marked with a $ are obsoleted by revision 6.0. | ||||
|  *  - items marked with a & are introduced by Adobe DNG specification. | ||||
|  */ | ||||
|  | ||||
| /* | ||||
|  * Tag data type information. | ||||
|  * | ||||
|  * Note: RATIONALs are the ratio of two 32-bit integer values. | ||||
|  */ | ||||
| typedef enum { | ||||
| 	TIFF_NOTYPE = 0,      /* placeholder */ | ||||
| 	TIFF_BYTE = 1,        /* 8-bit unsigned integer */ | ||||
| 	TIFF_ASCII = 2,       /* 8-bit bytes w/ last byte null */ | ||||
| 	TIFF_SHORT = 3,       /* 16-bit unsigned integer */ | ||||
| 	TIFF_LONG = 4,        /* 32-bit unsigned integer */ | ||||
| 	TIFF_RATIONAL = 5,    /* 64-bit unsigned fraction */ | ||||
| 	TIFF_SBYTE = 6,       /* !8-bit signed integer */ | ||||
| 	TIFF_UNDEFINED = 7,   /* !8-bit untyped data */ | ||||
| 	TIFF_SSHORT = 8,      /* !16-bit signed integer */ | ||||
| 	TIFF_SLONG = 9,       /* !32-bit signed integer */ | ||||
| 	TIFF_SRATIONAL = 10,  /* !64-bit signed fraction */ | ||||
| 	TIFF_FLOAT = 11,      /* !32-bit IEEE floating point */ | ||||
| 	TIFF_DOUBLE = 12,     /* !64-bit IEEE floating point */ | ||||
| 	TIFF_IFD = 13,        /* %32-bit unsigned integer (offset) */ | ||||
| 	TIFF_LONG8 = 16,      /* BigTIFF 64-bit unsigned integer */ | ||||
| 	TIFF_SLONG8 = 17,     /* BigTIFF 64-bit signed integer */ | ||||
| 	TIFF_IFD8 = 18        /* BigTIFF 64-bit unsigned integer (offset) */ | ||||
| } TIFFDataType; | ||||
|  | ||||
| /* | ||||
|  * TIFF Tag Definitions. | ||||
|  */ | ||||
| #define	TIFFTAG_SUBFILETYPE		254	/* subfile data descriptor */ | ||||
| #define	    FILETYPE_REDUCEDIMAGE	0x1	/* reduced resolution version */ | ||||
| #define	    FILETYPE_PAGE		0x2	/* one page of many */ | ||||
| #define	    FILETYPE_MASK		0x4	/* transparency mask */ | ||||
| #define	TIFFTAG_OSUBFILETYPE		255	/* +kind of data in subfile */ | ||||
| #define	    OFILETYPE_IMAGE		1	/* full resolution image data */ | ||||
| #define	    OFILETYPE_REDUCEDIMAGE	2	/* reduced size image data */ | ||||
| #define	    OFILETYPE_PAGE		3	/* one page of many */ | ||||
| #define	TIFFTAG_IMAGEWIDTH		256	/* image width in pixels */ | ||||
| #define	TIFFTAG_IMAGELENGTH		257	/* image height in pixels */ | ||||
| #define	TIFFTAG_BITSPERSAMPLE		258	/* bits per channel (sample) */ | ||||
| #define	TIFFTAG_COMPRESSION		259	/* data compression technique */ | ||||
| #define	    COMPRESSION_NONE		1	/* dump mode */ | ||||
| #define	    COMPRESSION_CCITTRLE	2	/* CCITT modified Huffman RLE */ | ||||
| #define	    COMPRESSION_CCITTFAX3	3	/* CCITT Group 3 fax encoding */ | ||||
| #define     COMPRESSION_CCITT_T4        3       /* CCITT T.4 (TIFF 6 name) */ | ||||
| #define	    COMPRESSION_CCITTFAX4	4	/* CCITT Group 4 fax encoding */ | ||||
| #define     COMPRESSION_CCITT_T6        4       /* CCITT T.6 (TIFF 6 name) */ | ||||
| #define	    COMPRESSION_LZW		5       /* Lempel-Ziv  & Welch */ | ||||
| #define	    COMPRESSION_OJPEG		6	/* !6.0 JPEG */ | ||||
| #define	    COMPRESSION_JPEG		7	/* %JPEG DCT compression */ | ||||
| #define     COMPRESSION_T85			9	/* !TIFF/FX T.85 JBIG compression */ | ||||
| #define     COMPRESSION_T43			10	/* !TIFF/FX T.43 colour by layered JBIG compression */ | ||||
| #define	    COMPRESSION_NEXT		32766	/* NeXT 2-bit RLE */ | ||||
| #define	    COMPRESSION_CCITTRLEW	32771	/* #1 w/ word alignment */ | ||||
| #define	    COMPRESSION_PACKBITS	32773	/* Macintosh RLE */ | ||||
| #define	    COMPRESSION_THUNDERSCAN	32809	/* ThunderScan RLE */ | ||||
| /* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT <dkelly@apago.com) */ | ||||
| #define	    COMPRESSION_IT8CTPAD	32895   /* IT8 CT w/padding */ | ||||
| #define	    COMPRESSION_IT8LW		32896   /* IT8 Linework RLE */ | ||||
| #define	    COMPRESSION_IT8MP		32897   /* IT8 Monochrome picture */ | ||||
| #define	    COMPRESSION_IT8BL		32898   /* IT8 Binary line art */ | ||||
| /* compression codes 32908-32911 are reserved for Pixar */ | ||||
| #define     COMPRESSION_PIXARFILM	32908   /* Pixar companded 10bit LZW */ | ||||
| #define	    COMPRESSION_PIXARLOG	32909   /* Pixar companded 11bit ZIP */ | ||||
| #define	    COMPRESSION_DEFLATE		32946	/* Deflate compression */ | ||||
| #define     COMPRESSION_ADOBE_DEFLATE   8       /* Deflate compression, | ||||
| 						   as recognized by Adobe */ | ||||
| /* compression code 32947 is reserved for Oceana Matrix <dev@oceana.com> */ | ||||
| #define     COMPRESSION_DCS             32947   /* Kodak DCS encoding */ | ||||
| #define	    COMPRESSION_JBIG		34661	/* ISO JBIG */ | ||||
| #define     COMPRESSION_SGILOG		34676	/* SGI Log Luminance RLE */ | ||||
| #define     COMPRESSION_SGILOG24	34677	/* SGI Log 24-bit packed */ | ||||
| #define     COMPRESSION_JP2000          34712   /* Leadtools JPEG2000 */ | ||||
| #define	    COMPRESSION_LZMA		34925	/* LZMA2 */ | ||||
| #define	TIFFTAG_PHOTOMETRIC		262	/* photometric interpretation */ | ||||
| #define	    PHOTOMETRIC_MINISWHITE	0	/* min value is white */ | ||||
| #define	    PHOTOMETRIC_MINISBLACK	1	/* min value is black */ | ||||
| #define	    PHOTOMETRIC_RGB		2	/* RGB color model */ | ||||
| #define	    PHOTOMETRIC_PALETTE		3	/* color map indexed */ | ||||
| #define	    PHOTOMETRIC_MASK		4	/* $holdout mask */ | ||||
| #define	    PHOTOMETRIC_SEPARATED	5	/* !color separations */ | ||||
| #define	    PHOTOMETRIC_YCBCR		6	/* !CCIR 601 */ | ||||
| #define	    PHOTOMETRIC_CIELAB		8	/* !1976 CIE L*a*b* */ | ||||
| #define	    PHOTOMETRIC_ICCLAB		9	/* ICC L*a*b* [Adobe TIFF Technote 4] */ | ||||
| #define	    PHOTOMETRIC_ITULAB		10	/* ITU L*a*b* */ | ||||
| #define	    PHOTOMETRIC_CFA		32803	/* color filter array */ | ||||
| #define     PHOTOMETRIC_LOGL		32844	/* CIE Log2(L) */ | ||||
| #define     PHOTOMETRIC_LOGLUV		32845	/* CIE Log2(L) (u',v') */ | ||||
| #define	TIFFTAG_THRESHHOLDING		263	/* +thresholding used on data */ | ||||
| #define	    THRESHHOLD_BILEVEL		1	/* b&w art scan */ | ||||
| #define	    THRESHHOLD_HALFTONE		2	/* or dithered scan */ | ||||
| #define	    THRESHHOLD_ERRORDIFFUSE	3	/* usually floyd-steinberg */ | ||||
| #define	TIFFTAG_CELLWIDTH		264	/* +dithering matrix width */ | ||||
| #define	TIFFTAG_CELLLENGTH		265	/* +dithering matrix height */ | ||||
| #define	TIFFTAG_FILLORDER		266	/* data order within a byte */ | ||||
| #define	    FILLORDER_MSB2LSB		1	/* most significant -> least */ | ||||
| #define	    FILLORDER_LSB2MSB		2	/* least significant -> most */ | ||||
| #define	TIFFTAG_DOCUMENTNAME		269	/* name of doc. image is from */ | ||||
| #define	TIFFTAG_IMAGEDESCRIPTION	270	/* info about image */ | ||||
| #define	TIFFTAG_MAKE			271	/* scanner manufacturer name */ | ||||
| #define	TIFFTAG_MODEL			272	/* scanner model name/number */ | ||||
| #define	TIFFTAG_STRIPOFFSETS		273	/* offsets to data strips */ | ||||
| #define	TIFFTAG_ORIENTATION		274	/* +image orientation */ | ||||
| #define	    ORIENTATION_TOPLEFT		1	/* row 0 top, col 0 lhs */ | ||||
| #define	    ORIENTATION_TOPRIGHT	2	/* row 0 top, col 0 rhs */ | ||||
| #define	    ORIENTATION_BOTRIGHT	3	/* row 0 bottom, col 0 rhs */ | ||||
| #define	    ORIENTATION_BOTLEFT		4	/* row 0 bottom, col 0 lhs */ | ||||
| #define	    ORIENTATION_LEFTTOP		5	/* row 0 lhs, col 0 top */ | ||||
| #define	    ORIENTATION_RIGHTTOP	6	/* row 0 rhs, col 0 top */ | ||||
| #define	    ORIENTATION_RIGHTBOT	7	/* row 0 rhs, col 0 bottom */ | ||||
| #define	    ORIENTATION_LEFTBOT		8	/* row 0 lhs, col 0 bottom */ | ||||
| #define	TIFFTAG_SAMPLESPERPIXEL		277	/* samples per pixel */ | ||||
| #define	TIFFTAG_ROWSPERSTRIP		278	/* rows per strip of data */ | ||||
| #define	TIFFTAG_STRIPBYTECOUNTS		279	/* bytes counts for strips */ | ||||
| #define	TIFFTAG_MINSAMPLEVALUE		280	/* +minimum sample value */ | ||||
| #define	TIFFTAG_MAXSAMPLEVALUE		281	/* +maximum sample value */ | ||||
| #define	TIFFTAG_XRESOLUTION		282	/* pixels/resolution in x */ | ||||
| #define	TIFFTAG_YRESOLUTION		283	/* pixels/resolution in y */ | ||||
| #define	TIFFTAG_PLANARCONFIG		284	/* storage organization */ | ||||
| #define	    PLANARCONFIG_CONTIG		1	/* single image plane */ | ||||
| #define	    PLANARCONFIG_SEPARATE	2	/* separate planes of data */ | ||||
| #define	TIFFTAG_PAGENAME		285	/* page name image is from */ | ||||
| #define	TIFFTAG_XPOSITION		286	/* x page offset of image lhs */ | ||||
| #define	TIFFTAG_YPOSITION		287	/* y page offset of image lhs */ | ||||
| #define	TIFFTAG_FREEOFFSETS		288	/* +byte offset to free block */ | ||||
| #define	TIFFTAG_FREEBYTECOUNTS		289	/* +sizes of free blocks */ | ||||
| #define	TIFFTAG_GRAYRESPONSEUNIT	290	/* $gray scale curve accuracy */ | ||||
| #define	    GRAYRESPONSEUNIT_10S	1	/* tenths of a unit */ | ||||
| #define	    GRAYRESPONSEUNIT_100S	2	/* hundredths of a unit */ | ||||
| #define	    GRAYRESPONSEUNIT_1000S	3	/* thousandths of a unit */ | ||||
| #define	    GRAYRESPONSEUNIT_10000S	4	/* ten-thousandths of a unit */ | ||||
| #define	    GRAYRESPONSEUNIT_100000S	5	/* hundred-thousandths */ | ||||
| #define	TIFFTAG_GRAYRESPONSECURVE	291	/* $gray scale response curve */ | ||||
| #define	TIFFTAG_GROUP3OPTIONS		292	/* 32 flag bits */ | ||||
| #define	TIFFTAG_T4OPTIONS		292	/* TIFF 6.0 proper name alias */ | ||||
| #define	    GROUP3OPT_2DENCODING	0x1	/* 2-dimensional coding */ | ||||
| #define	    GROUP3OPT_UNCOMPRESSED	0x2	/* data not compressed */ | ||||
| #define	    GROUP3OPT_FILLBITS		0x4	/* fill to byte boundary */ | ||||
| #define	TIFFTAG_GROUP4OPTIONS		293	/* 32 flag bits */ | ||||
| #define TIFFTAG_T6OPTIONS               293     /* TIFF 6.0 proper name */ | ||||
| #define	    GROUP4OPT_UNCOMPRESSED	0x2	/* data not compressed */ | ||||
| #define	TIFFTAG_RESOLUTIONUNIT		296	/* units of resolutions */ | ||||
| #define	    RESUNIT_NONE		1	/* no meaningful units */ | ||||
| #define	    RESUNIT_INCH		2	/* english */ | ||||
| #define	    RESUNIT_CENTIMETER		3	/* metric */ | ||||
| #define	TIFFTAG_PAGENUMBER		297	/* page numbers of multi-page */ | ||||
| #define	TIFFTAG_COLORRESPONSEUNIT	300	/* $color curve accuracy */ | ||||
| #define	    COLORRESPONSEUNIT_10S	1	/* tenths of a unit */ | ||||
| #define	    COLORRESPONSEUNIT_100S	2	/* hundredths of a unit */ | ||||
| #define	    COLORRESPONSEUNIT_1000S	3	/* thousandths of a unit */ | ||||
| #define	    COLORRESPONSEUNIT_10000S	4	/* ten-thousandths of a unit */ | ||||
| #define	    COLORRESPONSEUNIT_100000S	5	/* hundred-thousandths */ | ||||
| #define	TIFFTAG_TRANSFERFUNCTION	301	/* !colorimetry info */ | ||||
| #define	TIFFTAG_SOFTWARE		305	/* name & release */ | ||||
| #define	TIFFTAG_DATETIME		306	/* creation date and time */ | ||||
| #define	TIFFTAG_ARTIST			315	/* creator of image */ | ||||
| #define	TIFFTAG_HOSTCOMPUTER		316	/* machine where created */ | ||||
| #define	TIFFTAG_PREDICTOR		317	/* prediction scheme w/ LZW */ | ||||
| #define     PREDICTOR_NONE		1	/* no prediction scheme used */ | ||||
| #define     PREDICTOR_HORIZONTAL	2	/* horizontal differencing */ | ||||
| #define     PREDICTOR_FLOATINGPOINT	3	/* floating point predictor */ | ||||
| #define	TIFFTAG_WHITEPOINT		318	/* image white point */ | ||||
| #define	TIFFTAG_PRIMARYCHROMATICITIES	319	/* !primary chromaticities */ | ||||
| #define	TIFFTAG_COLORMAP		320	/* RGB map for palette image */ | ||||
| #define	TIFFTAG_HALFTONEHINTS		321	/* !highlight+shadow info */ | ||||
| #define	TIFFTAG_TILEWIDTH		322	/* !tile width in pixels */ | ||||
| #define	TIFFTAG_TILELENGTH		323	/* !tile height in pixels */ | ||||
| #define TIFFTAG_TILEOFFSETS		324	/* !offsets to data tiles */ | ||||
| #define TIFFTAG_TILEBYTECOUNTS		325	/* !byte counts for tiles */ | ||||
| #define	TIFFTAG_BADFAXLINES		326	/* lines w/ wrong pixel count */ | ||||
| #define	TIFFTAG_CLEANFAXDATA		327	/* regenerated line info */ | ||||
| #define	    CLEANFAXDATA_CLEAN		0	/* no errors detected */ | ||||
| #define	    CLEANFAXDATA_REGENERATED	1	/* receiver regenerated lines */ | ||||
| #define	    CLEANFAXDATA_UNCLEAN	2	/* uncorrected errors exist */ | ||||
| #define	TIFFTAG_CONSECUTIVEBADFAXLINES	328	/* max consecutive bad lines */ | ||||
| #define	TIFFTAG_SUBIFD			330	/* subimage descriptors */ | ||||
| #define	TIFFTAG_INKSET			332	/* !inks in separated image */ | ||||
| #define	    INKSET_CMYK			1	/* !cyan-magenta-yellow-black color */ | ||||
| #define	    INKSET_MULTIINK		2	/* !multi-ink or hi-fi color */ | ||||
| #define	TIFFTAG_INKNAMES		333	/* !ascii names of inks */ | ||||
| #define	TIFFTAG_NUMBEROFINKS		334	/* !number of inks */ | ||||
| #define	TIFFTAG_DOTRANGE		336	/* !0% and 100% dot codes */ | ||||
| #define	TIFFTAG_TARGETPRINTER		337	/* !separation target */ | ||||
| #define	TIFFTAG_EXTRASAMPLES		338	/* !info about extra samples */ | ||||
| #define	    EXTRASAMPLE_UNSPECIFIED	0	/* !unspecified data */ | ||||
| #define	    EXTRASAMPLE_ASSOCALPHA	1	/* !associated alpha data */ | ||||
| #define	    EXTRASAMPLE_UNASSALPHA	2	/* !unassociated alpha data */ | ||||
| #define	TIFFTAG_SAMPLEFORMAT		339	/* !data sample format */ | ||||
| #define	    SAMPLEFORMAT_UINT		1	/* !unsigned integer data */ | ||||
| #define	    SAMPLEFORMAT_INT		2	/* !signed integer data */ | ||||
| #define	    SAMPLEFORMAT_IEEEFP		3	/* !IEEE floating point data */ | ||||
| #define	    SAMPLEFORMAT_VOID		4	/* !untyped data */ | ||||
| #define	    SAMPLEFORMAT_COMPLEXINT	5	/* !complex signed int */ | ||||
| #define	    SAMPLEFORMAT_COMPLEXIEEEFP	6	/* !complex ieee floating */ | ||||
| #define	TIFFTAG_SMINSAMPLEVALUE		340	/* !variable MinSampleValue */ | ||||
| #define	TIFFTAG_SMAXSAMPLEVALUE		341	/* !variable MaxSampleValue */ | ||||
| #define	TIFFTAG_CLIPPATH		343	/* %ClipPath | ||||
| 						   [Adobe TIFF technote 2] */ | ||||
| #define	TIFFTAG_XCLIPPATHUNITS		344	/* %XClipPathUnits | ||||
| 						   [Adobe TIFF technote 2] */ | ||||
| #define	TIFFTAG_YCLIPPATHUNITS		345	/* %YClipPathUnits | ||||
| 						   [Adobe TIFF technote 2] */ | ||||
| #define	TIFFTAG_INDEXED			346	/* %Indexed | ||||
| 						   [Adobe TIFF Technote 3] */ | ||||
| #define	TIFFTAG_JPEGTABLES		347	/* %JPEG table stream */ | ||||
| #define	TIFFTAG_OPIPROXY		351	/* %OPI Proxy [Adobe TIFF technote] */ | ||||
| /* Tags 400-435 are from the TIFF/FX spec */ | ||||
| #define TIFFTAG_GLOBALPARAMETERSIFD	400	/* ! */ | ||||
| #define TIFFTAG_PROFILETYPE			401	/* ! */ | ||||
| #define     PROFILETYPE_UNSPECIFIED	0	/* ! */ | ||||
| #define     PROFILETYPE_G3_FAX		1	/* ! */ | ||||
| #define TIFFTAG_FAXPROFILE			402	/* ! */ | ||||
| #define     FAXPROFILE_S			1	/* !TIFF/FX FAX profile S */ | ||||
| #define     FAXPROFILE_F			2	/* !TIFF/FX FAX profile F */ | ||||
| #define     FAXPROFILE_J			3	/* !TIFF/FX FAX profile J */ | ||||
| #define     FAXPROFILE_C			4	/* !TIFF/FX FAX profile C */ | ||||
| #define     FAXPROFILE_L			5	/* !TIFF/FX FAX profile L */ | ||||
| #define     FAXPROFILE_M			6	/* !TIFF/FX FAX profile LM */ | ||||
| #define TIFFTAG_CODINGMETHODS		403	/* !TIFF/FX coding methods */ | ||||
| #define     CODINGMETHODS_T4_1D		(1 << 1)	/* !T.4 1D */ | ||||
| #define     CODINGMETHODS_T4_2D		(1 << 2)	/* !T.4 2D */ | ||||
| #define     CODINGMETHODS_T6		(1 << 3)	/* !T.6 */ | ||||
| #define     CODINGMETHODS_T85 		(1 << 4)	/* !T.85 JBIG */ | ||||
| #define     CODINGMETHODS_T42 		(1 << 5)	/* !T.42 JPEG */ | ||||
| #define     CODINGMETHODS_T43		(1 << 6)	/* !T.43 colour by layered JBIG */ | ||||
| #define TIFFTAG_VERSIONYEAR			404	/* !TIFF/FX version year */ | ||||
| #define TIFFTAG_MODENUMBER			405	/* !TIFF/FX mode number */ | ||||
| #define TIFFTAG_DECODE				433	/* !TIFF/FX decode */ | ||||
| #define TIFFTAG_IMAGEBASECOLOR		434	/* !TIFF/FX image base colour */ | ||||
| #define TIFFTAG_T82OPTIONS			435	/* !TIFF/FX T.82 options */ | ||||
| /* | ||||
|  * Tags 512-521 are obsoleted by Technical Note #2 which specifies a | ||||
|  * revised JPEG-in-TIFF scheme. | ||||
|  */ | ||||
| #define	TIFFTAG_JPEGPROC		512	/* !JPEG processing algorithm */ | ||||
| #define	    JPEGPROC_BASELINE		1	/* !baseline sequential */ | ||||
| #define	    JPEGPROC_LOSSLESS		14	/* !Huffman coded lossless */ | ||||
| #define	TIFFTAG_JPEGIFOFFSET		513	/* !pointer to SOI marker */ | ||||
| #define	TIFFTAG_JPEGIFBYTECOUNT		514	/* !JFIF stream length */ | ||||
| #define	TIFFTAG_JPEGRESTARTINTERVAL	515	/* !restart interval length */ | ||||
| #define	TIFFTAG_JPEGLOSSLESSPREDICTORS	517	/* !lossless proc predictor */ | ||||
| #define	TIFFTAG_JPEGPOINTTRANSFORM	518	/* !lossless point transform */ | ||||
| #define	TIFFTAG_JPEGQTABLES		519	/* !Q matrix offsets */ | ||||
| #define	TIFFTAG_JPEGDCTABLES		520	/* !DCT table offsets */ | ||||
| #define	TIFFTAG_JPEGACTABLES		521	/* !AC coefficient offsets */ | ||||
| #define	TIFFTAG_YCBCRCOEFFICIENTS	529	/* !RGB -> YCbCr transform */ | ||||
| #define	TIFFTAG_YCBCRSUBSAMPLING	530	/* !YCbCr subsampling factors */ | ||||
| #define	TIFFTAG_YCBCRPOSITIONING	531	/* !subsample positioning */ | ||||
| #define	    YCBCRPOSITION_CENTERED	1	/* !as in PostScript Level 2 */ | ||||
| #define	    YCBCRPOSITION_COSITED	2	/* !as in CCIR 601-1 */ | ||||
| #define	TIFFTAG_REFERENCEBLACKWHITE	532	/* !colorimetry info */ | ||||
| #define TIFFTAG_STRIPROWCOUNTS		559 /* !TIFF/FX strip row counts */ | ||||
| #define	TIFFTAG_XMLPACKET		700	/* %XML packet | ||||
| 						   [Adobe XMP Specification, | ||||
| 						   January 2004 */ | ||||
| #define TIFFTAG_OPIIMAGEID		32781	/* %OPI ImageID | ||||
| 						   [Adobe TIFF technote] */ | ||||
| /* tags 32952-32956 are private tags registered to Island Graphics */ | ||||
| #define TIFFTAG_REFPTS			32953	/* image reference points */ | ||||
| #define TIFFTAG_REGIONTACKPOINT		32954	/* region-xform tack point */ | ||||
| #define TIFFTAG_REGIONWARPCORNERS	32955	/* warp quadrilateral */ | ||||
| #define TIFFTAG_REGIONAFFINE		32956	/* affine transformation mat */ | ||||
| /* tags 32995-32999 are private tags registered to SGI */ | ||||
| #define	TIFFTAG_MATTEING		32995	/* $use ExtraSamples */ | ||||
| #define	TIFFTAG_DATATYPE		32996	/* $use SampleFormat */ | ||||
| #define	TIFFTAG_IMAGEDEPTH		32997	/* z depth of image */ | ||||
| #define	TIFFTAG_TILEDEPTH		32998	/* z depth/data tile */ | ||||
| /* tags 33300-33309 are private tags registered to Pixar */ | ||||
| /* | ||||
|  * TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH | ||||
|  * are set when an image has been cropped out of a larger image.   | ||||
|  * They reflect the size of the original uncropped image. | ||||
|  * The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used | ||||
|  * to determine the position of the smaller image in the larger one. | ||||
|  */ | ||||
| #define TIFFTAG_PIXAR_IMAGEFULLWIDTH    33300   /* full image size in x */ | ||||
| #define TIFFTAG_PIXAR_IMAGEFULLLENGTH   33301   /* full image size in y */ | ||||
|  /* Tags 33302-33306 are used to identify special image modes and data | ||||
|   * used by Pixar's texture formats. | ||||
|   */ | ||||
| #define TIFFTAG_PIXAR_TEXTUREFORMAT	33302	/* texture map format */ | ||||
| #define TIFFTAG_PIXAR_WRAPMODES		33303	/* s & t wrap modes */ | ||||
| #define TIFFTAG_PIXAR_FOVCOT		33304	/* cotan(fov) for env. maps */ | ||||
| #define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305 | ||||
| #define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306 | ||||
| /* tag 33405 is a private tag registered to Eastman Kodak */ | ||||
| #define TIFFTAG_WRITERSERIALNUMBER      33405   /* device serial number */ | ||||
| #define TIFFTAG_CFAREPEATPATTERNDIM	33421	/* dimensions of CFA pattern */ | ||||
| #define TIFFTAG_CFAPATTERN		33422	/* color filter array pattern */ | ||||
| /* tag 33432 is listed in the 6.0 spec w/ unknown ownership */ | ||||
| #define	TIFFTAG_COPYRIGHT		33432	/* copyright string */ | ||||
| /* IPTC TAG from RichTIFF specifications */ | ||||
| #define TIFFTAG_RICHTIFFIPTC		33723 | ||||
| /* 34016-34029 are reserved for ANSI IT8 TIFF/IT <dkelly@apago.com) */ | ||||
| #define TIFFTAG_IT8SITE			34016	/* site name */ | ||||
| #define TIFFTAG_IT8COLORSEQUENCE	34017	/* color seq. [RGB,CMYK,etc] */ | ||||
| #define TIFFTAG_IT8HEADER		34018	/* DDES Header */ | ||||
| #define TIFFTAG_IT8RASTERPADDING	34019	/* raster scanline padding */ | ||||
| #define TIFFTAG_IT8BITSPERRUNLENGTH	34020	/* # of bits in short run */ | ||||
| #define TIFFTAG_IT8BITSPEREXTENDEDRUNLENGTH 34021/* # of bits in long run */ | ||||
| #define TIFFTAG_IT8COLORTABLE		34022	/* LW colortable */ | ||||
| #define TIFFTAG_IT8IMAGECOLORINDICATOR	34023	/* BP/BL image color switch */ | ||||
| #define TIFFTAG_IT8BKGCOLORINDICATOR	34024	/* BP/BL bg color switch */ | ||||
| #define TIFFTAG_IT8IMAGECOLORVALUE	34025	/* BP/BL image color value */ | ||||
| #define TIFFTAG_IT8BKGCOLORVALUE	34026	/* BP/BL bg color value */ | ||||
| #define TIFFTAG_IT8PIXELINTENSITYRANGE	34027	/* MP pixel intensity value */ | ||||
| #define TIFFTAG_IT8TRANSPARENCYINDICATOR 34028	/* HC transparency switch */ | ||||
| #define TIFFTAG_IT8COLORCHARACTERIZATION 34029	/* color character. table */ | ||||
| #define TIFFTAG_IT8HCUSAGE		34030	/* HC usage indicator */ | ||||
| #define TIFFTAG_IT8TRAPINDICATOR	34031	/* Trapping indicator | ||||
| 						   (untrapped=0, trapped=1) */ | ||||
| #define TIFFTAG_IT8CMYKEQUIVALENT	34032	/* CMYK color equivalents */ | ||||
| /* tags 34232-34236 are private tags registered to Texas Instruments */ | ||||
| #define TIFFTAG_FRAMECOUNT              34232   /* Sequence Frame Count */ | ||||
| /* tag 34377 is private tag registered to Adobe for PhotoShop */ | ||||
| #define TIFFTAG_PHOTOSHOP		34377  | ||||
| /* tags 34665, 34853 and 40965 are documented in EXIF specification */ | ||||
| #define TIFFTAG_EXIFIFD			34665	/* Pointer to EXIF private directory */ | ||||
| /* tag 34750 is a private tag registered to Adobe? */ | ||||
| #define TIFFTAG_ICCPROFILE		34675	/* ICC profile data */ | ||||
| #define TIFFTAG_IMAGELAYER		34732	/* !TIFF/FX image layer information */ | ||||
| /* tag 34750 is a private tag registered to Pixel Magic */ | ||||
| #define	TIFFTAG_JBIGOPTIONS		34750	/* JBIG options */ | ||||
| #define TIFFTAG_GPSIFD			34853	/* Pointer to GPS private directory */ | ||||
| /* tags 34908-34914 are private tags registered to SGI */ | ||||
| #define	TIFFTAG_FAXRECVPARAMS		34908	/* encoded Class 2 ses. parms */ | ||||
| #define	TIFFTAG_FAXSUBADDRESS		34909	/* received SubAddr string */ | ||||
| #define	TIFFTAG_FAXRECVTIME		34910	/* receive time (secs) */ | ||||
| #define	TIFFTAG_FAXDCS			34911	/* encoded fax ses. params, Table 2/T.30 */ | ||||
| /* tags 37439-37443 are registered to SGI <gregl@sgi.com> */ | ||||
| #define TIFFTAG_STONITS			37439	/* Sample value to Nits */ | ||||
| /* tag 34929 is a private tag registered to FedEx */ | ||||
| #define	TIFFTAG_FEDEX_EDR		34929	/* unknown use */ | ||||
| #define TIFFTAG_INTEROPERABILITYIFD	40965	/* Pointer to Interoperability private directory */ | ||||
| /* Adobe Digital Negative (DNG) format tags */ | ||||
| #define TIFFTAG_DNGVERSION		50706	/* &DNG version number */ | ||||
| #define TIFFTAG_DNGBACKWARDVERSION	50707	/* &DNG compatibility version */ | ||||
| #define TIFFTAG_UNIQUECAMERAMODEL	50708	/* &name for the camera model */ | ||||
| #define TIFFTAG_LOCALIZEDCAMERAMODEL	50709	/* &localized camera model | ||||
| 						   name */ | ||||
| #define TIFFTAG_CFAPLANECOLOR		50710	/* &CFAPattern->LinearRaw space | ||||
| 						   mapping */ | ||||
| #define TIFFTAG_CFALAYOUT		50711	/* &spatial layout of the CFA */ | ||||
| #define TIFFTAG_LINEARIZATIONTABLE	50712	/* &lookup table description */ | ||||
| #define TIFFTAG_BLACKLEVELREPEATDIM	50713	/* &repeat pattern size for | ||||
| 						   the BlackLevel tag */ | ||||
| #define TIFFTAG_BLACKLEVEL		50714	/* &zero light encoding level */ | ||||
| #define TIFFTAG_BLACKLEVELDELTAH	50715	/* &zero light encoding level | ||||
| 						   differences (columns) */ | ||||
| #define TIFFTAG_BLACKLEVELDELTAV	50716	/* &zero light encoding level | ||||
| 						   differences (rows) */ | ||||
| #define TIFFTAG_WHITELEVEL		50717	/* &fully saturated encoding | ||||
| 						   level */ | ||||
| #define TIFFTAG_DEFAULTSCALE		50718	/* &default scale factors */ | ||||
| #define TIFFTAG_DEFAULTCROPORIGIN	50719	/* &origin of the final image | ||||
| 						   area */ | ||||
| #define TIFFTAG_DEFAULTCROPSIZE		50720	/* &size of the final image  | ||||
| 						   area */ | ||||
| #define TIFFTAG_COLORMATRIX1		50721	/* &XYZ->reference color space | ||||
| 						   transformation matrix 1 */ | ||||
| #define TIFFTAG_COLORMATRIX2		50722	/* &XYZ->reference color space | ||||
| 						   transformation matrix 2 */ | ||||
| #define TIFFTAG_CAMERACALIBRATION1	50723	/* &calibration matrix 1 */ | ||||
| #define TIFFTAG_CAMERACALIBRATION2	50724	/* &calibration matrix 2 */ | ||||
| #define TIFFTAG_REDUCTIONMATRIX1	50725	/* &dimensionality reduction | ||||
| 						   matrix 1 */ | ||||
| #define TIFFTAG_REDUCTIONMATRIX2	50726	/* &dimensionality reduction | ||||
| 						   matrix 2 */ | ||||
| #define TIFFTAG_ANALOGBALANCE		50727	/* &gain applied the stored raw | ||||
| 						   values*/ | ||||
| #define TIFFTAG_ASSHOTNEUTRAL		50728	/* &selected white balance in | ||||
| 						   linear reference space */ | ||||
| #define TIFFTAG_ASSHOTWHITEXY		50729	/* &selected white balance in | ||||
| 						   x-y chromaticity | ||||
| 						   coordinates */ | ||||
| #define TIFFTAG_BASELINEEXPOSURE	50730	/* &how much to move the zero | ||||
| 						   point */ | ||||
| #define TIFFTAG_BASELINENOISE		50731	/* &relative noise level */ | ||||
| #define TIFFTAG_BASELINESHARPNESS	50732	/* &relative amount of | ||||
| 						   sharpening */ | ||||
| #define TIFFTAG_BAYERGREENSPLIT		50733	/* &how closely the values of | ||||
| 						   the green pixels in the | ||||
| 						   blue/green rows track the | ||||
| 						   values of the green pixels | ||||
| 						   in the red/green rows */ | ||||
| #define TIFFTAG_LINEARRESPONSELIMIT	50734	/* &non-linear encoding range */ | ||||
| #define TIFFTAG_CAMERASERIALNUMBER	50735	/* &camera's serial number */ | ||||
| #define TIFFTAG_LENSINFO		50736	/* info about the lens */ | ||||
| #define TIFFTAG_CHROMABLURRADIUS	50737	/* &chroma blur radius */ | ||||
| #define TIFFTAG_ANTIALIASSTRENGTH	50738	/* &relative strength of the | ||||
| 						   camera's anti-alias filter */ | ||||
| #define TIFFTAG_SHADOWSCALE		50739	/* &used by Adobe Camera Raw */ | ||||
| #define TIFFTAG_DNGPRIVATEDATA		50740	/* &manufacturer's private data */ | ||||
| #define TIFFTAG_MAKERNOTESAFETY		50741	/* &whether the EXIF MakerNote | ||||
| 						   tag is safe to preserve | ||||
| 						   along with the rest of the | ||||
| 						   EXIF data */ | ||||
| #define	TIFFTAG_CALIBRATIONILLUMINANT1	50778	/* &illuminant 1 */ | ||||
| #define TIFFTAG_CALIBRATIONILLUMINANT2	50779	/* &illuminant 2 */ | ||||
| #define TIFFTAG_BESTQUALITYSCALE	50780	/* &best quality multiplier */ | ||||
| #define TIFFTAG_RAWDATAUNIQUEID		50781	/* &unique identifier for | ||||
| 						   the raw image data */ | ||||
| #define TIFFTAG_ORIGINALRAWFILENAME	50827	/* &file name of the original | ||||
| 						   raw file */ | ||||
| #define TIFFTAG_ORIGINALRAWFILEDATA	50828	/* &contents of the original | ||||
| 						   raw file */ | ||||
| #define TIFFTAG_ACTIVEAREA		50829	/* &active (non-masked) pixels | ||||
| 						   of the sensor */ | ||||
| #define TIFFTAG_MASKEDAREAS		50830	/* &list of coordinates | ||||
| 						   of fully masked pixels */ | ||||
| #define TIFFTAG_ASSHOTICCPROFILE	50831	/* &these two tags used to */ | ||||
| #define TIFFTAG_ASSHOTPREPROFILEMATRIX	50832	/* map cameras's color space | ||||
| 						   into ICC profile space */ | ||||
| #define TIFFTAG_CURRENTICCPROFILE	50833	/* & */ | ||||
| #define TIFFTAG_CURRENTPREPROFILEMATRIX	50834	/* & */ | ||||
| /* tag 65535 is an undefined tag used by Eastman Kodak */ | ||||
| #define TIFFTAG_DCSHUESHIFTVALUES       65535   /* hue shift correction data */ | ||||
|  | ||||
| /* | ||||
|  * The following are ``pseudo tags'' that can be used to control | ||||
|  * codec-specific functionality.  These tags are not written to file. | ||||
|  * Note that these values start at 0xffff+1 so that they'll never | ||||
|  * collide with Aldus-assigned tags. | ||||
|  * | ||||
|  * If you want your private pseudo tags ``registered'' (i.e. added to | ||||
|  * this file), please post a bug report via the tracking system at | ||||
|  * http://www.remotesensing.org/libtiff/bugs.html with the appropriate | ||||
|  * C definitions to add. | ||||
|  */ | ||||
| #define	TIFFTAG_FAXMODE			65536	/* Group 3/4 format control */ | ||||
| #define	    FAXMODE_CLASSIC	0x0000		/* default, include RTC */ | ||||
| #define	    FAXMODE_NORTC	0x0001		/* no RTC at end of data */ | ||||
| #define	    FAXMODE_NOEOL	0x0002		/* no EOL code at end of row */ | ||||
| #define	    FAXMODE_BYTEALIGN	0x0004		/* byte align row */ | ||||
| #define	    FAXMODE_WORDALIGN	0x0008		/* word align row */ | ||||
| #define	    FAXMODE_CLASSF	FAXMODE_NORTC	/* TIFF Class F */ | ||||
| #define	TIFFTAG_JPEGQUALITY		65537	/* Compression quality level */ | ||||
| /* Note: quality level is on the IJG 0-100 scale.  Default value is 75 */ | ||||
| #define	TIFFTAG_JPEGCOLORMODE		65538	/* Auto RGB<=>YCbCr convert? */ | ||||
| #define	    JPEGCOLORMODE_RAW	0x0000		/* no conversion (default) */ | ||||
| #define	    JPEGCOLORMODE_RGB	0x0001		/* do auto conversion */ | ||||
| #define	TIFFTAG_JPEGTABLESMODE		65539	/* What to put in JPEGTables */ | ||||
| #define	    JPEGTABLESMODE_QUANT 0x0001		/* include quantization tbls */ | ||||
| #define	    JPEGTABLESMODE_HUFF	0x0002		/* include Huffman tbls */ | ||||
| /* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */ | ||||
| #define	TIFFTAG_FAXFILLFUNC		65540	/* G3/G4 fill function */ | ||||
| #define	TIFFTAG_PIXARLOGDATAFMT		65549	/* PixarLogCodec I/O data sz */ | ||||
| #define	    PIXARLOGDATAFMT_8BIT	0	/* regular u_char samples */ | ||||
| #define	    PIXARLOGDATAFMT_8BITABGR	1	/* ABGR-order u_chars */ | ||||
| #define	    PIXARLOGDATAFMT_11BITLOG	2	/* 11-bit log-encoded (raw) */ | ||||
| #define	    PIXARLOGDATAFMT_12BITPICIO	3	/* as per PICIO (1.0==2048) */ | ||||
| #define	    PIXARLOGDATAFMT_16BIT	4	/* signed short samples */ | ||||
| #define	    PIXARLOGDATAFMT_FLOAT	5	/* IEEE float samples */ | ||||
| /* 65550-65556 are allocated to Oceana Matrix <dev@oceana.com> */ | ||||
| #define TIFFTAG_DCSIMAGERTYPE           65550   /* imager model & filter */ | ||||
| #define     DCSIMAGERMODEL_M3           0       /* M3 chip (1280 x 1024) */ | ||||
| #define     DCSIMAGERMODEL_M5           1       /* M5 chip (1536 x 1024) */ | ||||
| #define     DCSIMAGERMODEL_M6           2       /* M6 chip (3072 x 2048) */ | ||||
| #define     DCSIMAGERFILTER_IR          0       /* infrared filter */ | ||||
| #define     DCSIMAGERFILTER_MONO        1       /* monochrome filter */ | ||||
| #define     DCSIMAGERFILTER_CFA         2       /* color filter array */ | ||||
| #define     DCSIMAGERFILTER_OTHER       3       /* other filter */ | ||||
| #define TIFFTAG_DCSINTERPMODE           65551   /* interpolation mode */ | ||||
| #define     DCSINTERPMODE_NORMAL        0x0     /* whole image, default */ | ||||
| #define     DCSINTERPMODE_PREVIEW       0x1     /* preview of image (384x256) */ | ||||
| #define TIFFTAG_DCSBALANCEARRAY         65552   /* color balance values */ | ||||
| #define TIFFTAG_DCSCORRECTMATRIX        65553   /* color correction values */ | ||||
| #define TIFFTAG_DCSGAMMA                65554   /* gamma value */ | ||||
| #define TIFFTAG_DCSTOESHOULDERPTS       65555   /* toe & shoulder points */ | ||||
| #define TIFFTAG_DCSCALIBRATIONFD        65556   /* calibration file desc */ | ||||
| /* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */ | ||||
| #define	TIFFTAG_ZIPQUALITY		65557	/* compression quality level */ | ||||
| #define	TIFFTAG_PIXARLOGQUALITY		65558	/* PixarLog uses same scale */ | ||||
| /* 65559 is allocated to Oceana Matrix <dev@oceana.com> */ | ||||
| #define TIFFTAG_DCSCLIPRECTANGLE	65559	/* area of image to acquire */ | ||||
| #define TIFFTAG_SGILOGDATAFMT		65560	/* SGILog user data format */ | ||||
| #define     SGILOGDATAFMT_FLOAT		0	/* IEEE float samples */ | ||||
| #define     SGILOGDATAFMT_16BIT		1	/* 16-bit samples */ | ||||
| #define     SGILOGDATAFMT_RAW		2	/* uninterpreted data */ | ||||
| #define     SGILOGDATAFMT_8BIT		3	/* 8-bit RGB monitor values */ | ||||
| #define TIFFTAG_SGILOGENCODE		65561 /* SGILog data encoding control*/ | ||||
| #define     SGILOGENCODE_NODITHER	0     /* do not dither encoded values*/ | ||||
| #define     SGILOGENCODE_RANDITHER	1     /* randomly dither encd values */ | ||||
| #define	TIFFTAG_LZMAPRESET		65562	/* LZMA2 preset (compression level) */ | ||||
| #define TIFFTAG_PERSAMPLE       65563	/* interface for per sample tags */ | ||||
| #define     PERSAMPLE_MERGED        0	/* present as a single value */ | ||||
| #define     PERSAMPLE_MULTI         1	/* present as multiple values */ | ||||
|  | ||||
| /* | ||||
|  * EXIF tags | ||||
|  */ | ||||
| #define EXIFTAG_EXPOSURETIME		33434	/* Exposure time */ | ||||
| #define EXIFTAG_FNUMBER			33437	/* F number */ | ||||
| #define EXIFTAG_EXPOSUREPROGRAM		34850	/* Exposure program */ | ||||
| #define EXIFTAG_SPECTRALSENSITIVITY	34852	/* Spectral sensitivity */ | ||||
| #define EXIFTAG_ISOSPEEDRATINGS		34855	/* ISO speed rating */ | ||||
| #define EXIFTAG_OECF			34856	/* Optoelectric conversion | ||||
| 						   factor */ | ||||
| #define EXIFTAG_EXIFVERSION		36864	/* Exif version */ | ||||
| #define EXIFTAG_DATETIMEORIGINAL	36867	/* Date and time of original | ||||
| 						   data generation */ | ||||
| #define EXIFTAG_DATETIMEDIGITIZED	36868	/* Date and time of digital | ||||
| 						   data generation */ | ||||
| #define EXIFTAG_COMPONENTSCONFIGURATION	37121	/* Meaning of each component */ | ||||
| #define EXIFTAG_COMPRESSEDBITSPERPIXEL	37122	/* Image compression mode */ | ||||
| #define EXIFTAG_SHUTTERSPEEDVALUE	37377	/* Shutter speed */ | ||||
| #define EXIFTAG_APERTUREVALUE		37378	/* Aperture */ | ||||
| #define EXIFTAG_BRIGHTNESSVALUE		37379	/* Brightness */ | ||||
| #define EXIFTAG_EXPOSUREBIASVALUE	37380	/* Exposure bias */ | ||||
| #define EXIFTAG_MAXAPERTUREVALUE	37381	/* Maximum lens aperture */ | ||||
| #define EXIFTAG_SUBJECTDISTANCE		37382	/* Subject distance */ | ||||
| #define EXIFTAG_METERINGMODE		37383	/* Metering mode */ | ||||
| #define EXIFTAG_LIGHTSOURCE		37384	/* Light source */ | ||||
| #define EXIFTAG_FLASH			37385	/* Flash */ | ||||
| #define EXIFTAG_FOCALLENGTH		37386	/* Lens focal length */ | ||||
| #define EXIFTAG_SUBJECTAREA		37396	/* Subject area */ | ||||
| #define EXIFTAG_MAKERNOTE		37500	/* Manufacturer notes */ | ||||
| #define EXIFTAG_USERCOMMENT		37510	/* User comments */ | ||||
| #define EXIFTAG_SUBSECTIME		37520	/* DateTime subseconds */ | ||||
| #define EXIFTAG_SUBSECTIMEORIGINAL	37521	/* DateTimeOriginal subseconds */ | ||||
| #define EXIFTAG_SUBSECTIMEDIGITIZED	37522	/* DateTimeDigitized subseconds */ | ||||
| #define EXIFTAG_FLASHPIXVERSION		40960	/* Supported Flashpix version */ | ||||
| #define EXIFTAG_COLORSPACE		40961	/* Color space information */ | ||||
| #define EXIFTAG_PIXELXDIMENSION		40962	/* Valid image width */ | ||||
| #define EXIFTAG_PIXELYDIMENSION		40963	/* Valid image height */ | ||||
| #define EXIFTAG_RELATEDSOUNDFILE	40964	/* Related audio file */ | ||||
| #define EXIFTAG_FLASHENERGY		41483	/* Flash energy */ | ||||
| #define EXIFTAG_SPATIALFREQUENCYRESPONSE 41484	/* Spatial frequency response */ | ||||
| #define EXIFTAG_FOCALPLANEXRESOLUTION	41486	/* Focal plane X resolution */ | ||||
| #define EXIFTAG_FOCALPLANEYRESOLUTION	41487	/* Focal plane Y resolution */ | ||||
| #define EXIFTAG_FOCALPLANERESOLUTIONUNIT 41488	/* Focal plane resolution unit */ | ||||
| #define EXIFTAG_SUBJECTLOCATION		41492	/* Subject location */ | ||||
| #define EXIFTAG_EXPOSUREINDEX		41493	/* Exposure index */ | ||||
| #define EXIFTAG_SENSINGMETHOD		41495	/* Sensing method */ | ||||
| #define EXIFTAG_FILESOURCE		41728	/* File source */ | ||||
| #define EXIFTAG_SCENETYPE		41729	/* Scene type */ | ||||
| #define EXIFTAG_CFAPATTERN		41730	/* CFA pattern */ | ||||
| #define EXIFTAG_CUSTOMRENDERED		41985	/* Custom image processing */ | ||||
| #define EXIFTAG_EXPOSUREMODE		41986	/* Exposure mode */ | ||||
| #define EXIFTAG_WHITEBALANCE		41987	/* White balance */ | ||||
| #define EXIFTAG_DIGITALZOOMRATIO	41988	/* Digital zoom ratio */ | ||||
| #define EXIFTAG_FOCALLENGTHIN35MMFILM	41989	/* Focal length in 35 mm film */ | ||||
| #define EXIFTAG_SCENECAPTURETYPE	41990	/* Scene capture type */ | ||||
| #define EXIFTAG_GAINCONTROL		41991	/* Gain control */ | ||||
| #define EXIFTAG_CONTRAST		41992	/* Contrast */ | ||||
| #define EXIFTAG_SATURATION		41993	/* Saturation */ | ||||
| #define EXIFTAG_SHARPNESS		41994	/* Sharpness */ | ||||
| #define EXIFTAG_DEVICESETTINGDESCRIPTION 41995	/* Device settings description */ | ||||
| #define EXIFTAG_SUBJECTDISTANCERANGE	41996	/* Subject distance range */ | ||||
| #define EXIFTAG_GAINCONTROL		41991	/* Gain control */ | ||||
| #define EXIFTAG_GAINCONTROL		41991	/* Gain control */ | ||||
| #define EXIFTAG_IMAGEUNIQUEID		42016	/* Unique image ID */ | ||||
|  | ||||
| #endif /* _TIFF_ */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										130
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.h.cmake.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.h.cmake.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,130 @@ | ||||
| /* | ||||
|   Configuration defines for installed libtiff. | ||||
|   This file maintained for backward compatibility. Do not use definitions | ||||
|   from this file in your programs. | ||||
| */ | ||||
|  | ||||
| #ifndef _TIFFCONF_ | ||||
| #define _TIFFCONF_ | ||||
|  | ||||
| /* Signed 16-bit type */ | ||||
| #define TIFF_INT16_T @TIFF_INT16_T@ | ||||
|  | ||||
| /* Signed 32-bit type */ | ||||
| #define TIFF_INT32_T @TIFF_INT32_T@ | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #define TIFF_INT64_T @TIFF_INT64_T@ | ||||
|  | ||||
| /* Signed 8-bit type */ | ||||
| #define TIFF_INT8_T @TIFF_INT8_T@ | ||||
|  | ||||
| /* Unsigned 16-bit type */ | ||||
| #define TIFF_UINT16_T @TIFF_UINT16_T@ | ||||
|  | ||||
| /* Unsigned 32-bit type */ | ||||
| #define TIFF_UINT32_T @TIFF_UINT32_T@ | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #define TIFF_UINT64_T @TIFF_UINT64_T@ | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #define TIFF_UINT8_T @TIFF_UINT8_T@ | ||||
|  | ||||
| /* Unsigned size type */ | ||||
| #define TIFF_SIZE_T @TIFF_SIZE_T@ | ||||
|  | ||||
| /* Signed size type */ | ||||
| #define TIFF_SSIZE_T @TIFF_SSIZE_T@ | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #define TIFF_PTRDIFF_T @TIFF_PTRDIFF_T@ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| #cmakedefine HAVE_INT16 1 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| #cmakedefine HAVE_INT32 1 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| #cmakedefine HAVE_INT8 1 | ||||
|  | ||||
| /* Compatibility stuff. */ | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #cmakedefine HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #define HOST_FILLORDER @HOST_FILLORDER@ | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #define HOST_BIGENDIAN @HOST_BIG_ENDIAN@ | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #cmakedefine CCITT_SUPPORT 1 | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| #cmakedefine JPEG_SUPPORT 1 | ||||
|  | ||||
| /* Support JBIG compression (requires JBIG-KIT library) */ | ||||
| #cmakedefine JBIG_SUPPORT | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #cmakedefine LOGLUV_SUPPORT 1 | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #cmakedefine LZW_SUPPORT 1 | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #cmakedefine NEXT_SUPPORT 1 | ||||
|  | ||||
| /* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation | ||||
|    fails with unpatched IJG JPEG library) */ | ||||
| #cmakedefine OJPEG_SUPPORT 1 | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #cmakedefine PACKBITS_SUPPORT 1 | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| #cmakedefine PIXARLOG_SUPPORT 1 | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #cmakedefine THUNDER_SUPPORT 1 | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| #cmakedefine ZIP_SUPPORT 1 | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of ~8Kb to reduce memory usage) */ | ||||
| #cmakedefine STRIPCHOP_DEFAULT 1 | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #cmakedefine SUBIFD_SUPPORT 1 | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #cmakedefine DEFAULT_EXTRASAMPLE_AS_ALPHA 1 | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #cmakedefine CHECK_JPEG_YCBCR_SUBSAMPLING 1 | ||||
|  | ||||
| /* Support MS MDI magic number files as TIFF */ | ||||
| #cmakedefine MDI_SUPPORT 1 | ||||
|  | ||||
| /* | ||||
|  * Feature support definitions. | ||||
|  * XXX: These macros are obsoleted. Don't use them in your apps! | ||||
|  * Macros stays here for backward compatibility and should be always defined. | ||||
|  */ | ||||
| #define COLORIMETRY_SUPPORT | ||||
| #define YCBCR_SUPPORT | ||||
| #define CMYK_SUPPORT | ||||
| #define ICC_SUPPORT | ||||
| #define PHOTOSHOP_SUPPORT | ||||
| #define IPTC_SUPPORT | ||||
|  | ||||
| #endif /* _TIFFCONF_ */ | ||||
							
								
								
									
										127
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.h.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.h.in
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,127 @@ | ||||
| /* | ||||
|   Configuration defines for installed libtiff. | ||||
|   This file maintained for backward compatibility. Do not use definitions | ||||
|   from this file in your programs. | ||||
| */ | ||||
|  | ||||
| #ifndef _TIFFCONF_ | ||||
| #define _TIFFCONF_ | ||||
|  | ||||
| /* Signed 16-bit type */ | ||||
| #undef TIFF_INT16_T | ||||
|  | ||||
| /* Signed 32-bit type */ | ||||
| #undef TIFF_INT32_T | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #undef TIFF_INT64_T | ||||
|  | ||||
| /* Signed 8-bit type */ | ||||
| #undef TIFF_INT8_T | ||||
|  | ||||
| /* Unsigned 16-bit type */ | ||||
| #undef TIFF_UINT16_T | ||||
|  | ||||
| /* Unsigned 32-bit type */ | ||||
| #undef TIFF_UINT32_T | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #undef TIFF_UINT64_T | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #undef TIFF_UINT8_T | ||||
|  | ||||
| /* Signed size type */ | ||||
| #undef TIFF_SSIZE_T | ||||
|  | ||||
| /* Pointer difference type */ | ||||
| #undef TIFF_PTRDIFF_T | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| #undef HAVE_INT16 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| #undef HAVE_INT32 | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| #undef HAVE_INT8 | ||||
|  | ||||
| /* Compatibility stuff. */ | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #undef HAVE_IEEEFP | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #undef HOST_FILLORDER | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #undef HOST_BIGENDIAN | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #undef CCITT_SUPPORT | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| #undef JPEG_SUPPORT | ||||
|  | ||||
| /* Support JBIG compression (requires JBIG-KIT library) */ | ||||
| #undef JBIG_SUPPORT | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #undef LOGLUV_SUPPORT | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #undef LZW_SUPPORT | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #undef NEXT_SUPPORT | ||||
|  | ||||
| /* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation | ||||
|    fails with unpatched IJG JPEG library) */ | ||||
| #undef OJPEG_SUPPORT | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #undef PACKBITS_SUPPORT | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| #undef PIXARLOG_SUPPORT | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #undef THUNDER_SUPPORT | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| #undef ZIP_SUPPORT | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of ~8Kb to reduce memory usage) */ | ||||
| #undef STRIPCHOP_DEFAULT | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #undef SUBIFD_SUPPORT | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #undef DEFAULT_EXTRASAMPLE_AS_ALPHA | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #undef CHECK_JPEG_YCBCR_SUBSAMPLING | ||||
|  | ||||
| /* Support MS MDI magic number files as TIFF */ | ||||
| #undef MDI_SUPPORT | ||||
|  | ||||
| /* | ||||
|  * Feature support definitions. | ||||
|  * XXX: These macros are obsoleted. Don't use them in your apps! | ||||
|  * Macros stays here for backward compatibility and should be always defined. | ||||
|  */ | ||||
| #define COLORIMETRY_SUPPORT | ||||
| #define YCBCR_SUPPORT | ||||
| #define CMYK_SUPPORT | ||||
| #define ICC_SUPPORT | ||||
| #define PHOTOSHOP_SUPPORT | ||||
| #define IPTC_SUPPORT | ||||
|  | ||||
| #endif /* _TIFFCONF_ */ | ||||
							
								
								
									
										161
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.vc.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.vc.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,161 @@ | ||||
| /* | ||||
|   Configuration defines for installed libtiff. | ||||
|   This file maintained for backward compatibility. Do not use definitions | ||||
|   from this file in your programs. | ||||
| */ | ||||
|  | ||||
| #ifndef _TIFFCONF_ | ||||
| #define _TIFFCONF_ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| /* #undef HAVE_INT16 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| /* #undef HAVE_INT32 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| /* #undef HAVE_INT8 */ | ||||
|  | ||||
| /* The size of a `int', as computed by sizeof. */ | ||||
| #define SIZEOF_INT 4 | ||||
|  | ||||
| /* Signed 8-bit type */ | ||||
| #define TIFF_INT8_T signed char | ||||
|  | ||||
| /* Unsigned 8-bit type */ | ||||
| #define TIFF_UINT8_T unsigned char | ||||
|  | ||||
| /* Signed 16-bit type */ | ||||
| #define TIFF_INT16_T signed short | ||||
|  | ||||
| /* Unsigned 16-bit type */ | ||||
| #define TIFF_UINT16_T unsigned short | ||||
|  | ||||
| /* Signed 32-bit type formatter */ | ||||
| #define TIFF_INT32_FORMAT "%d" | ||||
|  | ||||
| /* Signed 32-bit type */ | ||||
| #define TIFF_INT32_T signed int | ||||
|  | ||||
| /* Unsigned 32-bit type formatter */ | ||||
| #define TIFF_UINT32_FORMAT "%u" | ||||
|  | ||||
| /* Unsigned 32-bit type */ | ||||
| #define TIFF_UINT32_T unsigned int | ||||
|  | ||||
| /* Signed 64-bit type formatter */ | ||||
| #define TIFF_INT64_FORMAT "%I64d" | ||||
|  | ||||
| /* Signed 64-bit type */ | ||||
| #define TIFF_INT64_T signed __int64 | ||||
|  | ||||
| /* Unsigned 64-bit type formatter */ | ||||
| #define TIFF_UINT64_FORMAT "%I64u" | ||||
|  | ||||
| /* Unsigned 64-bit type */ | ||||
| #define TIFF_UINT64_T unsigned __int64 | ||||
|  | ||||
| #if _WIN64 | ||||
| /* | ||||
|   Windows 64-bit build | ||||
| */ | ||||
|  | ||||
| /* Signed size type */ | ||||
| #  define TIFF_SSIZE_T TIFF_INT64_T | ||||
|  | ||||
| #else | ||||
| /* | ||||
|   Windows 32-bit build | ||||
| */ | ||||
|  | ||||
| /* Signed size type */ | ||||
| #  define TIFF_SSIZE_T signed int | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /* Compatibility stuff. */ | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #define HOST_BIGENDIAN 0 | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #define CCITT_SUPPORT 1 | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| /* #undef JPEG_SUPPORT */ | ||||
|  | ||||
| /* Support JBIG compression (requires JBIG-KIT library) */ | ||||
| /* #undef JBIG_SUPPORT */ | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #define LOGLUV_SUPPORT 1 | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #define LZW_SUPPORT 1 | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #define NEXT_SUPPORT 1 | ||||
|  | ||||
| /* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation | ||||
|    fails with unpatched IJG JPEG library) */ | ||||
| /* #undef OJPEG_SUPPORT */ | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #define PACKBITS_SUPPORT 1 | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| /* #undef PIXARLOG_SUPPORT */ | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #define THUNDER_SUPPORT 1 | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| /* #undef ZIP_SUPPORT */ | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of ~8Kb to reduce memory usage) */ | ||||
| #define STRIPCHOP_DEFAULT TIFF_STRIPCHOP | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #define SUBIFD_SUPPORT 1 | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #define CHECK_JPEG_YCBCR_SUBSAMPLING 1 | ||||
|  | ||||
| /* Support MS MDI magic number files as TIFF */ | ||||
| /* #undef MDI_SUPPORT */ | ||||
|  | ||||
| /* | ||||
|  * Feature support definitions. | ||||
|  * XXX: These macros are obsoleted. Don't use them in your apps! | ||||
|  * Macros stays here for backward compatibility and should be always defined. | ||||
|  */ | ||||
| #define COLORIMETRY_SUPPORT | ||||
| #define YCBCR_SUPPORT | ||||
| #define CMYK_SUPPORT | ||||
| #define ICC_SUPPORT | ||||
| #define PHOTOSHOP_SUPPORT | ||||
| #define IPTC_SUPPORT | ||||
|  | ||||
| #endif /* _TIFFCONF_ */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										121
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.wince.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffconf.wince.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,121 @@ | ||||
| /* $Id: tiffconf.wince.h,v 1.3 2010-03-10 18:56:49 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Windows CE platform tiffconf.wince.h | ||||
|  * Created by Mateusz Loskot (mateusz@loskot.net) | ||||
|  * | ||||
|  * NOTE: Requires WCELIBCEX library with wceex_* functions, | ||||
|  * It's an extension to C library on Windows CE platform. | ||||
|  * For example, HAVE_STDIO_H definition indicates there are | ||||
|  * following files available: | ||||
|  * stdio.h - from Windows CE / Windows Mobile SDK  | ||||
|  * wce_stdio.h - from WCELIBCEX library | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /* | ||||
|   Configuration defines for installed libtiff. | ||||
|   This file maintained for backward compatibility. Do not use definitions | ||||
|   from this file in your programs. | ||||
| */ | ||||
|  | ||||
| #ifndef _WIN32_WCE | ||||
| # error This version of tif_config.h header is dedicated for Windows CE platform! | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #ifndef _TIFFCONF_ | ||||
| #define _TIFFCONF_ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int16'. */ | ||||
| /* #undef HAVE_INT16 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int32'. */ | ||||
| /* #undef HAVE_INT32 */ | ||||
|  | ||||
| /* Define to 1 if the system has the type `int8'. */ | ||||
| /* #undef HAVE_INT8 */ | ||||
|  | ||||
| /* The size of a `int', as computed by sizeof. */ | ||||
| #define SIZEOF_INT 4 | ||||
|  | ||||
| /* Compatibility stuff. */ | ||||
|  | ||||
| /* Define as 0 or 1 according to the floating point format suported by the | ||||
|    machine */ | ||||
| #define HAVE_IEEEFP 1 | ||||
|  | ||||
| /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ | ||||
| #define HOST_FILLORDER FILLORDER_LSB2MSB | ||||
|  | ||||
| /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian | ||||
|    (Intel) */ | ||||
| #define HOST_BIGENDIAN 0 | ||||
|  | ||||
| /* Support CCITT Group 3 & 4 algorithms */ | ||||
| #define CCITT_SUPPORT 1 | ||||
|  | ||||
| /* Support JPEG compression (requires IJG JPEG library) */ | ||||
| /* #undef JPEG_SUPPORT */ | ||||
|  | ||||
| /* Support LogLuv high dynamic range encoding */ | ||||
| #define LOGLUV_SUPPORT 1 | ||||
|  | ||||
| /* Support LZW algorithm */ | ||||
| #define LZW_SUPPORT 1 | ||||
|  | ||||
| /* Support NeXT 2-bit RLE algorithm */ | ||||
| #define NEXT_SUPPORT 1 | ||||
|  | ||||
| /* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation | ||||
|    fails with unpatched IJG JPEG library) */ | ||||
| /* #undef OJPEG_SUPPORT */ | ||||
|  | ||||
| /* Support Macintosh PackBits algorithm */ | ||||
| #define PACKBITS_SUPPORT 1 | ||||
|  | ||||
| /* Support Pixar log-format algorithm (requires Zlib) */ | ||||
| /* #undef PIXARLOG_SUPPORT */ | ||||
|  | ||||
| /* Support ThunderScan 4-bit RLE algorithm */ | ||||
| #define THUNDER_SUPPORT 1 | ||||
|  | ||||
| /* Support Deflate compression */ | ||||
| /* #undef ZIP_SUPPORT */ | ||||
|  | ||||
| /* Support strip chopping (whether or not to convert single-strip uncompressed | ||||
|    images to mutiple strips of ~8Kb to reduce memory usage) */ | ||||
| #define STRIPCHOP_DEFAULT TIFF_STRIPCHOP | ||||
|  | ||||
| /* Enable SubIFD tag (330) support */ | ||||
| #define SUBIFD_SUPPORT 1 | ||||
|  | ||||
| /* Treat extra sample as alpha (default enabled). The RGBA interface will | ||||
|    treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many | ||||
|    packages produce RGBA files but don't mark the alpha properly. */ | ||||
| #define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 | ||||
|  | ||||
| /* Pick up YCbCr subsampling info from the JPEG data stream to support files | ||||
|    lacking the tag (default enabled). */ | ||||
| #define CHECK_JPEG_YCBCR_SUBSAMPLING 1 | ||||
|  | ||||
| /* | ||||
|  * Feature support definitions. | ||||
|  * XXX: These macros are obsoleted. Don't use them in your apps! | ||||
|  * Macros stays here for backward compatibility and should be always defined. | ||||
|  */ | ||||
| #define COLORIMETRY_SUPPORT | ||||
| #define YCBCR_SUPPORT | ||||
| #define CMYK_SUPPORT | ||||
| #define ICC_SUPPORT | ||||
| #define PHOTOSHOP_SUPPORT | ||||
| #define IPTC_SUPPORT | ||||
|  | ||||
| #endif /* _TIFFCONF_ */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										560
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffio.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										560
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffio.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,560 @@ | ||||
| /* $Id: tiffio.h,v 1.94 2017-01-11 19:02:49 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
|  * | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _TIFFIO_ | ||||
| #define	_TIFFIO_ | ||||
|  | ||||
| /* | ||||
|  * TIFF I/O Library Definitions. | ||||
|  */ | ||||
| #include "tiff.h" | ||||
| #include "tiffvers.h" | ||||
|  | ||||
| /* | ||||
|  * TIFF is defined as an incomplete type to hide the | ||||
|  * library's internal data structures from clients. | ||||
|  */ | ||||
| typedef struct tiff TIFF; | ||||
|  | ||||
| /* | ||||
|  * The following typedefs define the intrinsic size of | ||||
|  * data types used in the *exported* interfaces.  These | ||||
|  * definitions depend on the proper definition of types | ||||
|  * in tiff.h.  Note also that the varargs interface used | ||||
|  * to pass tag types and values uses the types defined in | ||||
|  * tiff.h directly. | ||||
|  * | ||||
|  * NB: ttag_t is unsigned int and not unsigned short because | ||||
|  *     ANSI C requires that the type before the ellipsis be a | ||||
|  *     promoted type (i.e. one of int, unsigned int, pointer, | ||||
|  *     or double) and because we defined pseudo-tags that are | ||||
|  *     outside the range of legal Aldus-assigned tags. | ||||
|  * NB: tsize_t is int32 and not uint32 because some functions | ||||
|  *     return -1. | ||||
|  * NB: toff_t is not off_t for many reasons; TIFFs max out at | ||||
|  *     32-bit file offsets, and BigTIFF maxes out at 64-bit | ||||
|  *     offsets being the most important, and to ensure use of | ||||
|  *     a consistently unsigned type across architectures. | ||||
|  *     Prior to libtiff 4.0, this was an unsigned 32 bit type. | ||||
|  */ | ||||
| /* | ||||
|  * this is the machine addressing size type, only it's signed, so make it | ||||
|  * int32 on 32bit machines, int64 on 64bit machines | ||||
|  */ | ||||
| typedef TIFF_SSIZE_T tmsize_t; | ||||
| typedef uint64 toff_t;          /* file offset */ | ||||
| /* the following are deprecated and should be replaced by their defining | ||||
|    counterparts */ | ||||
| typedef uint32 ttag_t;          /* directory tag */ | ||||
| typedef uint16 tdir_t;          /* directory index */ | ||||
| typedef uint16 tsample_t;       /* sample number */ | ||||
| typedef uint32 tstrile_t;       /* strip or tile number */ | ||||
| typedef tstrile_t tstrip_t;     /* strip number */ | ||||
| typedef tstrile_t ttile_t;      /* tile number */ | ||||
| typedef tmsize_t tsize_t;       /* i/o size in bytes */ | ||||
| typedef void* tdata_t;          /* image data ref */ | ||||
|  | ||||
| #if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32)) | ||||
| #define __WIN32__ | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c | ||||
|  * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c). | ||||
|  * | ||||
|  * By default tif_unix.c is assumed. | ||||
|  */ | ||||
|  | ||||
| #if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) | ||||
| #  if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO) | ||||
| #    define AVOID_WIN32_FILEIO | ||||
| #  endif | ||||
| #endif | ||||
|  | ||||
| #if defined(USE_WIN32_FILEIO) | ||||
| # define VC_EXTRALEAN | ||||
| # include <windows.h> | ||||
| # ifdef __WIN32__ | ||||
| DECLARE_HANDLE(thandle_t);     /* Win32 file handle */ | ||||
| # else | ||||
| typedef HFILE thandle_t;       /* client data handle */ | ||||
| # endif /* __WIN32__ */ | ||||
| #else | ||||
| typedef void* thandle_t;       /* client data handle */ | ||||
| #endif /* USE_WIN32_FILEIO */ | ||||
|  | ||||
| /* | ||||
|  * Flags to pass to TIFFPrintDirectory to control | ||||
|  * printing of data structures that are potentially | ||||
|  * very large.   Bit-or these flags to enable printing | ||||
|  * multiple items. | ||||
|  */ | ||||
| #define TIFFPRINT_NONE	       0x0    /* no extra info */ | ||||
| #define TIFFPRINT_STRIPS       0x1    /* strips/tiles info */ | ||||
| #define TIFFPRINT_CURVES       0x2    /* color/gray response curves */ | ||||
| #define TIFFPRINT_COLORMAP     0x4    /* colormap */ | ||||
| #define TIFFPRINT_JPEGQTABLES  0x100  /* JPEG Q matrices */ | ||||
| #define TIFFPRINT_JPEGACTABLES 0x200  /* JPEG AC tables */ | ||||
| #define TIFFPRINT_JPEGDCTABLES 0x200  /* JPEG DC tables */ | ||||
|  | ||||
| /*  | ||||
|  * Colour conversion stuff | ||||
|  */ | ||||
|  | ||||
| /* reference white */ | ||||
| #define D65_X0 (95.0470F) | ||||
| #define D65_Y0 (100.0F) | ||||
| #define D65_Z0 (108.8827F) | ||||
|  | ||||
| #define D50_X0 (96.4250F) | ||||
| #define D50_Y0 (100.0F) | ||||
| #define D50_Z0 (82.4680F) | ||||
|  | ||||
| /* Structure for holding information about a display device. */ | ||||
|  | ||||
| typedef unsigned char TIFFRGBValue;               /* 8-bit samples */ | ||||
|  | ||||
| typedef struct { | ||||
| 	float d_mat[3][3];                        /* XYZ -> luminance matrix */ | ||||
| 	float d_YCR;                              /* Light o/p for reference white */ | ||||
| 	float d_YCG; | ||||
| 	float d_YCB; | ||||
| 	uint32 d_Vrwr;                            /* Pixel values for ref. white */ | ||||
| 	uint32 d_Vrwg; | ||||
| 	uint32 d_Vrwb; | ||||
| 	float d_Y0R;                              /* Residual light for black pixel */ | ||||
| 	float d_Y0G; | ||||
| 	float d_Y0B; | ||||
| 	float d_gammaR;                           /* Gamma values for the three guns */ | ||||
| 	float d_gammaG; | ||||
| 	float d_gammaB; | ||||
| } TIFFDisplay; | ||||
|  | ||||
| typedef struct {                                  /* YCbCr->RGB support */ | ||||
| 	TIFFRGBValue* clamptab;                   /* range clamping table */ | ||||
| 	int* Cr_r_tab; | ||||
| 	int* Cb_b_tab; | ||||
| 	int32* Cr_g_tab; | ||||
| 	int32* Cb_g_tab; | ||||
| 	int32* Y_tab; | ||||
| } TIFFYCbCrToRGB; | ||||
|  | ||||
| typedef struct {                                  /* CIE Lab 1976->RGB support */ | ||||
| 	int range;                                /* Size of conversion table */ | ||||
| #define CIELABTORGB_TABLE_RANGE 1500 | ||||
| 	float rstep, gstep, bstep; | ||||
| 	float X0, Y0, Z0;                         /* Reference white point */ | ||||
| 	TIFFDisplay display; | ||||
| 	float Yr2r[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yr to r */ | ||||
| 	float Yg2g[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yg to g */ | ||||
| 	float Yb2b[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yb to b */ | ||||
| } TIFFCIELabToRGB; | ||||
|  | ||||
| /* | ||||
|  * RGBA-style image support. | ||||
|  */ | ||||
| typedef struct _TIFFRGBAImage TIFFRGBAImage; | ||||
| /* | ||||
|  * The image reading and conversion routines invoke | ||||
|  * ``put routines'' to copy/image/whatever tiles of | ||||
|  * raw image data.  A default set of routines are  | ||||
|  * provided to convert/copy raw image data to 8-bit | ||||
|  * packed ABGR format rasters.  Applications can supply | ||||
|  * alternate routines that unpack the data into a | ||||
|  * different format or, for example, unpack the data | ||||
|  * and draw the unpacked raster on the display. | ||||
|  */ | ||||
| typedef void (*tileContigRoutine) | ||||
|     (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32, | ||||
| 	unsigned char*); | ||||
| typedef void (*tileSeparateRoutine) | ||||
|     (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32, | ||||
| 	unsigned char*, unsigned char*, unsigned char*, unsigned char*); | ||||
| /* | ||||
|  * RGBA-reader state. | ||||
|  */ | ||||
| struct _TIFFRGBAImage { | ||||
| 	TIFF* tif;                              /* image handle */ | ||||
| 	int stoponerr;                          /* stop on read error */ | ||||
| 	int isContig;                           /* data is packed/separate */ | ||||
| 	int alpha;                              /* type of alpha data present */ | ||||
| 	uint32 width;                           /* image width */ | ||||
| 	uint32 height;                          /* image height */ | ||||
| 	uint16 bitspersample;                   /* image bits/sample */ | ||||
| 	uint16 samplesperpixel;                 /* image samples/pixel */ | ||||
| 	uint16 orientation;                     /* image orientation */ | ||||
| 	uint16 req_orientation;                 /* requested orientation */ | ||||
| 	uint16 photometric;                     /* image photometric interp */ | ||||
| 	uint16* redcmap;                        /* colormap palette */ | ||||
| 	uint16* greencmap; | ||||
| 	uint16* bluecmap; | ||||
| 	/* get image data routine */ | ||||
| 	int (*get)(TIFFRGBAImage*, uint32*, uint32, uint32); | ||||
| 	/* put decoded strip/tile */ | ||||
| 	union { | ||||
| 	    void (*any)(TIFFRGBAImage*); | ||||
| 	    tileContigRoutine contig; | ||||
| 	    tileSeparateRoutine separate; | ||||
| 	} put; | ||||
| 	TIFFRGBValue* Map;                      /* sample mapping array */ | ||||
| 	uint32** BWmap;                         /* black&white map */ | ||||
| 	uint32** PALmap;                        /* palette image map */ | ||||
| 	TIFFYCbCrToRGB* ycbcr;                  /* YCbCr conversion state */ | ||||
| 	TIFFCIELabToRGB* cielab;                /* CIE L*a*b conversion state */ | ||||
|  | ||||
| 	uint8* UaToAa;                          /* Unassociated alpha to associated alpha conversion LUT */ | ||||
| 	uint8* Bitdepth16To8;                   /* LUT for conversion from 16bit to 8bit values */ | ||||
|  | ||||
| 	int row_offset; | ||||
| 	int col_offset; | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Macros for extracting components from the | ||||
|  * packed ABGR form returned by TIFFReadRGBAImage. | ||||
|  */ | ||||
| #define TIFFGetR(abgr) ((abgr) & 0xff) | ||||
| #define TIFFGetG(abgr) (((abgr) >> 8) & 0xff) | ||||
| #define TIFFGetB(abgr) (((abgr) >> 16) & 0xff) | ||||
| #define TIFFGetA(abgr) (((abgr) >> 24) & 0xff) | ||||
|  | ||||
| /* | ||||
|  * A CODEC is a software package that implements decoding, | ||||
|  * encoding, or decoding+encoding of a compression algorithm. | ||||
|  * The library provides a collection of builtin codecs. | ||||
|  * More codecs may be registered through calls to the library | ||||
|  * and/or the builtin implementations may be overridden. | ||||
|  */ | ||||
| typedef int (*TIFFInitMethod)(TIFF*, int); | ||||
| typedef struct { | ||||
| 	char* name; | ||||
| 	uint16 scheme; | ||||
| 	TIFFInitMethod init; | ||||
| } TIFFCodec; | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdarg.h> | ||||
|  | ||||
| /* share internal LogLuv conversion routines? */ | ||||
| #ifndef LOGLUV_PUBLIC | ||||
| #define LOGLUV_PUBLIC 1 | ||||
| #endif | ||||
|  | ||||
| #if !defined(__GNUC__) && !defined(__attribute__) | ||||
| #  define __attribute__(x) /*nothing*/ | ||||
| #endif | ||||
|  | ||||
| #if defined(c_plusplus) || defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
| typedef void (*TIFFErrorHandler)(const char*, const char*, va_list); | ||||
| typedef void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list); | ||||
| typedef tmsize_t (*TIFFReadWriteProc)(thandle_t, void*, tmsize_t); | ||||
| typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int); | ||||
| typedef int (*TIFFCloseProc)(thandle_t); | ||||
| typedef toff_t (*TIFFSizeProc)(thandle_t); | ||||
| typedef int (*TIFFMapFileProc)(thandle_t, void** base, toff_t* size); | ||||
| typedef void (*TIFFUnmapFileProc)(thandle_t, void* base, toff_t size); | ||||
| typedef void (*TIFFExtendProc)(TIFF*); | ||||
|  | ||||
| extern const char* TIFFGetVersion(void); | ||||
|  | ||||
| extern const TIFFCodec* TIFFFindCODEC(uint16); | ||||
| extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod); | ||||
| extern void TIFFUnRegisterCODEC(TIFFCodec*); | ||||
| extern int TIFFIsCODECConfigured(uint16); | ||||
| extern TIFFCodec* TIFFGetConfiguredCODECs(void); | ||||
|  | ||||
| /* | ||||
|  * Auxiliary functions. | ||||
|  */ | ||||
|  | ||||
| extern void* _TIFFmalloc(tmsize_t s); | ||||
| extern void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz); | ||||
| extern void* _TIFFrealloc(void* p, tmsize_t s); | ||||
| extern void _TIFFmemset(void* p, int v, tmsize_t c); | ||||
| extern void _TIFFmemcpy(void* d, const void* s, tmsize_t c); | ||||
| extern int _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c); | ||||
| extern void _TIFFfree(void* p); | ||||
|  | ||||
| /* | ||||
| ** Stuff, related to tag handling and creating custom tags. | ||||
| */ | ||||
| extern int TIFFGetTagListCount( TIFF * ); | ||||
| extern uint32 TIFFGetTagListEntry( TIFF *, int tag_index ); | ||||
|      | ||||
| #define TIFF_ANY       TIFF_NOTYPE     /* for field descriptor searching */ | ||||
| #define TIFF_VARIABLE  -1              /* marker for variable length tags */ | ||||
| #define TIFF_SPP       -2              /* marker for SamplesPerPixel tags */ | ||||
| #define TIFF_VARIABLE2 -3              /* marker for uint32 var-length tags */ | ||||
|  | ||||
| #define FIELD_CUSTOM    65 | ||||
|  | ||||
| typedef struct _TIFFField TIFFField; | ||||
| typedef struct _TIFFFieldArray TIFFFieldArray; | ||||
|  | ||||
| extern const TIFFField* TIFFFindField(TIFF *, uint32, TIFFDataType); | ||||
| extern const TIFFField* TIFFFieldWithTag(TIFF*, uint32); | ||||
| extern const TIFFField* TIFFFieldWithName(TIFF*, const char *); | ||||
|  | ||||
| extern uint32 TIFFFieldTag(const TIFFField*); | ||||
| extern const char* TIFFFieldName(const TIFFField*); | ||||
| extern TIFFDataType TIFFFieldDataType(const TIFFField*); | ||||
| extern int TIFFFieldPassCount(const TIFFField*); | ||||
| extern int TIFFFieldReadCount(const TIFFField*); | ||||
| extern int TIFFFieldWriteCount(const TIFFField*); | ||||
|  | ||||
| typedef int (*TIFFVSetMethod)(TIFF*, uint32, va_list); | ||||
| typedef int (*TIFFVGetMethod)(TIFF*, uint32, va_list); | ||||
| typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long); | ||||
|  | ||||
| typedef struct { | ||||
|     TIFFVSetMethod vsetfield; /* tag set routine */ | ||||
|     TIFFVGetMethod vgetfield; /* tag get routine */ | ||||
|     TIFFPrintMethod printdir; /* directory print routine */ | ||||
| } TIFFTagMethods; | ||||
|  | ||||
| extern  TIFFTagMethods *TIFFAccessTagMethods(TIFF *); | ||||
| extern  void *TIFFGetClientInfo(TIFF *, const char *); | ||||
| extern  void TIFFSetClientInfo(TIFF *, void *, const char *); | ||||
|  | ||||
| extern void TIFFCleanup(TIFF* tif); | ||||
| extern void TIFFClose(TIFF* tif); | ||||
| extern int TIFFFlush(TIFF* tif); | ||||
| extern int TIFFFlushData(TIFF* tif); | ||||
| extern int TIFFGetField(TIFF* tif, uint32 tag, ...); | ||||
| extern int TIFFVGetField(TIFF* tif, uint32 tag, va_list ap); | ||||
| extern int TIFFGetFieldDefaulted(TIFF* tif, uint32 tag, ...); | ||||
| extern int TIFFVGetFieldDefaulted(TIFF* tif, uint32 tag, va_list ap); | ||||
| extern int TIFFReadDirectory(TIFF* tif); | ||||
| extern int TIFFReadCustomDirectory(TIFF* tif, toff_t diroff, const TIFFFieldArray* infoarray); | ||||
| extern int TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff); | ||||
| extern uint64 TIFFScanlineSize64(TIFF* tif); | ||||
| extern tmsize_t TIFFScanlineSize(TIFF* tif); | ||||
| extern uint64 TIFFRasterScanlineSize64(TIFF* tif); | ||||
| extern tmsize_t TIFFRasterScanlineSize(TIFF* tif); | ||||
| extern uint64 TIFFStripSize64(TIFF* tif); | ||||
| extern tmsize_t TIFFStripSize(TIFF* tif); | ||||
| extern uint64 TIFFRawStripSize64(TIFF* tif, uint32 strip); | ||||
| extern tmsize_t TIFFRawStripSize(TIFF* tif, uint32 strip); | ||||
| extern uint64 TIFFVStripSize64(TIFF* tif, uint32 nrows); | ||||
| extern tmsize_t TIFFVStripSize(TIFF* tif, uint32 nrows); | ||||
| extern uint64 TIFFTileRowSize64(TIFF* tif); | ||||
| extern tmsize_t TIFFTileRowSize(TIFF* tif); | ||||
| extern uint64 TIFFTileSize64(TIFF* tif); | ||||
| extern tmsize_t TIFFTileSize(TIFF* tif); | ||||
| extern uint64 TIFFVTileSize64(TIFF* tif, uint32 nrows); | ||||
| extern tmsize_t TIFFVTileSize(TIFF* tif, uint32 nrows); | ||||
| extern uint32 TIFFDefaultStripSize(TIFF* tif, uint32 request); | ||||
| extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*); | ||||
| extern int TIFFFileno(TIFF*); | ||||
| extern int TIFFSetFileno(TIFF*, int); | ||||
| extern thandle_t TIFFClientdata(TIFF*); | ||||
| extern thandle_t TIFFSetClientdata(TIFF*, thandle_t); | ||||
| extern int TIFFGetMode(TIFF*); | ||||
| extern int TIFFSetMode(TIFF*, int); | ||||
| extern int TIFFIsTiled(TIFF*); | ||||
| extern int TIFFIsByteSwapped(TIFF*); | ||||
| extern int TIFFIsUpSampled(TIFF*); | ||||
| extern int TIFFIsMSB2LSB(TIFF*); | ||||
| extern int TIFFIsBigEndian(TIFF*); | ||||
| extern TIFFReadWriteProc TIFFGetReadProc(TIFF*); | ||||
| extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*); | ||||
| extern TIFFSeekProc TIFFGetSeekProc(TIFF*);                                                           | ||||
| extern TIFFCloseProc TIFFGetCloseProc(TIFF*); | ||||
| extern TIFFSizeProc TIFFGetSizeProc(TIFF*); | ||||
| extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*); | ||||
| extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*); | ||||
| extern uint32 TIFFCurrentRow(TIFF*); | ||||
| extern uint16 TIFFCurrentDirectory(TIFF*); | ||||
| extern uint16 TIFFNumberOfDirectories(TIFF*); | ||||
| extern uint64 TIFFCurrentDirOffset(TIFF*); | ||||
| extern uint32 TIFFCurrentStrip(TIFF*); | ||||
| extern uint32 TIFFCurrentTile(TIFF* tif); | ||||
| extern int TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size); | ||||
| extern int TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size);   | ||||
| extern int TIFFSetupStrips(TIFF *); | ||||
| extern int TIFFWriteCheck(TIFF*, int, const char *); | ||||
| extern void TIFFFreeDirectory(TIFF*); | ||||
| extern int TIFFCreateDirectory(TIFF*); | ||||
| extern int TIFFCreateCustomDirectory(TIFF*,const TIFFFieldArray*); | ||||
| extern int TIFFCreateEXIFDirectory(TIFF*); | ||||
| extern int TIFFLastDirectory(TIFF*); | ||||
| extern int TIFFSetDirectory(TIFF*, uint16); | ||||
| extern int TIFFSetSubDirectory(TIFF*, uint64); | ||||
| extern int TIFFUnlinkDirectory(TIFF*, uint16); | ||||
| extern int TIFFSetField(TIFF*, uint32, ...); | ||||
| extern int TIFFVSetField(TIFF*, uint32, va_list); | ||||
| extern int TIFFUnsetField(TIFF*, uint32); | ||||
| extern int TIFFWriteDirectory(TIFF *); | ||||
| extern int TIFFWriteCustomDirectory(TIFF *, uint64 *); | ||||
| extern int TIFFCheckpointDirectory(TIFF *); | ||||
| extern int TIFFRewriteDirectory(TIFF *); | ||||
|  | ||||
| #if defined(c_plusplus) || defined(__cplusplus) | ||||
| extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0); | ||||
| extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0); | ||||
| extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0); | ||||
| extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); | ||||
| extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, | ||||
|     int = ORIENTATION_BOTLEFT, int = 0); | ||||
| #else | ||||
| extern void TIFFPrintDirectory(TIFF*, FILE*, long); | ||||
| extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample); | ||||
| extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample); | ||||
| extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); | ||||
| extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); | ||||
| #endif | ||||
|  | ||||
| extern int TIFFReadRGBAStrip(TIFF*, uint32, uint32 * ); | ||||
| extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); | ||||
| extern int TIFFReadRGBAStripExt(TIFF*, uint32, uint32 *, int stop_on_error ); | ||||
| extern int TIFFReadRGBATileExt(TIFF*, uint32, uint32, uint32 *, int stop_on_error ); | ||||
| extern int TIFFRGBAImageOK(TIFF*, char [1024]); | ||||
| extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]); | ||||
| extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32); | ||||
| extern void TIFFRGBAImageEnd(TIFFRGBAImage*); | ||||
| extern TIFF* TIFFOpen(const char*, const char*); | ||||
| # ifdef __WIN32__ | ||||
| extern TIFF* TIFFOpenW(const wchar_t*, const char*); | ||||
| # endif /* __WIN32__ */ | ||||
| extern TIFF* TIFFFdOpen(int, const char*, const char*); | ||||
| extern TIFF* TIFFClientOpen(const char*, const char*, | ||||
| 	    thandle_t, | ||||
| 	    TIFFReadWriteProc, TIFFReadWriteProc, | ||||
| 	    TIFFSeekProc, TIFFCloseProc, | ||||
| 	    TIFFSizeProc, | ||||
| 	    TIFFMapFileProc, TIFFUnmapFileProc); | ||||
| extern const char* TIFFFileName(TIFF*); | ||||
| extern const char* TIFFSetFileName(TIFF*, const char *); | ||||
| extern void TIFFError(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3))); | ||||
| extern void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4))); | ||||
| extern void TIFFWarning(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3))); | ||||
| extern void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4))); | ||||
| extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler); | ||||
| extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt); | ||||
| extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler); | ||||
| extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt); | ||||
| extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc); | ||||
| extern uint32 TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s); | ||||
| extern int TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s); | ||||
| extern uint32 TIFFNumberOfTiles(TIFF*); | ||||
| extern tmsize_t TIFFReadTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s);   | ||||
| extern tmsize_t TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s); | ||||
| extern uint32 TIFFComputeStrip(TIFF*, uint32, uint16); | ||||
| extern uint32 TIFFNumberOfStrips(TIFF*); | ||||
| extern tmsize_t TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size); | ||||
| extern tmsize_t TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size);   | ||||
| extern tmsize_t TIFFReadEncodedTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size);   | ||||
| extern tmsize_t TIFFReadRawTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size);   | ||||
| extern tmsize_t TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc); | ||||
| extern tmsize_t TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc);   | ||||
| extern tmsize_t TIFFWriteEncodedTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc);   | ||||
| extern tmsize_t TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc);   | ||||
| extern int TIFFDataWidth(TIFFDataType);    /* table of tag datatype widths */ | ||||
| extern void TIFFSetWriteOffset(TIFF* tif, toff_t off); | ||||
| extern void TIFFSwabShort(uint16*); | ||||
| extern void TIFFSwabLong(uint32*); | ||||
| extern void TIFFSwabLong8(uint64*); | ||||
| extern void TIFFSwabFloat(float*); | ||||
| extern void TIFFSwabDouble(double*); | ||||
| extern void TIFFSwabArrayOfShort(uint16* wp, tmsize_t n); | ||||
| extern void TIFFSwabArrayOfTriples(uint8* tp, tmsize_t n); | ||||
| extern void TIFFSwabArrayOfLong(uint32* lp, tmsize_t n); | ||||
| extern void TIFFSwabArrayOfLong8(uint64* lp, tmsize_t n); | ||||
| extern void TIFFSwabArrayOfFloat(float* fp, tmsize_t n); | ||||
| extern void TIFFSwabArrayOfDouble(double* dp, tmsize_t n); | ||||
| extern void TIFFReverseBits(uint8* cp, tmsize_t n); | ||||
| extern const unsigned char* TIFFGetBitRevTable(int); | ||||
|  | ||||
| #ifdef LOGLUV_PUBLIC | ||||
| #define U_NEU		0.210526316 | ||||
| #define V_NEU		0.473684211 | ||||
| #define UVSCALE		410. | ||||
| extern double LogL16toY(int); | ||||
| extern double LogL10toY(int); | ||||
| extern void XYZtoRGB24(float*, uint8*); | ||||
| extern int uv_decode(double*, double*, int); | ||||
| extern void LogLuv24toXYZ(uint32, float*); | ||||
| extern void LogLuv32toXYZ(uint32, float*); | ||||
| #if defined(c_plusplus) || defined(__cplusplus) | ||||
| extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER); | ||||
| extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER); | ||||
| extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER); | ||||
| extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER); | ||||
| extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER); | ||||
| #else | ||||
| extern int LogL16fromY(double, int); | ||||
| extern int LogL10fromY(double, int); | ||||
| extern int uv_encode(double, double, int); | ||||
| extern uint32 LogLuv24fromXYZ(float*, int); | ||||
| extern uint32 LogLuv32fromXYZ(float*, int); | ||||
| #endif | ||||
| #endif /* LOGLUV_PUBLIC */ | ||||
|  | ||||
| extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, const TIFFDisplay *, float*); | ||||
| extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, | ||||
|     float *, float *, float *); | ||||
| extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, | ||||
|     uint32 *, uint32 *, uint32 *); | ||||
|  | ||||
| extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); | ||||
| extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, | ||||
|     uint32 *, uint32 *, uint32 *); | ||||
|  | ||||
| /**************************************************************************** | ||||
|  *               O B S O L E T E D    I N T E R F A C E S | ||||
|  * | ||||
|  * Don't use this stuff in your applications, it may be removed in the future | ||||
|  * libtiff versions. | ||||
|  ****************************************************************************/ | ||||
| typedef	struct { | ||||
| 	ttag_t	field_tag;		/* field's tag */ | ||||
| 	short	field_readcount;	/* read count/TIFF_VARIABLE/TIFF_SPP */ | ||||
| 	short	field_writecount;	/* write count/TIFF_VARIABLE */ | ||||
| 	TIFFDataType field_type;	/* type of associated data */ | ||||
|         unsigned short field_bit;	/* bit in fieldsset bit vector */ | ||||
| 	unsigned char field_oktochange;	/* if true, can change while writing */ | ||||
| 	unsigned char field_passcount;	/* if true, pass dir count on set */ | ||||
| 	char	*field_name;		/* ASCII name */ | ||||
| } TIFFFieldInfo; | ||||
|  | ||||
| extern int TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], uint32); | ||||
|          | ||||
| #if defined(c_plusplus) || defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* _TIFFIO_ */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										49
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffio.hxx
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffio.hxx
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| /* $Id: tiffio.hxx,v 1.3 2010-06-08 18:55:15 bfriesen Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _TIFFIO_HXX_ | ||||
| #define	_TIFFIO_HXX_ | ||||
|  | ||||
| /* | ||||
|  * TIFF I/O library definitions which provide C++ streams API. | ||||
|  */ | ||||
|  | ||||
| #include <iostream> | ||||
| #include "tiff.h" | ||||
|  | ||||
| extern TIFF* TIFFStreamOpen(const char*, std::ostream *); | ||||
| extern TIFF* TIFFStreamOpen(const char*, std::istream *); | ||||
|  | ||||
| #endif /* _TIFFIO_HXX_ */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c++ | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										445
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffiop.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										445
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffiop.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,445 @@ | ||||
| /* $Id: tiffiop.h,v 1.95 2017-09-07 14:02:52 erouault Exp $ */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (c) 1988-1997 Sam Leffler | ||||
|  * Copyright (c) 1991-1997 Silicon Graphics, Inc. | ||||
|  * | ||||
|  * Permission to use, copy, modify, distribute, and sell this software and  | ||||
|  * its documentation for any purpose is hereby granted without fee, provided | ||||
|  * that (i) the above copyright notices and this permission notice appear in | ||||
|  * all copies of the software and related documentation, and (ii) the names of | ||||
|  * Sam Leffler and Silicon Graphics may not be used in any advertising or | ||||
|  * publicity relating to the software without the specific, prior written | ||||
|  * permission of Sam Leffler and Silicon Graphics. | ||||
|  *  | ||||
|  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  | ||||
|  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  | ||||
|  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   | ||||
|  *  | ||||
|  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR | ||||
|  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, | ||||
|  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | ||||
|  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  | ||||
|  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  | ||||
|  * OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _TIFFIOP_ | ||||
| #define	_TIFFIOP_ | ||||
| /* | ||||
|  * ``Library-private'' definitions. | ||||
|  */ | ||||
|  | ||||
| #include "tif_config.h" | ||||
|  | ||||
| #ifdef HAVE_FCNTL_H | ||||
| # include <fcntl.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_SYS_TYPES_H | ||||
| # include <sys/types.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_STRING_H | ||||
| # include <string.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_ASSERT_H | ||||
| # include <assert.h> | ||||
| #else | ||||
| # define assert(x)  | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_SEARCH_H | ||||
| # include <search.h> | ||||
| #else | ||||
| extern void *lfind(const void *, const void *, size_t *, size_t, | ||||
| 		   int (*)(const void *, const void *)); | ||||
| #endif | ||||
|  | ||||
| #if !defined(HAVE_SNPRINTF) && !defined(HAVE__SNPRINTF) | ||||
| #undef snprintf | ||||
| #define snprintf _TIFF_snprintf_f | ||||
| extern int snprintf(char* str, size_t size, const char* format, ...); | ||||
| #endif | ||||
|  | ||||
| #include "tiffio.h" | ||||
|  | ||||
| #include "tif_dir.h" | ||||
|  | ||||
| #ifndef STRIP_SIZE_DEFAULT | ||||
| # define STRIP_SIZE_DEFAULT 8192 | ||||
| #endif | ||||
|  | ||||
| #define    streq(a,b)      (strcmp(a,b) == 0) | ||||
|  | ||||
| #ifndef TRUE | ||||
| #define	TRUE	1 | ||||
| #define	FALSE	0 | ||||
| #endif | ||||
|  | ||||
| typedef struct client_info { | ||||
|     struct client_info *next; | ||||
|     void *data; | ||||
|     char *name; | ||||
| } TIFFClientInfoLink; | ||||
|  | ||||
| /* | ||||
|  * Typedefs for ``method pointers'' used internally. | ||||
|  * these are deprecated and provided only for backwards compatibility. | ||||
|  */ | ||||
| typedef unsigned char tidataval_t;    /* internal image data value type */ | ||||
| typedef tidataval_t* tidata_t;        /* reference to internal image data */ | ||||
|  | ||||
| typedef void (*TIFFVoidMethod)(TIFF*); | ||||
| typedef int (*TIFFBoolMethod)(TIFF*); | ||||
| typedef int (*TIFFPreMethod)(TIFF*, uint16); | ||||
| typedef int (*TIFFCodeMethod)(TIFF* tif, uint8* buf, tmsize_t size, uint16 sample); | ||||
| typedef int (*TIFFSeekMethod)(TIFF*, uint32); | ||||
| typedef void (*TIFFPostMethod)(TIFF* tif, uint8* buf, tmsize_t size); | ||||
| typedef uint32 (*TIFFStripMethod)(TIFF*, uint32); | ||||
| typedef void (*TIFFTileMethod)(TIFF*, uint32*, uint32*); | ||||
|  | ||||
| struct tiff { | ||||
| 	char*                tif_name;         /* name of open file */ | ||||
| 	int                  tif_fd;           /* open file descriptor */ | ||||
| 	int                  tif_mode;         /* open mode (O_*) */ | ||||
| 	uint32               tif_flags; | ||||
| 	#define TIFF_FILLORDER   0x00003U /* natural bit fill order for machine */ | ||||
| 	#define TIFF_DIRTYHEADER 0x00004U /* header must be written on close */ | ||||
| 	#define TIFF_DIRTYDIRECT 0x00008U /* current directory must be written */ | ||||
| 	#define TIFF_BUFFERSETUP 0x00010U /* data buffers setup */ | ||||
| 	#define TIFF_CODERSETUP  0x00020U /* encoder/decoder setup done */ | ||||
| 	#define TIFF_BEENWRITING 0x00040U /* written 1+ scanlines to file */ | ||||
| 	#define TIFF_SWAB        0x00080U /* byte swap file information */ | ||||
| 	#define TIFF_NOBITREV    0x00100U /* inhibit bit reversal logic */ | ||||
| 	#define TIFF_MYBUFFER    0x00200U /* my raw data buffer; free on close */ | ||||
| 	#define TIFF_ISTILED     0x00400U /* file is tile, not strip- based */ | ||||
| 	#define TIFF_MAPPED      0x00800U /* file is mapped into memory */ | ||||
| 	#define TIFF_POSTENCODE  0x01000U /* need call to postencode routine */ | ||||
| 	#define TIFF_INSUBIFD    0x02000U /* currently writing a subifd */ | ||||
| 	#define TIFF_UPSAMPLED   0x04000U /* library is doing data up-sampling */ | ||||
| 	#define TIFF_STRIPCHOP   0x08000U /* enable strip chopping support */ | ||||
| 	#define TIFF_HEADERONLY  0x10000U /* read header only, do not process the first directory */ | ||||
| 	#define TIFF_NOREADRAW   0x20000U /* skip reading of raw uncompressed image data */ | ||||
| 	#define TIFF_INCUSTOMIFD 0x40000U /* currently writing a custom IFD */ | ||||
| 	#define TIFF_BIGTIFF     0x80000U /* read/write bigtiff */ | ||||
|         #define TIFF_BUF4WRITE  0x100000U /* rawcc bytes are for writing */ | ||||
|         #define TIFF_DIRTYSTRIP 0x200000U /* stripoffsets/stripbytecount dirty*/ | ||||
|         #define TIFF_PERSAMPLE  0x400000U /* get/set per sample tags as arrays */ | ||||
|         #define TIFF_BUFFERMMAP 0x800000U /* read buffer (tif_rawdata) points into mmap() memory */ | ||||
| 	uint64               tif_diroff;       /* file offset of current directory */ | ||||
| 	uint64               tif_nextdiroff;   /* file offset of following directory */ | ||||
| 	uint64*              tif_dirlist;      /* list of offsets to already seen directories to prevent IFD looping */ | ||||
| 	uint16               tif_dirlistsize;  /* number of entries in offset list */ | ||||
| 	uint16               tif_dirnumber;    /* number of already seen directories */ | ||||
| 	TIFFDirectory        tif_dir;          /* internal rep of current directory */ | ||||
| 	TIFFDirectory        tif_customdir;    /* custom IFDs are separated from the main ones */ | ||||
| 	union { | ||||
| 		TIFFHeaderCommon common; | ||||
| 		TIFFHeaderClassic classic; | ||||
| 		TIFFHeaderBig big; | ||||
| 	} tif_header; | ||||
| 	uint16               tif_header_size;  /* file's header block and its length */ | ||||
| 	uint32               tif_row;          /* current scanline */ | ||||
| 	uint16               tif_curdir;       /* current directory (index) */ | ||||
| 	uint32               tif_curstrip;     /* current strip for read/write */ | ||||
| 	uint64               tif_curoff;       /* current offset for read/write */ | ||||
| 	uint64               tif_dataoff;      /* current offset for writing dir */ | ||||
| 	/* SubIFD support */ | ||||
| 	uint16               tif_nsubifd;      /* remaining subifds to write */ | ||||
| 	uint64               tif_subifdoff;    /* offset for patching SubIFD link */ | ||||
| 	/* tiling support */ | ||||
| 	uint32               tif_col;          /* current column (offset by row too) */ | ||||
| 	uint32               tif_curtile;      /* current tile for read/write */ | ||||
| 	tmsize_t             tif_tilesize;     /* # of bytes in a tile */ | ||||
| 	/* compression scheme hooks */ | ||||
| 	int                  tif_decodestatus; | ||||
| 	TIFFBoolMethod       tif_fixuptags;    /* called in TIFFReadDirectory */ | ||||
| 	TIFFBoolMethod       tif_setupdecode;  /* called once before predecode */ | ||||
| 	TIFFPreMethod        tif_predecode;    /* pre- row/strip/tile decoding */ | ||||
| 	TIFFBoolMethod       tif_setupencode;  /* called once before preencode */ | ||||
| 	int                  tif_encodestatus; | ||||
| 	TIFFPreMethod        tif_preencode;    /* pre- row/strip/tile encoding */ | ||||
| 	TIFFBoolMethod       tif_postencode;   /* post- row/strip/tile encoding */ | ||||
| 	TIFFCodeMethod       tif_decoderow;    /* scanline decoding routine */ | ||||
| 	TIFFCodeMethod       tif_encoderow;    /* scanline encoding routine */ | ||||
| 	TIFFCodeMethod       tif_decodestrip;  /* strip decoding routine */ | ||||
| 	TIFFCodeMethod       tif_encodestrip;  /* strip encoding routine */ | ||||
| 	TIFFCodeMethod       tif_decodetile;   /* tile decoding routine */ | ||||
| 	TIFFCodeMethod       tif_encodetile;   /* tile encoding routine */ | ||||
| 	TIFFVoidMethod       tif_close;        /* cleanup-on-close routine */ | ||||
| 	TIFFSeekMethod       tif_seek;         /* position within a strip routine */ | ||||
| 	TIFFVoidMethod       tif_cleanup;      /* cleanup state routine */ | ||||
| 	TIFFStripMethod      tif_defstripsize; /* calculate/constrain strip size */ | ||||
| 	TIFFTileMethod       tif_deftilesize;  /* calculate/constrain tile size */ | ||||
| 	uint8*               tif_data;         /* compression scheme private data */ | ||||
| 	/* input/output buffering */ | ||||
| 	tmsize_t             tif_scanlinesize; /* # of bytes in a scanline */ | ||||
| 	tmsize_t             tif_scanlineskew; /* scanline skew for reading strips */ | ||||
| 	uint8*               tif_rawdata;      /* raw data buffer */ | ||||
| 	tmsize_t             tif_rawdatasize;  /* # of bytes in raw data buffer */ | ||||
|         tmsize_t             tif_rawdataoff;   /* rawdata offset within strip */ | ||||
|         tmsize_t             tif_rawdataloaded;/* amount of data in rawdata */ | ||||
| 	uint8*               tif_rawcp;        /* current spot in raw buffer */ | ||||
| 	tmsize_t             tif_rawcc;        /* bytes unread from raw buffer */ | ||||
| 	/* memory-mapped file support */ | ||||
| 	uint8*               tif_base;         /* base of mapped file */ | ||||
| 	tmsize_t             tif_size;         /* size of mapped file region (bytes, thus tmsize_t) */ | ||||
| 	TIFFMapFileProc      tif_mapproc;      /* map file method */ | ||||
| 	TIFFUnmapFileProc    tif_unmapproc;    /* unmap file method */ | ||||
| 	/* input/output callback methods */ | ||||
| 	thandle_t            tif_clientdata;   /* callback parameter */ | ||||
| 	TIFFReadWriteProc    tif_readproc;     /* read method */ | ||||
| 	TIFFReadWriteProc    tif_writeproc;    /* write method */ | ||||
| 	TIFFSeekProc         tif_seekproc;     /* lseek method */ | ||||
| 	TIFFCloseProc        tif_closeproc;    /* close method */ | ||||
| 	TIFFSizeProc         tif_sizeproc;     /* filesize method */ | ||||
| 	/* post-decoding support */ | ||||
| 	TIFFPostMethod       tif_postdecode;   /* post decoding routine */ | ||||
| 	/* tag support */ | ||||
| 	TIFFField**          tif_fields;       /* sorted table of registered tags */ | ||||
| 	size_t               tif_nfields;      /* # entries in registered tag table */ | ||||
| 	const TIFFField*     tif_foundfield;   /* cached pointer to already found tag */ | ||||
| 	TIFFTagMethods       tif_tagmethods;   /* tag get/set/print routines */ | ||||
| 	TIFFClientInfoLink*  tif_clientinfo;   /* extra client information. */ | ||||
| 	/* Backward compatibility stuff. We need these two fields for | ||||
| 	 * setting up an old tag extension scheme. */ | ||||
| 	TIFFFieldArray*      tif_fieldscompat; | ||||
| 	size_t               tif_nfieldscompat; | ||||
| }; | ||||
|  | ||||
| #define isPseudoTag(t) (t > 0xffff)            /* is tag value normal or pseudo */ | ||||
|  | ||||
| #define isTiled(tif) (((tif)->tif_flags & TIFF_ISTILED) != 0) | ||||
| #define isMapped(tif) (((tif)->tif_flags & TIFF_MAPPED) != 0) | ||||
| #define isFillOrder(tif, o) (((tif)->tif_flags & (o)) != 0) | ||||
| #define isUpSampled(tif) (((tif)->tif_flags & TIFF_UPSAMPLED) != 0) | ||||
| #define TIFFReadFile(tif, buf, size) \ | ||||
| 	((*(tif)->tif_readproc)((tif)->tif_clientdata,(buf),(size))) | ||||
| #define TIFFWriteFile(tif, buf, size) \ | ||||
| 	((*(tif)->tif_writeproc)((tif)->tif_clientdata,(buf),(size))) | ||||
| #define TIFFSeekFile(tif, off, whence) \ | ||||
| 	((*(tif)->tif_seekproc)((tif)->tif_clientdata,(off),(whence))) | ||||
| #define TIFFCloseFile(tif) \ | ||||
| 	((*(tif)->tif_closeproc)((tif)->tif_clientdata)) | ||||
| #define TIFFGetFileSize(tif) \ | ||||
| 	((*(tif)->tif_sizeproc)((tif)->tif_clientdata)) | ||||
| #define TIFFMapFileContents(tif, paddr, psize) \ | ||||
| 	((*(tif)->tif_mapproc)((tif)->tif_clientdata,(paddr),(psize))) | ||||
| #define TIFFUnmapFileContents(tif, addr, size) \ | ||||
| 	((*(tif)->tif_unmapproc)((tif)->tif_clientdata,(addr),(size))) | ||||
|  | ||||
| /* | ||||
|  * Default Read/Seek/Write definitions. | ||||
|  */ | ||||
| #ifndef ReadOK | ||||
| #define ReadOK(tif, buf, size) \ | ||||
| 	(TIFFReadFile((tif),(buf),(size))==(size)) | ||||
| #endif | ||||
| #ifndef SeekOK | ||||
| #define SeekOK(tif, off) _TIFFSeekOK(tif, off) | ||||
| #endif | ||||
| #ifndef WriteOK | ||||
| #define WriteOK(tif, buf, size) \ | ||||
| 	(TIFFWriteFile((tif),(buf),(size))==(size)) | ||||
| #endif | ||||
|  | ||||
| /* NB: the uint32 casts are to silence certain ANSI-C compilers */ | ||||
| #define TIFFhowmany_32(x, y) (((uint32)x < (0xffffffff - (uint32)(y-1))) ? \ | ||||
| 			   ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y))) : \ | ||||
| 			   0U) | ||||
| /* Variant of TIFFhowmany_32() that doesn't return 0 if x close to MAXUINT. */ | ||||
| /* Caution: TIFFhowmany_32_maxuint_compat(x,y)*y might overflow */ | ||||
| #define TIFFhowmany_32_maxuint_compat(x, y) \ | ||||
| 			   (((uint32)(x) / (uint32)(y)) + ((((uint32)(x) % (uint32)(y)) != 0) ? 1 : 0)) | ||||
| #define TIFFhowmany8_32(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3) | ||||
| #define TIFFroundup_32(x, y) (TIFFhowmany_32(x,y)*(y)) | ||||
| #define TIFFhowmany_64(x, y) ((((uint64)(x))+(((uint64)(y))-1))/((uint64)(y))) | ||||
| #define TIFFhowmany8_64(x) (((x)&0x07)?((uint64)(x)>>3)+1:(uint64)(x)>>3) | ||||
| #define TIFFroundup_64(x, y) (TIFFhowmany_64(x,y)*(y)) | ||||
|  | ||||
| /* Safe multiply which returns zero if there is an integer overflow */ | ||||
| #define TIFFSafeMultiply(t,v,m) ((((t)(m) != (t)0) && (((t)(((v)*(m))/(m))) == (t)(v))) ? (t)((v)*(m)) : (t)0) | ||||
|  | ||||
| #define TIFFmax(A,B) ((A)>(B)?(A):(B)) | ||||
| #define TIFFmin(A,B) ((A)<(B)?(A):(B)) | ||||
|  | ||||
| #define TIFFArrayCount(a) (sizeof (a) / sizeof ((a)[0])) | ||||
|  | ||||
| /* | ||||
|   Support for large files. | ||||
|  | ||||
|   Windows read/write APIs support only 'unsigned int' rather than 'size_t'. | ||||
|   Windows off_t is only 32-bit, even in 64-bit builds. | ||||
| */ | ||||
| #if defined(HAVE_FSEEKO) | ||||
| /* | ||||
|   Use fseeko() and ftello() if they are available since they use | ||||
|   'off_t' rather than 'long'.  It is wrong to use fseeko() and | ||||
|   ftello() only on systems with special LFS support since some systems | ||||
|   (e.g. FreeBSD) support a 64-bit off_t by default. | ||||
|  | ||||
|   For MinGW, __MSVCRT_VERSION__ must be at least 0x800 to expose these | ||||
|   interfaces. The MinGW compiler must support the requested version.  MinGW | ||||
|   does not distribute the CRT (it is supplied by Microsoft) so the correct CRT | ||||
|   must be available on the target computer in order for the program to run. | ||||
| */ | ||||
| #if defined(HAVE_FSEEKO) | ||||
| #  define fseek(stream,offset,whence)  fseeko(stream,offset,whence) | ||||
| #  define ftell(stream,offset,whence)  ftello(stream,offset,whence) | ||||
| #endif | ||||
| #endif | ||||
| #if defined(__WIN32__) && \ | ||||
|         !(defined(_MSC_VER) && _MSC_VER < 1400) && \ | ||||
|         !(defined(__MSVCRT_VERSION__) && __MSVCRT_VERSION__ < 0x800) | ||||
| typedef unsigned int TIFFIOSize_t; | ||||
| #define _TIFF_lseek_f(fildes,offset,whence)  _lseeki64(fildes,/* __int64 */ offset,whence) | ||||
| /* #define _TIFF_tell_f(fildes) /\* __int64 *\/ _telli64(fildes) */ | ||||
| #define _TIFF_fseek_f(stream,offset,whence) _fseeki64(stream,/* __int64 */ offset,whence) | ||||
| #define _TIFF_fstat_f(fildes,stat_buff) _fstati64(fildes,/* struct _stati64 */ stat_buff) | ||||
| /* #define _TIFF_ftell_f(stream) /\* __int64 *\/ _ftelli64(stream) */ | ||||
| /* #define _TIFF_stat_f(path,stat_buff) _stati64(path,/\* struct _stati64 *\/ stat_buff) */ | ||||
| #define _TIFF_stat_s struct _stati64 | ||||
| #define _TIFF_off_t __int64 | ||||
| #else | ||||
| typedef size_t TIFFIOSize_t; | ||||
| #define _TIFF_lseek_f(fildes,offset,whence) lseek(fildes,offset,whence) | ||||
| /* #define _TIFF_tell_f(fildes) (_TIFF_lseek_f(fildes,0,SEEK_CUR)) */ | ||||
| #define _TIFF_fseek_f(stream,offset,whence) fseek(stream,offset,whence) | ||||
| #define _TIFF_fstat_f(fildes,stat_buff) fstat(fildes,stat_buff) | ||||
| /* #define _TIFF_ftell_f(stream) ftell(stream) */ | ||||
| /* #define _TIFF_stat_f(path,stat_buff) stat(path,stat_buff) */ | ||||
| #define _TIFF_stat_s struct stat | ||||
| #define _TIFF_off_t off_t | ||||
| #endif | ||||
|  | ||||
| #if __clang_major__ >= 4 || (__clang_major__ == 3 && __clang_minor__ >= 8) | ||||
| #define TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW __attribute__((no_sanitize("unsigned-integer-overflow"))) | ||||
| #else | ||||
| #define TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
| extern int _TIFFgetMode(const char* mode, const char* module); | ||||
| extern int _TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s); | ||||
| extern int _TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s); | ||||
| extern int _TIFFNoTileEncode(TIFF*, uint8* pp, tmsize_t cc, uint16 s); | ||||
| extern int _TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s); | ||||
| extern int _TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s); | ||||
| extern int _TIFFNoTileDecode(TIFF*, uint8* pp, tmsize_t cc, uint16 s); | ||||
| extern void _TIFFNoPostDecode(TIFF* tif, uint8* buf, tmsize_t cc); | ||||
| extern int _TIFFNoPreCode(TIFF* tif, uint16 s); | ||||
| extern int _TIFFNoSeek(TIFF* tif, uint32 off); | ||||
| extern void _TIFFSwab16BitData(TIFF* tif, uint8* buf, tmsize_t cc); | ||||
| extern void _TIFFSwab24BitData(TIFF* tif, uint8* buf, tmsize_t cc); | ||||
| extern void _TIFFSwab32BitData(TIFF* tif, uint8* buf, tmsize_t cc); | ||||
| extern void _TIFFSwab64BitData(TIFF* tif, uint8* buf, tmsize_t cc); | ||||
| extern int TIFFFlushData1(TIFF* tif); | ||||
| extern int TIFFDefaultDirectory(TIFF* tif); | ||||
| extern void _TIFFSetDefaultCompressionState(TIFF* tif); | ||||
| extern int _TIFFRewriteField(TIFF *, uint16, TIFFDataType, tmsize_t, void *); | ||||
| extern int TIFFSetCompressionScheme(TIFF* tif, int scheme); | ||||
| extern int TIFFSetDefaultCompressionState(TIFF* tif); | ||||
| extern uint32 _TIFFDefaultStripSize(TIFF* tif, uint32 s); | ||||
| extern void _TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th); | ||||
| extern int _TIFFDataSize(TIFFDataType type); | ||||
|  | ||||
| extern void _TIFFsetByteArray(void**, void*, uint32); | ||||
| extern void _TIFFsetString(char**, char*); | ||||
| extern void _TIFFsetShortArray(uint16**, uint16*, uint32); | ||||
| extern void _TIFFsetLongArray(uint32**, uint32*, uint32); | ||||
| extern void _TIFFsetFloatArray(float**, float*, uint32); | ||||
| extern void _TIFFsetDoubleArray(double**, double*, uint32); | ||||
|  | ||||
| extern void _TIFFprintAscii(FILE*, const char*); | ||||
| extern void _TIFFprintAsciiTag(FILE*, const char*, const char*); | ||||
|  | ||||
| extern TIFFErrorHandler _TIFFwarningHandler; | ||||
| extern TIFFErrorHandler _TIFFerrorHandler; | ||||
| extern TIFFErrorHandlerExt _TIFFwarningHandlerExt; | ||||
| extern TIFFErrorHandlerExt _TIFFerrorHandlerExt; | ||||
|  | ||||
| extern uint32 _TIFFMultiply32(TIFF*, uint32, uint32, const char*); | ||||
| extern uint64 _TIFFMultiply64(TIFF*, uint64, uint64, const char*); | ||||
| extern void* _TIFFCheckMalloc(TIFF*, tmsize_t, tmsize_t, const char*); | ||||
| extern void* _TIFFCheckRealloc(TIFF*, void*, tmsize_t, tmsize_t, const char*); | ||||
|  | ||||
| extern double _TIFFUInt64ToDouble(uint64); | ||||
| extern float _TIFFUInt64ToFloat(uint64); | ||||
|  | ||||
| extern tmsize_t | ||||
| _TIFFReadEncodedStripAndAllocBuffer(TIFF* tif, uint32 strip, | ||||
|                                     void **buf, tmsize_t bufsizetoalloc, | ||||
|                                     tmsize_t size_to_read); | ||||
| extern tmsize_t | ||||
| _TIFFReadEncodedTileAndAllocBuffer(TIFF* tif, uint32 tile, | ||||
|                                     void **buf, tmsize_t bufsizetoalloc, | ||||
|                                     tmsize_t size_to_read); | ||||
| extern tmsize_t | ||||
| _TIFFReadTileAndAllocBuffer(TIFF* tif, | ||||
|                             void **buf, tmsize_t bufsizetoalloc, | ||||
|                             uint32 x, uint32 y, uint32 z, uint16 s); | ||||
| extern int _TIFFSeekOK(TIFF* tif, toff_t off); | ||||
|  | ||||
| extern int TIFFInitDumpMode(TIFF*, int); | ||||
| #ifdef PACKBITS_SUPPORT | ||||
| extern int TIFFInitPackBits(TIFF*, int); | ||||
| #endif | ||||
| #ifdef CCITT_SUPPORT | ||||
| extern int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int); | ||||
| extern int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int); | ||||
| #endif | ||||
| #ifdef THUNDER_SUPPORT | ||||
| extern int TIFFInitThunderScan(TIFF*, int); | ||||
| #endif | ||||
| #ifdef NEXT_SUPPORT | ||||
| extern int TIFFInitNeXT(TIFF*, int); | ||||
| #endif | ||||
| #ifdef LZW_SUPPORT | ||||
| extern int TIFFInitLZW(TIFF*, int); | ||||
| #endif | ||||
| #ifdef OJPEG_SUPPORT | ||||
| extern int TIFFInitOJPEG(TIFF*, int); | ||||
| #endif | ||||
| #ifdef JPEG_SUPPORT | ||||
| extern int TIFFInitJPEG(TIFF*, int); | ||||
| extern int TIFFJPEGIsFullStripRequired(TIFF*); | ||||
| #endif | ||||
| #ifdef JBIG_SUPPORT | ||||
| extern int TIFFInitJBIG(TIFF*, int); | ||||
| #endif | ||||
| #ifdef ZIP_SUPPORT | ||||
| extern int TIFFInitZIP(TIFF*, int); | ||||
| #endif | ||||
| #ifdef PIXARLOG_SUPPORT | ||||
| extern int TIFFInitPixarLog(TIFF*, int); | ||||
| #endif | ||||
| #ifdef LOGLUV_SUPPORT | ||||
| extern int TIFFInitSGILog(TIFF*, int); | ||||
| #endif | ||||
| #ifdef LZMA_SUPPORT | ||||
| extern int TIFFInitLZMA(TIFF*, int); | ||||
| #endif | ||||
| #ifdef VMS | ||||
| extern const TIFFCodec _TIFFBuiltinCODECS[]; | ||||
| #else | ||||
| extern TIFFCodec _TIFFBuiltinCODECS[]; | ||||
| #endif | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
| #endif /* _TIFFIOP_ */ | ||||
|  | ||||
| /* vim: set ts=8 sts=8 sw=8 noet: */ | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
							
								
								
									
										9
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffvers.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/tiffvers.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| #define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.0.9\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc." | ||||
| /* | ||||
|  * This define can be used in code that requires | ||||
|  * compilation-related definitions specific to a | ||||
|  * version or versions of the library.  Runtime | ||||
|  * version checking should be done based on the | ||||
|  * string returned by TIFFGetVersion. | ||||
|  */ | ||||
| #define TIFFLIB_VERSION 20171118 | ||||
							
								
								
									
										180
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/uvcode.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								libsdl2_image/external/tiff-4.0.9/libtiff/uvcode.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,180 @@ | ||||
| /* Version 1.0 generated April 7, 1997 by Greg Ward Larson, SGI */ | ||||
| #define UV_SQSIZ	(float)0.003500 | ||||
| #define UV_NDIVS	16289 | ||||
| #define UV_VSTART	(float)0.016940 | ||||
| #define UV_NVS		163 | ||||
| static const struct { | ||||
| 	float	ustart; | ||||
| 	short	nus, ncum; | ||||
| }	uv_row[UV_NVS] = { | ||||
| 	{ (float)0.247663,	4,	0 }, | ||||
| 	{ (float)0.243779,	6,	4 }, | ||||
| 	{ (float)0.241684,	7,	10 }, | ||||
| 	{ (float)0.237874,	9,	17 }, | ||||
| 	{ (float)0.235906,	10,	26 }, | ||||
| 	{ (float)0.232153,	12,	36 }, | ||||
| 	{ (float)0.228352,	14,	48 }, | ||||
| 	{ (float)0.226259,	15,	62 }, | ||||
| 	{ (float)0.222371,	17,	77 }, | ||||
| 	{ (float)0.220410,	18,	94 }, | ||||
| 	{ (float)0.214710,	21,	112 }, | ||||
| 	{ (float)0.212714,	22,	133 }, | ||||
| 	{ (float)0.210721,	23,	155 }, | ||||
| 	{ (float)0.204976,	26,	178 }, | ||||
| 	{ (float)0.202986,	27,	204 }, | ||||
| 	{ (float)0.199245,	29,	231 }, | ||||
| 	{ (float)0.195525,	31,	260 }, | ||||
| 	{ (float)0.193560,	32,	291 }, | ||||
| 	{ (float)0.189878,	34,	323 }, | ||||
| 	{ (float)0.186216,	36,	357 }, | ||||
| 	{ (float)0.186216,	36,	393 }, | ||||
| 	{ (float)0.182592,	38,	429 }, | ||||
| 	{ (float)0.179003,	40,	467 }, | ||||
| 	{ (float)0.175466,	42,	507 }, | ||||
| 	{ (float)0.172001,	44,	549 }, | ||||
| 	{ (float)0.172001,	44,	593 }, | ||||
| 	{ (float)0.168612,	46,	637 }, | ||||
| 	{ (float)0.168612,	46,	683 }, | ||||
| 	{ (float)0.163575,	49,	729 }, | ||||
| 	{ (float)0.158642,	52,	778 }, | ||||
| 	{ (float)0.158642,	52,	830 }, | ||||
| 	{ (float)0.158642,	52,	882 }, | ||||
| 	{ (float)0.153815,	55,	934 }, | ||||
| 	{ (float)0.153815,	55,	989 }, | ||||
| 	{ (float)0.149097,	58,	1044 }, | ||||
| 	{ (float)0.149097,	58,	1102 }, | ||||
| 	{ (float)0.142746,	62,	1160 }, | ||||
| 	{ (float)0.142746,	62,	1222 }, | ||||
| 	{ (float)0.142746,	62,	1284 }, | ||||
| 	{ (float)0.138270,	65,	1346 }, | ||||
| 	{ (float)0.138270,	65,	1411 }, | ||||
| 	{ (float)0.138270,	65,	1476 }, | ||||
| 	{ (float)0.132166,	69,	1541 }, | ||||
| 	{ (float)0.132166,	69,	1610 }, | ||||
| 	{ (float)0.126204,	73,	1679 }, | ||||
| 	{ (float)0.126204,	73,	1752 }, | ||||
| 	{ (float)0.126204,	73,	1825 }, | ||||
| 	{ (float)0.120381,	77,	1898 }, | ||||
| 	{ (float)0.120381,	77,	1975 }, | ||||
| 	{ (float)0.120381,	77,	2052 }, | ||||
| 	{ (float)0.120381,	77,	2129 }, | ||||
| 	{ (float)0.112962,	82,	2206 }, | ||||
| 	{ (float)0.112962,	82,	2288 }, | ||||
| 	{ (float)0.112962,	82,	2370 }, | ||||
| 	{ (float)0.107450,	86,	2452 }, | ||||
| 	{ (float)0.107450,	86,	2538 }, | ||||
| 	{ (float)0.107450,	86,	2624 }, | ||||
| 	{ (float)0.107450,	86,	2710 }, | ||||
| 	{ (float)0.100343,	91,	2796 }, | ||||
| 	{ (float)0.100343,	91,	2887 }, | ||||
| 	{ (float)0.100343,	91,	2978 }, | ||||
| 	{ (float)0.095126,	95,	3069 }, | ||||
| 	{ (float)0.095126,	95,	3164 }, | ||||
| 	{ (float)0.095126,	95,	3259 }, | ||||
| 	{ (float)0.095126,	95,	3354 }, | ||||
| 	{ (float)0.088276,	100,	3449 }, | ||||
| 	{ (float)0.088276,	100,	3549 }, | ||||
| 	{ (float)0.088276,	100,	3649 }, | ||||
| 	{ (float)0.088276,	100,	3749 }, | ||||
| 	{ (float)0.081523,	105,	3849 }, | ||||
| 	{ (float)0.081523,	105,	3954 }, | ||||
| 	{ (float)0.081523,	105,	4059 }, | ||||
| 	{ (float)0.081523,	105,	4164 }, | ||||
| 	{ (float)0.074861,	110,	4269 }, | ||||
| 	{ (float)0.074861,	110,	4379 }, | ||||
| 	{ (float)0.074861,	110,	4489 }, | ||||
| 	{ (float)0.074861,	110,	4599 }, | ||||
| 	{ (float)0.068290,	115,	4709 }, | ||||
| 	{ (float)0.068290,	115,	4824 }, | ||||
| 	{ (float)0.068290,	115,	4939 }, | ||||
| 	{ (float)0.068290,	115,	5054 }, | ||||
| 	{ (float)0.063573,	119,	5169 }, | ||||
| 	{ (float)0.063573,	119,	5288 }, | ||||
| 	{ (float)0.063573,	119,	5407 }, | ||||
| 	{ (float)0.063573,	119,	5526 }, | ||||
| 	{ (float)0.057219,	124,	5645 }, | ||||
| 	{ (float)0.057219,	124,	5769 }, | ||||
| 	{ (float)0.057219,	124,	5893 }, | ||||
| 	{ (float)0.057219,	124,	6017 }, | ||||
| 	{ (float)0.050985,	129,	6141 }, | ||||
| 	{ (float)0.050985,	129,	6270 }, | ||||
| 	{ (float)0.050985,	129,	6399 }, | ||||
| 	{ (float)0.050985,	129,	6528 }, | ||||
| 	{ (float)0.050985,	129,	6657 }, | ||||
| 	{ (float)0.044859,	134,	6786 }, | ||||
| 	{ (float)0.044859,	134,	6920 }, | ||||
| 	{ (float)0.044859,	134,	7054 }, | ||||
| 	{ (float)0.044859,	134,	7188 }, | ||||
| 	{ (float)0.040571,	138,	7322 }, | ||||
| 	{ (float)0.040571,	138,	7460 }, | ||||
| 	{ (float)0.040571,	138,	7598 }, | ||||
| 	{ (float)0.040571,	138,	7736 }, | ||||
| 	{ (float)0.036339,	142,	7874 }, | ||||
| 	{ (float)0.036339,	142,	8016 }, | ||||
| 	{ (float)0.036339,	142,	8158 }, | ||||
| 	{ (float)0.036339,	142,	8300 }, | ||||
| 	{ (float)0.032139,	146,	8442 }, | ||||
| 	{ (float)0.032139,	146,	8588 }, | ||||
| 	{ (float)0.032139,	146,	8734 }, | ||||
| 	{ (float)0.032139,	146,	8880 }, | ||||
| 	{ (float)0.027947,	150,	9026 }, | ||||
| 	{ (float)0.027947,	150,	9176 }, | ||||
| 	{ (float)0.027947,	150,	9326 }, | ||||
| 	{ (float)0.023739,	154,	9476 }, | ||||
| 	{ (float)0.023739,	154,	9630 }, | ||||
| 	{ (float)0.023739,	154,	9784 }, | ||||
| 	{ (float)0.023739,	154,	9938 }, | ||||
| 	{ (float)0.019504,	158,	10092 }, | ||||
| 	{ (float)0.019504,	158,	10250 }, | ||||
| 	{ (float)0.019504,	158,	10408 }, | ||||
| 	{ (float)0.016976,	161,	10566 }, | ||||
| 	{ (float)0.016976,	161,	10727 }, | ||||
| 	{ (float)0.016976,	161,	10888 }, | ||||
| 	{ (float)0.016976,	161,	11049 }, | ||||
| 	{ (float)0.012639,	165,	11210 }, | ||||
| 	{ (float)0.012639,	165,	11375 }, | ||||
| 	{ (float)0.012639,	165,	11540 }, | ||||
| 	{ (float)0.009991,	168,	11705 }, | ||||
| 	{ (float)0.009991,	168,	11873 }, | ||||
| 	{ (float)0.009991,	168,	12041 }, | ||||
| 	{ (float)0.009016,	170,	12209 }, | ||||
| 	{ (float)0.009016,	170,	12379 }, | ||||
| 	{ (float)0.009016,	170,	12549 }, | ||||
| 	{ (float)0.006217,	173,	12719 }, | ||||
| 	{ (float)0.006217,	173,	12892 }, | ||||
| 	{ (float)0.005097,	175,	13065 }, | ||||
| 	{ (float)0.005097,	175,	13240 }, | ||||
| 	{ (float)0.005097,	175,	13415 }, | ||||
| 	{ (float)0.003909,	177,	13590 }, | ||||
| 	{ (float)0.003909,	177,	13767 }, | ||||
| 	{ (float)0.002340,	177,	13944 }, | ||||
| 	{ (float)0.002389,	170,	14121 }, | ||||
| 	{ (float)0.001068,	164,	14291 }, | ||||
| 	{ (float)0.001653,	157,	14455 }, | ||||
| 	{ (float)0.000717,	150,	14612 }, | ||||
| 	{ (float)0.001614,	143,	14762 }, | ||||
| 	{ (float)0.000270,	136,	14905 }, | ||||
| 	{ (float)0.000484,	129,	15041 }, | ||||
| 	{ (float)0.001103,	123,	15170 }, | ||||
| 	{ (float)0.001242,	115,	15293 }, | ||||
| 	{ (float)0.001188,	109,	15408 }, | ||||
| 	{ (float)0.001011,	103,	15517 }, | ||||
| 	{ (float)0.000709,	97,	15620 }, | ||||
| 	{ (float)0.000301,	89,	15717 }, | ||||
| 	{ (float)0.002416,	82,	15806 }, | ||||
| 	{ (float)0.003251,	76,	15888 }, | ||||
| 	{ (float)0.003246,	69,	15964 }, | ||||
| 	{ (float)0.004141,	62,	16033 }, | ||||
| 	{ (float)0.005963,	55,	16095 }, | ||||
| 	{ (float)0.008839,	47,	16150 }, | ||||
| 	{ (float)0.010490,	40,	16197 }, | ||||
| 	{ (float)0.016994,	31,	16237 }, | ||||
| 	{ (float)0.023659,	21,	16268 }, | ||||
| }; | ||||
| /* | ||||
|  * Local Variables: | ||||
|  * mode: c | ||||
|  * c-basic-offset: 8 | ||||
|  * fill-column: 78 | ||||
|  * End: | ||||
|  */ | ||||
		Reference in New Issue
	
	Block a user