Skip to content

Commit 81337b3

Browse files
committed
release 1.0.0
1 parent a26e113 commit 81337b3

File tree

68 files changed

+1384
-749
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1384
-749
lines changed

CHANGELOG.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# Change Log
22
All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).
33

4-
## 0.1.0-SNAPSHOT
4+
## 1.0.0-RC1 (0.1.0-SNAPSHOT)
5+
6+
Please note - breaking changes!
57

68
### Added
79

@@ -15,6 +17,7 @@ All notable changes to this project will be documented in this file. This change
1517
- color gradients
1618
- color tweaking functions
1719
- font-ascent
20+
- thi.ng rgba interoperability
1821

1922
### Changed
2023

@@ -33,6 +36,7 @@ All notable changes to this project will be documented in this file. This change
3336
- paletton-palette -> paletton
3437
- signal processing refactored, api changed
3538
- overlays refactored
39+
- glitch scripts refectored, api changed
3640

3741
Prefix `make-` is reserved when function is created.
3842

README.md

+19-53
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,16 @@ Clojure2D is a library supporting generative coding or glitching. It's based on
1515

1616
## WARNING
1717

18-
Refactoring in progress -> towards 0.1.0, check Changelog.
18+
Version `1.0.0` is after big refactoring and contains plenty of breaking changes.
1919

2020
## Documentation
2121

22-
[Codox - In progress!](https://clojure2d.github.io/clojure2d/docs/codox/)
22+
[Documentation with examples](https://clojure2d.github.io/clojure2d/docs/codox/)
2323

2424
## Motivation
2525

2626
This project is the answer to personal needs to optimize my own workflow for generative or glitch creations. I've been producing a lot of Processing code and started to suffer from limitations of working in 'write sketch and run' mode. Too much copy&paste between sketches, zillions of folders, zillions of processed images. And one day I fell in love with FP. This code is the answer.
2727

28-
### What's wrong with Processing?
29-
30-
* not reusable code - you have to copy your common parts between sketches
31-
* display and canvas coupling
32-
* weak or no support for parallelism
33-
* more minor...
34-
3528
### Is it replacement for...
3629

3730
... quil, thi.ng, clisk, possibly other?
@@ -44,30 +37,31 @@ No, rather no. The closest is quil, which is really great library (both Clojure
4437
In points:
4538

4639
* Almost decoupled display and canvas (decoupled drawing and refreshing) - you can have as many windows as you want, you can have as many canvases as you want. Display repaints selected canvas automaticaly in separate thread. This way you can operate on canvas in your pace.
47-
* Processing way is still possible (you can attach draw() function to your Display). However main benefit here: draw function keeps context between invocations, this way you can avoid global state (atoms etc.) and write more functional way. The same is for events, each Window has assigned state which is passed through event calls.
40+
* Processing way is still possible (you can attach draw() function to your Display). However main benefit here: draw function keeps state between invocations, this way you can avoid global state (atoms etc.) and write more functional way. The same is for events, each Window has assigned state which is passed through event calls.
4841
* Easy live coding possible (Emacs/Cider/REPL)
4942
* FastMath as main math library
50-
* Main focus on higher level generative/glitch concepts (like sonification support, vector field functions, colorspace operations, things like pixelsorting, slitscan etc. See my Processing sketches, link below)
51-
52-
Check out examples and results folders
43+
* Main focus on higher level generative/glitch concepts (like sonification support, vector field functions, colorspace operations, things like slitscan etc. See my Processing sketches, link below)
5344

5445
### What's odd?
5546

5647
It's kind of personal library which supports my (probably not optimal, not convenient for others) way of creating stuff.
5748
There are still plenty of bugs and not idiomatic code. It may be slower than Processing. Eats a lot of memory (Pixels code is generally immutable). Still not stable API and architecture.
58-
No tests (yet)
5949

6050
## Installation
6151

6252
Add following line as a dependency to your `project.clj`
6353

54+
Development version (release soon):
55+
6456
```clojure
65-
[clojure2d "0.0.7-SNAPSHOT"]
57+
[clojure2d "1.0.0-RC1"]
6658
```
6759

60+
_Release will be done after review of all [examples](https://github.com/Clojure2D/clojure2d-examples)_
61+
6862
## Usage
6963

70-
Since still no tutorials are available, check out prepared examples. All namespaces are described below.
64+
Since still no tutorials are available, see [documentation](https://clojure2d.github.io/clojure2d/docs/codox/). All namespaces are described below:
7165

7266
### clojure2d.core [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.core.html)
7367

@@ -76,7 +70,6 @@ This is main namespace with functions in three groups:
7670
* image file oparations (load/save); jpg, png and bmp
7771
* canvas operations (wrapper for Java2D BufferedImage and Graphics2D)
7872
* window and event operations (JFrame wrapper)
79-
* global state (one per window)
8073
* session handling (logger + unique, sequential filename generator)
8174

8275
### clojure2d.pixels [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.pixels.html)
@@ -87,24 +80,24 @@ Defines also:
8780
* pixel filters (blur, erode, dilate, median, threshold, posterize, tint)
8881
* composing Pixels
8982
* higher order functions which operate on Pixels parallelly (filter-channels, blend-channels)
90-
* accumulation bins (smooth rendering canvas)
83+
* log density renderer
9184

9285
### clojure2d.color [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.color.html)
9386

94-
* colorspace converters
87+
* color space converters
9588
* collection of blending basic functions (like add, subtract, divide, difference, etc.)
96-
* palette generation / color reducing filter
89+
* huge collection of palettes and gradients
9790

9891
### clojure2d.extra
9992

10093
This is namespace for common generative/glitch specific libraries:
10194

102-
* signal - signal processing, wave generators, effects and filters (sonification enabler) [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.signal.html)
103-
* overlays - 3 overlays (noise, spots and rgb scanlines) to finish your images [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.overlays.html)
104-
* segmentation - segment Pixels into rectangles [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.segmentation.html)
105-
* variations - vector field functions / variations taken from fractal flames world [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.variations.html)
106-
* glitch - glitching filters
107-
* raymarching - simple ray marching 3d scene renderer
95+
* signal - signal processing, wave generators, effects and filters (for sonification process) [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.signal.html)
96+
* overlays - postprocessing filters (like rgb/crt scanlines, etc.) [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.overlays.html)
97+
* segmentation - image segmentation [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.segmentation.html)
98+
* glitch - glitching filters [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.glitch.html)
99+
* utils - visualize objects: palette, gradient, image, vector/scalar field... [docs](https://clojure2d.github.io/clojure2d/docs/codox/clojure2d.extra.glitch.html)
100+
* raymarching - simple ray marching 3d scene renderer (abandoned)
108101

109102
### generateme/fastmath
110103

@@ -116,33 +109,6 @@ All math functions are in [fastmath](https://github.com/generateme/fastmath) rep
116109

117110
[EXAMPLES](https://github.com/Clojure2D/clojure2d-examples)
118111

119-
## TODO
120-
121-
### High priority
122-
123-
* ~~Marginalia docs + github.io page - in progress~~
124-
* Cleaning, optimizations - still in progress (more profiling, boxed math removal)
125-
* ~~Parallel color operations on Pixels~~
126-
* ~~Color namespace cleaning~~
127-
* ~~Colorspace converters~~
128-
* More in extra ns:
129-
- SDF objects
130-
- variations
131-
- glitch filters in extra namespace (moved from Processing)
132-
- analog filters (for sonification part)
133-
* More canvas drawing functions (PShape implementation - partially done)
134-
* ~~Session handling (saving results in session, logging actions) - done, not tested~~
135-
* Sanity tests
136-
* Tutorials
137-
138-
### Low priority or ideas
139-
140-
* Cheat sheet
141-
* ~~More window events~~
142-
* Deeper joise bindings
143-
* Wavelets bindings
144-
* Tests... (in progress)
145-
146112
## Community
147113

148114
[Clojurians](https://clojurians.slack.com/archives/clojure2d)

docs/codox/clojure2d.color.html

+303-238
Large diffs are not rendered by default.

docs/codox/clojure2d.core.html

+54-54
Large diffs are not rendered by default.

docs/codox/clojure2d.extra.glitch.html

+344-1
Large diffs are not rendered by default.

docs/codox/clojure2d.extra.overlays.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<!DOCTYPE html PUBLIC ""
22
"">
3-
<html><head><meta charset="UTF-8" /><title>clojure2d.extra.overlays documentation</title><script type="text/javascript" async="" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="highlight/solarized-light.css" /><script type="text/javascript" src="highlight/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a> with <a href="https://github.com/xsc/codox-theme-rdash">RDash UI</a> theme</h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Clojure2d</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>clojure2d</span></div></div></li><li class="depth-2 branch"><a href="clojure2d.color.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>color</span></div></a></li><li class="depth-2 branch"><a href="clojure2d.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>extra</span></div></div></li><li class="depth-3 branch"><a href="clojure2d.extra.glitch.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>glitch</span></div></a></li><li class="depth-3 branch current"><a href="clojure2d.extra.overlays.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>overlays</span></div></a></li><li class="depth-3 branch"><a href="clojure2d.extra.raymarching.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>raymarching</span></div></a></li><li class="depth-3 branch"><a href="clojure2d.extra.segmentation.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>segmentation</span></div></a></li><li class="depth-3 branch"><a href="clojure2d.extra.signal.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>signal</span></div></a></li><li class="depth-3"><a href="clojure2d.extra.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li><li class="depth-2"><a href="clojure2d.pixels.html"><div class="inner"><span class="tree" style="top: -207px;"><span class="top" style="height: 216px;"></span><span class="bottom"></span></span><span>pixels</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-noise-overlay"><div class="inner"><span>noise-overlay</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-crt-scanlines"><div class="inner"><span>render-crt-scanlines</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-noise"><div class="inner"><span>render-noise</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-rgb-scanlines"><div class="inner"><span>render-rgb-scanlines</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-spots"><div class="inner"><span>render-spots</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-spots-overlay"><div class="inner"><span>spots-overlay</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">clojure2d.extra.overlays</h1><div class="doc"><div class="markdown"></div><div class="markdown"><h4>Categories</h4><ul></ul><p>Other vars: <a href="clojure2d.extra.overlays.html#var-noise-overlay">noise-overlay</a> <a href="clojure2d.extra.overlays.html#var-render-crt-scanlines">render-crt-scanlines</a> <a href="clojure2d.extra.overlays.html#var-render-noise">render-noise</a> <a href="clojure2d.extra.overlays.html#var-render-rgb-scanlines">render-rgb-scanlines</a> <a href="clojure2d.extra.overlays.html#var-render-spots">render-spots</a> <a href="clojure2d.extra.overlays.html#var-spots-overlay">spots-overlay</a></p></div><div class="markdown"><h4>Code snippets</h4><div><blockquote><p>Save overlays</p></blockquote><pre><code>(defn save-result
3+
<html><head><meta charset="UTF-8" /><title>clojure2d.extra.overlays documentation</title><script type="text/javascript" async="" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="highlight/solarized-light.css" /><script type="text/javascript" src="highlight/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a> with <a href="https://github.com/xsc/codox-theme-rdash">RDash UI</a> theme</h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Clojure2d</span> <span class="project-version">1.0.0-RC1</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>clojure2d</span></div></div></li><li class="depth-2 branch"><a href="clojure2d.color.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>color</span></div></a></li><li class="depth-2 branch"><a href="clojure2d.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>extra</span></div></div></li><li class="depth-3 branch"><a href="clojure2d.extra.glitch.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>glitch</span></div></a></li><li class="depth-3 branch current"><a href="clojure2d.extra.overlays.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>overlays</span></div></a></li><li class="depth-3 branch"><a href="clojure2d.extra.raymarching.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>raymarching</span></div></a></li><li class="depth-3 branch"><a href="clojure2d.extra.segmentation.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>segmentation</span></div></a></li><li class="depth-3 branch"><a href="clojure2d.extra.signal.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>signal</span></div></a></li><li class="depth-3"><a href="clojure2d.extra.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li><li class="depth-2"><a href="clojure2d.pixels.html"><div class="inner"><span class="tree" style="top: -207px;"><span class="top" style="height: 216px;"></span><span class="bottom"></span></span><span>pixels</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-noise-overlay"><div class="inner"><span>noise-overlay</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-crt-scanlines"><div class="inner"><span>render-crt-scanlines</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-noise"><div class="inner"><span>render-noise</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-rgb-scanlines"><div class="inner"><span>render-rgb-scanlines</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-render-spots"><div class="inner"><span>render-spots</span></div></a></li><li class="depth-1"><a href="clojure2d.extra.overlays.html#var-spots-overlay"><div class="inner"><span>spots-overlay</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">clojure2d.extra.overlays</h1><div class="doc"><div class="markdown"></div><div class="markdown"><h4>Categories</h4><ul></ul><p>Other vars: <a href="clojure2d.extra.overlays.html#var-noise-overlay">noise-overlay</a> <a href="clojure2d.extra.overlays.html#var-render-crt-scanlines">render-crt-scanlines</a> <a href="clojure2d.extra.overlays.html#var-render-noise">render-noise</a> <a href="clojure2d.extra.overlays.html#var-render-rgb-scanlines">render-rgb-scanlines</a> <a href="clojure2d.extra.overlays.html#var-render-spots">render-spots</a> <a href="clojure2d.extra.overlays.html#var-spots-overlay">spots-overlay</a></p></div><div class="markdown"><h4>Code snippets</h4><div><blockquote><p>Save overlays</p></blockquote><pre><code>(defn save-result
44
[f params &amp; opts]
55
(let [n (str "images/overlays/" (first opts) ".jpg")
66
c (canvas 600 800)

docs/codox/clojure2d.extra.raymarching.html

+5-1
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)