In this section, you will learn how to master the arts of form and colour: 
                            ugBASIC allows the programmer to harness the home 
                            computer full graphic potential, and all aspects of design can be 
                            controlled simply, accurately and almost instantaneously.
                            
                            
                          Basics
                          Drawing
                          Clipping
                          Colors
                    
                        The computer-graphics artist is provided with a standard 
                        electronic canvas SCREEN WIDTH pixels wide and
                        SCREEN HEIGHT pixels high, and there are 
                        potentially SCREEN COLOUR different colours
                        to exploit.
                        In order to apply the chosen colour to the correct point,
                        you will need to know the coordinates of each available 
                        pixel, and as long as these graphic coordinates are not 
                        confused with the broader scale of text mode (tilemap) 
                        coordinates, all will be well.
                        
                        The PLOT command is the simplest drawing 
                        command of all, and plots a single pixel of ink colour 
                        between graphic coordinates 0,0 and 
                        SCREEN WIDTH-1,SCREEN HEIGHT-1. When followed
                        by specific x,y-coordinates, the current ink colour 
                        will be plotted at this new position. You are allowed 
                        to omit either the x or the y coordinate, provided 
                        the comma is left in the correct position. 
                        If an optional colour index number is added the 
                        new colour will be used for this and all subsequent 
                        drawing operations.
                        
                        BITMAP ENABLE
                        CLS BLACK
                        DO
                           PLOT RND(SCREEN WIDTH),RND(SCREEN HEIGHT),RND(SCREEN COLORS)
                        LOOP
                        
                        You can use the POINT function to find the 
                        index number of the colour occupying your chosen coordinates, 
                        like this:
                        
                        BITMAP ENABLE
                        PLOT 160,100
                        PRINT "The colour is ";POINT(160,100)
                        
                        The graphics cursor sets the starting point for most drawing
                        operations. To establish this point, use GR LOCATE
                        to position the graphics cursor at your chosen coordinates.
                        
                        For example:
                        
                        BITMAP ENABLE
                        x=150 : y=10
                        FOR r=3 TO 87 STEP 3
                           GR LOCATE x,y+r
                           CIRCLE ,,r
                        NEXT
                        
                        You can use the XGR and YGR to 
                        find the current coordinates of the graphics cursor, which
                        is the default location for future drawing operations.
                        
                        For example:
                        
                        BITMAP ENABLE
                        CLS
                        CIRCLE 100,100,50
                        PRINT XGR,YGR
                        
                        
                        Line drawing is extremely simple. Pick two sets of 
                        graphic coordinates, and draw your line from one 
                        to the other. To draw a line from the current position
                        of the graphics cursor, use DRAW TO followed 
                        by a single set of coordinates.
                        
                        For example:
                        
                        BITMAP ENABLE
                        CLS
                        INK RED
                        DRAW 50,50 TO 250,150
                        DRAW TO 275,175
                        
                        Changing the appearance of straight lines is very simple 
                        with ugBASIC. Each line pattern is held 
                        in the form of a binary number made up of 16 bits, with 
                        zeros setting blank spaces in the current background 
                        colour, and ones setting the solid parts of the 
                        pattern in the current ink colour. So a normal solid
                        line can be imagined as having all its bits set to one, like 
                        this:
                        
                        %1111111111111111
                        
                        The SET LINE command sets the style of all
                        straight lines that are subsequently drawn. Theoretically,
                        the 16-bit mask can generate values for different
                        patterns between 0 and 65535, but here is a more 
                        practical example:
                        
                        BITMAP ENABLE
                        CLS
                        INK YELLOW
                        SET LINE $F0F0
                        BOX 50,100 TO 150,140
                        SET LINE %1100110011001100
                        BOX 60,110 TO 160,160
                        
                        Here is a range of ugBASIC short-cuts for 
                        drawing outline shapes on the screen.
                        
                        The POLYLINE is identical to DRAW
                        except that it accepts multiple coordinate settings at 
                        the same time. In this way, complex many-sided outlines 
                        can be drawn with a single statement. In its POLYLINE
                        TO form, drawing begins at the current graphic cursor
                        position. For example:
                        
                        BITMAP ENABLE
                        CLS
                        CIRCLE 160,100,95
                        POLYLINE 160,6 TO 100,173 TO 250,69 TO 71,69 TO 222,173 TO 160,6
                        
                        Boxed outlines are drawn at settings determined by the top 
                        left-hand and bottom right-hand coordinates, as in the 
                        following example:
                        
                        BITMAP ENABLE
                        CLS
                        BOX 60,110 TO 160,160
                        
                        To draw circles you can use the CIRCLE command, 
                        with a pair of coordinates sets the position of the centre 
                        point around which the shape is to be drawn, followed by
                        the radius of the circle (the distance between the centre
                        point and the circumference or rim of the circle). If the
                        x,y-coordinates are omitted, the circle will be drawn from
                        the current graphic cursor position.
                        
                        BITMAP ENABLE
                        CLS
                        INK RED
                        GR LOCATE 160,100
                        CIRCLE ,,45
                        WAIT 100 MS
                        DO
                           INK RND(SCREEN COLORS)
                           x=RND(SCREEN WIDTH/2)
                           y=RND(SCREEN HEIGHT/2)+1
                           CIRCLE x,y,r
                        LOOP
                        
                        An ellipse is drawn in a similar way. After the 
                        x,y-coordinates have set the centre location, two radii must
                        be given, one to set the horizontal width and the second to
                        set the height of the ellipse. Coordinates may be omitted as
                        usual,providing the commas remain in place.
                        
                        For example:
                        
                        ELLIPSE 100,100,50,20
                        ELLIPSE ,,20,50
                        
                        The CLIP command is used to set an invisible
                        rectangular boundary on the screen, using the normal 
                        top left-hand corner to bottom right-hand corner 
                        coordinates. All subsequent drawing operations will be
                        clipped off when they reach these boundaries. To toggle
                        the command and restore the normal screen display area, 
                        use CLIP and omit the coordinates. Areas
                        that are preserved outside of the clipped zone can
                        be used for items such as borders and control panels.
                        
                        For example:
                        BITMAP ENABLE
                        CLS BLACK
                        CLIP 20,20 TO 50,50
                        r = (POSITION) 0
                        FOR r=4 TO 96 STEP 4
                           GR LOCATE 10, r
                           ELLIPSE ,,r+9,r
                        NEXT
                        
                        
                            This section explains how the ugBASIC 
                            programmer is free to exploit the colour-handling 
                            features. Although the various targets provides 
                            different colour schema and registers, ugBASIC
                            allows the use of colour numbers ranging from 0 to 
                            SCREEN COLORS (or COLOR COUNT).
                            
                            You are not restricted to the pre-set colours that have been
                            allocated for drawing operations. The INK command is 
                            used to specify which colour is to be used for subsequent drawing,
                            and the number of the colour is set like this:
                            CLS
                            COLOR BACK RED
                            INK YELLOW
                            DRAW TO 319,199
                            
                            The COLOR BACK command is used to assign your
                            choice of color for the screen's background colour.
                            
                            The ugBASIC language recognizes a series of keywords as colors:
                            
                            
| BLACK | BLUE | BROWN | 
| CYAN | DARK BLUE | DARK GRAY | 
| DARK GREY | GOLD | GRAY | 
| GREEN | GREY | LAVENDER | 
| LIGHT BLUE | LIGHT GREEN | LIGHT GREY | 
| LIGHT RED | MAGENTA | OLIVE GREEN | 
| ORANGE | PEACH | PINK | 
| PURPLE | RED | TAN | 
| TURQUOISE | VIOLET | WHITE | 
| YELLOW | YELLOW GREEN | 
                        If you have found a problem, if you think there is a bug or, more 
                        simply, you would like something to be improved, write a topic on the official forum, or open an issue on GitHub. 
                        Thank you!
                        
