aboutsummaryrefslogtreecommitdiff
path: root/drawing/op.ha
diff options
context:
space:
mode:
authorubq323 <ubq323@ubq323.website>2024-04-14 18:38:10 +0100
committerubq323 <ubq323@ubq323.website>2024-04-14 18:38:34 +0100
commit1f8e6e98b924ee4661be2e7b75cf09a6a8bb7cd3 (patch)
tree057c24efd61e8d417199be70cdd487722c652f6c /drawing/op.ha
parent047718ad845ee5850fe70316d7c1ac9dec10b6dd (diff)
change brush size and colour
Diffstat (limited to 'drawing/op.ha')
-rw-r--r--drawing/op.ha28
1 files changed, 19 insertions, 9 deletions
diff --git a/drawing/op.ha b/drawing/op.ha
index acbca29..532fd75 100644
--- a/drawing/op.ha
+++ b/drawing/op.ha
@@ -1,25 +1,35 @@
use io;
use endian;
-export type op_circle = pos;
+export type op_circle = struct {
+ pos: pos,
+ radius: u8,
+ color: u32
+};
export type op_other = void;
export type op = (op_circle| op_other);
+def SER_LEN: size = 13;
+
// return value must be freed... for now. ehh
export fn ser_op(op: op) []u8 = {
const opc = op as op_circle;
- let buf: []u8 = alloc([0...],8);
- endian::leputu32(buf[0..4], opc.0: u32);
- endian::leputu32(buf[4..8], opc.1: u32);
+ let buf: []u8 = alloc([0...],SER_LEN);
+ endian::leputu32(buf[0..4], opc.pos.0: u32);
+ endian::leputu32(buf[4..8], opc.pos.1: u32);
+ endian::leputu32(buf[8..12], opc.color: u32);
+ buf[12] = opc.radius;
return buf;
};
export fn deser_op(bytes: []u8) op = {
- assert(len(bytes) == 8, "wrong length somehow");
- return (
- endian::legetu32(bytes[0..4]): i32,
- endian::legetu32(bytes[4..8]): i32,
- ) : op_circle;
+ assert(len(bytes) == SER_LEN, "wrong length somehow");
+ return op_circle {
+ pos = (endian::legetu32(bytes[0..4]): i32,
+ endian::legetu32(bytes[4..8]): i32),
+ color = endian::legetu32(bytes[8..12]),
+ radius = bytes[12],
+ };
};