From 746e0c9afdcf41091c188dba1ccfc4609e702376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 14 Jul 2010 15:42:44 +0000 Subject: [PATCH 01/23] [USER32] - WINE creates an alpha bitmap on icon creation, we do it when drawing it, so we need to create a bitmap which holds alpha information. - Add error handling to CreateIconIndirect. svn path=/trunk/; revision=48041 --- reactos/dll/win32/user32/windows/cursoricon.c | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/reactos/dll/win32/user32/windows/cursoricon.c b/reactos/dll/win32/user32/windows/cursoricon.c index d0936a93b1c..0c88734834c 100644 --- a/reactos/dll/win32/user32/windows/cursoricon.c +++ b/reactos/dll/win32/user32/windows/cursoricon.c @@ -485,8 +485,8 @@ static BOOL create_icon_bitmaps( const BITMAPINFO *bmi, int width, int height, else { if (!(*mask = CreateBitmap( width, height, 1, 1, NULL ))) goto done; - if (!(*color = CreateBitmap( width, height, GetDeviceCaps( screen_dc, PLANES ), - GetDeviceCaps( screen_dc, BITSPIXEL ), NULL ))) + if (!(*color = CreateBitmap( width, height, bmi->bmiHeader.biPlanes, + bmi->bmiHeader.biBitCount, NULL ))) { DeleteObject( *mask ); goto done; @@ -1475,10 +1475,29 @@ HICON WINAPI CreateIconIndirect(PICONINFO iconinfo) height = bmpXor.bmHeight; if (bmpXor.bmPlanes * bmpXor.bmBitsPixel != 1) { - color = CreateCompatibleBitmap( screen_dc, width, height ); + color = CreateBitmap( width, height, bmpXor.bmPlanes, bmpXor.bmBitsPixel, NULL ); + if(!color) + { + ERR("Unable to create color bitmap!\n"); + return NULL; + } mask = CreateBitmap( width, height, 1, 1, NULL ); + if(!mask) + { + ERR("Unable to create mask bitmap!\n"); + DeleteObject(color); + return NULL; + } } - else mask = CreateBitmap( width, height * 2, 1, 1, NULL ); + else + { + mask = CreateBitmap( width, height * 2, 1, 1, NULL ); + if(!mask) + { + ERR("Unable to create mask bitmap!\n"); + return NULL; + } + } } else { From 1954fd59da8565c58e8900cecddb9eaac325dac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 14 Jul 2010 16:12:32 +0000 Subject: [PATCH 02/23] [WIN32K] - Properly initialize hVisRgn in CLIPPING_UpdateGCRegion This fixes a whole bunch of "IntGdiCombineRgn requires hSrc2 != NULL for combine mode 1!", and probably some bugs. Dedicated to encod3d. svn path=/trunk/; revision=48042 --- reactos/subsystems/win32/win32k/objects/cliprgn.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/cliprgn.c b/reactos/subsystems/win32/win32k/objects/cliprgn.c index ea88cf3047c..7bfcf807fbe 100644 --- a/reactos/subsystems/win32/win32k/objects/cliprgn.c +++ b/reactos/subsystems/win32/win32k/objects/cliprgn.c @@ -26,7 +26,7 @@ int FASTCALL CLIPPING_UpdateGCRegion(DC* Dc) { PROSRGNDATA CombinedRegion; - HRGN hRgnVis = NULL; + HRGN hRgnVis = Dc->prgnVis->BaseObject.hHmgr; /* Experiment with API region based on wine.. */ if (Dc->rosdc.hClipRgn && Dc->dclevel.prgnMeta) @@ -56,7 +56,7 @@ CLIPPING_UpdateGCRegion(DC* Dc) Dc->rosdc.hGCClipRgn = IntSysCreateRectRgn(0, 0, 0, 0); if (Dc->rosdc.hClipRgn == NULL) - NtGdiCombineRgn(Dc->rosdc.hGCClipRgn, ((PROSRGNDATA)Dc->prgnVis)->BaseObject.hHmgr, 0, RGN_COPY); + NtGdiCombineRgn(Dc->rosdc.hGCClipRgn, hRgnVis, 0, RGN_COPY); else NtGdiCombineRgn(Dc->rosdc.hGCClipRgn, Dc->rosdc.hClipRgn, hRgnVis, RGN_AND); From a67f202e5ee51815069a4ddcff8c69f7a6deeaab Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Wed, 14 Jul 2010 17:12:22 +0000 Subject: [PATCH 03/23] Fix libtiff's external functions. svn path=/trunk/; revision=48043 --- reactos/dll/3rdparty/libtiff/libtiff.rbuild | 5 +- reactos/dll/3rdparty/libtiff/rosdiff.patch | 15 + reactos/dll/3rdparty/libtiff/tif_open.c | 3 + .../reactos/libs/libtiff/rosdiff.patch | 445 ++++++++++++++++++ reactos/include/reactos/libs/libtiff/tiffio.h | 362 +++++++------- 5 files changed, 664 insertions(+), 166 deletions(-) create mode 100644 reactos/dll/3rdparty/libtiff/rosdiff.patch create mode 100644 reactos/include/reactos/libs/libtiff/rosdiff.patch diff --git a/reactos/dll/3rdparty/libtiff/libtiff.rbuild b/reactos/dll/3rdparty/libtiff/libtiff.rbuild index 415f5b64ee3..1f37bc479f2 100644 --- a/reactos/dll/3rdparty/libtiff/libtiff.rbuild +++ b/reactos/dll/3rdparty/libtiff/libtiff.rbuild @@ -3,8 +3,9 @@ - - + + + . include/reactos/libs/zlib include/reactos/libs/libtiff diff --git a/reactos/dll/3rdparty/libtiff/rosdiff.patch b/reactos/dll/3rdparty/libtiff/rosdiff.patch new file mode 100644 index 00000000000..f3e5f3d6aae --- /dev/null +++ b/reactos/dll/3rdparty/libtiff/rosdiff.patch @@ -0,0 +1,15 @@ +Index: tif_open.c +=================================================================== +--- tif_open.c (revision 48037) ++++ tif_open.c (working copy) +@@ -516,6 +516,9 @@ + TIFFSetClientdata(TIFF* tif, thandle_t newvalue) + { + thandle_t m = tif->tif_clientdata; ++#ifdef USE_WIN32_FILEIO ++ newvalue = (thandle_t) _get_osfhandle(newvalue); ++#endif /* USE_WIN32_FILEIO */ + tif->tif_clientdata = newvalue; + return m; + } + \ No newline at end of file diff --git a/reactos/dll/3rdparty/libtiff/tif_open.c b/reactos/dll/3rdparty/libtiff/tif_open.c index 3b3b2ce67ba..a17f342aa36 100644 --- a/reactos/dll/3rdparty/libtiff/tif_open.c +++ b/reactos/dll/3rdparty/libtiff/tif_open.c @@ -516,6 +516,9 @@ thandle_t TIFFSetClientdata(TIFF* tif, thandle_t newvalue) { thandle_t m = tif->tif_clientdata; +#ifdef USE_WIN32_FILEIO + newvalue = (thandle_t) _get_osfhandle(newvalue); +#endif /* USE_WIN32_FILEIO */ tif->tif_clientdata = newvalue; return m; } diff --git a/reactos/include/reactos/libs/libtiff/rosdiff.patch b/reactos/include/reactos/libs/libtiff/rosdiff.patch new file mode 100644 index 00000000000..06148fc5698 --- /dev/null +++ b/reactos/include/reactos/libs/libtiff/rosdiff.patch @@ -0,0 +1,445 @@ +Index: tiffio.h +=================================================================== +--- tiffio.h (revision 48037) ++++ tiffio.h (working copy) +@@ -27,6 +27,30 @@ + #ifndef _TIFFIO_ + #define _TIFFIO_ + ++#ifndef __GNUC__ ++# define __DLL_IMPORT__ __declspec(dllimport) ++# define __DLL_EXPORT__ __declspec(dllexport) ++#else ++# define __DLL_IMPORT__ __attribute__((dllimport)) extern ++# define __DLL_EXPORT__ __attribute__((dllexport)) extern ++#endif ++ ++#if (defined __WIN32__) || (defined _WIN32) ++# ifdef BUILD_LIBTIFF_DLL ++# define LIBTIFF_DLL_IMPEXP __DLL_EXPORT__ ++# elif defined(LIBTIFF_STATIC) ++# define LIBTIFF_DLL_IMPEXP ++# elif defined (USE_LIBTIFF_DLL) ++# define LIBTIFF_DLL_IMPEXP __DLL_IMPORT__ ++# elif defined (USE_LIBTIFF_STATIC) ++# define LIBTIFF_DLL_IMPEXP ++# else /* assume USE_LIBTIFF_DLL */ ++# define LIBTIFF_DLL_IMPEXP __DLL_IMPORT__ ++# endif ++#else /* __WIN32__ */ ++# define LIBTIFF_DLL_IMPEXP ++#endif ++ + /* + * TIFF I/O Library Definitions. + */ +@@ -80,10 +104,20 @@ + */ + + #if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) ++# define BINMODE "b" + # if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO) + # define AVOID_WIN32_FILEIO + # endif +-#endif ++# include ++# include ++# ifdef SET_BINARY ++# undef SET_BINARY ++# endif /* SET_BINARY */ ++# define SET_BINARY(f) do {if (!_isatty(f)) _setmode(f,_O_BINARY);} while (0) ++#else /* Windows */ ++# define BINMODE ++# define SET_BINARY(f) (void)0 ++#endif /* Windows */ + + #if defined(USE_WIN32_FILEIO) + # define VC_EXTRALEAN +@@ -268,30 +302,30 @@ + typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t); + typedef void (*TIFFExtendProc)(TIFF*); + +-extern const char* TIFFGetVersion(void); ++LIBTIFF_DLL_IMPEXP 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); ++LIBTIFF_DLL_IMPEXP const TIFFCodec* TIFFFindCODEC(uint16); ++LIBTIFF_DLL_IMPEXP TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod); ++LIBTIFF_DLL_IMPEXP void TIFFUnRegisterCODEC(TIFFCodec*); ++LIBTIFF_DLL_IMPEXP int TIFFIsCODECConfigured(uint16); ++LIBTIFF_DLL_IMPEXP TIFFCodec* TIFFGetConfiguredCODECs(void); + + /* + * Auxiliary functions. + */ + +-extern tdata_t _TIFFmalloc(tsize_t); +-extern tdata_t _TIFFrealloc(tdata_t, tsize_t); +-extern void _TIFFmemset(tdata_t, int, tsize_t); +-extern void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t); +-extern int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t); +-extern void _TIFFfree(tdata_t); ++LIBTIFF_DLL_IMPEXP tdata_t _TIFFmalloc(tsize_t); ++LIBTIFF_DLL_IMPEXP tdata_t _TIFFrealloc(tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP void _TIFFmemset(tdata_t, int, tsize_t); ++LIBTIFF_DLL_IMPEXP void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP void _TIFFfree(tdata_t); + + /* + ** Stuff, related to tag handling and creating custom tags. + */ +-extern int TIFFGetTagListCount( TIFF * ); +-extern ttag_t TIFFGetTagListEntry( TIFF *, int tag_index ); ++LIBTIFF_DLL_IMPEXP int TIFFGetTagListCount( TIFF * ); ++LIBTIFF_DLL_IMPEXP ttag_t TIFFGetTagListEntry( TIFF *, int tag_index ); + + #define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */ + #define TIFF_VARIABLE -1 /* marker for variable length tags */ +@@ -317,12 +351,12 @@ + void *value; + } TIFFTagValue; + +-extern void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int); +-extern const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType); +-extern const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *, ++LIBTIFF_DLL_IMPEXP void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int); ++LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType); ++LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *, + TIFFDataType); +-extern const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t); +-extern const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *); ++LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t); ++LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *); + + typedef int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list); + typedef int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list); +@@ -334,180 +368,180 @@ + TIFFPrintMethod printdir; /* directory print routine */ + } TIFFTagMethods; + +-extern TIFFTagMethods *TIFFAccessTagMethods( TIFF * ); +-extern void *TIFFGetClientInfo( TIFF *, const char * ); +-extern void TIFFSetClientInfo( TIFF *, void *, const char * ); ++LIBTIFF_DLL_IMPEXP TIFFTagMethods *TIFFAccessTagMethods( TIFF * ); ++LIBTIFF_DLL_IMPEXP void *TIFFGetClientInfo( TIFF *, const char * ); ++LIBTIFF_DLL_IMPEXP void TIFFSetClientInfo( TIFF *, void *, const char * ); + +-extern void TIFFCleanup(TIFF*); +-extern void TIFFClose(TIFF*); +-extern int TIFFFlush(TIFF*); +-extern int TIFFFlushData(TIFF*); +-extern int TIFFGetField(TIFF*, ttag_t, ...); +-extern int TIFFVGetField(TIFF*, ttag_t, va_list); +-extern int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...); +-extern int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list); +-extern int TIFFReadDirectory(TIFF*); +-extern int TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[], ++LIBTIFF_DLL_IMPEXP void TIFFCleanup(TIFF*); ++LIBTIFF_DLL_IMPEXP void TIFFClose(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFFlush(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFFlushData(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFGetField(TIFF*, ttag_t, ...); ++LIBTIFF_DLL_IMPEXP int TIFFVGetField(TIFF*, ttag_t, va_list); ++LIBTIFF_DLL_IMPEXP int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...); ++LIBTIFF_DLL_IMPEXP int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list); ++LIBTIFF_DLL_IMPEXP int TIFFReadDirectory(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[], + size_t); +-extern int TIFFReadEXIFDirectory(TIFF*, toff_t); +-extern tsize_t TIFFScanlineSize(TIFF*); +-extern tsize_t TIFFOldScanlineSize(TIFF*); +-extern tsize_t TIFFNewScanlineSize(TIFF*); +-extern tsize_t TIFFRasterScanlineSize(TIFF*); +-extern tsize_t TIFFStripSize(TIFF*); +-extern tsize_t TIFFRawStripSize(TIFF*, tstrip_t); +-extern tsize_t TIFFVStripSize(TIFF*, uint32); +-extern tsize_t TIFFTileRowSize(TIFF*); +-extern tsize_t TIFFTileSize(TIFF*); +-extern tsize_t TIFFVTileSize(TIFF*, uint32); +-extern uint32 TIFFDefaultStripSize(TIFF*, uint32); +-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 tdir_t TIFFCurrentDirectory(TIFF*); +-extern tdir_t TIFFNumberOfDirectories(TIFF*); +-extern uint32 TIFFCurrentDirOffset(TIFF*); +-extern tstrip_t TIFFCurrentStrip(TIFF*); +-extern ttile_t TIFFCurrentTile(TIFF*); +-extern int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t); +-extern int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t); +-extern int TIFFSetupStrips(TIFF *); +-extern int TIFFWriteCheck(TIFF*, int, const char *); +-extern void TIFFFreeDirectory(TIFF*); +-extern int TIFFCreateDirectory(TIFF*); +-extern int TIFFLastDirectory(TIFF*); +-extern int TIFFSetDirectory(TIFF*, tdir_t); +-extern int TIFFSetSubDirectory(TIFF*, uint32); +-extern int TIFFUnlinkDirectory(TIFF*, tdir_t); +-extern int TIFFSetField(TIFF*, ttag_t, ...); +-extern int TIFFVSetField(TIFF*, ttag_t, va_list); +-extern int TIFFWriteDirectory(TIFF *); +-extern int TIFFCheckpointDirectory(TIFF *); +-extern int TIFFRewriteDirectory(TIFF *); +-extern int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int); ++LIBTIFF_DLL_IMPEXP int TIFFReadEXIFDirectory(TIFF*, toff_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFScanlineSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFOldScanlineSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFNewScanlineSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFRasterScanlineSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFStripSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFRawStripSize(TIFF*, tstrip_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFVStripSize(TIFF*, uint32); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFTileRowSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFTileSize(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFVTileSize(TIFF*, uint32); ++LIBTIFF_DLL_IMPEXP uint32 TIFFDefaultStripSize(TIFF*, uint32); ++LIBTIFF_DLL_IMPEXP void TIFFDefaultTileSize(TIFF*, uint32*, uint32*); ++LIBTIFF_DLL_IMPEXP int TIFFFileno(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFSetFileno(TIFF*, int); ++LIBTIFF_DLL_IMPEXP thandle_t TIFFClientdata(TIFF*); ++LIBTIFF_DLL_IMPEXP thandle_t TIFFSetClientdata(TIFF*, thandle_t); ++LIBTIFF_DLL_IMPEXP int TIFFGetMode(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFSetMode(TIFF*, int); ++LIBTIFF_DLL_IMPEXP int TIFFIsTiled(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFIsByteSwapped(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFIsUpSampled(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFIsMSB2LSB(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFIsBigEndian(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFReadWriteProc TIFFGetReadProc(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFReadWriteProc TIFFGetWriteProc(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFSeekProc TIFFGetSeekProc(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFCloseProc TIFFGetCloseProc(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFSizeProc TIFFGetSizeProc(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFMapFileProc TIFFGetMapFileProc(TIFF*); ++LIBTIFF_DLL_IMPEXP TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*); ++LIBTIFF_DLL_IMPEXP uint32 TIFFCurrentRow(TIFF*); ++LIBTIFF_DLL_IMPEXP tdir_t TIFFCurrentDirectory(TIFF*); ++LIBTIFF_DLL_IMPEXP tdir_t TIFFNumberOfDirectories(TIFF*); ++LIBTIFF_DLL_IMPEXP uint32 TIFFCurrentDirOffset(TIFF*); ++LIBTIFF_DLL_IMPEXP tstrip_t TIFFCurrentStrip(TIFF*); ++LIBTIFF_DLL_IMPEXP ttile_t TIFFCurrentTile(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP int TIFFSetupStrips(TIFF *); ++LIBTIFF_DLL_IMPEXP int TIFFWriteCheck(TIFF*, int, const char *); ++LIBTIFF_DLL_IMPEXP void TIFFFreeDirectory(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFCreateDirectory(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFLastDirectory(TIFF*); ++LIBTIFF_DLL_IMPEXP int TIFFSetDirectory(TIFF*, tdir_t); ++LIBTIFF_DLL_IMPEXP int TIFFSetSubDirectory(TIFF*, uint32); ++LIBTIFF_DLL_IMPEXP int TIFFUnlinkDirectory(TIFF*, tdir_t); ++LIBTIFF_DLL_IMPEXP int TIFFSetField(TIFF*, ttag_t, ...); ++LIBTIFF_DLL_IMPEXP int TIFFVSetField(TIFF*, ttag_t, va_list); ++LIBTIFF_DLL_IMPEXP int TIFFWriteDirectory(TIFF *); ++LIBTIFF_DLL_IMPEXP int TIFFCheckpointDirectory(TIFF *); ++LIBTIFF_DLL_IMPEXP int TIFFRewriteDirectory(TIFF *); ++LIBTIFF_DLL_IMPEXP int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int); + + #if defined(c_plusplus) || defined(__cplusplus) +-extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0); +-extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0); +-extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0); +-extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); +-extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, ++LIBTIFF_DLL_IMPEXP void TIFFPrintDirectory(TIFF*, FILE*, long = 0); ++LIBTIFF_DLL_IMPEXP int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0); ++LIBTIFF_DLL_IMPEXP int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0); ++LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); ++LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, + int = ORIENTATION_BOTLEFT, int = 0); + #else +-extern void TIFFPrintDirectory(TIFF*, FILE*, long); +-extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t); +-extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t); +-extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); +-extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); ++LIBTIFF_DLL_IMPEXP void TIFFPrintDirectory(TIFF*, FILE*, long); ++LIBTIFF_DLL_IMPEXP int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t); ++LIBTIFF_DLL_IMPEXP int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t); ++LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); ++LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); + #endif + +-extern int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * ); +-extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); +-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*); ++LIBTIFF_DLL_IMPEXP int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * ); ++LIBTIFF_DLL_IMPEXP int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); ++LIBTIFF_DLL_IMPEXP int TIFFRGBAImageOK(TIFF*, char [1024]); ++LIBTIFF_DLL_IMPEXP int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]); ++LIBTIFF_DLL_IMPEXP int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32); ++LIBTIFF_DLL_IMPEXP void TIFFRGBAImageEnd(TIFFRGBAImage*); ++LIBTIFF_DLL_IMPEXP TIFF* TIFFOpen(const char*, const char*); + # ifdef __WIN32__ +-extern TIFF* TIFFOpenW(const wchar_t*, const char*); ++LIBTIFF_DLL_IMPEXP TIFF* TIFFOpenW(const wchar_t*, const char*); + # endif /* __WIN32__ */ +-extern TIFF* TIFFFdOpen(int, const char*, const char*); +-extern TIFF* TIFFClientOpen(const char*, const char*, ++LIBTIFF_DLL_IMPEXP TIFF* TIFFFdOpen(int, const char*, const char*); ++LIBTIFF_DLL_IMPEXP 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 ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t); +-extern int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t); +-extern ttile_t TIFFNumberOfTiles(TIFF*); +-extern tsize_t TIFFReadTile(TIFF*, ++LIBTIFF_DLL_IMPEXP const char* TIFFFileName(TIFF*); ++LIBTIFF_DLL_IMPEXP const char* TIFFSetFileName(TIFF*, const char *); ++LIBTIFF_DLL_IMPEXP void TIFFError(const char*, const char*, ...) __attribute__((format (printf,2,3))); ++LIBTIFF_DLL_IMPEXP void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((format (printf,3,4))); ++LIBTIFF_DLL_IMPEXP void TIFFWarning(const char*, const char*, ...) __attribute__((format (printf,2,3))); ++LIBTIFF_DLL_IMPEXP void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((format (printf,3,4))); ++LIBTIFF_DLL_IMPEXP TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler); ++LIBTIFF_DLL_IMPEXP TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt); ++LIBTIFF_DLL_IMPEXP TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler); ++LIBTIFF_DLL_IMPEXP TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt); ++LIBTIFF_DLL_IMPEXP TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc); ++LIBTIFF_DLL_IMPEXP ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t); ++LIBTIFF_DLL_IMPEXP int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t); ++LIBTIFF_DLL_IMPEXP ttile_t TIFFNumberOfTiles(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFReadTile(TIFF*, + tdata_t, uint32, uint32, uint32, tsample_t); +-extern tsize_t TIFFWriteTile(TIFF*, ++LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteTile(TIFF*, + tdata_t, uint32, uint32, uint32, tsample_t); +-extern tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t); +-extern tstrip_t TIFFNumberOfStrips(TIFF*); +-extern tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +-extern tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +-extern tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); +-extern tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t); +-extern tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +-extern tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +-extern tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); +-extern tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t); +-extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */ +-extern void TIFFSetWriteOffset(TIFF*, toff_t); +-extern void TIFFSwabShort(uint16*); +-extern void TIFFSwabLong(uint32*); +-extern void TIFFSwabDouble(double*); +-extern void TIFFSwabArrayOfShort(uint16*, unsigned long); +-extern void TIFFSwabArrayOfTriples(uint8*, unsigned long); +-extern void TIFFSwabArrayOfLong(uint32*, unsigned long); +-extern void TIFFSwabArrayOfDouble(double*, unsigned long); +-extern void TIFFReverseBits(unsigned char *, unsigned long); +-extern const unsigned char* TIFFGetBitRevTable(int); ++LIBTIFF_DLL_IMPEXP tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t); ++LIBTIFF_DLL_IMPEXP tstrip_t TIFFNumberOfStrips(TIFF*); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t); ++LIBTIFF_DLL_IMPEXP int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */ ++LIBTIFF_DLL_IMPEXP void TIFFSetWriteOffset(TIFF*, toff_t); ++LIBTIFF_DLL_IMPEXP void TIFFSwabShort(uint16*); ++LIBTIFF_DLL_IMPEXP void TIFFSwabLong(uint32*); ++LIBTIFF_DLL_IMPEXP void TIFFSwabDouble(double*); ++LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfShort(uint16*, unsigned long); ++LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfTriples(uint8*, unsigned long); ++LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfLong(uint32*, unsigned long); ++LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfDouble(double*, unsigned long); ++LIBTIFF_DLL_IMPEXP void TIFFReverseBits(unsigned char *, unsigned long); ++LIBTIFF_DLL_IMPEXP 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*); ++LIBTIFF_DLL_IMPEXP double LogL16toY(int); ++LIBTIFF_DLL_IMPEXP double LogL10toY(int); ++LIBTIFF_DLL_IMPEXP void XYZtoRGB24(float*, uint8*); ++LIBTIFF_DLL_IMPEXP int uv_decode(double*, double*, int); ++LIBTIFF_DLL_IMPEXP void LogLuv24toXYZ(uint32, float*); ++LIBTIFF_DLL_IMPEXP 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); ++LIBTIFF_DLL_IMPEXP int LogL16fromY(double, int = SGILOGENCODE_NODITHER); ++LIBTIFF_DLL_IMPEXP int LogL10fromY(double, int = SGILOGENCODE_NODITHER); ++LIBTIFF_DLL_IMPEXP int uv_encode(double, double, int = SGILOGENCODE_NODITHER); ++LIBTIFF_DLL_IMPEXP uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER); ++LIBTIFF_DLL_IMPEXP 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); ++LIBTIFF_DLL_IMPEXP int LogL16fromY(double, int); ++LIBTIFF_DLL_IMPEXP int LogL10fromY(double, int); ++LIBTIFF_DLL_IMPEXP int uv_encode(double, double, int); ++LIBTIFF_DLL_IMPEXP uint32 LogLuv24fromXYZ(float*, int); ++LIBTIFF_DLL_IMPEXP uint32 LogLuv32fromXYZ(float*, int); + #endif + #endif /* LOGLUV_PUBLIC */ + +-extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*); +-extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, ++LIBTIFF_DLL_IMPEXP int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*); ++LIBTIFF_DLL_IMPEXP void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, + float *, float *, float *); +-extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, ++LIBTIFF_DLL_IMPEXP void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, + uint32 *, uint32 *, uint32 *); + +-extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); +-extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, ++LIBTIFF_DLL_IMPEXP int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); ++LIBTIFF_DLL_IMPEXP void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, + uint32 *, uint32 *, uint32 *); + + #if defined(c_plusplus) || defined(__cplusplus) diff --git a/reactos/include/reactos/libs/libtiff/tiffio.h b/reactos/include/reactos/libs/libtiff/tiffio.h index 06ec25c8298..3298a7afe34 100644 --- a/reactos/include/reactos/libs/libtiff/tiffio.h +++ b/reactos/include/reactos/libs/libtiff/tiffio.h @@ -27,6 +27,30 @@ #ifndef _TIFFIO_ #define _TIFFIO_ +#ifndef __GNUC__ +# define __DLL_IMPORT__ __declspec(dllimport) +# define __DLL_EXPORT__ __declspec(dllexport) +#else +# define __DLL_IMPORT__ __attribute__((dllimport)) extern +# define __DLL_EXPORT__ __attribute__((dllexport)) extern +#endif + +#if (defined __WIN32__) || (defined _WIN32) +# ifdef BUILD_LIBTIFF_DLL +# define LIBTIFF_DLL_IMPEXP __DLL_EXPORT__ +# elif defined(LIBTIFF_STATIC) +# define LIBTIFF_DLL_IMPEXP +# elif defined (USE_LIBTIFF_DLL) +# define LIBTIFF_DLL_IMPEXP __DLL_IMPORT__ +# elif defined (USE_LIBTIFF_STATIC) +# define LIBTIFF_DLL_IMPEXP +# else /* assume USE_LIBTIFF_DLL */ +# define LIBTIFF_DLL_IMPEXP __DLL_IMPORT__ +# endif +#else /* __WIN32__ */ +# define LIBTIFF_DLL_IMPEXP +#endif + /* * TIFF I/O Library Definitions. */ @@ -80,10 +104,20 @@ typedef uint32 toff_t; /* file offset */ */ #if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) +# define BINMODE "b" # if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO) # define AVOID_WIN32_FILEIO # endif -#endif +# include +# include +# ifdef SET_BINARY +# undef SET_BINARY +# endif /* SET_BINARY */ +# define SET_BINARY(f) do {if (!_isatty(f)) _setmode(f,_O_BINARY);} while (0) +#else /* Windows */ +# define BINMODE +# define SET_BINARY(f) (void)0 +#endif /* Windows */ #if defined(USE_WIN32_FILEIO) # define VC_EXTRALEAN @@ -268,30 +302,30 @@ typedef int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*); typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t); typedef void (*TIFFExtendProc)(TIFF*); -extern const char* TIFFGetVersion(void); +LIBTIFF_DLL_IMPEXP 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); +LIBTIFF_DLL_IMPEXP const TIFFCodec* TIFFFindCODEC(uint16); +LIBTIFF_DLL_IMPEXP TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod); +LIBTIFF_DLL_IMPEXP void TIFFUnRegisterCODEC(TIFFCodec*); +LIBTIFF_DLL_IMPEXP int TIFFIsCODECConfigured(uint16); +LIBTIFF_DLL_IMPEXP TIFFCodec* TIFFGetConfiguredCODECs(void); /* * Auxiliary functions. */ -extern tdata_t _TIFFmalloc(tsize_t); -extern tdata_t _TIFFrealloc(tdata_t, tsize_t); -extern void _TIFFmemset(tdata_t, int, tsize_t); -extern void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t); -extern int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t); -extern void _TIFFfree(tdata_t); +LIBTIFF_DLL_IMPEXP tdata_t _TIFFmalloc(tsize_t); +LIBTIFF_DLL_IMPEXP tdata_t _TIFFrealloc(tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP void _TIFFmemset(tdata_t, int, tsize_t); +LIBTIFF_DLL_IMPEXP void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP void _TIFFfree(tdata_t); /* ** Stuff, related to tag handling and creating custom tags. */ -extern int TIFFGetTagListCount( TIFF * ); -extern ttag_t TIFFGetTagListEntry( TIFF *, int tag_index ); +LIBTIFF_DLL_IMPEXP int TIFFGetTagListCount( TIFF * ); +LIBTIFF_DLL_IMPEXP ttag_t TIFFGetTagListEntry( TIFF *, int tag_index ); #define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */ #define TIFF_VARIABLE -1 /* marker for variable length tags */ @@ -317,12 +351,12 @@ typedef struct _TIFFTagValue { void *value; } TIFFTagValue; -extern void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int); -extern const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType); -extern const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *, +LIBTIFF_DLL_IMPEXP void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int); +LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType); +LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *, TIFFDataType); -extern const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t); -extern const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *); +LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t); +LIBTIFF_DLL_IMPEXP const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *); typedef int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list); typedef int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list); @@ -334,180 +368,180 @@ typedef struct { TIFFPrintMethod printdir; /* directory print routine */ } TIFFTagMethods; -extern TIFFTagMethods *TIFFAccessTagMethods( TIFF * ); -extern void *TIFFGetClientInfo( TIFF *, const char * ); -extern void TIFFSetClientInfo( TIFF *, void *, const char * ); +LIBTIFF_DLL_IMPEXP TIFFTagMethods *TIFFAccessTagMethods( TIFF * ); +LIBTIFF_DLL_IMPEXP void *TIFFGetClientInfo( TIFF *, const char * ); +LIBTIFF_DLL_IMPEXP void TIFFSetClientInfo( TIFF *, void *, const char * ); -extern void TIFFCleanup(TIFF*); -extern void TIFFClose(TIFF*); -extern int TIFFFlush(TIFF*); -extern int TIFFFlushData(TIFF*); -extern int TIFFGetField(TIFF*, ttag_t, ...); -extern int TIFFVGetField(TIFF*, ttag_t, va_list); -extern int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...); -extern int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list); -extern int TIFFReadDirectory(TIFF*); -extern int TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[], +LIBTIFF_DLL_IMPEXP void TIFFCleanup(TIFF*); +LIBTIFF_DLL_IMPEXP void TIFFClose(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFFlush(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFFlushData(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFGetField(TIFF*, ttag_t, ...); +LIBTIFF_DLL_IMPEXP int TIFFVGetField(TIFF*, ttag_t, va_list); +LIBTIFF_DLL_IMPEXP int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...); +LIBTIFF_DLL_IMPEXP int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list); +LIBTIFF_DLL_IMPEXP int TIFFReadDirectory(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[], size_t); -extern int TIFFReadEXIFDirectory(TIFF*, toff_t); -extern tsize_t TIFFScanlineSize(TIFF*); -extern tsize_t TIFFOldScanlineSize(TIFF*); -extern tsize_t TIFFNewScanlineSize(TIFF*); -extern tsize_t TIFFRasterScanlineSize(TIFF*); -extern tsize_t TIFFStripSize(TIFF*); -extern tsize_t TIFFRawStripSize(TIFF*, tstrip_t); -extern tsize_t TIFFVStripSize(TIFF*, uint32); -extern tsize_t TIFFTileRowSize(TIFF*); -extern tsize_t TIFFTileSize(TIFF*); -extern tsize_t TIFFVTileSize(TIFF*, uint32); -extern uint32 TIFFDefaultStripSize(TIFF*, uint32); -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 tdir_t TIFFCurrentDirectory(TIFF*); -extern tdir_t TIFFNumberOfDirectories(TIFF*); -extern uint32 TIFFCurrentDirOffset(TIFF*); -extern tstrip_t TIFFCurrentStrip(TIFF*); -extern ttile_t TIFFCurrentTile(TIFF*); -extern int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t); -extern int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t); -extern int TIFFSetupStrips(TIFF *); -extern int TIFFWriteCheck(TIFF*, int, const char *); -extern void TIFFFreeDirectory(TIFF*); -extern int TIFFCreateDirectory(TIFF*); -extern int TIFFLastDirectory(TIFF*); -extern int TIFFSetDirectory(TIFF*, tdir_t); -extern int TIFFSetSubDirectory(TIFF*, uint32); -extern int TIFFUnlinkDirectory(TIFF*, tdir_t); -extern int TIFFSetField(TIFF*, ttag_t, ...); -extern int TIFFVSetField(TIFF*, ttag_t, va_list); -extern int TIFFWriteDirectory(TIFF *); -extern int TIFFCheckpointDirectory(TIFF *); -extern int TIFFRewriteDirectory(TIFF *); -extern int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int); +LIBTIFF_DLL_IMPEXP int TIFFReadEXIFDirectory(TIFF*, toff_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFScanlineSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFOldScanlineSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFNewScanlineSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFRasterScanlineSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFStripSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFRawStripSize(TIFF*, tstrip_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFVStripSize(TIFF*, uint32); +LIBTIFF_DLL_IMPEXP tsize_t TIFFTileRowSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFTileSize(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFVTileSize(TIFF*, uint32); +LIBTIFF_DLL_IMPEXP uint32 TIFFDefaultStripSize(TIFF*, uint32); +LIBTIFF_DLL_IMPEXP void TIFFDefaultTileSize(TIFF*, uint32*, uint32*); +LIBTIFF_DLL_IMPEXP int TIFFFileno(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFSetFileno(TIFF*, int); +LIBTIFF_DLL_IMPEXP thandle_t TIFFClientdata(TIFF*); +LIBTIFF_DLL_IMPEXP thandle_t TIFFSetClientdata(TIFF*, thandle_t); +LIBTIFF_DLL_IMPEXP int TIFFGetMode(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFSetMode(TIFF*, int); +LIBTIFF_DLL_IMPEXP int TIFFIsTiled(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFIsByteSwapped(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFIsUpSampled(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFIsMSB2LSB(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFIsBigEndian(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFReadWriteProc TIFFGetReadProc(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFReadWriteProc TIFFGetWriteProc(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFSeekProc TIFFGetSeekProc(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFCloseProc TIFFGetCloseProc(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFSizeProc TIFFGetSizeProc(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFMapFileProc TIFFGetMapFileProc(TIFF*); +LIBTIFF_DLL_IMPEXP TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*); +LIBTIFF_DLL_IMPEXP uint32 TIFFCurrentRow(TIFF*); +LIBTIFF_DLL_IMPEXP tdir_t TIFFCurrentDirectory(TIFF*); +LIBTIFF_DLL_IMPEXP tdir_t TIFFNumberOfDirectories(TIFF*); +LIBTIFF_DLL_IMPEXP uint32 TIFFCurrentDirOffset(TIFF*); +LIBTIFF_DLL_IMPEXP tstrip_t TIFFCurrentStrip(TIFF*); +LIBTIFF_DLL_IMPEXP ttile_t TIFFCurrentTile(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP int TIFFSetupStrips(TIFF *); +LIBTIFF_DLL_IMPEXP int TIFFWriteCheck(TIFF*, int, const char *); +LIBTIFF_DLL_IMPEXP void TIFFFreeDirectory(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFCreateDirectory(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFLastDirectory(TIFF*); +LIBTIFF_DLL_IMPEXP int TIFFSetDirectory(TIFF*, tdir_t); +LIBTIFF_DLL_IMPEXP int TIFFSetSubDirectory(TIFF*, uint32); +LIBTIFF_DLL_IMPEXP int TIFFUnlinkDirectory(TIFF*, tdir_t); +LIBTIFF_DLL_IMPEXP int TIFFSetField(TIFF*, ttag_t, ...); +LIBTIFF_DLL_IMPEXP int TIFFVSetField(TIFF*, ttag_t, va_list); +LIBTIFF_DLL_IMPEXP int TIFFWriteDirectory(TIFF *); +LIBTIFF_DLL_IMPEXP int TIFFCheckpointDirectory(TIFF *); +LIBTIFF_DLL_IMPEXP int TIFFRewriteDirectory(TIFF *); +LIBTIFF_DLL_IMPEXP int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int); #if defined(c_plusplus) || defined(__cplusplus) -extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0); -extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0); -extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0); -extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); -extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, +LIBTIFF_DLL_IMPEXP void TIFFPrintDirectory(TIFF*, FILE*, long = 0); +LIBTIFF_DLL_IMPEXP int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0); +LIBTIFF_DLL_IMPEXP int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0); +LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); +LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int = ORIENTATION_BOTLEFT, int = 0); #else -extern void TIFFPrintDirectory(TIFF*, FILE*, long); -extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t); -extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t); -extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); -extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); +LIBTIFF_DLL_IMPEXP void TIFFPrintDirectory(TIFF*, FILE*, long); +LIBTIFF_DLL_IMPEXP int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t); +LIBTIFF_DLL_IMPEXP int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t); +LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); +LIBTIFF_DLL_IMPEXP int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); #endif -extern int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * ); -extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); -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*); +LIBTIFF_DLL_IMPEXP int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * ); +LIBTIFF_DLL_IMPEXP int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); +LIBTIFF_DLL_IMPEXP int TIFFRGBAImageOK(TIFF*, char [1024]); +LIBTIFF_DLL_IMPEXP int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]); +LIBTIFF_DLL_IMPEXP int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32); +LIBTIFF_DLL_IMPEXP void TIFFRGBAImageEnd(TIFFRGBAImage*); +LIBTIFF_DLL_IMPEXP TIFF* TIFFOpen(const char*, const char*); # ifdef __WIN32__ -extern TIFF* TIFFOpenW(const wchar_t*, const char*); +LIBTIFF_DLL_IMPEXP TIFF* TIFFOpenW(const wchar_t*, const char*); # endif /* __WIN32__ */ -extern TIFF* TIFFFdOpen(int, const char*, const char*); -extern TIFF* TIFFClientOpen(const char*, const char*, +LIBTIFF_DLL_IMPEXP TIFF* TIFFFdOpen(int, const char*, const char*); +LIBTIFF_DLL_IMPEXP 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 ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t); -extern int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t); -extern ttile_t TIFFNumberOfTiles(TIFF*); -extern tsize_t TIFFReadTile(TIFF*, +LIBTIFF_DLL_IMPEXP const char* TIFFFileName(TIFF*); +LIBTIFF_DLL_IMPEXP const char* TIFFSetFileName(TIFF*, const char *); +LIBTIFF_DLL_IMPEXP void TIFFError(const char*, const char*, ...) __attribute__((format (printf,2,3))); +LIBTIFF_DLL_IMPEXP void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((format (printf,3,4))); +LIBTIFF_DLL_IMPEXP void TIFFWarning(const char*, const char*, ...) __attribute__((format (printf,2,3))); +LIBTIFF_DLL_IMPEXP void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((format (printf,3,4))); +LIBTIFF_DLL_IMPEXP TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler); +LIBTIFF_DLL_IMPEXP TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt); +LIBTIFF_DLL_IMPEXP TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler); +LIBTIFF_DLL_IMPEXP TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt); +LIBTIFF_DLL_IMPEXP TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc); +LIBTIFF_DLL_IMPEXP ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t); +LIBTIFF_DLL_IMPEXP int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t); +LIBTIFF_DLL_IMPEXP ttile_t TIFFNumberOfTiles(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFReadTile(TIFF*, tdata_t, uint32, uint32, uint32, tsample_t); -extern tsize_t TIFFWriteTile(TIFF*, +LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteTile(TIFF*, tdata_t, uint32, uint32, uint32, tsample_t); -extern tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t); -extern tstrip_t TIFFNumberOfStrips(TIFF*); -extern tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); -extern tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); -extern tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); -extern tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t); -extern tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); -extern tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); -extern tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); -extern tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t); -extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */ -extern void TIFFSetWriteOffset(TIFF*, toff_t); -extern void TIFFSwabShort(uint16*); -extern void TIFFSwabLong(uint32*); -extern void TIFFSwabDouble(double*); -extern void TIFFSwabArrayOfShort(uint16*, unsigned long); -extern void TIFFSwabArrayOfTriples(uint8*, unsigned long); -extern void TIFFSwabArrayOfLong(uint32*, unsigned long); -extern void TIFFSwabArrayOfDouble(double*, unsigned long); -extern void TIFFReverseBits(unsigned char *, unsigned long); -extern const unsigned char* TIFFGetBitRevTable(int); +LIBTIFF_DLL_IMPEXP tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t); +LIBTIFF_DLL_IMPEXP tstrip_t TIFFNumberOfStrips(TIFF*); +LIBTIFF_DLL_IMPEXP tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t); +LIBTIFF_DLL_IMPEXP int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */ +LIBTIFF_DLL_IMPEXP void TIFFSetWriteOffset(TIFF*, toff_t); +LIBTIFF_DLL_IMPEXP void TIFFSwabShort(uint16*); +LIBTIFF_DLL_IMPEXP void TIFFSwabLong(uint32*); +LIBTIFF_DLL_IMPEXP void TIFFSwabDouble(double*); +LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfShort(uint16*, unsigned long); +LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfTriples(uint8*, unsigned long); +LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfLong(uint32*, unsigned long); +LIBTIFF_DLL_IMPEXP void TIFFSwabArrayOfDouble(double*, unsigned long); +LIBTIFF_DLL_IMPEXP void TIFFReverseBits(unsigned char *, unsigned long); +LIBTIFF_DLL_IMPEXP 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*); +LIBTIFF_DLL_IMPEXP double LogL16toY(int); +LIBTIFF_DLL_IMPEXP double LogL10toY(int); +LIBTIFF_DLL_IMPEXP void XYZtoRGB24(float*, uint8*); +LIBTIFF_DLL_IMPEXP int uv_decode(double*, double*, int); +LIBTIFF_DLL_IMPEXP void LogLuv24toXYZ(uint32, float*); +LIBTIFF_DLL_IMPEXP 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); +LIBTIFF_DLL_IMPEXP int LogL16fromY(double, int = SGILOGENCODE_NODITHER); +LIBTIFF_DLL_IMPEXP int LogL10fromY(double, int = SGILOGENCODE_NODITHER); +LIBTIFF_DLL_IMPEXP int uv_encode(double, double, int = SGILOGENCODE_NODITHER); +LIBTIFF_DLL_IMPEXP uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER); +LIBTIFF_DLL_IMPEXP 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); +LIBTIFF_DLL_IMPEXP int LogL16fromY(double, int); +LIBTIFF_DLL_IMPEXP int LogL10fromY(double, int); +LIBTIFF_DLL_IMPEXP int uv_encode(double, double, int); +LIBTIFF_DLL_IMPEXP uint32 LogLuv24fromXYZ(float*, int); +LIBTIFF_DLL_IMPEXP uint32 LogLuv32fromXYZ(float*, int); #endif #endif /* LOGLUV_PUBLIC */ -extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*); -extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, +LIBTIFF_DLL_IMPEXP int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*); +LIBTIFF_DLL_IMPEXP void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, float *, float *, float *); -extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, +LIBTIFF_DLL_IMPEXP void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, uint32 *, uint32 *, uint32 *); -extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); -extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, +LIBTIFF_DLL_IMPEXP int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); +LIBTIFF_DLL_IMPEXP void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, uint32 *, uint32 *, uint32 *); #if defined(c_plusplus) || defined(__cplusplus) From 585c3a511e1fd2612e858f1c71bfd21f6f933291 Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Wed, 14 Jul 2010 17:18:49 +0000 Subject: [PATCH 04/23] Fix setupapi setupcab winetest. (Samuel Serapion) svn path=/trunk/; revision=48044 --- reactos/dll/win32/setupapi/setupcab.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/setupapi/setupcab.c b/reactos/dll/win32/setupapi/setupcab.c index f1a2732421f..249ea953e64 100644 --- a/reactos/dll/win32/setupapi/setupcab.c +++ b/reactos/dll/win32/setupapi/setupcab.c @@ -518,7 +518,7 @@ BOOL WINAPI SetupIterateCabinetA(PCSTR CabinetFile, DWORD Reserved, SC_HSC_A my_hsc; ERF erf; - CHAR pszCabinet[MAX_PATH], pszCabPath[MAX_PATH], *p; + CHAR pszCabinet[MAX_PATH], pszCabPath[MAX_PATH], *p = NULL; DWORD fpnsize; BOOL ret; @@ -529,6 +529,12 @@ BOOL WINAPI SetupIterateCabinetA(PCSTR CabinetFile, DWORD Reserved, if (! LoadCABINETDll()) return FALSE; + if (!CabinetFile) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + memset(&my_hsc, 0, sizeof(SC_HSC_A)); pszCabinet[0] = '\0'; pszCabPath[0] = '\0'; @@ -584,7 +590,7 @@ BOOL WINAPI SetupIterateCabinetW(PCWSTR CabinetFile, DWORD Reserved, UINT len; SC_HSC_W my_hsc; ERF erf; - WCHAR pszCabPathW[MAX_PATH], *p; + WCHAR pszCabPathW[MAX_PATH], *p = NULL; DWORD fpnsize; BOOL ret; @@ -594,7 +600,11 @@ BOOL WINAPI SetupIterateCabinetW(PCWSTR CabinetFile, DWORD Reserved, if (!LoadCABINETDll()) return FALSE; - if (!CabinetFile) return FALSE; + if (!CabinetFile) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } memset(&my_hsc, 0, sizeof(SC_HSC_W)); From 7fe184220383d34c811e883cd9c33db2c047da6e Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Wed, 14 Jul 2010 18:15:43 +0000 Subject: [PATCH 05/23] Bug 5413: [PATCH] regedit: app key on treeview/listview Bug 5473: [PATCH] regedit: selection on hexedit Both from Katayama Hirofumi svn path=/trunk/; revision=48045 --- reactos/base/applications/regedit/childwnd.c | 66 ++-- reactos/base/applications/regedit/hexedit.c | 333 +++++++++++++++---- 2 files changed, 318 insertions(+), 81 deletions(-) diff --git a/reactos/base/applications/regedit/childwnd.c b/reactos/base/applications/regedit/childwnd.c index ced601a23c0..0d76562ae39 100644 --- a/reactos/base/applications/regedit/childwnd.c +++ b/reactos/base/applications/regedit/childwnd.c @@ -299,17 +299,6 @@ LRESULT CALLBACK AddressBarProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar return CallWindowProc(oldwndproc, hwnd, uMsg, wParam, lParam); } -/* fix coords to top-left when SHIFT-F10 is pressed */ -void FixPointIfContext(POINTS *pt, HWND hWnd) -{ - if (pt->x == -1 && pt->y == -1) { - POINT p = { 0, 0 }; - ClientToScreen(hWnd, &p); - pt->x = (WORD)(p.x); - pt->y = (WORD)(p.y); - } -} - /******************************************************************************* * * FUNCTION: ChildWndProc(HWND, unsigned, WORD, LONG) @@ -577,16 +566,29 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa case WM_CONTEXTMENU: { - POINTS pt; + POINT pt; if((HWND)wParam == pChildWnd->hListWnd) { int i, cnt; BOOL IsDefault; - pt.x = LOWORD(lParam); - pt.y = HIWORD(lParam); + pt.x = (short) LOWORD(lParam); + pt.y = (short) HIWORD(lParam); cnt = ListView_GetSelectedCount(pChildWnd->hListWnd); i = ListView_GetNextItem(pChildWnd->hListWnd, -1, LVNI_FOCUSED | LVNI_SELECTED); - FixPointIfContext(&pt, pChildWnd->hListWnd); + if (pt.x == -1 && pt.y == -1) + { + RECT rc; + if (i != -1) + { + rc.left = LVIR_BOUNDS; + SendMessage(pChildWnd->hListWnd, LVM_GETITEMRECT, i, (LPARAM) &rc); + pt.x = rc.left + 8; + pt.y = rc.top + 8; + } + else + pt.x = pt.y = 0; + } + ClientToScreen(pChildWnd->hListWnd, &pt); if(i == -1) { TrackPopupMenu(GetSubMenu(hPopupMenus, PM_NEW), TPM_RIGHTBUTTON, pt.x, pt.y, 0, hFrameWnd, NULL); @@ -620,14 +622,33 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa int iLastPos; WORD wID; - pt.x = LOWORD(lParam); - pt.y = HIWORD(lParam); - hti.pt.x = pt.x; - hti.pt.y = pt.y; - ScreenToClient(pChildWnd->hTreeWnd, &hti.pt); - (void)TreeView_HitTest(pChildWnd->hTreeWnd, &hti); + pt.x = (short) LOWORD(lParam); + pt.y = (short) HIWORD(lParam); - if ((hti.flags & TVHT_ONITEM) != 0 || (pt.x == -1 && pt.y == -1)) + if (pt.x == -1 && pt.y == -1) + { + RECT rc; + hti.hItem = TreeView_GetSelection(pChildWnd->hTreeWnd); + if (hti.hItem != NULL) + { + TreeView_GetItemRect(pChildWnd->hTreeWnd, hti.hItem, &rc, TRUE); + pt.x = rc.left + 8; + pt.y = rc.top + 8; + ClientToScreen(pChildWnd->hTreeWnd, &pt); + hti.flags = TVHT_ONITEM; + } + else + hti.flags = 0; + } + else + { + hti.pt.x = pt.x; + hti.pt.y = pt.y; + ScreenToClient(pChildWnd->hTreeWnd, &hti.pt); + (void)TreeView_HitTest(pChildWnd->hTreeWnd, &hti); + } + + if (hti.flags & TVHT_ONITEM) { hContextMenu = GetSubMenu(hPopupMenus, PM_TREECONTEXT); (void)TreeView_SelectItem(pChildWnd->hTreeWnd, hti.hItem); @@ -688,7 +709,6 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa s += _tcslen(s) + 1; } } - FixPointIfContext(&pt, pChildWnd->hTreeWnd); TrackPopupMenu(hContextMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, pChildWnd->hWnd, NULL); } } diff --git a/reactos/base/applications/regedit/hexedit.c b/reactos/base/applications/regedit/hexedit.c index c127291036e..b84f431d04e 100644 --- a/reactos/base/applications/regedit/hexedit.c +++ b/reactos/base/applications/regedit/hexedit.c @@ -44,6 +44,10 @@ typedef struct INT CaretCol; INT CaretLine; BOOL InMid; + + INT SelStart; + INT SelEnd; + BOOL SelOnField; } HEXEDIT_DATA, *PHEXEDIT_DATA; /* hit test codes */ @@ -181,13 +185,25 @@ static VOID HEXEDIT_PaintLines(PHEXEDIT_DATA hed, HDC hDC, DWORD ScrollPos, DWORD First, DWORD Last, RECT *rc) { DWORD dx, dy, linestart; - INT x; + INT i, isave, i0, i1, x; PBYTE buf, current, end, line; size_t bufsize; TCHAR hex[3], addr[17]; - RECT rct; + RECT rct, rct2; FillRect(hDC, rc, (HBRUSH)(COLOR_WINDOW + 1)); + SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT)); + + if (hed->SelStart < hed->SelEnd) + { + i0 = hed->SelStart; + i1 = hed->SelEnd; + } + else + { + i0 = hed->SelEnd; + i1 = hed->SelStart; + } if(hed->hBuffer) { @@ -212,9 +228,11 @@ HEXEDIT_PaintLines(PHEXEDIT_DATA hed, HDC hDC, DWORD ScrollPos, DWORD First, DWO end = buf + bufsize; dy = First * hed->LineHeight; linestart = (ScrollPos + First) * hed->ColumnsPerLine; + i = linestart; current = buf + linestart; Last = min(hed->nLines - ScrollPos, Last); + SetBkMode(hDC, TRANSPARENT); while(First <= Last && current < end) { DWORD dh; @@ -236,25 +254,54 @@ HEXEDIT_PaintLines(PHEXEDIT_DATA hed, HDC hDC, DWORD ScrollPos, DWORD First, DWO /* draw hex map */ dx += (hed->CharWidth / 2); line = current; + isave = i; for(x = 0; x < hed->ColumnsPerLine && current < end; x++) { rct.left += dh; rct.right += dh; _stprintf(hex, _T("%02X"), *(current++)); - ExtTextOut(hDC, dx, dy, ETO_OPAQUE, &rct, hex, 2, NULL); + if (i0 <= i && i < i1) + { + rct2.left = dx; + rct2.top = dy; + rct2.right = dx + hed->CharWidth * 2 + 1; + rct2.bottom = dy + hed->LineHeight; + InflateRect(&rct2, hed->CharWidth / 2, 0); + FillRect(hDC, &rct2, (HBRUSH)(COLOR_HIGHLIGHT + 1)); + SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + ExtTextOut(hDC, dx, dy, 0, &rct, hex, 2, NULL); + SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT)); + } + else + ExtTextOut(hDC, dx, dy, ETO_OPAQUE, &rct, hex, 2, NULL); dx += dh; + i++; } /* draw ascii map */ dx = ((4 + hed->AddressSpacing + hed->SplitSpacing + (hed->ColumnsPerLine * 3)) * hed->CharWidth); current = line; + i = isave; for(x = 0; x < hed->ColumnsPerLine && current < end; x++) { _stprintf(hex, _T("%C"), *(current++)); hex[0] = ((hex[0] & _T('\x007f')) >= _T(' ') ? hex[0] : _T('.')); - TextOut(hDC, dx, dy, hex, 1); + if (i0 <= i && i < i1) + { + rct2.left = dx; + rct2.top = dy; + rct2.right = dx + hed->CharWidth; + rct2.bottom = dy + hed->LineHeight; + FillRect(hDC, &rct2, (HBRUSH)(COLOR_HIGHLIGHT + 1)); + SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); + TextOut(hDC, dx, dy, hex, 1); + SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT)); + } + else + TextOut(hDC, dx, dy, hex, 1); dx += hed->CharWidth; + i++; } dy += hed->LineHeight; @@ -291,14 +338,14 @@ HEXEDIT_HitRegionTest(PHEXEDIT_DATA hed, POINTS pt) } pt.x -= d; - d = (3 * hed->ColumnsPerLine * hed->CharWidth); + d = ((3 * hed->ColumnsPerLine + 1) * hed->CharWidth); if(pt.x <= d) { return HEHT_HEXDUMP; } pt.x -= d; - d = (hed->SplitSpacing * hed->CharWidth); + d = ((hed->SplitSpacing - 1) * hed->CharWidth); if(pt.x <= d) { return HEHT_HEXDUMPSPACING; @@ -501,7 +548,6 @@ HEXEDIT_WM_NCCREATE(HWND hWnd, CREATESTRUCT *cs) hed->AddressSpacing = 2; hed->SplitSpacing = 2; hed->EditingField = TRUE; /* in hexdump field */ - hed->InMid = FALSE; SetWindowLongPtr(hWnd, 0, (DWORD_PTR)hed); HEXEDIT_Update(hed); @@ -689,7 +735,7 @@ HEXEDIT_WM_PAINT(PHEXEDIT_DATA hed) FillRect(ps.hdc, &rc, (HBRUSH)(COLOR_WINDOW + 1)); goto epaint; } - if(!(hbmp = CreateCompatibleBitmap(hTempDC, ps.rcPaint.right, ps.rcPaint.bottom))) + if(!(hbmp = CreateCompatibleBitmap(ps.hdc, ps.rcPaint.right, ps.rcPaint.bottom))) { FillRect(ps.hdc, &rc, (HBRUSH)(COLOR_WINDOW + 1)); DeleteDC(hTempDC); @@ -705,7 +751,7 @@ HEXEDIT_WM_PAINT(PHEXEDIT_DATA hed) DeleteObject(hbmp); DeleteDC(hTempDC); - epaint: +epaint: EndPaint(hed->hWndSelf, &ps); } @@ -755,27 +801,85 @@ HEXEDIT_WM_LBUTTONDOWN(PHEXEDIT_DATA hed, INT Buttons, POINTS Pt) { BOOL NewField; POINT EditPos; - DWORD Hit = HEXEDIT_HitRegionTest(hed, Pt); + DWORD Hit; UNREFERENCED_PARAMETER(Buttons); SetFocus(hed->hWndSelf); - hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, Hit, &EditPos, &NewField); - hed->EditingField = NewField; + if (GetAsyncKeyState(VK_SHIFT) < 0) + { + if (hed->SelOnField) + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, HEHT_HEXDUMP, &EditPos, &NewField); + else + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, HEHT_ASCIIDUMP, &EditPos, &NewField); + hed->SelEnd = hed->Index; + hed->EditingField = hed->SelOnField; + } + else + { + Hit = HEXEDIT_HitRegionTest(hed, Pt); + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, Hit, &EditPos, &NewField); + hed->SelStart = hed->SelEnd = hed->Index; + hed->SelOnField = hed->EditingField = NewField; + SetCapture(hed->hWndSelf); + } hed->CaretCol = EditPos.x; hed->CaretLine = EditPos.y; hed->InMid = FALSE; - + InvalidateRect(hed->hWndSelf, NULL, FALSE); HEXEDIT_MoveCaret(hed, TRUE); return 0; } +static LRESULT +HEXEDIT_WM_LBUTTONUP(PHEXEDIT_DATA hed, INT Buttons, POINTS Pt) +{ + BOOL NewField; + POINT EditPos; + if (GetCapture() == hed->hWndSelf) + { + if (hed->SelOnField) + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, HEHT_HEXDUMP, &EditPos, &NewField); + else + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, HEHT_ASCIIDUMP, &EditPos, &NewField); + hed->CaretCol = EditPos.x; + hed->CaretLine = EditPos.y; + hed->SelEnd = hed->Index; + ReleaseCapture(); + InvalidateRect(hed->hWndSelf, NULL, FALSE); + HEXEDIT_MoveCaret(hed, TRUE); + } + return 0; +} + +static LRESULT +HEXEDIT_WM_MOUSEMOVE(PHEXEDIT_DATA hed, INT Buttons, POINTS Pt) +{ + BOOL NewField; + POINT EditPos; + if (GetCapture() == hed->hWndSelf) + { + if (hed->SelOnField) + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, HEHT_HEXDUMP, &EditPos, &NewField); + else + hed->Index = HEXEDIT_IndexFromPoint(hed, Pt, HEHT_ASCIIDUMP, &EditPos, &NewField); + hed->CaretCol = EditPos.x; + hed->CaretLine = EditPos.y; + hed->SelEnd = hed->Index; + InvalidateRect(hed->hWndSelf, NULL, FALSE); + HEXEDIT_MoveCaret(hed, TRUE); + } + return 0; +} + static BOOL HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) { size_t bufsize; PBYTE buf; + INT i0, i1; + if(GetKeyState(VK_MENU) & 0x8000) { return FALSE; @@ -783,62 +887,106 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0); + if (hed->SelStart < hed->SelEnd) + { + i0 = hed->SelStart; + i1 = hed->SelEnd; + } + else + { + i0 = hed->SelEnd; + i1 = hed->SelStart; + } + switch(VkCode) { case VK_DELETE: - if (hed->InMid && hed->EditingField) + if (hed->SelStart != hed->SelEnd) { buf = (PBYTE) LocalLock(hed->hBuffer); if (buf) { - MoveMemory(buf + hed->Index, buf + hed->Index + 1, - bufsize - hed->Index - 1); + MoveMemory(buf + i0, buf + i1, bufsize - i1); LocalUnlock(hed->hBuffer); } - HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - (i1 - i0)); hed->InMid = FALSE; + hed->Index = hed->SelStart = hed->SelEnd = i0; + hed->CaretCol = hed->Index % hed->ColumnsPerLine; + hed->CaretLine = hed->Index / hed->ColumnsPerLine; } - else if (hed->Index < bufsize) + else { - buf = (PBYTE) LocalLock(hed->hBuffer); - if (buf) + if (hed->InMid && hed->EditingField) { - MoveMemory(buf + hed->Index, buf + hed->Index + 1, - bufsize - hed->Index - 1); - LocalUnlock(hed->hBuffer); + buf = (PBYTE) LocalLock(hed->hBuffer); + if (buf) + { + MoveMemory(buf + hed->Index, buf + hed->Index + 1, + bufsize - hed->Index - 1); + LocalUnlock(hed->hBuffer); + } + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); + hed->InMid = FALSE; + } + else if (hed->Index < bufsize) + { + buf = (PBYTE) LocalLock(hed->hBuffer); + if (buf) + { + MoveMemory(buf + hed->Index, buf + hed->Index + 1, + bufsize - hed->Index - 1); + LocalUnlock(hed->hBuffer); + } + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); } - HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); } InvalidateRect(hed->hWndSelf, NULL, TRUE); HEXEDIT_MoveCaret(hed, TRUE); break; case VK_BACK: - if (hed->InMid && hed->EditingField) + if (hed->SelStart != hed->SelEnd) { buf = (PBYTE) LocalLock(hed->hBuffer); if (buf) { - MoveMemory(buf + hed->Index, buf + hed->Index + 1, - bufsize - hed->Index - 1); + MoveMemory(buf + i0, buf + i1, bufsize - i1); LocalUnlock(hed->hBuffer); } - HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - (i1 - i0)); hed->InMid = FALSE; - } - else if (hed->Index > 0) - { - buf = (PBYTE) LocalLock(hed->hBuffer); - if (buf) - { - MoveMemory(buf + hed->Index - 1, buf + hed->Index, - bufsize - hed->Index); - LocalUnlock(hed->hBuffer); - } - HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); - hed->Index--; + hed->Index = hed->SelStart = hed->SelEnd = i0; hed->CaretCol = hed->Index % hed->ColumnsPerLine; hed->CaretLine = hed->Index / hed->ColumnsPerLine; + } + else + { + if (hed->InMid && hed->EditingField) + { + buf = (PBYTE) LocalLock(hed->hBuffer); + if (buf) + { + MoveMemory(buf + hed->Index, buf + hed->Index + 1, + bufsize - hed->Index - 1); + LocalUnlock(hed->hBuffer); + } + } + else if (hed->Index > 0) + { + buf = (PBYTE) LocalLock(hed->hBuffer); + if (buf) + { + MoveMemory(buf + hed->Index - 1, buf + hed->Index, + bufsize - hed->Index); + LocalUnlock(hed->hBuffer); + } + hed->Index--; + hed->SelStart = hed->SelEnd = hed->Index; + hed->CaretCol = hed->Index % hed->ColumnsPerLine; + hed->CaretLine = hed->Index / hed->ColumnsPerLine; + } + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - 1); hed->InMid = FALSE; } InvalidateRect(hed->hWndSelf, NULL, TRUE); @@ -849,9 +997,14 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) if (hed->Index > 0) { hed->Index--; + if (GetAsyncKeyState(VK_SHIFT) < 0) + hed->SelEnd = hed->Index; + else + hed->SelStart = hed->SelEnd = hed->Index; hed->CaretCol = hed->Index % hed->ColumnsPerLine; hed->CaretLine = hed->Index / hed->ColumnsPerLine; hed->InMid = FALSE; + InvalidateRect(hed->hWndSelf, NULL, TRUE); HEXEDIT_MoveCaret(hed, TRUE); } break; @@ -860,9 +1013,14 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) if (hed->Index < (INT)bufsize) { hed->Index++; + if (GetAsyncKeyState(VK_SHIFT) < 0) + hed->SelEnd = hed->Index; + else + hed->SelStart = hed->SelEnd = hed->Index; hed->CaretCol = hed->Index % hed->ColumnsPerLine; hed->CaretLine = hed->Index / hed->ColumnsPerLine; hed->InMid = FALSE; + InvalidateRect(hed->hWndSelf, NULL, TRUE); HEXEDIT_MoveCaret(hed, TRUE); } break; @@ -871,27 +1029,31 @@ HEXEDIT_WM_KEYDOWN(PHEXEDIT_DATA hed, INT VkCode) if (hed->Index >= hed->ColumnsPerLine) { hed->Index -= hed->ColumnsPerLine; + if (GetAsyncKeyState(VK_SHIFT) < 0) + hed->SelEnd = hed->Index; + else + hed->SelStart = hed->SelEnd = hed->Index; hed->CaretCol = hed->Index % hed->ColumnsPerLine; hed->CaretLine = hed->Index / hed->ColumnsPerLine; hed->InMid = FALSE; + InvalidateRect(hed->hWndSelf, NULL, TRUE); HEXEDIT_MoveCaret(hed, TRUE); } break; case VK_DOWN: if (hed->Index + hed->ColumnsPerLine <= (INT) bufsize) - { hed->Index += hed->ColumnsPerLine; - hed->CaretCol = hed->Index % hed->ColumnsPerLine; - hed->CaretLine = hed->Index / hed->ColumnsPerLine; - } else - { hed->Index = bufsize; - hed->CaretCol = hed->Index % hed->ColumnsPerLine; - hed->CaretLine = hed->Index / hed->ColumnsPerLine; - } + hed->CaretCol = hed->Index % hed->ColumnsPerLine; + hed->CaretLine = hed->Index / hed->ColumnsPerLine; + if (GetAsyncKeyState(VK_SHIFT) < 0) + hed->SelEnd = hed->Index; + else + hed->SelStart = hed->SelEnd = hed->Index; hed->InMid = FALSE; + InvalidateRect(hed->hWndSelf, NULL, TRUE); HEXEDIT_MoveCaret(hed, TRUE); break; } @@ -904,12 +1066,36 @@ HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR ch) { size_t bufsize; PBYTE buf; + INT i0, i1; bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0); + if (hed->SelStart < hed->SelEnd) + { + i0 = hed->SelStart; + i1 = hed->SelEnd; + } + else + { + i0 = hed->SelEnd; + i1 = hed->SelStart; + } if (!hed->EditingField) { - if (0x20 <= ch && ch < 0x7F) + if (0x20 <= ch && ch <= 0xFF) { + if (hed->SelStart != hed->SelEnd) + { + buf = (PBYTE) LocalLock(hed->hBuffer); + if (buf) + { + MoveMemory(buf + i0, buf + i1, bufsize - i1); + LocalUnlock(hed->hBuffer); + } + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - (i1 - i0)); + hed->InMid = FALSE; + bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0); + hed->Index = hed->SelStart = hed->SelEnd = i0; + } HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize + 1); buf = (PBYTE) LocalLock(hed->hBuffer); if (buf) @@ -932,6 +1118,19 @@ HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR ch) if (('0' <= ch && ch <= '9') || ('A' <= ch && ch <= 'F') || ('a' <= ch && ch <= 'f')) { + if (hed->SelStart != hed->SelEnd) + { + buf = (PBYTE) LocalLock(hed->hBuffer); + if (buf) + { + MoveMemory(buf + i0, buf + i1, bufsize - i1); + LocalUnlock(hed->hBuffer); + } + HexEdit_SetMaxBufferSize(hed->hWndSelf, bufsize - (i1 - i0)); + hed->InMid = FALSE; + bufsize = (hed->hBuffer ? LocalSize(hed->hBuffer) : 0); + hed->Index = hed->SelStart = hed->SelEnd = i0; + } if (hed->InMid) { buf = (PBYTE) LocalLock(hed->hBuffer); @@ -947,10 +1146,6 @@ HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR ch) } hed->InMid = FALSE; hed->Index++; - hed->CaretCol = hed->Index % hed->ColumnsPerLine; - hed->CaretLine = hed->Index / hed->ColumnsPerLine; - InvalidateRect(hed->hWndSelf, NULL, TRUE); - HEXEDIT_MoveCaret(hed, TRUE); } else { @@ -969,11 +1164,11 @@ HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR ch) LocalUnlock(hed->hBuffer); } hed->InMid = TRUE; - hed->CaretCol = hed->Index % hed->ColumnsPerLine; - hed->CaretLine = hed->Index / hed->ColumnsPerLine; - InvalidateRect(hed->hWndSelf, NULL, TRUE); - HEXEDIT_MoveCaret(hed, TRUE); } + hed->CaretCol = hed->Index % hed->ColumnsPerLine; + hed->CaretLine = hed->Index / hed->ColumnsPerLine; + InvalidateRect(hed->hWndSelf, NULL, TRUE); + HEXEDIT_MoveCaret(hed, TRUE); return FALSE; } } @@ -1024,6 +1219,20 @@ HexEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return HEXEDIT_WM_LBUTTONDOWN(hed, (INT)wParam, p); } + case WM_LBUTTONUP: + { + p.x = LOWORD(lParam); + p.y = HIWORD(lParam); + return HEXEDIT_WM_LBUTTONUP(hed, (INT)wParam, p); + } + + case WM_MOUSEMOVE: + { + p.x = LOWORD(lParam); + p.y = HIWORD(lParam); + return HEXEDIT_WM_MOUSEMOVE(hed, (INT)wParam, p); + } + case WM_MOUSEWHEEL: { UINT nScrollLines = 3; @@ -1080,8 +1289,16 @@ HexEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return HEXEDIT_WM_NCDESTROY(hed); } break; + + case WM_CONTEXTMENU: + /* FIXME: Implement Cut, Copy, Paste, Delete and Select All */ + break; + + case WM_COMMAND: + /* FIXME: Implement Cut, Copy, Paste, Delete and Select All */ + break; } - return CallWindowProc(DefWindowProc, hWnd, uMsg, wParam, lParam); + return DefWindowProc(hWnd, uMsg, wParam, lParam); } From 79e8db1b56689c66d42f986333ba14f8667a2cd6 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 14 Jul 2010 19:32:03 +0000 Subject: [PATCH 06/23] [PING] - Fix a bug in the lost packet counter code which could result in a negative received value svn path=/trunk/; revision=48046 --- reactos/base/applications/network/ping/ping.c | 1 - 1 file changed, 1 deletion(-) diff --git a/reactos/base/applications/network/ping/ping.c b/reactos/base/applications/network/ping/ping.c index b2d48ca5ba3..19aa099842c 100644 --- a/reactos/base/applications/network/ping/ping.c +++ b/reactos/base/applications/network/ping/ping.c @@ -555,7 +555,6 @@ static BOOL Ping(VOID) } if (Status == SOCKET_ERROR) { - LostCount++; if (WSAGetLastError() == WSAEHOSTUNREACH) printf("Destination host unreachable.\n"); else From b90cf1a22e5d0d7b23c96839f686a90115a7a97f Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 14 Jul 2010 21:36:24 +0000 Subject: [PATCH 07/23] [GDI32_WINETEST] Don't compile generated.c on amd64 svn path=/trunk/; revision=48050 --- rostests/winetests/gdi32/gdi32.rbuild | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rostests/winetests/gdi32/gdi32.rbuild b/rostests/winetests/gdi32/gdi32.rbuild index 69f291d729f..7cfcb8a87b4 100644 --- a/rostests/winetests/gdi32/gdi32.rbuild +++ b/rostests/winetests/gdi32/gdi32.rbuild @@ -12,7 +12,9 @@ clipping.c dc.c gdiobj.c - generated.c + + generated.c + icm.c font.c mapping.c From 34316a4b6add42aab1f549d37185f35907f79d7c Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Wed, 14 Jul 2010 22:02:51 +0000 Subject: [PATCH 08/23] A little closer to x64 compat in GDI headers. Patch by Samuel Serapion. svn path=/trunk/; revision=48051 --- reactos/include/psdk/wingdi.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/include/psdk/wingdi.h b/reactos/include/psdk/wingdi.h index cad35c7d659..09a7718ea3e 100644 --- a/reactos/include/psdk/wingdi.h +++ b/reactos/include/psdk/wingdi.h @@ -1715,7 +1715,7 @@ typedef struct tagLOGBRUSH32 { typedef struct tagEMRCREATEBRUSHINDIRECT { EMR emr; DWORD ihBrush; - LOGBRUSH lb; + LOGBRUSH32 lb; } EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT; typedef LONG LCSCSTYPE; typedef LONG LCSGAMUTMATCH; @@ -1897,11 +1897,11 @@ typedef struct tagEMREXTCREATEFONTINDIRECTW { EXTLOGFONTW elfw; } EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW; typedef struct tagEXTLOGPEN { - UINT elpPenStyle; - UINT elpWidth; + DWORD elpPenStyle; + DWORD elpWidth; UINT elpBrushStyle; COLORREF elpColor; - LONG elpHatch; + ULONG_PTR elpHatch; DWORD elpNumEntries; DWORD elpStyleEntry[1]; } EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN,*NPEXTLOGPEN; From 2500a82fc2d13fe18e01c626757dcb465899e4a2 Mon Sep 17 00:00:00 2001 From: Sylvain Petreolle Date: Wed, 14 Jul 2010 22:08:19 +0000 Subject: [PATCH 09/23] gdi32:generated should now build on x64. svn path=/trunk/; revision=48052 --- rostests/winetests/gdi32/gdi32.rbuild | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rostests/winetests/gdi32/gdi32.rbuild b/rostests/winetests/gdi32/gdi32.rbuild index 7cfcb8a87b4..692cb58dd7e 100644 --- a/rostests/winetests/gdi32/gdi32.rbuild +++ b/rostests/winetests/gdi32/gdi32.rbuild @@ -12,8 +12,7 @@ clipping.c dc.c gdiobj.c - - generated.c + generated.c icm.c font.c From 58358394d6ed0b6d88efe683f3087e7a0876cd6c Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 14 Jul 2010 22:32:06 +0000 Subject: [PATCH 10/23] Fix build svn path=/trunk/; revision=48053 --- rostests/winetests/gdi32/gdi32.rbuild | 1 - 1 file changed, 1 deletion(-) diff --git a/rostests/winetests/gdi32/gdi32.rbuild b/rostests/winetests/gdi32/gdi32.rbuild index 692cb58dd7e..69f291d729f 100644 --- a/rostests/winetests/gdi32/gdi32.rbuild +++ b/rostests/winetests/gdi32/gdi32.rbuild @@ -13,7 +13,6 @@ dc.c gdiobj.c generated.c - icm.c font.c mapping.c From 6ae7a76cdaf343da6e71fc5526686bfdceefc51b Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 14 Jul 2010 23:13:31 +0000 Subject: [PATCH 11/23] [ntdll_winetest] Comment out some tests for WIN64 builds (wine headers are broken) svn path=/trunk/; revision=48054 --- rostests/winetests/ntdll/generated.c | 10 +++- rostests/winetests/ntdll/ros_diff.patch | 69 +++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 rostests/winetests/ntdll/ros_diff.patch diff --git a/rostests/winetests/ntdll/generated.c b/rostests/winetests/ntdll/generated.c index 86d6425f091..168aeb44708 100755 --- a/rostests/winetests/ntdll/generated.c +++ b/rostests/winetests/ntdll/generated.c @@ -442,6 +442,7 @@ static void test_pack_EXECUTION_STATE(void) static void test_pack_FLOATING_SAVE_AREA(void) { +#if 0 // this doesn't exist on amd64 /* FLOATING_SAVE_AREA */ TEST_TYPE_SIZE (FLOATING_SAVE_AREA, 112) TEST_TYPE_ALIGN (FLOATING_SAVE_AREA, 4) @@ -472,6 +473,7 @@ static void test_pack_FLOATING_SAVE_AREA(void) TEST_FIELD_SIZE (FLOATING_SAVE_AREA, Cr0NpxState, 4) TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, Cr0NpxState, 4) TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, Cr0NpxState, 108) +#endif } static void test_pack_FPO_DATA(void) @@ -875,7 +877,7 @@ static void test_pack_IMAGE_LINENUMBER(void) static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void) { /* IMAGE_LOAD_CONFIG_DIRECTORY */ - TEST_TYPE_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, 88) +// TEST_TYPE_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, 88) TEST_TYPE_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, 8) TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4) TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4) @@ -898,6 +900,7 @@ static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void) TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4) TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4) TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 20) +#if 0 // wine headers are broken TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4) TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4) TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 24) @@ -937,6 +940,7 @@ static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void) TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4) TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4) TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 80) +#endif } static void test_pack_IMAGE_NT_HEADERS(void) @@ -1980,11 +1984,13 @@ static void test_pack_PEXCEPTION_RECORD(void) static void test_pack_PFLOATING_SAVE_AREA(void) { +#if 0 /* PFLOATING_SAVE_AREA */ TEST_TYPE_SIZE (PFLOATING_SAVE_AREA, 8) TEST_TYPE_ALIGN (PFLOATING_SAVE_AREA, 8) TEST_TARGET_SIZE (PFLOATING_SAVE_AREA, 112) TEST_TARGET_ALIGN(PFLOATING_SAVE_AREA, 4) +#endif } static void test_pack_PFPO_DATA(void) @@ -2157,7 +2163,9 @@ static void test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY(void) /* PIMAGE_LOAD_CONFIG_DIRECTORY */ TEST_TYPE_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 8) TEST_TYPE_ALIGN (PIMAGE_LOAD_CONFIG_DIRECTORY, 8) +#if 0// wine headers are broken TEST_TARGET_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 88) +#endif TEST_TARGET_ALIGN(PIMAGE_LOAD_CONFIG_DIRECTORY, 8) } diff --git a/rostests/winetests/ntdll/ros_diff.patch b/rostests/winetests/ntdll/ros_diff.patch new file mode 100644 index 00000000000..a46b1c3d9c3 --- /dev/null +++ b/rostests/winetests/ntdll/ros_diff.patch @@ -0,0 +1,69 @@ +Index: generated.c +=================================================================== +--- generated.c (Revision 48052) ++++ generated.c (Arbeitskopie) +@@ -442,6 +442,7 @@ + + static void test_pack_FLOATING_SAVE_AREA(void) + { ++#if 0 + /* FLOATING_SAVE_AREA */ + TEST_TYPE_SIZE (FLOATING_SAVE_AREA, 112) + TEST_TYPE_ALIGN (FLOATING_SAVE_AREA, 4) +@@ -472,6 +473,7 @@ + TEST_FIELD_SIZE (FLOATING_SAVE_AREA, Cr0NpxState, 4) + TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, Cr0NpxState, 4) + TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, Cr0NpxState, 108) ++#endif + } + + static void test_pack_FPO_DATA(void) +@@ -875,7 +877,7 @@ + static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void) + { + /* IMAGE_LOAD_CONFIG_DIRECTORY */ +- TEST_TYPE_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, 88) ++// TEST_TYPE_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, 88) + TEST_TYPE_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, 8) + TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4) + TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4) +@@ -898,6 +900,7 @@ + TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4) + TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4) + TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 20) ++#if 0 // wine headers are broken + TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4) + TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4) + TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 24) +@@ -937,6 +940,7 @@ + TEST_FIELD_SIZE (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4) + TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4) + TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 80) ++#endif + } + + static void test_pack_IMAGE_NT_HEADERS(void) +@@ -1980,11 +1984,13 @@ + + static void test_pack_PFLOATING_SAVE_AREA(void) + { ++#if 0 + /* PFLOATING_SAVE_AREA */ + TEST_TYPE_SIZE (PFLOATING_SAVE_AREA, 8) + TEST_TYPE_ALIGN (PFLOATING_SAVE_AREA, 8) + TEST_TARGET_SIZE (PFLOATING_SAVE_AREA, 112) + TEST_TARGET_ALIGN(PFLOATING_SAVE_AREA, 4) ++#endif + } + + static void test_pack_PFPO_DATA(void) +@@ -2157,7 +2163,9 @@ + /* PIMAGE_LOAD_CONFIG_DIRECTORY */ + TEST_TYPE_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 8) + TEST_TYPE_ALIGN (PIMAGE_LOAD_CONFIG_DIRECTORY, 8) ++#if 0// wine headers are broken + TEST_TARGET_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 88) ++#endif + TEST_TARGET_ALIGN(PIMAGE_LOAD_CONFIG_DIRECTORY, 8) + } + From 50e511c01d819fd7f52391131f8e1a12e0156f72 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 14 Jul 2010 23:52:48 +0000 Subject: [PATCH 12/23] [shellapi.h] fix inclusion of pshpack / poppack (global and not for _WIN64) svn path=/trunk/; revision=48055 --- reactos/include/psdk/shellapi.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/reactos/include/psdk/shellapi.h b/reactos/include/psdk/shellapi.h index 888f9d9dcfe..9c7dff0f9f4 100644 --- a/reactos/include/psdk/shellapi.h +++ b/reactos/include/psdk/shellapi.h @@ -8,6 +8,11 @@ extern "C" { #pragma warning(push) #pragma warning(disable:4201) #endif + +#if !defined(_WIN64) +#include +#endif + #define WINSHELLAPI DECLSPEC_IMPORT #define ABE_LEFT 0 #define ABE_TOP 1 @@ -160,7 +165,7 @@ typedef struct _SHCREATEPROCESSINFOW typedef WORD FILEOP_FLAGS; typedef WORD PRINTEROP_FLAGS; -#include + typedef struct _AppBarData { DWORD cbSize; HWND hWnd; @@ -330,7 +335,6 @@ typedef struct _SHNAMEMAPPINGW { int cchOldPath; int cchNewPath; } SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW; -#include #define SHERB_NOCONFIRMATION 0x1 #define SHERB_NOPROGRESSUI 0x2 @@ -440,6 +444,11 @@ typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING; #define SHEmptyRecycleBin SHEmptyRecycleBinA #define SHGetNewLinkInfo SHGetNewLinkInfoA #endif + +#if !defined(_WIN64) +#include +#endif + #ifdef _MSC_VER #pragma warning(pop) #endif From 20b79b0029765a312b32af66f6c09ecf7ab1821a Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 00:07:31 +0000 Subject: [PATCH 13/23] [NTOSKRNL] KeQuerySystemTime and KeQueryInterruptTime are not implemenetd on amd64 svn path=/trunk/; revision=48056 --- reactos/ntoskrnl/ke/clock.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reactos/ntoskrnl/ke/clock.c b/reactos/ntoskrnl/ke/clock.c index 9d75215dfd6..a60eabf8a8d 100644 --- a/reactos/ntoskrnl/ke/clock.c +++ b/reactos/ntoskrnl/ke/clock.c @@ -175,6 +175,7 @@ KeQueryTickCount(IN PLARGE_INTEGER TickCount) } } +#ifndef _M_AMD64 /* * @implemented */ @@ -217,6 +218,7 @@ KeQueryInterruptTime(VOID) /* Return the time value */ return CurrentTime.QuadPart; } +#endif /* * @implemented From 8518877b954c360914e1f54de7c01ef09b42d998 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 00:24:38 +0000 Subject: [PATCH 14/23] [NTOSKRNL] Apply a workaround for WDK headers svn path=/trunk/; revision=48057 --- reactos/ntoskrnl/include/ntoskrnl.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h index 3b56d34afac..4261d020544 100644 --- a/reactos/ntoskrnl/include/ntoskrnl.h +++ b/reactos/ntoskrnl/include/ntoskrnl.h @@ -13,6 +13,12 @@ #define DbgPrint DbgPrintEarly #endif +/* WDK hacks */ +#ifdef _M_AMD64 +#define IoAllocateAdapterChannel _IoAllocateAdapterChannel +#define KeGetCurrentThread _KeGetCurrentThread +#endif + /* Version Data */ #undef __MSVCRT__ #include From 0f9bd40ee331848e370a5e5a50f880be012eb3b8 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 00:42:26 +0000 Subject: [PATCH 15/23] [NTOSKRNL] Remove the old amd64 compilation hack svn path=/trunk/; revision=48058 --- reactos/ntoskrnl/include/internal/amd64/ke.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/reactos/ntoskrnl/include/internal/amd64/ke.h b/reactos/ntoskrnl/include/internal/amd64/ke.h index 7fec19af99b..deab4f4ff84 100644 --- a/reactos/ntoskrnl/include/internal/amd64/ke.h +++ b/reactos/ntoskrnl/include/internal/amd64/ke.h @@ -316,9 +316,6 @@ KiThreadStartup(PKSYSTEM_ROUTINE SystemRoutine, #endif /* __ASM__ */ -#undef KeGetCurrentThread -#define _KeGetCurrentThread KeGetCurrentThread - // HACK extern NTKERNELAPI volatile KSYSTEM_TIME KeTickCount; From f08b9d1821059f1a9de52d25464adec0b410f2c2 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 01:10:18 +0000 Subject: [PATCH 16/23] [NTOSKRNL] - Define PD_COUNT, PDE_COUNT, PTE_COUNT for amd64, we should probably use PTE_PER_PAGE... instead - Fix incompatible declaration of MmResidentAvailablePages - Prevent duplicate definitions svn path=/trunk/; revision=48059 --- reactos/ntoskrnl/include/internal/mm.h | 2 +- reactos/ntoskrnl/mm/ARM3/miarm.h | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/reactos/ntoskrnl/include/internal/mm.h b/reactos/ntoskrnl/include/internal/mm.h index d8c61786f3f..46f38c5c2ad 100644 --- a/reactos/ntoskrnl/include/internal/mm.h +++ b/reactos/ntoskrnl/include/internal/mm.h @@ -17,7 +17,7 @@ extern UCHAR MmDisablePagingExecutive; extern ULONG MmLowestPhysicalPage; extern ULONG MmHighestPhysicalPage; extern ULONG MmAvailablePages; -extern ULONG MmResidentAvailablePages; +extern PFN_NUMBER MmResidentAvailablePages; extern PVOID MmPagedPoolBase; extern ULONG MmPagedPoolSize; diff --git a/reactos/ntoskrnl/mm/ARM3/miarm.h b/reactos/ntoskrnl/mm/ARM3/miarm.h index 88b25c46d39..b0240a13364 100644 --- a/reactos/ntoskrnl/mm/ARM3/miarm.h +++ b/reactos/ntoskrnl/mm/ARM3/miarm.h @@ -6,6 +6,8 @@ * PROGRAMMERS: ReactOS Portable Systems Group */ +#ifndef _M_AMD64 + #define MI_MIN_PAGES_FOR_NONPAGED_POOL_TUNING ((255*1024*1024) >> PAGE_SHIFT) #define MI_MIN_PAGES_FOR_SYSPTE_TUNING ((19*1024*1024) >> PAGE_SHIFT) #define MI_MIN_PAGES_FOR_SYSPTE_BOOST ((32*1024*1024) >> PAGE_SHIFT) @@ -38,6 +40,8 @@ #define MM_HIGHEST_VAD_ADDRESS \ (PVOID)((ULONG_PTR)MM_HIGHEST_USER_ADDRESS - (16 * PAGE_SIZE)) +#endif /* !_M_AMD64 */ + /* Make the code cleaner with some definitions for size multiples */ #define _1KB (1024) #define _1MB (1024 * _1KB) @@ -58,7 +62,9 @@ #define PDE_COUNT 4096 #define PTE_COUNT 256 #else -#error Define these please! +#define PD_COUNT PPE_PER_PAGE +#define PDE_COUNT PDE_PER_PAGE +#define PTE_COUNT PTE_PER_PAGE #endif #ifdef _M_IX86 From 0d37dab9f3422e22d88d1e09bef75483bb146953 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 01:34:50 +0000 Subject: [PATCH 17/23] [NTOSKRNL] Fix ExInitializeRundownProtectionCacheAware parameter (ULONG -> SIZE_T) svn path=/trunk/; revision=48060 --- reactos/ntoskrnl/ex/rundown.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ex/rundown.c b/reactos/ntoskrnl/ex/rundown.c index 0466e6ed664..13dc7aab33f 100644 --- a/reactos/ntoskrnl/ex/rundown.c +++ b/reactos/ntoskrnl/ex/rundown.c @@ -491,7 +491,7 @@ ExFreeCacheAwareRundownProtection(IN PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAwar VOID NTAPI ExInitializeRundownProtectionCacheAware(IN PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware, - IN ULONG Count) + IN SIZE_T Count) { DBG_UNREFERENCED_PARAMETER(RunRefCacheAware); DBG_UNREFERENCED_PARAMETER(Count); From 87bf4616fbf679ec0ff0b4970351f36f2c72477f Mon Sep 17 00:00:00 2001 From: Gabriel Ilardi Date: Thu, 15 Jul 2010 07:16:08 +0000 Subject: [PATCH 18/23] [shellapi.h] Fix build copy pasta spotted by encoded svn path=/trunk/; revision=48061 --- reactos/include/psdk/shellapi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/include/psdk/shellapi.h b/reactos/include/psdk/shellapi.h index 9c7dff0f9f4..3a42ce5540f 100644 --- a/reactos/include/psdk/shellapi.h +++ b/reactos/include/psdk/shellapi.h @@ -446,7 +446,7 @@ typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING; #endif #if !defined(_WIN64) -#include +#include #endif #ifdef _MSC_VER From 11d95dfa7e9b6af7ba8a5869d38476823b2e1b21 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 11:20:22 +0000 Subject: [PATCH 19/23] [NTOSKNL] #undef IoAllocateAdapterChannel before implementing it svn path=/trunk/; revision=48062 --- reactos/ntoskrnl/io/iomgr/adapter.c | 1 + 1 file changed, 1 insertion(+) diff --git a/reactos/ntoskrnl/io/iomgr/adapter.c b/reactos/ntoskrnl/io/iomgr/adapter.c index 1d402c95045..888583a28d4 100644 --- a/reactos/ntoskrnl/io/iomgr/adapter.c +++ b/reactos/ntoskrnl/io/iomgr/adapter.c @@ -21,6 +21,7 @@ ULONG IoDeviceHandlerObjectSize; /* FUNCTIONS *****************************************************************/ +#undef IoAllocateAdapterChannel /* * @implemented */ From 060168268fd108568886dd31edbfe07f835a3cd8 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 15 Jul 2010 11:24:17 +0000 Subject: [PATCH 20/23] [NTOSKRNL] Fix some amd64 KGDT constant names svn path=/trunk/; revision=48063 --- reactos/ntoskrnl/kd64/kddata.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/reactos/ntoskrnl/kd64/kddata.c b/reactos/ntoskrnl/kd64/kddata.c index c5db36d4f23..edce7d7983f 100644 --- a/reactos/ntoskrnl/kd64/kddata.c +++ b/reactos/ntoskrnl/kd64/kddata.c @@ -526,14 +526,14 @@ KDDEBUGGER_DATA64 KdDebuggerDataBlock = // // AMD64 GDT/LDT/TSS constants // - KGDT_64_R0_CODE, - KGDT_64_DATA, - KGDT_64_DATA, - KGDT_64_R3_CODE, - KGDT_64_DATA, - KGDT_64_DATA, + KGDT64_R0_CODE, + KGDT64_R3_DATA, + KGDT64_R3_DATA, + KGDT64_R3_CODE, + KGDT64_R3_DATA, + KGDT64_R3_DATA, 0, - KGDT_TSS, + KGDT64_SYS_TSS, 0, 0, #else From af95756f0232e774c9fa85d819f419865aaa4e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 15 Jul 2010 19:19:48 +0000 Subject: [PATCH 21/23] Merge 48064 from yarotows This had nothing to do in yarotows in the first place svn path=/trunk/; revision=48065 --- reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp | 2 +- reactos/subsystems/win32/win32k/ntuser/cursoricon.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp b/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp index 730b6a3adfb..dc030ed1168 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp @@ -354,7 +354,7 @@ DECLARE_INTERFACE_(IIrpQueue, IUnknown) STDMETHOD_(BOOLEAN, GetAcquiredTagRange)(THIS_ IN PVOID * FirstTag, - IN PVOID * LastTag); + IN PVOID * LastTag) PURE; }; diff --git a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c index 03f00530dee..b4446cd1213 100644 --- a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c +++ b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c @@ -1390,7 +1390,7 @@ UserDrawIconEx( IconSize.cy, SRCCOPY, 0, - hdcMask, + bAlpha ? 0 : hdcMask, 0, hdcImage ? 0 : IconSize.cy); } From 9889c134f2f10ac670f6e09b942ad6bb2ef1d0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 15 Jul 2010 19:29:45 +0000 Subject: [PATCH 22/23] SVN wins again... What's that? Revert everything that's not related to 48064 of 48065. svn path=/trunk/; revision=48066 --- reactos/subsystems/win32/win32k/ntuser/cursoricon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c index b4446cd1213..03f00530dee 100644 --- a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c +++ b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c @@ -1390,7 +1390,7 @@ UserDrawIconEx( IconSize.cy, SRCCOPY, 0, - bAlpha ? 0 : hdcMask, + hdcMask, 0, hdcImage ? 0 : IconSize.cy); } From b22a3883dcd695ac5fadf3f455eee34933341532 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Thu, 15 Jul 2010 19:34:21 +0000 Subject: [PATCH 23/23] [PSDK] - Fix WS2TCPIP_INLINE : extern inline -> static inline svn path=/trunk/; revision=48067 --- reactos/include/psdk/ws2ipdef.h | 2 +- reactos/include/psdk/ws2tcpip.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reactos/include/psdk/ws2ipdef.h b/reactos/include/psdk/ws2ipdef.h index f7b6c4d1ccd..5daa166a7a1 100644 --- a/reactos/include/psdk/ws2ipdef.h +++ b/reactos/include/psdk/ws2ipdef.h @@ -13,7 +13,7 @@ extern "C" { #ifdef _MSC_VER #define WS2TCPIP_INLINE __inline #else -#define WS2TCPIP_INLINE extern inline +#define WS2TCPIP_INLINE static inline #endif #include diff --git a/reactos/include/psdk/ws2tcpip.h b/reactos/include/psdk/ws2tcpip.h index 21a43d42c30..fe955fa7479 100644 --- a/reactos/include/psdk/ws2tcpip.h +++ b/reactos/include/psdk/ws2tcpip.h @@ -24,7 +24,7 @@ extern "C" { #ifdef _MSC_VER #define WS2TCPIP_INLINE __inline #else -#define WS2TCPIP_INLINE extern inline +#define WS2TCPIP_INLINE static inline #endif /* getaddrinfo error codes */