Prototype
| long WindowPolygon(BSTR WindowName, BSTR Points, long PenColour, long PenStyle, long PenWidth, long BrushColour, long BrushStyle, BOOL Close, BOOL Winding);
|
Description
| 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.
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 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:
http://www.gammon.com.au/mushclient/mw_shapes.htm
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
|