world.WindowBezier

MUSHclient script function (Method) — introduced in version 4.34

Draws a Bézier curve in a miniwindow

Prototype

long WindowBezier(BSTR WindowName, BSTR Points, long PenColour, long PenStyle, long PenWidth);

Data type meanings

Description

Draws one or more Bézier splines. This function draws cubic Bézier splines by using the endpoints and control points specified by the Points parameter. The first spline is drawn from the first point to the fourth point by using the second and third points as control points. Each subsequent spline in the sequence needs exactly three more points: the end point of the previous spline is used as the starting point, the next two points in the sequence are control points, and the third is the end point.

Note that changes to miniwindows will not become visible until the output window is redrawn. This happens when new (visible) lines arrive from the MUD, or if you call WindowShow, or Redraw.

Parameters:

WindowName - the name of an existing miniwindow.

Points - a string consisting of pairs of numbers, one for each point, in the format x1,y1,x2,y2 ...

For example: "20,50,180,50" would specify two points, one at 20,50 and one at 180,50.

You must have at least 4 points (the start, and 3 points per spline), which is 8 numbers. The number of numbers in the string must be even (divisible by two), as it takes a pair of numbers to specify one point. Also, since you need 3 points per spline, the number of numbers in the Points string must have a remainder of 2 when divided by 6 (3 points per spline, plus the start point).

PenColour - the RGB colour for this pen

PenStyle - what style of pen to use:

0 - solid (an unbroken pen)
1 - dash: -------
2 - dot: .......
3 - dashdot: _._._._
4 - dashdotdot: _.._.._
5 - null (no pen)
6 - insideframe - a solid pen, drawn inside the shape

Also you can add into the style:

0x0000 - round ends (0 = the default)
0x0100 - square ends (256)
0x0200 - flat ends (512)

0x0000 - round joins (0 = the default)
0x1000 - bevel joins (4096)
0x2000 - miter joins (8192)

PenWidth - the width of the pen in pixels. For styles 1 to 4 only a width of 1 is valid.

For a particular shape, specify style 5 (no pen) if you only want to fill the shape, and not stroke it as well.

For more information, see:

http://www.gammon.com.au/mushclient/mw_shapes.htm

Lua example

WindowBezier (win, "30, 20, 5, 90, 50, 90, 80, 30", 
              ColourNameToRGB("blue"), 0, 2)

Lua notes

You can use the following constants for the pen style:

miniwin.pen_solid = 0
miniwin.pen_dash = 1
miniwin.pen_dot = 2
miniwin.pen_dash_dot = 3
miniwin.pen_dash_dot_dot = 4
miniwin.pen_null = 5
miniwin.pen_inside_frame = 6

-- how lines join (eg. in polygons) (add this to the style)

miniwin.pen_join_round = 0
miniwin.pen_join_bevel = 4096
miniwin.pen_join_miter = 8192

-- how lines end (add this to the style)

miniwin.pen_endcap_round = 0
miniwin.pen_endcap_square = 256
miniwin.pen_endcap_flat = 512

Return value

eNoSuchWindow - no such miniwindow

ePenStyleNotValid - invalid pen style

eInvalidNumberOfPoints - number of numbers supplied does not give a remainder of 2 after dividing by 6, or is less than 8.

eOK - completed OK

Return code meanings

Related topic

MiniWindows

See also

FunctionDescription
WindowArcDraws an arc in a miniwindow
WindowCircleOpDraws ellipses, filled rectangles, round rectangles, chords, pies in a miniwindow
WindowCreateCreates a miniwindow
WindowDrawImageDraws an image into a miniwindow
WindowLineDraws a line in a miniwindow
WindowPolygonDraws a polygon in a miniwindow
WindowRectOpDraws a rectangle in a miniwindow