#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) * 3; } char* createBuffer(int w, int h, int color) { char* buf = malloc(8 + w * h * 3); *((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 & 511; *(pixel(buf, x, y) + 1) = (color >> 8) & 511; *(pixel(buf, x, y) + 2) = color >> 16; } } /* 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, 24, NULL, 3 * (gw(buf) - w)); }