[Home] [Downloads] [Search] [Help/forum]

MUSHclient scripting

Description of MUSHclient world function: world.WindowPolygon

Name WindowPolygon
Type Method
Summary Draws a polygon in a miniwindow
Prototype long WindowPolygon(BSTR WindowName, BSTR Points, long PenColour, long PenStyle, long PenWidth, long BrushColour, long BrushStyle, BOOL Close, BOOL Winding);

View list of data type meanings


This draws a polygon (series of straight lines) connecting the specified points, with the designated pen and filled with the designated brush.

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.


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 2 points (the start and end), which is 4 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.

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.

BrushColour - the RGB colour for this brush

BrushStyle - what style of brush to use:

0: solid (filled with a solid colour)
1: null (not filled)
2: hatch: horizontal
3: hatch: vertical
4: hatch: forwards diagonal
5: hatch: backwards diagonal
6: hatch: cross
7: hatch: diagonal cross
8: fine pattern
9: medium pattern
10: coarse pattern
11: waves - horizontal
12: waves - vertical

BrushColour, Brushstyle - the brush colour and style as described at the top of this page.

Close - if true, the polygon is closed by connecting the last point to the first one, if necessary

Winding - if true the polygon is filled using the "winding" algorithm, if false it is filled using the "alternate" algorithm.

When the polygon-filling mode is "alternate", the system fills the area between odd-numbered and even-numbered polygon sides on each scan line. That is, the system fills the area between the first and second side, between the third and fourth side, and so on. This mode is the default.

When the polygon-filling mode is "winding", the system uses the direction in which a figure was drawn to determine whether to fill an area. Each line segment in a polygon is drawn in either a clockwise or a counterclockwise direction. Whenever an imaginary line drawn from an enclosed area to the outside of a figure passes through a clockwise line segment, a count is incremented. When the line passes through a counterclockwise line segment, the count is decremented. The area is filled if the count is nonzero when the line reaches the outside of the figure.

For more information, see:


Note: Available in version 4.34 onwards.

Lua example
WindowPolygon (win, "20,50,180,50,180,20,230,70,180,120,180,90,20,90",
                        ColourNameToRGB("cyan"), 0, 3,   -- pen (solid, width 3)
                        ColourNameToRGB("yellow"), 0,    -- brush (solid)
                        true,    -- fill
                        false)   -- alternate fill
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

You can use the following constants for the brush style:

miniwin.brush_solid = 0
miniwin.brush_null = 1
miniwin.brush_hatch_horizontal = 2
miniwin.brush_hatch_vertical = 3
miniwin.brush_hatch_forwards_diagonal = 4
miniwin.brush_hatch_backwards_diagonal = 5
miniwin.brush_hatch_cross = 6
miniwin.brush_hatch_cross_diagonal = 7
miniwin.brush_fine_pattern = 8
miniwin.brush_medium_pattern = 9
miniwin.brush_coarse_pattern = 10
miniwin.brush_waves_horizontal = 11
miniwin.brush_waves_vertical = 12
Returns eNoSuchWindow - no such miniwindow

ePenStyleNotValid - invalid pen style

eBrushStyleNotValid - invalid brush style

eInvalidNumberOfPoints - must have at least 2 points (4 numbers) and the number of numbers must be divisible by 2

eOK - completed OK

View list of return code meanings

Introduced in version 4.34

See also ...

Function Description
WindowArc Draws an arc in a miniwindow
WindowBezier Draws a B├ęzier curve in a miniwindow
WindowCircleOp Draws ellipses, filled rectangles, round rectangles, chords, pies in a miniwindow
WindowCreate Creates a miniwindow
WindowDrawImage Draws an image into a miniwindow
WindowLine Draws a line in a miniwindow
WindowRectOp Draws a rectangle in a miniwindow

Search for script function

Enter a word or phrase in the box below to narrow the list down to those that match.

The function name, prototype, summary, and description are searched.

Search for:   

Leave blank to show all functions.

Return codes

Many functions return a "code" which indicates the success or otherwise of the function.

You can view a list of the return codes

Function prototypes

The "prototype" part of each function description lists exactly how the function is called (what arguments, if any, to pass to it).

You can view a list of the data types used in function prototypes

View all functions


Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at FutureQuest]