Compare commits

..

2 Commits

Author SHA1 Message Date
9e2bb23c8a Классный зум 2026-02-26 19:06:36 +03:00
a1f31d76c7 Тулзы перенесены в свой каталог 2026-02-26 19:02:36 +03:00
9 changed files with 18 additions and 12 deletions

View File

@@ -8,8 +8,8 @@ const Rect_i = basic_models.Rect_i;
const Size_i = basic_models.Size_i; const Size_i = basic_models.Size_i;
const Point2_f = @import("models/basic_models.zig").Point2_f; const Point2_f = @import("models/basic_models.zig").Point2_f;
const Color = dvui.Color; const Color = dvui.Color;
const tools = @import("tools.zig"); const tools = @import("toolbar/tools.zig");
const Toolbar = @import("Toolbar.zig"); const Toolbar = @import("toolbar/Toolbar.zig");
const random_document = @import("random_document.zig"); const random_document = @import("random_document.zig");
const Canvas = @This(); const Canvas = @This();
@@ -99,6 +99,11 @@ pub fn addZoom(self: *Canvas, value: f32) void {
self._zoom = @max(self._zoom, 0.01); self._zoom = @max(self._zoom, 0.01);
} }
pub fn multZoom(self: *Canvas, value: f32) void {
self._zoom *= value;
self._zoom = @max(self._zoom, 0.01);
}
pub fn getZoom(self: Canvas) f32 { pub fn getZoom(self: Canvas) f32 {
return self._zoom; return self._zoom;
} }

View File

@@ -1,5 +1,5 @@
const Point2_f = @import("models/basic_models.zig").Point2_f; const Point2_f = @import("../models/basic_models.zig").Point2_f;
const Canvas = @import("Canvas.zig"); const Canvas = @import("../Canvas.zig");
pub const ToolContext = struct { pub const ToolContext = struct {
canvas: *Canvas, canvas: *Canvas,

View File

@@ -3,7 +3,7 @@ const line = @import("tools/line.zig");
const ellipse = @import("tools/ellipse.zig"); const ellipse = @import("tools/ellipse.zig");
const arc = @import("tools/arc.zig"); const arc = @import("tools/arc.zig");
const broken = @import("tools/broken.zig"); const broken = @import("tools/broken.zig");
const icons = @import("icons.zig"); const icons = @import("../icons.zig");
pub const default_tools = [_]Toolbar.ToolDescriptor{ pub const default_tools = [_]Toolbar.ToolDescriptor{
.{ .{

View File

@@ -1,5 +1,5 @@
const Tool = @import("../Tool.zig"); const Tool = @import("../Tool.zig");
const shape = @import("../models/shape/shape.zig"); const shape = @import("../../models/shape/shape.zig");
fn onCanvasClick(ctx: *const Tool.ToolContext) !void { fn onCanvasClick(ctx: *const Tool.ToolContext) !void {
const canvas = ctx.canvas; const canvas = ctx.canvas;

View File

@@ -1,5 +1,5 @@
const Tool = @import("../Tool.zig"); const Tool = @import("../Tool.zig");
const shape = @import("../models/shape/shape.zig"); const shape = @import("../../models/shape/shape.zig");
fn onCanvasClick(ctx: *const Tool.ToolContext) !void { fn onCanvasClick(ctx: *const Tool.ToolContext) !void {
const canvas = ctx.canvas; const canvas = ctx.canvas;

View File

@@ -1,5 +1,5 @@
const Tool = @import("../Tool.zig"); const Tool = @import("../Tool.zig");
const shape = @import("../models/shape/shape.zig"); const shape = @import("../../models/shape/shape.zig");
fn onCanvasClick(ctx: *const Tool.ToolContext) !void { fn onCanvasClick(ctx: *const Tool.ToolContext) !void {
const canvas = ctx.canvas; const canvas = ctx.canvas;

View File

@@ -1,7 +1,7 @@
const std = @import("std"); const std = @import("std");
const Canvas = @import("../Canvas.zig"); const Canvas = @import("../../Canvas.zig");
const Tool = @import("../Tool.zig"); const Tool = @import("../Tool.zig");
const shape = @import("../models/shape/shape.zig"); const shape = @import("../../models/shape/shape.zig");
fn onCanvasClick(ctx: *const Tool.ToolContext) !void { fn onCanvasClick(ctx: *const Tool.ToolContext) !void {
const canvas = ctx.canvas; const canvas = ctx.canvas;

View File

@@ -3,7 +3,7 @@ const dvui = @import("dvui");
const dvui_ext = @import("dvui_ext.zig"); const dvui_ext = @import("dvui_ext.zig");
const Canvas = @import("../Canvas.zig"); const Canvas = @import("../Canvas.zig");
const Rect_i = @import("../models/basic_models.zig").Rect_i; const Rect_i = @import("../models/basic_models.zig").Rect_i;
const Tool = @import("../Tool.zig"); const Tool = @import("../toolbar/Tool.zig");
pub fn canvasView(canvas: *Canvas, content_rect_scale: dvui.RectScale) void { pub fn canvasView(canvas: *Canvas, content_rect_scale: dvui.RectScale) void {
var textured = dvui_ext.texturedBox(content_rect_scale, dvui.Rect.all(20)); var textured = dvui_ext.texturedBox(content_rect_scale, dvui.Rect.all(20));
@@ -135,7 +135,8 @@ fn handleCanvasZoom(canvas: *Canvas, scroll: anytype) void {
}; };
const doc_pt = canvas.contentPointToDocument(content_pt, natural_scale); const doc_pt = canvas.contentPointToDocument(content_pt, natural_scale);
canvas.addZoom(y / 1000); // canvas.addZoom(y / 1000);
canvas.multZoom(1 + y / 3000);
canvas.requestRedraw(); canvas.requestRedraw();
// Сдвигаем viewport так, чтобы точка под курсором (даже вне холста) не уезжала // Сдвигаем viewport так, чтобы точка под курсором (даже вне холста) не уезжала