Убраны лишние комментарии
This commit is contained in:
@@ -17,7 +17,7 @@ const default_common_data = [_]PropertyData{
|
||||
.{ .visible = true },
|
||||
.{ .opacity = 1.0 },
|
||||
.{ .locked = false },
|
||||
.{ .stroke_rgba = 0x000000FF }, // 0xRRGGBBAA: чёрный, полная непрозрачность
|
||||
.{ .stroke_rgba = 0x000000FF }, // чёрный, полная непрозрачность
|
||||
.{ .thickness = 2.0 },
|
||||
};
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@ pub const Data = union(enum) {
|
||||
|
||||
points: std.ArrayList(Point2_f),
|
||||
|
||||
/// Цвет заливки: u32 в формате 0xRRGGBBAA (R старший байт, A младший).
|
||||
/// Цвет заливки, 0xRRGGBBAA.
|
||||
fill_rgba: u32,
|
||||
/// Цвет обводки: u32 в формате 0xRRGGBBAA (R старший байт, A младший).
|
||||
/// Цвет обводки, 0xRRGGBBAA.
|
||||
stroke_rgba: u32,
|
||||
|
||||
thickness: f32,
|
||||
|
||||
@@ -20,7 +20,6 @@ pub const Point2_f = struct {
|
||||
y: f32 = 0,
|
||||
};
|
||||
|
||||
/// Целочисленная точка (например, координаты в буфере пикселей).
|
||||
pub const Point2_i = struct {
|
||||
x: i32 = 0,
|
||||
y: i32 = 0,
|
||||
@@ -36,7 +35,6 @@ pub const Scale2_f = struct {
|
||||
scale_y: f32 = 1,
|
||||
};
|
||||
|
||||
/// Прямоугольник в координатах документа (f32), например локальные границы объекта.
|
||||
pub const Rect_f = struct {
|
||||
x: f32 = 0,
|
||||
y: f32 = 0,
|
||||
|
||||
@@ -4,19 +4,19 @@ const PropertyData = @import("../Property.zig").Data;
|
||||
const Rect_f = @import("../basic_models.zig").Rect_f;
|
||||
const shape_mod = @import("shape.zig");
|
||||
|
||||
/// Теги обязательных свойств (заглушка: arc пока не реализован).
|
||||
/// Теги обязательных свойств (arc не реализован).
|
||||
pub fn getRequiredTags() []const std.meta.Tag(PropertyData) {
|
||||
return &[_]std.meta.Tag(PropertyData){};
|
||||
}
|
||||
|
||||
/// Добавляет свойства по умолчанию для дуги (заглушка).
|
||||
/// Добавляет свойства по умолчанию для дуги.
|
||||
pub fn appendDefaultShapeProperties(allocator: std.mem.Allocator, obj: *Object) !void {
|
||||
_ = allocator;
|
||||
_ = obj;
|
||||
return error.ArcNotImplemented;
|
||||
}
|
||||
|
||||
/// Локальные границы дуги (заглушка: пока не реализовано).
|
||||
/// Локальные границы дуги (не реализовано).
|
||||
pub fn getLocalBounds(obj: *const Object) !Rect_f {
|
||||
try shape_mod.ensure(obj, .arc);
|
||||
return error.ArcNotImplemented;
|
||||
|
||||
@@ -6,28 +6,28 @@ const Point2_f = @import("../basic_models.zig").Point2_f;
|
||||
const Rect_f = @import("../basic_models.zig").Rect_f;
|
||||
const shape_mod = @import("shape.zig");
|
||||
|
||||
/// Точки ломаной по умолчанию (для создания).
|
||||
/// Точки ломаной по умолчанию.
|
||||
pub const default_points = [_]Point2_f{
|
||||
.{ .x = 0, .y = 0 },
|
||||
.{ .x = 80, .y = 0 },
|
||||
.{ .x = 80, .y = 60 },
|
||||
};
|
||||
|
||||
/// Теги обязательных свойств (у ломаной нет const default_shape_properties, только default_points).
|
||||
/// Теги обязательных свойств.
|
||||
pub fn getRequiredTags() []const std.meta.Tag(PropertyData) {
|
||||
return &[_]std.meta.Tag(PropertyData){
|
||||
.points,
|
||||
};
|
||||
}
|
||||
|
||||
/// Добавляет к объекту свойства по умолчанию для ломаной (points из default_points).
|
||||
/// Добавляет к объекту свойства по умолчанию для ломаной.
|
||||
pub fn appendDefaultShapeProperties(allocator: std.mem.Allocator, obj: *Object) !void {
|
||||
var points = std.ArrayList(Point2_f).empty;
|
||||
try points.appendSlice(allocator, &default_points);
|
||||
try obj.properties.append(allocator, .{ .data = .{ .points = points } });
|
||||
}
|
||||
|
||||
/// Локальные границы ломаной: AABB по всем точкам.
|
||||
/// Локальные границы: AABB по точкам.
|
||||
pub fn getLocalBounds(obj: *const Object) !Rect_f {
|
||||
try shape_mod.ensure(obj, .broken);
|
||||
const p = obj.getProperty(.points).?;
|
||||
|
||||
@@ -5,12 +5,12 @@ const PropertyData = @import("../Property.zig").Data;
|
||||
const Rect_f = @import("../basic_models.zig").Rect_f;
|
||||
const shape_mod = @import("shape.zig");
|
||||
|
||||
/// Свойства фигуры по умолчанию (для создания и проверки типа). Теги для ensure выводятся отсюда.
|
||||
/// Свойства фигуры по умолчанию.
|
||||
pub const default_shape_properties = [_]Property{
|
||||
.{ .data = .{ .radii = .{ .x = 50, .y = 50 } } },
|
||||
};
|
||||
|
||||
/// Теги обязательных свойств (выводятся из default_shape_properties).
|
||||
/// Теги обязательных свойств.
|
||||
pub fn getRequiredTags() []const std.meta.Tag(PropertyData) {
|
||||
return &([_]std.meta.Tag(PropertyData){std.meta.activeTag(default_shape_properties[0].data)});
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@ const PropertyData = @import("../Property.zig").Data;
|
||||
const Rect_f = @import("../basic_models.zig").Rect_f;
|
||||
const shape_mod = @import("shape.zig");
|
||||
|
||||
/// Свойства фигуры по умолчанию (для создания и проверки типа). Теги для ensure выводятся отсюда.
|
||||
/// Свойства фигуры по умолчанию.
|
||||
pub const default_shape_properties = [_]Property{
|
||||
.{ .data = .{ .end_point = .{ .x = 100, .y = 0 } } },
|
||||
};
|
||||
|
||||
/// Теги обязательных свойств (выводятся из default_shape_properties).
|
||||
/// Теги обязательных свойств.
|
||||
pub fn getRequiredTags() []const std.meta.Tag(PropertyData) {
|
||||
return &([_]std.meta.Tag(PropertyData){std.meta.activeTag(default_shape_properties[0].data)});
|
||||
}
|
||||
@@ -20,7 +20,7 @@ pub fn appendDefaultShapeProperties(allocator: std.mem.Allocator, obj: *Object)
|
||||
for (default_shape_properties) |prop| try obj.properties.append(allocator, prop);
|
||||
}
|
||||
|
||||
/// Локальные границы линии: от (0,0) до end_point.
|
||||
/// Локальные границы: от (0,0) до end_point.
|
||||
pub fn getLocalBounds(obj: *const Object) !Rect_f {
|
||||
try shape_mod.ensure(obj, .line);
|
||||
const ep = obj.getProperty(.end_point).?;
|
||||
|
||||
@@ -11,7 +11,7 @@ const arc = @import("arc.zig");
|
||||
|
||||
pub const Rect = basic_models.Rectf;
|
||||
|
||||
/// Создаёт объект с общими свойствами по умолчанию и специфичными для типа фигуры.
|
||||
/// Создаёт объект с дефолтными общими и фигурными свойствами.
|
||||
pub fn createObject(allocator: std.mem.Allocator, shape_kind: Object.ShapeKind) !Object {
|
||||
var obj = try createWithCommonProperties(allocator, shape_kind);
|
||||
errdefer obj.deinit(allocator);
|
||||
@@ -35,7 +35,7 @@ fn createWithCommonProperties(allocator: std.mem.Allocator, shape_kind: Object.S
|
||||
};
|
||||
}
|
||||
|
||||
/// Проверяет, что объект имеет ожидаемый тип и все требуемые для этого типа свойства.
|
||||
/// Проверяет тип объекта и наличие обязательных свойств.
|
||||
pub fn ensure(obj: *const Object, expected_kind: Object.ShapeKind) !void {
|
||||
if (obj.shape != expected_kind) return error.WrongShapeKind;
|
||||
const tags = requiredTagsFor(expected_kind);
|
||||
@@ -53,7 +53,7 @@ fn requiredTagsFor(kind: Object.ShapeKind) []const std.meta.Tag(PropertyData) {
|
||||
};
|
||||
}
|
||||
|
||||
/// Локальные границы объекта (AABB в своих координатах).
|
||||
/// Локальные границы (AABB).
|
||||
pub fn getLocalBounds(obj: *const Object) !Rect {
|
||||
return switch (obj.shape) {
|
||||
.line => line.getLocalBounds(obj),
|
||||
|
||||
Reference in New Issue
Block a user