#ifndef _DDRAW_DIRECTTRITEXTURE_HPP_ #define _DDRAW_DIRECTTRITEXTURE_HPP_ #ifndef _ENGINE_TRIANGLE3D_HPP_ #include #endif #ifndef _ENGINE_TRIANGLE_HPP_ #include #endif #ifndef _DDRAW_TRIEDGE_HPP_ #include #endif class Bitmap; class DrawingSurface; class Device3D; class DIBitmap; extern "C" { void directTriSetSrcBitmapInfo(DWORD width,DWORD height,unsigned char *lpSrcBitmapImage); void directTriSetDstBitmapInfo(DWORD width,DWORD height,DWORD pitch,unsigned char *lpDstBitmapImage); void directTriMapTexture(DirectTriEdge *pDirectTriEdge); void directTriSetPixelCallback(void (*PFNPIXELCALLBACK)(int ui,int vi,int x,int y)); void directTriSetEdgeCallback(void (*PFNEDGECALLBACK)(DirectTriEdge *pEdge)); } class DirectTriTexture { public: enum MapFrom{MapFromUpperRight,MapFromLowerLeft}; DirectTriTexture(const Triangle3D &angle3D,Bitmap &textureBitmap,DrawingSurface &drawingSurface,Device3D &displayDevice,MapFrom mapFrom=MapFromUpperRight); DirectTriTexture(const Triangle3D &angle3D,Bitmap &textureBitmap,DIBitmap &drawingSurface,Device3D &displayDevice,MapFrom mapFrom=MapFromUpperRight); virtual ~DirectTriTexture(); void mapTexture(void); private: static void pixelCallback(int ui,int vi,int x,int y); static void edgeCallback(DirectTriEdge *pEdge); Triangle3D mTriangle3D; Triangle mTriangle; DirectTriEdge mTriEdge; }; #endif