tessint.h

Go to the documentation of this file.
00001 /**********************************************************************
00002  *<
00003     FILE: tessint.h
00004 
00005     DESCRIPTION: include file for gap integration
00006 
00007     CREATED BY: Charles Thaeler
00008 
00009     HISTORY: created 10 Jan 1997
00010 
00011  *> Copyright (c) 1996, All Rights Reserved.
00012  **********************************************************************/
00013 
00014 #pragma once
00015 
00016 #ifdef BLD_TESS
00017 #define TExport __declspec(dllexport)
00018 #else
00019 #define TExport __declspec(dllimport)
00020 #endif
00021 
00022 #include "maxheap.h"
00023 #include "maxtess.h"
00024 #include "UVWMapper.h"
00025 
00026 // forward declarations
00027 class GmSurface;
00028 class View;
00029 class Mtl;
00030 class Mesh;
00031 
00032 // This class describes the parameters for a projective mapper.  They
00033 // are set when a UVW mapper modifer is applied.
00034 // SteveA 6/98: I moved the guts of this into "UVWMapper" in the mesh library.
00035 class UVWMapperDesc : public UVWMapper
00036 {
00037 public:
00038     int     channel;
00039 
00040     UVWMapperDesc() {channel=0;}
00041     UVWMapperDesc(int type, float utile, float vtile, float wtile,
00042         int uflip, int vflip, int wflip, int cap,
00043         const Matrix3 &tm,int channel);
00044     UVWMapperDesc(UVWMapperDesc& m)
00045         : UVWMapper (m)
00046     {
00047         this->channel = m.channel;
00048     }
00049 
00050     void ApplyMapper(Mesh* pMesh);
00051     void InvalidateMapping(Mesh* pMesh);
00052     IOResult Load(ILoad* iload);
00053     IOResult Save(ISave* isave);
00054 };
00055 
00056 struct SurfTabEntry: public MaxHeapOperators {
00057     GmSurface *gmsurf;
00058     UVWMapperDesc* mpChannel1Mapper;
00059     UVWMapperDesc* mpChannel2Mapper;
00060 
00061     SurfTabEntry() {
00062         gmsurf = NULL;
00063         mpChannel1Mapper = NULL;
00064         mpChannel2Mapper = NULL;
00065     }
00066 };
00067 
00068 typedef Tab<SurfTabEntry> SurfTab;
00069 
00070 
00071 enum SurfaceType
00072 {
00073     BEZIER_PATCH,
00074     GMSURFACE,
00075     MAX_MESH,
00076     MODEL_OP
00077 };
00078 
00079 TExport MCHAR* GapVersion(void);
00080 TExport int GapTessellate(void *surf, SurfaceType type, Matrix3 *otm, Mesh *mesh,
00081                             TessApprox *tess, TessApprox *disp, 
00082                             View *view, Mtl* mtl, BOOL dumpMiFile, BOOL splitmesh);