189 lines
4.4 KiB
C
189 lines
4.4 KiB
C
|
|
/*=========================================================================
|
||
|
|
|
||
|
|
Program: Visualization Toolkit
|
||
|
|
Module: vtk3DS.h
|
||
|
|
|
||
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
|
All rights reserved.
|
||
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
|
||
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
|
||
|
|
=========================================================================*/
|
||
|
|
|
||
|
|
#ifndef vtk3DS_h
|
||
|
|
#define vtk3DS_h
|
||
|
|
|
||
|
|
#include <ctype.h>
|
||
|
|
|
||
|
|
class vtkLight;
|
||
|
|
class vtkCamera;
|
||
|
|
class vtkProperty;
|
||
|
|
|
||
|
|
typedef float vtk3DSVector[3];
|
||
|
|
|
||
|
|
/* A generic list type */
|
||
|
|
#define VTK_LIST_INSERT(root, node) \
|
||
|
|
list_insert((vtk3DSList**)&root, reinterpret_cast<vtk3DSList*>(node))
|
||
|
|
#define VTK_LIST_FIND(root, name) list_find((vtk3DSList**)&root, name)
|
||
|
|
#define VTK_LIST_DELETE(root, node) list_delete((vtk3DSList**)&root, (vtk3DSList*)node)
|
||
|
|
#define VTK_LIST_KILL(root) list_kill((vtk3DSList**)&root)
|
||
|
|
|
||
|
|
#define VTK_LIST_FIELDS \
|
||
|
|
char name[80]; \
|
||
|
|
void* next;
|
||
|
|
|
||
|
|
typedef unsigned char byte;
|
||
|
|
typedef unsigned short word;
|
||
|
|
typedef unsigned int dword;
|
||
|
|
|
||
|
|
struct vtk3DSList_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
};
|
||
|
|
using vtk3DSList = struct vtk3DSList_t;
|
||
|
|
|
||
|
|
struct vtk3DSFace_t
|
||
|
|
{
|
||
|
|
int a, b, c;
|
||
|
|
};
|
||
|
|
using vtk3DSFace = struct vtk3DSFace_t;
|
||
|
|
|
||
|
|
struct vtk3DSColour_t
|
||
|
|
{
|
||
|
|
float red, green, blue;
|
||
|
|
};
|
||
|
|
using vtk3DSColour = struct vtk3DSColour_t;
|
||
|
|
|
||
|
|
/* Omni light command */
|
||
|
|
struct vtk3DSOmniLight_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
vtk3DSVector pos; /* Light position */
|
||
|
|
vtk3DSColour col; /* Light colour */
|
||
|
|
vtkLight* aLight;
|
||
|
|
};
|
||
|
|
using vtk3DSOmniLight = struct vtk3DSOmniLight_t;
|
||
|
|
|
||
|
|
/* Spotlight command */
|
||
|
|
struct vtk3DSSpotLight_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
vtk3DSVector pos; /* Spotlight position */
|
||
|
|
vtk3DSVector target; /* Spotlight target location */
|
||
|
|
vtk3DSColour col; /* Spotlight colour */
|
||
|
|
float hotspot; /* Hotspot angle (degrees) */
|
||
|
|
float falloff; /* Falloff angle (degrees) */
|
||
|
|
int shadow_flag; /* Shadow flag (not used) */
|
||
|
|
vtkLight* aLight;
|
||
|
|
};
|
||
|
|
using vtk3DSSpotLight = struct vtk3DSSpotLight_t;
|
||
|
|
|
||
|
|
/* Camera command */
|
||
|
|
struct vtk3DSCamera_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
vtk3DSVector pos; /* Camera location */
|
||
|
|
vtk3DSVector target; /* Camera target */
|
||
|
|
float bank; /* Banking angle (degrees) */
|
||
|
|
float lens; /* Camera lens size (mm) */
|
||
|
|
vtkCamera* aCamera;
|
||
|
|
};
|
||
|
|
using vtk3DSCamera = struct vtk3DSCamera_t;
|
||
|
|
|
||
|
|
/* Material list */
|
||
|
|
struct vtk3DSMaterial_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
int external; /* Externally defined material? */
|
||
|
|
};
|
||
|
|
using vtk3DSMaterial = struct vtk3DSMaterial_t;
|
||
|
|
|
||
|
|
/* Object summary */
|
||
|
|
struct vtk3DSSummary_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
vtk3DSVector center; /* Min value of object extents */
|
||
|
|
vtk3DSVector lengths; /* Max value of object extents */
|
||
|
|
};
|
||
|
|
using vtk3DSSummary = struct vtk3DSSummary_t;
|
||
|
|
|
||
|
|
/* Material property */
|
||
|
|
struct vtk3DSMatProp_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
vtk3DSColour ambient;
|
||
|
|
vtk3DSColour diffuse;
|
||
|
|
vtk3DSColour specular;
|
||
|
|
float shininess;
|
||
|
|
float transparency;
|
||
|
|
float reflection;
|
||
|
|
int self_illum;
|
||
|
|
char tex_map[40];
|
||
|
|
float tex_strength;
|
||
|
|
char bump_map[40];
|
||
|
|
float bump_strength;
|
||
|
|
vtkProperty* aProperty;
|
||
|
|
};
|
||
|
|
using vtk3DSMatProp = struct vtk3DSMatProp_t;
|
||
|
|
|
||
|
|
class vtkActor;
|
||
|
|
class vtkPolyDataMapper;
|
||
|
|
class vtkPolyDataNormals;
|
||
|
|
class vtkStripper;
|
||
|
|
class vtkPoints;
|
||
|
|
class vtkCellArray;
|
||
|
|
class vtkPolyData;
|
||
|
|
|
||
|
|
/* A mesh object */
|
||
|
|
struct vtk3DSMesh_t
|
||
|
|
{
|
||
|
|
VTK_LIST_FIELDS
|
||
|
|
|
||
|
|
int vertices; /* Number of vertices */
|
||
|
|
vtk3DSVector* vertex; /* List of object vertices */
|
||
|
|
|
||
|
|
int faces; /* Number of faces */
|
||
|
|
vtk3DSFace* face; /* List of object faces */
|
||
|
|
vtk3DSMaterial** mtl; /* Materials for each face */
|
||
|
|
|
||
|
|
int hidden; /* Hidden flag */
|
||
|
|
int shadow; /* Shadow flag */
|
||
|
|
vtkActor* anActor;
|
||
|
|
vtkPolyDataMapper* aMapper;
|
||
|
|
vtkPolyDataNormals* aNormals;
|
||
|
|
vtkStripper* aStripper;
|
||
|
|
vtkPoints* aPoints;
|
||
|
|
vtkCellArray* aCellArray;
|
||
|
|
vtkPolyData* aPolyData;
|
||
|
|
};
|
||
|
|
using vtk3DSMesh = struct vtk3DSMesh_t;
|
||
|
|
|
||
|
|
struct vtk3DSChunk_t
|
||
|
|
{
|
||
|
|
dword start;
|
||
|
|
dword end;
|
||
|
|
dword length;
|
||
|
|
word tag;
|
||
|
|
};
|
||
|
|
using vtk3DSChunk = struct vtk3DSChunk_t;
|
||
|
|
|
||
|
|
struct vtk3DSColour_t_24
|
||
|
|
{
|
||
|
|
byte red;
|
||
|
|
byte green;
|
||
|
|
byte blue;
|
||
|
|
};
|
||
|
|
using vtk3DSColour_24 = struct vtk3DSColour_t_24;
|
||
|
|
|
||
|
|
#endif
|
||
|
|
// VTK-HeaderTest-Exclude: vtk3DS.h
|