diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2015-05-02 10:09:28 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2015-05-02 10:09:28 +0200 |
commit | da4a717ddcd6ba5b5b0819aabbe49fcd5f77ae4d (patch) | |
tree | 86a75831be5de12584225fdd94bec47a73a455a8 /tiff/contrib/addtiffo | |
parent | 63128e407a6ee7afd31e013dc55d5dcbfab0f6a9 (diff) |
remove unused sources
Diffstat (limited to 'tiff/contrib/addtiffo')
-rw-r--r-- | tiff/contrib/addtiffo/Makefile.am | 36 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/Makefile.in | 556 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/Makefile.vc | 28 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/README | 142 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/addtiffo.c | 176 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/tif_overview.c | 896 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/tif_ovrcache.c | 341 | ||||
-rw-r--r-- | tiff/contrib/addtiffo/tif_ovrcache.h | 108 |
8 files changed, 0 insertions, 2283 deletions
diff --git a/tiff/contrib/addtiffo/Makefile.am b/tiff/contrib/addtiffo/Makefile.am deleted file mode 100644 index f3158ef..0000000 --- a/tiff/contrib/addtiffo/Makefile.am +++ /dev/null @@ -1,36 +0,0 @@ -# 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. - -LIBTIFF = $(top_builddir)/libtiff/libtiff.la - -EXTRA_DIST = README Makefile.vc - -noinst_PROGRAMS = addtiffo - -addtiffo_SOURCES = addtiffo.c tif_overview.c tif_ovrcache.c tif_ovrcache.h -addtiffo_LDADD = $(LIBTIFF) - -INCLUDES = -I../../libtiff -I$(top_srcdir)/libtiff - diff --git a/tiff/contrib/addtiffo/Makefile.in b/tiff/contrib/addtiffo/Makefile.in deleted file mode 100644 index 4cf406f..0000000 --- a/tiff/contrib/addtiffo/Makefile.in +++ /dev/null @@ -1,556 +0,0 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ -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@ -target_triplet = @target@ -noinst_PROGRAMS = addtiffo$(EXEEXT) -subdir = contrib/addtiffo -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -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) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \ - $(top_builddir)/libtiff/tiffconf.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_addtiffo_OBJECTS = addtiffo.$(OBJEXT) tif_overview.$(OBJEXT) \ - tif_ovrcache.$(OBJEXT) -addtiffo_OBJECTS = $(am_addtiffo_OBJECTS) -addtiffo_DEPENDENCIES = $(LIBTIFF) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff -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_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -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_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(addtiffo_SOURCES) -DIST_SOURCES = $(addtiffo_SOURCES) -ETAGS = etags -CTAGS = ctags -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@ -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@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -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_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -acx_pthread_config = @acx_pthread_config@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -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 = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -LIBTIFF = $(top_builddir)/libtiff/libtiff.la -EXTRA_DIST = README Makefile.vc -addtiffo_SOURCES = addtiffo.c tif_overview.c tif_ovrcache.c tif_ovrcache.h -addtiffo_LDADD = $(LIBTIFF) -INCLUDES = -I../../libtiff -I$(top_srcdir)/libtiff -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .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 contrib/addtiffo/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign contrib/addtiffo/Makefile -.PRECIOUS: 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): - -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 -addtiffo$(EXEEXT): $(addtiffo_OBJECTS) $(addtiffo_DEPENDENCIES) - @rm -f addtiffo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(addtiffo_OBJECTS) $(addtiffo_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addtiffo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_overview.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_ovrcache.Po@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - 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 -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - 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" - -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 $(PROGRAMS) -installdirs: -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: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -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-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -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: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic 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-man \ - 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 uninstall uninstall-am - - -# 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: diff --git a/tiff/contrib/addtiffo/Makefile.vc b/tiff/contrib/addtiffo/Makefile.vc deleted file mode 100644 index 2777dc2..0000000 --- a/tiff/contrib/addtiffo/Makefile.vc +++ /dev/null @@ -1,28 +0,0 @@ -# -# If libtiff.a is installed in /usr/lib or /usr/local/lib just point -# LIBTIFF_DIR there. It doesn't need a full libtiff tree. -# -!INCLUDE ..\..\nmake.opt - -LIBTIFF_DIR = ..\..\libtiff -# -INCL = -I..\..\libtiff -LIBS = $(LIBTIFF_DIR)\libtiff.lib - -addtiffo: addtiffo.obj tif_overview.obj tif_ovrcache.obj - $(CC) $(CFLAGS) addtiffo.obj tif_overview.obj tif_ovrcache.obj \ - $(LIBS) /Feaddtiffo.exe - - -addtiffo.obj: addtiffo.c - $(CC) -c $(CFLAGS) addtiffo.c - -tif_overview.obj: tif_overview.c - $(CC) -c $(CFLAGS) tif_overview.c - -tif_ovrcache.obj: tif_ovrcache.c - $(CC) -c $(CFLAGS) tif_ovrcache.c - -clean: - -del *.obj - -del addtiffo.exe diff --git a/tiff/contrib/addtiffo/README b/tiff/contrib/addtiffo/README deleted file mode 100644 index a6ca45f..0000000 --- a/tiff/contrib/addtiffo/README +++ /dev/null @@ -1,142 +0,0 @@ - addtiffo 1.0 - ============ - -The addtiffo utility is used to add overview pyramids to an existing -TIFF or GeoTIFF file. Some applications can take advantage of these -overviews to accelerate overview display performance of large rasters. - -This release of addtiffo is primarily intended for compatibility testing -with applications, and to see if there is interest in a cleaner release -of the capability ... perhaps incorporation into the libtiff tools -distribution. - -Please feel free to contact me with questions, or problems. - -warmerda@home.com -http://home.gdal.org/~warmerda/ - - -Usage ------ - -Usage: addtiffo [-r {average/nearest} [-subifd] - tiff_filename [resolution_reductions] - -Example: - % addtiffo abc.tif 2 4 8 16 - -The numeric arguments are the list of reduction factors to -generate. In this example a 1/2, 1/4 1/8 and 1/16 - - - -Limitations ------------ - -See tif_overview.cpp for up to date details. - - o Currently only images with bits_per_sample of a multiple of eight - will work. - - o The code will attempt to use the same kind of compression, - photometric interpretation, and organization as the source image, but - it doesn't copy geotiff tags to the reduced resolution images. - - o Reduced resolution overviews for multi-sample files will currently - always be generated as PLANARCONFIG_SEPARATE. This could be fixed - reasonable easily if needed to improve compatibility with other - packages. Many don't properly support PLANARCONFIG_SEPARATE. - - o Overviews are always written as appended IFDs, rather than using the - ``tree of tree's'' approach using the SUBIFD tag. I wanted to implement - both, but it isn't currently easy to add a SUBIFD tag to an existing - main tiff IFD with libtiff. I hope to try this again later. - - -TIFF File Tags --------------- - -The results of running addtiffo on a 1024x1024 tiled greyscale file -with the arguments ``2 4 8 16'' is to add four additional TIFF directories -appended on the file with the SUBFILETYPE flag to 0x1 indicating the extra -items are reduced resolution images. - -The tiffinfo output of such a file might look like this: - -TIFF Directory at offset 0x118008 - Image Width: 1024 Image Length: 1024 - Tile Width: 256 Tile Length: 112 - Bits/Sample: 8 - Compression Scheme: none - Photometric Interpretation: min-is-black - Samples/Pixel: 1 - Planar Configuration: single image plane -TIFF Directory at offset 0x15e1d2 - Subfile Type: reduced-resolution image (1 = 0x1) - Image Width: 512 Image Length: 512 - Tile Width: 256 Tile Length: 112 - Bits/Sample: 8 - Compression Scheme: none - Photometric Interpretation: min-is-black - Samples/Pixel: 1 - Planar Configuration: separate image planes -TIFF Directory at offset 0x1732b8 - Subfile Type: reduced-resolution image (1 = 0x1) - Image Width: 256 Image Length: 256 - Tile Width: 256 Tile Length: 112 - Bits/Sample: 8 - Compression Scheme: none - Photometric Interpretation: min-is-black - Samples/Pixel: 1 - Planar Configuration: separate image planes -TIFF Directory at offset 0x17a366 - Subfile Type: reduced-resolution image (1 = 0x1) - Image Width: 128 Image Length: 128 - Tile Width: 128 Tile Length: 112 - Bits/Sample: 8 - Compression Scheme: none - Photometric Interpretation: min-is-black - Samples/Pixel: 1 - Planar Configuration: separate image planes -TIFF Directory at offset 0x17b40c - Subfile Type: reduced-resolution image (1 = 0x1) - Image Width: 64 Image Length: 64 - Tile Width: 64 Tile Length: 64 - Bits/Sample: 8 - Compression Scheme: none - Photometric Interpretation: min-is-black - Samples/Pixel: 1 - Planar Configuration: separate image planes - - -Building --------- - -You will need a C compiler. You will need to have libtiff already -built and installed. The provided Makefile should work on most Unix systems. -A similar file will be needed for Windows, but is not provided. - -The CFLAGS and LIBS macros in the Makefile will have to be updated to -point to the correct location of the libtiff include files, and library. - - -Credits -------- - - o Intergraph Corporation for partially funding the work. - - o Global Geomatics for partially funding reorganization of the overview - building ability as a separate utility. - - o Orrin Long, and Ed Grissom of Intergraph for explaining what needed to - be done. - - o Max Martinez of Erdas for his discussion of external overviews. - - o Atlantis Scientific who supported adding averaging, and some other - generalizations. - - o Frank Warmerdam for writing the bulk of the code. - - o Sam Leffler since this only exists because of his libtiff. - diff --git a/tiff/contrib/addtiffo/addtiffo.c b/tiff/contrib/addtiffo/addtiffo.c deleted file mode 100644 index 107df36..0000000 --- a/tiff/contrib/addtiffo/addtiffo.c +++ /dev/null @@ -1,176 +0,0 @@ -/****************************************************************************** - * $Id: addtiffo.c,v 1.6.2.1 2010-06-08 18:50:40 bfriesen Exp $ - * - * Project: GeoTIFF Overview Builder - * Purpose: Mainline for building overviews in a TIFF file. - * Author: Frank Warmerdam, warmerdam@pobox.com - * - ****************************************************************************** - * Copyright (c) 1999, Frank Warmerdam - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - * - * $Log: addtiffo.c,v $ - * Revision 1.6.2.1 2010-06-08 18:50:40 bfriesen - * * Add an emacs formatting mode footer to all source files so that - * emacs can be effectively used. - * - * Revision 1.6 2005/12/16 05:59:55 fwarmerdam - * Major upgrade to support YCbCr subsampled jpeg images - * - * Revision 1.4 2004/09/21 13:31:23 dron - * Add missed include string.h. - * - * Revision 1.3 2000/04/18 22:48:31 warmerda - * Added support for averaging resampling - * - * Revision 1.2 2000/01/28 15:36:38 warmerda - * pass TIFF handle instead of filename to overview builder - * - * Revision 1.1 1999/08/17 01:47:59 warmerda - * New - * - * Revision 1.1 1999/03/12 17:46:32 warmerda - * New - * - * Revision 1.2 1999/02/11 22:27:12 warmerda - * Added multi-sample support - * - * Revision 1.1 1999/02/11 18:12:30 warmerda - * New - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "tiffio.h" - -void TIFFBuildOverviews( TIFF *, int, int *, int, const char *, - int (*)(double,void*), void * ); - -/************************************************************************/ -/* main() */ -/************************************************************************/ - -int main( int argc, char ** argv ) - -{ - int anOverviews[100]; /* TODO: un-hardwire array length, flexible allocate */ - int nOverviewCount = 0; - int bUseSubIFD = 0; - TIFF *hTIFF; - const char *pszResampling = "nearest"; - -/* -------------------------------------------------------------------- */ -/* Usage: */ -/* -------------------------------------------------------------------- */ - if( argc < 2 ) - { - printf( "Usage: addtiffo [-r {nearest,average,mode}]\n" - " tiff_filename [resolution_reductions]\n" - "\n" - "Example:\n" - " %% addtiffo abc.tif 2 4 8 16\n" ); - return( 1 ); - } - - while( argv[1][0] == '-' ) - { - if( strcmp(argv[1],"-subifd") == 0 ) - { - bUseSubIFD = 1; - argv++; - argc--; - } - else if( strcmp(argv[1],"-r") == 0 ) - { - argv += 2; - argc -= 2; - pszResampling = *argv; - } - else - { - fprintf( stderr, "Incorrect parameters\n" ); - return( 1 ); - } - } - - /* TODO: resampling mode parameter needs to be encoded in an integer from this point on */ - -/* -------------------------------------------------------------------- */ -/* Collect the user requested reduction factors. */ -/* -------------------------------------------------------------------- */ - while( nOverviewCount < argc - 2 && nOverviewCount < 100 ) - { - anOverviews[nOverviewCount] = atoi(argv[nOverviewCount+2]); - if( anOverviews[nOverviewCount] <= 0) - { - fprintf( stderr, "Incorrect parameters\n" ); - return(1); - } - nOverviewCount++; - } - -/* -------------------------------------------------------------------- */ -/* Default to four overview levels. It would be nicer if it */ -/* defaulted based on the size of the source image. */ -/* -------------------------------------------------------------------- */ - /* TODO: make it default based on the size of the source image */ - if( nOverviewCount == 0 ) - { - nOverviewCount = 4; - - anOverviews[0] = 2; - anOverviews[1] = 4; - anOverviews[2] = 8; - anOverviews[3] = 16; - } - -/* -------------------------------------------------------------------- */ -/* Build the overview. */ -/* -------------------------------------------------------------------- */ - hTIFF = TIFFOpen( argv[1], "r+" ); - if( hTIFF == NULL ) - { - fprintf( stderr, "TIFFOpen(%s) failed.\n", argv[1] ); - return( 1 ); - } - - TIFFBuildOverviews( hTIFF, nOverviewCount, anOverviews, bUseSubIFD, - pszResampling, NULL, NULL ); - - TIFFClose( hTIFF ); - -/* -------------------------------------------------------------------- */ -/* Optionally test for memory leaks. */ -/* -------------------------------------------------------------------- */ -#ifdef DBMALLOC - malloc_dump(1); -#endif - - return( 0 ); -} -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/tiff/contrib/addtiffo/tif_overview.c b/tiff/contrib/addtiffo/tif_overview.c deleted file mode 100644 index 994451c..0000000 --- a/tiff/contrib/addtiffo/tif_overview.c +++ /dev/null @@ -1,896 +0,0 @@ -/****************************************************************************** - * tif_overview.c,v 1.9 2005/05/25 09:03:16 dron Exp - * - * Project: TIFF Overview Builder - * Purpose: Library function for building overviews in a TIFF file. - * Author: Frank Warmerdam, warmerdam@pobox.com - * - * Notes: - * o Currently only images with bits_per_sample of a multiple of eight - * will work. - * - * o The downsampler currently just takes the top left pixel from the - * source rectangle. Eventually sampling options of averaging, mode, and - * ``center pixel'' should be offered. - * - * o The code will attempt to use the same kind of compression, - * photometric interpretation, and organization as the source image, but - * it doesn't copy geotiff tags to the reduced resolution images. - * - * o Reduced resolution overviews for multi-sample files will currently - * always be generated as PLANARCONFIG_SEPARATE. This could be fixed - * reasonable easily if needed to improve compatibility with other - * packages. Many don't properly support PLANARCONFIG_SEPARATE. - * - ****************************************************************************** - * Copyright (c) 1999, Frank Warmerdam - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - */ - -/* TODO: update notes in header above */ - -#include <stdio.h> -#include <assert.h> -#include <stdlib.h> -#include <string.h> - -#include "tiffio.h" -#include "tif_ovrcache.h" - -#ifndef FALSE -# define FALSE 0 -# define TRUE 1 -#endif - -#ifndef MAX -# define MIN(a,b) ((a<b) ? a : b) -# define MAX(a,b) ((a>b) ? a : b) -#endif - -void TIFFBuildOverviews( TIFF *, int, int *, int, const char *, - int (*)(double,void*), void * ); - -/************************************************************************/ -/* TIFF_WriteOverview() */ -/* */ -/* Create a new directory, without any image data for an overview. */ -/* Returns offset of newly created overview directory, but the */ -/* current directory is reset to be the one in used when this */ -/* function is called. */ -/************************************************************************/ - -uint32 TIFF_WriteOverview( TIFF *hTIFF, int nXSize, int nYSize, - int nBitsPerPixel, int nPlanarConfig, int nSamples, - int nBlockXSize, int nBlockYSize, - int bTiled, int nCompressFlag, int nPhotometric, - int nSampleFormat, - unsigned short *panRed, - unsigned short *panGreen, - unsigned short *panBlue, - int bUseSubIFDs, - int nHorSubsampling, int nVerSubsampling ) - -{ - uint32 nBaseDirOffset; - uint32 nOffset; - - nBaseDirOffset = TIFFCurrentDirOffset( hTIFF ); - - TIFFCreateDirectory( hTIFF ); - -/* -------------------------------------------------------------------- */ -/* Setup TIFF fields. */ -/* -------------------------------------------------------------------- */ - TIFFSetField( hTIFF, TIFFTAG_IMAGEWIDTH, nXSize ); - TIFFSetField( hTIFF, TIFFTAG_IMAGELENGTH, nYSize ); - if( nSamples == 1 ) - TIFFSetField( hTIFF, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG ); - else - TIFFSetField( hTIFF, TIFFTAG_PLANARCONFIG, nPlanarConfig ); - - TIFFSetField( hTIFF, TIFFTAG_BITSPERSAMPLE, nBitsPerPixel ); - TIFFSetField( hTIFF, TIFFTAG_SAMPLESPERPIXEL, nSamples ); - TIFFSetField( hTIFF, TIFFTAG_COMPRESSION, nCompressFlag ); - TIFFSetField( hTIFF, TIFFTAG_PHOTOMETRIC, nPhotometric ); - TIFFSetField( hTIFF, TIFFTAG_SAMPLEFORMAT, nSampleFormat ); - - if( bTiled ) - { - TIFFSetField( hTIFF, TIFFTAG_TILEWIDTH, nBlockXSize ); - TIFFSetField( hTIFF, TIFFTAG_TILELENGTH, nBlockYSize ); - } - else - TIFFSetField( hTIFF, TIFFTAG_ROWSPERSTRIP, nBlockYSize ); - - TIFFSetField( hTIFF, TIFFTAG_SUBFILETYPE, FILETYPE_REDUCEDIMAGE ); - - if( nPhotometric == PHOTOMETRIC_YCBCR || nPhotometric == PHOTOMETRIC_ITULAB ) - { - TIFFSetField( hTIFF, TIFFTAG_YCBCRSUBSAMPLING, nHorSubsampling, nVerSubsampling); - /* TODO: also write YCbCrPositioning and YCbCrCoefficients tag identical to source IFD */ - } - /* TODO: add command-line parameter for selecting jpeg compression quality - * that gets ignored when compression isn't jpeg */ - -/* -------------------------------------------------------------------- */ -/* Write color table if one is present. */ -/* -------------------------------------------------------------------- */ - if( panRed != NULL ) - { - TIFFSetField( hTIFF, TIFFTAG_COLORMAP, panRed, panGreen, panBlue ); - } - -/* -------------------------------------------------------------------- */ -/* Write directory, and return byte offset. */ -/* -------------------------------------------------------------------- */ - if( TIFFWriteCheck( hTIFF, bTiled, "TIFFBuildOverviews" ) == 0 ) - return 0; - - TIFFWriteDirectory( hTIFF ); - TIFFSetDirectory( hTIFF, (tdir_t) (TIFFNumberOfDirectories(hTIFF)-1) ); - - nOffset = TIFFCurrentDirOffset( hTIFF ); - - TIFFSetSubDirectory( hTIFF, nBaseDirOffset ); - - return nOffset; -} - -/************************************************************************/ -/* TIFF_GetSourceSamples() */ -/************************************************************************/ - -static void -TIFF_GetSourceSamples( double * padfSamples, unsigned char *pabySrc, - int nPixelBytes, int nSampleFormat, - int nXSize, int nYSize, - int nPixelOffset, int nLineOffset ) -{ - int iXOff, iYOff, iSample; - - iSample = 0; - - for( iYOff = 0; iYOff < nYSize; iYOff++ ) - { - for( iXOff = 0; iXOff < nXSize; iXOff++ ) - { - unsigned char *pabyData; - - pabyData = pabySrc + iYOff * nLineOffset + iXOff * nPixelOffset; - - if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 1 ) - { - padfSamples[iSample++] = *pabyData; - } - else if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 2 ) - { - padfSamples[iSample++] = ((uint16 *) pabyData)[0]; - } - else if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 4 ) - { - padfSamples[iSample++] = ((uint32 *) pabyData)[0]; - } - else if( nSampleFormat == SAMPLEFORMAT_INT && nPixelBytes == 2 ) - { - padfSamples[iSample++] = ((int16 *) pabyData)[0]; - } - else if( nSampleFormat == SAMPLEFORMAT_INT && nPixelBytes == 32 ) - { - padfSamples[iSample++] = ((int32 *) pabyData)[0]; - } - else if( nSampleFormat == SAMPLEFORMAT_IEEEFP && nPixelBytes == 4 ) - { - padfSamples[iSample++] = ((float *) pabyData)[0]; - } - else if( nSampleFormat == SAMPLEFORMAT_IEEEFP && nPixelBytes == 8 ) - { - padfSamples[iSample++] = ((double *) pabyData)[0]; - } - } - } -} - -/************************************************************************/ -/* TIFF_SetSample() */ -/************************************************************************/ - -static void -TIFF_SetSample( unsigned char * pabyData, int nPixelBytes, int nSampleFormat, - double dfValue ) - -{ - if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 1 ) - { - *pabyData = (unsigned char) MAX(0,MIN(255,dfValue)); - } - else if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 2 ) - { - *((uint16 *)pabyData) = (uint16) MAX(0,MIN(65535,dfValue)); - } - else if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 4 ) - { - *((uint32 *)pabyData) = (uint32) dfValue; - } - else if( nSampleFormat == SAMPLEFORMAT_INT && nPixelBytes == 2 ) - { - *((int16 *)pabyData) = (int16) MAX(-32768,MIN(32767,dfValue)); - } - else if( nSampleFormat == SAMPLEFORMAT_INT && nPixelBytes == 32 ) - { - *((int32 *)pabyData) = (int32) dfValue; - } - else if( nSampleFormat == SAMPLEFORMAT_IEEEFP && nPixelBytes == 4 ) - { - *((float *)pabyData) = (float) dfValue; - } - else if( nSampleFormat == SAMPLEFORMAT_IEEEFP && nPixelBytes == 8 ) - { - *((double *)pabyData) = dfValue; - } -} - -/************************************************************************/ -/* TIFF_DownSample() */ -/* */ -/* Down sample a tile of full res data into a window of a tile */ -/* of downsampled data. */ -/************************************************************************/ - -static -void TIFF_DownSample( unsigned char *pabySrcTile, - int nBlockXSize, int nBlockYSize, - int nPixelSkewBits, int nBitsPerPixel, - unsigned char * pabyOTile, - int nOBlockXSize, int nOBlockYSize, - int nTXOff, int nTYOff, int nOMult, - int nSampleFormat, const char * pszResampling ) - -{ - int i, j, k, nPixelBytes = (nBitsPerPixel) / 8; - int nPixelGroupBytes = (nBitsPerPixel+nPixelSkewBits)/8; - unsigned char *pabySrc, *pabyDst; - double *padfSamples; - - assert( nBitsPerPixel >= 8 ); - - padfSamples = (double *) malloc(sizeof(double) * nOMult * nOMult); - -/* ==================================================================== */ -/* Loop over scanline chunks to process, establishing where the */ -/* data is going. */ -/* ==================================================================== */ - for( j = 0; j*nOMult < nBlockYSize; j++ ) - { - if( j + nTYOff >= nOBlockYSize ) - break; - - pabyDst = pabyOTile + ((j+nTYOff)*nOBlockXSize + nTXOff) - * nPixelBytes * nPixelGroupBytes; - -/* -------------------------------------------------------------------- */ -/* Handler nearest resampling ... we don't even care about the */ -/* data type, we just do a bytewise copy. */ -/* -------------------------------------------------------------------- */ - if( strncmp(pszResampling,"nearest",4) == 0 - || strncmp(pszResampling,"NEAR",4) == 0 ) - { - pabySrc = pabySrcTile + j*nOMult*nBlockXSize * nPixelGroupBytes; - - for( i = 0; i*nOMult < nBlockXSize; i++ ) - { - if( i + nTXOff >= nOBlockXSize ) - break; - - /* - * For now use simple subsampling, from the top left corner - * of the source block of pixels. - */ - - for( k = 0; k < nPixelBytes; k++ ) - pabyDst[k] = pabySrc[k]; - - pabyDst += nPixelBytes * nPixelGroupBytes; - pabySrc += nOMult * nPixelGroupBytes; - } - } - -/* -------------------------------------------------------------------- */ -/* Handle the case of averaging. For this we also have to */ -/* handle each sample format we are concerned with. */ -/* -------------------------------------------------------------------- */ - else if( strncmp(pszResampling,"averag",6) == 0 - || strncmp(pszResampling,"AVERAG",6) == 0 ) - { - pabySrc = pabySrcTile + j*nOMult*nBlockXSize * nPixelGroupBytes; - - for( i = 0; i*nOMult < nBlockXSize; i++ ) - { - double dfTotal; - int iSample; - int nXSize, nYSize; - - if( i + nTXOff >= nOBlockXSize ) - break; - - nXSize = MIN(nOMult,nBlockXSize-i); - nYSize = MIN(nOMult,nBlockYSize-j); - - TIFF_GetSourceSamples( padfSamples, pabySrc, - nPixelBytes, nSampleFormat, - nXSize, nYSize, - nPixelGroupBytes, - nPixelGroupBytes * nBlockXSize ); - - dfTotal = 0; - for( iSample = 0; iSample < nXSize*nYSize; iSample++ ) - { - dfTotal += padfSamples[iSample]; - } - - TIFF_SetSample( pabyDst, nPixelBytes, nSampleFormat, - dfTotal / (nXSize*nYSize) ); - - pabySrc += nOMult * nPixelGroupBytes; - pabyDst += nPixelBytes; - } - } - } - - free( padfSamples ); -} - -/************************************************************************/ -/* TIFF_DownSample_Subsampled() */ -/************************************************************************/ -static -void TIFF_DownSample_Subsampled( unsigned char *pabySrcTile, int nSample, - int nBlockXSize, int nBlockYSize, - unsigned char * pabyOTile, - int nOBlockXSize, int nOBlockYSize, - int nTXOff, int nTYOff, int nOMult, - const char * pszResampling, - int nHorSubsampling, int nVerSubsampling ) -{ - /* TODO: test with variety of subsampling values, and incovinient tile/strip sizes */ - int nSampleBlockSize; - int nSourceSampleRowSize; - int nDestSampleRowSize; - int nSourceX, nSourceY; - int nSourceXSec, nSourceYSec; - int nSourceXSecEnd, nSourceYSecEnd; - int nDestX, nDestY; - int nSampleOffsetInSampleBlock; - unsigned char * pSourceBase; - unsigned char * pDestBase; - int nSourceBaseInc; - unsigned char * pSourceBaseEnd; - unsigned int nCummulator; - unsigned int nCummulatorCount; - - nSampleBlockSize = nHorSubsampling * nVerSubsampling + 2; - nSourceSampleRowSize = - ( ( nBlockXSize + nHorSubsampling - 1 ) / nHorSubsampling ) * nSampleBlockSize; - nDestSampleRowSize = - ( ( nOBlockXSize + nHorSubsampling - 1 ) / nHorSubsampling ) * nSampleBlockSize; - - if( strncmp(pszResampling,"nearest",4) == 0 - || strncmp(pszResampling,"NEAR",4) == 0 ) - { - if( nSample == 0 ) - { - for( nSourceY = 0, nDestY = nTYOff; - nSourceY < nBlockYSize; - nSourceY += nOMult, nDestY ++) - { - if( nDestY >= nOBlockYSize ) - break; - - for( nSourceX = 0, nDestX = nTXOff; - nSourceX < nBlockXSize; - nSourceX += nOMult, nDestX ++) - { - if( nDestX >= nOBlockXSize ) - break; - - * ( pabyOTile + ( nDestY / nVerSubsampling ) * nDestSampleRowSize - + ( nDestY % nVerSubsampling ) * nHorSubsampling - + ( nDestX / nHorSubsampling ) * nSampleBlockSize - + ( nDestX % nHorSubsampling ) ) = - * ( pabySrcTile + ( nSourceY / nVerSubsampling ) * nSourceSampleRowSize - + ( nSourceY % nVerSubsampling ) * nHorSubsampling - + ( nSourceX / nHorSubsampling ) * nSampleBlockSize - + ( nSourceX % nHorSubsampling ) ); - } - } - } - else - { - nSampleOffsetInSampleBlock = nHorSubsampling * nVerSubsampling + nSample - 1; - for( nSourceY = 0, nDestY = ( nTYOff / nVerSubsampling ); - nSourceY < ( nBlockYSize / nVerSubsampling ); - nSourceY += nOMult, nDestY ++) - { - if( nDestY*nVerSubsampling >= nOBlockYSize ) - break; - - for( nSourceX = 0, nDestX = ( nTXOff / nHorSubsampling ); - nSourceX < ( nBlockXSize / nHorSubsampling ); - nSourceX += nOMult, nDestX ++) - { - if( nDestX*nHorSubsampling >= nOBlockXSize ) - break; - - * ( pabyOTile + nDestY * nDestSampleRowSize - + nDestX * nSampleBlockSize - + nSampleOffsetInSampleBlock ) = - * ( pabySrcTile + nSourceY * nSourceSampleRowSize - + nSourceX * nSampleBlockSize - + nSampleOffsetInSampleBlock ); - } - } - } - } - else if( strncmp(pszResampling,"averag",6) == 0 - || strncmp(pszResampling,"AVERAG",6) == 0 ) - { - if( nSample == 0 ) - { - for( nSourceY = 0, nDestY = nTYOff; nSourceY < nBlockYSize; nSourceY += nOMult, nDestY ++) - { - if( nDestY >= nOBlockYSize ) - break; - - for( nSourceX = 0, nDestX = nTXOff; nSourceX < nBlockXSize; nSourceX += nOMult, nDestX ++) - { - if( nDestX >= nOBlockXSize ) - break; - - nSourceXSecEnd = nSourceX + nOMult; - if( nSourceXSecEnd > nBlockXSize ) - nSourceXSecEnd = nBlockXSize; - nSourceYSecEnd = nSourceY + nOMult; - if( nSourceYSecEnd > nBlockYSize ) - nSourceYSecEnd = nBlockYSize; - nCummulator = 0; - for( nSourceYSec = nSourceY; nSourceYSec < nSourceYSecEnd; nSourceYSec ++) - { - for( nSourceXSec = nSourceX; nSourceXSec < nSourceXSecEnd; nSourceXSec ++) - { - nCummulator += * ( pabySrcTile + ( nSourceYSec / nVerSubsampling ) * nSourceSampleRowSize - + ( nSourceYSec % nVerSubsampling ) * nHorSubsampling - + ( nSourceXSec / nHorSubsampling ) * nSampleBlockSize - + ( nSourceXSec % nHorSubsampling ) ); - } - } - nCummulatorCount = ( nSourceXSecEnd - nSourceX ) * ( nSourceYSecEnd - nSourceY ); - * ( pabyOTile + ( nDestY / nVerSubsampling ) * nDestSampleRowSize - + ( nDestY % nVerSubsampling ) * nHorSubsampling - + ( nDestX / nHorSubsampling ) * nSampleBlockSize - + ( nDestX % nHorSubsampling ) ) = - ( ( nCummulator + ( nCummulatorCount >> 1 ) ) / nCummulatorCount ); - } - } - } - else - { - nSampleOffsetInSampleBlock = nHorSubsampling * nVerSubsampling + nSample - 1; - for( nSourceY = 0, nDestY = ( nTYOff / nVerSubsampling ); nSourceY < ( nBlockYSize / nVerSubsampling ); - nSourceY += nOMult, nDestY ++) - { - if( nDestY*nVerSubsampling >= nOBlockYSize ) - break; - - for( nSourceX = 0, nDestX = ( nTXOff / nHorSubsampling ); nSourceX < ( nBlockXSize / nHorSubsampling ); - nSourceX += nOMult, nDestX ++) - { - if( nDestX*nHorSubsampling >= nOBlockXSize ) - break; - - nSourceXSecEnd = nSourceX + nOMult; - if( nSourceXSecEnd > ( nBlockXSize / nHorSubsampling ) ) - nSourceXSecEnd = ( nBlockXSize / nHorSubsampling ); - nSourceYSecEnd = nSourceY + nOMult; - if( nSourceYSecEnd > ( nBlockYSize / nVerSubsampling ) ) - nSourceYSecEnd = ( nBlockYSize / nVerSubsampling ); - nCummulator = 0; - for( nSourceYSec = nSourceY; nSourceYSec < nSourceYSecEnd; nSourceYSec ++) - { - for( nSourceXSec = nSourceX; nSourceXSec < nSourceXSecEnd; nSourceXSec ++) - { - nCummulator += * ( pabySrcTile + nSourceYSec * nSourceSampleRowSize - + nSourceXSec * nSampleBlockSize - + nSampleOffsetInSampleBlock ); - } - } - nCummulatorCount = ( nSourceXSecEnd - nSourceX ) * ( nSourceYSecEnd - nSourceY ); - * ( pabyOTile + nDestY * nDestSampleRowSize - + nDestX * nSampleBlockSize - + nSampleOffsetInSampleBlock ) = - ( ( nCummulator + ( nCummulatorCount >> 1 ) ) / nCummulatorCount ); - } - } - } - } -} - -/************************************************************************/ -/* TIFF_ProcessFullResBlock() */ -/* */ -/* Process one block of full res data, downsampling into each */ -/* of the overviews. */ -/************************************************************************/ - -void TIFF_ProcessFullResBlock( TIFF *hTIFF, int nPlanarConfig, - int bSubsampled, int nHorSubsampling, int nVerSubsampling, - int nOverviews, int * panOvList, - int nBitsPerPixel, - int nSamples, TIFFOvrCache ** papoRawBIs, - int nSXOff, int nSYOff, - unsigned char *pabySrcTile, - int nBlockXSize, int nBlockYSize, - int nSampleFormat, const char * pszResampling ) - -{ - int iOverview, iSample; - - for( iSample = 0; iSample < nSamples; iSample++ ) - { - /* - * We have to read a tile/strip for each sample for - * PLANARCONFIG_SEPARATE. Otherwise, we just read all the samples - * at once when handling the first sample. - */ - if( nPlanarConfig == PLANARCONFIG_SEPARATE || iSample == 0 ) - { - if( TIFFIsTiled(hTIFF) ) - { - TIFFReadEncodedTile( hTIFF, - TIFFComputeTile(hTIFF, nSXOff, nSYOff, - 0, (tsample_t)iSample ), - pabySrcTile, - TIFFTileSize(hTIFF)); - } - else - { - TIFFReadEncodedStrip( hTIFF, - TIFFComputeStrip(hTIFF, nSYOff, - (tsample_t) iSample), - pabySrcTile, - TIFFStripSize(hTIFF) ); - } - } - - /* - * Loop over destination overview layers - */ - for( iOverview = 0; iOverview < nOverviews; iOverview++ ) - { - TIFFOvrCache *poRBI = papoRawBIs[iOverview]; - unsigned char *pabyOTile; - int nTXOff, nTYOff, nOXOff, nOYOff, nOMult; - int nOBlockXSize = poRBI->nBlockXSize; - int nOBlockYSize = poRBI->nBlockYSize; - int nSkewBits, nSampleByteOffset; - - /* - * Fetch the destination overview tile - */ - nOMult = panOvList[iOverview]; - nOXOff = (nSXOff/nOMult) / nOBlockXSize; - nOYOff = (nSYOff/nOMult) / nOBlockYSize; - - if( bSubsampled ) - { - pabyOTile = TIFFGetOvrBlock_Subsampled( poRBI, nOXOff, nOYOff ); - - /* - * Establish the offset into this tile at which we should - * start placing data. - */ - nTXOff = (nSXOff - nOXOff*nOMult*nOBlockXSize) / nOMult; - nTYOff = (nSYOff - nOYOff*nOMult*nOBlockYSize) / nOMult; - - -#ifdef DBMALLOC - malloc_chain_check( 1 ); -#endif - TIFF_DownSample_Subsampled( pabySrcTile, iSample, - nBlockXSize, nBlockYSize, - pabyOTile, - poRBI->nBlockXSize, poRBI->nBlockYSize, - nTXOff, nTYOff, - nOMult, pszResampling, - nHorSubsampling, nVerSubsampling ); -#ifdef DBMALLOC - malloc_chain_check( 1 ); -#endif - - } - else - { - - pabyOTile = TIFFGetOvrBlock( poRBI, nOXOff, nOYOff, iSample ); - - /* - * Establish the offset into this tile at which we should - * start placing data. - */ - nTXOff = (nSXOff - nOXOff*nOMult*nOBlockXSize) / nOMult; - nTYOff = (nSYOff - nOYOff*nOMult*nOBlockYSize) / nOMult; - - /* - * Figure out the skew (extra space between ``our samples'') and - * the byte offset to the first sample. - */ - assert( (nBitsPerPixel % 8) == 0 ); - if( nPlanarConfig == PLANARCONFIG_SEPARATE ) - { - nSkewBits = 0; - nSampleByteOffset = 0; - } - else - { - nSkewBits = nBitsPerPixel * (nSamples-1); - nSampleByteOffset = (nBitsPerPixel/8) * iSample; - } - - /* - * Perform the downsampling. - */ -#ifdef DBMALLOC - malloc_chain_check( 1 ); -#endif - TIFF_DownSample( pabySrcTile + nSampleByteOffset, - nBlockXSize, nBlockYSize, - nSkewBits, nBitsPerPixel, pabyOTile, - poRBI->nBlockXSize, poRBI->nBlockYSize, - nTXOff, nTYOff, - nOMult, nSampleFormat, pszResampling ); -#ifdef DBMALLOC - malloc_chain_check( 1 ); -#endif - } - } - } -} - -/************************************************************************/ -/* TIFF_BuildOverviews() */ -/* */ -/* Build the requested list of overviews. Overviews are */ -/* maintained in a bunch of temporary files and then these are */ -/* written back to the TIFF file. Only one pass through the */ -/* source TIFF file is made for any number of output */ -/* overviews. */ -/************************************************************************/ - -void TIFFBuildOverviews( TIFF *hTIFF, int nOverviews, int * panOvList, - int bUseSubIFDs, const char *pszResampleMethod, - int (*pfnProgress)( double, void * ), - void * pProgressData ) - -{ - TIFFOvrCache **papoRawBIs; - uint32 nXSize, nYSize, nBlockXSize, nBlockYSize; - uint16 nBitsPerPixel, nPhotometric, nCompressFlag, nSamples, - nPlanarConfig, nSampleFormat; - int bSubsampled; - uint16 nHorSubsampling, nVerSubsampling; - int bTiled, nSXOff, nSYOff, i; - unsigned char *pabySrcTile; - uint16 *panRedMap, *panGreenMap, *panBlueMap; - TIFFErrorHandler pfnWarning; - -/* -------------------------------------------------------------------- */ -/* Get the base raster size. */ -/* -------------------------------------------------------------------- */ - TIFFGetField( hTIFF, TIFFTAG_IMAGEWIDTH, &nXSize ); - TIFFGetField( hTIFF, TIFFTAG_IMAGELENGTH, &nYSize ); - - TIFFGetField( hTIFF, TIFFTAG_BITSPERSAMPLE, &nBitsPerPixel ); - /* TODO: nBitsPerPixel seems misnomer and may need renaming to nBitsPerSample */ - TIFFGetField( hTIFF, TIFFTAG_SAMPLESPERPIXEL, &nSamples ); - TIFFGetFieldDefaulted( hTIFF, TIFFTAG_PLANARCONFIG, &nPlanarConfig ); - - TIFFGetFieldDefaulted( hTIFF, TIFFTAG_PHOTOMETRIC, &nPhotometric ); - TIFFGetFieldDefaulted( hTIFF, TIFFTAG_COMPRESSION, &nCompressFlag ); - TIFFGetFieldDefaulted( hTIFF, TIFFTAG_SAMPLEFORMAT, &nSampleFormat ); - - if( nPhotometric == PHOTOMETRIC_YCBCR || nPhotometric == PHOTOMETRIC_ITULAB ) - { - if( nBitsPerPixel != 8 || nSamples != 3 || nPlanarConfig != PLANARCONFIG_CONTIG || - nSampleFormat != SAMPLEFORMAT_UINT) - { - /* TODO: use of TIFFError is inconsistent with use of fprintf in addtiffo.c, sort out */ - TIFFErrorExt( TIFFClientdata(hTIFF), "TIFFBuildOverviews", - "File `%s' has an unsupported subsampling configuration.\n", - TIFFFileName(hTIFF) ); - /* If you need support for this particular flavor, please contact either - * Frank Warmerdam warmerdam@pobox.com - * Joris Van Damme info@awaresystems.be - */ - return; - } - bSubsampled = 1; - TIFFGetField( hTIFF, TIFFTAG_YCBCRSUBSAMPLING, &nHorSubsampling, &nVerSubsampling ); - /* TODO: find out if maybe TIFFGetFieldDefaulted is better choice for YCbCrSubsampling tag */ - } - else - { - if( nBitsPerPixel < 8 ) - { - /* TODO: use of TIFFError is inconsistent with use of fprintf in addtiffo.c, sort out */ - TIFFErrorExt( TIFFClientdata(hTIFF), "TIFFBuildOverviews", - "File `%s' has samples of %d bits per sample. Sample\n" - "sizes of less than 8 bits per sample are not supported.\n", - TIFFFileName(hTIFF), nBitsPerPixel ); - return; - } - bSubsampled = 0; - nHorSubsampling = 1; - nVerSubsampling = 1; - } - -/* -------------------------------------------------------------------- */ -/* Turn off warnings to avoid alot of repeated warnings while */ -/* rereading directories. */ -/* -------------------------------------------------------------------- */ - pfnWarning = TIFFSetWarningHandler( NULL ); - -/* -------------------------------------------------------------------- */ -/* Get the base raster block size. */ -/* -------------------------------------------------------------------- */ - if( TIFFGetField( hTIFF, TIFFTAG_ROWSPERSTRIP, &(nBlockYSize) ) ) - { - nBlockXSize = nXSize; - bTiled = FALSE; - } - else - { - TIFFGetField( hTIFF, TIFFTAG_TILEWIDTH, &nBlockXSize ); - TIFFGetField( hTIFF, TIFFTAG_TILELENGTH, &nBlockYSize ); - bTiled = TRUE; - } - -/* -------------------------------------------------------------------- */ -/* Capture the pallette if there is one. */ -/* -------------------------------------------------------------------- */ - if( TIFFGetField( hTIFF, TIFFTAG_COLORMAP, - &panRedMap, &panGreenMap, &panBlueMap ) ) - { - uint16 *panRed2, *panGreen2, *panBlue2; - int nColorCount = 1 << nBitsPerPixel; - - panRed2 = (uint16 *) _TIFFmalloc(2*nColorCount); - panGreen2 = (uint16 *) _TIFFmalloc(2*nColorCount); - panBlue2 = (uint16 *) _TIFFmalloc(2*nColorCount); - - memcpy( panRed2, panRedMap, 2 * nColorCount ); - memcpy( panGreen2, panGreenMap, 2 * nColorCount ); - memcpy( panBlue2, panBlueMap, 2 * nColorCount ); - - panRedMap = panRed2; - panGreenMap = panGreen2; - panBlueMap = panBlue2; - } - else - { - panRedMap = panGreenMap = panBlueMap = NULL; - } - -/* -------------------------------------------------------------------- */ -/* Initialize overviews. */ -/* -------------------------------------------------------------------- */ - papoRawBIs = (TIFFOvrCache **) _TIFFmalloc(nOverviews*sizeof(void*)); - - for( i = 0; i < nOverviews; i++ ) - { - int nOXSize, nOYSize, nOBlockXSize, nOBlockYSize; - uint32 nDirOffset; - - nOXSize = (nXSize + panOvList[i] - 1) / panOvList[i]; - nOYSize = (nYSize + panOvList[i] - 1) / panOvList[i]; - - nOBlockXSize = MIN((int)nBlockXSize,nOXSize); - nOBlockYSize = MIN((int)nBlockYSize,nOYSize); - - if( bTiled ) - { - if( (nOBlockXSize % 16) != 0 ) - nOBlockXSize = nOBlockXSize + 16 - (nOBlockXSize % 16); - - if( (nOBlockYSize % 16) != 0 ) - nOBlockYSize = nOBlockYSize + 16 - (nOBlockYSize % 16); - } - - nDirOffset = TIFF_WriteOverview( hTIFF, nOXSize, nOYSize, - nBitsPerPixel, nPlanarConfig, - nSamples, nOBlockXSize, nOBlockYSize, - bTiled, nCompressFlag, nPhotometric, - nSampleFormat, - panRedMap, panGreenMap, panBlueMap, - bUseSubIFDs, - nHorSubsampling, nVerSubsampling ); - - papoRawBIs[i] = TIFFCreateOvrCache( hTIFF, nDirOffset ); - } - - if( panRedMap != NULL ) - { - _TIFFfree( panRedMap ); - _TIFFfree( panGreenMap ); - _TIFFfree( panBlueMap ); - } - -/* -------------------------------------------------------------------- */ -/* Allocate a buffer to hold a source block. */ -/* -------------------------------------------------------------------- */ - if( bTiled ) - pabySrcTile = (unsigned char *) _TIFFmalloc(TIFFTileSize(hTIFF)); - else - pabySrcTile = (unsigned char *) _TIFFmalloc(TIFFStripSize(hTIFF)); - -/* -------------------------------------------------------------------- */ -/* Loop over the source raster, applying data to the */ -/* destination raster. */ -/* -------------------------------------------------------------------- */ - for( nSYOff = 0; nSYOff < (int) nYSize; nSYOff += nBlockYSize ) - { - for( nSXOff = 0; nSXOff < (int) nXSize; nSXOff += nBlockXSize ) - { - /* - * Read and resample into the various overview images. - */ - - TIFF_ProcessFullResBlock( hTIFF, nPlanarConfig, - bSubsampled,nHorSubsampling,nVerSubsampling, - nOverviews, panOvList, - nBitsPerPixel, nSamples, papoRawBIs, - nSXOff, nSYOff, pabySrcTile, - nBlockXSize, nBlockYSize, - nSampleFormat, pszResampleMethod ); - } - } - - _TIFFfree( pabySrcTile ); - -/* -------------------------------------------------------------------- */ -/* Cleanup the rawblockedimage files. */ -/* -------------------------------------------------------------------- */ - for( i = 0; i < nOverviews; i++ ) - { - TIFFDestroyOvrCache( papoRawBIs[i] ); - } - - if( papoRawBIs != NULL ) - _TIFFfree( papoRawBIs ); - - TIFFSetWarningHandler( pfnWarning ); -} - - -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/tiff/contrib/addtiffo/tif_ovrcache.c b/tiff/contrib/addtiffo/tif_ovrcache.c deleted file mode 100644 index 646b534..0000000 --- a/tiff/contrib/addtiffo/tif_ovrcache.c +++ /dev/null @@ -1,341 +0,0 @@ -/****************************************************************************** - * $Id: tif_ovrcache.c,v 1.7.2.1 2010-06-08 18:50:40 bfriesen Exp $ - * - * Project: TIFF Overview Builder - * Purpose: Library functions to maintain two rows of tiles or two strips - * of data for output overviews as an output cache. - * Author: Frank Warmerdam, warmerdam@pobox.com - * - ****************************************************************************** - * Copyright (c) 2000, Frank Warmerdam - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - */ - -#include "tiffiop.h" -#include "tif_ovrcache.h" -#include <assert.h> - -/************************************************************************/ -/* TIFFCreateOvrCache() */ -/* */ -/* Create an overview cache to hold two rows of blocks from an */ -/* existing TIFF directory. */ -/************************************************************************/ - -TIFFOvrCache *TIFFCreateOvrCache( TIFF *hTIFF, int nDirOffset ) - -{ - TIFFOvrCache *psCache; - uint32 nBaseDirOffset; - - psCache = (TIFFOvrCache *) _TIFFmalloc(sizeof(TIFFOvrCache)); - psCache->nDirOffset = nDirOffset; - psCache->hTIFF = hTIFF; - -/* -------------------------------------------------------------------- */ -/* Get definition of this raster from the TIFF file itself. */ -/* -------------------------------------------------------------------- */ - nBaseDirOffset = TIFFCurrentDirOffset( psCache->hTIFF ); - TIFFSetSubDirectory( hTIFF, nDirOffset ); - - TIFFGetField( hTIFF, TIFFTAG_IMAGEWIDTH, &(psCache->nXSize) ); - TIFFGetField( hTIFF, TIFFTAG_IMAGELENGTH, &(psCache->nYSize) ); - - TIFFGetField( hTIFF, TIFFTAG_BITSPERSAMPLE, &(psCache->nBitsPerPixel) ); - TIFFGetField( hTIFF, TIFFTAG_SAMPLESPERPIXEL, &(psCache->nSamples) ); - TIFFGetField( hTIFF, TIFFTAG_PLANARCONFIG, &(psCache->nPlanarConfig) ); - - if( !TIFFIsTiled( hTIFF ) ) - { - TIFFGetField( hTIFF, TIFFTAG_ROWSPERSTRIP, &(psCache->nBlockYSize) ); - psCache->nBlockXSize = psCache->nXSize; - psCache->nBytesPerBlock = TIFFStripSize(hTIFF); - psCache->bTiled = FALSE; - } - else - { - TIFFGetField( hTIFF, TIFFTAG_TILEWIDTH, &(psCache->nBlockXSize) ); - TIFFGetField( hTIFF, TIFFTAG_TILELENGTH, &(psCache->nBlockYSize) ); - psCache->nBytesPerBlock = TIFFTileSize(hTIFF); - psCache->bTiled = TRUE; - } - -/* -------------------------------------------------------------------- */ -/* Compute some values from this. */ -/* -------------------------------------------------------------------- */ - - psCache->nBlocksPerRow = (psCache->nXSize + psCache->nBlockXSize - 1) - / psCache->nBlockXSize; - psCache->nBlocksPerColumn = (psCache->nYSize + psCache->nBlockYSize - 1) - / psCache->nBlockYSize; - - if (psCache->nPlanarConfig == PLANARCONFIG_SEPARATE) - psCache->nBytesPerRow = psCache->nBytesPerBlock - * psCache->nBlocksPerRow * psCache->nSamples; - else - psCache->nBytesPerRow = - psCache->nBytesPerBlock * psCache->nBlocksPerRow; - - -/* -------------------------------------------------------------------- */ -/* Allocate and initialize the data buffers. */ -/* -------------------------------------------------------------------- */ - - psCache->pabyRow1Blocks = - (unsigned char *) _TIFFmalloc(psCache->nBytesPerRow); - psCache->pabyRow2Blocks = - (unsigned char *) _TIFFmalloc(psCache->nBytesPerRow); - - if( psCache->pabyRow1Blocks == NULL - || psCache->pabyRow2Blocks == NULL ) - { - TIFFErrorExt( hTIFF->tif_clientdata, hTIFF->tif_name, - "Can't allocate memory for overview cache." ); - /* TODO: use of TIFFError is inconsistent with use of fprintf in addtiffo.c, sort out */ - return NULL; - } - - _TIFFmemset( psCache->pabyRow1Blocks, 0, psCache->nBytesPerRow ); - _TIFFmemset( psCache->pabyRow2Blocks, 0, psCache->nBytesPerRow ); - - psCache->nBlockOffset = 0; - - TIFFSetSubDirectory( psCache->hTIFF, nBaseDirOffset ); - - return psCache; -} - -/************************************************************************/ -/* TIFFWriteOvrRow() */ -/* */ -/* Write one entire row of blocks (row 1) to the tiff file, and */ -/* then rotate the block buffers, essentially moving things */ -/* down by one block. */ -/************************************************************************/ - -static void TIFFWriteOvrRow( TIFFOvrCache * psCache ) - -{ - int nRet, iTileX, iTileY = psCache->nBlockOffset; - unsigned char *pabyData; - uint32 nBaseDirOffset; - uint32 RowsInStrip; - -/* -------------------------------------------------------------------- */ -/* If the output cache is multi-byte per sample, and the file */ -/* being written to is of a different byte order than the current */ -/* platform, we will need to byte swap the data. */ -/* -------------------------------------------------------------------- */ - if( TIFFIsByteSwapped(psCache->hTIFF) ) - { - if( psCache->nBitsPerPixel == 16 ) - TIFFSwabArrayOfShort( (uint16 *) psCache->pabyRow1Blocks, - (psCache->nBytesPerBlock * psCache->nSamples) / 2 ); - - else if( psCache->nBitsPerPixel == 32 ) - TIFFSwabArrayOfLong( (uint32 *) psCache->pabyRow1Blocks, - (psCache->nBytesPerBlock * psCache->nSamples) / 4 ); - - else if( psCache->nBitsPerPixel == 64 ) - TIFFSwabArrayOfDouble( (double *) psCache->pabyRow1Blocks, - (psCache->nBytesPerBlock * psCache->nSamples) / 8 ); - } - -/* -------------------------------------------------------------------- */ -/* Record original directory position, so we can restore it at */ -/* end. */ -/* -------------------------------------------------------------------- */ - nBaseDirOffset = TIFFCurrentDirOffset( psCache->hTIFF ); - nRet = TIFFSetSubDirectory( psCache->hTIFF, psCache->nDirOffset ); - assert( nRet == 1 ); - -/* -------------------------------------------------------------------- */ -/* Write blocks to TIFF file. */ -/* -------------------------------------------------------------------- */ - for( iTileX = 0; iTileX < psCache->nBlocksPerRow; iTileX++ ) - { - int nTileID; - - if (psCache->nPlanarConfig == PLANARCONFIG_SEPARATE) - { - int iSample; - - for( iSample = 0; iSample < psCache->nSamples; iSample++ ) - { - pabyData = TIFFGetOvrBlock( psCache, iTileX, iTileY, iSample ); - - if( psCache->bTiled ) - { - nTileID = TIFFComputeTile( psCache->hTIFF, - iTileX * psCache->nBlockXSize, - iTileY * psCache->nBlockYSize, - 0, (tsample_t) iSample ); - TIFFWriteEncodedTile( psCache->hTIFF, nTileID, - pabyData, - TIFFTileSize(psCache->hTIFF) ); - } - else - { - nTileID = TIFFComputeStrip( psCache->hTIFF, - iTileY * psCache->nBlockYSize, - (tsample_t) iSample ); - RowsInStrip=psCache->nBlockYSize; - if ((iTileY+1)*psCache->nBlockYSize>psCache->nYSize) - RowsInStrip=psCache->nYSize-iTileY*psCache->nBlockYSize; - TIFFWriteEncodedStrip( psCache->hTIFF, nTileID, - pabyData, - TIFFVStripSize(psCache->hTIFF,RowsInStrip) ); - } - } - - } - else - { - pabyData = TIFFGetOvrBlock( psCache, iTileX, iTileY, 0 ); - - if( psCache->bTiled ) - { - nTileID = TIFFComputeTile( psCache->hTIFF, - iTileX * psCache->nBlockXSize, - iTileY * psCache->nBlockYSize, - 0, 0 ); - TIFFWriteEncodedTile( psCache->hTIFF, nTileID, - pabyData, - TIFFTileSize(psCache->hTIFF) ); - } - else - { - nTileID = TIFFComputeStrip( psCache->hTIFF, - iTileY * psCache->nBlockYSize, - 0 ); - RowsInStrip=psCache->nBlockYSize; - if ((iTileY+1)*psCache->nBlockYSize>psCache->nYSize) - RowsInStrip=psCache->nYSize-iTileY*psCache->nBlockYSize; - TIFFWriteEncodedStrip( psCache->hTIFF, nTileID, - pabyData, - TIFFVStripSize(psCache->hTIFF,RowsInStrip) ); - } - } - } - /* TODO: add checks on error status return of TIFFWriteEncodedTile and TIFFWriteEncodedStrip */ - -/* -------------------------------------------------------------------- */ -/* Rotate buffers. */ -/* -------------------------------------------------------------------- */ - pabyData = psCache->pabyRow1Blocks; - psCache->pabyRow1Blocks = psCache->pabyRow2Blocks; - psCache->pabyRow2Blocks = pabyData; - - _TIFFmemset( pabyData, 0, psCache->nBytesPerRow ); - - psCache->nBlockOffset++; - -/* -------------------------------------------------------------------- */ -/* Restore access to original directory. */ -/* -------------------------------------------------------------------- */ - TIFFFlush( psCache->hTIFF ); - /* TODO: add checks on error status return of TIFFFlush */ - TIFFSetSubDirectory( psCache->hTIFF, nBaseDirOffset ); - /* TODO: add checks on error status return of TIFFSetSubDirectory */ -} - -/************************************************************************/ -/* TIFFGetOvrBlock() */ -/************************************************************************/ - -/* TODO: make TIFF_Downsample handle iSample offset, so that we can - * do with a single TIFFGetOvrBlock and no longer need TIFFGetOvrBlock_Subsampled */ -unsigned char *TIFFGetOvrBlock( TIFFOvrCache *psCache, int iTileX, int iTileY, - int iSample ) - -{ - int nRowOffset; - - if( iTileY > psCache->nBlockOffset + 1 ) - TIFFWriteOvrRow( psCache ); - - assert( iTileX >= 0 && iTileX < psCache->nBlocksPerRow ); - assert( iTileY >= 0 && iTileY < psCache->nBlocksPerColumn ); - assert( iTileY >= psCache->nBlockOffset - && iTileY < psCache->nBlockOffset+2 ); - assert( iSample >= 0 && iSample < psCache->nSamples ); - - if (psCache->nPlanarConfig == PLANARCONFIG_SEPARATE) - nRowOffset = ((iTileX * psCache->nSamples) + iSample) - * psCache->nBytesPerBlock; - else - nRowOffset = iTileX * psCache->nBytesPerBlock + - (psCache->nBitsPerPixel + 7) / 8 * iSample; - - if( iTileY == psCache->nBlockOffset ) - return psCache->pabyRow1Blocks + nRowOffset; - else - return psCache->pabyRow2Blocks + nRowOffset; -} - -/************************************************************************/ -/* TIFFGetOvrBlock_Subsampled() */ -/************************************************************************/ - -unsigned char *TIFFGetOvrBlock_Subsampled( TIFFOvrCache *psCache, - int iTileX, int iTileY ) - -{ - int nRowOffset; - - if( iTileY > psCache->nBlockOffset + 1 ) - TIFFWriteOvrRow( psCache ); - - assert( iTileX >= 0 && iTileX < psCache->nBlocksPerRow ); - assert( iTileY >= 0 && iTileY < psCache->nBlocksPerColumn ); - assert( iTileY >= psCache->nBlockOffset - && iTileY < psCache->nBlockOffset+2 ); - assert( psCache->nPlanarConfig != PLANARCONFIG_SEPARATE ); - - nRowOffset = iTileX * psCache->nBytesPerBlock; - - if( iTileY == psCache->nBlockOffset ) - return psCache->pabyRow1Blocks + nRowOffset; - else - return psCache->pabyRow2Blocks + nRowOffset; -} - -/************************************************************************/ -/* TIFFDestroyOvrCache() */ -/************************************************************************/ - -void TIFFDestroyOvrCache( TIFFOvrCache * psCache ) - -{ - while( psCache->nBlockOffset < psCache->nBlocksPerColumn ) - TIFFWriteOvrRow( psCache ); - - _TIFFfree( psCache->pabyRow1Blocks ); - _TIFFfree( psCache->pabyRow2Blocks ); - _TIFFfree( psCache ); -} -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/tiff/contrib/addtiffo/tif_ovrcache.h b/tiff/contrib/addtiffo/tif_ovrcache.h deleted file mode 100644 index 928de36..0000000 --- a/tiff/contrib/addtiffo/tif_ovrcache.h +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - * tif_ovrcache.h,v 1.3 2005/05/25 09:03:16 dron Exp - * - * Project: TIFF Overview Builder - * Purpose: Library functions to maintain two rows of tiles or two strips - * of data for output overviews as an output cache. - * Author: Frank Warmerdam, warmerdam@pobox.com - * - * This code could potentially be used by other applications wanting to - * manage a once-through write cache. - * - ****************************************************************************** - * Copyright (c) 2000, Frank Warmerdam - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - */ - -#ifndef TIF_OVRCACHE_H_INCLUDED -#define TIF_OVRCACHE_H_INCLUDED - -#include "tiffio.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -typedef struct -{ - uint32 nXSize; - uint32 nYSize; - - uint16 nBitsPerPixel; - uint16 nSamples; - uint16 nPlanarConfig; - uint32 nBlockXSize; - uint32 nBlockYSize; - uint32 nBytesPerBlock; - uint32 nBytesPerRow; - - int nBlocksPerRow; - int nBlocksPerColumn; - - int nBlockOffset; /* what block is the first in papabyBlocks? */ - unsigned char *pabyRow1Blocks; - unsigned char *pabyRow2Blocks; - - int nDirOffset; - TIFF *hTIFF; - int bTiled; - -} TIFFOvrCache; - -TIFFOvrCache *TIFFCreateOvrCache( TIFF *hTIFF, int nDirOffset ); -unsigned char *TIFFGetOvrBlock( TIFFOvrCache *psCache, int iTileX, int iTileY, - int iSample ); -unsigned char *TIFFGetOvrBlock_Subsampled( TIFFOvrCache *psCache, int iTileX, int iTileY ); -void TIFFDestroyOvrCache( TIFFOvrCache * ); - -void TIFFBuildOverviews( TIFF *, int, int *, int, const char *, - int (*)(double,void*), void * ); - -void TIFF_ProcessFullResBlock( TIFF *hTIFF, int nPlanarConfig, - int bSubsampled, int nHorSamples, int nVerSamples, - int nOverviews, int * panOvList, - int nBitsPerPixel, - int nSamples, TIFFOvrCache ** papoRawBIs, - int nSXOff, int nSYOff, - unsigned char *pabySrcTile, - int nBlockXSize, int nBlockYSize, - int nSampleFormat, const char * pszResampling ); - -uint32 TIFF_WriteOverview( TIFF *, int, int, int, int, int, int, int, - int, int, int, int, unsigned short *, - unsigned short *, unsigned short *, int, - int, int); - - - -#if defined(__cplusplus) -} -#endif - -#endif /* ndef TIF_OVRCACHE_H_INCLUDED */ - -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ |