Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/******************************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__
|