Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: Picaso_4DGL-32PTU_graphics.cpp
- Revision:
- 3:dcfbceb81fef
- Parent:
- 2:81eaaa491a02
- Child:
- 4:50511ed54ab4
diff -r 81eaaa491a02 -r dcfbceb81fef Picaso_4DGL-32PTU_graphics.cpp
--- 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);
+}
-
-
-
-