Register forum user name Search FAQ

MUSHclient scripting

Description of MUSHclient world function: world.WindowCircleOp


Name WindowCircleOp
Type Method
Summary Draws ellipses, filled rectangles, round rectangles, chords, pies in a miniwindow
Prototype long WindowCircleOp(BSTR WindowName, short Action, long Left, long Top, long Right, long Bottom, long PenColour, long PenStyle, long PenWidth, long BrushColour, long BrushStyle, long Extra1, long Extra2, long Extra3, long Extra4);
Description

This draws an ellipse, rectangle, round rectangle, chord or pie, controlled by the Action parameter.

Unlike WindowRectOp described above the rectangles drawn here can be filled with a brush, thus allowing you to have patterned interiors if desired.

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.

Action - what sort of shape to draw, as follows:

1 = Ellipse
2 = Rectangle (however see below)
3 = Round Rectangle
4 = Chord
5 = Pie

Left, Top, Right, Bottom - describes the rectangle into which the shape must fit.

Note for rectangles: Due to the behaviour of the Windows drawing function which this calls, the rectangle excludes the bottom and right-hand edges (that is, stops one pixel short).



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


For more information, see:

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

For actions 1 and 2 (ellipse and rectangle):

Extra1, Extra2, Extra3, Extra4 are ignored.


For action 3 (round rectangle):

Extra1 is the width of the ellipse used to draw the rounded corner.

Extra2 is the height of the ellipse used to draw the rounded corner.

Extra3, Extra4 are ignored.


For action 4 (chord):

Extra1, Extra2 is the x, y position of the chord's starting point.

Extra3, Extra4 is the x, y position of the chord's ending point.



For action 5 (pie):

Extra1, Extra2 is the x, y position of the pie's starting point.

Extra3, Extra4 is the x, y position of the pie's ending point.


Note: Available in version 4.34 onwards.


Lua example
-- Ellipses

WindowCircleOp (win, 1, 0, 0, 40, 40,    -- circle
                ColourNameToRGB("blue"), 0, 2, ColourNameToRGB("cyan"), 0)
WindowCircleOp (win, 1, 50, 20, 100, 100, -- ellipse
                ColourNameToRGB("magenta"), 0, 2, ColourNameToRGB("cyan"), 0)


-- Rectangles

WindowCircleOp (win, 2, 5, 5, 40, 40,   -- square
                ColourNameToRGB("blue"), 0, 3, ColourNameToRGB("cyan"), 8)
WindowCircleOp (win, 2, 50, 20, 95, 95, -- rectangle
                ColourNameToRGB("magenta"), 0, 3, ColourNameToRGB("cyan"), 11)


-- Round Rectangle

WindowCircleOp (win, 3, 15, 15, 90, 90,  -- round rectangle
        ColourNameToRGB("blue"), 0, 2, ColourNameToRGB("cyan"), 10, 25, 25)


-- Chord

WindowCircleOp (win, 4, 15, 15, 90, 90,  -- chord
        ColourNameToRGB("green"), 0, 2, ColourNameToRGB("cyan"), 0, 
        40, 10, 70, 95)

-- Pie

WindowCircleOp (win, 5, 15, 15, 90, 90,   -- pie
        ColourNameToRGB("green"), 0, 2, ColourNameToRGB("cyan"), 0, 
        60, 10, 80, 80)
Lua notes
You can use the following constants for the action:

miniwin.circle_ellipse = 1
miniwin.circle_rectangle = 2
miniwin.circle_round_rectangle = 3
miniwin.circle_chord = 4
miniwin.circle_pie = 5

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

eUnknownOption - Action not in list above

eOK - completed OK
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
WindowCreate Creates a miniwindow
WindowDrawImage Draws an image into a miniwindow
WindowLine Draws a line in a miniwindow
WindowPolygon Draws a polygon 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

[Back]

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