X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=utilities%2FCxImage%2Ftif_xfile.cpp;h=ac92c954b00e17ff44cd91f14a7009ca0d3338e6;hb=b07ea516b22fea80f721f2f984c4ae9e3c33ef0a;hp=98c83c1bf52df9e352ec9cde4f0bda486ea7191a;hpb=3fd15028ab81e6746d3af96695526d7d973a26c8;p=clitk.git diff --git a/utilities/CxImage/tif_xfile.cpp b/utilities/CxImage/tif_xfile.cpp index 98c83c1..ac92c95 100644 --- a/utilities/CxImage/tif_xfile.cpp +++ b/utilities/CxImage/tif_xfile.cpp @@ -1,218 +1,218 @@ -/* - * TIFF file IO, using CxFile. - */ - -#ifdef WIN32 - #include -#endif -#include - -#include "ximage.h" - -#if CXIMAGE_SUPPORT_TIF - -#include "../tiff/tiffiop.h" - -#include "xfile.h" - -static tsize_t -_tiffReadProcEx(thandle_t fd, tdata_t buf, tsize_t size) -{ - return (tsize_t)((CxFile*)fd)->Read(buf, 1, size); -} - -static tsize_t -_tiffWriteProcEx(thandle_t fd, tdata_t buf, tsize_t size) -{ - return (tsize_t)((CxFile*)fd)->Write(buf, 1, size); -} - -static toff_t -_tiffSeekProcEx(thandle_t fd, toff_t off, int whence) -{ - if ( off == 0xFFFFFFFF ) - return 0xFFFFFFFF; - if (!((CxFile*)fd)->Seek(off, whence)) - return 0xFFFFFFFF; - if (whence == SEEK_SET) - return off; - - return (toff_t)((CxFile*)fd)->Tell(); -} - -// Return nonzero if error -static int -_tiffCloseProcEx(thandle_t /*fd*/) -{ -// return !((CxFile*)fd)->Close(); // "//" needed for memory files - return 0; -} - -#include - -static toff_t -_tiffSizeProcEx(thandle_t fd) -{ - return ((CxFile*)fd)->Size(); -} - -static int -_tiffMapProcEx(thandle_t /*fd*/, tdata_t* /*pbase*/, toff_t* /*psize*/) -{ - return (0); -} - -static void -_tiffUnmapProcEx(thandle_t /*fd*/, tdata_t /*base*/, toff_t /*size*/) -{ -} - -// Open a TIFF file descriptor for read/writing. -/* -TIFF* -TIFFOpen(const char* name, const char* mode) -{ - static const char module[] = "TIFFOpen"; - FILE* stream = fopen(name, mode); - if (stream == NULL) - { - TIFFError(module, "%s: Cannot open", name); - return NULL; - } - return (TIFFFdOpen((int)stream, name, mode)); -} -*/ - -TIFF* -_TIFFFdOpen(void* fd, const char* name, const char* mode) -{ - TIFF* tif; - - tif = TIFFClientOpen(name, mode, - (thandle_t) fd, - _tiffReadProcEx, _tiffWriteProcEx, _tiffSeekProcEx, _tiffCloseProcEx, - _tiffSizeProcEx, _tiffMapProcEx, _tiffUnmapProcEx); - if (tif) - tif->tif_fd = fd; - return (tif); -} - -extern "C" TIFF* _TIFFOpenEx(CxFile* stream, const char* mode) -{ - return (_TIFFFdOpen(stream, "TIFF IMAGE", mode)); -} - -#ifdef __GNUC__ -extern char* malloc(); -extern char* realloc(); -#else -#include -#endif - -tdata_t -_TIFFmalloc(tsize_t s) -{ - return (malloc((size_t) s)); -} - -void -_TIFFfree(tdata_t p) -{ - free(p); -} - -tdata_t -_TIFFrealloc(tdata_t p, tsize_t s) -{ - return (realloc(p, (size_t) s)); -} - -void -_TIFFmemset(tdata_t p, int v, tsize_t c) -{ - memset(p, v, (size_t) c); -} - -void -_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c) -{ - memcpy(d, s, (size_t) c); -} - -int -_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c) -{ - return (memcmp(p1, p2, (size_t) c)); -} - -#ifndef UNICODE -#define DbgPrint wvsprintf -#define DbgPrint2 wsprintf -#define DbgMsgBox MessageBox -#else -#define DbgPrint wvsprintfA -#define DbgPrint2 wsprintfA -#define DbgMsgBox MessageBoxA -#endif - -static void -Win32WarningHandler(const char* module, const char* fmt, va_list ap) -{ -#ifdef _DEBUG -#if (!defined(_CONSOLE) && !defined(_WIN32_WCE) && defined(WIN32)) - LPSTR szTitle; - LPSTR szTmp; - LPCSTR szTitleText = "%s Warning"; - LPCSTR szDefaultModule = "TIFFLIB"; - szTmp = (module == NULL) ? (LPSTR)szDefaultModule : (LPSTR)module; - if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmp) + - strlen(szTitleText) + strlen(fmt) + 128))) == NULL) - return; - DbgPrint2(szTitle, szTitleText, szTmp); - szTmp = szTitle + (strlen(szTitle)+2); - DbgPrint(szTmp, fmt, ap); - DbgMsgBox(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 -#endif -} -TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler; - -static void -Win32ErrorHandler(const char* module, const char* fmt, va_list ap) -{ -#ifdef _DEBUG -#if (!defined(_CONSOLE) && !defined(_WIN32_WCE) && defined(WIN32)) - LPSTR szTitle; - LPSTR szTmp; - LPCSTR szTitleText = "%s Error"; - LPCSTR szDefaultModule = "TIFFLIB"; - szTmp = (module == NULL) ? (LPSTR)szDefaultModule : (LPSTR)module; - if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmp) + - strlen(szTitleText) + strlen(fmt) + 128))) == NULL) - return; - DbgPrint2(szTitle, szTitleText, szTmp); - szTmp = szTitle + (strlen(szTitle)+2); - DbgPrint(szTmp, fmt, ap); - DbgMsgBox(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 -#endif -} -TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler; - -#endif - +/* + * TIFF file IO, using CxFile. + */ + +#ifdef WIN32 + #include +#endif +#include + +#include "ximage.h" + +#if CXIMAGE_SUPPORT_TIF + +#include "../tiff/tiffiop.h" + +#include "xfile.h" + +static tsize_t +_tiffReadProcEx(thandle_t fd, tdata_t buf, tsize_t size) +{ + return (tsize_t)((CxFile*)fd)->Read(buf, 1, size); +} + +static tsize_t +_tiffWriteProcEx(thandle_t fd, tdata_t buf, tsize_t size) +{ + return (tsize_t)((CxFile*)fd)->Write(buf, 1, size); +} + +static toff_t +_tiffSeekProcEx(thandle_t fd, toff_t off, int whence) +{ + if ( off == 0xFFFFFFFF ) + return 0xFFFFFFFF; + if (!((CxFile*)fd)->Seek(off, whence)) + return 0xFFFFFFFF; + if (whence == SEEK_SET) + return off; + + return (toff_t)((CxFile*)fd)->Tell(); +} + +// Return nonzero if error +static int +_tiffCloseProcEx(thandle_t /*fd*/) +{ +// return !((CxFile*)fd)->Close(); // "//" needed for memory files + return 0; +} + +#include + +static toff_t +_tiffSizeProcEx(thandle_t fd) +{ + return ((CxFile*)fd)->Size(); +} + +static int +_tiffMapProcEx(thandle_t /*fd*/, tdata_t* /*pbase*/, toff_t* /*psize*/) +{ + return (0); +} + +static void +_tiffUnmapProcEx(thandle_t /*fd*/, tdata_t /*base*/, toff_t /*size*/) +{ +} + +// Open a TIFF file descriptor for read/writing. +/* +TIFF* +TIFFOpen(const char* name, const char* mode) +{ + static const char module[] = "TIFFOpen"; + FILE* stream = fopen(name, mode); + if (stream == NULL) + { + TIFFError(module, "%s: Cannot open", name); + return NULL; + } + return (TIFFFdOpen((int)stream, name, mode)); +} +*/ + +TIFF* +_TIFFFdOpen(void* fd, const char* name, const char* mode) +{ + TIFF* tif; + + tif = TIFFClientOpen(name, mode, + (thandle_t) fd, + _tiffReadProcEx, _tiffWriteProcEx, _tiffSeekProcEx, _tiffCloseProcEx, + _tiffSizeProcEx, _tiffMapProcEx, _tiffUnmapProcEx); + if (tif) + tif->tif_fd = fd; + return (tif); +} + +extern "C" TIFF* _TIFFOpenEx(CxFile* stream, const char* mode) +{ + return (_TIFFFdOpen(stream, "TIFF IMAGE", mode)); +} + +#ifdef __GNUC__ +extern char* malloc(); +extern char* realloc(); +#else +#include +#endif + +tdata_t +_TIFFmalloc(tsize_t s) +{ + return (malloc((size_t) s)); +} + +void +_TIFFfree(tdata_t p) +{ + free(p); +} + +tdata_t +_TIFFrealloc(tdata_t p, tsize_t s) +{ + return (realloc(p, (size_t) s)); +} + +void +_TIFFmemset(tdata_t p, int v, tsize_t c) +{ + memset(p, v, (size_t) c); +} + +void +_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c) +{ + memcpy(d, s, (size_t) c); +} + +int +_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c) +{ + return (memcmp(p1, p2, (size_t) c)); +} + +#ifndef UNICODE +#define DbgPrint wvsprintf +#define DbgPrint2 wsprintf +#define DbgMsgBox MessageBox +#else +#define DbgPrint wvsprintfA +#define DbgPrint2 wsprintfA +#define DbgMsgBox MessageBoxA +#endif + +static void +Win32WarningHandler(const char* module, const char* fmt, va_list ap) +{ +#ifdef _DEBUG +#if (!defined(_CONSOLE) && !defined(_WIN32_WCE) && defined(WIN32)) + LPSTR szTitle; + LPSTR szTmp; + LPCSTR szTitleText = "%s Warning"; + LPCSTR szDefaultModule = "TIFFLIB"; + szTmp = (module == NULL) ? (LPSTR)szDefaultModule : (LPSTR)module; + if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmp) + + strlen(szTitleText) + strlen(fmt) + 128))) == NULL) + return; + DbgPrint2(szTitle, szTitleText, szTmp); + szTmp = szTitle + (strlen(szTitle)+2); + DbgPrint(szTmp, fmt, ap); + DbgMsgBox(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 +#endif +} +TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler; + +static void +Win32ErrorHandler(const char* module, const char* fmt, va_list ap) +{ +#ifdef _DEBUG +#if (!defined(_CONSOLE) && !defined(_WIN32_WCE) && defined(WIN32)) + LPSTR szTitle; + LPSTR szTmp; + LPCSTR szTitleText = "%s Error"; + LPCSTR szDefaultModule = "TIFFLIB"; + szTmp = (module == NULL) ? (LPSTR)szDefaultModule : (LPSTR)module; + if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmp) + + strlen(szTitleText) + strlen(fmt) + 128))) == NULL) + return; + DbgPrint2(szTitle, szTitleText, szTmp); + szTmp = szTitle + (strlen(szTitle)+2); + DbgPrint(szTmp, fmt, ap); + DbgMsgBox(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 +#endif +} +TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler; + +#endif +