### Interface Info Availability LightWave® 6.0 Component Layout Header lwrender.h The interface info global returns information about the state of Layout's user interface. The data is read-only, but you can set the parameters using selection, navigation and display commands. Global Call
       LWInterfaceInfo *intinfo;
       intinfo = global( LWINTERFACEINFO_GLOBAL, GFUSE_TRANSIENT );
The global function returns a pointer to an LWInterfaceInfo.
       typedef struct st_LWInterfaceInfo {
          LWTime          curTime;
          const LWItemID *selItems;
          unsigned int  (*itemFlags) (LWItemID);
          LWFrame         previewStart, previewEnd, previewStep;
          int             dynaUpdate;
          void          (*schemaPos) (LWItemID, double *x, double *y);
          int           (*itemVis)   (LWItemID);
          unsigned int    displayFlags;
          unsigned int    generalFlags;
          int             boxThreshold;
          int           (*itemColor) (LWItemID);
          void          (*setItemColorIndex)  (LWItemID, int);
          void          (*setItemColorCustom) (LWItemID, double *);
          int             alertLevel;
          int             autoKeyCreate;
          void          (*defaultItemTypeColor) (LWItemType itemtype, float *color, int set);
          void          (*itemColorRgba)     (LWItemID, unsigned int state, float rgba[4]);
          float         (*itemIconScale)     (LWItemID);
       } LWInterfaceInfo;
  `curTime` The current animation time selected in the Layout interface. `selItems` A NULL-terminated array of item IDs for the items currently selected in the interface. `flags = itemFlags( item )` Returns a set of bit flags for the item. These can be any combination of the following: `LWITEMF_SELECTED` `LWITEMF_SHOWCHILDREN` `LWITEMF_SHOWCHANNELS` `LWITEMF_LOCKED` `previewStart, previewEnd, previewStep` The range and step size used by the frame slider and by Layout previews. These differ from the range and step for rendering, which are returned by the scene info global. `dynaUpdate` Contains the current state of Layout's Dynamic Update setting, which controls how frequently the interface is updated while the user makes changes. Possible values are: `LWDYNUP_OFF` `LWDYNUP_DELAYED` `LWDYNUP_INTERACTIVE` `schemaPos( item, x, y )` The `x` and `y` arguments receive the position of the item in schematic viewports. This and the `SchematicPosition` command can be used by plug-ins to rearrange the schematic views. `visibility = itemVis( item )` Returns a code describing how an item is drawn in the interface. For objects, this can be one of the following: `LWOVIS_HIDDEN` `LWOVIS_BOUNDINGBOX` `LWOVIS_VERTICES` `LWOVIS_WIREFRAME` `LWOVIS_FFWIREFRAME` `LWOVIS_SHADED` `LWOVIS_TEXTURED` `LWOVIS_TEXTURED_WIRE` This is the textured wire mode with combines the textured and front face wire-frame draw modes. Other item types are limited to `LWIVIS_HIDDEN` and `LWIVIS_VISIBLE`. `displayFlags` Returns the state of certain display options as bit fields combined using bitwise-or. When set, a bit indicates that the corresponding option is turned on for the display. `LWDISPF_MOTIONPATHS` `LWDISPF_HANDLES` `LWDISPF_IKCHAINS` `LWDISPF_CAGES` `LWDISPF_SAFEAREAS` `LWDISPF_FIELDCHART` `generalFlags` Returns the state of certain interface options as bit fields combined using bitwise-or. When set, a bit indicates that the corresponding option is turned on for the interface. `LWGENF_HIDETOOLBAR` `LWGENF_RIGHTTOOLBAR` `LWGENF_PARENTINPLACE` `LWGENF_FRACTIONALFRAME` `LWGENF_KEYSINSLIDER` `LWGENF_PLAYEXACTRATE` `LWGENF_AUTOKEY (LW7.5+)` `LWGENF_IKENABLE (rev.4+)` This indicates that IK (Inverse Kinematics) is enabled. `LWGENF_LMBITEMSELECT` `LWGENF_DOUBLECLICKBONEMODE` On when switching between bones and non-bones requires a double mouse click. `LWGENF_MCENABLE` Set when the use of motion controllers (other than IK) is enabled. `boxThreshold` The bounding box threshold. Objects with a number of points greater than this threshold are drawn initially as bounding boxes to speed up interaction. `color_index = itemColor( item )` Returns an index into the list of colors used to draw an item's wireframe.
  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
`setItemColorIndex( item, color_index ) (rev.4+)` This allows setting an item's user interface display color using a color index. This is not a surface color for final rendering. The `color_index` can be one of the 15 values defined above. You may also use a 24bit color (RGB) by setting the upper byte of a 32-bit value to 0x01. For example, yellow can be specified as 0x01FFFF00. It is preferred to use setItemColorCustom instead since custom colors will be supported in the future, whereas color indexes may not. `setItemColorCustom( item, color_val ) (rev.4+)` This allows setting an item's user interface display color using a floating point values from 0.0 to 1.0 for each of the red, green, and blue components. The `color_var` parameter is an array of doubles representing the red, green and blue components of the custom color. For example: yellow would be { 1.0, 1.0, 0.0}. `alertLevel` The alert level for information dialogs. This affects how the information is displayed. Possible values are: `LWALERT_BEGINNER` `LWALERT_INTERMEDIATE` `LWALERT_EXPERT` `autoKeyCreate (LW7.5+)` The auto key create mode state, defined as one of these values: `LWAKC_OFF` `LWAKC_MODIFIED` `LWAKC_ALL` `defaultItemTypeColor( itemtype, color, set )` This will get or set the default user interface display color for an item type. Set 'set' to 1 to set or '0' to get. The 'color' must be a float[3] array. Be aware that a float array is used here instead of double array. `itemColorRgba( item, state, rgba ) (LW9.5, LW9.6)` Gets the interface color of the item in the given state as floating point RGBA values. This takes into account if the item is selected or not, and if a custom color is used. The state is one if: `LWITEMCOL_CURRENT` The color of the item in its current state `LWITEMCOL_NORMAL` The color of the item in normal (non-selected) state `LWITEMCOL_SELECTED` The color of the item in selected state `scale = itemIconScale( item ) (LW9.5)` Returns the icon scale of the item. This is used to size the icon representation of the item in the viewports. Example This code fragment collects information about the currently selected items.
       #include <lwserver.h>
       #include <lwrender.h>

       LWInterfaceInfo *intinfo;
       LWItemInfo *iteminfo;
       LWTime t;
       LWItemID *id;
       int i, f, type;

       intinfo = global( LWINTERFACEINFO_GLOBAL, GFUSE_TRANSIENT );
       iteminfo = global( LWITEMINFO_GLOBAL, GFUSE_TRANSIENT );
       if ( !intinfo || !iteminfo ) return AFUNC_BADGLOBAL;

       t = intinfo->curTime;
       id = intinfo->selItems;
       for ( i = 0; id[ i ]; i++ ) {
          f = intinfo->itemFlags( id[ i ] );
          type = iteminfo->type( id[ i ] );
          switch ( type ) {
             case LWI_OBJECT:
                ...