You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
4.0 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;
typedef struct
{
VTK_LIST_FIELDS
} vtk3DSList;
typedef struct
{
int a, b, c;
} vtk3DSFace;
typedef struct
{
float red, green, blue;
} vtk3DSColour;
/* Omni light command */
typedef struct
{
VTK_LIST_FIELDS
vtk3DSVector pos; /* Light position */
vtk3DSColour col; /* Light colour */
vtkLight* aLight;
} vtk3DSOmniLight;
/* Spotlight command */
typedef struct
{
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;
} vtk3DSSpotLight;
/* Camera command */
typedef struct
{
VTK_LIST_FIELDS
vtk3DSVector pos; /* Camera location */
vtk3DSVector target; /* Camera target */
float bank; /* Banking angle (degrees) */
float lens; /* Camera lens size (mm) */
vtkCamera* aCamera;
} vtk3DSCamera;
/* Material list */
typedef struct
{
VTK_LIST_FIELDS
int external; /* Externally defined material? */
} vtk3DSMaterial;
/* Object summary */
typedef struct
{
VTK_LIST_FIELDS
vtk3DSVector center; /* Min value of object extents */
vtk3DSVector lengths; /* Max value of object extents */
} vtk3DSSummary;
/* Material property */
typedef struct
{
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;
} vtk3DSMatProp;
class vtkActor;
class vtkPolyDataMapper;
class vtkPolyDataNormals;
class vtkStripper;
class vtkPoints;
class vtkCellArray;
class vtkPolyData;
/* A mesh object */
typedef struct
{
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;
} vtk3DSMesh;
typedef struct
{
dword start;
dword end;
dword length;
word tag;
} vtk3DSChunk;
typedef struct
{
byte red;
byte green;
byte blue;
} vtk3DSColour_24;
#endif
// VTK-HeaderTest-Exclude: vtk3DS.h