#include #include #include #include Image *back; // Background image for drawing int gridsize = 16; // Size of each grid cell int gridwidth = 10; // Number of grid columns int gridheight = 10; // Number of grid rows Mouse mouse; void drawgrid(void) { int x, y; for (x = 0; x <= gridwidth; x++) { line(back, Pt(x * gridsize, 0), Pt(x * gridsize, gridheight * gridsize), Endsquare, Endsquare, 0, display->black, ZP); } for (y = 0; y <= gridheight; y++) { line(back, Pt(0, y * gridsize), Pt(gridwidth * gridsize, y * gridsize), Endsquare, Endsquare, 0, display->black, ZP); } } void fillcell(int x, int y, ulong color) { Rectangle r = Rect(x * gridsize, y * gridsize, (x + 1) * gridsize, (y + 1) * gridsize); draw(back, r, display->black, nil, ZP); flushimage(display, 1); } void main(void) { if (initdraw(0, 0, "Pixel Art Tool") < 0) sysfatal("initdraw failed: %r"); back = screen; drawgrid(); // Draw the initial grid flushimage(display, 1); for (;;) { mouse = emouse(); // Fetch mouse event if (mouse.buttons & 1) { // Left mouse button clicked int cellx = mouse.xy.x / gridsize; int celly = mouse.xy.y / gridsize; fillcell(cellx, celly, display->black->chan); // Fill the clicked cell } if (ekbd() == 'q') { // Check for 'q' key press to exit exits(0); } } }