# Grasshopper2.UI.Canvas namespace

Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

## Interfaces

- [IHint](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.ihint.md): Base interface for hints drawn on the canvas.
- [INestedNavigation](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.inestednavigation.md): Implement this interface on your [IAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.iattributes.md) class to participate in standard canvas object navigation.
- [INestedScroller](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.inestedscroller.md): Implement this interface on your [IAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.iattributes.md) class to participate in standard canvas object scrolling.

## Classes

- [BreadCrumbList](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.breadcrumblist.md): A sequence of nested documents exposed via a breadcrumb control.
- [Canvas](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvas.md): Canvas control for hosting Grasshopper documents.
- [CanvasActions](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvasactions.md)
- [CanvasBackgroundPaintEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvasbackgroundpainteventargs.md): Event arguments used for canvas background painting.
- [CanvasPaintEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvaspainteventargs.md): Standard canvas paint event arguments.
- [CanvasTextField](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvastextfield.md): A canvas-native, single-line editable text field.
- [CanvasTextField.CharTints](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvastextfield.chartints.md): A resolved table of per-grapheme colours, and the [CanvasTextField.Tinting](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvastextfield/tinting.md) delegate which reads it. Construct one per field and keep it for the lifetime of the field; call [CanvasTextField.CharTints.Prepare(string, Color)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvastextfield.chartints/prepare.md) once per draw and assign the result to [CanvasTextField.Tinting](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvastextfield/tinting.md). The point of this class is that the resolver sees the entire string at once, so it can do as much parsing as it likes - multi-character operators, symbols whose meaning depends on their context, colour names resolved to the colour they name - and it only runs again when the text or the text colour actually change. The per-grapheme callback the field ends up invoking is a bare array lookup. Not thread safe, and doesn't need to be: it is only touched while drawing.
- [CommandTile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.commandtile.md): A command tile.
- [DiffCanvas](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.diffcanvas.md): A control for viewing differences between two files.
- [DocumentBag](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentbag.md): A collection of documents, one of which is designated as the 'head'.
- [DocumentBagEventArgs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentbageventargs.md): Event arguments used in the [DocumentBag](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentbag.md).
- [DocumentStack](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentstack.md): A stack of nested documents. A [DocumentBag](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentbag.md) contains a collection of [DocumentStack](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentstack.md) objects. Each stack contains a root document which is (ideally) associated with a *.ghz file. Then when nested documents are opened, they are pushed onto the stack. When editing a cluster, inside a cluster inside the root document, the stack will contain three documents, the innermost one being at the head.
- [FileTile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.filetile.md): A tile on the canvas used for most-recent file access.
- [Hint<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.hint-1.md): A hint which is occasionally displayed on the canvas.
- [ObjectBrowserForm](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.objectbrowserform.md)
- [ObjectDragInteraction](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.objectdraginteraction.md): Interaction object for dragging document objects around on a canvas.
- [ObjectPreviewForm](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.objectpreviewform.md)
- [PopupInstantiatorForm](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.popupinstantiatorform.md): Pop up window for searching installed document objects and inserting them into the canvas.
- [ScrollBar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.scrollbar.md): Abstract base class for horizontal and vertical scrollers.
- [ScrollX](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.scrollx.md): Horizontal implementation of [ScrollBar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.scrollbar.md).
- [ScrollY](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.scrolly.md): Vertical implementation of [ScrollBar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.scrollbar.md).
- [SnappingAction](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.snappingaction.md): A single resolved snapping action.
- [SnappingConstraints](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.snappingconstraints.md): A collection of snapping constraints used during object dragging.
- [SnappingSettings](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.snappingsettings.md): Collects all snapping constraint settings.
- [StatusBar](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.statusbar.md)
- [Tile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.tile.md): Base class for canvas tiles.
- [TileSet](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.tileset.md): A collection of tiles.
- [WireShape](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.wireshape.md): A shape representing a wire connecting two parameters.
- [WireShapeDefault](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.wireshapedefault.md): A shape representing a wire connecting two parameters.

## Enums

- [CanvasTextField.Syntax](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.canvastextfield.syntax.md): The broad syntactic roles a character can play inside a field. Each field classifies its own characters, since different notations disagree about what a given character means - a '*' is a wildcard in one and a multiplication in another - but they all draw the same roles in the same colours.
- [CursorMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.cursormode.md): High-level cursor modes the canvas can be in. The mode determines the cursor displayed and how subsequent input is interpreted. When the mode is [CursorMode.Normal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.cursormode.md) the per-element cursor logic in the mouse-move handler runs as usual; in any other mode the modal cursor takes precedence.
- [DocumentBagEventType](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.documentbageventtype.md): Enumerates the possible types of document based events.
- [DraggingMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.draggingmode.md): Enumerates the various constraints on shape drag motion.
- [DragPickingMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.dragpickingmode.md): Enumerates the various selection contexts.
- [MotionType](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.motiontype.md): Enumerates the possible navigation types.
- [ObjectBrowserForm.ReviewState](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.objectbrowserform.reviewstate.md)
- [OpenDocumentOptions](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.opendocumentoptions.md): Various options for loading documents in the canvas.
- [SnappingRule](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.snappingrule.md): Enumerates the possible snapping edges.
- [TileKind](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.canvas.tilekind.md): Type of canvas tiles.
