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
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;
|
|
|
|
|
|
|
|
|