Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

174 lines
4.0 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtk3DS.h,v $
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.
=========================================================================*/
#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;