Line (Graphics)

Draws a line

Syntax
	Line [target,] [[STEP]|(x1, y1)]-[STEP] (x2, y2) [, [color][, [B|BF][, 
	style]]]
	or
	Line - (x2, y2) [, [color][, [B|BF][, style]]]

Parameters
	target
		specifies buffer to draw on
	STEP
		indicates that the starting coordinates are relative
	(x1, y1)
		starting coordinates of the line
	STEP
		indicates that ending coordinates are relative
	(x2, y2)
		ending coordinates of the line
	color
		the color attribute.
	B|BF
		specifies box or box filled mode
	style
		line style

Description
	Graphics statement that draws a straight line or a box between two 
	points. The action will take place on the current work page set via 
	KeyPgScreensetScreenSet, or onto the buffer KeyPgGetgraphicsGet/KeyPgPutgraphicsPut buffer if specified.

	Line coordinates are affected by custom coordinates system set via KeyPgWindowWindow
	and KeyPgViewgraphicsView (Graphics) statements, and respect clipping rectangle set by 
	KeyPgViewgraphicsView (Graphics). If a pair of coordinates is preceded by the STEP 
	keyword, the coordinates are assumed to be relative to the last graphics 
	cursor position. If the B flag is specified, a rectangle will be drawn 
	instead of a line, with (x1,y1)-(x2,y2) as the coordinates of the 
	opposite rectangle corners. If BF is specified, a filled rectangle will 
	be drawn.

	Color denotes the color attribute, which is mode specific (see KeyPgColorColor and 
	KeyPgScreengraphicsScreen (Graphics) for details). If omitted, the current foreground color 
	as set by the KeyPgColorColor statement is used.

	Style, if specified, allows styled line drawing; its value is 
	interpreted as a 16-bit bitmask, and Line will use it to skip pixel 
	drawing. Starting at (x1,y1), the most significant bit of the style mask 
	is checked: if 1, the pixel is drawn, if 0, it's skipped. This repeats 
	for all the line pixels with the other bits, with the mask being reused 
	when the 16 bits are all checked.

	When Line is used as Line - (x2, y2), a line is drawn from the current 
	cursor position to the (x2,y2) coordinates specified by Line.  
	Alternatively, KeyPgPointPoint can be used to get the current cursor position.

	Note: Either chained use or boxes drawn with Line can induce pixels 
	overdrawn at some locations. Thus, the resultant (blended) color of 
	these overdrawn pixels is affected if a transparent color (in 
	conjunction with the GFX_ALPHA_PRIMITIVES option flag) is used.

Example
	'' draws a diagonal red line with a white box, and waits for 3 seconds
	Screen 13
	Line (20, 20)-(300, 180), 4
	Line (140, 80)-(180, 120), 15, b
	Line - ( 200, 200 ), 15
	Sleep 3000

	' Draws 2 lines with 2 different line styles in 2 different colors
	ScreenRes 320, 240

	Line (10, 100)-(309, 140),  4, B, &b1010101010101010 ' red box with dashed border

	Line (20, 115)-(299, 115),  9,  , &b1111000011111111 ' blue dashed line
	Line (20, 125)-(299, 125), 10,  , &b0000000011110000 ' green dashed line

	Sleep

Differences from QB
	* target is new to FreeBASIC

See also
	* KeyPgCircleCircle
	* KeyPgWindowWindow
	* KeyPgViewgraphicsView (Graphics)

