TrackFlags.h

Go to the documentation of this file.
00001 //**************************************************************************/
00002 // Copyright (c) 1998-2006 Autodesk, Inc.
00003 // All rights reserved.
00004 // 
00005 // These coded instructions, statements, and computer programs contain
00006 // unpublished proprietary information written by Autodesk, Inc., and are
00007 // protected by Federal copyright law. They may not be disclosed to third
00008 // parties or copied or duplicated in any form, in whole or in part, without
00009 // the prior written consent of Autodesk, Inc.
00010 //**************************************************************************/
00011 #pragma once
00012 
00013 #include "strbasic.h"
00014 
00015 // Flags passed to MapKeys and DeleteKeys
00016 #define TRACK_DOSEL         (1<<0)
00017 #define TRACK_DOALL         (1<<1)  // ignore selection
00018 #define TRACK_SLIDEUNSEL    (1<<2)  // Slide unselected keys to the right
00019 #define TRACK_RIGHTTOLEFT   (1<<3)  // Enumerate right to left. If TRACK_SLIDEUNSEL is set, keys will slide to the left.
00020 #define TRACK_DOSUBANIMS    (1<<4)  // This flag is only passed to MapKeys
00021 #define TRACK_DOCHILDNODES  (1<<5)  // This flag is only passed to MapKeys
00022 #define TRACK_MAPRANGE      (1<<6)  // The range, if not locked to first and last key, should be mapped as well.
00023 #define TRACK_DOSOFTSELECT  (1<<7)  // Apply soft selection weights to the results of Time map.  This flag is only passed to MapKeys
00024 #define TRACK_INSERTKEYS    (1<<8)  // Unselected keys after the insertion point get moved to the right
00025 #define TRACK_REPLACEKEYS   (1<<9)  // Unselected keys within selected keys' range get deleted
00026 
00027 // Flags passed to EditTimeRange
00028 #define EDITRANGE_LINKTOKEYS    (1<<0)  // This means if one of the ends of the interval is at a key, link it to the key so that if the key moves, the interval moves.
00029 
00030 // Flags passed to hit test tracks and fcurves.
00031 #define HITTRACK_SELONLY        (1<<0)
00032 #define HITTRACK_UNSELONLY      (1<<1)
00033 #define HITTRACK_ABORTONHIT     (1<<2)
00034 #define HITCURVE_TESTTANGENTS   (1<<3)
00035 #define HITTRACK_SUBTREEMODE    (1<<4)  // Subtree mode is on so the anim is being asked to hittest itself in one of its ancestor's tracks
00036 #define HITCURVE_TESTALLTANGENTS (1<<5) // If PAINTCURVE_SHOWALLTANGENTS is set then you also want to hit test all tangent handles
00037 
00038 // Flags passed to SelectKeys
00039 // Either SELECT, DESELECT, or a combination of CLEARKEYS and CLEARCURVE
00040 // will be specified.
00041 #define SELKEYS_SELECT          (1<<0)  
00042 #define SELKEYS_DESELECT        (1<<1)
00043 #define SELKEYS_CLEARKEYS       (1<<2)       
00044 #define SELKEYS_CLEARCURVE      (1<<3) 
00045 #define SELKEYS_FCURVE          (1<<4)  // indicates that were operating on keys of a function curve, not a track  
00046 
00047 
00048 // Flags passed to GetTimeRange
00049 #define TIMERANGE_SELONLY       (1<<0)  // The bounding interval of selected keys
00050 #define TIMERANGE_ALL           (1<<1)  // Whatever the channel's time range is - usually the bunding interval of all keys.
00051 #define TIMERANGE_CHILDNODES    (1<<2)  // A node's time range should include child nodes.
00052 #define TIMERANGE_CHILDANIMS    (1<<3)  // A animatable's child anim ranges should be included
00053 
00054 // Passed to the functions that modify a time range such as copy,paste,delete,reverse
00055 #define TIME_INCLEFT        (1<<10)  // Include left endpoint
00056 #define TIME_INCRIGHT       (1<<11)  // Include right endpoint
00057 #define TIME_NOSLIDE        (1<<12)  // Delete any keys in the interval but don't actually remove the block of time.
00058 
00059 // In addition to the TIME_ flags above, the following flag may be passed to PasteTrck()
00060 #define PASTE_RELATIVE      (1<<20) // Add the keys relative to existing keys
00061 
00062 // Flags passed to AddKey
00063 #define ADDKEY_SELECT       (1<<0)  // Select the new key and deselect any other selected keys
00064 #define ADDKEY_INTERP       (1<<1)  // Init the new key to the interpolated value at that time. Otherwise, init the key to the value of the previous key.
00065 #define ADDKEY_FLAGGED      (1<<2)  // Flag the newly created key as if FlagKey() was called for it
00066 
00067 // Flags passed to CopyKeysFromTime()
00068 #define COPYKEY_POS         (1<<0)  // These filter flags are passed to a tm controller. The tm
00069 #define COPYKEY_ROT         (1<<1)  // can decide what to do with them... they have obvious meaning
00070 #define COPYKEY_SCALE       (1<<2)  // For the PRS controller.
00071 
00072 // Flags passed to GetNextKeyTime()
00073 #define NEXTKEY_LEFT        (1<<0)  // Search to the left.
00074 #define NEXTKEY_RIGHT       (1<<1)  // Search to the right.
00075 #define NEXTKEY_POS         (1<<2)
00076 #define NEXTKEY_ROT         (1<<3)
00077 #define NEXTKEY_SCALE       (1<<4)
00078 
00079 // Flags passed to IsKeyAtTime
00080 #define KEYAT_POSITION      (1<<0)
00081 #define KEYAT_ROTATION      (1<<1)
00082 #define KEYAT_SCALE         (1<<2)
00083 
00084 // Flags passed to PaintTrack and PaintFCurves
00085 #define PAINTTRACK_SHOWSEL          (1<<0)
00086 #define PAINTTRACK_SHOWSTATS        (1<<1)  // Show for selected keys
00087 #define PAINTCURVE_SHOWTANGENTS     (1<<2)  // Show for selected keys
00088 #define PAINTCURVE_FROZEN           (1<<3)  // Curve is in a frozen state
00089 #define PAINTCURVE_GENCOLOR         (1<<4)  // Draw curve in generic color
00090 #define PAINTCURVE_XCOLOR           (1<<5)  // Draw curve in red
00091 #define PAINTCURVE_YCOLOR           (1<<6)  // Draw curve in green
00092 #define PAINTCURVE_ZCOLOR           (1<<7)  // Draw curve in blue
00093 #define PAINTTRACK_SUBTREEMODE      (1<<8)  // Subtree mode is on so the anim is being asked to paint itself in one of its ancestor's tracks
00094 #define PAINTTRACK_HIDESTATICVALUES (1<<9)  // Indicates that static values shouldn't be displayed in tracks.
00095 #define PAINTCURVE_FROZENKEYS       (1<<10) // Show keys on frozen tracks
00096 #define PAINTCURVE_SHOWALLTANGENTS  (1<<11) // Show tangents for unselected keys as well
00097 #define PAINTCURVE_SOFTSELECT       (1<<12) // Draw curves using Soft Selection
00098 #define PAINTCURVE_WCOLOR           (1<<13) // Draw curve in yellow
00099 
00100 // Flags passed to GetFCurveExtents
00101 #define EXTENTS_SHOWTANGENTS        (1<<0) // Tangents are visible for selected keys
00102 #define EXTENTS_SHOWALLTANGENTS     (1<<1) // Tangents are visible for all keys
00103 #define EXTENTS_FITINRANGE          (1<<2) // Fit only keys with a value falling within the currently displayed time range
00104 #define EXTENTS_SELECTED_KEYS       (1<<3) // Fit only selected keys
00105 
00106 // Values returned from PaintTrack, PaintFCurve and HitTestTrack
00107 #define TRACK_DONE          1       // Track was successfully painted/hittested
00108 #define TRACK_DORANGE       2       // This anim has no track. Draw/hittest the bounding range of it's subanims
00109 #define TRACK_ASKCLIENT     3       // Ask client anim to paint the track
00110 #define TRACK_DOSTANDARD    4       // Have the system draw and hit test the track for you -- Version 4.5 and later only
00111 
00112 // Values returned from HitTestFCurve
00113 #define HITCURVE_KEY        1   // Hit one or more keys
00114 #define HITCURVE_WHOLE      2   // Hit the curve (anywhere)
00115 #define HITCURVE_TANGENT    3   // Hit a tangent handle
00116 #define HITCURVE_NONE       4   // Didn't hit squat
00117 #define HITCURVE_ASKCLIENT  5   // Ask client to hit test fcurve.
00118 
00119 // These flags are passed into PaintFCurves, HitTestFCurves, and GetFCurveExtnents
00120 // They are filters for controllers with more than one curve
00121 // NOTE: RGBA controllers interpret X as red, Y as green, Z as blue, and A as yellow.
00122 #define DISPLAY_XCURVE      (1<<28)
00123 #define DISPLAY_YCURVE      (1<<29)
00124 #define DISPLAY_ZCURVE      (1<<30)
00125 #define DISPLAY_WCURVE      (1<<31)
00126 
00127 // Values returned from GetSelKeyCoords()
00128 #define KEYS_NONESELECTED   (1<<0)
00129 #define KEYS_MULTISELECTED  (1<<1)
00130 #define KEYS_COMMONTIME     (1<<2)  // Both of these last two bits
00131 #define KEYS_COMMONVALUE    (1<<3)  // could be set.
00132 
00133 // Flags passed to GetSelKeyCoords()
00134 #define KEYCOORDS_TIMEONLY      (1<<0)
00135 #define KEYCOORDS_VALUEONLY     (1<<1)
00136 
00137 // Variable definitions for SetSelKeyCoordsExpr()
00138 #define KEYCOORDS_TIMEVAR   _M("n")
00139 #define KEYCOORDS_VALVAR    _M("n")
00140 
00141 // Return values from SetSelKeyCoordsExpr()
00142 #define KEYCOORDS_EXPR_UNSUPPORTED  0   // Don't implement this method
00143 #define KEYCOORDS_EXPR_ERROR        1   // Error in expression
00144 #define KEYCOORDS_EXPR_OK           2   // Expression evaluated
00145 
00146 // Returned from NumKeys() if the animatable is not keyframeable
00147 #define NOT_KEYFRAMEABLE    -1
00148 
00149 // Flags passed to AdjustTangents
00150 #define ADJTAN_LOCK     (1<<0)
00151 #define ADJTAN_BREAK    (1<<1)
00152 
00153 // Flags passed to EditTrackParams
00154 #define EDITTRACK_FCURVE    (1<<0)  // The user is in the function curve editor.
00155 #define EDITTRACK_TRACK     (1<<1)  // The user is in one of the track views.
00156 #define EDITTRACK_SCENE     (1<<2)  // The user is editing a path in the scene.
00157 #define EDITTRACK_BUTTON    (1<<3)  // The user invoked by choosing the properties button. In this case the time parameter is NOT valid.
00158 #define EDITTRACK_MOUSE     (1<<4)  // The user invoked by right clicking with the mouse. In this case the time parameter is valid.
00159 
00160 
00161 // These are returned from TrackParamsType(). They define how the track parameters are invoked.
00162 #define TRACKPARAMS_NONE    0   // Has no track parameters
00163 #define TRACKPARAMS_KEY     1   // Entered by right clicking on a selected key
00164 #define TRACKPARAMS_WHOLE   2   // Entered by right clicking anywhere in the track.
00165 
00166 // Flags passed into RenderBegin
00167 #define RENDERBEGIN_IN_MEDIT   1   // Indicates that the render is occuring in the material editor.
00168