#include <stdint.h>
const int WIDTH = 320;
const int HEIGHT = 240;
const int RADIUS = 10;
void drawPixel(int x, int y, uint16_t color) {
// code to draw a single pixel at (x, y) with the specified color
}
void drawRectangle(int x, int y, int width, int height, uint16_t color) {
for (int i = x; i < x + width; i++) {
for (int j = y; j < y + height; j++) {
drawPixel(i, j, color);
}
}
}
void drawCircle(int x, int y, int r, uint16_t color) {
for (int i = x - r; i <= x + r; i++) {
for (int j = y - r; j <= y + r; j++) {
if ((i - x) * (i - x) + (j - y) * (j - y) <= r * r) {
drawPixel(i, j, color);
}
}
}
}
void drawRoundedRectangle(int x, int y, int width, int height, uint16_t color) {
drawRectangle(x + RADIUS, y, width - 2 * RADIUS, height, color);
drawRectangle(x, y + RADIUS, RADIUS, height - 2 * RADIUS, color);
drawRectangle(x + width - RADIUS, y + RADIUS, RADIUS, height - 2 * RADIUS, color);
drawCircle(x + RADIUS, y + RADIUS, RADIUS, color);
drawCircle(x + width - RADIUS, y + RADIUS, RADIUS, color);
drawCircle(x + RADIUS, y + height - RADIUS, RADIUS, color);
drawCircle(x + width - RADIUS, y + height - RADIUS, RADIUS, color);
}
int main() {
drawRoundedRectangle(50, 50, 200, 100, 0xF800);
return 0;
}
I2luY2x1ZGUgPHN0ZGludC5oPgoKY29uc3QgaW50IFdJRFRIID0gMzIwOwpjb25zdCBpbnQgSEVJR0hUID0gMjQwOwpjb25zdCBpbnQgUkFESVVTID0gMTA7Cgp2b2lkIGRyYXdQaXhlbChpbnQgeCwgaW50IHksIHVpbnQxNl90IGNvbG9yKSB7CiAgICAvLyBjb2RlIHRvIGRyYXcgYSBzaW5nbGUgcGl4ZWwgYXQgKHgsIHkpIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcgp9Cgp2b2lkIGRyYXdSZWN0YW5nbGUoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQxNl90IGNvbG9yKSB7CiAgICBmb3IgKGludCBpID0geDsgaSA8IHggKyB3aWR0aDsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IHk7IGogPCB5ICsgaGVpZ2h0OyBqKyspIHsKICAgICAgICAgICAgZHJhd1BpeGVsKGksIGosIGNvbG9yKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgZHJhd0NpcmNsZShpbnQgeCwgaW50IHksIGludCByLCB1aW50MTZfdCBjb2xvcikgewogICAgZm9yIChpbnQgaSA9IHggLSByOyBpIDw9IHggKyByOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0geSAtIHI7IGogPD0geSArIHI7IGorKykgewogICAgICAgICAgICBpZiAoKGkgLSB4KSAqIChpIC0geCkgKyAoaiAtIHkpICogKGogLSB5KSA8PSByICogcikgewogICAgICAgICAgICAgICAgZHJhd1BpeGVsKGksIGosIGNvbG9yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBkcmF3Um91bmRlZFJlY3RhbmdsZShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDE2X3QgY29sb3IpIHsKICAgIGRyYXdSZWN0YW5nbGUoeCArIFJBRElVUywgeSwgd2lkdGggLSAyICogUkFESVVTLCBoZWlnaHQsIGNvbG9yKTsKICAgIGRyYXdSZWN0YW5nbGUoeCwgeSArIFJBRElVUywgUkFESVVTLCBoZWlnaHQgLSAyICogUkFESVVTLCBjb2xvcik7CiAgICBkcmF3UmVjdGFuZ2xlKHggKyB3aWR0aCAtIFJBRElVUywgeSArIFJBRElVUywgUkFESVVTLCBoZWlnaHQgLSAyICogUkFESVVTLCBjb2xvcik7CiAgICBkcmF3Q2lyY2xlKHggKyBSQURJVVMsIHkgKyBSQURJVVMsIFJBRElVUywgY29sb3IpOwogICAgZHJhd0NpcmNsZSh4ICsgd2lkdGggLSBSQURJVVMsIHkgKyBSQURJVVMsIFJBRElVUywgY29sb3IpOwogICAgZHJhd0NpcmNsZSh4ICsgUkFESVVTLCB5ICsgaGVpZ2h0IC0gUkFESVVTLCBSQURJVVMsIGNvbG9yKTsKICAgIGRyYXdDaXJjbGUoeCArIHdpZHRoIC0gUkFESVVTLCB5ICsgaGVpZ2h0IC0gUkFESVVTLCBSQURJVVMsIGNvbG9yKTsKfQoKaW50IG1haW4oKSB7CiAgICBkcmF3Um91bmRlZFJlY3RhbmdsZSg1MCwgNTAsIDIwMCwgMTAwLCAweEY4MDApOwogICAgcmV0dXJuIDA7Cn0K