Nuvoton
/
NuMaker-mbed-emWin-example
NuMaker emWin HMI
tslib/testutils.c@6:d15151941247, 7 months ago (annotated)
- Committer:
- csyang2
- Date:
- Tue Feb 27 17:03:21 2024 +0800
- Revision:
- 6:d15151941247
- Parent:
- 1:c0f972361605
- Child:
- 9:1286ec7f3230
Update lcd and touch for M487
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
csyang2 |
1:c0f972361605 | 1 | /* |
csyang2 |
1:c0f972361605 | 2 | * tslib/src/ts_getxy.c |
csyang2 |
1:c0f972361605 | 3 | * |
csyang2 |
1:c0f972361605 | 4 | * Copyright (C) 2001 Russell King. |
csyang2 |
1:c0f972361605 | 5 | * |
csyang2 |
1:c0f972361605 | 6 | * This file is placed under the GPL. Please see the file |
csyang2 |
1:c0f972361605 | 7 | * COPYING for more details. |
csyang2 |
1:c0f972361605 | 8 | * |
csyang2 |
1:c0f972361605 | 9 | * $Id: testutils.c,v 1.2 2004/10/19 22:01:27 dlowder Exp $ |
csyang2 |
1:c0f972361605 | 10 | * |
csyang2 |
1:c0f972361605 | 11 | * Waits for the screen to be touched, averages x and y sample |
csyang2 |
1:c0f972361605 | 12 | * coordinates until the end of contact |
csyang2 |
1:c0f972361605 | 13 | */ |
csyang2 |
1:c0f972361605 | 14 | |
csyang2 |
1:c0f972361605 | 15 | //#include "config.h" |
csyang2 |
1:c0f972361605 | 16 | #include <stdio.h> |
csyang2 |
1:c0f972361605 | 17 | #include <stdlib.h> |
csyang2 |
1:c0f972361605 | 18 | //#include <unistd.h> |
csyang2 |
1:c0f972361605 | 19 | //#include <sys/time.h> |
csyang2 |
1:c0f972361605 | 20 | //#include "wbio.h" |
csyang2 |
1:c0f972361605 | 21 | //#include "wbtypes.h" |
csyang2 |
1:c0f972361605 | 22 | //#include "wblib.h" |
csyang2 |
1:c0f972361605 | 23 | #include "tslib.h" |
csyang2 |
1:c0f972361605 | 24 | #include "fbutils.h" |
csyang2 |
6:d15151941247 | 25 | #include "TouchPanel.h" |
csyang2 |
1:c0f972361605 | 26 | #include "GUI.h" |
csyang2 |
1:c0f972361605 | 27 | |
csyang2 |
1:c0f972361605 | 28 | static int sort_by_x(const void* a, const void *b) |
csyang2 |
1:c0f972361605 | 29 | { |
csyang2 |
1:c0f972361605 | 30 | return (((struct ts_sample *)a)->x - ((struct ts_sample *)b)->x); |
csyang2 |
1:c0f972361605 | 31 | } |
csyang2 |
1:c0f972361605 | 32 | |
csyang2 |
1:c0f972361605 | 33 | static int sort_by_y(const void* a, const void *b) |
csyang2 |
1:c0f972361605 | 34 | { |
csyang2 |
1:c0f972361605 | 35 | return (((struct ts_sample *)a)->y - ((struct ts_sample *)b)->y); |
csyang2 |
1:c0f972361605 | 36 | } |
csyang2 |
1:c0f972361605 | 37 | |
csyang2 |
1:c0f972361605 | 38 | void getxy(int *x, int *y) |
csyang2 |
1:c0f972361605 | 39 | { |
csyang2 |
1:c0f972361605 | 40 | #define MAX_SAMPLES 128 |
csyang2 |
1:c0f972361605 | 41 | struct ts_sample samp[MAX_SAMPLES]; |
csyang2 |
1:c0f972361605 | 42 | int index, middle; |
csyang2 |
1:c0f972361605 | 43 | int sumx, sumy; |
csyang2 |
1:c0f972361605 | 44 | |
csyang2 |
1:c0f972361605 | 45 | printf("getxy\n"); |
csyang2 |
1:c0f972361605 | 46 | again: |
csyang2 |
1:c0f972361605 | 47 | do |
csyang2 |
1:c0f972361605 | 48 | { |
csyang2 |
1:c0f972361605 | 49 | if ( Read_TouchPanel(&sumx, &sumy) > 0 ) |
csyang2 |
1:c0f972361605 | 50 | { |
csyang2 |
1:c0f972361605 | 51 | if ( (sumx < 0) || ( sumy < 0 ) ) |
csyang2 |
1:c0f972361605 | 52 | continue; |
csyang2 |
1:c0f972361605 | 53 | break; |
csyang2 |
1:c0f972361605 | 54 | } |
csyang2 |
1:c0f972361605 | 55 | } |
csyang2 |
1:c0f972361605 | 56 | while (1); |
csyang2 |
1:c0f972361605 | 57 | |
csyang2 |
1:c0f972361605 | 58 | /* Now collect up to MAX_SAMPLES touches into the samp array. */ |
csyang2 |
1:c0f972361605 | 59 | index = 0; |
csyang2 |
1:c0f972361605 | 60 | do |
csyang2 |
1:c0f972361605 | 61 | { |
csyang2 |
1:c0f972361605 | 62 | if (index < MAX_SAMPLES-1) |
csyang2 |
1:c0f972361605 | 63 | index++; |
csyang2 |
1:c0f972361605 | 64 | if ( Read_TouchPanel(&sumx, &sumy) > 0) |
csyang2 |
1:c0f972361605 | 65 | { |
csyang2 |
1:c0f972361605 | 66 | samp[index].x = sumx; |
csyang2 |
1:c0f972361605 | 67 | samp[index].y = sumy; |
csyang2 |
1:c0f972361605 | 68 | samp[index].pressure = 1000; |
csyang2 |
1:c0f972361605 | 69 | } |
csyang2 |
1:c0f972361605 | 70 | else |
csyang2 |
1:c0f972361605 | 71 | { |
csyang2 |
1:c0f972361605 | 72 | samp[index].x = samp[index-1].x; |
csyang2 |
1:c0f972361605 | 73 | samp[index].y = samp[index-1].y; |
csyang2 |
1:c0f972361605 | 74 | samp[index].pressure = 0; |
csyang2 |
1:c0f972361605 | 75 | } |
csyang2 |
1:c0f972361605 | 76 | |
csyang2 |
1:c0f972361605 | 77 | // printf("%d %d %d\n", samp[index].x, samp[index].y , samp[index].pressure); |
csyang2 |
1:c0f972361605 | 78 | } |
csyang2 |
1:c0f972361605 | 79 | while (samp[index].pressure > 0); |
csyang2 |
1:c0f972361605 | 80 | //printf("Took %d samples...\n",index); |
csyang2 |
1:c0f972361605 | 81 | |
csyang2 |
1:c0f972361605 | 82 | /* |
csyang2 |
1:c0f972361605 | 83 | * At this point, we have samples in indices zero to (index-1) |
csyang2 |
1:c0f972361605 | 84 | * which means that we have (index) number of samples. We want |
csyang2 |
1:c0f972361605 | 85 | * to calculate the median of the samples so that wild outliers |
csyang2 |
1:c0f972361605 | 86 | * don't skew the result. First off, let's assume that arrays |
csyang2 |
1:c0f972361605 | 87 | * are one-based instead of zero-based. If this were the case |
csyang2 |
1:c0f972361605 | 88 | * and index was odd, we would need sample number ((index+1)/2) |
csyang2 |
1:c0f972361605 | 89 | * of a sorted array; if index was even, we would need the |
csyang2 |
1:c0f972361605 | 90 | * average of sample number (index/2) and sample number |
csyang2 |
1:c0f972361605 | 91 | * ((index/2)+1). To turn this into something useful for the |
csyang2 |
1:c0f972361605 | 92 | * real world, we just need to subtract one off of the sample |
csyang2 |
1:c0f972361605 | 93 | * numbers. So for when index is odd, we need sample number |
csyang2 |
1:c0f972361605 | 94 | * (((index+1)/2)-1). Due to integer division truncation, we |
csyang2 |
1:c0f972361605 | 95 | * can simplify this to just (index/2). When index is even, we |
csyang2 |
1:c0f972361605 | 96 | * need the average of sample number ((index/2)-1) and sample |
csyang2 |
1:c0f972361605 | 97 | * number (index/2). Calculate (index/2) now and we'll handle |
csyang2 |
1:c0f972361605 | 98 | * the even odd stuff after we sort. |
csyang2 |
1:c0f972361605 | 99 | */ |
csyang2 |
1:c0f972361605 | 100 | middle = index/2; |
csyang2 |
1:c0f972361605 | 101 | if (x) |
csyang2 |
1:c0f972361605 | 102 | { |
csyang2 |
1:c0f972361605 | 103 | qsort(samp, index, sizeof(struct ts_sample), sort_by_x); |
csyang2 |
1:c0f972361605 | 104 | if (index & 1) |
csyang2 |
1:c0f972361605 | 105 | *x = samp[middle].x; |
csyang2 |
1:c0f972361605 | 106 | else |
csyang2 |
1:c0f972361605 | 107 | *x = (samp[middle-1].x + samp[middle].x) / 2; |
csyang2 |
1:c0f972361605 | 108 | } |
csyang2 |
1:c0f972361605 | 109 | if (y) |
csyang2 |
1:c0f972361605 | 110 | { |
csyang2 |
1:c0f972361605 | 111 | qsort(samp, index, sizeof(struct ts_sample), sort_by_y); |
csyang2 |
1:c0f972361605 | 112 | if (index & 1) |
csyang2 |
1:c0f972361605 | 113 | *y = samp[middle].y; |
csyang2 |
1:c0f972361605 | 114 | else |
csyang2 |
1:c0f972361605 | 115 | *y = (samp[middle-1].y + samp[middle].y) / 2; |
csyang2 |
1:c0f972361605 | 116 | } |
csyang2 |
1:c0f972361605 | 117 | if ( (index <= 3) || ( *x < 0) || ( *y < 0 ) ) |
csyang2 |
1:c0f972361605 | 118 | goto again; |
csyang2 |
1:c0f972361605 | 119 | } |
csyang2 |
1:c0f972361605 | 120 | |
csyang2 |
1:c0f972361605 | 121 | extern int ts_phy2log(int *sumx, int *sumy); |
csyang2 |
1:c0f972361605 | 122 | |
csyang2 |
1:c0f972361605 | 123 | static int palette [] = |
csyang2 |
1:c0f972361605 | 124 | { |
csyang2 |
1:c0f972361605 | 125 | /*0x000000, 0xffe080, 0xffffff, 0xe0c0a0, 0x304050, 0x80b8c0*/ |
csyang2 |
1:c0f972361605 | 126 | GUI_MAKE_COLOR(0x000000), GUI_MAKE_COLOR(0x80e0ff), GUI_MAKE_COLOR(0xffffff), GUI_MAKE_COLOR(0xa0c0e0), GUI_MAKE_COLOR(0x504030), GUI_MAKE_COLOR(0xc0b880), |
csyang2 |
1:c0f972361605 | 127 | GUI_MAKE_COLOR(0x7F1F00), GUI_MAKE_COLOR(0x20201F), GUI_MAKE_COLOR(0x5F3F1F), GUI_MAKE_COLOR(0xAFBFCF), GUI_MAKE_COLOR(0xF080D0), GUI_MAKE_COLOR(0x3F477F), |
csyang2 |
1:c0f972361605 | 128 | GUI_MAKE_COLOR(0x207820) |
csyang2 |
1:c0f972361605 | 129 | }; |
csyang2 |
1:c0f972361605 | 130 | #define NR_COLORS (sizeof (palette) / sizeof (palette [0])) |
csyang2 |
1:c0f972361605 | 131 | |
csyang2 |
1:c0f972361605 | 132 | #define NR_BUTTONS 3 |
csyang2 |
1:c0f972361605 | 133 | struct ts_button |
csyang2 |
1:c0f972361605 | 134 | { |
csyang2 |
1:c0f972361605 | 135 | int x, y, w, h; |
csyang2 |
1:c0f972361605 | 136 | char *text; |
csyang2 |
1:c0f972361605 | 137 | int flags; |
csyang2 |
1:c0f972361605 | 138 | #define BUTTON_ACTIVE 0x00000001 |
csyang2 |
1:c0f972361605 | 139 | }; |
csyang2 |
1:c0f972361605 | 140 | static struct ts_button buttons [NR_BUTTONS]; |
csyang2 |
1:c0f972361605 | 141 | |
csyang2 |
1:c0f972361605 | 142 | /* [inactive] border fill text [active] border fill text */ |
csyang2 |
1:c0f972361605 | 143 | static int button_palette [6] = |
csyang2 |
1:c0f972361605 | 144 | { |
csyang2 |
1:c0f972361605 | 145 | 1, 4, 2, |
csyang2 |
1:c0f972361605 | 146 | 1, 5, 0 |
csyang2 |
1:c0f972361605 | 147 | }; |
csyang2 |
1:c0f972361605 | 148 | |
csyang2 |
1:c0f972361605 | 149 | void button_draw (struct ts_button *button) |
csyang2 |
1:c0f972361605 | 150 | { |
csyang2 |
1:c0f972361605 | 151 | int s = (button->flags & BUTTON_ACTIVE) ? 3 : 0; |
csyang2 |
1:c0f972361605 | 152 | |
csyang2 |
1:c0f972361605 | 153 | rect(button->x, button->y, button->x + button->w, |
csyang2 |
1:c0f972361605 | 154 | button->y + button->h, button_palette [s]); |
csyang2 |
1:c0f972361605 | 155 | fillrect(button->x + 1, button->y + 1, |
csyang2 |
1:c0f972361605 | 156 | button->x + button->w - 2, |
csyang2 |
1:c0f972361605 | 157 | button->y + button->h - 2, button_palette [s + 1]); |
csyang2 |
1:c0f972361605 | 158 | // put_string_center(button->x + button->w / 2, |
csyang2 |
1:c0f972361605 | 159 | // button->y + button->h / 2, |
csyang2 |
1:c0f972361605 | 160 | // button->text, button_palette [s + 2]); |
csyang2 |
1:c0f972361605 | 161 | |
csyang2 |
1:c0f972361605 | 162 | GUI_SetColor(palette[button_palette [s + 2]]); |
csyang2 |
1:c0f972361605 | 163 | GUI_DispStringHCenterAt(button->text, button->x + button->w / 2, button->y + button->h / 2); |
csyang2 |
1:c0f972361605 | 164 | } |
csyang2 |
1:c0f972361605 | 165 | |
csyang2 |
1:c0f972361605 | 166 | int button_handle (struct ts_button *button, int x, int y, unsigned int p) |
csyang2 |
1:c0f972361605 | 167 | { |
csyang2 |
1:c0f972361605 | 168 | int inside = (x >= button->x) && (y >= button->y) && |
csyang2 |
1:c0f972361605 | 169 | (x < button->x + button->w) && |
csyang2 |
1:c0f972361605 | 170 | (y < button->y + button->h); |
csyang2 |
1:c0f972361605 | 171 | |
csyang2 |
1:c0f972361605 | 172 | if (p > 0) |
csyang2 |
1:c0f972361605 | 173 | { |
csyang2 |
1:c0f972361605 | 174 | if (inside) |
csyang2 |
1:c0f972361605 | 175 | { |
csyang2 |
1:c0f972361605 | 176 | if (!(button->flags & BUTTON_ACTIVE)) |
csyang2 |
1:c0f972361605 | 177 | { |
csyang2 |
1:c0f972361605 | 178 | button->flags |= BUTTON_ACTIVE; |
csyang2 |
1:c0f972361605 | 179 | button_draw (button); |
csyang2 |
1:c0f972361605 | 180 | } |
csyang2 |
1:c0f972361605 | 181 | } |
csyang2 |
1:c0f972361605 | 182 | else if (button->flags & BUTTON_ACTIVE) |
csyang2 |
1:c0f972361605 | 183 | { |
csyang2 |
1:c0f972361605 | 184 | button->flags &= ~BUTTON_ACTIVE; |
csyang2 |
1:c0f972361605 | 185 | button_draw (button); |
csyang2 |
1:c0f972361605 | 186 | } |
csyang2 |
1:c0f972361605 | 187 | } |
csyang2 |
1:c0f972361605 | 188 | else if (button->flags & BUTTON_ACTIVE) |
csyang2 |
1:c0f972361605 | 189 | { |
csyang2 |
1:c0f972361605 | 190 | button->flags &= ~BUTTON_ACTIVE; |
csyang2 |
1:c0f972361605 | 191 | button_draw (button); |
csyang2 |
1:c0f972361605 | 192 | return 1; |
csyang2 |
1:c0f972361605 | 193 | } |
csyang2 |
1:c0f972361605 | 194 | |
csyang2 |
1:c0f972361605 | 195 | return 0; |
csyang2 |
1:c0f972361605 | 196 | } |
csyang2 |
1:c0f972361605 | 197 | |
csyang2 |
1:c0f972361605 | 198 | static void refresh_screen(void) |
csyang2 |
1:c0f972361605 | 199 | { |
csyang2 |
1:c0f972361605 | 200 | int i; |
csyang2 |
1:c0f972361605 | 201 | |
csyang2 |
1:c0f972361605 | 202 | // fillrect (0, 0, xres - 1, yres - 1, 0); |
csyang2 |
1:c0f972361605 | 203 | GUI_Clear(); |
csyang2 |
1:c0f972361605 | 204 | // put_string_center (xres/2, yres/4, "Touchscreen test program", 1); |
csyang2 |
1:c0f972361605 | 205 | // put_string_center (xres/2, yres/4+20,"Touch screen to move crosshair", 2); |
csyang2 |
1:c0f972361605 | 206 | |
csyang2 |
1:c0f972361605 | 207 | GUI_SetColor(palette[1]); |
csyang2 |
1:c0f972361605 | 208 | GUI_DispStringHCenterAt("Touchscreen test program", xres / 2, yres / 4); |
csyang2 |
1:c0f972361605 | 209 | |
csyang2 |
1:c0f972361605 | 210 | GUI_SetColor(palette[2]); |
csyang2 |
1:c0f972361605 | 211 | GUI_DispStringHCenterAt("Touch screen to move crosshair", xres / 2, yres / 4 + 20); |
csyang2 |
1:c0f972361605 | 212 | |
csyang2 |
1:c0f972361605 | 213 | for (i = 0; i < NR_BUTTONS; i++) |
csyang2 |
1:c0f972361605 | 214 | button_draw (&buttons [i]); |
csyang2 |
1:c0f972361605 | 215 | } |
csyang2 |
1:c0f972361605 | 216 | |
csyang2 |
1:c0f972361605 | 217 | int ts_test(int xsize, int ysize) |
csyang2 |
1:c0f972361605 | 218 | { |
csyang2 |
1:c0f972361605 | 219 | int sumx, sumy; |
csyang2 |
1:c0f972361605 | 220 | int x, y; |
csyang2 |
1:c0f972361605 | 221 | unsigned int i; |
csyang2 |
1:c0f972361605 | 222 | unsigned int mode = 0; |
csyang2 |
1:c0f972361605 | 223 | int quit_pressed = 0; |
csyang2 |
1:c0f972361605 | 224 | |
csyang2 |
1:c0f972361605 | 225 | xres = xsize; |
csyang2 |
1:c0f972361605 | 226 | yres = ysize; |
csyang2 |
1:c0f972361605 | 227 | |
csyang2 |
1:c0f972361605 | 228 | x = xres/2; |
csyang2 |
1:c0f972361605 | 229 | y = yres/2; |
csyang2 |
1:c0f972361605 | 230 | |
csyang2 |
1:c0f972361605 | 231 | for (i = 0; i < NR_COLORS; i++) |
csyang2 |
1:c0f972361605 | 232 | setcolor (i, palette [i]); |
csyang2 |
1:c0f972361605 | 233 | |
csyang2 |
1:c0f972361605 | 234 | /* Initialize buttons */ |
csyang2 |
1:c0f972361605 | 235 | //memset (&buttons, 0, sizeof (buttons)); |
csyang2 |
1:c0f972361605 | 236 | buttons [0].w = buttons [1].w = buttons [2].w = xres / 4; |
csyang2 |
1:c0f972361605 | 237 | buttons [0].h = buttons [1].h = buttons [2].h = 20; |
csyang2 |
1:c0f972361605 | 238 | buttons [0].x = 0; |
csyang2 |
1:c0f972361605 | 239 | buttons [1].x = (3 * xres) / 8; |
csyang2 |
1:c0f972361605 | 240 | buttons [2].x = (3 * xres) / 4 - 1; |
csyang2 |
1:c0f972361605 | 241 | buttons [0].y = buttons [1].y = buttons [2].y = 10; |
csyang2 |
1:c0f972361605 | 242 | buttons [0].text = "Drag"; |
csyang2 |
1:c0f972361605 | 243 | buttons [1].text = "Draw"; |
csyang2 |
1:c0f972361605 | 244 | buttons [2].text = "Quit"; |
csyang2 |
1:c0f972361605 | 245 | |
csyang2 |
1:c0f972361605 | 246 | refresh_screen (); |
csyang2 |
1:c0f972361605 | 247 | |
csyang2 |
1:c0f972361605 | 248 | while (1) |
csyang2 |
1:c0f972361605 | 249 | { |
csyang2 |
1:c0f972361605 | 250 | struct ts_sample samp; |
csyang2 |
1:c0f972361605 | 251 | |
csyang2 |
1:c0f972361605 | 252 | /* Show the cross */ |
csyang2 |
1:c0f972361605 | 253 | if ((mode & 15) != 1) |
csyang2 |
1:c0f972361605 | 254 | put_cross(x, y, 2 | XORMODE); |
csyang2 |
1:c0f972361605 | 255 | |
csyang2 |
1:c0f972361605 | 256 | if ( Read_TouchPanel(&sumx, &sumy) > 0) |
csyang2 |
1:c0f972361605 | 257 | { |
csyang2 |
1:c0f972361605 | 258 | ts_phy2log(&sumx, &sumy); |
csyang2 |
1:c0f972361605 | 259 | samp.x = sumx; |
csyang2 |
1:c0f972361605 | 260 | samp.y = sumy; |
csyang2 |
1:c0f972361605 | 261 | samp.pressure = 1000; |
csyang2 |
1:c0f972361605 | 262 | } |
csyang2 |
1:c0f972361605 | 263 | else |
csyang2 |
1:c0f972361605 | 264 | { |
csyang2 |
1:c0f972361605 | 265 | samp.x = x; |
csyang2 |
1:c0f972361605 | 266 | samp.y = y; |
csyang2 |
1:c0f972361605 | 267 | samp.pressure = 0; |
csyang2 |
1:c0f972361605 | 268 | } |
csyang2 |
1:c0f972361605 | 269 | GUI_Delay(30); |
csyang2 |
1:c0f972361605 | 270 | |
csyang2 |
1:c0f972361605 | 271 | /* Hide it */ |
csyang2 |
1:c0f972361605 | 272 | if ((mode & 15) != 1) |
csyang2 |
1:c0f972361605 | 273 | put_cross(x, y, 2 | XORMODE); |
csyang2 |
1:c0f972361605 | 274 | |
csyang2 |
1:c0f972361605 | 275 | for (i = 0; i < NR_BUTTONS; i++) |
csyang2 |
1:c0f972361605 | 276 | if (button_handle(&buttons [i], samp.x, samp.y, samp.pressure)) |
csyang2 |
1:c0f972361605 | 277 | switch (i) |
csyang2 |
1:c0f972361605 | 278 | { |
csyang2 |
1:c0f972361605 | 279 | case 0: |
csyang2 |
1:c0f972361605 | 280 | mode = 0; |
csyang2 |
1:c0f972361605 | 281 | refresh_screen (); |
csyang2 |
1:c0f972361605 | 282 | break; |
csyang2 |
1:c0f972361605 | 283 | case 1: |
csyang2 |
1:c0f972361605 | 284 | mode = 1; |
csyang2 |
1:c0f972361605 | 285 | refresh_screen (); |
csyang2 |
1:c0f972361605 | 286 | break; |
csyang2 |
1:c0f972361605 | 287 | case 2: |
csyang2 |
1:c0f972361605 | 288 | quit_pressed = 1; |
csyang2 |
1:c0f972361605 | 289 | } |
csyang2 |
1:c0f972361605 | 290 | |
csyang2 |
1:c0f972361605 | 291 | if (samp.pressure > 0) |
csyang2 |
1:c0f972361605 | 292 | { |
csyang2 |
1:c0f972361605 | 293 | if (mode == 0x80000001) |
csyang2 |
1:c0f972361605 | 294 | line (x, y, samp.x, samp.y, 2); |
csyang2 |
1:c0f972361605 | 295 | //pixel(x, y, 2); |
csyang2 |
1:c0f972361605 | 296 | x = samp.x; |
csyang2 |
1:c0f972361605 | 297 | y = samp.y; |
csyang2 |
1:c0f972361605 | 298 | mode |= 0x80000000; |
csyang2 |
1:c0f972361605 | 299 | } |
csyang2 |
1:c0f972361605 | 300 | else |
csyang2 |
1:c0f972361605 | 301 | mode &= ~0x80000000; |
csyang2 |
1:c0f972361605 | 302 | if (quit_pressed) |
csyang2 |
1:c0f972361605 | 303 | break; |
csyang2 |
1:c0f972361605 | 304 | } |
csyang2 |
1:c0f972361605 | 305 | // fillrect(0, 0, xres - 1, yres - 1, 0); |
csyang2 |
1:c0f972361605 | 306 | GUI_Clear(); |
csyang2 |
1:c0f972361605 | 307 | |
csyang2 |
1:c0f972361605 | 308 | return 0; |
csyang2 |
1:c0f972361605 | 309 | } |