Files
Work/ddraw/HOLD/TRITEXTR.HPP
2024-08-07 09:16:27 -04:00

42 lines
1.4 KiB
C++

#ifndef _DDRAW_DIRECTTRITEXTURE_HPP_
#define _DDRAW_DIRECTTRITEXTURE_HPP_
#ifndef _ENGINE_TRIANGLE3D_HPP_
#include <engine/angle3d.hpp>
#endif
#ifndef _ENGINE_TRIANGLE_HPP_
#include <engine/angle.hpp>
#endif
#ifndef _DDRAW_TRIEDGE_HPP_
#include <ddraw/triedge.hpp>
#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