Home Line-ALine-A Horizontal lineHorizontal line Filled polygonFilled polygon

6.10 Filled rectangle

Name: »Filled rectangle«
 
Line-A number: $A005
 
Syntax: See 'Bindings for filled_rect'
 
Description: This Line-A function draws a filled rectangle through calls of the horizontal line function. In addition there is the option to permit drawing of the rectangle only within a passed clipping region. The following Line-A variables are used:
 
Variable Meaning
   
x1 X-coordinate of the top left corner of the rectangle
y1 Y-coordinate of the top left corner of the rectangle
x2 X-coordinate of the bottom right corner of the rectangle
y2 Y-coordinate of the bottom right corner of the rectangle
fg_bp_1 Bit value of the first plane for the colour that should be used for filling
fg_bp_2 Bit value of the second plane (only low or medium resolution)
fg_bp_3 Bit value of the third plane (only low resolution)
fg_bp_4 Bit value of the fourth plane (only low resolution)
patptr Pointer to a field with 16-bit line patterns
patmsk Number of line patterns - 1. Depending on the Y-coordinate, one pattern will now be chosen from the field of line patterns. The index of the line pattern used may be calculated with (y mod (patmsk + 1)). By specifying several line patterns and using multiple calls of this function for consecutive lines, it is easy to draw complex patterns as well.
wrt_mode Writing mode; the following modes are possible:
REPLACE 0 Replace
TRANS 1 Transparent (OR)
XOR 2 Inverse (XOR)
INVERS 3 Inverse Transparent (XOR with not(LN_MASK))
clip 1 if clipping is desired, else 0
xmn_clip X-coordinate of the top left corner of the clipping region, if clipping is switched on
ymn_clip Y-coordinate of the top left corner of the clipping region, if clipping is switched on
xmx_clip X-coordinate of the bottom right corner of the clipping region, if clipping is switched on
ymx_clip Y-coordinate of the bottom right corner of the clipping region, if clipping is switched on

The binding from TC passes the line pattern, writing mode and colour not to the filled_rect function, but uses separate functions set_fg_bp, set_wrt_mode and set_pattern for setting the parameters in the Line-A parameter block.
 
Return value: The function does not return a result.
 
Availability: All TOS versions.
 
See also: Binding   Horizontal line
 

6.10.1 Bindings for filled_rect

Pure-C: void filled_rect( int16_t x1, int16_t y1, int16_t x2, int16_t y2 );
 
Assembler:
 
; Save registers
movem.l   D0-D2/A0-A2,-(A7)
; Pointer parameter block LINEA
move.l    pParamblk,A0
; Top left corner, X-coordinate in LINEA.x1
move.w    x1,(38,A0)
; Top left corner, Y-coordinate in LINEA.y1
move.w    y1,(40,A0)
; Bottom right corner, X-coordinate in LINEA.x2
move.w    x2,(42,A0)
; Bottom right corner, Y-coordinate in LINEA.x2
move.w    y2,(44,A0)
; Bit for first plane in LINEA.fg_bp_1
move.w    colbit0,(24,A0)
; Bit for first plane in LINEA.fg_bp_2
move.w    colbit1,(26,A0)
; Bit for first plane in LINEA.fg_bp_3
move.w    colbit2,(28,A0)
; Bit for first plane in LINEA.fg_bp_4
move.w    colbit3,(30,A0)
; Writing mode in LINEA.wrt_mode
move.w    wmode,(36,A0)
; Line pattern in LINEA.patptr
move.w    patptr,(46,A0)
; Number of patterns in LINEA.patmsk
move.w    patmsk,(50,A0)
; Clip mode in LINEA.clip
move.w    mode,(54,A0)
; Top left clip corner, X-coordinate in LINEA.xmn_clip
move.w    cx1,(56,A0)
; Top left clip corner, Y-coordinate in LINEA.ymn_clip
move.w    cy1,(58,A0)
; Bottom right clip corner, X-coordinate in LINEA.xmx_clip
move.w    cx2,(60,A0)
; Bottom right clip corner, Y-coordinate in LINEA.ymx_clip
move.w    cy2,(62,A0)
; Line-A opcode
dc.w      $A005
; Restore registers
movem.l   (A7)+,D0-D2/A0-A2

Home Line-ALine-A Horizontal lineHorizontal line Filled polygonFilled polygon