1234567891011121314151617181920212223242526272829303132333435363738394041 |
- const std = @import("std");
- const Canvas = @import("canvas.zig").Canvas;
- pub const ToolType = enum {
- Brush,
- Eraser,
- };
- pub const Tools = struct {
- current_tool: ToolType,
- brush_size: u32,
- color: u32, // RGBA 格式
- pub fn init() Tools {
- return Tools{
- .current_tool = .Brush,
- .brush_size = 5,
- .color = 0xFF0000FF, // 默认红色
- };
- }
- pub fn handleMouseDown(self: *Tools, x: i32, y: i32, canvas: *Canvas) void {
- self.draw(x, y, canvas);
- }
- pub fn handleMouseMotion(self: *Tools, x: i32, y: i32, canvas: *Canvas) void {
- self.draw(x, y, canvas);
- }
- fn draw(self: *Tools, x: i32, y: i32, canvas: *Canvas) void {
- const color = if (self.current_tool == .Eraser) 0xFFFFFFFF else self.color;
- const size = self.brush_size;
- var dy: i32 = -@as(i32, @intCast(size / 2));
- while (dy <= size / 2) : (dy += 1) {
- var dx: i32 = -@as(i32, @intCast(size / 2));
- while (dx <= size / 2) : (dx += 1) {
- canvas.setPixel(x + dx, y + dy, color);
- }
- }
- }
- };
|