## 4.28 The 3D Canvas Widget

The 3D-canvas widget realizes the EZ graphics library. To each 3DCanvas widget, there is an associated data structure called the graphics context which contains the entire state attributes of the graphics library. The graphics context is essentially private to the 3D-canvas widget and hence multiple 3Dcanvases is allowed in an application.

### Widget Info

Symbolic widget type | EZ_WIDGET_3D_CANVAS
Default class name | "ThreeDCanvas"
Default instance name | "threeDCanvas"

### Widget Interface Routines

`void EZ_Set3DCanvas( EZ_Widget *canvas);`

make a canvas the current active one (GL context switch).

`void EZ_Configure3DCanvas( EZ_Widget *widget);`

update the state variables of the graphics context associated to a 3d canvas.

`void EZ_GLConfig(void);`

update the state variables of the current graphics context.

`void EZ_Get3DCanvasSize(EZ_Widget *widget, int *w, int *h);`

return the dimension of a 3d canvas.

`XImage *EZ_Read3DCanvas2XImage(EZ_Widget *widget);`

save the graphics window to an XImage.

`void EZ_Save3DCanvas2PPMImage(EZ_Widget *widget, char *fname);`

save the grahics window to disk as a PPM image.

`void EZ_Save3DCanvas2PS(EZ_Widget *widget, char *fname);`

save the graphics window to postscript.

### Screenshot

### Resources

Config_Option | ResourceName | DefaultValue
EZ_CLASS | class | `ThreeDCanvas`
EZ_NAME | name | `threeDCanvas`

EZ_X | x |
EZ_Y | y |
EZ_WIDTH | width |
EZ_HEIGHT | height |

EZ_LOCATION | location |
EZ_SIZE | size |
EZ_GEOMETRY | geometry |

EZ_WIDTH_HINT | widthHint |
EZ_HEIGHT_HINT | heightHint |
EZ_SIZE_HINT | sizeHint |

EZ_PROPAGATE | propagate | `true`

EZ_DESTROY_CALLBACK | N/A | `null null`
EZ_EVENT_HANDLER | N/A | `null null`

EZ_CLIENT_PTR_DATA | N/A | `null`
EZ_CLIENT_INT_DATA | clientIntData | `0`

EZ_BACKING_STORE | backingStore | `true`
EZ_RESERVE_MENU_BUTTON | reserveMenuButton | `false`

HTML Documentation Maintainance:`Arturo Espinosa <arturo@nuclecu.unam.mx>`