windows-nt/Source/XPSP1/NT/multimedia/opengl/test/misc/uidemo/logobj.hxx
2020-09-26 16:20:57 +08:00

84 lines
2.5 KiB
C++

/******************************Module*Header*******************************\
* Module Name: logobj.hxx
*
* Copyright (c) 1997 Microsoft Corporation
*
\**************************************************************************/
#ifndef __logobj_hxx__
#define __logobj_hxx__
#include "mtk.hxx"
#if 1
#define OBJECT_WIDTH 2.6f
#else
#define OBJECT_WIDTH 3.535f // so object is 256 pixels wide, looks good
//#define OBJECT_WIDTH 1.7675f // object 128 pixels : ugly
#endif
#define FRAME_SIZE (0.05f * OBJECT_WIDTH)
#define FRAME_DEPTH 0.1f
class LOG_OBJECT {
public:
FSIZE fImageSize; // size of image part of object
float fCurContextWidth; // current width of context part of object
float fMaxContextWidth; // max width of context part of object
FSIZE fFrameSize; // size of frame around object (offset value)
float fFrameDepth;
TEXTURE *pTex;
LOG_OBJECT();
~LOG_OBJECT();
void ShowContext( BOOL bShow );
void ShowFrame( BOOL bShow );
void SetDest( float x, float y, float z );
void SetDest( POINT3D *pDest );
void OffsetDest( float x, float y, float z );
void SetContextSize( float fPortion );
void SetImageSize( FSIZE *pSize );
void SetTexture( TEXTURE *pTexture );
void GetDest( POINT3D *pDest );
void GetRect( GLIRECT *pRect );
int GetIter() { return iter; };
// void GetPos( POINT3D *curpos );
void Translate();
void Rotate();
BOOL NextFlyIteration();
void Draw();
void Draw( BOOL bUpdateWinRect );
void ResetMotion();
void SetDampedFlyMotion( float deviation );
void SetDampedFlyMotion( float deviation, POINT3D *pOffset );
void CalcWinRect();
private:
void CalcWinRect( BOOL bTransform );
void CalcCoords();
void CalcFrameCoords();
void CalcTexCoords();
void CalcFrameNormals();
void DrawFace();
void DrawFrame();
float dest[3]; // destination position (current if offset = 0)
float offset[3]; // offset from destination
float rotAxis[3];
float ang;
int iter; // fly iterations
GLIRECT rect; // Bounds rectangle (GL coords : bl=origin)
BOOL bShowContext;
BOOL bFramed;
POINT3D point[8]; // current coords of object (object space)
POINT3D frameNormal[4]; // normals for the frame
TEX_POINT2D texPoint[4]; // tex coords for front face texture
};
#endif // __logobj_hxx__