Rihards Balass / 4DGL-mbed-32PTU
Revision:
3:dcfbceb81fef
Parent:
2:81eaaa491a02
Child:
4:50511ed54ab4
--- a/Picaso_4DGL-32PTU_graphics.cpp	Fri Sep 09 06:17:05 2016 +0000
+++ b/Picaso_4DGL-32PTU_graphics.cpp	Fri Sep 09 10:19:54 2016 +0000
@@ -20,10 +20,10 @@
 #include "Picaso_4DGL-32PTU.h"
 
 //**************************************************************************
-// The Clear Screen command clears the screen using the current background colour.
+// The Clear Screen command clears the screen using the current background color.
 // This command brings some of the settings back to default; such as,
 //  Transparency turned OFF
-//  Outline colour set to BLACK
+//  Outline color set to BLACK
 //  Opacity set to OPAQUE
 //  Pen set to OUTLINE
 //  Line patterns set to OFF
@@ -31,9 +31,9 @@
 //  Text magnifications set to 1
 //  All origins set to 0:0
 // The alternative to maintain settings and clear screen is 
-// to draw a filled rectangle with the required background colour.
+// to draw a filled rectangle with the required background color.
 //**************************************************************************
-void TFT_4DGL :: cls() {  // clear screen
+void PICASO_4DGL :: cls() {  // clear screen
 
     char command[2] = "";
     
@@ -44,10 +44,10 @@
 }
 
 //**************************************************************************
-// The Change Colour command changes all oldColour pixels to newColour 
+// The Change Color command changes all oldColor pixels to newColor 
 // within the clipping window area.
 //**************************************************************************
-void TFT_4DGL :: changeColor(short oldColor, short newColor) {
+void PICASO_4DGL :: changeColor(short oldColor, short newColor) {
     
     char command[6] = "";
     
@@ -63,9 +63,9 @@
 
 //**************************************************************************
 // The Draw Circle command draws a circle with centre point x, y 
-// with radius r using the specified colour.
+// with radius r using the specified color.
 //**************************************************************************
-void TFT_4DGL :: drawCircle(short x, short y, short r, short color) {
+void PICASO_4DGL :: drawCircle(short x, short y, short r, short color) {
     
     char command[10] = "";
     
@@ -83,19 +83,284 @@
     writeCOMMAND(command, 10);
 }
 
+//**************************************************************************
+// The Draw Circle command draws a solid circle with centre point x1, y1
+// with radius r using the specified color.
+// The outline color can be specified with the “Outline Color” command.
+// If “Outline Color” is set to 0, no outline is drawn.
+//**************************************************************************
+void PICASO_4DGL :: drawFilledCircle(short x, short y, short r, short color) {
+    
+    char command[10] = "";
+    
+    command[0] = (CIRCLE_FILLED >> (8*1)) & 0xff;
+    command[1] = (CIRCLE_FILLED >> (8*0)) & 0xff;
+    command[2] = (x >> (8*1)) & 0xff;
+    command[3] = (x >> (8*0)) & 0xff;
+    command[4] = (y >> (8*1)) & 0xff;
+    command[5] = (y >> (8*0)) & 0xff;
+    command[6] = (r >> (8*1)) & 0xff;
+    command[7] = (r >> (8*0)) & 0xff;
+    command[8] = (color >> (8*1)) & 0xff;
+    command[9] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, 10);
+}
 
-
+//**************************************************************************
+// The Draw Line command draws a line from x1, y1 to x2, y2 
+// using the specified color.
+//**************************************************************************
+void PICASO_4DGL :: drawLine(short x1, short y1, short x2, short y2, short color) {
+    
+    char command[12] = "";
+    
+    command[0] = (DRAW_LINE >> (8*1)) & 0xff;
+    command[1] = (DRAW_LINE >> (8*0)) & 0xff;
+    command[2] = (x1 >> (8*1)) & 0xff;
+    command[3] = (x1 >> (8*0)) & 0xff;
+    command[4] = (y1 >> (8*1)) & 0xff;
+    command[5] = (y1 >> (8*0)) & 0xff;
+    command[6] = (x2 >> (8*1)) & 0xff;
+    command[7] = (x2 >> (8*0)) & 0xff;
+    command[8] = (y2 >> (8*1)) & 0xff;
+    command[9] = (y2 >> (8*0)) & 0xff;
+    command[10] = (color >> (8*1)) & 0xff;
+    command[11] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, 12);
+}
 
-
+//**************************************************************************
+// The Draw Rectangle command draws a rectangle from x1, y1 to x2, y2
+// using the specified color. 
+// The line may be tessellated with the “Line Pattern” command.
+//**************************************************************************
+void PICASO_4DGL :: drawRectangle(short x1, short y1, short x2, short y2, short color) {
+    
+    char command[12] = "";
+    
+    command[0] = (DRAW_RECTANGLE >> (8*1)) & 0xff;
+    command[1] = (DRAW_RECTANGLE >> (8*0)) & 0xff;
+    command[2] = (x1 >> (8*1)) & 0xff;
+    command[3] = (x1 >> (8*0)) & 0xff;
+    command[4] = (y1 >> (8*1)) & 0xff;
+    command[5] = (y1 >> (8*0)) & 0xff;
+    command[6] = (x2 >> (8*1)) & 0xff;
+    command[7] = (x2 >> (8*0)) & 0xff;
+    command[8] = (y2 >> (8*1)) & 0xff;
+    command[9] = (y2 >> (8*0)) & 0xff;
+    command[10] = (color >> (8*1)) & 0xff;
+    command[11] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, 12);
+}
 
-
+//**************************************************************************
+// The Draw Filled Rectangle command draws a solid rectangle from x1, y1 to x2, y2
+// using the specified color. 
+// The line may be tessellated with the “Line Pattern” command.
+// The outline color can be specified with the “Outline Color” command.
+// If “Outline Color” is set to 0, no outline is drawn.
+//**************************************************************************
+void PICASO_4DGL :: drawFilledRectangle(short x1, short y1, short x2, short y2, short color) {
+    
+    char command[12] = "";
+    
+    command[0] = (RECTANGLE_FILLED >> (8*1)) & 0xff;
+    command[1] = (RECTANGLE_FILLED >> (8*0)) & 0xff;
+    command[2] = (x1 >> (8*1)) & 0xff;
+    command[3] = (x1 >> (8*0)) & 0xff;
+    command[4] = (y1 >> (8*1)) & 0xff;
+    command[5] = (y1 >> (8*0)) & 0xff;
+    command[6] = (x2 >> (8*1)) & 0xff;
+    command[7] = (x2 >> (8*0)) & 0xff;
+    command[8] = (y2 >> (8*1)) & 0xff;
+    command[9] = (y2 >> (8*0)) & 0xff;
+    command[10] = (color >> (8*1)) & 0xff;
+    command[11] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, 12);
+}
 
 
+//**************************************************************************
+// The Draw Polyline command plots lines between points specified by a pair of arrays
+// using the specified color. 
+// The lines may be tessellated with the “Line Pattern” command.
+// The “Draw Polyline” command can be used to create complex raster graphics
+// by loading the arrays from serial input or from MEDIA with very little code requirement.
+// 
+// n - Specifies the number of elements in the x and y arrays specifying the vertices for the polyline.
+// vx, vy - Specifies the array of elements for the x/y coordinates of the vertices.
+// Vx1, vx2, …, vxN, vy1, vy2, …, vyN
+//**************************************************************************
+void PICASO_4DGL :: drawPolyline(short n, short *vx, short *vy, short color) {
+    
+    int size = 6 + (n*4);
+    int i, j = 4;
+    char command[size];
+    for(i = 0; i < size; i++) command[i] = 0;
+    
+    command[0] = (DRAW_POLYLINE >> (8*1)) & 0xff;
+    command[1] = (DRAW_POLYLINE >> (8*0)) & 0xff;
+    command[2] = (n >> (8*1)) & 0xff;
+    command[3] = (n >> (8*0)) & 0xff;
+    for (i = 0; i < n; i++) {
+        command[j] = (vx[i] >> (8*1)) & 0xff;
+        j++;
+        command[j] = (vx[i] >> (8*0)) & 0xff;
+        j++;
+    }
+    for (i = 0; i < n; i++) {
+        command[j] = (vy[i] >> (8*1)) & 0xff;
+        j++;
+        command[j] = (vy[i] >> (8*0)) & 0xff;
+        j++;
+    }
+    command[j] = (color >> (8*1)) & 0xff;
+    command[j+1] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, size);
+}
 
+//**************************************************************************
+// The Draw Polygon command plots lines between points specified by a pair of arrays
+// using the specified color. 
+// The last point is drawn back to the first point, completing the polygon.
+// The lines may be tessellated with the “Line Pattern” command.
+// The Draw Polygon command can be used to create complex raster graphics
+// by loading the arrays from serial input or from MEDIA with very little code requirement.
+// 
+// n - Specifies the number of elements in the x and y arrays specifying the vertices for the polygon.
+// vx, vy - Specifies the array of elements for the x/y coordinates of the vertices.
+// Vx1, vx2, …, vxN, vy1, vy2, …, vyN
+//**************************************************************************
+void PICASO_4DGL :: drawPolygon(short n, short *vx, short *vy, short color) {
+    
+    int size = 6 + (n*4);
+    int i, j = 4;
+    char command[size];
+    for(i = 0; i < size; i++) command[i] = 0;
+    
+    command[0] = (DRAW_POLYGON >> (8*1)) & 0xff;
+    command[1] = (DRAW_POLYGON >> (8*0)) & 0xff;
+    command[2] = (n >> (8*1)) & 0xff;
+    command[3] = (n >> (8*0)) & 0xff;
+    for (i = 0; i < n; i++) {
+        command[j] = (vx[i] >> (8*1)) & 0xff;
+        j++;
+        command[j] = (vx[i] >> (8*0)) & 0xff;
+        j++;
+    }
+    for (i = 0; i < n; i++) {
+        command[j] = (vy[i] >> (8*1)) & 0xff;
+        j++;
+        command[j] = (vy[i] >> (8*0)) & 0xff;
+        j++;
+    }
+    command[j] = (color >> (8*1)) & 0xff;
+    command[j+1] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, size);
+}
 
+//**************************************************************************
+// The Draw Filled Polygon command draws a solid Polygon between specified vertices:
+// x1, y1 x2, y2, .... , xn, yn using the specified color.
+// The last point is drawn back to the first point, completing the polygon.
+// Vertices must be a minimum of 3 and can be specified in any fashion.
+// 
+// n - Specifies the number of elements in the x and y arrays specifying the vertices for the polygon.
+// vx, vy - Specifies the array of elements for the x/y coordinates of the vertices.
+// Vx1, vx2, …, vxN, vy1, vy2, …, vyN
+//**************************************************************************
+void PICASO_4DGL :: drawFilledPolygon(short n, short *vx, short *vy, short color) {
+    
+    if (n >= 3) {
+        int size = 6 + (n*4);
+        int i, j = 4;
+        char command[size];
+        for(i = 0; i < size; i++) command[i] = 0;
+        
+        command[0] = (POLYGON_FILLED >> (8*1)) & 0xff;
+        command[1] = (POLYGON_FILLED >> (8*0)) & 0xff;
+        command[2] = (n >> (8*1)) & 0xff;
+        command[3] = (n >> (8*0)) & 0xff;
+        for (i = 0; i < n; i++) {
+            command[j] = (vx[i] >> (8*1)) & 0xff;
+            j++;
+            command[j] = (vx[i] >> (8*0)) & 0xff;
+            j++;
+        }
+        for (i = 0; i < n; i++) {
+            command[j] = (vy[i] >> (8*1)) & 0xff;
+            j++;
+            command[j] = (vy[i] >> (8*0)) & 0xff;
+            j++;
+        }
+        command[j] = (color >> (8*1)) & 0xff;
+        command[j+1] = (color >> (8*0)) & 0xff;
+        
+        writeCOMMAND(command, size);
+    }
+}
+
+//**************************************************************************
+// The Draw Triangle command draws a triangle outline between vertices
+// x1,y1 , x2,y2 and x3,y3 using the specified color.
+// The line may be tessellated with the “Line Pattern” command.
+//**************************************************************************
+void PICASO_4DGL :: drawTriangle(short x1, short y1, short x2, short y2, short x3, short y3, short color) {
+    
+    char command[16] = "";
+    
+    command[0] = (DRAW_TRIANGLE >> (8*1)) & 0xff;
+    command[1] = (DRAW_TRIANGLE >> (8*0)) & 0xff;
+    command[2] = (x1 >> (8*1)) & 0xff;
+    command[3] = (x1 >> (8*0)) & 0xff;
+    command[4] = (y1 >> (8*1)) & 0xff;
+    command[5] = (y1 >> (8*0)) & 0xff;
+    command[6] = (x2 >> (8*1)) & 0xff;
+    command[7] = (x2 >> (8*0)) & 0xff;
+    command[8] = (y2 >> (8*1)) & 0xff;
+    command[9] = (y2 >> (8*0)) & 0xff;
+    command[10] = (x3 >> (8*1)) & 0xff;
+    command[11] = (x3 >> (8*0)) & 0xff;
+    command[12] = (y3 >> (8*1)) & 0xff;
+    command[13] = (y3 >> (8*0)) & 0xff;
+    command[14] = (color >> (8*1)) & 0xff;
+    command[15] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, 16);
+}
+
+//**************************************************************************
+// The Draw Filled Triangle command draws a solid triangle between vertices
+// x1, y1, x2, y2 and x3, y3 using the specified color.
+//**************************************************************************
+void PICASO_4DGL :: drawFilledTriangle(short x1, short y1, short x2, short y2, short x3, short y3, short color) {
+    
+    char command[16] = "";
+    
+    command[0] = (TRIANGLE_FILLED >> (8*1)) & 0xff;
+    command[1] = (TRIANGLE_FILLED >> (8*0)) & 0xff;
+    command[2] = (x1 >> (8*1)) & 0xff;
+    command[3] = (x1 >> (8*0)) & 0xff;
+    command[4] = (y1 >> (8*1)) & 0xff;
+    command[5] = (y1 >> (8*0)) & 0xff;
+    command[6] = (x2 >> (8*1)) & 0xff;
+    command[7] = (x2 >> (8*0)) & 0xff;
+    command[8] = (y2 >> (8*1)) & 0xff;
+    command[9] = (y2 >> (8*0)) & 0xff;
+    command[10] = (x3 >> (8*1)) & 0xff;
+    command[11] = (x3 >> (8*0)) & 0xff;
+    command[12] = (y3 >> (8*1)) & 0xff;
+    command[13] = (y3 >> (8*0)) & 0xff;
+    command[14] = (color >> (8*1)) & 0xff;
+    command[15] = (color >> (8*0)) & 0xff;
+    
+    writeCOMMAND(command, 16);
+}
 
 
-
-
-
-