---
name: "SoXtMaterialEditor"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoXtMaterialEditor"
---

# SoXtMaterialEditor(3iv)

Component which lets you edit a material interactively

## NAME

SoXtMaterialEditor — Component which lets you edit a material interactively

## INHERITS FROM

SoXtComponent \> SoXtMaterialEditor

## SYNOPSIS

**#include \<Inventor/Xt/SoXtMaterialEditor.h\>**

**typedef void**	**SoXtMaterialEditorCB(void \*userData, const SoMaterial \*mtl)**

**enum UpdateFrequency {** **SoXtMaterialEditor::CONTINUOUS**\
 	send updates with every mouse motion\
 **SoXtMaterialEditor::AFTER\_ACCEPT**\
 	only send updates after user hits accept button\
 **}**

Methods from class SoXtMaterialEditor:

	**SoXtMaterialEditor(Widget parent = NULL, const char \*name = NULL, SbBool buildInsideParent = TRUE)**\
 	**~SoXtMaterialEditor()**\
 **void**	**attach(SoMaterial \*material, int index = 0)**\
 **void**	**detach()**\
 **SbBool**	**isAttached()**\
 **void**	**addMaterialChangedCallback(SoXtMaterialEditorCB \*f, void \*userData = NULL)**\
 **void**	**removeMaterialChangedCallback(SoXtMaterialEditorCB \*f, void \*userData = NULL)**\
 **void**	**setUpdateFrequency(SoXtMaterialEditor::UpdateFrequency freq)**\
 **SoXtMaterialEditor::UpdateFrequency**\
 	**getUpdateFrequency()**\
 **void**	**setMaterial(const SoMaterial &mtl)**\
 **const SoMaterial &**	**getMaterial() const**

Methods from class SoXtComponent:

**virtual void**	**show()**\
 **virtual void**	**hide()**\
 **SbBool**	**isVisible()**\
 **Widget**	**getWidget() const**\
 **SbBool**	**isTopLevelShell() const**\
 **Widget**	**getShellWidget() const**\
 **Widget**	**getParentWidget() const**\
 **void**	**setSize(const SbVec2s &size)**\
 **SbVec2s**	**getSize()**\
 **Display \***	**getDisplay()**\
 **void**	**setTitle(const char \*newTitle)**\
 **const char \***	**getTitle() const**\
 **void**	**setIconTitle(const char \*newIconTitle)**\
 **const char \***	**getIconTitle() const**\
 **void**	**setWindowCloseCallback(SoXtComponentCB \*func, void \*data = NULL)**\
 **static SoXtComponent \***	**getComponent(Widget w)**\
 **const char \***	**getWidgetName() const**\
 **const char \***	**getClassName() const**

## DESCRIPTION

**This class is used to edit the material properties of an SoMaterial** node. The editor can also directly be used using callbacks instead of attaching it to a node. The component consists of a render area displaying a test sphere, some sliders, a set of radio buttons, and a menu. The sphere displays the current material being edited. There is one slider for each material coefficient. Those fields are ambient, diffuse, specular, emissive (all of which are colors); and transparency and shininess (which are scalar values). A color editor can be opened to edit the color slider base color. A material list displays palettes of predefined materials from which to choose.

The editor can currently be attached to only one material at a time. Attaching two different materials will automatically detach the first one before attaching the second.

## METHODS

	**SoXtMaterialEditor(Widget parent = NULL, const char \*name = NULL, SbBool buildInsideParent = TRUE)**\
 	**~SoXtMaterialEditor()**\
 Constructor and destructor.

**void**	**attach(SoMaterial \*material, int index = 0)**\
 **void**	**detach()**\
 Attach/detach the editor to a material node and edit the material of the given index.

**SbBool**	**isAttached()**\
 Returns TRUE if the editor is attached.

**void**	**addMaterialChangedCallback(SoXtMaterialEditorCB \*f, void \*userData = NULL)**\
 **void**	**removeMaterialChangedCallback(SoXtMaterialEditorCB \*f, void \*userData = NULL)**\
 Additional way of using the material editor, by registering a callback which will be called whenever the material changes (check the **UpdateFrequency** to find when the callbacks will be called).

**void**	**setUpdateFrequency(SoXtMaterialEditor::UpdateFrequency freq)**\
 **SoXtMaterialEditor::UpdateFrequency**\
 	**getUpdateFrequency()**\
 Sets/gets the update frequency. See the **UpdateFrequency** enum declaration.

**void**	**setMaterial(const SoMaterial &mtl)**\
 **const SoMaterial &**	**getMaterial() const**\
 Set a new material value, and get the current material value.

## RESOURCES

```
*SoXtMaterialEditor.tile1Color: #4c4c4c (color name or hex value)
*SoXtMaterialEditor.tile2Color: #999999 (color name or hex value)
*SoXtMaterialEditor.light1Color: white (color name or hex value)
*SoXtMaterialEditor.light2Color: white (color name or hex value)
*SoXtMaterialEditor.updateFrequency: continuous (continuous | manual)
```

## SEE ALSO

**SoXtComponent, SoXtMaterialList, SoXtDirLightEditor, SoMaterial**
