# Canvas (Javadocs: controlP5)
Date: 2014-04-27

controlP5

## Class Canvas

- java.lang.Object
- - controlP5.Canvas

    public abstract class Canvas
    extends java.lang.Object

Use a Canvas to draw custom graphics into a control window or the default sketch window. The Canvas is an abstract class and must be extended by your custom Canvas class, see the ControlP5canvas example for details.

+Example
  `

      /**
       * ControlP5 Canvas
       * The ControlWindowCanvas allow you to add custom graphics to
       * the default controlP5 renderer or a controlWindow rednerer.
       *
       * find a list of public methods available for the Canvas Controller
       * at the bottom of this sketch's source code
       *
       * by Andreas Schlegel, 2011
       * www.sojamo.de/libraries/controlp5
       *
       */

      import controlP5.*;

      ControlP5 cp5;

      ControlWindow controlWindow;

      Canvas cc;

      // MyCanvas, your Canvas render class
      class MyCanvas extends Canvas {

        int y;
        int mx = 0;
        int my = 0;
        public void setup(PGraphics pg) {
          y = 200;
        }

        public void update(PApplet p) {
          mx = p.mouseX;
          my = p.mouseY;
        }

        public void draw(PGraphics pg) {
          // renders a square with randomly changing colors
          // make changes here.
          pg.fill(100);
          pg.rect(mx-20, y-20, 240, 30);
          pg.fill(255);
          pg.text("This text is drawn by MyCanvas", mx,y);
        }
      }

      void setup() {
        size(400, 400);
        frameRate(30);
        cp5 = new ControlP5(this);

        // create a control window canvas and add it to
        // the previously created control window.
        cc = new MyCanvas();
        cc.pre(); // use cc.post(); to draw on top of existing controllers.
        cp5.addCanvas(cc); // add the canvas to cp5
      }

      void draw() {
        background(0);
        fill(60);
        rect(100, 100, 200, 200);
      }

      /*
       a list of all methods available for the ControlWindowCanvas Controller
       use ControlP5.printPublicMethodsFor(Canvas.class);
       to print the following list into the console.

       You can find further details about class Canvas in the javadoc.

       Format:
       ClassName : returnType methodName(parameter type)

       controlP5.Canvas : void moveTo(ControlWindow)
       controlP5.Canvas : void setup(PApplet)
       controlP5.Canvas : void draw(PApplet)
       java.lang.Object : String toString()
       java.lang.Object : boolean equals(Object)
       */

  `

### Field Summary

Fields
`static int` `POST`
`static int` `PRE`

### Constructor Summary

Constructors
Constructor and Description
`Canvas()`

### Method Summary

Methods
`abstract void` `draw(processing.core.PGraphics theGraphics)` controlWindowCanvas is an abstract class and therefore needs to be extended by your class.
`int` `mode()` get the drawing mode of a Canvas.
`void` `moveTo(ControlWindow theControlWindow)` move a canvas to another controlWindow
`void` `post()` set the drawing mode to POST.
`void` `pre()` set the drawing mode to PRE.
`void` `setMode(int theMode)`
`void` `setup(processing.core.PGraphics theGraphics)`
`void` `update(processing.core.PApplet theApplet)`
`ControlWindow` `window()`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### POST

    public static final int POST

See Also:
  Constant Field Values

#### PRE

    public static final int PRE

See Also:
  Constant Field Values

### Constructor Detail

#### Canvas

    public Canvas()

### Method Detail

#### draw

    public abstract void draw(processing.core.PGraphics theGraphics)

controlWindowCanvas is an abstract class and therefore needs to be extended by your class. draw(PApplet theApplet) is the only method that needs to be overwritten.

#### mode

    public final int mode()

get the drawing mode of a Canvas. this can be PRE or POST.

Returns:

#### moveTo

    public void moveTo(ControlWindow theControlWindow)

move a canvas to another controlWindow

Parameters:
  `theControlWindow` -

#### post

    public final void post()

set the drawing mode to POST.

#### pre

    public final void pre()

set the drawing mode to PRE. PRE is the default.

#### setMode

    public final void setMode(int theMode)

Parameters:
  `theMode` -

#### setup

    public void setup(processing.core.PGraphics theGraphics)

#### update

    public void update(processing.core.PApplet theApplet)

#### window

    public final ControlWindow window()