mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-04-12 10:48:39 +03:00
132 lines
2.5 KiB
Zig
132 lines
2.5 KiB
Zig
const std = @import("std");
|
|
const c = @import("c.zig").c;
|
|
const pixman = @import("main.zig");
|
|
|
|
pub const Op = enum(c_uint) {
|
|
clear = 0x00,
|
|
src = 0x01,
|
|
dst = 0x02,
|
|
over = 0x03,
|
|
over_reverse = 0x04,
|
|
in = 0x05,
|
|
in_reverse = 0x06,
|
|
out = 0x07,
|
|
out_reverse = 0x08,
|
|
atop = 0x09,
|
|
atop_reverse = 0x0a,
|
|
xor = 0x0b,
|
|
add = 0x0c,
|
|
saturate = 0x0d,
|
|
|
|
disjoint_clear = 0x10,
|
|
disjoint_src = 0x11,
|
|
disjoint_dst = 0x12,
|
|
disjoint_over = 0x13,
|
|
disjoint_over_reverse = 0x14,
|
|
disjoint_in = 0x15,
|
|
disjoint_in_reverse = 0x16,
|
|
disjoint_out = 0x17,
|
|
disjoint_out_reverse = 0x18,
|
|
disjoint_atop = 0x19,
|
|
disjoint_atop_reverse = 0x1a,
|
|
disjoint_xor = 0x1b,
|
|
|
|
conjoint_clear = 0x20,
|
|
conjoint_src = 0x21,
|
|
conjoint_dst = 0x22,
|
|
conjoint_over = 0x23,
|
|
conjoint_over_reverse = 0x24,
|
|
conjoint_in = 0x25,
|
|
conjoint_in_reverse = 0x26,
|
|
conjoint_out = 0x27,
|
|
conjoint_out_reverse = 0x28,
|
|
conjoint_atop = 0x29,
|
|
conjoint_atop_reverse = 0x2a,
|
|
conjoint_xor = 0x2b,
|
|
|
|
multiply = 0x30,
|
|
screen = 0x31,
|
|
overlay = 0x32,
|
|
darken = 0x33,
|
|
lighten = 0x34,
|
|
color_dodge = 0x35,
|
|
color_burn = 0x36,
|
|
hard_light = 0x37,
|
|
soft_light = 0x38,
|
|
difference = 0x39,
|
|
exclusion = 0x3a,
|
|
hsl_hue = 0x3b,
|
|
hsl_saturation = 0x3c,
|
|
hsl_color = 0x3d,
|
|
hsl_luminosity = 0x3e,
|
|
};
|
|
|
|
pub const Color = extern struct {
|
|
red: u16,
|
|
green: u16,
|
|
blue: u16,
|
|
alpha: u16,
|
|
};
|
|
|
|
pub const Fixed = enum(i32) {
|
|
_,
|
|
|
|
pub fn init(v: anytype) Fixed {
|
|
return switch (@TypeOf(v)) {
|
|
comptime_int, i32, u32 => @enumFromInt(v << 16),
|
|
f64 => @enumFromInt(@as(i32, @intFromFloat(v * 65536))),
|
|
else => {
|
|
@compileLog(@TypeOf(v));
|
|
@compileError("unsupported type");
|
|
},
|
|
};
|
|
}
|
|
};
|
|
|
|
pub const PointFixed = extern struct {
|
|
x: Fixed,
|
|
y: Fixed,
|
|
};
|
|
|
|
pub const LineFixed = extern struct {
|
|
p1: PointFixed,
|
|
p2: PointFixed,
|
|
};
|
|
|
|
pub const Triangle = extern struct {
|
|
p1: PointFixed,
|
|
p2: PointFixed,
|
|
p3: PointFixed,
|
|
};
|
|
|
|
pub const Trapezoid = extern struct {
|
|
top: Fixed,
|
|
bottom: Fixed,
|
|
left: LineFixed,
|
|
right: LineFixed,
|
|
};
|
|
|
|
pub const Rectangle16 = extern struct {
|
|
x: i16,
|
|
y: i16,
|
|
width: u16,
|
|
height: u16,
|
|
};
|
|
|
|
pub const Box32 = extern struct {
|
|
x1: i32,
|
|
y1: i32,
|
|
x2: i32,
|
|
y2: i32,
|
|
};
|
|
|
|
pub const Indexed = extern struct {
|
|
color: bool,
|
|
rgba: [256]u32,
|
|
ent: [32768]u8,
|
|
};
|
|
|
|
test {
|
|
std.testing.refAllDecls(@This());
|
|
}
|