Painter - graphics output
#include <InterViews/painter.h>
Painter is a class that provides ``immediate-mode''
graphics operations for drawing on a canvas. The state of a painter defines
the graphics context for the drawing operations and includes a brush,
foreground and background colors, a fill pattern and mode, a text font, a
text style, an output origin and current position, and a transformation
matrix.
- Painter(Painter*
= stdpaint)
- Create a new painter and copy its state from the given painter.
- void
SetBrush(Brush*)
- Brush*
GetBrush()
- Set or return the painter's brush. Default is the predefined brush
``single''.
- void SetColors(Color*
fg, Color* bg)
- Color*
GetFgColor()
- Color*
GetBgColor()
- Set or return the painter's colors. If either argument to SetColors is
nil, then the corresponding color is not changed. Defaults are ``black''
for foreground and ``white'' for background.
- void
SetFont(Font*)
- Font*
GetFont()
- Set or return the painter's text font. Default is the predefined font
``stdfont''.
- void SetStyle(int
style)
- int GetStyle()
- Set or get the painter's text style. A text style is a bit vector that can
be assembled from the predefined constants Plain, Boldface,
Underlined, and Reversed. Default is Plain.
- void
SetPattern(Pattern*)
- Pattern*
GetPattern()
- void FillBg(boolean
mode)
- boolean
BgFilled()
- Set or return the painter's fill pattern and mode. If the mode is
true, fill operations will set pixels corresponding to ones in the
current fill pattern to the foreground color and pixels corresponding to
zeros to the background color. If false, then only foreground
pixels will be set. Default pattern is ``solid''; default mode is
true.
- void SetOrigin(int x0,
int y0)
- void GetOrigin(int&
x0, int& y0)
- Set or return the origin by which all coordinates are offset. Default is
(0, 0).
- void Translate(float
dx, float dy)
- void Rotate(float
angle)
- void Scale(float x,
float y)
- void
SetTransformer(Transformer*)
- Transformer*
GetTransformer()
- Coordinates passed to drawing operations are transformed according to the
current origin, translation (cumulative), rotation, and scale factor.
Internally, a transformation matrix is stored that can be directly set and
accessed using SetTransformer and GetTransformer. The default transformer
is nil, meaning no transformations are performed.
- void SetPlaneMask(int
mask)
- Set which bit planes are affected by drawing operations. If the Kth bit of
mask is set, then display operations will draw on plane K.
- void
SetOverwrite(boolean)
- Set whether a painter is allowed to write in subcanvases. If true, drawing
operations will be able to write over the canvases of component
interactors. If false, drawing operations will be clipped by any
subcanvases. The default is false.
- void Clip(Canvas*,
Coord x1, Coord y1, Coord x2, Coord y2)
- void
NoClip()
- Clip restricts output operations to the specified region of the canvas.
NoClip removes the restriction so that operations affect the entire
canvas. Only one clipping region may be in effect at a time.
- void MoveTo(Coord x,
Coord y)
- Set the current output position. The output position is used and updated
by Text and CurveTo.
- void Curve(Canvas*,
Coord x0, y0, x1, y1, x2, y2, x3, y3)
- void CurveTo(Canvas*,
Coord x1, y1, x2, y2, x3, y3)
- Paint a Bezier curve on the canvas from the first point to the last point
(but not going through the intermediate control points). The curve will
lie within the polygon formed by the four points. CurveTo uses the current
position for the first point.
- void BSpline(Canvas*,
Coord x[], y[], int n)
- void
ClosedBSpline(Canvas*, Coord x[], y[], int n)
- void
FillBSpline(Canvas*, Coord x[], y[], int n)
- Draw the B-spline defined by the n control vertices. If closed or
filled, the last point is connected to the first point.
- void Circle(Canvas*,
Coord x, y, int r)
- void
FillCircle(Canvas*, Coord x, y, int radius)
- Draw a circle with center (x, y) and radius
r.
- void Ellipse(Canvas*,
Coord x, y, int xr, int yr)
- void
FillEllipse(Canvas*, Coord x, y, int xr, int yr)
- Draw an ellipse with center (x, y), horizontal radius
xr, and vertical radius yr.
- void Line(Canvas*,
Coord x1, y1, x2, y2)
- void
MultiLine(Canvas*, Coord x[], y[], int n)
- void Polygon(Canvas*,
Coord x[], y[], int n)
- void
FillPolygon(Canvas*, Coord x[], y[], int n)
- Draw a path using the current brush and colors. The Line operation draws a
vector between two points (inclusive); MultiLine draws a number of
connected vectors; Polygon draws a closed set of vectors; FillPolygon
fills the area inside a polygon using the current fill pattern and
colors.
- void Point(Canvas*,
Coord x, y)
- void
MultiPoint(Canvas*, Coord x[], y[], int n)
- Set a point or set of points to the current foreground color.
- void Rect(Canvas*,
Coord x1, y1, x2, y2)
- void
FillRect(Canvas*, Coord x1, y1, x2, y2)
- void
ClearRect(Canvas*, Coord x1, y1, x2, y2)
- Draw a rectangle with opposite corners specified by
(x1, y1) and (x2, y2). FillRect
fills the rectangle using the current pattern and colors; ClearRect fills
the rectangle with the background color.
- void Text(Canvas*,
const char* str, Coord x, Coord y)
- void Text(Canvas*,
const char* str, int n, Coord x, Coord y)
- void Text(Canvas*,
const char* str)
- void Text(Canvas*,
const char* str, int n)
- Draw a string or substring of text using the current Font and text style.
The (x, y) coordinates specify the lower-left corner
of the bounding box of the text. The width of the bounding box is the
width of the string as reported by the Font::Width operation, and the
height of the bounding box is the Font height. Most fonts will result in
output which only affects pixels within the bounding box. The current
transformation matrix is applied to both the positions and the shapes of
characters drawn. If the matrix specifies a transformation involving
rotation or scaling, the resulting operation may proceed much more slowly
than normal. If background fill mode is on, then the characters are drawn
in the foreground color, and other pixels within the bounding box are set
to the background color. If background fill mode is off, only the
foreground pixels are set. If no coordinates are specified, then the
current position (defined by MoveTo) is used and updated to reflect the
lower-right corner of the bounding box.
- void Stencil(Canvas*,
Coord x, Coord y, Bitmap* image, Bitmap* mask = nil)
- Paint foreground and background colors through a stencil formed by
positioning the image and mask Bitmaps with their origins at the point
(x, y). Foreground color is painted where the
image Bitmap has a true value and background color where image is
false. However, only pixels corresponding to a true value in the mask
Bitmap are affected. A nil mask is equivalent to a mask of the same
size and shape as image and containing all true values. The current
transformation matrix is applied to both the image and mask Bitmaps. If
the matrix specifies a transformation involving rotation or scaling, the
resulting operation may proceed much more slowly than normal.
- void
RasterRect(Canvas*, Coord x, Coord y, Raster*)
- Render the Raster with its lower-left corner at the position
(x, y). The current transformation matrix is applied
to the Raster. If the matrix specifies a transformation involving rotation
or scaling, the resulting operation may proceed much more slowly than
normal.
- void Read(Canvas*,
void*, Coord x1, y1, x2, y2)
- void Write(Canvas*,
const void*, Coord x1, y1, x2, y2)
- void Copy(Canvas*
src, Coord x1, y1, x2, y2, Canvas* dst, Coord x0, y0)
- Read copies a region of a canvas into memory. Write copies data from
memory to a region of a canvas. Copy reads a region of one canvas and
writes the data into a region of another canvas (or within a canvas if
src and dst are the same). The point
(x0, y0) is the lower-left corner of the destination
region. Note that Read and Write are superseded by
operations that use Rasters.