Rhino C++ API  8.13
Public Member Functions | Friends | List of all members
CRhinoLightTable Class Reference

#include <rhinoSdkLight.h>

Inheritance diagram for CRhinoLightTable:
ON_SimpleArray< CRhinoLight * >

Public Member Functions

 ~CRhinoLightTable ()
 
int AddLight (const ON_Light &light, const ON_3dmObjectAttributes *attributes=0)
 
const CRhinoLightDefaultLight () const
 
bool DeleteLight (int light_index, bool bQuiet)
 
bool DeleteLights (int light_index_count, const int *light_index, bool bQuiet)
 
CRhinoDocDocument () const
 
void DrawWireframeIcons (CRhinoDisplayPipeline &vp) const
 
int FindLight (const wchar_t *light_name, BOOL32 bIgnoreDeletedLights=TRUE, int first_light_index=0) const
 
int FindLight (ON_UUID light_id, bool bIgnoreDeleted=true) const
 
int GetLightingModel (ON_ObjectArray< ON_Light > &lights, int model) const
 
void GetSortedList (ON_SimpleArray< const CRhinoLight * > &, bool=false) const
 
void GetUnusedLightName (ON_wString &result, const wchar_t *lpsPrefix=NULL) const
 
int LightCount () const
 
void ListTable (ON_TextLog &text_log, unsigned int level_of_detail) const
 
bool ModifyLight (const ON_Light &light, int light_index, BOOL32 bEnableUndo=TRUE, BOOL32 bQuiet=FALSE)
 
const CRhinoLightoperator[] (int light_index) const
 
void SetRemapIndex (int, int)
 
void Sort (int(*compare)(const CRhinoLight *, const CRhinoLight *, void *), int(*cull)(const CRhinoLight *, void *), void *p=0)
 
const class CRhinoDocTableReferenceTableReference () const
 
bool UndeleteLight (int light_index)
 
bool UndoModifyLight (int light_index, unsigned int ur_sn=0)
 
ON_BoundingBox WireframeIconsBoundingBox (const CRhinoViewport *viewport) const
 

Friends

class CRhinoDoc
 

Constructor & Destructor Documentation

◆ ~CRhinoLightTable()

CRhinoLightTable::~CRhinoLightTable ( )

Member Function Documentation

◆ AddLight()

int CRhinoLightTable::AddLight ( const ON_Light light,
const ON_3dmObjectAttributes attributes = 0 
)

Description: Adds a new light with specified definition to the light table.

Parameters: light - [in] definition of new light. The information in light is copied. If light.LightName() is empty the a unique name of the form "Light 01" will be automatically created. attributes - [in] NULL or attributes (layer, etc.) for light See remarks for details about name.

Returns: @untitled table >=0 index of new light -1 light not added because a light with that name already exists.

Remarks: If attributes is not NULL, attributes->m_name is ignored. light.LightName() specifies the light's name.

In some cases, calling AddLight() can cause the memory references previously returned by operator[] and CurrentLight() to become invalid.

◆ DefaultLight()

const CRhinoLight& CRhinoLightTable::DefaultLight ( ) const

◆ DeleteLight()

bool CRhinoLightTable::DeleteLight ( int  light_index,
bool  bQuiet 
)

Description: Deletes light

Parameters: light_index - [in] zero based index of light to delete. This must be in the range 0 <= light_index < LightCount(). bQuiet - [in] If TRUE, no warning message box appears if a light the light cannot be deleted because it is the current light or it contains active geometry.

Returns: TRUE if successful. FALSE if light_index is out of range or the the light cannot be deleted because it is the current light or because it light contains active geometry.

◆ DeleteLights()

bool CRhinoLightTable::DeleteLights ( int  light_index_count,
const int *  light_index,
bool  bQuiet 
)

Description: Deletes multiple lights

Parameters: light_index_count - [in] length of light_index[] array. light_index - [in] array zero based indices of lights to delete. The indices must be in the range 0 <= light_index < LightCount(). bQuiet - [in] If TRUE, no warning message box appears if a light the light cannot be deleted because it is the current light or it contains active geometry.

Returns: TRUE if successful. FALSE if light_index is out of range or the the light cannot be deleted because it is the current light or because it light contains active geometry.

◆ Document()

CRhinoDoc& CRhinoLightTable::Document ( ) const

Description: Light tables store the list of lights in a Rhino document.

Returns: CRhinoDocument that owns this light table.

◆ DrawWireframeIcons()

void CRhinoLightTable::DrawWireframeIcons ( CRhinoDisplayPipeline vp) const

Description: Draw wireframe icons for lights that are visible and not deleted. Parameters: vp - [in]

◆ FindLight() [1/2]

int CRhinoLightTable::FindLight ( const wchar_t *  light_name,
BOOL32  bIgnoreDeletedLights = TRUE,
int  first_light_index = 0 
) const

Description: Finds a light with the given name. (There may be more than one light with the same name) Parameters: light_name - [in] name of light to search for. The search ignores case. bIgnoreDeletedLights - [in] TRUE means don't search deleted lights. first_light_index - [in] searching begins at this index. Example:

/ Find all undeleted lights named "Fred Smith"

      const wchar_t* sFredSmith = L"Fred Smith";
      ON_SimpleArray<int> index_list;
      BOOL32 bIgnoreDeletedLights = TRUE;
      for(int light_index = 0; 
          light_index >= 0 && light_index < doc->m_light_table.LightCount(); 
          light_index++)
      {
        light_index = doc->m_light_table.Find(sFredSmith,bIgnoreDeletedLights,light_index);
        if ( light_index >= 0 )
          index_list.Append(light_index);
      }
      RhinoApp.Print(L"Found %d lights named \"%s\"\n",index_list.Count(), sFredSmith );

Returns: @untitle table >=0 index of the light with the given name -1 no light has the given name

◆ FindLight() [2/2]

int CRhinoLightTable::FindLight ( ON_UUID  light_id,
bool  bIgnoreDeleted = true 
) const

◆ GetLightingModel()

int CRhinoLightTable::GetLightingModel ( ON_ObjectArray< ON_Light > &  lights,
int  model 
) const

Description: Gets lighting model defined by the light table. Parameters: lights - [out] world coordinate lighting model returned here. model - [in] model used for the lighting 0 - lighting model for wireframe display mode is returned 1 - default lighting model for a shaded display mode is returned 2 - lighting model for lighting the Scene the lights returned are the ones defined and placed in the scene Returns: number of lights.
See Also: CRhinoView::GetLightingModel

◆ GetSortedList()

void CRhinoLightTable::GetSortedList ( ON_SimpleArray< const CRhinoLight * > &  ,
bool  = false 
) const

Description: Gets an array of pointers to lights that is sorted by the values of CRhinoLight::m_sort_index.

Parameters: sorted_list - [out] this array is returned with length LightCount() and is sorted by the values of CRhinoLight::m_sort_index. bIgnoreDeleted - [in] TRUE means don't include deleted lights.

Remarks: Use Sort() to set the values of m_sort_index.

◆ GetUnusedLightName()

void CRhinoLightTable::GetUnusedLightName ( ON_wString result,
const wchar_t *  lpsPrefix = NULL 
) const

Description: Gets unsed light name used as default when creating new lights

Parameters: result - [out] this is the wString which receives new name

◆ LightCount()

int CRhinoLightTable::LightCount ( ) const

Returns: Number of lights in the light table, including deleted lights.

◆ ListTable()

void CRhinoLightTable::ListTable ( ON_TextLog text_log,
unsigned int  level_of_detail 
) const

◆ ModifyLight()

bool CRhinoLightTable::ModifyLight ( const ON_Light light,
int  light_index,
BOOL32  bEnableUndo = TRUE,
BOOL32  bQuiet = FALSE 
)

Description: Modify light settings

Parameters: light - [in] new settings. This information is copied. light_index - [in] zero based index of light to set. This must be in the range 0 <= light_index < LightCount(). bEnableUndo - [in] if TRUE, previous settings are saved for possible undo. bQuiet - [in] if TRUE, information message boxes pop up when illegal changes are attempted.

Returns: TRUE if successful. FALSE if light_index is out of range.

◆ operator[]()

const CRhinoLight& CRhinoLightTable::operator[] ( int  light_index) const

Description: Conceptually, the light table is an array of LightCount() lights. The operator[] can be used to get individual lights. A light is either active or deleted and this state is reported by CRhinoLight::IsDeleted().

Parameters: light_index - zero based array index

Returns: Reference to the light. If light_index is out of range, the current light is returned. Note that this reference may become invalid after AddLight() is called.

◆ SetRemapIndex()

void CRhinoLightTable::SetRemapIndex ( int  ,
int   
)

◆ Sort()

void CRhinoLightTable::Sort ( int(*)(const CRhinoLight *, const CRhinoLight *, void *)  compare,
int(*)(const CRhinoLight *, void *)  cull,
void *  p = 0 
)

Description: Use this to set CRhinoLight::m_sort_index so that the values of m_sort_index run from 0 to LightCount()-1 and compare(light_table[i],light_table[j]) < 0 ) implies light_table[i].m_sort_index < light_table[j].m_sort_index.

Parameters: compare - [in] compare function with prototype int compare(const CRhinoLight* arg1,const CRhinoLight* arg2,void* p). that returns <0 if arg1<arg2, 0 if arg1=arg2, and >0 if arg1>arg2. cull - [in] optional filter function with prototype BOOL32 cull(const CRhinoLight* arg,void* p). that returns TRUE if the light should be ignored when sorting. Lights that are ignored are not included in the list returned by GetSortedList(). Pass 0 if you do not need to cull lights p - [in] pointer passed as last argument to compare() and cull().

Remarks: After calling Sort(), you can repeatedly call GetSortedList() to get a sorted list of CRhinoLight pointers. Sort() and GetSortedList() do not modify the order or persistent information in the light table. They are intended to be used to get sorted lists of lights for dialogs, etc.

◆ TableReference()

const class CRhinoDocTableReference& CRhinoLightTable::TableReference ( ) const

◆ UndeleteLight()

bool CRhinoLightTable::UndeleteLight ( int  light_index)

Description: Undeletes a light that has been deleted by DeleteLight().

Parameters: light_index - [in] zero based index of light to undelete. This must be in the range 0 <= light_index < LightCount().

Returns: TRUE if successful.

◆ UndoModifyLight()

bool CRhinoLightTable::UndoModifyLight ( int  light_index,
unsigned int  ur_sn = 0 
)

Description: If the light has been modified and the modification can be undone, then UndoModify() will restore the light to its previous state.

Returns: TRUE if this light had been modified and the modifications were undone.

See Also: IsModified.

◆ WireframeIconsBoundingBox()

ON_BoundingBox CRhinoLightTable::WireframeIconsBoundingBox ( const CRhinoViewport viewport) const

Description: Get bounding box of wireframe icons for lights that are visible and not deleted. Returns: Bounding box of wireframe icons for lights that are visible and not deleted.

Friends And Related Function Documentation

◆ CRhinoDoc

friend class CRhinoDoc
friend