RISC OS Open
A fast and easily customised operating system for ARM devices
ROOL
Home | News | Software | Bugs | Bounties | Forum | Documents | Photos | Contact us
Account

OS_Plot

Programmer's Reference Manuals
» Part 15 – SWI Calls
» OS
» OS_Plot

OS_Plot

(SWI &45)
Entry
R0 Plot command code,
R1 X co-ordinate
R2 Y co-ordinate
Exit
R0 Corrupted
R1 Corrupted
R2 Corrupted

Use

The purpose of this call is to perform a direct VDU call.

Plot Command Codes

# Description Sequence of moves
0 Solid line including both end points Line
8 Solid line excluding the final end point Line
16 Dotted line including both end points (pattern restarted) Line
24 Dotted line excluding the final end point (pattern restarted) Line
32 Solid line excluding 1^st^ point Line
40 Solid line excluding both end points Line
48 Dotted line excluding 1^st^ point (pattern continued) Line
56 Dotted line excluding both end points (pattern continued) Line
64 Point plot  
72 Horizontal line fill (left and right) to non-background  
80 Triangle fill Triangle
88 Horizontal line fill (right only) to background
96 Rectangle fill Rectangle
104 Horizontal line fill (left and right) to foreground
112 Parallelogram fill Parallelogram
120 Horizontal line fill (right only) to non-foreground
128 Flood to non-background  
136 Floor to foreground  
144 Circle outline Circle
152 Circle fill Circle
160 Circular arc Arc
168 Segment Segment
176 Sector Sector
184 Block copy/move Block copy/move
192 Ellipse outline Ellipse
200 Ellipse fill Ellipse
208 Font printing (do not use)
216 Reserved  
224 Reserved  
232 Sprite Plot  
240 Reserved  
248 Reserved  

Sequence of Moves

Some shapes need to be defined by a sequence of points. The VDU drivers use the previous positions of the graphics cursor to define these. These can be specified by a sequence of absolute or relative moves (commands 64 or 68).

Shape Sequence of moves
Arc To plot an arc move to centre, move to start, then plot arc to a point on the line joining centre to end. The arc will be plotted anticlockwise
Block copy/move First define the source rectangle: move to one corner, then move to diagonally opposite corner. Then plot bottom left corner of destination
Circle To plot a circle, move to centre, then plot circle to a point on the circumference
Ellipse To plot an ellipse, move to centre, move to point on circumference with same Y co-ordinate as centre, then plot ellipse to the lowest or highest point on the circumference
Line To plot a line, move to one endpoint, then plot line to other endpoint
Parallelogram To plot a parallelogram, move to vertex, move to next vertex, then plot parallelogram to third vertex. Fourth vertex will be opposite second
Rectangle To plot a rectangle, move to one corner, then plot rectangle to diagonally opposite corner
Sector To plot a sector, move to centre, move to start, then plot sector to a point on the line joining centre to end. The sector will be plotted anticlockwise
Segment To plot a segment, move to centre, move to start, then plot segment to a point on the line joining centre to end. The segment will be plotted anticlockwise
Triangle To plot a triangle, move to vertex, move to next vertex, then plot triangle to third vertex

Modifiers

The plot commands use the top 5 bits. The bottom 3 bits are used to specify the ‘modifier’. Most plot command codes use the standard modifier codes, however, a special set of modifiers are available for block copy/move commands.

# Standard modifier type
0 Move relative
1 Plot relative, foreground
2 Plot relative, inverse
3 Plot relative, background
4 Move absolute
5 Plot absolute, foreground
6 Plot absolute, inverse
7 Plot absolute, background
# Block copy/move modifier type
0 Move relative
1 Relative rectangle move
2 Relative rectangle copy
3 Relative rectangle
4 Move absolute
5 Absolute rectangle move
6 Absolute rectangle copy
7 Absolute rectangle copy

Notes

The action performed depends on the plot command code value in R0.

Unknown plot codes (216-231,240-255) are sent to the unknown plot vector?, which by default does nothing.

The dash pattern is set with VDU 23,6? and can be read with OS_Word 10,6?. Its length is set and read with OS_Byte 163.

See also

  • OS_Byte 163
  • OS_Word 10,6?
  • Unknown Plot Vector?
  • VDU 23,6?
Revised on November 26, 2010 12:54:11 by Trevor Johnson (329)? (127.0.0.1)
Edit | Back in time (2 revisions) | See changes | History | Views: Print | Source | Linked from: OS SWI Calls, Software Vector Numbers, UKPLOTV, GraphicsV 13

Search the Wiki

Commercial use

For commercial enquiries, please contact the owners of RISC OS, Castle Technology Ltd.

ROOL Store

The official C/C++ Development kit and more here.

Donate! Why?

Help ROOL make things happen – please consider donating!

Navigation

  • Home Page
  • All Pages
  • Recently Revised
  • Authors
  • Feeds
Site design © RISC OS Open Limited 2011 except where indicated
The RISC OS Open Instiki theme is based on Insitki's default layout

Valid XHTML 1.0  |  Valid CSS

Instiki 0.19.1(MML+)
This site runs on Rails

Hosted by Arachsys