#pragma once int gw(char *buf) { return *((int*)buf); } int gh(char *buf) { return *((int*)buf + 1); } char* pixel(char *buf, int x, int y) { return buf + 8 + (y * gw(buf) + x) * 4; } char* createBuffer(int w, int h, int color) { char* buf = malloc(8 + w * h * 4); *((int*)buf) = w; *((int*)buf + 1) = h; for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { *(pixel(buf, x, y) + 0) = (color ) & 0xFF; *(pixel(buf, x, y) + 1) = (color >> 8) & 0xFF; *(pixel(buf, x, y) + 2) = (color >> 16) & 0xFF; *(pixel(buf, x, y) + 3) = (color >> 24) & 0xFF; } } /* memset((char*)buf + 8, -1, h * w * 3); */ return buf; } void drawBuffer(char* buf, int wx, int wy, int x, int y, int w, int h) { ksys_draw_bitmap_palette(pixel(buf, x, y), wx, wy, w, h, 32, NULL, 4 * (gw(buf) - w)); // _ksys_draw_bitmap(pixel(buf, x, y), wx, wy, w, h); }