[TeamTalk 60]: [597] usarsim/Tools: Import usarsim tools
tk@edam.speech.cs.cmu.edu
tk at edam.speech.cs.cmu.edu
Thu May 10 11:05:46 EDT 2007
An HTML attachment was scrubbed...
URL: http://mailman.srv.cs.cmu.edu/pipermail/teamtalk-developers/attachments/20070510/a02f074f/attachment-0001.html
-------------- next part --------------
Added: usarsim/Tools/CVS/Entries
===================================================================
--- usarsim/Tools/CVS/Entries (rev 0)
+++ usarsim/Tools/CVS/Entries 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,6 @@
+D/ImageSrv////
+D/SimpleUI////
+D/Usar_UI////
+D/WSS////
+D/player////
+D/pyro////
Added: usarsim/Tools/CVS/Repository
===================================================================
--- usarsim/Tools/CVS/Repository (rev 0)
+++ usarsim/Tools/CVS/Repository 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+usarsim/Tools
Added: usarsim/Tools/CVS/Root
===================================================================
--- usarsim/Tools/CVS/Root (rev 0)
+++ usarsim/Tools/CVS/Root 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+:pserver:anonymous at usarsim.cvs.sourceforge.net:/cvsroot/usarsim
Added: usarsim/Tools/ImageSrv/CVS/Entries
===================================================================
--- usarsim/Tools/ImageSrv/CVS/Entries (rev 0)
+++ usarsim/Tools/ImageSrv/CVS/Entries 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,30 @@
+/FreeImage.dll/1.1/Fri Feb 17 17:16:21 2006/-kb/
+/Hook.dll/1.1/Fri Feb 17 17:16:21 2006/-kb/
+/ImageSrv.aps/1.3/Tue Jan 9 15:04:25 2007/-kb/
+/ImageSrv.clw/1.3/Tue Jan 9 15:04:26 2007//
+/ImageSrv.cpp/1.1/Fri Feb 17 17:16:21 2006//
+/ImageSrv.dsp/1.2/Tue Jan 9 15:04:26 2007//
+/ImageSrv.dsw/1.1/Fri Feb 17 17:16:21 2006//
+/ImageSrv.h/1.1/Fri Feb 17 17:16:21 2006//
+/ImageSrv.ncb/1.3/Tue Jan 9 15:04:26 2007/-kb/
+/ImageSrv.opt/1.3/Tue Jan 9 15:04:26 2007/-kb/
+/ImageSrv.plg/1.3/Tue Jan 9 15:04:26 2007//
+/ImageSrv.rc/1.3/Mon Feb 12 17:42:29 2007//
+/ImageSrvDlg.cpp/1.4/Mon Feb 12 17:42:29 2007//
+/ImageSrvDlg.h/1.3/Tue Jan 9 15:04:27 2007//
+/Info.html/1.1/Fri Feb 17 17:16:21 2006//
+/InfoDlg.cpp/1.1/Fri Feb 17 17:16:21 2006//
+/InfoDlg.h/1.1/Fri Feb 17 17:16:21 2006//
+/ListenSocket.cpp/1.2/Tue Jan 9 15:04:27 2007//
+/ListenSocket.h/1.1/Fri Feb 17 17:16:21 2006//
+/ReadMe.txt/1.3/Tue Jan 9 15:04:27 2007//
+/StdAfx.cpp/1.1/Fri Feb 17 17:16:21 2006//
+/StdAfx.h/1.1/Fri Feb 17 17:16:21 2006//
+/VideoSocket.cpp/1.3/Tue Jan 9 15:04:27 2007//
+/VideoSocket.h/1.1/Fri Feb 17 17:16:21 2006//
+/resource.h/1.3/Mon Feb 12 17:42:30 2007//
+/webbrowser2.cpp/1.1/Fri Feb 17 17:16:21 2006//
+/webbrowser2.h/1.1/Fri Feb 17 17:16:21 2006//
+D/FreeImage////
+D/Hook////
+D/res////
Added: usarsim/Tools/ImageSrv/CVS/Repository
===================================================================
--- usarsim/Tools/ImageSrv/CVS/Repository (rev 0)
+++ usarsim/Tools/ImageSrv/CVS/Repository 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+usarsim/Tools/ImageSrv
Added: usarsim/Tools/ImageSrv/CVS/Root
===================================================================
--- usarsim/Tools/ImageSrv/CVS/Root (rev 0)
+++ usarsim/Tools/ImageSrv/CVS/Root 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+:pserver:anonymous at usarsim.cvs.sourceforge.net:/cvsroot/usarsim
Added: usarsim/Tools/ImageSrv/FreeImage/CVS/Entries
===================================================================
--- usarsim/Tools/ImageSrv/FreeImage/CVS/Entries (rev 0)
+++ usarsim/Tools/ImageSrv/FreeImage/CVS/Entries 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,5 @@
+/FIIO_Mem.cpp/1.1/Fri Feb 17 17:16:21 2006//
+/FIIO_Mem.h/1.1/Fri Feb 17 17:16:21 2006//
+/FreeImage.h/1.1/Fri Feb 17 17:16:21 2006//
+/FreeImage.lib/1.1/Fri Feb 17 17:16:21 2006/-kb/
+D
Added: usarsim/Tools/ImageSrv/FreeImage/CVS/Repository
===================================================================
--- usarsim/Tools/ImageSrv/FreeImage/CVS/Repository (rev 0)
+++ usarsim/Tools/ImageSrv/FreeImage/CVS/Repository 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+usarsim/Tools/ImageSrv/FreeImage
Added: usarsim/Tools/ImageSrv/FreeImage/CVS/Root
===================================================================
--- usarsim/Tools/ImageSrv/FreeImage/CVS/Root (rev 0)
+++ usarsim/Tools/ImageSrv/FreeImage/CVS/Root 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+:pserver:anonymous at usarsim.cvs.sourceforge.net:/cvsroot/usarsim
Added: usarsim/Tools/ImageSrv/FreeImage/FIIO_Mem.cpp
===================================================================
--- usarsim/Tools/ImageSrv/FreeImage/FIIO_Mem.cpp (rev 0)
+++ usarsim/Tools/ImageSrv/FreeImage/FIIO_Mem.cpp 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,146 @@
+/*--------------------------------------------------------------------------*\
+|| fiio_mem.cpp by Ryan Rubley <ryan at lostreality.org> ||
+|| ||
+|| (v1.02) 4-28-2004 ||
+|| FreeImageIO to memory ||
+|| ||
+\*--------------------------------------------------------------------------*/
+
+#include <string.h>
+#include <stdlib.h>
+#include "fiio_mem.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+FIBITMAP *
+FreeImage_LoadFromMem(FREE_IMAGE_FORMAT fif, fiio_mem_handle *handle, int flags) {
+ FreeImageIO io;
+ SetMemIO(&io);
+
+ if (handle && handle->data) {
+ handle->curpos = 0;
+ return FreeImage_LoadFromHandle(fif, &io, (fi_handle)handle, flags);
+ }
+
+ return NULL;
+}
+
+BOOL
+FreeImage_SaveToMem(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, fiio_mem_handle *handle, int flags) {
+ FreeImageIO io;
+ SetMemIO(&io);
+
+ if (handle) {
+ handle->filelen = 0;
+ handle->curpos = 0;
+ return FreeImage_SaveToHandle(fif, dib, &io, (fi_handle)handle, flags);
+ }
+
+ return FALSE;
+}
+
+// ----------------------------------------------------------
+
+void
+SetMemIO(FreeImageIO *io) {
+ io->read_proc = fiio_mem_ReadProc;
+ io->seek_proc = fiio_mem_SeekProc;
+ io->tell_proc = fiio_mem_TellProc;
+ io->write_proc = fiio_mem_WriteProc;
+}
+
+// ----------------------------------------------------------
+
+#define FIIOMEM(member) (((fiio_mem_handle *)handle)->member)
+
+unsigned _stdcall
+fiio_mem_ReadProc(void *buffer, unsigned size, unsigned count, fi_handle handle) {
+ unsigned x;
+ for( x=0; x<count; x++ ) {
+ //if there isnt size bytes left to read, set pos to eof and return a short count
+ if( FIIOMEM(filelen)-FIIOMEM(curpos) < (long)size ) {
+ FIIOMEM(curpos) = FIIOMEM(filelen);
+ break;
+ }
+ //copy size bytes count times
+ memcpy( buffer, (char *)FIIOMEM(data) + FIIOMEM(curpos), size );
+ FIIOMEM(curpos) += size;
+ buffer = (char *)buffer + size;
+ }
+ return x;
+}
+
+unsigned _stdcall
+fiio_mem_WriteProc(void *buffer, unsigned size, unsigned count, fi_handle handle) {
+ void *newdata;
+ long newdatalen;
+ //double the data block size if we need to
+ while( FIIOMEM(curpos)+(long)(size*count) >= FIIOMEM(datalen) ) {
+ //if we are at or above 1G, we cant double without going negative
+ if( FIIOMEM(datalen) & 0x40000000 ) {
+ //max 2G
+ if( FIIOMEM(datalen) == 0x7FFFFFFF ) {
+ return 0;
+ }
+ newdatalen = 0x7FFFFFFF;
+ } else if( FIIOMEM(datalen) == 0 ) {
+ //default to 4K if nothing yet
+ newdatalen = 4096;
+ } else {
+ //double size
+ newdatalen = FIIOMEM(datalen) << 1;
+ }
+ newdata = realloc( FIIOMEM(data), newdatalen );
+ if( !newdata ) {
+ return 0;
+ }
+ FIIOMEM(data) = newdata;
+ FIIOMEM(datalen) = newdatalen;
+ }
+ memcpy( (char *)FIIOMEM(data) + FIIOMEM(curpos), buffer, size*count );
+ FIIOMEM(curpos) += size*count;
+ if( FIIOMEM(curpos) > FIIOMEM(filelen) ) {
+ FIIOMEM(filelen) = FIIOMEM(curpos);
+ }
+ return count;
+}
+
+int _stdcall
+fiio_mem_SeekProc(fi_handle handle, long offset, int origin) {
+ switch(origin) { //0 to filelen-1 are 'inside' the file
+ default:
+ case SEEK_SET: //can fseek() to 0-7FFFFFFF always
+ if( offset >= 0 ) {
+ FIIOMEM(curpos) = offset;
+ return 0;
+ }
+ break;
+
+ case SEEK_CUR:
+ if( FIIOMEM(curpos)+offset >= 0 ) {
+ FIIOMEM(curpos) += offset;
+ return 0;
+ }
+ break;
+
+ case SEEK_END:
+ if( FIIOMEM(filelen)+offset >= 0 ) {
+ FIIOMEM(curpos) = FIIOMEM(filelen)+offset;
+ return 0;
+ }
+ break;
+ }
+
+ return -1;
+}
+
+long _stdcall
+fiio_mem_TellProc(fi_handle handle) {
+ return FIIOMEM(curpos);
+}
+
+#ifdef __cplusplus
+}
+#endif
Added: usarsim/Tools/ImageSrv/FreeImage/FIIO_Mem.h
===================================================================
--- usarsim/Tools/ImageSrv/FreeImage/FIIO_Mem.h (rev 0)
+++ usarsim/Tools/ImageSrv/FreeImage/FIIO_Mem.h 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,74 @@
+/*--------------------------------------------------------------------------*\
+|| fiio_mem.h by Ryan Rubley <ryan at lostreality.org> ||
+|| ||
+|| (v1.02) 4-28-2004 ||
+|| FreeImageIO to memory ||
+|| ||
+\*--------------------------------------------------------------------------*/
+
+#ifndef _FIIO_MEM_H_
+#define _FIIO_MEM_H_
+
+#include "freeimage.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct fiio_mem_handle_s {
+ long filelen,datalen,curpos;
+ void *data;
+} fiio_mem_handle;
+
+/* it is up to the user to create a fiio_mem_handle and init datalen and data
+ * filelen will be pre-set to 0 by SaveToMem
+ * curpos will be pre-set to 0 by SaveToMem and LoadFromMem
+ * IMPORTANT: data should be set to NULL and datalen to 0,
+ * unless the user wants to manually malloc a larger buffer
+ */
+FIBITMAP *FreeImage_LoadFromMem(FREE_IMAGE_FORMAT fif, fiio_mem_handle *handle, int flags);
+BOOL FreeImage_SaveToMem(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, fiio_mem_handle *handle, int flags);
+
+void SetMemIO(FreeImageIO *io);
+unsigned _stdcall fiio_mem_ReadProc(void *buffer, unsigned size, unsigned count, fi_handle handle);
+unsigned _stdcall fiio_mem_WriteProc(void *buffer, unsigned size, unsigned count, fi_handle handle);
+int _stdcall fiio_mem_SeekProc(fi_handle handle, long offset, int origin);
+long _stdcall fiio_mem_TellProc(fi_handle handle);
+
+/*** Example Usage ***
+
+//variables
+FIBITMAP *bitmap, *bitmap2;
+fiio_mem_handle fmh;
+
+//important initialization
+fmh.data = NULL;
+fmh.datalen = 0;
+
+//load a regular file
+bitmap = FreeImage_Load(FIF_PNG, "sample.png");
+
+//save the file to memory
+FreeImage_SaveToMem(FIF_PNG, bitmap, &fmh, 0);
+
+//at this point, fmh.data contains the entire PNG data in memory
+//fmh.datalen is the amount of space malloc'd for the image in memory,
+//but only fmh.filelen amount of that space is actually used.
+
+//its easy load an image from memory as well
+bitmap2 = FreeImage_LoadFromMem(FIF_PNG, &fmh, 0);
+//you could also have image data in memory via some other method, and just set
+//fmh.data to point to it, and set both fmh.datalen and fmh.filelen to the
+//size of that data, then FreeImage_LoadFromMem could load the image from that
+//memory
+
+//make sure to free the data since SaveToMem will cause it to be malloc'd
+free(fmh.data);
+
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Added: usarsim/Tools/ImageSrv/FreeImage/FreeImage.h
===================================================================
--- usarsim/Tools/ImageSrv/FreeImage/FreeImage.h (rev 0)
+++ usarsim/Tools/ImageSrv/FreeImage/FreeImage.h 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,695 @@
+// ==========================================================
+// FreeImage 3
+//
+// Design and implementation by
+// - Floris van den Berg (flvdberg at wxs.nl)
+// - Herv\xE9 Drolon (drolon at infonie.fr)
+//
+// Contributors:
+// - Adam Gates (radad at xoasis.com)
+// - Alex Kwak
+// - Alexander Dymerets (sashad at te.net.ua)
+// - Detlev Vendt (detlev.vendt at brillit.de)
+// - Jan L. Nauta (jln at magentammt.com)
+// - Jani Kajala (janik at remedy.fi)
+// - Juergen Riecker (j.riecker at gmx.de)
+// - Karl-Heinz Bussian (khbussian at moss.de)
+// - Laurent Rocher (rocherl at club-internet.fr)
+// - Luca Piergentili (l.pierge at terra.es)
+// - Machiel ten Brinke (brinkem at uni-one.nl)
+// - Markus Loibl (markus.loibl at epost.de)
+// - Martin Weber (martweb at gmx.net)
+// - Matthias Wandel (mwandel at rim.net)
+// - Michal Novotny (michal at etc.cz)
+// - Ryan Rubley (ryan at lostreality.org)
+// - Volker G\xE4rtner (volkerg at gmx.at)
+//
+// This file is part of FreeImage 3
+//
+// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
+// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
+// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
+// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
+// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
+// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
+// THIS DISCLAIMER.
+//
+// Use at your own risk!
+// ==========================================================
+
+#ifndef FREEIMAGE_H
+#define FREEIMAGE_H
+
+// Compiler options ---------------------------------------------------------
+
+#if defined(FREEIMAGE_LIB) || !defined(WIN32)
+#define DLL_API
+#define DLL_CALLCONV
+#else
+#define WIN32_LEAN_AND_MEAN
+#define DLL_CALLCONV __stdcall
+// The following ifdef block is the standard way of creating macros which make exporting
+// from a DLL simpler. All files within this DLL are compiled with the FREEIMAGE_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see
+// DLL_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef FREEIMAGE_EXPORTS
+#define DLL_API __declspec(dllexport)
+#else
+#define DLL_API __declspec(dllimport)
+#endif // FREEIMAGE_EXPORTS
+#endif // FREEIMAGE_LIB || !WIN32
+
+// Some versions of gcc may have BYTE_ORDER or __BYTE_ORDER defined
+// If your big endian system isn't being detected, add an OS specific check
+#if (defined(BYTE_ORDER) && BYTE_ORDER==BIG_ENDIAN) || \
+ (defined(__BYTE_ORDER) && __BYTE_ORDER==__BIG_ENDIAN) || \
+ defined(__APPLE__)
+#define FREEIMAGE_BIGENDIAN
+#endif // BYTE_ORDER
+
+// For C compatility --------------------------------------------------------
+
+#ifdef __cplusplus
+#define FI_DEFAULT(x) = x
+#define FI_ENUM(x) enum x
+#define FI_STRUCT(x) struct x
+#else
+#define FI_DEFAULT(x)
+#define FI_ENUM(x) typedef int x; enum x
+#define FI_STRUCT(x) typedef struct x x; struct x
+#endif
+
+// Bitmap types -------------------------------------------------------------
+
+FI_STRUCT (FIBITMAP) { void *data; };
+FI_STRUCT (FIMULTIBITMAP) { void *data; };
+
+// Types used in the library (directly copied from Windows) -----------------
+
+#ifndef _WINDOWS_
+#define _WINDOWS_
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+#endif
+
+typedef long BOOL;
+typedef unsigned char BYTE;
+typedef unsigned short WORD;
+typedef unsigned long DWORD;
+typedef long LONG;
+
+#ifdef WIN32
+#pragma pack(push, 1)
+#else
+#pragma pack(1)
+#endif // WIN32
+
+typedef struct tagRGBQUAD {
+#ifdef FREEIMAGE_BIGENDIAN
+ BYTE rgbRed;
+ BYTE rgbGreen;
+ BYTE rgbBlue;
+#else
+ BYTE rgbBlue;
+ BYTE rgbGreen;
+ BYTE rgbRed;
+#endif // FREEIMAGE_BIGENDIAN
+ BYTE rgbReserved;
+} RGBQUAD;
+
+typedef struct tagRGBTRIPLE {
+#ifdef FREEIMAGE_BIGENDIAN
+ BYTE rgbtRed;
+ BYTE rgbtGreen;
+ BYTE rgbtBlue;
+#else
+ BYTE rgbtBlue;
+ BYTE rgbtGreen;
+ BYTE rgbtRed;
+#endif // FREEIMAGE_BIGENDIAN
+} RGBTRIPLE;
+
+#ifdef WIN32
+#pragma pack(pop)
+#else
+#pragma pack()
+#endif // WIN32
+
+typedef struct tagBITMAPINFOHEADER{
+ DWORD biSize;
+ LONG biWidth;
+ LONG biHeight;
+ WORD biPlanes;
+ WORD biBitCount;
+ DWORD biCompression;
+ DWORD biSizeImage;
+ LONG biXPelsPerMeter;
+ LONG biYPelsPerMeter;
+ DWORD biClrUsed;
+ DWORD biClrImportant;
+} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
+
+typedef struct tagBITMAPINFO {
+ BITMAPINFOHEADER bmiHeader;
+ RGBQUAD bmiColors[1];
+} BITMAPINFO, *PBITMAPINFO;
+
+#endif // _WINDOWS_
+
+// Indexes for byte arrays, masks and shifts for treating pixels as words ---
+// These coincide with the order of RGBQUAD and RGBTRIPLE -------------------
+
+#ifndef FREEIMAGE_BIGENDIAN
+// Little Endian (x86 / MS Windows, Linux) : BGR(A) order
+#define FI_RGBA_RED 2
+#define FI_RGBA_GREEN 1
+#define FI_RGBA_BLUE 0
+#define FI_RGBA_ALPHA 3
+#define FI_RGBA_RED_MASK 0x00FF0000
+#define FI_RGBA_GREEN_MASK 0x0000FF00
+#define FI_RGBA_BLUE_MASK 0x000000FF
+#define FI_RGBA_ALPHA_MASK 0xFF000000
+#define FI_RGBA_RED_SHIFT 16
+#define FI_RGBA_GREEN_SHIFT 8
+#define FI_RGBA_BLUE_SHIFT 0
+#define FI_RGBA_ALPHA_SHIFT 24
+#else
+// Big Endian (PPC / Linux, MaxOSX) : RGB(A) order
+#define FI_RGBA_RED 0
+#define FI_RGBA_GREEN 1
+#define FI_RGBA_BLUE 2
+#define FI_RGBA_ALPHA 3
+#define FI_RGBA_RED_MASK 0xFF000000
+#define FI_RGBA_GREEN_MASK 0x00FF0000
+#define FI_RGBA_BLUE_MASK 0x0000FF00
+#define FI_RGBA_ALPHA_MASK 0x000000FF
+#define FI_RGBA_RED_SHIFT 24
+#define FI_RGBA_GREEN_SHIFT 16
+#define FI_RGBA_BLUE_SHIFT 8
+#define FI_RGBA_ALPHA_SHIFT 0
+#endif // FREEIMAGE_BIGENDIAN
+
+#define FI_RGBA_RGB_MASK (FI_RGBA_RED_MASK|FI_RGBA_GREEN_MASK|FI_RGBA_BLUE_MASK)
+
+// The 16bit macros only include masks and shifts, since each color element is not byte aligned
+
+#define FI16_555_RED_MASK 0x7C00
+#define FI16_555_GREEN_MASK 0x03E0
+#define FI16_555_BLUE_MASK 0x001F
+#define FI16_555_RED_SHIFT 10
+#define FI16_555_GREEN_SHIFT 5
+#define FI16_555_BLUE_SHIFT 0
+#define FI16_565_RED_MASK 0xF800
+#define FI16_565_GREEN_MASK 0x07E0
+#define FI16_565_BLUE_MASK 0x001F
+#define FI16_565_RED_SHIFT 11
+#define FI16_565_GREEN_SHIFT 5
+#define FI16_565_BLUE_SHIFT 0
+
+// ICC profile support ------------------------------------------------------
+
+#define FIICC_DEFAULT 0x00
+#define FIICC_COLOR_IS_CMYK 0x01
+
+FI_STRUCT (FIICCPROFILE) {
+ WORD flags; // info flag
+ DWORD size; // profile's size measured in bytes
+ void *data; // points to a block of contiguous memory containing the profile
+};
+
+// Important enums ----------------------------------------------------------
+
+/** I/O image format identifiers.
+*/
+FI_ENUM(FREE_IMAGE_FORMAT) {
+ FIF_UNKNOWN = -1,
+ FIF_BMP = 0,
+ FIF_ICO = 1,
+ FIF_JPEG = 2,
+ FIF_JNG = 3,
+ FIF_KOALA = 4,
+ FIF_LBM = 5,
+ FIF_IFF = FIF_LBM,
+ FIF_MNG = 6,
+ FIF_PBM = 7,
+ FIF_PBMRAW = 8,
+ FIF_PCD = 9,
+ FIF_PCX = 10,
+ FIF_PGM = 11,
+ FIF_PGMRAW = 12,
+ FIF_PNG = 13,
+ FIF_PPM = 14,
+ FIF_PPMRAW = 15,
+ FIF_RAS = 16,
+ FIF_TARGA = 17,
+ FIF_TIFF = 18,
+ FIF_WBMP = 19,
+ FIF_PSD = 20,
+ FIF_CUT = 21,
+ FIF_XBM = 22,
+ FIF_XPM = 23,
+ FIF_DDS = 24
+};
+
+/** Image type used in FreeImage.
+*/
+FI_ENUM(FREE_IMAGE_TYPE) {
+ FIT_UNKNOWN = 0, // unknown type
+ FIT_BITMAP = 1, // standard image : 1-, 4-, 8-, 16-, 24-, 32-bit
+ FIT_UINT16 = 2, // array of unsigned short : unsigned 16-bit
+ FIT_INT16 = 3, // array of short : signed 16-bit
+ FIT_UINT32 = 4, // array of unsigned long : unsigned 32-bit
+ FIT_INT32 = 5, // array of long : signed 32-bit
+ FIT_FLOAT = 6, // array of float : 32-bit IEEE floating point
+ FIT_DOUBLE = 7, // array of double : 64-bit IEEE floating point
+ FIT_COMPLEX = 8 // array of FICOMPLEX : 2 x 64-bit IEEE floating point
+};
+
+/** Data structure for COMPLEX type (complex number)
+*/
+typedef struct tagFreeImageComplex {
+ /// real part
+ double r;
+ /// imaginary part
+ double i;
+} FICOMPLEX;
+
+/** Image color type used in FreeImage.
+*/
+FI_ENUM(FREE_IMAGE_COLOR_TYPE) {
+ FIC_MINISWHITE = 0, // min value is white
+ FIC_MINISBLACK = 1, // min value is black
+ FIC_RGB = 2, // RGB color model
+ FIC_PALETTE = 3, // color map indexed
+ FIC_RGBALPHA = 4, // RGB color model with alpha channel
+ FIC_CMYK = 5 // CMYK color model
+};
+
+/** Color quantization algorithms.
+Constants used in FreeImage_ColorQuantize.
+*/
+FI_ENUM(FREE_IMAGE_QUANTIZE) {
+ FIQ_WUQUANT = 0, // Xiaolin Wu color quantization algorithm
+ FIQ_NNQUANT = 1 // NeuQuant neural-net quantization algorithm by Anthony Dekker
+};
+
+/** Dithering algorithms.
+Constants used FreeImage_Dither.
+*/
+FI_ENUM(FREE_IMAGE_DITHER) {
+ FID_FS = 0, // Floyd & Steinberg error diffusion
+ FID_BAYER4x4 = 1, // Bayer ordered dispersed dot dithering (order 2 dithering matrix)
+ FID_BAYER8x8 = 2, // Bayer ordered dispersed dot dithering (order 3 dithering matrix)
+ FID_CLUSTER6x6 = 3, // Ordered clustered dot dithering (order 3 - 6x6 matrix)
+ FID_CLUSTER8x8 = 4, // Ordered clustered dot dithering (order 4 - 8x8 matrix)
+ FID_CLUSTER16x16= 5 // Ordered clustered dot dithering (order 8 - 16x16 matrix)
+};
+
+/** Upsampling / downsampling filters.
+Constants used in FreeImage_Rescale.
+*/
+FI_ENUM(FREE_IMAGE_FILTER) {
+ FILTER_BOX = 0, // Box, pulse, Fourier window, 1st order (constant) b-spline
+ FILTER_BICUBIC = 1, // Mitchell & Netravali's two-param cubic filter
+ FILTER_BILINEAR = 2, // Bilinear filter
+ FILTER_BSPLINE = 3, // 4th order (cubic) b-spline
+ FILTER_CATMULLROM = 4, // Catmull-Rom spline, Overhauser spline
+ FILTER_LANCZOS3 = 5 // Lanczos3 filter
+};
+
+/** Color channels.
+Constants used in color manipulation routines.
+*/
+FI_ENUM(FREE_IMAGE_COLOR_CHANNEL) {
+ FICC_RGB = 0, // Use red, green and blue channels
+ FICC_RED = 1, // Use red channel
+ FICC_GREEN = 2, // Use green channel
+ FICC_BLUE = 3, // Use blue channel
+ FICC_ALPHA = 4, // Use alpha channel
+ FICC_BLACK = 5, // Use black channel
+ FICC_REAL = 6, // Complex images: use real part
+ FICC_IMAG = 7, // Complex images: use imaginary part
+ FICC_MAG = 8, // Complex images: use magnitude
+ FICC_PHASE = 9 // Complex images: use phase
+};
+
+// File IO routines ---------------------------------------------------------
+
+#ifndef FREEIMAGE_IO
+#define FREEIMAGE_IO
+
+typedef void* fi_handle;
+typedef unsigned (DLL_CALLCONV *FI_ReadProc) (void *buffer, unsigned size, unsigned count, fi_handle handle);
+typedef unsigned (DLL_CALLCONV *FI_WriteProc) (void *buffer, unsigned size, unsigned count, fi_handle handle);
+typedef int (DLL_CALLCONV *FI_SeekProc) (fi_handle handle, long offset, int origin);
+typedef long (DLL_CALLCONV *FI_TellProc) (fi_handle handle);
+
+#ifdef WIN32
+#pragma pack(push, 1)
+#else
+#pragma pack(1)
+#endif // WIN32
+
+FI_STRUCT(FreeImageIO) {
+ FI_ReadProc read_proc; // pointer to the function used to read data
+ FI_WriteProc write_proc; // pointer to the function used to write data
+ FI_SeekProc seek_proc; // pointer to the function used to seek
+ FI_TellProc tell_proc; // pointer to the function used to aquire the current position
+};
+
+#ifdef WIN32
+#pragma pack(pop)
+#else
+#pragma pack()
+#endif // WIN32
+
+#endif // FREEIMAGE_IO
+
+// Plugin routines ----------------------------------------------------------
+
+#ifndef PLUGINS
+#define PLUGINS
+
+typedef const char *(DLL_CALLCONV *FI_FormatProc) ();
+typedef const char *(DLL_CALLCONV *FI_DescriptionProc) ();
+typedef const char *(DLL_CALLCONV *FI_ExtensionListProc) ();
+typedef const char *(DLL_CALLCONV *FI_RegExprProc) ();
+typedef void *(DLL_CALLCONV *FI_OpenProc)(FreeImageIO *io, fi_handle handle, BOOL read);
+typedef void (DLL_CALLCONV *FI_CloseProc)(FreeImageIO *io, fi_handle handle, void *data);
+typedef int (DLL_CALLCONV *FI_PageCountProc)(FreeImageIO *io, fi_handle handle, void *data);
+typedef int (DLL_CALLCONV *FI_PageCapabilityProc)(FreeImageIO *io, fi_handle handle, void *data);
+typedef FIBITMAP *(DLL_CALLCONV *FI_LoadProc)(FreeImageIO *io, fi_handle handle, int page, int flags, void *data);
+typedef BOOL (DLL_CALLCONV *FI_SaveProc)(FreeImageIO *io, FIBITMAP *dib, fi_handle handle, int page, int flags, void *data);
+typedef BOOL (DLL_CALLCONV *FI_ValidateProc)(FreeImageIO *io, fi_handle handle);
+typedef const char *(DLL_CALLCONV *FI_MimeProc) ();
+typedef BOOL (DLL_CALLCONV *FI_SupportsExportBPPProc)(int bpp);
+typedef BOOL (DLL_CALLCONV *FI_SupportsExportTypeProc)(FREE_IMAGE_TYPE type);
+typedef BOOL (DLL_CALLCONV *FI_SupportsICCProfilesProc)();
+
+FI_STRUCT (Plugin) {
+ FI_FormatProc format_proc;
+ FI_DescriptionProc description_proc;
+ FI_ExtensionListProc extension_proc;
+ FI_RegExprProc regexpr_proc;
+ FI_OpenProc open_proc;
+ FI_CloseProc close_proc;
+ FI_PageCountProc pagecount_proc;
+ FI_PageCapabilityProc pagecapability_proc;
+ FI_LoadProc load_proc;
+ FI_SaveProc save_proc;
+ FI_ValidateProc validate_proc;
+ FI_MimeProc mime_proc;
+ FI_SupportsExportBPPProc supports_export_bpp_proc;
+ FI_SupportsExportTypeProc supports_export_type_proc;
+ FI_SupportsICCProfilesProc supports_icc_profiles_proc;
+};
+
+typedef void (DLL_CALLCONV *FI_InitProc)(Plugin *plugin, int format_id);
+
+#endif // PLUGINS
+
+
+// Load / Save flag constants -----------------------------------------------
+
+#define BMP_DEFAULT 0
+#define BMP_SAVE_RLE 1
+#define CUT_DEFAULT 0
+#define DDS_DEFAULT 0
+#define ICO_DEFAULT 0
+#define ICO_MAKEALPHA 1 // convert to 32bpp and create an alpha channel from the AND-mask when loading
+#define IFF_DEFAULT 0
+#define JPEG_DEFAULT 0
+#define JPEG_FAST 1
+#define JPEG_ACCURATE 2
+#define JPEG_QUALITYSUPERB 0x80
+#define JPEG_QUALITYGOOD 0x100
+#define JPEG_QUALITYNORMAL 0x200
+#define JPEG_QUALITYAVERAGE 0x400
+#define JPEG_QUALITYBAD 0x800
+#define KOALA_DEFAULT 0
+#define LBM_DEFAULT 0
+#define MNG_DEFAULT 0
+#define PCD_DEFAULT 0
+#define PCD_BASE 1 // load the bitmap sized 768 x 512
+#define PCD_BASEDIV4 2 // load the bitmap sized 384 x 256
+#define PCD_BASEDIV16 3 // load the bitmap sized 192 x 128
+#define PCX_DEFAULT 0
+#define PNG_DEFAULT 0
+#define PNG_IGNOREGAMMA 1 // avoid gamma correction
+#define PNM_DEFAULT 0
+#define PNM_SAVE_RAW 0 // If set the writer saves in RAW format (i.e. P4, P5 or P6)
+#define PNM_SAVE_ASCII 1 // If set the writer saves in ASCII format (i.e. P1, P2 or P3)
+#define PSD_DEFAULT 0
+#define RAS_DEFAULT 0
+#define TARGA_DEFAULT 0
+#define TARGA_LOAD_RGB888 1 // If set the loader converts RGB555 and ARGB8888 -> RGB888.
+#define TIFF_DEFAULT 0
+#define TIFF_CMYK 0x0001 // reads/stores tags for separated CMYK (use | to combine with compression flags)
+#define TIFF_PACKBITS 0x0100 // save using PACKBITS compression
+#define TIFF_DEFLATE 0x0200 // save using DEFLATE compression (a.k.a. ZLIB compression)
+#define TIFF_ADOBE_DEFLATE 0x0400 // save using ADOBE DEFLATE compression
+#define TIFF_NONE 0x0800 // save without any compression
+#define WBMP_DEFAULT 0
+#define XBM_DEFAULT 0
+#define XPM_DEFAULT 0
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Init / Error routines ----------------------------------------------------
+
+DLL_API void DLL_CALLCONV FreeImage_Initialise(BOOL load_local_plugins_only FI_DEFAULT(FALSE));
+DLL_API void DLL_CALLCONV FreeImage_DeInitialise();
+
+// Version routines ---------------------------------------------------------
+
+DLL_API const char *DLL_CALLCONV FreeImage_GetVersion();
+DLL_API const char *DLL_CALLCONV FreeImage_GetCopyrightMessage();
+
+// Message output functions -------------------------------------------------
+
+DLL_API void DLL_CALLCONV FreeImage_OutputMessageProc(int fif, const char *fmt, ...);
+
+typedef void (*FreeImage_OutputMessageFunction)(FREE_IMAGE_FORMAT fif, const char *msg);
+DLL_API void DLL_CALLCONV FreeImage_SetOutputMessage(FreeImage_OutputMessageFunction omf);
+
+// Allocate / Clone / Unload routines ---------------------------------------
+
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Allocate(int width, int height, int bpp, unsigned red_mask FI_DEFAULT(0), unsigned green_mask FI_DEFAULT(0), unsigned blue_mask FI_DEFAULT(0));
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_AllocateT(FREE_IMAGE_TYPE type, int width, int height, int bpp FI_DEFAULT(8), unsigned red_mask FI_DEFAULT(0), unsigned green_mask FI_DEFAULT(0), unsigned blue_mask FI_DEFAULT(0));
+DLL_API FIBITMAP * DLL_CALLCONV FreeImage_Clone(FIBITMAP *dib);
+DLL_API void DLL_CALLCONV FreeImage_Unload(FIBITMAP *dib);
+
+// Load / Save routines -----------------------------------------------------
+
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Load(FREE_IMAGE_FORMAT fif, const char *filename, int flags FI_DEFAULT(0));
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_LoadFromHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle, int flags FI_DEFAULT(0));
+DLL_API BOOL DLL_CALLCONV FreeImage_Save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, const char *filename, int flags FI_DEFAULT(0));
+DLL_API BOOL DLL_CALLCONV FreeImage_SaveToHandle(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, FreeImageIO *io, fi_handle handle, int flags FI_DEFAULT(0));
+
+// Plugin Interface ---------------------------------------------------------
+
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_RegisterLocalPlugin(FI_InitProc proc_address, const char *format FI_DEFAULT(0), const char *description FI_DEFAULT(0), const char *extension FI_DEFAULT(0), const char *regexpr FI_DEFAULT(0));
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_RegisterExternalPlugin(const char *path, const char *format FI_DEFAULT(0), const char *description FI_DEFAULT(0), const char *extension FI_DEFAULT(0), const char *regexpr FI_DEFAULT(0));
+DLL_API int DLL_CALLCONV FreeImage_GetFIFCount();
+DLL_API int DLL_CALLCONV FreeImage_SetPluginEnabled(FREE_IMAGE_FORMAT fif, BOOL enable);
+DLL_API int DLL_CALLCONV FreeImage_IsPluginEnabled(FREE_IMAGE_FORMAT fif);
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_GetFIFFromFormat(const char *format);
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_GetFIFFromMime(const char *mime);
+DLL_API const char *DLL_CALLCONV FreeImage_GetFormatFromFIF(FREE_IMAGE_FORMAT fif);
+DLL_API const char *DLL_CALLCONV FreeImage_GetFIFExtensionList(FREE_IMAGE_FORMAT fif);
+DLL_API const char *DLL_CALLCONV FreeImage_GetFIFDescription(FREE_IMAGE_FORMAT fif);
+DLL_API const char * DLL_CALLCONV FreeImage_GetFIFRegExpr(FREE_IMAGE_FORMAT fif);
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_GetFIFFromFilename(const char *filename);
+DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsReading(FREE_IMAGE_FORMAT fif);
+DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsWriting(FREE_IMAGE_FORMAT fif);
+DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsExportBPP(FREE_IMAGE_FORMAT fif, int bpp);
+DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsExportType(FREE_IMAGE_FORMAT fif, FREE_IMAGE_TYPE type);
+DLL_API BOOL DLL_CALLCONV FreeImage_FIFSupportsICCProfiles(FREE_IMAGE_FORMAT fif);
+
+// Multipaging interface ----------------------------------------------------
+
+DLL_API FIMULTIBITMAP * DLL_CALLCONV FreeImage_OpenMultiBitmap(FREE_IMAGE_FORMAT fif, const char *filename, BOOL create_new, BOOL read_only, BOOL keep_cache_in_memory FI_DEFAULT(FALSE));
+DLL_API BOOL DLL_CALLCONV FreeImage_CloseMultiBitmap(FIMULTIBITMAP *bitmap, int flags FI_DEFAULT(0));
+DLL_API int DLL_CALLCONV FreeImage_GetPageCount(FIMULTIBITMAP *bitmap);
+DLL_API void DLL_CALLCONV FreeImage_AppendPage(FIMULTIBITMAP *bitmap, FIBITMAP *data);
+DLL_API void DLL_CALLCONV FreeImage_InsertPage(FIMULTIBITMAP *bitmap, int page, FIBITMAP *data);
+DLL_API void DLL_CALLCONV FreeImage_DeletePage(FIMULTIBITMAP *bitmap, int page);
+DLL_API FIBITMAP * DLL_CALLCONV FreeImage_LockPage(FIMULTIBITMAP *bitmap, int page);
+DLL_API void DLL_CALLCONV FreeImage_UnlockPage(FIMULTIBITMAP *bitmap, FIBITMAP *page, BOOL changed);
+DLL_API BOOL DLL_CALLCONV FreeImage_MovePage(FIMULTIBITMAP *bitmap, int target, int source);
+DLL_API BOOL DLL_CALLCONV FreeImage_GetLockedPageNumbers(FIMULTIBITMAP *bitmap, int *pages, int *count);
+
+// Filetype request routines ------------------------------------------------
+
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_GetFileType(const char *filename, int size FI_DEFAULT(0));
+DLL_API FREE_IMAGE_FORMAT DLL_CALLCONV FreeImage_GetFileTypeFromHandle(FreeImageIO *io, fi_handle handle, int size FI_DEFAULT(0));
+
+// Image type request routine -----------------------------------------------
+
+DLL_API FREE_IMAGE_TYPE DLL_CALLCONV FreeImage_GetImageType(FIBITMAP *dib);
+
+// FreeImage info routines --------------------------------------------------
+
+DLL_API BOOL DLL_CALLCONV FreeImage_IsLittleEndian();
+
+// Pixel access routines ----------------------------------------------------
+
+DLL_API BYTE *DLL_CALLCONV FreeImage_GetBits(FIBITMAP *dib);
+DLL_API BYTE *DLL_CALLCONV FreeImage_GetScanLine(FIBITMAP *dib, int scanline);
+
+DLL_API BOOL DLL_CALLCONV FreeImage_GetPixelIndex(FIBITMAP *dib, unsigned x, unsigned y, BYTE *value);
+DLL_API BOOL DLL_CALLCONV FreeImage_GetPixelColor(FIBITMAP *dib, unsigned x, unsigned y, RGBQUAD *value);
+DLL_API BOOL DLL_CALLCONV FreeImage_SetPixelIndex(FIBITMAP *dib, unsigned x, unsigned y, BYTE *value);
+DLL_API BOOL DLL_CALLCONV FreeImage_SetPixelColor(FIBITMAP *dib, unsigned x, unsigned y, RGBQUAD *value);
+
+// DIB info routines --------------------------------------------------------
+
+DLL_API unsigned DLL_CALLCONV FreeImage_GetColorsUsed(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetBPP(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetWidth(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetHeight(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetLine(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetPitch(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetDIBSize(FIBITMAP *dib);
+DLL_API RGBQUAD *DLL_CALLCONV FreeImage_GetPalette(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetDotsPerMeterX(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetDotsPerMeterY(FIBITMAP *dib);
+DLL_API BITMAPINFOHEADER *DLL_CALLCONV FreeImage_GetInfoHeader(FIBITMAP *dib);
+DLL_API BITMAPINFO *DLL_CALLCONV FreeImage_GetInfo(FIBITMAP *dib);
+DLL_API FREE_IMAGE_COLOR_TYPE DLL_CALLCONV FreeImage_GetColorType(FIBITMAP *dib);
+
+DLL_API unsigned DLL_CALLCONV FreeImage_GetRedMask(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetGreenMask(FIBITMAP *dib);
+DLL_API unsigned DLL_CALLCONV FreeImage_GetBlueMask(FIBITMAP *dib);
+
+DLL_API unsigned DLL_CALLCONV FreeImage_GetTransparencyCount(FIBITMAP *dib);
+DLL_API BYTE * DLL_CALLCONV FreeImage_GetTransparencyTable(FIBITMAP *dib);
+DLL_API void DLL_CALLCONV FreeImage_SetTransparent(FIBITMAP *dib, BOOL enabled);
+DLL_API void DLL_CALLCONV FreeImage_SetTransparencyTable(FIBITMAP *dib, BYTE *table, int count);
+DLL_API BOOL DLL_CALLCONV FreeImage_IsTransparent(FIBITMAP *dib);
+
+DLL_API BOOL DLL_CALLCONV FreeImage_HasBackgroundColor(FIBITMAP *dib);
+DLL_API BOOL DLL_CALLCONV FreeImage_GetBackgroundColor(FIBITMAP *dib, RGBQUAD *bkcolor);
+DLL_API BOOL DLL_CALLCONV FreeImage_SetBackgroundColor(FIBITMAP *dib, RGBQUAD *bkcolor);
+
+
+// ICC profile routines -----------------------------------------------------
+
+DLL_API FIICCPROFILE *DLL_CALLCONV FreeImage_GetICCProfile(FIBITMAP *dib);
+DLL_API FIICCPROFILE *DLL_CALLCONV FreeImage_CreateICCProfile(FIBITMAP *dib, void *data, long size);
+DLL_API void DLL_CALLCONV FreeImage_DestroyICCProfile(FIBITMAP *dib);
+
+// Line conversion routines -------------------------------------------------
+
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine1To8(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine4To8(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16To8_555(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16To8_565(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine24To8(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine32To8(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine1To16_555(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine4To16_555(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine8To16_555(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16_565_To16_555(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine24To16_555(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine32To16_555(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine1To16_565(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine4To16_565(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine8To16_565(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16_555_To16_565(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine24To16_565(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine32To16_565(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine1To24(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine4To24(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine8To24(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16To24_555(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16To24_565(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine32To24(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine1To32(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine4To32(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine8To32(BYTE *target, BYTE *source, int width_in_pixels, RGBQUAD *palette);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16To32_555(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine16To32_565(BYTE *target, BYTE *source, int width_in_pixels);
+DLL_API void DLL_CALLCONV FreeImage_ConvertLine24To32(BYTE *target, BYTE *source, int width_in_pixels);
+
+// Smart conversion routines ------------------------------------------------
+
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertTo8Bits(FIBITMAP *dib);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertTo16Bits555(FIBITMAP *dib);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertTo16Bits565(FIBITMAP *dib);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertTo24Bits(FIBITMAP *dib);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertTo32Bits(FIBITMAP *dib);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ColorQuantize(FIBITMAP *dib, FREE_IMAGE_QUANTIZE quantize);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Threshold(FIBITMAP *dib, BYTE T);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Dither(FIBITMAP *dib, FREE_IMAGE_DITHER algorithm);
+
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertFromRawBits(BYTE *bits, int width, int height, int pitch, unsigned bpp, unsigned red_mask, unsigned green_mask, unsigned blue_mask, BOOL topdown FI_DEFAULT(FALSE));
+DLL_API void DLL_CALLCONV FreeImage_ConvertToRawBits(BYTE *bits, FIBITMAP *dib, int pitch, unsigned bpp, unsigned red_mask, unsigned green_mask, unsigned blue_mask, BOOL topdown FI_DEFAULT(FALSE));
+
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertToStandardType(FIBITMAP *src, BOOL scale_linear FI_DEFAULT(TRUE));
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ConvertToType(FIBITMAP *src, FREE_IMAGE_TYPE dst_type, BOOL scale_linear FI_DEFAULT(TRUE));
+
+
+// ZLib interface -----------------------------------------------------------
+
+DLL_API DWORD DLL_CALLCONV FreeImage_ZLibCompress(BYTE *target, DWORD target_size, BYTE *source, DWORD source_size);
+DLL_API DWORD DLL_CALLCONV FreeImage_ZLibUncompress(BYTE *target, DWORD target_size, BYTE *source, DWORD source_size);
+
+// --------------------------------------------------------------------------
+// Image manipulation toolkit -----------------------------------------------
+// --------------------------------------------------------------------------
+
+// rotation and flipping
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_RotateClassic(FIBITMAP *dib, double angle);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_RotateEx(FIBITMAP *dib, double angle, double x_shift, double y_shift, double x_origin, double y_origin, BOOL use_mask);
+DLL_API BOOL DLL_CALLCONV FreeImage_FlipHorizontal(FIBITMAP *dib);
+DLL_API BOOL DLL_CALLCONV FreeImage_FlipVertical(FIBITMAP *dib);
+
+// upsampling / downsampling
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Rescale(FIBITMAP *dib, int dst_width, int dst_height, FREE_IMAGE_FILTER filter);
+
+// color manipulation routines (point operations)
+DLL_API BOOL DLL_CALLCONV FreeImage_AdjustCurve(FIBITMAP *dib, BYTE *LUT, FREE_IMAGE_COLOR_CHANNEL channel);
+DLL_API BOOL DLL_CALLCONV FreeImage_AdjustGamma(FIBITMAP *dib, double gamma);
+DLL_API BOOL DLL_CALLCONV FreeImage_AdjustBrightness(FIBITMAP *dib, double percentage);
+DLL_API BOOL DLL_CALLCONV FreeImage_AdjustContrast(FIBITMAP *dib, double percentage);
+DLL_API BOOL DLL_CALLCONV FreeImage_Invert(FIBITMAP *dib);
+DLL_API BOOL DLL_CALLCONV FreeImage_GetHistogram(FIBITMAP *dib, DWORD *histo, FREE_IMAGE_COLOR_CHANNEL channel FI_DEFAULT(FICC_BLACK));
+
+// channel processing routines
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_GetChannel(FIBITMAP *dib, FREE_IMAGE_COLOR_CHANNEL channel);
+DLL_API BOOL DLL_CALLCONV FreeImage_SetChannel(FIBITMAP *dib, FIBITMAP *dib8, FREE_IMAGE_COLOR_CHANNEL channel);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_GetComplexChannel(FIBITMAP *src, FREE_IMAGE_COLOR_CHANNEL channel);
+DLL_API BOOL DLL_CALLCONV FreeImage_SetComplexChannel(FIBITMAP *dst, FIBITMAP *src, FREE_IMAGE_COLOR_CHANNEL channel);
+
+// copy / paste / composite routines
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Copy(FIBITMAP *dib, int left, int top, int right, int bottom);
+DLL_API BOOL DLL_CALLCONV FreeImage_Paste(FIBITMAP *dst, FIBITMAP *src, int left, int top, int alpha);
+DLL_API FIBITMAP *DLL_CALLCONV FreeImage_Composite(FIBITMAP *fg, BOOL useFileBkg FI_DEFAULT(FALSE), RGBQUAD *appBkColor FI_DEFAULT(NULL), FIBITMAP *bg FI_DEFAULT(NULL));
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // FREEIMAGE_H
Added: usarsim/Tools/ImageSrv/FreeImage/FreeImage.lib
===================================================================
(Binary files differ)
Property changes on: usarsim/Tools/ImageSrv/FreeImage/FreeImage.lib
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: usarsim/Tools/ImageSrv/FreeImage.dll
===================================================================
(Binary files differ)
Property changes on: usarsim/Tools/ImageSrv/FreeImage.dll
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: usarsim/Tools/ImageSrv/Hook/CVS/Entries
===================================================================
--- usarsim/Tools/ImageSrv/Hook/CVS/Entries (rev 0)
+++ usarsim/Tools/ImageSrv/Hook/CVS/Entries 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,10 @@
+/Hook.cpp/1.2/Tue Feb 21 21:50:29 2006//
+/Hook.dsp/1.3/Tue Jan 9 15:04:24 2007//
+/Hook.h/1.2/Tue Feb 21 21:50:29 2006//
+/Hook.plg/1.3/Tue Jan 9 15:04:25 2007//
+/ReadMe.txt/1.1/Fri Feb 17 17:16:21 2006//
+/StdAfx.cpp/1.1/Fri Feb 17 17:16:21 2006//
+/StdAfx.h/1.1/Fri Feb 17 17:16:21 2006//
+/detours.h/1.1/Fri Feb 17 17:16:21 2006//
+/detours.lib/1.1/Fri Feb 17 17:16:21 2006/-kb/
+D
Added: usarsim/Tools/ImageSrv/Hook/CVS/Repository
===================================================================
--- usarsim/Tools/ImageSrv/Hook/CVS/Repository (rev 0)
+++ usarsim/Tools/ImageSrv/Hook/CVS/Repository 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+usarsim/Tools/ImageSrv/Hook
Added: usarsim/Tools/ImageSrv/Hook/CVS/Root
===================================================================
--- usarsim/Tools/ImageSrv/Hook/CVS/Root (rev 0)
+++ usarsim/Tools/ImageSrv/Hook/CVS/Root 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1 @@
+:pserver:anonymous at usarsim.cvs.sourceforge.net:/cvsroot/usarsim
Added: usarsim/Tools/ImageSrv/Hook/Hook.cpp
===================================================================
--- usarsim/Tools/ImageSrv/Hook/Hook.cpp (rev 0)
+++ usarsim/Tools/ImageSrv/Hook/Hook.cpp 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,310 @@
+// Hook.cpp : Defines the entry point for the DLL application.
+//
+
+#include "stdafx.h"
+#include <stdio.h>
+#include <d3d8.h>
+#include <D3dx8core.h>
+#include <wingdi.h>
+#include "detours.h"
+#include "Hook.h"
+
+#pragma data_seg("SHARED")
+IDirect3DDevice8* pDevice = NULL;
+FrameData fData = {FRAME_OK,0,0,0,0,"\0"};
+#pragma data_seg()
+#pragma comment(linker, "/section:SHARED,RWS")
+
+//#pragma warning(disable:4100) // Trampolines don't use formal parameters.
+
+//////////////////////////////////////////////////////
+// Utilities
+//
+#define SAFERELEASE(x) if (x) { x->Release(); x = NULL; x; }
+
+BYTE lastSeq = 0;
+
+HRESULT copyFrameBuff()
+{
+ LPDIRECT3DSURFACE8 lpSurface = NULL;
+ IDirect3DSurface8* lpd3dsBackBuffer = NULL;
+ D3DSURFACE_DESC fDesc;
+ D3DLOCKED_RECT LockedRect;
+ HRESULT hr;
+
+ hr = pDevice->GetBackBuffer(0,D3DBACKBUFFER_TYPE_MONO, &lpd3dsBackBuffer);
+ if (FAILED(hr)){
+ MessageBox(NULL,"couldn't get backbuffer","DLL",MB_OK);
+ return hr;
+ }
+
+ lpd3dsBackBuffer->GetDesc(&fDesc);
+ if (fData.width!=fDesc.Width||fData.height!=fDesc.Height) {
+ fData.width = fDesc.Width;
+ fData.height = fDesc.Height;
+ if (fData.width*fData.height>640*480)
+ return E_OUTOFMEMORY;
+ }
+
+ hr = pDevice->CreateImageSurface(fData.width, fData.height, fDesc.Format, &lpSurface);
+ if (FAILED(hr)) {
+ MessageBox(NULL,"couldn't create ImageSurface","DLL",MB_OK);
+ SAFERELEASE(lpd3dsBackBuffer);
+ return hr;
+ }
+
+ hr = D3DXLoadSurfaceFromSurface(lpSurface,NULL,NULL,lpd3dsBackBuffer,NULL,NULL,D3DX_FILTER_NONE,0);
+ if (FAILED(hr)) {
+ MessageBox(NULL,"couldn't copy surface","DLL",MB_OK);
+ SAFERELEASE(lpd3dsBackBuffer);
+ return hr;
+ }
+ SAFERELEASE(lpd3dsBackBuffer);
+
+ //D3DXSaveSurfaceToFile("test.bmp",D3DXIFF_BMP,lpSurface,NULL,NULL);
+ hr = lpSurface->LockRect(&LockedRect, NULL, D3DLOCK_READONLY);
+ if (FAILED(hr)) {
+ MessageBox(NULL,"couldn't copy surface","DLL",MB_OK);
+ SAFERELEASE(lpSurface);
+ return hr;
+ }
+
+ LPDWORD lpSrc;
+ LPBYTE lpDes = fData.data;
+ int append = (fData.width*3)%sizeof(DWORD);
+ append = append?sizeof(DWORD)-append:0;
+ fData.size = (fData.width*3+append)*fData.height;
+ // read pixels beginning with the bottom scan line
+ for (int y = fData.height - 1; y >= 0; y--)
+ {
+ // calculate address of the current source scan line
+ lpSrc = reinterpret_cast<LPDWORD>(LockedRect.pBits) + y * fData.width;
+ for (int x = 0; x < fData.width; x++)
+ {
+ // store the source pixel in the bitmap bits array
+ *reinterpret_cast<LPDWORD>(lpDes) = *lpSrc;
+ lpSrc++; // increment source pointer by 1 DWORD
+ lpDes += 3; // increment destination pointer by 3 bytes
+ }
+ lpDes += append; // Keep data in DWORD boundary
+ }
+
+ lpSurface->UnlockRect();
+ SAFERELEASE(lpSurface);
+ return hr;
+}
+
+////////////////////////////////////////////////////////////////
+// Detour Class.
+//
+class CDetour // add ": public CTarget" to enable access member variables...
+{
+ public:
+ HRESULT WINAPI CreateDevice(UINT Adapter,
+ D3DDEVTYPE DeviceType,
+ HWND hFocusWindow,
+ DWORD BehaviorFlags,
+ D3DPRESENT_PARAMETERS* pPresentationParameters,
+ IDirect3DDevice8** ppReturnedDeviceInterface
+ )
+ {
+ HRESULT hr=CreateDevice_Tramp(Adapter,DeviceType,hFocusWindow,BehaviorFlags,pPresentationParameters,ppReturnedDeviceInterface);
+
+ pDevice=*ppReturnedDeviceInterface;
+ void * pvtbl;
+ memcpy(&pvtbl,*ppReturnedDeviceInterface,sizeof(pvtbl));
+ PBYTE tmp = (PBYTE)pvtbl+0x3c;
+
+ HRESULT (WINAPI CDetour::* pfDetour)(CONST RECT* pSourceRect,
+ CONST RECT* pDestRect,
+ HWND hDestWindowOverride,
+ CONST RGNDATA* pDirtyRegion
+ ) = &CDetour::Present;
+ HRESULT (WINAPI CDetour::* pfTrampoline)(CONST RECT* pSourceRect,
+ CONST RECT* pDestRect,
+ HWND hDestWindowOverride,
+ CONST RGNDATA* pDirtyRegion
+ ) = &CDetour::Present_Tramp;
+
+ DetourFunctionWithEmptyTrampoline(*(PBYTE*)&pfTrampoline,
+ *(PBYTE*)tmp,
+ *(PBYTE*)&pfDetour);
+ return hr;
+ }
+
+
+ HRESULT WINAPI Present(CONST RECT* pSourceRect,
+ CONST RECT* pDestRect,
+ HWND hDestWindowOverride,
+ CONST RGNDATA* pDirtyRegion
+ )
+ {
+ //TakeScreenshot(pDevice);
+ /*
+ if (!bReady) {
+ if (!FAILED(copyFrameBuff()))
+ bReady = TRUE;
+ }
+ */
+ if (fData.sequence!=lastSeq) {
+ lastSeq = fData.sequence;
+ fData.state = FRAME_PENDING;
+ if (FAILED(copyFrameBuff()))
+ fData.state = FRAME_ERROR;
+ else
+ fData.state = FRAME_OK;
+ }
+ /*
+ // Obtain adapter number and device window
+ D3DDEVICE_CREATION_PARAMETERS dcp;
+ pDevice->GetCreationParameters(&dcp);
+ LPD3DXFONT pFont;
+ RECT rc;
+ GetClientRect(dcp.hFocusWindow, &rc);
+
+ HDC hDC = CreateCompatibleDC( NULL );
+ INT nHeight = -MulDiv( 12,(INT)GetDeviceCaps(hDC, LOGPIXELSY), 72 );
+ HFONT hFont = CreateFont( nHeight, 0, 0, 0, FW_BOLD, FALSE,
+ FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
+ CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
+ VARIABLE_PITCH, "Arial" );
+
+ char str[16];
+ sprintf(str,"Frames:%d\0",fCount++);
+ D3DXCreateFont(pDevice, hFont, &pFont);
+ pFont->Begin();
+ pFont->DrawText(str,strlen(str),&rc,DT_BOTTOM,D3DCOLOR_ARGB(255,255,255,0));
+ pFont->End();
+ SAFERELEASE(pFont);
+ DeleteDC( hDC );
+ DeleteObject( hFont );
+ */
+ return Present_Tramp(pSourceRect,pDestRect,hDestWindowOverride,pDirtyRegion);
+ }
+
+ HRESULT WINAPI Present_Tramp(CONST RECT* pSourceRect,
+ CONST RECT* pDestRect,
+ HWND hDestWindowOverride,
+ CONST RGNDATA* pDirtyRegion
+ );
+
+ HRESULT WINAPI CreateDevice_Tramp(UINT Adapter,
+ D3DDEVTYPE DeviceType,
+ HWND hFocusWindow,
+ DWORD BehaviorFlags,
+ D3DPRESENT_PARAMETERS* pPresentationParameters,
+ IDirect3DDevice8** ppReturnedDeviceInterface
+ );
+ // Class shouldn't have any member variables or virtual functions.
+};
+
+DETOUR_TRAMPOLINE_EMPTY(HRESULT WINAPI CDetour::Present_Tramp(CONST RECT* pSourceRect,
+ CONST RECT* pDestRect,
+ HWND hDestWindowOverride,
+ CONST RGNDATA* pDirtyRegion
+ ));
+
+DETOUR_TRAMPOLINE_EMPTY(HRESULT WINAPI CDetour::CreateDevice_Tramp(UINT Adapter,
+ D3DDEVTYPE DeviceType,
+ HWND hFocusWindow,
+ DWORD BehaviorFlags,
+ D3DPRESENT_PARAMETERS* pPresentationParameters,
+ IDirect3DDevice8** ppReturnedDeviceInterface
+ ));
+// End Class
+///////////////////////////////////////////////////////////////////
+
+DETOUR_TRAMPOLINE(IDirect3D8* WINAPI Real_Direct3DCreate8(UINT SDKVersion ),
+ Direct3DCreate8);
+
+/////////////////////////////////////////////////////////////
+// Detours
+//
+IDirect3D8* WINAPI Mine_Direct3DCreate8(
+ UINT SDKVersion
+ )
+{
+ IDirect3D8* pd3d;
+ pd3d=Real_Direct3DCreate8(SDKVersion);
+
+ void * pvtbl;
+ memcpy(&pvtbl,pd3d,sizeof(pvtbl));
+ PBYTE tmp = (PBYTE)pvtbl+0x3c;
+
+ HRESULT (WINAPI CDetour::* pf_d_CreateDevice)(UINT Adapter,
+ D3DDEVTYPE DeviceType,
+ HWND hFocusWindow,
+ DWORD BehaviorFlags,
+ D3DPRESENT_PARAMETERS* pPresentationParameters,
+ IDirect3DDevice8** ppReturnedDeviceInterface
+ ) = &CDetour::CreateDevice;
+
+ HRESULT (WINAPI CDetour::* pf_t_CreateDevice)(UINT Adapter,
+ D3DDEVTYPE DeviceType,
+ HWND hFocusWindow,
+ DWORD BehaviorFlags,
+ D3DPRESENT_PARAMETERS* pPresentationParameters,
+ IDirect3DDevice8** ppReturnedDeviceInterface
+ ) = &CDetour::CreateDevice_Tramp;
+
+ DetourFunctionWithEmptyTrampoline(*(PBYTE*)&pf_t_CreateDevice,
+ *(PBYTE*)tmp,
+ *(PBYTE*)&pf_d_CreateDevice);
+ return pd3d;
+}
+
+/////////////////////////////////////////////////////////////
+// TrampolineWith
+//
+VOID TrampolineWith(VOID)
+{
+ DetourFunctionWithTrampoline((PBYTE)Real_Direct3DCreate8,
+ (PBYTE)Mine_Direct3DCreate8);
+}
+
+VOID TrampolineRemove(VOID)
+{
+ DetourRemove((PBYTE)Real_Direct3DCreate8,
+ (PBYTE)Mine_Direct3DCreate8);
+}
+
+////////////////////////////////////////////////////////////
+// DllMain
+//
+BOOL APIENTRY DllMain( HANDLE hModule,
+ DWORD ul_reason_for_call,
+ LPVOID lpReserved
+ )
+{
+ switch (ul_reason_for_call)
+ {
+ case DLL_PROCESS_ATTACH:
+ TrampolineWith();
+ break;
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ TrampolineRemove();
+ break;
+ }
+ return TRUE;
+}
+
+
+HOOK_API IDirect3DDevice8* getD3DDevice()
+{
+ return pDevice;
+}
+
+
+HOOK_API FrameData* getFrameData()
+{
+ int time=0;
+ while ((fData.state==FRAME_PENDING)&&time<100) {
+ Sleep(5);
+ time+=5;
+ }
+ if (fData.state==FRAME_OK) return &fData;
+ else return NULL;
+}
Added: usarsim/Tools/ImageSrv/Hook/Hook.dsp
===================================================================
--- usarsim/Tools/ImageSrv/Hook/Hook.dsp (rev 0)
+++ usarsim/Tools/ImageSrv/Hook/Hook.dsp 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,125 @@
+# Microsoft Developer Studio Project File - Name="Hook" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Hook - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Hook.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Hook.mak" CFG="Hook - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Hook - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Hook - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Hook - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HOOK_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HOOK_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 detours.lib d3dx8.lib d3d8.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /machine:I386
+
+!ELSEIF "$(CFG)" == "Hook - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HOOK_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HOOK_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 detours.lib d3dx8.lib d3d8.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Hook - Win32 Release"
+# Name "Hook - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Hook.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Hook.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=.\ReadMe.txt
+# End Source File
+# End Target
+# End Project
Added: usarsim/Tools/ImageSrv/Hook/Hook.h
===================================================================
--- usarsim/Tools/ImageSrv/Hook/Hook.h (rev 0)
+++ usarsim/Tools/ImageSrv/Hook/Hook.h 2007-05-10 15:05:45 UTC (rev 597)
@@ -0,0 +1,37 @@
+
+// The following ifdef block is the standard way of creating macros which make exporting
+// from a DLL simpler. All files within this DLL are compiled with the HOOK_EXPORTS
+// symbol defined on the command line. this symbol should not be defined on any project
+// that uses this DLL. This way any other project whose source files include this file see
+// HOOK_API functions as being imported from a DLL, wheras this DLL sees symbols
+// defined with this macro as being exported.
+#ifdef HOOK_EXPORTS
+#define HOOK_API __declspec(dllexport)
+#else
+#define HOOK_API __declspec(dllimport)
+#endif
+
+typedef struct FrameData_t {
+ BYTE state;
+ BYTE sequence;
+ USHORT width;
+ USHORT height;
+ UINT size;
+ BYTE data[640*480*3+1];
+} FrameData;
+
+#define FRAME_PENDING 0
+#define FRAME_OK 1
+#define FRAME_ERROR 2
+
+// This class is exported from the Hook.dll
+class HOOK_API CHook {
+public:
+ CHook(void);
+ // TODO: add your methods here.
+};
+
+extern "C" {
+ HOOK_API IDirect3DDevice8* getD3DDevice(void);
+ HOOK_API FrameData* getFrameData(void);
+}
Added: usarsim/Tools/ImageSrv/Hook/Hook.plg
===================================================================
@@ Diff output truncated at 60000 characters. @@
More information about the TeamTalk-developers
mailing list