16 #ifndef _txpage_write_h_
17 #define _txpage_write_h_
60 inline void AddStripStat(
int val) { stripStat[
MIN(14,val)]++; totalStripTri += val; totalTri += val; numStrip++;}
61 inline void AddFanStat(
int val) { fanStat[
MIN(14,val)]++; totalFanTri += val; totalTri += val; numFan++;}
62 inline void AddBagStat(
int val) { totalBagTri += val; totalTri += val;}
79 enum {UseDouble,UseFloat};
82 virtual void SetMode(
int);
83 virtual void Reset(
void);
85 virtual void StartPolygon(
void);
86 virtual void EndPolygon(
void);
87 virtual void ResetPolygon(
void);
94 virtual void SetMaterial(
int32);
95 virtual void AddMaterial(
int32);
100 virtual void FlushGeom(
void);
103 virtual void GetZMinMax(
double &min,
double &max);
122 virtual void Optimize(
void);
125 virtual void ResetTri(
void);
132 std::vector<trpg2dPoint>
tex;
133 std::vector<trpg3dPoint> norm,
vert;
165 virtual bool AddExternal(
char *name,
int &texID,
bool lookForExisting=
true);
171 virtual bool AddLocal(
char *name,
trpgTexture::ImageType type,
int sizeX,
int sizeY,
bool isMipmap,
char *data,
int &texID,
bool deferWrite);
178 virtual bool ReplaceLocal(
char *data,
int &texID);
191 virtual void SetMaxTexFileLength(
int len);
198 virtual trpgwAppFile * IncrementTextureFile(
bool geotyp);
203 virtual bool DesignateTextureFile(
int);
206 virtual bool Flush(
void);
237 enum TileMode {TileLocal,TileExternal,TileExternalSaved};
252 virtual void SetMaxTileFileLength(
int len);
278 virtual bool IncrementTileFile(
void);
279 virtual bool DesignateTileFile(
int);
284 virtual bool OpenFile(
const char *,
const char *);
285 virtual void CloseFile(
void);
286 virtual bool WriteHeader(
void);
287 virtual bool CheckpointHeader(
void);
288 virtual bool WriteTile(
unsigned int,
unsigned int,
unsigned int,
float zmin,
float zmax,
293 const char *getErrMess()
const;
298 virtual int32 WriteHeaderData(
const char *dataPtr,
int32 length,FILE *filehandle);
356 mutable char errMess[512];
Definition: trpage_write.h:155
Definition: trpage_geom.h:2076
trpgEndian ness
Merge block textable into a master.
Definition: trpage_write.h:218
Definition: trpage_geom.h:2951
trpgWriteBuffer * buf
Definition: trpage_write.h:110
trpgwArchive(int)
dummy constructor, does nothing so subclasses can have more control
Definition: trpage_write.h:247
int stripGeom
Fan length stats.
Definition: trpage_write.h:53
int totalBagTri
triangles in fans
Definition: trpage_write.h:45
trpgGeometry strips
Collections of geometry.
Definition: trpage_write.h:128
double zmin
Keeps track of min and max z values.
Definition: trpage_write.h:147
trpgEndian
Used to specify machine endianess.
Definition: trpage_io.h:314
Definition: trpage_write.h:75
trpgwImageHelper()
Definition: trpage_write.h:157
#define DT_DLL_osgdb_vrftxp
Contains DLL export macros.
Definition: osgdb_vrftxpDefines.h:25
int mode
Definition: trpage_write.h:108
Definition: trpage_io.h:314
trpgwAppFile * geotypFile
Definition: trpage_write.h:224
int maxTexFileLen
Definition: trpage_write.h:226
trpgwGeomStats * GetStats(void)
Get statistics for whatever we built.
Definition: trpage_write.h:106
std::vector< trpg2dPoint > polyTex
Definition: trpage_write.h:136
trpgMatTable matTable
Definition: trpage_write.h:325
trpg3dPoint tmpNorm
Definition: trpage_write.h:140
{secret}
Definition: trpage_write.h:33
std::vector< int32 > matPoly
Data arrays for a polygon.
Definition: trpage_write.h:135
int stateChanges
Same for bags.
Definition: trpage_write.h:57
Definition: trpage_geom.h:1438
int fanGeom
Number of seperate trpgGeometry nodes for strips.
Definition: trpage_write.h:54
trpgwGeomStats stats
Geometry status built up as we go.
Definition: trpage_write.h:144
int totalFanTri
triangles in strips
Definition: trpage_write.h:44
#define MIN(x, y)
Macros we may need.
Definition: trpage_io.h:36
trpgTextStyleTable textStyleTable
Definition: trpage_write.h:330
char * getDir(void)
Definition: trpage_write.h:294
trpgTileTable tileTable
Definition: trpage_write.h:335
TileMode tileMode
Definition: trpage_write.h:338
#define TRPG_VERSION_MAJOR
Current TerraPage major version.
Definition: trpage_io.h:47
Definition: trpage_geom.h:1055
std::vector< trpg3dPoint > vert
Definition: trpage_write.h:133
trpgLabelPropertyTable labelPropertyTable
Definition: trpage_write.h:332
std::vector< trpg2dPoint > tex
Definition: trpage_write.h:132
virtual trpgr_Archive * GetArchiveReader()
Definition: trpage_write.h:297
int totalStripTri
Total # of quads.
Definition: trpage_write.h:43
trpg2iPoint addOffset
This offset is used when we're adding to an existing archive.
Definition: trpage_write.h:350
int32 offset
Definition: trpage_write.h:309
int y
Definition: trpage_write.h:307
Definition: trpage_geom.h:1616
trpgTexTable texTable
Definition: trpage_write.h:326
Definition: trpage_io.h:652
Definition: trpage_geom.h:1226
int numLod
Definition: trpage_write.h:337
int id
Definition: trpage_write.h:313
trpgwAppFile * tileFile
Definition: trpage_write.h:340
trpgSupportStyleTable supportStyleTable
Definition: trpage_write.h:331
Definition: trpage_io.h:376
std::vector< int > geotypFileIDs
Definition: trpage_write.h:223
int numFan
Number of distinct strips.
Definition: trpage_write.h:48
Definition: trpage_io.h:265
Definition: trpage_read.h:185
void AddStripStat(int val)
Number of distinct material switches.
Definition: trpage_write.h:60
int maxTileFileLen
Definition: trpage_write.h:347
Definition: trpage_io.h:561
Definition: trpage_io.h:299
Definition: trpage_geom.h:2862
std::vector< int32 > matTri
Temporary data arrays for triangles/quads.
Definition: trpage_write.h:131
trpgRangeTable rangeTable
Definition: trpage_write.h:329
bool firstHeaderWrite
Definition: trpage_write.h:354
int totalTri
Definition: trpage_write.h:38
void AddFanStat(int val)
Definition: trpage_write.h:61
float zmin
Identifying info for tile.
Definition: trpage_write.h:308
trpgEndian ness
Definition: trpage_write.h:317
std::vector< trpg2dPoint > tmpTex
Single points.
Definition: trpage_write.h:139
Definition: trpage_io.h:632
void AddBagStat(int val)
Definition: trpage_write.h:62
std::vector< int > texFileIDs
Definition: trpage_write.h:221
int bagGeom
Same for fans.
Definition: trpage_write.h:55
#define TRPG_MAGIC
File header Magic Number.
Definition: trpage_io.h:44
#define TRPG_VERSION_MINOR
Current TerraPage minor version.
Definition: trpage_io.h:49
std::vector< TileFile > tileFiles
Definition: trpage_write.h:343
bool separateGeoTypical
Definition: trpage_write.h:225
bool isValid(void) const
Returns the state of the valid flag, or can be overriden by a subclass to do a more complex check...
Definition: trpage_geom.h:3045
Definition: trpage_geom.h:903
Definition: trpage_io.h:323
Definition: trpage_geom.h:1680
Definition: trpage_io.h:278
trpgModelTable modelTable
Definition: trpage_write.h:327
int tileFileCount
Definition: trpage_write.h:341
std::vector< TileFileEntry > tiles
Definition: trpage_write.h:314
ImageType
Definition: trpage_geom.h:1252
DT_DLL_VRVCORE double length(const makVrv::DtCoordinateSystem &, const std::vector< DtVector > &vertices)
Returns the total distance of a segmented line defined by the provided vector of vertices. Coordinates are in local database coordinates. The coordinate system is used to convert between the local database coordinates and geocentric. All distance is in 2D – the Z value is ignored.
std::vector< trpg3dPoint > polyVert
Definition: trpage_write.h:137
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
int numStrip
loose triangles
Definition: trpage_write.h:47
trpgLightTable lightTable
Definition: trpage_write.h:328
Definition: trpage_write.h:234
void AddQuadStat(int val)
Definition: trpage_write.h:63
trpgHeader header
Directory where we're doing all this.
Definition: trpage_write.h:324
TileMode
Tiles can be stored as individual files (External) or grouped together (Local)
Definition: trpage_write.h:237
Definition: trpage_geom.h:1119
#define TX_EXDECL
Goes before "class" to handle DLL export in windows.
Definition: trdll.h:69
FILE * fp
Definition: trpage_write.h:352
std::vector< TileFileEntry > externalTiles
Definition: trpage_write.h:345
trpgTexTable * texTable
Definition: trpage_write.h:220
trpgColor tmpCol
Definition: trpage_write.h:141
int minorVersion
Definition: trpage_write.h:318
Definition: trpage_write.h:311
trpgwAppFile * texFile
Definition: trpage_write.h:222
int dataType
Definition: trpage_write.h:109
int totalQuad
Total # of triangles.
Definition: trpage_write.h:40
Definition: trpage_io.h:285
Used to keep track of which tiles are in which file.
Definition: trpage_write.h:305