Datasheet
959
SAM9263 [DATASHEET]
Atmel-6249N-ATARM-SAM9263-Datasheet_14-Mar-16
44.4 Examples of Drawing Functions
44.4.1 Line Draw
This function draws a thick (2 pixels wide) solid black line from start point (startx, starty) to end point (endx, endy).
startx, starty, endx, endy should be in pixel units.
Void line_draw(unsigned short startx, unsigned short starty,
unsigned short endx, unsigned short endy)
{
while(graphics_control.TDGC_GSR & 3);
graphics_control.TDGC_SBXR = startx;
graphics_control.TDGC_SBYR = starty;
graphics_control.TDGC_TEXR = endx;
graphics_control.TDGC_TEYR = endy;
graphics_control.TDGC_LOR = 0x00; // Select logic operation MOV
graphics_control.TDGC_CSR = 0x00; // Colour black
graphics_control.TDGC_LWR = 0x02; // 2 pixels wide
graphics_control.TDGC_LPR = 0xFFFF; // Solid line
graphics_control.TDGC_GOR = 0xD5; // Line draw, absolute, no update, 1D pattern
while(graphics_control.TDGC_GSR & 1);
}
44.4.2 Block Transfer
This function OR’s source data (startx, starty) of size (sizex, sizey) with destination data (endx, endy) and writes it
to the destination memory area. sizex, sizey, startx, starty, endx, endy should be in pixel units.
Void block_transfer(unsigned short startx, unsigned short starty, unsigned
short endx,
unsigned short endy, unsigned short sizex, unsigned short sizey)
{
while(graphics_control.TDGC_GSR & 3);
graphics_control.TDGC_TDGC_BTSXR = sizex;
graphics_control.TDGC_TDGC_BTSYR = sizey;
graphics_control.TDGC_SBXR = startx;
graphics_control.TDGC_SBYR = starty;
graphics_control.TDGC_TEXR = endx;
graphics_control.TDGC_TEYR = endy;
graphics_control.TDGC_LOR = 0x01; // Select logic operation OR
graphics_control.TDGC_GOR = 0xB4; // Selects block transfer, absolute, no
update
while(graphics_control.TDGC_GSR & 2);
}
44.4.3 Clipped Line Draw
This function draws a thick (2 pixels wide) patterned (pixel ON,OFF, ON, OFF…) black line from start point (startx,
starty) to end point (endx, endy). Only the pixels that fall on or within the clip rectangle boundary are drawn. startx,
starty, endx, endy should be in pixel units.
Void clipped_line_draw(signed long int startx, signed long int starty,
signed long int endx, signed long int endy)
{
while(graphics_control.TDGC_GSR & 3);
graphics_control.TDGC_SBXR = startx;
graphics_control.TDGC_SBYR = starty;