From 3cebeb1a7043fe1fd8504d6e41e3849a1ec0edb7 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sat, 24 Apr 2021 14:59:24 -0600 Subject: [PATCH] A[asciilib] Colors --- projects/asciilib2/build.hxml | 4 ++++ projects/asciilib2/src/Main.hx | 8 ++++++++ projects/asciilib2/src/Main.kiss | 2 ++ projects/asciilib2/src/asciilib/Colors.hx | 16 ++++++++++++++++ projects/asciilib2/src/asciilib/Colors.kiss | 17 +++++++++++++++++ projects/asciilib2/src/asciilib/Surface.hx | 6 ++++++ projects/asciilib2/src/asciilib/Surface.kiss | 0 projects/asciilib2/test.sh | 3 +++ 8 files changed, 56 insertions(+) create mode 100644 projects/asciilib2/build.hxml create mode 100644 projects/asciilib2/src/Main.hx create mode 100644 projects/asciilib2/src/Main.kiss create mode 100644 projects/asciilib2/src/asciilib/Colors.hx create mode 100644 projects/asciilib2/src/asciilib/Colors.kiss create mode 100644 projects/asciilib2/src/asciilib/Surface.hx create mode 100644 projects/asciilib2/src/asciilib/Surface.kiss create mode 100644 projects/asciilib2/test.sh diff --git a/projects/asciilib2/build.hxml b/projects/asciilib2/build.hxml new file mode 100644 index 00000000..c56fd45b --- /dev/null +++ b/projects/asciilib2/build.hxml @@ -0,0 +1,4 @@ +-lib kiss +-cp src +--main Main +--interp \ No newline at end of file diff --git a/projects/asciilib2/src/Main.hx b/projects/asciilib2/src/Main.hx new file mode 100644 index 00000000..b56ec242 --- /dev/null +++ b/projects/asciilib2/src/Main.hx @@ -0,0 +1,8 @@ +package; + +import kiss.Kiss; +import kiss.Prelude; +import asciilib.Surface; + +@:build(kiss.Kiss.build("src/Main.kiss")) +class Main {} diff --git a/projects/asciilib2/src/Main.kiss b/projects/asciilib2/src/Main.kiss new file mode 100644 index 00000000..24b3c985 --- /dev/null +++ b/projects/asciilib2/src/Main.kiss @@ -0,0 +1,2 @@ +(defun :Void main [] + (print "Hello world!")) \ No newline at end of file diff --git a/projects/asciilib2/src/asciilib/Colors.hx b/projects/asciilib2/src/asciilib/Colors.hx new file mode 100644 index 00000000..d58f45df --- /dev/null +++ b/projects/asciilib2/src/asciilib/Colors.hx @@ -0,0 +1,16 @@ +package asciilib; + +import haxe.io.Bytes; +import kiss.Prelude; + +typedef Color = { + r:Int, + g:Int, + b:Int, +} + +/** + * The Colors class represents a 2D grid of colors. Under the hood, it's byte channels + */ +@:build(kiss.Kiss.build("src/asciilib/Colors.kiss")) +class Colors {} diff --git a/projects/asciilib2/src/asciilib/Colors.kiss b/projects/asciilib2/src/asciilib/Colors.kiss new file mode 100644 index 00000000..2076fcc3 --- /dev/null +++ b/projects/asciilib2/src/asciilib/Colors.kiss @@ -0,0 +1,17 @@ +(defnew [_width _height &opt :Color fillColor] + [:Int width _width + :Int height _height + :Int area (* width height) + :Bytes red (Bytes.alloc area) + :Bytes green (Bytes.alloc area) + :Bytes blue (Bytes.alloc area)] + + (unless fillColor (set fillColor Black)) + (fill fillColor)) + +(defmethod fill [:Color color] + (red.fill 0 area color.r) + (green.fill 0 area color.g) + (blue.fill 0 area color.b)) + +(defvar Black (object r 0 g 0 b 0)) \ No newline at end of file diff --git a/projects/asciilib2/src/asciilib/Surface.hx b/projects/asciilib2/src/asciilib/Surface.hx new file mode 100644 index 00000000..4e6a14d4 --- /dev/null +++ b/projects/asciilib2/src/asciilib/Surface.hx @@ -0,0 +1,6 @@ +package asciilib; + +import asciilib.Colors; + +@:build(kiss.Kiss.build("src/asciilib/Surface.kiss")) +class Surface {} diff --git a/projects/asciilib2/src/asciilib/Surface.kiss b/projects/asciilib2/src/asciilib/Surface.kiss new file mode 100644 index 00000000..e69de29b diff --git a/projects/asciilib2/test.sh b/projects/asciilib2/test.sh new file mode 100644 index 00000000..0ee8ae95 --- /dev/null +++ b/projects/asciilib2/test.sh @@ -0,0 +1,3 @@ +#! /bin/bash + +haxe build.hxml \ No newline at end of file