summaryrefslogtreecommitdiff
path: root/frontends/calculator/CEdev/examples/gfx_shapes_shift/src/main.c
blob: cfa784d38099bc596d0c10cac8f1129066ae6096 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <tice.h>

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <graphx.h>

void main(void) {
    uint8_t y;
    uint24_t i;

    /* Triangle coordinates */
    int verts[6] = {
            160,  1,  /* (x0, y0) */
            1,  238,  /* (x1, y1) */
            318,238,  /* (x2, y2) */
    };

    /* Initialize the 8bpp graphics */
    gfx_Begin();
    gfx_SetColor(gfx_blue);

    /* Draw some circles to make sure they all look the same */
    y = 40;
    for (i = 2; i < 13; i++) {
        y += i;
        gfx_FillCircle_NoClip(80, y, i);
        y += i + 3;
    }
    y = 40;
    for (i = 2; i < 13; i++) {
        y += i;
        gfx_FillCircle(240, y, i);
        y += i + 3;
    }
    y = 40;
    for (i = 2; i < 13; i++) {
        y += i;
        gfx_Circle(160, y, i);
        y += i + 3;
    }

    /* Wait for any key */
    while (!os_GetCSC());

    gfx_FillScreen(gfx_white);
    gfx_SetColor(gfx_yellow);
    gfx_Rectangle(0, 0, 320, 240);

    /* Draw a blue triangle outline */
    gfx_SetColor(gfx_blue);
    gfx_Polygon(verts, 3);

    /* Draw a red circle outline */
    gfx_SetColor(gfx_red);
    gfx_Circle(160, 152, 80);

    /* Wait for any key */
    while (!os_GetCSC());

    /* Draw a filled yellow rectangle */
    gfx_SetColor(gfx_yellow);
    gfx_FillRectangle(0, 0, 320, 240);

    /* Draw a filled blue triangle */
    gfx_SetColor(gfx_blue);
    gfx_FillTriangle(verts[0], verts[1], verts[2], verts[3], verts[4], verts[5]);

    /* Draw a filled red circle */
    gfx_SetColor(gfx_red);
    gfx_FillCircle(160, 152, 80);

    /* Wait for any key */
    while (!os_GetCSC());

    /* Shift the screen around a bit */
    gfx_ShiftDown(20);
    gfx_ShiftDown(20);
    gfx_ShiftLeft(20);
    gfx_ShiftLeft(20);
    gfx_ShiftUp(20);
    gfx_ShiftRight(20);

    /* Wait for any key */
    while (!os_GetCSC());

    gfx_FillScreen(gfx_white);

    /* Test triangle drawing */
    gfx_SetColor(gfx_blue);
    gfx_FillTriangle(110, 170, 110, 70, 230, 70);
    gfx_SetColor(gfx_green);
    gfx_FillTriangle_NoClip(110, 170, 230, 70, 230, 170);
    gfx_SetColor(gfx_black);
    gfx_FillTriangle(110, 170, 200, 200, 230, 200);
    gfx_FillTriangle_NoClip(140, 40, 110, 40, 230, 70);
    gfx_FillTriangle(1, 1, 318, 1, 1, 1);
    gfx_FillTriangle_NoClip(1, 238, 1, 238, 318, 238);
    gfx_FillTriangle(1, 3, 1, 236, 1, 236);
    gfx_FillTriangle_NoClip(318, 3, 318, 236, 318, 3);

    /* Wait for any key */
    while (!os_GetCSC());

    /* Close the graphics */
    gfx_End();
}