Files
OpenSceneGraph/src/osgPlugins/flt/TextureMappingPaletteRecord.h
2001-12-04 16:03:10 +00:00

208 lines
9.9 KiB
C++

// TextureMappingPaletteRecord.h
#ifndef __FLT_TEXTURE_MAPPING_PALETTE_RECORD_H
#define __FLT_TEXTURE_MAPPING_PALETTE_RECORD_H
#include "opcodes.h"
#include "Record.h"
#include "RecordVisitor.h"
namespace flt {
struct STextureMapping
{
SRecHeader RecHeader;
float32 reserved; // Reserved
int32 diIndex; // Texture mapping index
char szName[20]; // Texture mapping name
int32 diType; // Texture mapping type
// 0 = None
// 1 = Put
// 2 = 4 Point Put
// 3 = Reserved
// 4 = Spherical Project
// 5 = Radial Project
// 6 = Reserved
int32 diWarpFlag; // Warped flag; if TRUE, 8 point warp applied
float64 dfMat[4][4]; // Transformation matrix (valid only for Types 1 & 2)
// Variable Variable; // Parameters (see below for parameters for each mapping type)
};
// Parameters for Put Texture Mapping (Type 1)
struct SPutTextureMapping
{
uint32 dwState; // State of Put Texture tool
// 0 = Start state - no points entered
// 1 = One point entered
// 2 = Two points entered
// 3 = Three points entered
int32 active; // Active geometry point
// 1 = Origin point
// 2 = Alignment point
// 3 = Shear point
float64x3 lower_left; // lower-left corner of bounding box
float64x3 upper_right; // upper-right corner of bounding box
int32 sizeFlags[3]; // Use real world size flags for each of the three put points
float64x3 dfTxtOrigin; // Texture origin point
float64x3 dfTxtAlignment; // Texture alignment point
float64x3 dfTxtShear; // Texture shear point
float64x3 dfGeoOrigin; // Geometry origin point
float64x3 dfGeoAlignment; // Geometry alignment point
float64x3 dfGeoShear; // Geometry shear point
int32 TxtActive; // Active texture point
// 1 = Origin point
// 2 = Alignment point
// 3 = Shear point
int32 Reserved; // should always be set to 1
};
//Parameters for 4 Point Put Texture Mapping (Type 2)
struct SPointPutTextureMapping
{
int32 state; // State of Put Texture tool
// 0 = Start state - no points entered
// 1 = One point entered
// 2 = Two points entered
// 3 = Three points entered
// 4 = Four points entered
int32 active; // Active geometry point
// 1 = Origin point
// 2 = Alignment point
// 3 = Shear point
// 4 = Perspective point
float64x3 lower_left; // lower-left corner of bounding box
float64x3 upper_right; // upper-right corner of bounding box
int32 sizeFlags[4]; // Use real world size flags for each of the four put points
float64x3 dfTxtOrigin; // Texture origin point
float64x3 dfTxtAlignment; // Texture alignment point
float64x3 dfTxtShear; // Texture shear point
float64x3 dfTxtPerspective; // Texture perspective point
float64x3 dfGeoOrigin; // Geometry origin point
float64x3 dfGeoAlignment; // Geometry alignment point
float64x3 dfGeoShear; // Geometry shear point
float64x3 dfGeoPerspective; // Geometry perspective point
int32 TxtActive; // Active texture point
// 1 = Origin point
// 2 = Alignment point
// 3 = Shear point
// 4 = Perspective point
int32 Reserved; // should always be set to 1
float32 sfScale; // Depth scale factor
float64 dfMat[4][4]; // Transformation matrix for the 4 point projection plane
};
// Parameters for Spherical Project Mapping (Type 4)
struct SSphericalTextureMapping
{
float32 sfScale; // Scale
float64x3 Center; // Center of the projection sphere
float32 sfMaxScale; // Scale / (maximum dimension of the mapped geometry
// bounding box)
float32 sfMaxDimension; // Maximum dimension of the mapped geometry
// bounding box
};
// Parameters for Radial Project Mapping (Type 5)
struct SRadialTextureMapping
{
int32 active; // Active geometry point
// 1 = End point 1 of cylinder center line
// 2 = End point 2 of cylinder center line
int32 reserved; // Reserved
float32 sfRadialScale; // Radial scale
float32 sfLengthScale; // Scale along length of cylinder
float64 dfMat[4][4]; // Trackplane to XY plane transformation matrix
float64x3 endpoint1; // End point 1 of cylinder center line
float64x3 endpoint2; // End point 2 of cylinder center line
};
// Parameters for Warped Mapping (Warped Flag Set)
struct SWarpedTextureMapping
{
int32 active; // Active geometry point
// 0 = First warp FROM point
// 1 = Second warp FROM point
// 2 =Third warp FROM point
// 3 = Fourth warp FROM point
// 4 = Fifth warp FROM point
// 5 = Sixth warp FROM point
// 6 = Seventh warp FROM point
// 7 = Eighth warp FROM point
// 8 = First warp TO point
// 9 = Second warp TO point
// 10 = Third warp TO point
// 11 = Fourth warp TO point
// 12 = Fifth warp TO point
// 13 = Sixth warp TO point
// 14 = Seventh warp TO point
// 15 = Eighth warp TO point
int32 warpState; // Warp tool state
// 0 = Start state - no points entered
// 1 = One FROM point entered
// 2 = Two FROM point entered
// 3 = Three FROM point entered
// 4 = Four FROM point entered
// 5 = Five FROM point entered
// 6 = Six FROM point entered
// 7 = Seven FROM point entered
// 8 = All FROM point entered
float64 dfMat[4][4]; // Trackplane to XY plane transformation matrix
/*
Double 16*2 x, y of the first FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the second FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the third FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the fourth FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the fifth FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the sixth FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the seventh FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the eighth FROM point transformed to the XY plane by the above matrix
Double 16*2 x, y of the first TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the second TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the third TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the fourth TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the fifth TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the sixth TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the seventh TO point transformed to the XY plane by the above matrix
Double 16*2 x, y of the eighth TO point transformed to the XY plane by the above matrix
*/
};
class TextureMappingPaletteRecord : public AncillaryRecord
{
public:
TextureMappingPaletteRecord();
virtual Record* clone() const { return new TextureMappingPaletteRecord(); }
virtual const char* className() const { return "TextureMappingPaletteRecord"; }
virtual int classOpcode() const { return TEXTURE_MAPPING_PALETTE_OP; }
virtual size_t sizeofData() const { return sizeof(STextureMapping); }
virtual void accept(RecordVisitor& rv) { rv.apply(*this); }
// virtual void traverse(RecordVisitor& rv);
protected:
virtual ~TextureMappingPaletteRecord();
virtual void endian();
// virtual bool readLocalData(Input& fr);
// virtual bool writeLocalData(Output& fw);
};
}; // end namespace flt
#endif