Encapsulates the retrieval, data access and storage of Alias Wire Files.
Synopsis
#include <AlUniverse.h>
class AlUniverse : public AlMessage
enum AlFileType {
kUnknown, // File type is unknown and will be ignored by ::retrieve().
kWire, // Autodesk Wire File
kIges, // Initial Graphics Exchange Standard
kVdais, // Verband Der Automobilindustrie IGES Subset
kC4x, // EDS/GM format.
kJamais, // Japan Automobile Manufacturers Association IGES Subset.
kVdafs, // Verband Der Automobilindustrie Freeform Surface Interface.
kDxf, // Drawing Exchange Format
// The file types below are available only in OpenAlias.
kDes, // EDS/GM Data Exchange Standard
kTri, // Autodesk Object Separated Triangle Format
kQuad, // Autodesk Object Separated Quad Format
kProRender, // Pro/Engineer Render File Format.
kInventor, // OpenInventor Metafile Subset V1.0
kStl, // 3D Systems SLA Format
kObj, // Autodesk TAV format.
kEpsf, // Adobe Encapsulated Postscript v2.x
kIllustrator, // Illustrator Format.
kSlc // 3D Systems Slice Format.
};
// Project subdirectory types.
// These indicate the subdirectories where different types of files are
// located.
enum AlDirectoryType {
kAnimData, // Animation data (Save Anim / Retrieve Anim)
kCanvasData, // Paint canvas files
kDepthData, // Depth files
kEnvironmentData, // Environment files (saved/retrieved via
// multi-lister)
kLightData, // Light files (saved/retrieved via multi-lister)
kMaskData, // Mask files
kMiscData, // Miscellaneous data files: color, window and so on.
kOptionData, // UI option files
kPixData, // Image files for file textures, image planes and so on.
kPlotData, // Plot files
kRibData, // Pixar RIB files
kSlaData, // Stereo Lithography files (.stl, .slc, .tri)
kSdlData, // Scene Description Files
kShaderData, // Shader files (saved/retrieved via multi-lister)
kStageData, // Wire files representing stages.
kTextureData, // Texture files (saved/retrieved via multi-lister)
kWireData // Wire files an CAD files (for example, IGES, DXF, and so on.)
};
enum AlApplicationMode
{
kOpenModel,
kOpenAlias
};
enum AlLayerSortMode{
kLayerNumber,
kLayerName
};
static statusCode initialize( AlCoordinateSystem = kZUp,
boolean initProjectEnv = FALSE );
static boolean isInitialized();
static AlCoordinateSystem coordinateSystem ();
static statusCode expandFileName( char[], const char *,
AlDirectoryType directoryType );
static boolean isWireFile( const char *, char * );
static boolean AlUniverse::isOldWireFile( const char *fileName );
static statusCode wireFileWindowSize( int &sizeX, int &sizeY );
static statusCode setWireFileWindowSize( int sizeX, int sizeY );
static AlFileType fileType( const char * );
static statusCode retrieveOptions( AlRetrieveOptions& );
static statusCode setRetrieveOptions( const AlRetrieveOptions& );
static statusCode retrieve( const char * );
static statusCode retrieve( const char *, void(*)(int) );
static const char* lastWireFileRetrieved();
static const char* lastFileSaved();
static statusCode store( const char *, AlDagNode* = NULL );
static statusCode storeActive( const char * );
static AlDagNode* firstDagNode();
static AlSet* firstSet();
static AlCluster* firstCluster();
static const char* currentStage( void );
static statusCode setCurrentStage( const char* );
static statusCode mergeStage( const char* );
static statusCode mergeAllStages( void );
static statusCode deleteStage( const char* );
static statusCode deleteAllStages( void );
static statusCode stageVisibility( const char *, boolean& );
static statusCode setStageVisibility( const char *, boolean );
static const char* stageWindowSource( void );
static statusCode setStageWindowSource( const char * );
static const char* stageBackgroundSource( void );
static statusCode setStageBackgroundSource( const char * );
static statusCode renameStage( const char *, const char * );
static AlList* stageNames( void );
static statusCode createNewStage( const char *, char*& );
static statusCode retrieveStageSet( const char *,boolean );
static statusCode saveStageSet( const char *);
static statusCode setStageWireFileName( const char *, const char * );
static const char* stageWireFileName( const char * );
static AlWindow* firstWindow();
static AlWindow* currentWindow();
static AlWindow* sbdWindow();
static AlImagePlane* firstImagePlane();
static statusCode blindData( int, long&, const char*& );
static statusCode blindData( int, int, long&, const char*& );
static statusCode setBlindData( int, long, const char* );
static statusCode removeBlindData( int );
static statusCode removeBlindData( int, int );
static AlChannel* firstChannel();
static AlChannel* nextChannel(AlChannel *);
static statusCode nextChannelD( AlChannel *);
static AlAction* firstAction();
static AlAction* nextAction(AlAction *);
static AlShader* firstShader();
static AlShader* nextShader( AlShader* );
static statusCode nextShaderD( AlShader* );
static AlEnvironment* firstEnvironment();
static AlLayer* firstLayer();
static AlLayer* nextLayer( AlLayer* );
static statusCode nextLayerD( AlLayer* );
static AlLayer* layerByNumber(int);
static AlLayer* creationLayer();
static statusCode setCreationLayer(AlLayer *);
static boolean layersEnabled();
static statusCode setLayersEnabled( boolean );
static statusCode sortLayersInLayersBar(AlLayerSortMode);
static AlPerspectiveCamera* firstCamera();
static AlPerspectiveCamera* nextCamera( AlPerspectiveCamera* );
static statusCode nextCameraD( AlPerspectiveCamera* );
static AlLocator* firstLocator();
static AlLocator* nextLocator(AlLocator *);
static statusCode deleteAll();
static statusCode deleteAllLocators();
static AlConstructionEntity* firstConstructionEntity();
static AlConstructionEntity* nextConstructionEntity(AlConstructionEntity *);
static statusCode nextConstructionEntityD(AlConstructionEntity *);
static statusCode deleteAllConstructionEntities();
static statusCode importCloudFile( const char *, int );
static AlCloud *firstCloud();
static int numberOfClouds();
static AlBlendCurve* firstBlendCurve();
static int numberOfBlendCurves();
static statusCode redrawScreen( unsigned int flags = kRedrawInactive | kRedrawActive );
static statusCode applyIteratorToImagePlanes( AlIterator*, int& );
static statusCode applyIteratorToWindows( AlIterator *, int& );
static statusCode applyIteratorToDagNodes( AlIterator *, int& );
static statusCode applyIteratorToActions( AlIterator *, int& );
static statusCode applyIteratorToChannels( AlIterator *, int& );
static statusCode applyIteratorToSets( AlIterator *, int& );
static statusCode applyIteratorToClusters( AlIterator *, int& );
static statusCode applyIteratorToShaders( AlIterator *, int& );
static statusCode applyIteratorToLocators(AlIterator *, int &);
static statusCode applyIteratorToLayers(AlIterator *, int &);
static statusCode applyIteratorToClouds(AlIterator *, int &);
static statusCode applyIteratorToBlendCurves(AlIterator *, int &);
static statusCode writeSDLNoAnimation( const char *, boolean );
static statusCode writeSDL( const char *, boolean, double, double, double );
static statusCode frameRange(AlFrameRangeType, double&, double&, double&);
static double currentTime();
static statusCode doUpdates( boolean = TRUE );
static boolean updatesOn()
static AlApplicationMode applicationMode();
static statusCode userPrefColor( int, int&, int&, int& );
static statusCode setUserPrefColor( int, int, int, int );
static boolean constructionPlaneInEffect();
static statusCode constructionPlaneTransform( AlTM& );
static AlCategory *firstCategory();
static AlCategory *nextCategory(AlCategory *);
Description
This is a static class in that all of its member functions are static. It provides the foundation on which to interface with
Alias Wire Files (OpenModel) or with Alias directly (via OpenAlias).
In Alias, there is the concept of a ’stage’, an independent entity that encapsulates all the top-level information about a modeling
environment. The stage effectively represents the running version of an individual Wire file. In the interactive package,
stages can be controlled through the Stage Editor. The identical control also exists in the AlUniverse class, via the Stage
functions. These let you switch between stages, create and destroy stages, merge stages, and alter their features.
OpenAlias and OpenModel use object data that defines, among other things, transformations, curve and surface geometry, cameras,
and lights. Transformations are kept in objects called "DAG nodes". DAG nodes can be connected to other DAG nodes to form
a list of DAG nodes. There are particular types of DAG nodes which refer specifically to geometry, cameras, lights, or refer
to another list of DAG nodes to form a hierarchical structure. Together, these different types of DAG nodes can be used to
build a list of hierarchical structures which is collectively called a directed acyclic graph or "DAG".
The AlUniverse class gives access to the first DAG node in the DAG, and from that DAG node, the list of all DAG nodes in the
universe can be traversed.
The object data may also contain animation information on various animatable items, such as a DAG node or a piece of geometry.
The animation information can be accessed through the item that is animated. The AlUniverse class also gives access to animation
data through global lists.
Geometry also contains shading information. Each surface or face (a particular kind of curve) contains a list of shaders.
The AlUniverse class also gives access to a global list of all shaders in the universe, as well as the single environment
class.
The AlUniverse class also gives access to the list of sets in the universe via the firstSet() method. Similarly, the firstCluster()
method gives access to all the clusters in the universe. However, clusters are also accessible through methods in the classes
that can belong to clusters (that is, AlDagNode, AlCurveCV and AlSurfaceCV). A cluster is an object in the DAG that has a
collection of DAG nodes and/or CVs. The transformations in the DAG nodes above the cluster are applied to the CVs in the cluster
after the latter’s own transformations have been applied.
AlUniverse provides base access to the ImagePlane list and the Window list through firstImagePlane(), firstWindow() and related
functions.
Whenever a new Alias object of any kind is created, it is added to the appropriate place in the universe. For example, if a DAG node is created,
it is traversable through the AlUniverse::firstDagNode() method. If a new animation action is created, it is accessible by
walking the list of actions via AlUniverse::firstAction()/nextAction().
However, there are a few exceptions. The AlCurve, AlFace, AlSurface and AlKeyframe classes can all be created and will not
be part of the universe initially. They will become part of the universe when they are added to other objects. For example,
an AlCurve becomes part of the universe when its AlCurveNode is created. An AlKeyframe becomes part of the universe when its
AlParamAction is created. If a class is not part of the universe, this means that if AlUniverse::store() is called, that class
will not be stored. If an OpenAlias plug-in exits without making an object part of the universe, then the data will be lost
and wasted memory will result.
The initialize method must be called before any other AlUniverse method is called. A Alias AlObject cannot be created until the initialize method is called.
statusCode AlUniverse::doUpdates( boolean newState )
Description
Notifies the system that you are finished performing. If this flag is TRUE, then it is equivalent to sending out a ’geometry
modified’ message to the rest of the system. When the system receives the update message, then operations such as construction
history, and so on are done. If the previous state of the flag was FALSE and the new state is TRUE, then an update will be
done now and on each subsequent DAG modification.
boolean AlUniverse::isInitialized()
Description
Returns TRUE if the initialize method has been called.
statusCode AlUniverse::initialize( AlCoordinateSystem up, boolean initProjectEnv )
Description
Initializes the OpenAlias/OpenModel environment so that Alias object data can be retrieved, created, and/or stored. The world space coordinate system of the Universe can be oriented so
that either the positive Y-axis or positive Z-axis is considered the "up" direction. This method will do nothing if called
more than once. By default OpenModel applications are not aware of the Alias project environment (for example, user_data/demo/wire etc). By passing TRUE as the second argument, the OpenModel application
will become aware of the Alias project environment, expect such an environment to exist, and will use it for locating files. The .Alias* setup files will
be read and processed. However, unlike Alias, when the OpenModel application starts, if the project environment does not exist, it will not be created, and the application
will proceed in the default manner. Note that the arguments have no effect when initialization occurs under OpenAlias. That
is, the world space coordinate system and the project environment are determined by the running Alias application.
Arguments
< up - indicates whether the y-axis (kYUp) or z-axis (kZUp) should be the up direction. If no argument is specified, the default
is kZUp. This parameter has no effect when using OpenAlias.
< initProjectEnv - indicates whether the OpenModel application is to be aware of the Alias project environment or not. The default if FALSE.
Return Codes
sSuccess - universe initialized
sAlreadyCreated - the universe is already initialized
sInsufficientMemory - not enough memory to initialize
sFailure - could not initialize
sNoProjectEnvironment - this will be the case if initProjEnv is TRUE and Alias project environment does not exist.
boolean AlUniverse::isOldWireFile( const char *fileName )
Description
Determine if a file is an old Alias wire file.
Return values
TRUE - the indicated file is a valid Wire file
FALSE - one of the arguments was invalid or the file was not a Wire file.
AlCoordinateSystem AlUniverse::coordinateSystem()
Description
Returns the current world space coordinate system of the Universe. Note that once AlUniverse::initialize has been called,
or while running under OpenAlias, the coordinate system will never change during "this" session.
Return values
kYUp - positive Y-axis is "up"
kZUp - positive Z-axis is "up"
statusCode AlUniverse::expandFileName( char expandedName[], const char *fileName, AlDirectoryType directoryType )
Description
Given a filename, expands to an absolute pathname based on the file’s type and Alias project environment.
Arguments
> expandedName - location to return expanded filename.
< fileName - name of the file to locate within the project environment. Must not contain leading slashes or dots.
< directoryType - the type of project subdirectory where the file is located. (See AlUniverse.h for possible values.
Return Codes
sSuccess - the fully expanded name was successfully constructed and the file exists
sInvalidArguments - the passed filename is already absolute (contains leading ’/’), or is relative (contains
leading ’..’), or the directory type is invalid
sNoProjectEnvironment - the returned path does not exist. This may be because the Alias project environment does not exist in whole or in part.
SFailure - either or both passed names were NULL
statusCode AlUniverse::wireFileWindowSize( int &sizeX, int &sizeY )
Description
Gets the window size that was retrieved on the previous call to AlUniverse::retrieve. This method is available only under
OpenModel and fails under OpenAlias.
Return Codes
sSuccess - the store size was set
sFailure - OpenAlias is in use
sInvalidArgument - sizeX <=0 or sizeY <=0
statusCode AlUniverse::setWireFileWindowSize( int sizeX, int sizeY )
Description
Sets the window size that is written to the next call of AlUniverse::store.
Note that these values are changed whenever a call to AlUniverse::retrieve is called.
This method is available only under OpenModel and fails under OpenAlias.
Return Codes
sSuccess - the store size was set
sFailure - OpenAlias is in use
sInvalidArgument - sizeX <=0 or sizeY <=0
boolean AlUniverse::isWireFile( const char *fileName, char * vbuf )
Description
Determines if a file is an Alias wire file and finds the version number.
Note: vbuf must be allocated and at least 8 characters.
Arguments
< filename - the name of the file to check
> vbuf - if the file is an Alias wire file then this buffer will contain the version string
Return values
TRUE - the indicated file is a valid Wire file
FALSE - one of the arguments was invalid or the file was not a Wire file
AlUniverse::AlFileType AlUniverse::fileType( const char *fileName )
Description
Determine a file’s type.
Arguments
< fileName - the name of the file to type check
Return values
kUnknown - file type is unknown and will be ignored by ::retrieve().
The file types listed below are available for import in both OpenModel and OpenAlias.
|
Autodesk Wire File
|
|
Initial Graphics Exchange Standard
|
|
Verband Der Automobilindustrie IGES Subset
|
|
EDS/GM format
|
|
Japan Automobile Manufacturers Association IGES Subset
|
|
Verband Der Automobilindustrie Freeform Surface Interface
|
|
Drawing Exchange Format
|
|
3D Systems SLA Format
|
The file types listed below are available for import only in OpenAlias.
|
EDS/GM Data Exchange Standard
|
|
Autodesk Object Separated Triangle Format
|
|
Autodesk Object Separated Quad Format
|
|
Pro/Engineer Render File Format
|
|
OpenInventor Metafile Subset V1.0
|
|
Autodesk TAV format
|
|
Adobe Encapsulated Postscript
|
|
Illustrator Format
|
|
3D Systems Slice Format
|
statusCode AlUniverse::retrieveOptions( AlRetrieveOptions &options )
Description
Gets the options used by AlUniverse::retrieve().
Arguments
> options - options that ::retrieve() will use when retrieving files
Return Codes
sSuccess - the options were returned successfully
sInvalidArgument - ’options’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::setRetrieveOptions( const AlRetrieveOptions &options )
Description
Sets the options used by AlUniverse::retrieve().
Arguments
< options - options that AlUniverse::retrieve() will use when retrieving files
Return Codes
sSuccess - the options were set correctly
sInvalidArgument - ’options’ was NULL, or a parameter in ’options’ was out of range
sFailure - AlUniverse was not initialized
statusCode AlUniverse::retrieve( const char *fileName )
Description
Retrieves an Alias Wire file and adds the objects stored in the file to the list of Alias AlDagNode objects. If fileName is NULL the file is read from stdin.
Note that if sInvalidWireFile is returned you are likely trying to retrieve a newer wire file than your application recognizes.
In this case you should link your application with the OpenModel library distributed with the newer Alias.
Arguments
< fileName - the name of the file to be retrieved
Return Codes
sSuccess - the file was retrieved successfully
sInsufficientMemory - not enough memory
sFailure - the wire file could not be retrieved properly
sInvalidWireFile - the file was not a compatible Alias wire file
statusCode AlUniverse::retrieve( const char *fileName,void(*progressCallback)(int) )
Description
This method is a variation of the AlUniverse::retrieve(const char *) method with the addition that it allows a retrieve progress
callbackto be set.
NOTES:
1. The function progressCallback() should be in the C name space within an extern "C" block.
2. The ’int’ number passed to the progress callback is expressed as a percentage value between 0 and 100. This number is a
close approximation of the retrieval progress and will not be exact due to compression usedin the Alias wire file format.
Arguments:
< fileName - the name of the file to be retrieved
Return Codes:
sSuccess - the file was retrieved successfully
sInsufficientMemory - not enough memory
sFailure - the wire file could not be retrieved properly
sInvalidWireFile - the file was not a compatible Alias wire file.
sInvalidArgument - NULL parameter passed to method
const char* AlUniverse::lastWireFileRetrieved()
Description
Returns the last wire file retrieved either by the API or by Alias. Note that the file name will not change to NULL if a delete all is done. NULL is returned if no files have been retrieved
or if the function fails.
const char* AlUniverse::lastFileSaved()
Description
Returns the name of the last file saved within Alias. If no file has been saved or the function failed, NULL will be returned. Also note that if the DT options are changed, this
function will return NULL until after the next save.
Note: this method will fail and always return NULL in OpenModel.
statusCode AlUniverse::store( const char * fileName, AlDagNode* dagNode )
Description
If the AlDagNode argument is absent or NULL then this method stores all the AlObjects in the universe to a file as an Alias
Wire file. If the AlDagNode argument is not NULL then only the model below the AlDagNode is stored. If the AlDagNode is in
the middle of a hierarchy, the AlDagNodes above the argument will also be stored so as to preserve transformations on the
model.
Arguments
fileName - the name of the file to be stored
dagNode - see description
Return Codes
sSuccess - the file was stored successfully
sFailure - the wire file could not be stored properly
statusCode AlUniverse::storeActive( const char * fileName )
Description
Allows the user to store only those objects which are on the pick list.
Arguments
fileName - the name of the file to be stored
Return Codes
sSuccess - the file was stored successfully
sFailure - the wire file could not be stored properly
AlDagNode* AlUniverse::firstDagNode()
Description
Returns the first AlDagNode in the list of Alias AlDagNode objects (the DAG). NULL is returned if the list is empty.
AlSet* AlUniverse::firstSet()
Description
Returns a pointer to the first set in this universe. Returns NULL if there are no sets in this universe.
AlCluster* AlUniverse::firstCluster()
Description
Returns a pointer to the first cluster in this universe. Returns NULL if there are no clusters in this universe.
AlChannel* AlUniverse::firstChannel()
Description
Returns the first channel in the list of all channels in the universe. This list is not in any particular order, although
channels animating the same item will appear consecutively in the list. This method returns NULL if nothing in the universe
is animated.
const char* AlUniverse::currentStage( void )
Description
Returns the name of the current stage.
statusCode AlUniverse::setCurrentStage( const char* name )
Description
Switches the current stage to the stage with the indicated name.
Arguments
name - the name of the stage to switch to
Return Codes
sSuccess - the stage was set to the indicated stage
sFailure - the stage with the given name could not be found
statusCode AlUniverse::mergeStage( const char *name )
Description
Merges the current stage with another stage.
Arguments
name - the name of the stage to merge with
Return Codes
sSuccess - the stage was successfully merged
sFailure - a stage with the given name could not be found or the merge operation failed
statusCode AlUniverse::mergeAllStages( void )
Description
Merges all of the stages into a single stage. The current stage is switched to the merged stage.
Return Codes
sSuccess - all of the stages were successfully merged
sFailure - the merge operation failed or there were no stages to merge
statusCode AlUniverse::deleteStage( const char *name )
Description
Deletes the stage with the given name. Under OpenAlias, this operation will not delete the last stage if there is only one
stage remaining.
Arguments
name - the name of the stage to delete
Return Codes
sSuccess - the stage was successfully deleted
sFailure - there was no stage with the given name or the delete operation failed
statusCode AlUniverse::deleteAllStages( void )
Description
Deletes all stages. This operation will fail if there is only one stage remaining.
Return Codes
sSuccess - all of the stages were successfully deleted
sFailure - the delete operation failed
statusCode AlUniverse::stageVisibility( const char *name, boolean& on_or_off )
Description
Returns the visibility status of the indicated stage.
Arguments
< name - the name of the stage to examine
> on_or_off - the variable to return the status in
Return Codes
sSuccess - the stage was found and its visibility status was returned
sFailure - there was no stage with the given name
statusCode AlUniverse::setStageVisibility( const char *name, boolean on_or_off )
Description
Sets the visibility status of the indicated stage.
Arguments
name - the name of the stage to alter
on_or_off - TRUE if the stage is visible
Return Codes
sSuccess - the stage was found and its visibility status was set
sFailure - there was no stage with the given name
const char *AlUniverse::stageWindowSource( void )
Description
Returns the name of the currently active application window universe.
statusCode AlUniverse::setStageWindowSource( const char *name )
Description
Sets the window universe to the indicated stage. The window universe contains the windows you are looking through to see the
objects in the current universe.
Arguments
name - the name of the stage to set the window universe to
Return Codes
sSuccess - the stage was found and the window universe was set
sFailure - there was no stage with the given name
const char *AlUniverse::stageBackgroundSource( void )
Description
Returns the name of the current background source.
statusCode AlUniverse::setStageBackgroundSource( const char *name )
Description
Chooses which stage to take the background source from (the environment shader) that is used for rendering.
Arguments
name - the name of the stage to use
Return Codes
sSuccess - the stage was found
sFailure - there was no stage with the given name
statusCode AlUniverse::renameStage( const char* oldName, const char *newName )
Description
Renames the stage with the name ’oldName’ to ’newName’. If NULL is specified for oldName, then the current stage is renamed.
Arguments
oldName - the name of the stage to rename
newName - the new name for the stage
Return Codes
sSuccess - the stage was renamed
sNameChangedToUniqueOne - the stage was renamed, but the newName was altered to be unique
sInvalidArgument - the newName was NULL
sFailure - the indicated stage could not be found
AlList* AlUniverse::stageNames( void )
Description
Returns an AlList (of AlNameItems) containing the names of all of the stages that are present.
statusCode AlUniverse::createNewStage( const char* name, char*& stagename )
Description
Creates a new stage and sets the current stage to the new stage. The name assigned to the stage is returned in stagename.
Access to stagename is important when stage names are reused and a new unique name is selected. Note that stagename will be
assigned to something that can change through calls in the API. So caution must be taken when using stagename in future calls.
In addition, what stagename points to must not be modified since it is internal Alias data.
Arguments
< name - the name of the stage to create
> stagename - pointer to created name
Return Codes
sSuccess - a new stage with the name ’name’ was created
sNameChangedToUniqueOne - a new stage was created, although the newName was altered to be unique
sFailure - a new stage could not be created
statusCode AlUniverse::retrieveStageSet( const char *stageSet, boolean deleteStages )
Description
Retrieves a stage set file.
Arguments
> stageSet - the name of the stage set file to be retrieved
> deleteStages - if true, any existing stages will be deleted
Return Codes
sSuccess - the method succeeded in retrieving the stage set
sFailure - the method failed
sInvalidArgument - stageSet is NULL
statusCode AlUniverse::saveStageSet( const char *stageSet )
Description
Saves a stage set file. This method saves out all of the stages and their associated wire file names.
If a stage has an associated wire file name that is NULL, this routines fails.
Arguments
> stageSet - the name (with path) of the stage set file to be created
Return Codes
sSuccess - the method succeeded in saving the stage set
sFailure - the method failed
sInvalidArgument - stageSet is NULL
statusCode AlUniverse::setStageWireFileName( const char *stageName, const char *wireFileName )
Description
Sets the wire file name that is to be used for the stage when the stage set is written out using the saveStageSet() call.
Note that this function will change the default name of the wire file in the store and retrieve dialog boxes in Alias.
Arguments
> stageName - the name of the stage
> wireFileName - the name of the wire file
Return Codes
sSuccess - the method succeeded in setting the wire file for the stage
sFailure - not a valid stage name or the setting of the wire file name failed
sInvalidArgument - stageSet or wireFileName are NULL
const char* AlUniverse::stageWireFileName( const char *stageName )
Description
Returns the wire file name of stage 'stageName'. NULL is returned if the wire file is not set or if an error occurred.
Arguments
> stageName - the name of the stage
AlWindow *AlUniverse::firstWindow( void )
Description
Returns the first window layer.
statusCode AlUniverse::applyIteratorToWindows( AlIterator *iter, int& rc )
Description
Applies an iterator to each window.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each window
sInvalidArgument - ’iter’ was NULL
AlImagePlane* AlUniverse::firstImagePlane( void )
Description
Returns the first image plane.
statusCode AlUniverse::applyIteratorToImagePlanes( AlIterator* iter, int& rc )
Description
Applies an iterator to each image plane.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each image plane
sInvalidArgument - ’iter’ was NULL
AlWindow* AlUniverse::currentWindow( void )
Description
Returns the currently active window.
AlWindow* AlUniverse::sbdWindow( void )
Description
Returns the current SBD window.
statusCode AlUniverse::blindData( int type, long& size, const char*& ptr )
Description
Retrieves the blind data for the universe. If there is no data, the size will be 0 and the pointer will be NULL.
Arguments
< type - the blind data type to find
> size - the size of the blind data if found
> ptr - a pointer to the blind data if found
Return Codes
sSuccess - the blind data type was found
sFailure - the blind data type was not found
statusCode AlUniverse::blindData( int type, int index, long& size, const char*& ptr )
Description
Retrieves the blind data for the universe. If there is no data, the size will be 0 and the pointer will be NULL
NOTE: If universes are merged then the resulting universe will have blind data for both universes. If there are two or more
blind data packets with the same "type", the parameter 'index' can be used to access them.
Arguments
< type - the blind data type to find
< index - the index of the blind data packet
> size - the size of the blind data if found
> ptr - a pointer to the blind data if found
Return Codes
sSuccess - the blind data type was found
sFailure - the blind data type was not found
sInvalidArgument - index was negative
statusCode AlUniverse::setBlindData( int type, long size, const char* ptr )
Description
Associates a block of data with the object. If a block of data is already associated with this object and this user_type,
the old block is replaced by a reference to the new block. The old block of data is not deleted.
Arguments
type - the type of the blind data to set
size - the size of the blind data
ptr - a pointer to the blind data
Return Codes
sSuccess - the blind data was set
statusCode AlUniverse::removeBlindData( int type )
Description
Removes the blind data from the universe with the indicated type. Note that the user is still responsible for the memory associated
with this block of data.
Arguments
type - the blind data type to remove
Return Codes
sSuccess - the type was found and removed
sFailure - the indicated type could not be found
statusCode AlUniverse::removeBlindData( int type, int index )
Description
Removes the blind data from the universe with the indicated type and index.
Arguments
< type - the blind data type to remove
< index - the index of the blind data packet
Return Codes
sSuccess - the type was found and removed
sFailure - the indicated type could not be found
sInvalidArgument - index was negative
AlChannel* AlUniverse::nextChannel(AlChannel *curChannel )
Description
Returns the next channel in the global list of all channels that appears after the given channel ’curChannel’.
Arguments
< curChannel - the channel in the list to obtain the next channel from
statusCode AlUniverse::nextChannelD(AlChannel *curChannel )
Description
Destructively points ’curChannel’ to the next channel in the global list of all channels that appear after the given channel.
sFailure is returned if there is no next channel.
Arguments
< curChannel - the channel in the list to obtain the next channel from
Return Codes
sSuccess - ’curChannel’ now points to the next channel
sFailure - the universe is not initialized or there is no next channel
sInvalidArgument - ’curChannel’ is invalid or NULL
AlAction* AlUniverse::firstAction()
Description
Returns the first action in the list of all actions in the universe. This list is not in any particular order, and in particular,
if an action is added to or deleted from the universe, this list may be reordered. Returns NULL if there are no actions in
this universe.
AlAction* AlUniverse::nextAction( AlAction *curAction )
Description
Returns the next action in the global list of all actions that appears after the given action ’curAction’. This list is not
in any particular order, and in particular, if an action is added to or deleted from the universe, this list may be reordered.
Arguments
< curAction - the action in the list to obtain the next action from
AlLayer* AlUniverse::firstLayer()
Description
Returns the first layer which refers to the default layer. This layer is always valid in the universe. NULL is returned if
the universe is not initialized.
AlLayer* AlUniverse::nextLayer(AlLayer *curLayer)
Description
Returns the layer following curLayer in the list of Alias AlLayer objects. NULL is returned if curLayer has no next layer.
Arguments
< curLayer - layer from which to walk forward
statusCode AlUniverse::nextLayerD(AlLayer *curLayer)
Description
Destructively points 'curLayer' to the AlLayer following curLayer in the list of Alias layer objects.
Arguments
< curLayer - layer from which to walk forward
Return Codes
sSuccess - curLayer now points to the next layer
sFailure - there is no next layer
sInvalidArgument - curLayer was invalid
AlLayer *AlUniverse::layerByNumber(int layerID)
Description
Returns a layer object for a given layer number. NULL is returned if the layerID does not exist.
Arguments
< layerID - the number of the layer
boolean AlUniverse::layersEnabled()
Description
Checks if the layer functionality is enabled. True is returned if the functionality is enabled and false otherwise.
statusCode AlUniverse::setLayersEnabled(boolean enable)
Description
Enables or disables the layer functionality temporarily. In the disabled state, the layers are only temporarily disabled.
Their attributes and assignment of AlDagNodes restored with enabling layers. While disabling the layers, no information about
layers is permanently lost.
Arguments
< enable - a value of true enables the layers and false disables it
Return Codes
sSuccess - the layer was enabled or disabled
sFailure - the layer could not be disabled or enabled
AlShader* AlUniverse::firstShader()
Description
Returns the first AlShader in the list of Alias AlShader objects. NULL is returned if the list is empty.
AlShader* AlUniverse::nextShader( AlShader* curShader )
Description
Returns the AlShader following curShader in the list of Alias AlShader objects. NULL is returned if curShader has no next shader.
Arguments
< curShader - shader from which to walk forward
statusCode AlUniverse::nextShaderD( AlShader* curShader )
Description
Destructively points ’curShader’ to the AlShader following curShader in the list of Alias AlShader objects.
Arguments
< curShader - shader from which to walk forward
Return Codes
sSuccess - curShader now points to the next shader
sFailure - there is no next shader
sInvalidArgument - curShader was invalid
AlPerspectiveCamera* AlUniverse::firstCamera( void )
Description
Returns the first perspective camera.
AlPerspectiveCamera* AlUniverse::nextCamera( AlPerspectiveCamera* curCamera )
Description
Returns the next perspective camera following curCamera in the list of all cameras. NULL is returned if curCamera has no next
perspective camera.
Arguments
< curCamera - the camera in the list to obtain the next camera from
statusCode AlUniverse::nextCameraD( AlPerspectiveCamera* curCamera )
Description
Destructively points 'curCamera' to the AlPerspectiveCamera following curCamera in the list of perspective cameras.
Arguments
< curCamera - the camera in the list to obtain the next camera from
Return Codes
sSuccess - curCamera now points to the next camera
sFailure - there is no next camera
sInvalidArgument - curCamera was invalid
AlLocator* AlUniverse::firstLocator()
Description
Returns the first AlLocator in the list of Alias AlLocator objects. NULL is returned if the list is empty.
AlLocator* AlUniverse::nextLocator(AlLocator *curLocator)
Description
Returns the AlLocator following curLocator in the list of Alias AlLocator objects. NULL is returned if curLocator has no next locator.
Arguments
< curLocator - locator from which to walk forward
AlEnvironment* AlUniverse::firstEnvironment()
Description
Returns the first AlEnvironment in the list of Alias AlEnvironment objects. NULL is returned if the list is empty.
statusCode AlUniverse::deleteAll()
Description
Deletes all objects in the universe. After this operation ALL references to ALL objects will be invalid.
Return Codes
sSuccess - everything was successfully deleted
sFailure - the universe was not initialized or the deletion failed
statusCode AlUniverse::deleteAllLocators()
Description
Deletes all locators. After this operation ALL references to ALL AlLocators will be invalid.
Return Codes
sSuccess - everything was successfully deleted
sFailure - the universe was not initialized or the deletion failed
AlConstructionEntity* AlUniverse::firstConstructionEntity()
Description
Returns the first AlConstructionEntity in the list of Alias AlConstructionEntity objects. NULL is returned if the list is empty.
AlConstructionEntity* AlUniverse::nextConstructionEntity(AlConstructionEntity *curConstructionEntity)
Description
Returns the AlConstructionEntity following curConstructionEntity in the list of Alias AlConstructionEntity objects. NULL is returned if curConstructionEntity has no next locator.
Arguments:
< curConstructionEntity - Construction Entity from which to walk forward
statusCode AlUniverse::nextConstructionEntityD(AlConstructionEntity *ce)
Description:
Destructively points ’ce’ to the AlConstructionEntity following ce in the list of Alias AlConstructionEntity objects.
Arguments
< ce - construction entity from which to walk forward
Return Codes
sSuccess - ce now points to the next AlConstructionEntity
sFailure - there is no next AlConstructionEntity
sInvalidArgument - ce was invalid
statusCode AlUniverse::deleteAllConstructionEntities()
Description
Deletes all construction entities. After this operation ALL references to ALL AlConstructionEntities will be invalid.
Return Codes
sSuccess - everything was successfully deleted.
sFailure - the universe was not initialized or the deletion failed.
AlLayer* AlUniverse::firstLayer()
Description
Returns the first layer which refers to the default layer. This layer is always valid in the universe. NULL is returned if
the universe is not initialized.
AlLayer* AlUniverse::nextLayer(AlLayer *curLayer)
Description
Returns the layer following curLayer in the list of Alias AlLayer objects. NULL is returned if curLayer has no next layer.
Arguments
< curLayer - layer from which to walk forward
statusCode AlUniverse::nextLayerD(AlLayer *curLayer)
Description
Destructively points 'curLayer' to the AlLayer following curLayer in the list of Alias layer objects.
Arguments
< curLayer - layer from which to walk forward
Return Codes
sSuccess - curLayer now points to the next layer
sFailure - there is no next layer
sInvalidArgument - curLayer was invalid
AlLayer *AlUniverse::layerByNumber(int layerID)
Description
Returns a layer object for a given layer number. NULL is returned if the layerID does not exist.
Arguments
< layerID - the number of the layer
AlLayer * AlUniverse::creationLayer()
Description
Returns the layer object of the creation layer. NULL is returned if the universe if not initialized.
statusCode AlUniverse::setCreationLayer(AlLayer *layer)
Description
Makes the layer a creation layer. When a layer is made a creation layer, all its attributes temporarily become similar to
the default layer. For example, an invisible layer becomes visible till it is a creation layer.
Return Codes
sSuccess - the layer was set as a creation layer
sFailure - the layer was not set because either the layer functionality is disabled or the universe is not initialized.
sInvalidArgument - the layer object is not valid.
boolean AlUniverse::layersEnabled()
Description
Checks if the layer functionality is enabled. True is returned if the functionality is enabled and false otherwise.
statusCode AlUniverse::setLayersEnabled(boolean enable)
Description
Enables or disables the layer functionality temporarily. In the disabled state, the layers are only temporarily disabled.
Their attributes and assignment of AlDagNode is restored with enabling layers. While disabling the layers, no information
about layers is permanently lost.
Arguments
< enable - a value of true enables the layers and false disables it
Return Codes
sSuccess - the layer was enabled or disabled
sFailure - the layer could not be disabled or enabled
statusCode AlUniverse::sortLayersInLayersBar(AlLayerSortMode sortMode)
Description
Sorts the position of layer buttons in the layer bar in the increasing order.
Arguments
< sortMode
- kLayerNumber - sort the buttons by their layer number
- kLayerName - sort the buttons by their layer name in the lexicographically increasing order
Return Codes
sSuccess - the layer buttons were sorted
sInvalidArgument - the value of sortMode is not valid
sFailure - the universe is not initialized
statusCode AlUniverse::importCloudFile( const char *fileName, int samplingFactor)
Description
Imports a cloud file.
Arguments
< fileName - the name of the cloud file to process
< samplingFactor - controls the sample rate of cloud (a value from 1 to 100)
Return Codes
sInvalidArgument - sampling factor is not from 1 to 100, or fileName is NULL
sSuccess - the cloud file was successfully imported
sFailure - the operation failed or the universe has not been initialized
AlCloud *AlUniverse::firstCloud()
Description
Returns the first cloud in the universe. NULL is returned if the method failed. This method would always fail if the universe
has not been initialized.
int AlUniverse::numberOfClouds()
Description
Returns the number of clouds in the universe. The universe must be initialized first for this method to work.
AlBlendCurve* AlUniverse::firstBlendCurve()
Description
Returns the first blend curve in the universe. The universe must be initialized before this method will work.
int AlUniverse::numberOfBlendCurves()
Description
Returns the number of blend curves in the universe. The universe must be initialized first for this method to work
statusCode AlUniverse::redrawScreen( unsigned int flags )
Description
Redraws the modeling windows. Use it after you have completed an operation to see the results. Different parts of the display
can be selectively updated by performing a bitwise OR of the following flags:
- kRedrawInactive - redraw the inactive objects
- kRedrawActive - redraw the active objects
- kRedrawTemplate - redraw templated objects
- kRedrawWindows - OBSELETE
- kRedrawListers - redraw any open editors
- kRedrawNone - method will exit without performing any operations
To redraw everything use the following flag:
- kRedrawAll = (kRedrawInactive | kRedrawActive | kRedrawTemplate | kRedrawWindows | kRedrawListers )
This routine succeeds in OpenAlias and fails in OpenModel.
Return Codes
sSuccess - able to redraw
sInvalidArgument - flags are out of range
sFailure - unable to redraw (this always occurs in OpenModel)
statusCode AlUniverse::applyIteratorToDagNodes( AlIterator* iter, int& rc )
Description
Applies an iterator to all DAG nodes. This does not recursively go down the DAG.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each dagNode
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToActions( AlIterator* iter, int& rc )
Description
Applies an iterator to each action.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each action
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToChannels( AlIterator* iter, int& rc )
Description
Applies an iterator to each channel.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each channel
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToSets( AlIterator* iter, int& rc )
Description
Applies an iterator to each set.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each set
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToClusters( AlIterator* iter, int& rc )
Description
Applies an iterator to each cluster.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each cluster
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToShaders( AlIterator* iter, int& rc )
Description
Applies an iterator to each shader.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each shader
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToLocators(AlIterator *iter, int &rc)
Description
Applies an iterator to each AlLocator defined in Alias.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each locator
sInvalidArgument - 'iter' was NULL
statusCode AlUniverse::applyIteratorToLayers( AlIterator* iter, int& rc )
Description
Applies an iterator to all layers.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each layer
sInvalidArgument - 'iter' was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToClouds( AlIterator* iter, int& rc )
Description
Applies an iterator to all clouds.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes
sSuccess - the iterator was successfully applied to each cloud
sInvalidArgument - 'iter' was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::applyIteratorToBlendCurves( AlIterator* iter, int& rc )
Description
Applies an iterator to all blend curves.
Arguments
< iter - the iterator to apply
> rc - the return value of the last application of the iterator
Return Codes:
sSuccess - the iterator was successfully applied to each blend curve
sInvalidArgument - ’iter’ was NULL
sFailure - AlUniverse was not initialized
statusCode AlUniverse::writeSDLNoAnimation( const char *filename, boolean store_active )
Description
This method outputs an SDL file for the entire universe if store_active is FALSE. If it is TRUE, then only the active objects
in the current universe will be output to a file. In either case no animation will be output; the scene is evaluated at the
current view frame which can be set using the AlViewFrame class methods.
Arguments
< filename - the base name of the SDL file to write to (including path if appropriate)
< store_active - as described above
Return Codes
sSuccess - the file(s) was/were successfully written
sFailure - it was not possible to write the SDL file
sInvalidArgument - the filename was NULL
statusCode AlUniverse::writeSDL( const char *filename, boolean store_active, double start, double end, double by )
Description
This method outputs an SDL file for the entire universe if store_active is FALSE. If it is TRUE, then only the active objects
in the current universe will be output to a file. Animation will be written to the SDL file for the frame range given. If
'by' is zero then only a single frame will be output.
Arguments
< filename - the base name of the SDL file to write to (including path if appropriate)
< store_active - as described above
< start - the frame to start the animation at
< end - the frame to end the animation at
< by - the increment to get from start to end
Return Codes
sSuccess - the file(s) was/were successfully written
sFailure - it was not possible to write the SDL file
sInvalidArgument - the filename was NULL
double AlUniverse::currentTime()
Description
Used during playback to return the value of the current frame.
statusCode AlUniverse::frameRange(AlFrameRangeType rangeType, double &start, double &end, double &by)
Description
Determines the frame range for the current universe. The range type can be one of kFromPreviewWindow (gets the value from
the Preview window, either kMinMax or kGlobal; based on the choice in the preview window - this is undefined for OpenModel),
kMinMax (gets the actual start and end as defined by the animaiton on the objects), and kGlobal (gets the values entered by
the user - again, undefined for OpenModel).
Arguments
rangeType - as described above
start - frame at which the animation starts
end - frame at which the animation ends
by - the amount by which frames are incremented
Return Codes
sSuccess - the frame range was successfully determined
sInvalidArgument - rangeType was not one of the legal values
AlUniverse::AlApplicationMode AlUniverse::applicationMode()
AlUniverse::AlApplicationMode AlUniverse::applicationMode()
Description
Returns the current mode that the Alias API is running in (kOpenModel or kOpenAlias). This is useful when writing code that is shared between OpenModel and OpenAlias.
statusCode AlUniverse::userPrefColor( int colorField, int &r, int &g, int &b)
Description
Returns RGB values for the given color field. Color field constants are defined in AlUserColors.h. This method always fails
in OpenModel.
Arguments
< colorField - color field
> r - red RGB value
> g - green RGB value
> b - blue RGB value
Return Codes
sSuccess - normal completion
sFailure - an error occurred
statusCode AlUniverse::setUserPrefColor( int colorField, int r, int g, int b)
Description
Sets RGB values for the given color field. Color field constants are defined in AlUserColors.h. This method always fails in
OpenModel.
Arguments
< colorField - color field
< r - red RGB value
< g - green RGB value
< b - blue RGB value
Return Codes
sSuccess - normal completion
sFailure - an error occurred
boolean AlUniverse::constructionPlaneInEffect()
Description
Returns TRUE if there is a construction plane in effect.
statusCode AlUniverse::constructionPlaneTransform( AlTM &tm )
Description
Returns the transformation matrix of the construction plane. This matrix will map a point in the construction plane to a point
in world space.
Arguments
> tm - matrix where construction plane is returned
Return Codes
sFailure - method failed, or there is no construction plane in effect
sSuccess - the method succeeded
AlCategory* AlUniverse::firstCategory()
Description
Returns the head of the Category structure which is attached to the universe.
This function will return NULL if,
a) The universe is not initialized
b) Layers are not initialized
c) There are no categories
AlCategory* AlUniverse::nextCategory(AlCategory *curCategory)
Description
This method returns the next category in the global list of all categories that appears after the given category ’curCategory’.
Arguments
< curCategory - Category in the list to obtain the next category from