.section Widgets
.topic widget.canvas
.title Canvas
.toc 0 Canvas
.index Canvas
.index wgtCanvas
.index wgtCanvasClear
.index wgtCanvasDrawLine
.index wgtCanvasDrawRect
.index wgtCanvasFillRect
.index wgtCanvasFillCircle
.index wgtCanvasSetPixel
.index wgtCanvasGetPixel
.index wgtCanvasDrawText
.index wgtCanvasSave
.index wgtCanvasLoad

.h2 Canvas

A freeform drawing surface with a fixed-size pixel buffer. Provides drawing primitives (lines, rectangles, circles, text, individual pixels) and supports save/load to BMP files. Mouse interaction is available via a callback.

Header: widgets/widgetCanvas.h

.h3 Creation

.code
WidgetT *cv = wgtCanvas(parent, 320, 200);
.endcode

.h3 Macros

.index wgtCanvasSetPenColor
.index wgtCanvasSetPenSize
.index wgtCanvasSetMouseCallback

.table
  Macro                                    Description
  -----                                    -----------
  wgtCanvas(parent, w, h)                  Create a canvas with the given pixel dimensions.
  wgtCanvasClear(w, color)                 Fill the entire canvas with a solid color.
  wgtCanvasSetPenColor(w, color)           Set the drawing pen color.
  wgtCanvasSetPenSize(w, size)             Set the drawing pen size in pixels.
  wgtCanvasDrawLine(w, x0, y0, x1, y1)    Draw a line from (x0,y0) to (x1,y1).
  wgtCanvasDrawRect(w, x, y, width, height)    Draw a rectangle outline.
  wgtCanvasFillRect(w, x, y, width, height)    Draw a filled rectangle.
  wgtCanvasFillCircle(w, cx, cy, radius)   Draw a filled circle.
  wgtCanvasSetPixel(w, x, y, color)        Set a single pixel to the given color.
  wgtCanvasGetPixel(w, x, y)              Get the color of a single pixel.
  wgtCanvasDrawText(w, x, y, text)         Draw text at the given position using the current pen color.
  wgtCanvasSetMouseCallback(w, cb)         Set a mouse interaction callback. Signature: void (*cb)(WidgetT *w, int32_t cx, int32_t cy, bool drag). Receives canvas-relative coordinates and whether the mouse is being dragged.
  wgtCanvasSave(w, path)                   Save the canvas contents to a BMP file.
  wgtCanvasLoad(w, path)                   Load a BMP file into the canvas.
.endtable

.h3 Events

.table
  Callback                                     Description
  --------                                     -----------
  onClick                                      Fires when the canvas is clicked.
  Mouse callback (via wgtCanvasSetMouseCallback)   Fires on mouse down and drag with canvas-local coordinates.
.endtable

.h3 Methods (BASIC Interface)

.table
  Method       Description
  ------       -----------
  Clear        Clear the canvas to a given color.
.endtable
