Attempt to host (large) JavaScript
This commit is contained in:
5066
resources/public/js/optimized/quil/core.cljc
Normal file
5066
resources/public/js/optimized/quil/core.cljc
Normal file
File diff suppressed because it is too large
Load Diff
4963
resources/public/js/optimized/quil/core.js
Normal file
4963
resources/public/js/optimized/quil/core.js
Normal file
File diff suppressed because it is too large
Load Diff
143
resources/public/js/optimized/quil/middleware.cljc
Normal file
143
resources/public/js/optimized/quil/middleware.cljc
Normal file
@@ -0,0 +1,143 @@
|
||||
(ns ^{:doc "Quil middleware."}
|
||||
quil.middleware
|
||||
(:require [quil.middlewares.fun-mode :as fun-mode]
|
||||
#?(:clj [quil.middlewares.pause-on-error :as pause-on-error])
|
||||
[quil.middlewares.navigation-3d :as navigation-3d]
|
||||
[quil.middlewares.navigation-2d :as navigation-2d]))
|
||||
|
||||
(defn ^{:requires-bindings false
|
||||
:category "Middleware"
|
||||
:subcategory nil
|
||||
:ns "quil.middleware"
|
||||
:added "2.1.0"}
|
||||
fun-mode
|
||||
"Introduces `function mode`. Adds `update` function which takes current state
|
||||
and returns new state. Makes all other functions (`setup`, `draw`,
|
||||
`mouse-click`, etc) state-aware.
|
||||
See [wiki](https://github.com/quil/quil/wiki/Functional-mode-%28fun-mode%29)
|
||||
for more details."
|
||||
[options]
|
||||
(fun-mode/fun-mode options))
|
||||
|
||||
#?(:clj
|
||||
(defn ^{:requires-bindings false
|
||||
:category "Middleware"
|
||||
:subcategory nil
|
||||
:ns "quil.middleware"
|
||||
:added "2.2.0"}
|
||||
pause-on-error
|
||||
"Pauses sketch if any of the user-provided handlers throws an error.
|
||||
It allows to fix the error on the fly and continue sketch.
|
||||
May be good alternative to default '500ms pause if exception'
|
||||
behaviour."
|
||||
[options]
|
||||
(pause-on-error/pause-on-error options)))
|
||||
|
||||
(defn ^{:requires-bindings false
|
||||
:category "Middleware"
|
||||
:subcategory nil
|
||||
:ns "quil.middleware"
|
||||
:added "2.2.0"}
|
||||
navigation-3d
|
||||
"Enables navigation in 3D space. Similar to how it is done in
|
||||
shooters: WASD navigation, space is go up, drag mouse to look around.
|
||||
This middleware requires [[fun-mode]].
|
||||
|
||||
Navigation
|
||||
|
||||
* Drag mouse to look around. You can change settings to bind
|
||||
mouse-moved instead of mouse-dragged to look around. See
|
||||
customization info below.
|
||||
|
||||
* Keyboard:
|
||||
* `w` - go forward
|
||||
* `s` - go backward
|
||||
* `a` - strafe left
|
||||
* `d` - strafe right
|
||||
* `space` - go up
|
||||
* `z` - go down, can't bind to `ctrl`, limitation of Processing
|
||||
|
||||
Customization
|
||||
|
||||
You can customize this middleware by providing a map as
|
||||
`:navigation-3d` option in [[quil.sketch/defsketch]]/[[quil.sketch/sketch]].
|
||||
The map can have the following optional keys:
|
||||
|
||||
* `:position` - vector of 3 numbers, initial camera position. Default
|
||||
is the same as in [[quil.core/camera]] function.
|
||||
|
||||
* `:straight` - vector of 3 numbers, direction you'll be looking at.
|
||||
Default is `[0 0 -1]` (looking down).
|
||||
|
||||
* `:up` - vector of 3 numbers, 'up' direction. Default is `[0 1 0]`.
|
||||
|
||||
* `:pixels-in-360` - number, mouse sensitivity. Defines how many pixels
|
||||
you need to move/drag your mouse to rotate 360 degrees.
|
||||
The less the number the more sensitive the mouse.
|
||||
Default is `1000`.
|
||||
|
||||
* `:step-size` - number, number of pixels you move on each key event (wasd).
|
||||
Default is `20`.
|
||||
|
||||
* `:rotate-on` - keyword, either `:mouse-dragged` or `:mouse-moved`. Specifies
|
||||
on which mouse event camera should rotate. Default is
|
||||
`:mouse-dragged`.
|
||||
|
||||
Accessing position information from a sketch
|
||||
|
||||
[[navigation-3d]] uses [[fun-mode]] under the hood so all position-related
|
||||
information is stored in the state map. It means that you can access in
|
||||
draw/update/any handler and modify it if you need to. Position
|
||||
information is a map which is stored under `:navigation-3d` key in the
|
||||
state map. Position consists of 3 values: `:position`, `:straight` and `:up`.
|
||||
See \"Customization\" section above for more details.
|
||||
|
||||
Example:
|
||||
```
|
||||
(q/defsketch my-sketch
|
||||
...
|
||||
:middleware [m/fun-mode m/navigation-3d])
|
||||
```
|
||||
|
||||
See wiki article for more(?) details:
|
||||
https://github.com/quil/quil/wiki/Navigation-3D"
|
||||
[options]
|
||||
(navigation-3d/navigation-3d options))
|
||||
|
||||
(defn ^{:requires-bindings false
|
||||
:category "Middleware"
|
||||
:subcategory nil
|
||||
:ns "quil.middleware"
|
||||
:added "2.2.6"}
|
||||
navigation-2d
|
||||
"Enables navigation over 2D sketch. Drag mouse to change the center of the
|
||||
sketch and mouse wheel controls zoom. This middleware requires [[fun-mode]].
|
||||
|
||||
Customization
|
||||
|
||||
You can customize this middleware by providing a map as
|
||||
`:navigation-2d` option in [[quil.sketch/defsketch]]/[[quil.sketch/sketch]].
|
||||
The map can have the following optional keys:
|
||||
|
||||
* `:position` - vector of 2 numbers, x and y - center of the screen.
|
||||
Default is `width/2`, `height/2`.
|
||||
|
||||
* `:zoom` - number indicating current zoom level. Default is `1`.
|
||||
|
||||
Accessing position information from a sketch
|
||||
|
||||
[[navigation-2d]] uses [[fun-mode]] under the hood so all position-related
|
||||
information is stored in the state map. It means that you can access in
|
||||
draw/update/any handler and modify it if you need to. Position
|
||||
information is a map which is stored under `:navigation-2d` key in the
|
||||
state map. Position consists of 2 values: `:position` and `:zoom`.
|
||||
See \"Customization\" section above for more details.
|
||||
|
||||
Example:
|
||||
```
|
||||
(q/defsketch my-sketch
|
||||
...
|
||||
:middleware [m/fun-mode m/navigation-2d])
|
||||
```"
|
||||
[options]
|
||||
(navigation-2d/navigation-2d options))
|
||||
118
resources/public/js/optimized/quil/middleware.js
Normal file
118
resources/public/js/optimized/quil/middleware.js
Normal file
@@ -0,0 +1,118 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.middleware');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
goog.require('quil.middlewares.fun_mode');
|
||||
goog.require('quil.middlewares.navigation_3d');
|
||||
goog.require('quil.middlewares.navigation_2d');
|
||||
/**
|
||||
* Introduces `function mode`. Adds `update` function which takes current state
|
||||
* and returns new state. Makes all other functions (`setup`, `draw`,
|
||||
* `mouse-click`, etc) state-aware.
|
||||
* See [wiki](https://github.com/quil/quil/wiki/Functional-mode-%28fun-mode%29)
|
||||
* for more details.
|
||||
*/
|
||||
quil.middleware.fun_mode = (function quil$middleware$fun_mode(options){
|
||||
return quil.middlewares.fun_mode.fun_mode(options);
|
||||
});
|
||||
/**
|
||||
* Enables navigation in 3D space. Similar to how it is done in
|
||||
* shooters: WASD navigation, space is go up, drag mouse to look around.
|
||||
* This middleware requires [[fun-mode]].
|
||||
*
|
||||
* Navigation
|
||||
*
|
||||
* * Drag mouse to look around. You can change settings to bind
|
||||
* mouse-moved instead of mouse-dragged to look around. See
|
||||
* customization info below.
|
||||
*
|
||||
* * Keyboard:
|
||||
* * `w` - go forward
|
||||
* * `s` - go backward
|
||||
* * `a` - strafe left
|
||||
* * `d` - strafe right
|
||||
* * `space` - go up
|
||||
* * `z` - go down, can't bind to `ctrl`, limitation of Processing
|
||||
*
|
||||
* Customization
|
||||
*
|
||||
* You can customize this middleware by providing a map as
|
||||
* `:navigation-3d` option in [[quil.sketch/defsketch]]/[[quil.sketch/sketch]].
|
||||
* The map can have the following optional keys:
|
||||
*
|
||||
* * `:position` - vector of 3 numbers, initial camera position. Default
|
||||
* is the same as in [[quil.core/camera]] function.
|
||||
*
|
||||
* * `:straight` - vector of 3 numbers, direction you'll be looking at.
|
||||
* Default is `[0 0 -1]` (looking down).
|
||||
*
|
||||
* * `:up` - vector of 3 numbers, 'up' direction. Default is `[0 1 0]`.
|
||||
*
|
||||
* * `:pixels-in-360` - number, mouse sensitivity. Defines how many pixels
|
||||
* you need to move/drag your mouse to rotate 360 degrees.
|
||||
* The less the number the more sensitive the mouse.
|
||||
* Default is `1000`.
|
||||
*
|
||||
* * `:step-size` - number, number of pixels you move on each key event (wasd).
|
||||
* Default is `20`.
|
||||
*
|
||||
* * `:rotate-on` - keyword, either `:mouse-dragged` or `:mouse-moved`. Specifies
|
||||
* on which mouse event camera should rotate. Default is
|
||||
* `:mouse-dragged`.
|
||||
*
|
||||
* Accessing position information from a sketch
|
||||
*
|
||||
* [[navigation-3d]] uses [[fun-mode]] under the hood so all position-related
|
||||
* information is stored in the state map. It means that you can access in
|
||||
* draw/update/any handler and modify it if you need to. Position
|
||||
* information is a map which is stored under `:navigation-3d` key in the
|
||||
* state map. Position consists of 3 values: `:position`, `:straight` and `:up`.
|
||||
* See "Customization" section above for more details.
|
||||
*
|
||||
* Example:
|
||||
* ```
|
||||
* (q/defsketch my-sketch
|
||||
* ...
|
||||
* :middleware [m/fun-mode m/navigation-3d])
|
||||
* ```
|
||||
*
|
||||
* See wiki article for more(?) details:
|
||||
* https://github.com/quil/quil/wiki/Navigation-3D
|
||||
*/
|
||||
quil.middleware.navigation_3d = (function quil$middleware$navigation_3d(options){
|
||||
return quil.middlewares.navigation_3d.navigation_3d(options);
|
||||
});
|
||||
/**
|
||||
* Enables navigation over 2D sketch. Drag mouse to change the center of the
|
||||
* sketch and mouse wheel controls zoom. This middleware requires [[fun-mode]].
|
||||
*
|
||||
* Customization
|
||||
*
|
||||
* You can customize this middleware by providing a map as
|
||||
* `:navigation-2d` option in [[quil.sketch/defsketch]]/[[quil.sketch/sketch]].
|
||||
* The map can have the following optional keys:
|
||||
*
|
||||
* * `:position` - vector of 2 numbers, x and y - center of the screen.
|
||||
* Default is `width/2`, `height/2`.
|
||||
*
|
||||
* * `:zoom` - number indicating current zoom level. Default is `1`.
|
||||
*
|
||||
* Accessing position information from a sketch
|
||||
*
|
||||
* [[navigation-2d]] uses [[fun-mode]] under the hood so all position-related
|
||||
* information is stored in the state map. It means that you can access in
|
||||
* draw/update/any handler and modify it if you need to. Position
|
||||
* information is a map which is stored under `:navigation-2d` key in the
|
||||
* state map. Position consists of 2 values: `:position` and `:zoom`.
|
||||
* See "Customization" section above for more details.
|
||||
*
|
||||
* Example:
|
||||
* ```
|
||||
* (q/defsketch my-sketch
|
||||
* ...
|
||||
* :middleware [m/fun-mode m/navigation-2d])
|
||||
* ```
|
||||
*/
|
||||
quil.middleware.navigation_2d = (function quil$middleware$navigation_2d(options){
|
||||
return quil.middlewares.navigation_2d.navigation_2d(options);
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
(ns quil.middlewares.deprecated-options)
|
||||
|
||||
(def ^:private deprecated
|
||||
{:decor ["2.0" "Try :features [:present] for similar effect"]
|
||||
:target ["2.0" "Use :features [:keep-on-top] instead."]
|
||||
:safe-draw-fn ["2.0" "Use :features [:no-safe-fns] instead."]})
|
||||
|
||||
(defn- check-features-vector [features]
|
||||
(let [features (set features)]
|
||||
(when (features :no-safe-draw)
|
||||
(println "Feature :no-safe-draw was renamed to :no-safe-fns in Quil 2.1."
|
||||
"Use :feature [:no-safe-fns] now."))
|
||||
(disj features :no-safe-draw)))
|
||||
|
||||
(defn deprecated-options
|
||||
"Checks `options` map for deprecated options, removes them and
|
||||
prints messages explaining how to fix them."
|
||||
[options]
|
||||
(let [options (update-in options [:features] check-features-vector)]
|
||||
(->> (for [[name value] options]
|
||||
(if-let [[version message] (deprecated name)]
|
||||
(do (println name "option was removed in Quil" version "." message)
|
||||
nil)
|
||||
[name value]))
|
||||
(remove nil?)
|
||||
(into {}))))
|
||||
@@ -0,0 +1,96 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.middlewares.deprecated_options');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
quil.middlewares.deprecated_options.deprecated = new cljs.core.PersistentArrayMap(null, 3, [cljs.core.cst$kw$decor,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["2.0","Try :features [:present] for similar effect"], null),cljs.core.cst$kw$target,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["2.0","Use :features [:keep-on-top] instead."], null),cljs.core.cst$kw$safe_DASH_draw_DASH_fn,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["2.0","Use :features [:no-safe-fns] instead."], null)], null);
|
||||
quil.middlewares.deprecated_options.check_features_vector = (function quil$middlewares$deprecated_options$check_features_vector(features){
|
||||
var features__$1 = cljs.core.set(features);
|
||||
if(cljs.core.truth_((function (){var G__5517 = cljs.core.cst$kw$no_DASH_safe_DASH_draw;
|
||||
return (features__$1.cljs$core$IFn$_invoke$arity$1 ? features__$1.cljs$core$IFn$_invoke$arity$1(G__5517) : features__$1.call(null,G__5517));
|
||||
})())){
|
||||
cljs.core.println.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(["Feature :no-safe-draw was renamed to :no-safe-fns in Quil 2.1.","Use :feature [:no-safe-fns] now."], 0));
|
||||
} else {
|
||||
}
|
||||
|
||||
return cljs.core.disj.cljs$core$IFn$_invoke$arity$2(features__$1,cljs.core.cst$kw$no_DASH_safe_DASH_draw);
|
||||
});
|
||||
/**
|
||||
* Checks `options` map for deprecated options, removes them and
|
||||
* prints messages explaining how to fix them.
|
||||
*/
|
||||
quil.middlewares.deprecated_options.deprecated_options = (function quil$middlewares$deprecated_options$deprecated_options(options){
|
||||
var options__$1 = cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(options,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$features], null),quil.middlewares.deprecated_options.check_features_vector);
|
||||
return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.nil_QMARK_,(function (){var iter__4523__auto__ = ((function (options__$1){
|
||||
return (function quil$middlewares$deprecated_options$deprecated_options_$_iter__5518(s__5519){
|
||||
return (new cljs.core.LazySeq(null,((function (options__$1){
|
||||
return (function (){
|
||||
var s__5519__$1 = s__5519;
|
||||
while(true){
|
||||
var temp__5735__auto__ = cljs.core.seq(s__5519__$1);
|
||||
if(temp__5735__auto__){
|
||||
var s__5519__$2 = temp__5735__auto__;
|
||||
if(cljs.core.chunked_seq_QMARK_(s__5519__$2)){
|
||||
var c__4521__auto__ = cljs.core.chunk_first(s__5519__$2);
|
||||
var size__4522__auto__ = cljs.core.count(c__4521__auto__);
|
||||
var b__5521 = cljs.core.chunk_buffer(size__4522__auto__);
|
||||
if((function (){var i__5520 = (0);
|
||||
while(true){
|
||||
if((i__5520 < size__4522__auto__)){
|
||||
var vec__5522 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c__4521__auto__,i__5520);
|
||||
var name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5522,(0),null);
|
||||
var value = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5522,(1),null);
|
||||
cljs.core.chunk_append(b__5521,(function (){var temp__5733__auto__ = (quil.middlewares.deprecated_options.deprecated.cljs$core$IFn$_invoke$arity$1 ? quil.middlewares.deprecated_options.deprecated.cljs$core$IFn$_invoke$arity$1(name) : quil.middlewares.deprecated_options.deprecated.call(null,name));
|
||||
if(cljs.core.truth_(temp__5733__auto__)){
|
||||
var vec__5525 = temp__5733__auto__;
|
||||
var version = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5525,(0),null);
|
||||
var message = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5525,(1),null);
|
||||
cljs.core.println.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([name,"option was removed in Quil",version,".",message], 0));
|
||||
|
||||
return null;
|
||||
} else {
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [name,value], null);
|
||||
}
|
||||
})());
|
||||
|
||||
var G__5534 = (i__5520 + (1));
|
||||
i__5520 = G__5534;
|
||||
continue;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
})()){
|
||||
return cljs.core.chunk_cons(cljs.core.chunk(b__5521),quil$middlewares$deprecated_options$deprecated_options_$_iter__5518(cljs.core.chunk_rest(s__5519__$2)));
|
||||
} else {
|
||||
return cljs.core.chunk_cons(cljs.core.chunk(b__5521),null);
|
||||
}
|
||||
} else {
|
||||
var vec__5528 = cljs.core.first(s__5519__$2);
|
||||
var name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5528,(0),null);
|
||||
var value = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5528,(1),null);
|
||||
return cljs.core.cons((function (){var temp__5733__auto__ = (quil.middlewares.deprecated_options.deprecated.cljs$core$IFn$_invoke$arity$1 ? quil.middlewares.deprecated_options.deprecated.cljs$core$IFn$_invoke$arity$1(name) : quil.middlewares.deprecated_options.deprecated.call(null,name));
|
||||
if(cljs.core.truth_(temp__5733__auto__)){
|
||||
var vec__5531 = temp__5733__auto__;
|
||||
var version = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5531,(0),null);
|
||||
var message = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5531,(1),null);
|
||||
cljs.core.println.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([name,"option was removed in Quil",version,".",message], 0));
|
||||
|
||||
return null;
|
||||
} else {
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [name,value], null);
|
||||
}
|
||||
})(),quil$middlewares$deprecated_options$deprecated_options_$_iter__5518(cljs.core.rest(s__5519__$2)));
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
});})(options__$1))
|
||||
,null,null));
|
||||
});})(options__$1))
|
||||
;
|
||||
return iter__4523__auto__(options__$1);
|
||||
})()));
|
||||
});
|
||||
78
resources/public/js/optimized/quil/middlewares/fun_mode.cljc
Normal file
78
resources/public/js/optimized/quil/middlewares/fun_mode.cljc
Normal file
@@ -0,0 +1,78 @@
|
||||
(ns quil.middlewares.fun-mode
|
||||
(:require [quil.core :as q]))
|
||||
|
||||
(defn- wrap-setup [options]
|
||||
(let [setup (:setup options (fn [] nil))]
|
||||
(assoc options
|
||||
:setup #(reset! (q/state-atom) (setup)))))
|
||||
|
||||
(defn- wrap-draw-update [options]
|
||||
(let [draw (:draw options (fn [_]))
|
||||
update (:update options identity)
|
||||
quil-draw #(-> (q/state-atom)
|
||||
(swap! (if (= (q/frame-count) 1)
|
||||
identity
|
||||
update))
|
||||
(draw))]
|
||||
(-> options
|
||||
(dissoc :update)
|
||||
(assoc :draw quil-draw))))
|
||||
|
||||
(defn- mouse-event []
|
||||
{:x (q/mouse-x)
|
||||
:y (q/mouse-y)})
|
||||
|
||||
(defn- mouse-event-full []
|
||||
{:x (q/mouse-x)
|
||||
:y (q/mouse-y)
|
||||
:button (q/mouse-button)})
|
||||
|
||||
(defn- key-event []
|
||||
{:key (q/key-as-keyword)
|
||||
:key-code (q/key-code)
|
||||
:raw-key (q/raw-key)
|
||||
#?@(:clj [:modifiers (q/key-modifiers)])})
|
||||
|
||||
(defn- wrap-handler
|
||||
([options handler-key]
|
||||
(wrap-handler options handler-key nil))
|
||||
([options handler-key event-fn]
|
||||
(if-let [handler (options handler-key)]
|
||||
(assoc options handler-key
|
||||
(if event-fn
|
||||
#(swap! (q/state-atom) handler (event-fn))
|
||||
#(swap! (q/state-atom) handler)))
|
||||
options)))
|
||||
|
||||
(defn- wrap-handlers [options & handlers]
|
||||
(reduce (fn [options handler]
|
||||
(if (keyword? handler)
|
||||
(wrap-handler options handler)
|
||||
(apply wrap-handler options handler)))
|
||||
options handlers))
|
||||
|
||||
(defn- wrap-mouse-wheel [options]
|
||||
(if-let [handler (:mouse-wheel options)]
|
||||
(assoc options :mouse-wheel
|
||||
(fn [rotation]
|
||||
(swap! (q/state-atom) handler rotation)))
|
||||
options))
|
||||
|
||||
(defn fun-mode
|
||||
"Introduces `function mode` making all handlers (`setup`, `draw`,
|
||||
`mouse-click`, etc) state-aware. Adds support for `update` function."
|
||||
[options]
|
||||
(-> options
|
||||
wrap-setup
|
||||
wrap-draw-update
|
||||
(wrap-handlers :focus-gained :focus-lost [:mouse-entered mouse-event]
|
||||
[:mouse-exited mouse-event] [:mouse-pressed mouse-event-full]
|
||||
[:mouse-released mouse-event] [:mouse-clicked mouse-event-full]
|
||||
[:mouse-moved (fn [] {:x (q/mouse-x) :y (q/mouse-y)
|
||||
:p-x (q/pmouse-x) :p-y (q/pmouse-y)})]
|
||||
[:mouse-dragged (fn [] {:x (q/mouse-x) :y (q/mouse-y)
|
||||
:p-x (q/pmouse-x) :p-y (q/pmouse-y)
|
||||
:button (q/mouse-button)})]
|
||||
[:key-pressed key-event] [:key-released key-event] [:key-typed key-event]
|
||||
:on-close)
|
||||
wrap-mouse-wheel))
|
||||
142
resources/public/js/optimized/quil/middlewares/fun_mode.js
Normal file
142
resources/public/js/optimized/quil/middlewares/fun_mode.js
Normal file
@@ -0,0 +1,142 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.middlewares.fun_mode');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
goog.require('quil.core');
|
||||
quil.middlewares.fun_mode.wrap_setup = (function quil$middlewares$fun_mode$wrap_setup(options){
|
||||
var setup = cljs.core.cst$kw$setup.cljs$core$IFn$_invoke$arity$2(options,(function (){
|
||||
return null;
|
||||
}));
|
||||
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(options,cljs.core.cst$kw$setup,((function (setup){
|
||||
return (function (){
|
||||
return cljs.core.reset_BANG_(quil.core.state_atom(),(setup.cljs$core$IFn$_invoke$arity$0 ? setup.cljs$core$IFn$_invoke$arity$0() : setup.call(null)));
|
||||
});})(setup))
|
||||
);
|
||||
});
|
||||
quil.middlewares.fun_mode.wrap_draw_update = (function quil$middlewares$fun_mode$wrap_draw_update(options){
|
||||
var draw = cljs.core.cst$kw$draw.cljs$core$IFn$_invoke$arity$2(options,(function (_){
|
||||
return null;
|
||||
}));
|
||||
var update = cljs.core.cst$kw$update.cljs$core$IFn$_invoke$arity$2(options,cljs.core.identity);
|
||||
var quil_draw = ((function (draw,update){
|
||||
return (function (){
|
||||
var G__6085 = cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(quil.core.state_atom(),((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(quil.core.frame_count(),(1)))?cljs.core.identity:update));
|
||||
return (draw.cljs$core$IFn$_invoke$arity$1 ? draw.cljs$core$IFn$_invoke$arity$1(G__6085) : draw.call(null,G__6085));
|
||||
});})(draw,update))
|
||||
;
|
||||
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(options,cljs.core.cst$kw$update),cljs.core.cst$kw$draw,quil_draw);
|
||||
});
|
||||
quil.middlewares.fun_mode.mouse_event = (function quil$middlewares$fun_mode$mouse_event(){
|
||||
return new cljs.core.PersistentArrayMap(null, 2, [cljs.core.cst$kw$x,quil.core.mouse_x(),cljs.core.cst$kw$y,quil.core.mouse_y()], null);
|
||||
});
|
||||
quil.middlewares.fun_mode.mouse_event_full = (function quil$middlewares$fun_mode$mouse_event_full(){
|
||||
return new cljs.core.PersistentArrayMap(null, 3, [cljs.core.cst$kw$x,quil.core.mouse_x(),cljs.core.cst$kw$y,quil.core.mouse_y(),cljs.core.cst$kw$button,quil.core.mouse_button()], null);
|
||||
});
|
||||
quil.middlewares.fun_mode.key_event = (function quil$middlewares$fun_mode$key_event(){
|
||||
return new cljs.core.PersistentArrayMap(null, 3, [cljs.core.cst$kw$key,quil.core.key_as_keyword(),cljs.core.cst$kw$key_DASH_code,quil.core.key_code(),cljs.core.cst$kw$raw_DASH_key,quil.core.raw_key()], null);
|
||||
});
|
||||
quil.middlewares.fun_mode.wrap_handler = (function quil$middlewares$fun_mode$wrap_handler(var_args){
|
||||
var G__6087 = arguments.length;
|
||||
switch (G__6087) {
|
||||
case 2:
|
||||
return quil.middlewares.fun_mode.wrap_handler.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
case 3:
|
||||
return quil.middlewares.fun_mode.wrap_handler.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
quil.middlewares.fun_mode.wrap_handler.cljs$core$IFn$_invoke$arity$2 = (function (options,handler_key){
|
||||
return quil.middlewares.fun_mode.wrap_handler.cljs$core$IFn$_invoke$arity$3(options,handler_key,null);
|
||||
});
|
||||
|
||||
quil.middlewares.fun_mode.wrap_handler.cljs$core$IFn$_invoke$arity$3 = (function (options,handler_key,event_fn){
|
||||
var temp__5733__auto__ = (options.cljs$core$IFn$_invoke$arity$1 ? options.cljs$core$IFn$_invoke$arity$1(handler_key) : options.call(null,handler_key));
|
||||
if(cljs.core.truth_(temp__5733__auto__)){
|
||||
var handler = temp__5733__auto__;
|
||||
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(options,handler_key,(cljs.core.truth_(event_fn)?((function (handler,temp__5733__auto__){
|
||||
return (function (){
|
||||
return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(quil.core.state_atom(),handler,(event_fn.cljs$core$IFn$_invoke$arity$0 ? event_fn.cljs$core$IFn$_invoke$arity$0() : event_fn.call(null)));
|
||||
});})(handler,temp__5733__auto__))
|
||||
:((function (handler,temp__5733__auto__){
|
||||
return (function (){
|
||||
return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(quil.core.state_atom(),handler);
|
||||
});})(handler,temp__5733__auto__))
|
||||
));
|
||||
} else {
|
||||
return options;
|
||||
}
|
||||
});
|
||||
|
||||
quil.middlewares.fun_mode.wrap_handler.cljs$lang$maxFixedArity = 3;
|
||||
|
||||
quil.middlewares.fun_mode.wrap_handlers = (function quil$middlewares$fun_mode$wrap_handlers(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___6091 = arguments.length;
|
||||
var i__4731__auto___6092 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___6092 < len__4730__auto___6091)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___6092]));
|
||||
|
||||
var G__6093 = (i__4731__auto___6092 + (1));
|
||||
i__4731__auto___6092 = G__6093;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return quil.middlewares.fun_mode.wrap_handlers.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
|
||||
});
|
||||
|
||||
quil.middlewares.fun_mode.wrap_handlers.cljs$core$IFn$_invoke$arity$variadic = (function (options,handlers){
|
||||
return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (options__$1,handler){
|
||||
if((handler instanceof cljs.core.Keyword)){
|
||||
return quil.middlewares.fun_mode.wrap_handler.cljs$core$IFn$_invoke$arity$2(options__$1,handler);
|
||||
} else {
|
||||
return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(quil.middlewares.fun_mode.wrap_handler,options__$1,handler);
|
||||
}
|
||||
}),options,handlers);
|
||||
});
|
||||
|
||||
quil.middlewares.fun_mode.wrap_handlers.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
/** @this {Function} */
|
||||
quil.middlewares.fun_mode.wrap_handlers.cljs$lang$applyTo = (function (seq6089){
|
||||
var G__6090 = cljs.core.first(seq6089);
|
||||
var seq6089__$1 = cljs.core.next(seq6089);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__6090,seq6089__$1);
|
||||
});
|
||||
|
||||
quil.middlewares.fun_mode.wrap_mouse_wheel = (function quil$middlewares$fun_mode$wrap_mouse_wheel(options){
|
||||
var temp__5733__auto__ = cljs.core.cst$kw$mouse_DASH_wheel.cljs$core$IFn$_invoke$arity$1(options);
|
||||
if(cljs.core.truth_(temp__5733__auto__)){
|
||||
var handler = temp__5733__auto__;
|
||||
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(options,cljs.core.cst$kw$mouse_DASH_wheel,((function (handler,temp__5733__auto__){
|
||||
return (function (rotation){
|
||||
return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(quil.core.state_atom(),handler,rotation);
|
||||
});})(handler,temp__5733__auto__))
|
||||
);
|
||||
} else {
|
||||
return options;
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Introduces `function mode` making all handlers (`setup`, `draw`,
|
||||
* `mouse-click`, etc) state-aware. Adds support for `update` function.
|
||||
*/
|
||||
quil.middlewares.fun_mode.fun_mode = (function quil$middlewares$fun_mode$fun_mode(options){
|
||||
return quil.middlewares.fun_mode.wrap_mouse_wheel(quil.middlewares.fun_mode.wrap_handlers.cljs$core$IFn$_invoke$arity$variadic(quil.middlewares.fun_mode.wrap_draw_update(quil.middlewares.fun_mode.wrap_setup(options)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.cst$kw$focus_DASH_gained,cljs.core.cst$kw$focus_DASH_lost,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_entered,quil.middlewares.fun_mode.mouse_event], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_exited,quil.middlewares.fun_mode.mouse_event], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_pressed,quil.middlewares.fun_mode.mouse_event_full], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_released,quil.middlewares.fun_mode.mouse_event], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_clicked,quil.middlewares.fun_mode.mouse_event_full], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_moved,(function (){
|
||||
return new cljs.core.PersistentArrayMap(null, 4, [cljs.core.cst$kw$x,quil.core.mouse_x(),cljs.core.cst$kw$y,quil.core.mouse_y(),cljs.core.cst$kw$p_DASH_x,quil.core.pmouse_x(),cljs.core.cst$kw$p_DASH_y,quil.core.pmouse_y()], null);
|
||||
})], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$mouse_DASH_dragged,(function (){
|
||||
return new cljs.core.PersistentArrayMap(null, 5, [cljs.core.cst$kw$x,quil.core.mouse_x(),cljs.core.cst$kw$y,quil.core.mouse_y(),cljs.core.cst$kw$p_DASH_x,quil.core.pmouse_x(),cljs.core.cst$kw$p_DASH_y,quil.core.pmouse_y(),cljs.core.cst$kw$button,quil.core.mouse_button()], null);
|
||||
})], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$key_DASH_pressed,quil.middlewares.fun_mode.key_event], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$key_DASH_released,quil.middlewares.fun_mode.key_event], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$key_DASH_typed,quil.middlewares.fun_mode.key_event], null),cljs.core.cst$kw$on_DASH_close], 0)));
|
||||
});
|
||||
@@ -0,0 +1,89 @@
|
||||
(ns quil.middlewares.navigation-2d
|
||||
(:require [quil.core :as q :include-macros true]))
|
||||
|
||||
(def ^:private ^String missing-navigation-key-error
|
||||
(str "state map is missing :navigation-2d key. "
|
||||
"Did you accidentally removed it from the state in "
|
||||
":update or any other handler?"))
|
||||
|
||||
(defn- assert-state-has-navigation
|
||||
"Asserts that `state` map contains `:navigation-2d` object."
|
||||
[state]
|
||||
(when-not (:navigation-2d state)
|
||||
(throw #?(:clj (RuntimeException. missing-navigation-key-error)
|
||||
:cljs (js/Error. missing-navigation-key-error)))))
|
||||
|
||||
(defn- default-position
|
||||
"Default position configuration: zoom is neutral and central point is
|
||||
`width/2, height/2`."
|
||||
[]
|
||||
{:position [(/ (q/width) 2.0)
|
||||
(/ (q/height) 2.0)]
|
||||
:zoom 1})
|
||||
|
||||
(defn- setup-2d-nav
|
||||
"Custom 'setup' function which creates initial position
|
||||
configuration and puts it to the state map."
|
||||
[user-setup user-settings]
|
||||
(let [initial-state (-> user-settings
|
||||
(select-keys [:position :zoom])
|
||||
(->> (merge (default-position))))]
|
||||
(update-in (user-setup) [:navigation-2d]
|
||||
#(merge initial-state %))))
|
||||
|
||||
(defn- mouse-dragged
|
||||
"Changes center of the sketch depending on the last mouse move. Takes
|
||||
zoom into account as well."
|
||||
[state event]
|
||||
(assert-state-has-navigation state)
|
||||
(let [dx (- (:p-x event) (:x event))
|
||||
dy (- (:p-y event) (:y event))
|
||||
zoom (-> state :navigation-2d :zoom)]
|
||||
(-> state
|
||||
(update-in [:navigation-2d :position 0] + (/ dx zoom))
|
||||
(update-in [:navigation-2d :position 1] + (/ dy zoom)))))
|
||||
|
||||
(defn- mouse-wheel
|
||||
"Changes zoom settings based on scroll."
|
||||
[state event]
|
||||
(assert-state-has-navigation state)
|
||||
(update-in state [:navigation-2d :zoom] * (+ 1 (* -0.1 event))))
|
||||
|
||||
(defn- draw
|
||||
"Calls user draw function with all necessary transformations (position
|
||||
and zoom) applied."
|
||||
[user-draw state]
|
||||
(assert-state-has-navigation state)
|
||||
(q/push-matrix)
|
||||
(let [nav-2d (:navigation-2d state)
|
||||
zoom (:zoom nav-2d)
|
||||
pos (:position nav-2d)]
|
||||
(q/scale zoom)
|
||||
(q/with-translation [(- (/ (q/width) 2 zoom) (first pos))
|
||||
(- (/ (q/height) 2 zoom) (second pos))]
|
||||
(user-draw state)))
|
||||
(q/pop-matrix))
|
||||
|
||||
(defn navigation-2d
|
||||
"Enables navigation over 2D sketch. Dragging mouse will move center of the
|
||||
sketch and mouse wheel controls zoom."
|
||||
[options]
|
||||
(let [; 2d-navigation related user settings
|
||||
user-settings (:navigation-2d options)
|
||||
|
||||
; user-provided handlers which will be overridden
|
||||
; by 3d-navigation
|
||||
user-draw (:draw options (fn [state]))
|
||||
user-mouse-dragged (:mouse-dragged options (fn [state _] state))
|
||||
user-mouse-wheel (:mouse-wheel options (fn [state _] state))
|
||||
setup (:setup options (fn [] {}))]
|
||||
(assoc options
|
||||
|
||||
:setup (partial setup-2d-nav setup user-settings)
|
||||
|
||||
:draw (partial draw user-draw)
|
||||
|
||||
:mouse-dragged (fn [state event]
|
||||
(user-mouse-dragged (mouse-dragged state event) event))
|
||||
:mouse-wheel (fn [state event]
|
||||
(user-mouse-wheel (mouse-wheel state event) event)))))
|
||||
119
resources/public/js/optimized/quil/middlewares/navigation_2d.js
Normal file
119
resources/public/js/optimized/quil/middlewares/navigation_2d.js
Normal file
@@ -0,0 +1,119 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.middlewares.navigation_2d');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
goog.require('quil.core');
|
||||
quil.middlewares.navigation_2d.missing_navigation_key_error = ["state map is missing :navigation-2d key. ","Did you accidentally removed it from the state in ",":update or any other handler?"].join('');
|
||||
/**
|
||||
* Asserts that `state` map contains `:navigation-2d` object.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.assert_state_has_navigation = (function quil$middlewares$navigation_2d$assert_state_has_navigation(state){
|
||||
if(cljs.core.truth_(cljs.core.cst$kw$navigation_DASH_2d.cljs$core$IFn$_invoke$arity$1(state))){
|
||||
return null;
|
||||
} else {
|
||||
throw (new Error(quil.middlewares.navigation_2d.missing_navigation_key_error));
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Default position configuration: zoom is neutral and central point is
|
||||
* `width/2, height/2`.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.default_position = (function quil$middlewares$navigation_2d$default_position(){
|
||||
return new cljs.core.PersistentArrayMap(null, 2, [cljs.core.cst$kw$position,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(quil.core.width() / 2.0),(quil.core.height() / 2.0)], null),cljs.core.cst$kw$zoom,(1)], null);
|
||||
});
|
||||
/**
|
||||
* Custom 'setup' function which creates initial position
|
||||
* configuration and puts it to the state map.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.setup_2d_nav = (function quil$middlewares$navigation_2d$setup_2d_nav(user_setup,user_settings){
|
||||
var initial_state = cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([quil.middlewares.navigation_2d.default_position(),cljs.core.select_keys(user_settings,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$position,cljs.core.cst$kw$zoom], null))], 0));
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$3((user_setup.cljs$core$IFn$_invoke$arity$0 ? user_setup.cljs$core$IFn$_invoke$arity$0() : user_setup.call(null)),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_2d], null),((function (initial_state){
|
||||
return (function (p1__6074_SHARP_){
|
||||
return cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([initial_state,p1__6074_SHARP_], 0));
|
||||
});})(initial_state))
|
||||
);
|
||||
});
|
||||
/**
|
||||
* Changes center of the sketch depending on the last mouse move. Takes
|
||||
* zoom into account as well.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.mouse_dragged = (function quil$middlewares$navigation_2d$mouse_dragged(state,event){
|
||||
quil.middlewares.navigation_2d.assert_state_has_navigation(state);
|
||||
|
||||
var dx = (cljs.core.cst$kw$p_DASH_x.cljs$core$IFn$_invoke$arity$1(event) - cljs.core.cst$kw$x.cljs$core$IFn$_invoke$arity$1(event));
|
||||
var dy = (cljs.core.cst$kw$p_DASH_y.cljs$core$IFn$_invoke$arity$1(event) - cljs.core.cst$kw$y.cljs$core$IFn$_invoke$arity$1(event));
|
||||
var zoom = cljs.core.cst$kw$zoom.cljs$core$IFn$_invoke$arity$1(cljs.core.cst$kw$navigation_DASH_2d.cljs$core$IFn$_invoke$arity$1(state));
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(state,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_2d,cljs.core.cst$kw$position,(0)], null),cljs.core._PLUS_,(dx / zoom)),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_2d,cljs.core.cst$kw$position,(1)], null),cljs.core._PLUS_,(dy / zoom));
|
||||
});
|
||||
/**
|
||||
* Changes zoom settings based on scroll.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.mouse_wheel = (function quil$middlewares$navigation_2d$mouse_wheel(state,event){
|
||||
quil.middlewares.navigation_2d.assert_state_has_navigation(state);
|
||||
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(state,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_2d,cljs.core.cst$kw$zoom], null),cljs.core._STAR_,((1) + (-0.1 * event)));
|
||||
});
|
||||
/**
|
||||
* Calls user draw function with all necessary transformations (position
|
||||
* and zoom) applied.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.draw = (function quil$middlewares$navigation_2d$draw(user_draw,state){
|
||||
quil.middlewares.navigation_2d.assert_state_has_navigation(state);
|
||||
|
||||
quil.core.push_matrix();
|
||||
|
||||
var nav_2d_6075 = cljs.core.cst$kw$navigation_DASH_2d.cljs$core$IFn$_invoke$arity$1(state);
|
||||
var zoom_6076 = cljs.core.cst$kw$zoom.cljs$core$IFn$_invoke$arity$1(nav_2d_6075);
|
||||
var pos_6077 = cljs.core.cst$kw$position.cljs$core$IFn$_invoke$arity$1(nav_2d_6075);
|
||||
quil.core.scale.cljs$core$IFn$_invoke$arity$1(zoom_6076);
|
||||
|
||||
var tr__569__auto___6078 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(((quil.core.width() / (2)) / zoom_6076) - cljs.core.first(pos_6077)),(((quil.core.height() / (2)) / zoom_6076) - cljs.core.second(pos_6077))], null);
|
||||
quil.core.push_matrix();
|
||||
|
||||
try{quil.core.translate.cljs$core$IFn$_invoke$arity$1(tr__569__auto___6078);
|
||||
|
||||
(user_draw.cljs$core$IFn$_invoke$arity$1 ? user_draw.cljs$core$IFn$_invoke$arity$1(state) : user_draw.call(null,state));
|
||||
}finally {quil.core.pop_matrix();
|
||||
}
|
||||
return quil.core.pop_matrix();
|
||||
});
|
||||
/**
|
||||
* Enables navigation over 2D sketch. Dragging mouse will move center of the
|
||||
* sketch and mouse wheel controls zoom.
|
||||
*/
|
||||
quil.middlewares.navigation_2d.navigation_2d = (function quil$middlewares$navigation_2d$navigation_2d(options){
|
||||
var user_settings = cljs.core.cst$kw$navigation_DASH_2d.cljs$core$IFn$_invoke$arity$1(options);
|
||||
var user_draw = cljs.core.cst$kw$draw.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings){
|
||||
return (function (state){
|
||||
return null;
|
||||
});})(user_settings))
|
||||
);
|
||||
var user_mouse_dragged = cljs.core.cst$kw$mouse_DASH_dragged.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings,user_draw){
|
||||
return (function (state,_){
|
||||
return state;
|
||||
});})(user_settings,user_draw))
|
||||
);
|
||||
var user_mouse_wheel = cljs.core.cst$kw$mouse_DASH_wheel.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings,user_draw,user_mouse_dragged){
|
||||
return (function (state,_){
|
||||
return state;
|
||||
});})(user_settings,user_draw,user_mouse_dragged))
|
||||
);
|
||||
var setup = cljs.core.cst$kw$setup.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings,user_draw,user_mouse_dragged,user_mouse_wheel){
|
||||
return (function (){
|
||||
return cljs.core.PersistentArrayMap.EMPTY;
|
||||
});})(user_settings,user_draw,user_mouse_dragged,user_mouse_wheel))
|
||||
);
|
||||
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(options,cljs.core.cst$kw$setup,cljs.core.partial.cljs$core$IFn$_invoke$arity$3(quil.middlewares.navigation_2d.setup_2d_nav,setup,user_settings),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.cst$kw$draw,cljs.core.partial.cljs$core$IFn$_invoke$arity$2(quil.middlewares.navigation_2d.draw,user_draw),cljs.core.cst$kw$mouse_DASH_dragged,((function (user_settings,user_draw,user_mouse_dragged,user_mouse_wheel,setup){
|
||||
return (function (state,event){
|
||||
var G__6079 = quil.middlewares.navigation_2d.mouse_dragged(state,event);
|
||||
var G__6080 = event;
|
||||
return (user_mouse_dragged.cljs$core$IFn$_invoke$arity$2 ? user_mouse_dragged.cljs$core$IFn$_invoke$arity$2(G__6079,G__6080) : user_mouse_dragged.call(null,G__6079,G__6080));
|
||||
});})(user_settings,user_draw,user_mouse_dragged,user_mouse_wheel,setup))
|
||||
,cljs.core.cst$kw$mouse_DASH_wheel,((function (user_settings,user_draw,user_mouse_dragged,user_mouse_wheel,setup){
|
||||
return (function (state,event){
|
||||
var G__6081 = quil.middlewares.navigation_2d.mouse_wheel(state,event);
|
||||
var G__6082 = event;
|
||||
return (user_mouse_wheel.cljs$core$IFn$_invoke$arity$2 ? user_mouse_wheel.cljs$core$IFn$_invoke$arity$2(G__6081,G__6082) : user_mouse_wheel.call(null,G__6081,G__6082));
|
||||
});})(user_settings,user_draw,user_mouse_dragged,user_mouse_wheel,setup))
|
||||
], 0));
|
||||
});
|
||||
@@ -0,0 +1,188 @@
|
||||
(ns quil.middlewares.navigation-3d
|
||||
(:require [quil.core :as q]))
|
||||
|
||||
(def ^:private ^String missing-navigation-key-error
|
||||
(str "state map is missing :navigation-3d key. "
|
||||
"Did you accidentally removed it from the state in "
|
||||
":update or any other handler?"))
|
||||
|
||||
(defn- assert-state-has-navigation
|
||||
"Asserts that `state` map contains `:navigation-2d` object."
|
||||
[state]
|
||||
(when-not (:navigation-3d state)
|
||||
(throw #?(:clj (RuntimeException. missing-navigation-key-error)
|
||||
:cljs (js/Error. missing-navigation-key-error)))))
|
||||
|
||||
(defn- default-position
|
||||
"Default position configuration. Check default configuration in
|
||||
'camera' function."
|
||||
[]
|
||||
{:position [(/ (q/width) 2.0)
|
||||
(/ (q/height) 2.0)
|
||||
(/ (q/height) 2.0 (q/tan (/ (* q/PI 60.0) 360.0)))]
|
||||
:straight [0 0 -1]
|
||||
:up [0 1 0]})
|
||||
|
||||
(defn- rotate-by-axis-and-angle
|
||||
"Rotates vector `v` by `angle` with `axis`.
|
||||
Formula is taken from wiki:
|
||||
http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle"
|
||||
[v axis angle]
|
||||
(let [[a-x a-y a-z] axis
|
||||
[x y z] v
|
||||
cs (q/cos angle)
|
||||
-cs (- 1 cs)
|
||||
sn (q/sin angle)
|
||||
; Matrix is
|
||||
; [a b c]
|
||||
; [d e f]
|
||||
; [g h i]
|
||||
a (+ cs (* a-x a-x -cs))
|
||||
b (- (* a-x a-y -cs)
|
||||
(* a-z sn))
|
||||
c (+ (* a-x a-z -cs)
|
||||
(* a-y sn))
|
||||
d (+ (* a-x a-y -cs)
|
||||
(* a-z sn))
|
||||
e (+ cs (* a-y a-y -cs))
|
||||
f (- (* a-y a-z -cs)
|
||||
(* a-x sn))
|
||||
g (- (* a-x a-z -cs)
|
||||
(* a-y sn))
|
||||
h (+ (* a-y a-z -cs)
|
||||
(* a-x sn))
|
||||
i (+ cs (* a-z a-z -cs))]
|
||||
[(+ (* a x) (* b y) (* c z))
|
||||
(+ (* d x) (* e y) (* f z))
|
||||
(+ (* g x) (* h y) (* i z))]))
|
||||
|
||||
(defn- rotate-lr
|
||||
"Rotates `nav-3d` configuration left-right. `angle` positive - rotate right,
|
||||
negative - left."
|
||||
[nav-3d angle]
|
||||
(update-in nav-3d [:straight] rotate-by-axis-and-angle (:up nav-3d) angle))
|
||||
|
||||
(defn- cross-product
|
||||
"Vector cross-product: http://en.wikipedia.org/wiki/Cross_product"
|
||||
[[u1 u2 u3] [v1 v2 v3]]
|
||||
[(- (* u2 v3) (* u3 v2))
|
||||
(- (* u3 v1) (* u1 v3))
|
||||
(- (* u1 v2) (* u2 v1))])
|
||||
|
||||
(defn- v-mult
|
||||
"Multiply vector `v` by scalar `mult`."
|
||||
[v mult]
|
||||
(mapv #(* % mult) v))
|
||||
|
||||
(defn- v-plus
|
||||
"Sum of 2 vectors."
|
||||
[v1 v2]
|
||||
(mapv + v1 v2))
|
||||
|
||||
(defn- v-opposite
|
||||
"Returns vector opposite to vector `v`."
|
||||
[v]
|
||||
(v-mult v -1))
|
||||
|
||||
(defn- v-normalize
|
||||
"Normalize vector, returning vector
|
||||
which has same direction but with norm equals to 1."
|
||||
[v]
|
||||
(let [norm (->> (map q/sq v)
|
||||
(apply +)
|
||||
(q/sqrt))]
|
||||
(v-mult v (/ norm))))
|
||||
|
||||
(defn- rotate-ud
|
||||
"Rotates `nav-3d` configuration up-down."
|
||||
[nav-3d angle]
|
||||
(let [axis (cross-product (:straight nav-3d) (:up nav-3d))
|
||||
rotate #(rotate-by-axis-and-angle % axis angle)]
|
||||
(-> nav-3d
|
||||
(update-in [:straight] rotate)
|
||||
(update-in [:up] rotate))))
|
||||
|
||||
(defn- rotate
|
||||
"Mouse handler function which rotates nav-3d configuration.
|
||||
It uses mouse from `event` object and `pixels-in-360` to calculate
|
||||
angles to rotate."
|
||||
[state event pixels-in-360]
|
||||
(assert-state-has-navigation state)
|
||||
(if (= 0 (:p-x event) (:p-y event))
|
||||
state
|
||||
(let [dx (- (:p-x event) (:x event))
|
||||
dy (- (:y event) (:p-y event))
|
||||
angle-lr (q/map-range dx 0 pixels-in-360 0 q/TWO-PI)
|
||||
angle-ud (q/map-range dy 0 pixels-in-360 0 q/TWO-PI)]
|
||||
(update-in state [:navigation-3d]
|
||||
#(-> %
|
||||
(rotate-lr angle-lr)
|
||||
(rotate-ud angle-ud))))))
|
||||
|
||||
(def ^:private space (keyword " "))
|
||||
|
||||
(defn- move
|
||||
"Keyboard handler function which moves nav-3d configuration.
|
||||
It uses keyboard key from `event` object to determine in which
|
||||
direction to move."
|
||||
[state event step-size]
|
||||
(assert-state-has-navigation state)
|
||||
(let [{:keys [up straight]} (:navigation-3d state)]
|
||||
(if-let [dir (condp = (:key event)
|
||||
:w straight
|
||||
:s (v-opposite straight)
|
||||
space (v-opposite up)
|
||||
:z up
|
||||
:d (cross-product straight up)
|
||||
:a (cross-product up straight)
|
||||
nil)]
|
||||
(update-in state [:navigation-3d :position]
|
||||
#(v-plus % (v-mult dir step-size)))
|
||||
state)))
|
||||
|
||||
(defn- setup-3d-nav
|
||||
"Custom 'setup' function which creates initial position
|
||||
configuration and puts it to the state map."
|
||||
[user-setup user-settings]
|
||||
(let [initial-state (-> user-settings
|
||||
(select-keys [:straight :up :position])
|
||||
(->> (merge (default-position)))
|
||||
(update-in [:straight] v-normalize)
|
||||
(update-in [:up] v-normalize))]
|
||||
(update-in (user-setup) [:navigation-3d]
|
||||
#(merge initial-state %))))
|
||||
|
||||
(defn navigation-3d
|
||||
"Enables navigation in 3D space. Similar to how it is done in
|
||||
shooters: WASD navigation, space is go up, z is go down,
|
||||
drag mouse to look around."
|
||||
[options]
|
||||
(let [; 3d-navigation related user settings
|
||||
user-settings (:navigation-3d options)
|
||||
pixels-in-360 (:pixels-in-360 user-settings 1000)
|
||||
step-size (:step-size user-settings 20)
|
||||
rotate-on (:rotate-on user-settings :mouse-dragged)
|
||||
|
||||
; user-provided handlers which will be overridden
|
||||
; by 3d-navigation
|
||||
draw (:draw options (fn [state]))
|
||||
key-pressed (:key-pressed options (fn [state _] state))
|
||||
rotate-on-fn (rotate-on options (fn [state _] state))
|
||||
setup (:setup options (fn [] {}))]
|
||||
(assoc options
|
||||
|
||||
:setup (partial setup-3d-nav setup user-settings)
|
||||
|
||||
:draw (fn [state]
|
||||
(assert-state-has-navigation state)
|
||||
(let [{[c-x c-y c-z] :straight
|
||||
[u-x u-y u-z] :up
|
||||
[p-x p-y p-z] :position} (:navigation-3d state)]
|
||||
(q/camera p-x p-y p-z (+ p-x c-x) (+ p-y c-y) (+ p-z c-z) u-x u-y u-z))
|
||||
(draw state))
|
||||
|
||||
:key-pressed (fn [state event]
|
||||
(key-pressed (move state event step-size) event))
|
||||
|
||||
rotate-on (fn [state event]
|
||||
(rotate-on-fn (rotate state event pixels-in-360) event)))))
|
||||
282
resources/public/js/optimized/quil/middlewares/navigation_3d.js
Normal file
282
resources/public/js/optimized/quil/middlewares/navigation_3d.js
Normal file
@@ -0,0 +1,282 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.middlewares.navigation_3d');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
goog.require('quil.core');
|
||||
quil.middlewares.navigation_3d.missing_navigation_key_error = ["state map is missing :navigation-3d key. ","Did you accidentally removed it from the state in ",":update or any other handler?"].join('');
|
||||
/**
|
||||
* Asserts that `state` map contains `:navigation-2d` object.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.assert_state_has_navigation = (function quil$middlewares$navigation_3d$assert_state_has_navigation(state){
|
||||
if(cljs.core.truth_(cljs.core.cst$kw$navigation_DASH_3d.cljs$core$IFn$_invoke$arity$1(state))){
|
||||
return null;
|
||||
} else {
|
||||
throw (new Error(quil.middlewares.navigation_3d.missing_navigation_key_error));
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Default position configuration. Check default configuration in
|
||||
* 'camera' function.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.default_position = (function quil$middlewares$navigation_3d$default_position(){
|
||||
return new cljs.core.PersistentArrayMap(null, 3, [cljs.core.cst$kw$position,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(quil.core.width() / 2.0),(quil.core.height() / 2.0),((quil.core.height() / 2.0) / quil.core.tan(((quil.core.PI * 60.0) / 360.0)))], null),cljs.core.cst$kw$straight,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(0),(0),(-1)], null),cljs.core.cst$kw$up,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(0),(1),(0)], null)], null);
|
||||
});
|
||||
/**
|
||||
* Rotates vector `v` by `angle` with `axis`.
|
||||
* Formula is taken from wiki:
|
||||
* http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle
|
||||
*/
|
||||
quil.middlewares.navigation_3d.rotate_by_axis_and_angle = (function quil$middlewares$navigation_3d$rotate_by_axis_and_angle(v,axis,angle){
|
||||
var vec__6007 = axis;
|
||||
var a_x = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6007,(0),null);
|
||||
var a_y = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6007,(1),null);
|
||||
var a_z = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6007,(2),null);
|
||||
var vec__6010 = v;
|
||||
var x = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6010,(0),null);
|
||||
var y = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6010,(1),null);
|
||||
var z = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6010,(2),null);
|
||||
var cs = quil.core.cos(angle);
|
||||
var _cs = ((1) - cs);
|
||||
var sn = quil.core.sin(angle);
|
||||
var a = (cs + ((a_x * a_x) * _cs));
|
||||
var b = (((a_x * a_y) * _cs) - (a_z * sn));
|
||||
var c = (((a_x * a_z) * _cs) + (a_y * sn));
|
||||
var d = (((a_x * a_y) * _cs) + (a_z * sn));
|
||||
var e = (cs + ((a_y * a_y) * _cs));
|
||||
var f = (((a_y * a_z) * _cs) - (a_x * sn));
|
||||
var g = (((a_x * a_z) * _cs) - (a_y * sn));
|
||||
var h = (((a_y * a_z) * _cs) + (a_x * sn));
|
||||
var i = (cs + ((a_z * a_z) * _cs));
|
||||
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(((a * x) + (b * y)) + (c * z)),(((d * x) + (e * y)) + (f * z)),(((g * x) + (h * y)) + (i * z))], null);
|
||||
});
|
||||
/**
|
||||
* Rotates `nav-3d` configuration left-right. `angle` positive - rotate right,
|
||||
* negative - left.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.rotate_lr = (function quil$middlewares$navigation_3d$rotate_lr(nav_3d,angle){
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(nav_3d,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$straight], null),quil.middlewares.navigation_3d.rotate_by_axis_and_angle,cljs.core.cst$kw$up.cljs$core$IFn$_invoke$arity$1(nav_3d),angle);
|
||||
});
|
||||
/**
|
||||
* Vector cross-product: http://en.wikipedia.org/wiki/Cross_product
|
||||
*/
|
||||
quil.middlewares.navigation_3d.cross_product = (function quil$middlewares$navigation_3d$cross_product(p__6013,p__6014){
|
||||
var vec__6015 = p__6013;
|
||||
var u1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6015,(0),null);
|
||||
var u2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6015,(1),null);
|
||||
var u3 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6015,(2),null);
|
||||
var vec__6018 = p__6014;
|
||||
var v1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6018,(0),null);
|
||||
var v2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6018,(1),null);
|
||||
var v3 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6018,(2),null);
|
||||
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [((u2 * v3) - (u3 * v2)),((u3 * v1) - (u1 * v3)),((u1 * v2) - (u2 * v1))], null);
|
||||
});
|
||||
/**
|
||||
* Multiply vector `v` by scalar `mult`.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.v_mult = (function quil$middlewares$navigation_3d$v_mult(v,mult){
|
||||
return cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__6021_SHARP_){
|
||||
return (p1__6021_SHARP_ * mult);
|
||||
}),v);
|
||||
});
|
||||
/**
|
||||
* Sum of 2 vectors.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.v_plus = (function quil$middlewares$navigation_3d$v_plus(v1,v2){
|
||||
return cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(cljs.core._PLUS_,v1,v2);
|
||||
});
|
||||
/**
|
||||
* Returns vector opposite to vector `v`.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.v_opposite = (function quil$middlewares$navigation_3d$v_opposite(v){
|
||||
return quil.middlewares.navigation_3d.v_mult(v,(-1));
|
||||
});
|
||||
/**
|
||||
* Normalize vector, returning vector
|
||||
* which has same direction but with norm equals to 1.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.v_normalize = (function quil$middlewares$navigation_3d$v_normalize(v){
|
||||
var norm = quil.core.sqrt(cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core._PLUS_,cljs.core.map.cljs$core$IFn$_invoke$arity$2(quil.core.sq,v)));
|
||||
return quil.middlewares.navigation_3d.v_mult(v,((1) / norm));
|
||||
});
|
||||
/**
|
||||
* Rotates `nav-3d` configuration up-down.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.rotate_ud = (function quil$middlewares$navigation_3d$rotate_ud(nav_3d,angle){
|
||||
var axis = quil.middlewares.navigation_3d.cross_product(cljs.core.cst$kw$straight.cljs$core$IFn$_invoke$arity$1(nav_3d),cljs.core.cst$kw$up.cljs$core$IFn$_invoke$arity$1(nav_3d));
|
||||
var rotate = ((function (axis){
|
||||
return (function (p1__6022_SHARP_){
|
||||
return quil.middlewares.navigation_3d.rotate_by_axis_and_angle(p1__6022_SHARP_,axis,angle);
|
||||
});})(axis))
|
||||
;
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(nav_3d,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$straight], null),rotate),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$up], null),rotate);
|
||||
});
|
||||
/**
|
||||
* Mouse handler function which rotates nav-3d configuration.
|
||||
* It uses mouse from `event` object and `pixels-in-360` to calculate
|
||||
* angles to rotate.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.rotate = (function quil$middlewares$navigation_3d$rotate(state,event,pixels_in_360){
|
||||
quil.middlewares.navigation_3d.assert_state_has_navigation(state);
|
||||
|
||||
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$variadic((0),cljs.core.cst$kw$p_DASH_x.cljs$core$IFn$_invoke$arity$1(event),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.cst$kw$p_DASH_y.cljs$core$IFn$_invoke$arity$1(event)], 0))){
|
||||
return state;
|
||||
} else {
|
||||
var dx = (cljs.core.cst$kw$p_DASH_x.cljs$core$IFn$_invoke$arity$1(event) - cljs.core.cst$kw$x.cljs$core$IFn$_invoke$arity$1(event));
|
||||
var dy = (cljs.core.cst$kw$y.cljs$core$IFn$_invoke$arity$1(event) - cljs.core.cst$kw$p_DASH_y.cljs$core$IFn$_invoke$arity$1(event));
|
||||
var angle_lr = quil.core.map_range(dx,(0),pixels_in_360,(0),quil.core.TWO_PI);
|
||||
var angle_ud = quil.core.map_range(dy,(0),pixels_in_360,(0),quil.core.TWO_PI);
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(state,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_3d], null),((function (dx,dy,angle_lr,angle_ud){
|
||||
return (function (p1__6023_SHARP_){
|
||||
return quil.middlewares.navigation_3d.rotate_ud(quil.middlewares.navigation_3d.rotate_lr(p1__6023_SHARP_,angle_lr),angle_ud);
|
||||
});})(dx,dy,angle_lr,angle_ud))
|
||||
);
|
||||
}
|
||||
});
|
||||
quil.middlewares.navigation_3d.space = cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(" ");
|
||||
/**
|
||||
* Keyboard handler function which moves nav-3d configuration.
|
||||
* It uses keyboard key from `event` object to determine in which
|
||||
* direction to move.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.move = (function quil$middlewares$navigation_3d$move(state,event,step_size){
|
||||
quil.middlewares.navigation_3d.assert_state_has_navigation(state);
|
||||
|
||||
var map__6025 = cljs.core.cst$kw$navigation_DASH_3d.cljs$core$IFn$_invoke$arity$1(state);
|
||||
var map__6025__$1 = (((((!((map__6025 == null))))?(((((map__6025.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__6025.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__6025):map__6025);
|
||||
var up = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__6025__$1,cljs.core.cst$kw$up);
|
||||
var straight = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__6025__$1,cljs.core.cst$kw$straight);
|
||||
var temp__5733__auto__ = (function (){var pred__6027 = cljs.core._EQ_;
|
||||
var expr__6028 = cljs.core.cst$kw$key.cljs$core$IFn$_invoke$arity$1(event);
|
||||
if(cljs.core.truth_((function (){var G__6030 = cljs.core.cst$kw$w;
|
||||
var G__6031 = expr__6028;
|
||||
return (pred__6027.cljs$core$IFn$_invoke$arity$2 ? pred__6027.cljs$core$IFn$_invoke$arity$2(G__6030,G__6031) : pred__6027.call(null,G__6030,G__6031));
|
||||
})())){
|
||||
return straight;
|
||||
} else {
|
||||
if(cljs.core.truth_((function (){var G__6032 = cljs.core.cst$kw$s;
|
||||
var G__6033 = expr__6028;
|
||||
return (pred__6027.cljs$core$IFn$_invoke$arity$2 ? pred__6027.cljs$core$IFn$_invoke$arity$2(G__6032,G__6033) : pred__6027.call(null,G__6032,G__6033));
|
||||
})())){
|
||||
return quil.middlewares.navigation_3d.v_opposite(straight);
|
||||
} else {
|
||||
if(cljs.core.truth_((pred__6027.cljs$core$IFn$_invoke$arity$2 ? pred__6027.cljs$core$IFn$_invoke$arity$2(quil.middlewares.navigation_3d.space,expr__6028) : pred__6027.call(null,quil.middlewares.navigation_3d.space,expr__6028)))){
|
||||
return quil.middlewares.navigation_3d.v_opposite(up);
|
||||
} else {
|
||||
if(cljs.core.truth_((function (){var G__6034 = cljs.core.cst$kw$z;
|
||||
var G__6035 = expr__6028;
|
||||
return (pred__6027.cljs$core$IFn$_invoke$arity$2 ? pred__6027.cljs$core$IFn$_invoke$arity$2(G__6034,G__6035) : pred__6027.call(null,G__6034,G__6035));
|
||||
})())){
|
||||
return up;
|
||||
} else {
|
||||
if(cljs.core.truth_((function (){var G__6036 = cljs.core.cst$kw$d;
|
||||
var G__6037 = expr__6028;
|
||||
return (pred__6027.cljs$core$IFn$_invoke$arity$2 ? pred__6027.cljs$core$IFn$_invoke$arity$2(G__6036,G__6037) : pred__6027.call(null,G__6036,G__6037));
|
||||
})())){
|
||||
return quil.middlewares.navigation_3d.cross_product(straight,up);
|
||||
} else {
|
||||
if(cljs.core.truth_((function (){var G__6038 = cljs.core.cst$kw$a;
|
||||
var G__6039 = expr__6028;
|
||||
return (pred__6027.cljs$core$IFn$_invoke$arity$2 ? pred__6027.cljs$core$IFn$_invoke$arity$2(G__6038,G__6039) : pred__6027.call(null,G__6038,G__6039));
|
||||
})())){
|
||||
return quil.middlewares.navigation_3d.cross_product(up,straight);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
if(cljs.core.truth_(temp__5733__auto__)){
|
||||
var dir = temp__5733__auto__;
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(state,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_3d,cljs.core.cst$kw$position], null),((function (dir,temp__5733__auto__,map__6025,map__6025__$1,up,straight){
|
||||
return (function (p1__6024_SHARP_){
|
||||
return quil.middlewares.navigation_3d.v_plus(p1__6024_SHARP_,quil.middlewares.navigation_3d.v_mult(dir,step_size));
|
||||
});})(dir,temp__5733__auto__,map__6025,map__6025__$1,up,straight))
|
||||
);
|
||||
} else {
|
||||
return state;
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Custom 'setup' function which creates initial position
|
||||
* configuration and puts it to the state map.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.setup_3d_nav = (function quil$middlewares$navigation_3d$setup_3d_nav(user_setup,user_settings){
|
||||
var initial_state = cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([quil.middlewares.navigation_3d.default_position(),cljs.core.select_keys(user_settings,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$straight,cljs.core.cst$kw$up,cljs.core.cst$kw$position], null))], 0)),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$straight], null),quil.middlewares.navigation_3d.v_normalize),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$up], null),quil.middlewares.navigation_3d.v_normalize);
|
||||
return cljs.core.update_in.cljs$core$IFn$_invoke$arity$3((user_setup.cljs$core$IFn$_invoke$arity$0 ? user_setup.cljs$core$IFn$_invoke$arity$0() : user_setup.call(null)),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$navigation_DASH_3d], null),((function (initial_state){
|
||||
return (function (p1__6040_SHARP_){
|
||||
return cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([initial_state,p1__6040_SHARP_], 0));
|
||||
});})(initial_state))
|
||||
);
|
||||
});
|
||||
/**
|
||||
* Enables navigation in 3D space. Similar to how it is done in
|
||||
* shooters: WASD navigation, space is go up, z is go down,
|
||||
* drag mouse to look around.
|
||||
*/
|
||||
quil.middlewares.navigation_3d.navigation_3d = (function quil$middlewares$navigation_3d$navigation_3d(options){
|
||||
var user_settings = cljs.core.cst$kw$navigation_DASH_3d.cljs$core$IFn$_invoke$arity$1(options);
|
||||
var pixels_in_360 = cljs.core.cst$kw$pixels_DASH_in_DASH_360.cljs$core$IFn$_invoke$arity$2(user_settings,(1000));
|
||||
var step_size = cljs.core.cst$kw$step_DASH_size.cljs$core$IFn$_invoke$arity$2(user_settings,(20));
|
||||
var rotate_on = cljs.core.cst$kw$rotate_DASH_on.cljs$core$IFn$_invoke$arity$2(user_settings,cljs.core.cst$kw$mouse_DASH_dragged);
|
||||
var draw = cljs.core.cst$kw$draw.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings,pixels_in_360,step_size,rotate_on){
|
||||
return (function (state){
|
||||
return null;
|
||||
});})(user_settings,pixels_in_360,step_size,rotate_on))
|
||||
);
|
||||
var key_pressed = cljs.core.cst$kw$key_DASH_pressed.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings,pixels_in_360,step_size,rotate_on,draw){
|
||||
return (function (state,_){
|
||||
return state;
|
||||
});})(user_settings,pixels_in_360,step_size,rotate_on,draw))
|
||||
);
|
||||
var rotate_on_fn = (function (){var G__6041 = options;
|
||||
var G__6042 = ((function (G__6041,user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed){
|
||||
return (function (state,_){
|
||||
return state;
|
||||
});})(G__6041,user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed))
|
||||
;
|
||||
return (rotate_on.cljs$core$IFn$_invoke$arity$2 ? rotate_on.cljs$core$IFn$_invoke$arity$2(G__6041,G__6042) : rotate_on.call(null,G__6041,G__6042));
|
||||
})();
|
||||
var setup = cljs.core.cst$kw$setup.cljs$core$IFn$_invoke$arity$2(options,((function (user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn){
|
||||
return (function (){
|
||||
return cljs.core.PersistentArrayMap.EMPTY;
|
||||
});})(user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn))
|
||||
);
|
||||
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(options,cljs.core.cst$kw$setup,cljs.core.partial.cljs$core$IFn$_invoke$arity$3(quil.middlewares.navigation_3d.setup_3d_nav,setup,user_settings),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.cst$kw$draw,((function (user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn,setup){
|
||||
return (function (state){
|
||||
quil.middlewares.navigation_3d.assert_state_has_navigation(state);
|
||||
|
||||
var map__6043_6058 = cljs.core.cst$kw$navigation_DASH_3d.cljs$core$IFn$_invoke$arity$1(state);
|
||||
var map__6043_6059__$1 = (((((!((map__6043_6058 == null))))?(((((map__6043_6058.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__6043_6058.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__6043_6058):map__6043_6058);
|
||||
var vec__6044_6060 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__6043_6059__$1,cljs.core.cst$kw$straight);
|
||||
var c_x_6061 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6044_6060,(0),null);
|
||||
var c_y_6062 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6044_6060,(1),null);
|
||||
var c_z_6063 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6044_6060,(2),null);
|
||||
var vec__6047_6064 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__6043_6059__$1,cljs.core.cst$kw$up);
|
||||
var u_x_6065 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6047_6064,(0),null);
|
||||
var u_y_6066 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6047_6064,(1),null);
|
||||
var u_z_6067 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6047_6064,(2),null);
|
||||
var vec__6050_6068 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__6043_6059__$1,cljs.core.cst$kw$position);
|
||||
var p_x_6069 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6050_6068,(0),null);
|
||||
var p_y_6070 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6050_6068,(1),null);
|
||||
var p_z_6071 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__6050_6068,(2),null);
|
||||
quil.core.camera.cljs$core$IFn$_invoke$arity$9(p_x_6069,p_y_6070,p_z_6071,(p_x_6069 + c_x_6061),(p_y_6070 + c_y_6062),(p_z_6071 + c_z_6063),u_x_6065,u_y_6066,u_z_6067);
|
||||
|
||||
return (draw.cljs$core$IFn$_invoke$arity$1 ? draw.cljs$core$IFn$_invoke$arity$1(state) : draw.call(null,state));
|
||||
});})(user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn,setup))
|
||||
,cljs.core.cst$kw$key_DASH_pressed,((function (user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn,setup){
|
||||
return (function (state,event){
|
||||
var G__6054 = quil.middlewares.navigation_3d.move(state,event,step_size);
|
||||
var G__6055 = event;
|
||||
return (key_pressed.cljs$core$IFn$_invoke$arity$2 ? key_pressed.cljs$core$IFn$_invoke$arity$2(G__6054,G__6055) : key_pressed.call(null,G__6054,G__6055));
|
||||
});})(user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn,setup))
|
||||
,rotate_on,((function (user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn,setup){
|
||||
return (function (state,event){
|
||||
var G__6056 = quil.middlewares.navigation_3d.rotate(state,event,pixels_in_360);
|
||||
var G__6057 = event;
|
||||
return (rotate_on_fn.cljs$core$IFn$_invoke$arity$2 ? rotate_on_fn.cljs$core$IFn$_invoke$arity$2(G__6056,G__6057) : rotate_on_fn.call(null,G__6056,G__6057));
|
||||
});})(user_settings,pixels_in_360,step_size,rotate_on,draw,key_pressed,rotate_on_fn,setup))
|
||||
], 0));
|
||||
});
|
||||
191
resources/public/js/optimized/quil/sketch.cljs
Normal file
191
resources/public/js/optimized/quil/sketch.cljs
Normal file
@@ -0,0 +1,191 @@
|
||||
(ns quil.sketch
|
||||
(:require [quil.util :as u :include-macros true]
|
||||
[quil.middlewares.deprecated-options :as do]
|
||||
[goog.dom :as dom]
|
||||
[goog.events :as events]
|
||||
[goog.style :as style]
|
||||
[goog.object :as object]
|
||||
[goog.events.EventType :as EventType])
|
||||
(:require-macros [quil.sketch]))
|
||||
|
||||
(def ^:dynamic
|
||||
*applet* nil)
|
||||
|
||||
(defn current-applet [] *applet*)
|
||||
|
||||
(u/generate-quil-constants :cljs
|
||||
rendering-modes (:java2d :p2d :p3d :opengl))
|
||||
|
||||
(defn resolve-renderer [mode]
|
||||
(if (= :p3d mode)
|
||||
(aget js/p5.prototype "WEBGL")
|
||||
(u/resolve-constant-key mode rendering-modes)))
|
||||
|
||||
(defn set-size [applet width height]
|
||||
(when-let [el (.-quil-canvas applet)]
|
||||
; p5js creates a <canvas> element inside provided <div> element
|
||||
; we need to resize only the canvas as outer div will adapt automatically
|
||||
(let [inner-canvas (.querySelector el "canvas")]
|
||||
(.resizeCanvas applet width height)
|
||||
(.setAttribute inner-canvas "width" width)
|
||||
(.setAttribute inner-canvas "height" height)
|
||||
(aset (.-style inner-canvas) "width" (str width "px"))
|
||||
(aset (.-style inner-canvas) "height" (str height "px"))
|
||||
(set! (.-width applet)
|
||||
(.parseInt js/window (style/getComputedStyle inner-canvas "width")))
|
||||
(set! (.-height applet)
|
||||
(.parseInt js/window (style/getComputedStyle inner-canvas "height"))))))
|
||||
|
||||
(defn size
|
||||
([width height]
|
||||
(.createCanvas (current-applet) (int width) (int height)))
|
||||
|
||||
([width height mode]
|
||||
(.createCanvas (current-applet) (int width) (int height) (resolve-renderer mode))))
|
||||
|
||||
(defn- bind-handlers [prc opts]
|
||||
(doseq [[processing-name quil-name] {:setup :setup
|
||||
:draw :draw
|
||||
|
||||
:keyPressed :key-pressed
|
||||
:keyReleased :key-released
|
||||
:keyTyped :key-typed
|
||||
|
||||
:mouseClicked :mouse-clicked
|
||||
:mouseDragged :mouse-dragged
|
||||
:mouseMoved :mouse-moved
|
||||
:mousePressed :mouse-pressed
|
||||
:mouseReleased :mouse-released
|
||||
:mouseOut :mouse-exited
|
||||
:mouseOver :mouse-entered
|
||||
:mouseWheel :mouse-wheel}]
|
||||
(when-let [handler (opts quil-name)]
|
||||
(aset prc (name processing-name)
|
||||
(fn [& args]
|
||||
(quil.sketch/with-sketch prc
|
||||
(apply handler args)))))))
|
||||
|
||||
(defn in-fullscreen? []
|
||||
(or (.-fullscreenElement js/document)
|
||||
(.-mozFullScreenElement js/document)))
|
||||
|
||||
(defn add-fullscreen-support
|
||||
"Adds fullscreen support for the provided `p5` object.
|
||||
Fullscreen is enabled when the user presses `F11`. We turn
|
||||
the sketch `<canvas>` element to fullscreen storing the old size
|
||||
in an `atom`. When the user cancels fullscreen (`F11` or `Esc`)
|
||||
we resize the sketch back to the old size."
|
||||
[applet]
|
||||
(let [old-size (atom nil)
|
||||
adjust-canvas-size
|
||||
(fn []
|
||||
(if (in-fullscreen?)
|
||||
(do
|
||||
(reset! old-size
|
||||
[(.-width applet) (.-height applet)])
|
||||
(set-size applet
|
||||
(-> js/window .-screen .-width)
|
||||
(-> js/window .-screen .-height)))
|
||||
(apply set-size applet @old-size)))]
|
||||
(events/listen js/window EventType/KEYDOWN
|
||||
(fn [event]
|
||||
(when (and (= (.-key event) "F11")
|
||||
(not (in-fullscreen?)))
|
||||
(.preventDefault event)
|
||||
(let [canvas (.-quil-canvas applet)]
|
||||
(cond (.-requestFullscreen canvas) (.requestFullscreen canvas)
|
||||
(.-mozRequestFullScreen canvas) (.mozRequestFullScreen canvas)
|
||||
:else (.warn js/console "Fullscreen mode is not supported in current browser."))))))
|
||||
(events/listen js/document "fullscreenchange" adjust-canvas-size)
|
||||
(events/listen js/document "mozfullscreenchange" adjust-canvas-size)
|
||||
(events/listen js/document "fullscreenerror"
|
||||
#(.error js/console "Error while switching to/from fullscreen: " %))))
|
||||
|
||||
(defn make-sketch [options]
|
||||
(let [opts (->> (:middleware options [])
|
||||
(cons do/deprecated-options)
|
||||
(apply comp)
|
||||
(#(% options))
|
||||
(merge {:size [500 300]}))
|
||||
|
||||
sketch-size (:size opts)
|
||||
renderer (:renderer opts)
|
||||
features (set (:features opts))
|
||||
|
||||
setup (fn []
|
||||
(->> (if renderer [renderer] [])
|
||||
(concat sketch-size)
|
||||
(apply size))
|
||||
(when (:settings opts) ((:settings opts)))
|
||||
(when (:setup opts) ((:setup opts))))
|
||||
mouse-wheel (when-let [wheel-handler (:mouse-wheel opts)]
|
||||
; using (get "delta") because in advanced mode
|
||||
; it will be renamed otherwise.
|
||||
(fn [evt] (wheel-handler (object/get evt "delta"))))
|
||||
|
||||
opts (assoc opts
|
||||
:setup setup
|
||||
:mouse-wheel mouse-wheel)
|
||||
|
||||
sketch (fn [prc]
|
||||
(bind-handlers prc opts)
|
||||
(set! (.-quil prc) (atom nil))
|
||||
(set! (.-quil-internal-state prc) (atom u/initial-internal-state)))]
|
||||
sketch))
|
||||
|
||||
(defn destroy-previous-sketch [host-elem]
|
||||
(when-let [proc-obj (.-processing-obj host-elem)]
|
||||
(.remove proc-obj)))
|
||||
|
||||
(defn sketch [& opts]
|
||||
(let [opts-map (apply hash-map opts)
|
||||
host-elem (:host opts-map)
|
||||
renderer (or (:renderer opts-map) :p2d)
|
||||
host-elem (if (string? host-elem)
|
||||
(.getElementById js/document host-elem)
|
||||
host-elem)]
|
||||
(if host-elem
|
||||
(do
|
||||
(if (.-processing-context host-elem)
|
||||
(when-not (= renderer (.-processing-context host-elem))
|
||||
(.warn js/console "WARNING: Using different context on one canvas!"))
|
||||
(set! (.-processing-context host-elem) renderer))
|
||||
(destroy-previous-sketch host-elem)
|
||||
(let [proc-obj (js/p5. (make-sketch opts-map) host-elem)]
|
||||
(set! (.-processing-obj host-elem) proc-obj)
|
||||
(set! (.-quil-canvas proc-obj) host-elem)
|
||||
(add-fullscreen-support proc-obj)
|
||||
proc-obj))
|
||||
(.error js/console
|
||||
(if (:host opts-map)
|
||||
(str "ERROR: Cannot find host element: " (:host opts-map))
|
||||
"ERROR: Cannot create sketch. :host is not specified or element not found.")))))
|
||||
|
||||
(def sketch-init-list (atom (list)))
|
||||
|
||||
(defn empty-body? []
|
||||
(let [child (.-childNodes (.-body js/document))]
|
||||
; seems hacky, we should come up with better way of
|
||||
; checking whether body is empty or not
|
||||
(<= (.-length child) 1)))
|
||||
|
||||
(defn add-canvas [canvas-id]
|
||||
(let [canvas (.createElement js/document "canvas")]
|
||||
(.setAttribute canvas "id" canvas-id)
|
||||
(.appendChild (.-body js/document) canvas)))
|
||||
|
||||
(defn init-sketches []
|
||||
(let [add-elem? (empty-body?)]
|
||||
(doseq [sk @sketch-init-list]
|
||||
(when add-elem?
|
||||
(add-canvas (:host-id sk)))
|
||||
((:fn sk))))
|
||||
(reset! sketch-init-list []))
|
||||
|
||||
(defn add-sketch-to-init-list [sk]
|
||||
(swap! sketch-init-list conj sk)
|
||||
; if page already loaded immediately init sketch we just added
|
||||
(when (= (.-readyState js/document) "complete")
|
||||
(init-sketches)))
|
||||
|
||||
(events/listenOnce js/window EventType/LOAD init-sketches)
|
||||
483
resources/public/js/optimized/quil/sketch.js
Normal file
483
resources/public/js/optimized/quil/sketch.js
Normal file
@@ -0,0 +1,483 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.sketch');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
goog.require('quil.util');
|
||||
goog.require('quil.middlewares.deprecated_options');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.style');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.events.EventType');
|
||||
quil.sketch._STAR_applet_STAR_ = null;
|
||||
quil.sketch.current_applet = (function quil$sketch$current_applet(){
|
||||
return quil.sketch._STAR_applet_STAR_;
|
||||
});
|
||||
quil.sketch.rendering_modes = new cljs.core.PersistentArrayMap(null, 4, [cljs.core.cst$kw$java2d,(p5.prototype["JAVA2D"]),cljs.core.cst$kw$p2d,(p5.prototype["P2D"]),cljs.core.cst$kw$p3d,(p5.prototype["P3D"]),cljs.core.cst$kw$opengl,(p5.prototype["OPENGL"])], null);
|
||||
quil.sketch.resolve_renderer = (function quil$sketch$resolve_renderer(mode){
|
||||
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$p3d,mode)){
|
||||
return (p5.prototype["WEBGL"]);
|
||||
} else {
|
||||
return quil.util.resolve_constant_key(mode,quil.sketch.rendering_modes);
|
||||
}
|
||||
});
|
||||
quil.sketch.set_size = (function quil$sketch$set_size(applet,width,height){
|
||||
var temp__5735__auto__ = applet.quil_canvas;
|
||||
if(cljs.core.truth_(temp__5735__auto__)){
|
||||
var el = temp__5735__auto__;
|
||||
var inner_canvas = el.querySelector("canvas");
|
||||
applet.resizeCanvas(width,height);
|
||||
|
||||
inner_canvas.setAttribute("width",width);
|
||||
|
||||
inner_canvas.setAttribute("height",height);
|
||||
|
||||
(inner_canvas.style["width"] = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(width),"px"].join(''));
|
||||
|
||||
(inner_canvas.style["height"] = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(height),"px"].join(''));
|
||||
|
||||
applet.width = window.parseInt(goog.style.getComputedStyle(inner_canvas,"width"));
|
||||
|
||||
return applet.height = window.parseInt(goog.style.getComputedStyle(inner_canvas,"height"));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
quil.sketch.size = (function quil$sketch$size(var_args){
|
||||
var G__5592 = arguments.length;
|
||||
switch (G__5592) {
|
||||
case 2:
|
||||
return quil.sketch.size.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
case 3:
|
||||
return quil.sketch.size.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
quil.sketch.size.cljs$core$IFn$_invoke$arity$2 = (function (width,height){
|
||||
return quil.sketch.current_applet().createCanvas((width | (0)),(height | (0)));
|
||||
});
|
||||
|
||||
quil.sketch.size.cljs$core$IFn$_invoke$arity$3 = (function (width,height,mode){
|
||||
return quil.sketch.current_applet().createCanvas((width | (0)),(height | (0)),quil.sketch.resolve_renderer(mode));
|
||||
});
|
||||
|
||||
quil.sketch.size.cljs$lang$maxFixedArity = 3;
|
||||
|
||||
quil.sketch.bind_handlers = (function quil$sketch$bind_handlers(prc,opts){
|
||||
var seq__5594 = cljs.core.seq(cljs.core.PersistentHashMap.fromArrays([cljs.core.cst$kw$keyPressed,cljs.core.cst$kw$mouseOut,cljs.core.cst$kw$mouseDragged,cljs.core.cst$kw$setup,cljs.core.cst$kw$mouseWheel,cljs.core.cst$kw$keyReleased,cljs.core.cst$kw$mouseClicked,cljs.core.cst$kw$mouseReleased,cljs.core.cst$kw$mousePressed,cljs.core.cst$kw$mouseMoved,cljs.core.cst$kw$mouseOver,cljs.core.cst$kw$keyTyped,cljs.core.cst$kw$draw],[cljs.core.cst$kw$key_DASH_pressed,cljs.core.cst$kw$mouse_DASH_exited,cljs.core.cst$kw$mouse_DASH_dragged,cljs.core.cst$kw$setup,cljs.core.cst$kw$mouse_DASH_wheel,cljs.core.cst$kw$key_DASH_released,cljs.core.cst$kw$mouse_DASH_clicked,cljs.core.cst$kw$mouse_DASH_released,cljs.core.cst$kw$mouse_DASH_pressed,cljs.core.cst$kw$mouse_DASH_moved,cljs.core.cst$kw$mouse_DASH_entered,cljs.core.cst$kw$key_DASH_typed,cljs.core.cst$kw$draw]));
|
||||
var chunk__5595 = null;
|
||||
var count__5596 = (0);
|
||||
var i__5597 = (0);
|
||||
while(true){
|
||||
if((i__5597 < count__5596)){
|
||||
var vec__5608 = chunk__5595.cljs$core$IIndexed$_nth$arity$2(null,i__5597);
|
||||
var processing_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5608,(0),null);
|
||||
var quil_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5608,(1),null);
|
||||
var temp__5735__auto___5618 = (opts.cljs$core$IFn$_invoke$arity$1 ? opts.cljs$core$IFn$_invoke$arity$1(quil_name) : opts.call(null,quil_name));
|
||||
if(cljs.core.truth_(temp__5735__auto___5618)){
|
||||
var handler_5619 = temp__5735__auto___5618;
|
||||
(prc[cljs.core.name(processing_name)] = ((function (seq__5594,chunk__5595,count__5596,i__5597,handler_5619,temp__5735__auto___5618,vec__5608,processing_name,quil_name){
|
||||
return (function() {
|
||||
var G__5620__delegate = function (args){
|
||||
var _STAR_applet_STAR__orig_val__5611 = quil.sketch._STAR_applet_STAR_;
|
||||
var _STAR_applet_STAR__temp_val__5612 = prc;
|
||||
quil.sketch._STAR_applet_STAR_ = _STAR_applet_STAR__temp_val__5612;
|
||||
|
||||
try{return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(handler_5619,args);
|
||||
}finally {quil.sketch._STAR_applet_STAR_ = _STAR_applet_STAR__orig_val__5611;
|
||||
}};
|
||||
var G__5620 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__5621__i = 0, G__5621__a = new Array(arguments.length - 0);
|
||||
while (G__5621__i < G__5621__a.length) {G__5621__a[G__5621__i] = arguments[G__5621__i + 0]; ++G__5621__i;}
|
||||
args = new cljs.core.IndexedSeq(G__5621__a,0,null);
|
||||
}
|
||||
return G__5620__delegate.call(this,args);};
|
||||
G__5620.cljs$lang$maxFixedArity = 0;
|
||||
G__5620.cljs$lang$applyTo = (function (arglist__5622){
|
||||
var args = cljs.core.seq(arglist__5622);
|
||||
return G__5620__delegate(args);
|
||||
});
|
||||
G__5620.cljs$core$IFn$_invoke$arity$variadic = G__5620__delegate;
|
||||
return G__5620;
|
||||
})()
|
||||
;})(seq__5594,chunk__5595,count__5596,i__5597,handler_5619,temp__5735__auto___5618,vec__5608,processing_name,quil_name))
|
||||
);
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
var G__5623 = seq__5594;
|
||||
var G__5624 = chunk__5595;
|
||||
var G__5625 = count__5596;
|
||||
var G__5626 = (i__5597 + (1));
|
||||
seq__5594 = G__5623;
|
||||
chunk__5595 = G__5624;
|
||||
count__5596 = G__5625;
|
||||
i__5597 = G__5626;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5735__auto__ = cljs.core.seq(seq__5594);
|
||||
if(temp__5735__auto__){
|
||||
var seq__5594__$1 = temp__5735__auto__;
|
||||
if(cljs.core.chunked_seq_QMARK_(seq__5594__$1)){
|
||||
var c__4550__auto__ = cljs.core.chunk_first(seq__5594__$1);
|
||||
var G__5627 = cljs.core.chunk_rest(seq__5594__$1);
|
||||
var G__5628 = c__4550__auto__;
|
||||
var G__5629 = cljs.core.count(c__4550__auto__);
|
||||
var G__5630 = (0);
|
||||
seq__5594 = G__5627;
|
||||
chunk__5595 = G__5628;
|
||||
count__5596 = G__5629;
|
||||
i__5597 = G__5630;
|
||||
continue;
|
||||
} else {
|
||||
var vec__5613 = cljs.core.first(seq__5594__$1);
|
||||
var processing_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5613,(0),null);
|
||||
var quil_name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5613,(1),null);
|
||||
var temp__5735__auto___5631__$1 = (opts.cljs$core$IFn$_invoke$arity$1 ? opts.cljs$core$IFn$_invoke$arity$1(quil_name) : opts.call(null,quil_name));
|
||||
if(cljs.core.truth_(temp__5735__auto___5631__$1)){
|
||||
var handler_5632 = temp__5735__auto___5631__$1;
|
||||
(prc[cljs.core.name(processing_name)] = ((function (seq__5594,chunk__5595,count__5596,i__5597,handler_5632,temp__5735__auto___5631__$1,vec__5613,processing_name,quil_name,seq__5594__$1,temp__5735__auto__){
|
||||
return (function() {
|
||||
var G__5633__delegate = function (args){
|
||||
var _STAR_applet_STAR__orig_val__5616 = quil.sketch._STAR_applet_STAR_;
|
||||
var _STAR_applet_STAR__temp_val__5617 = prc;
|
||||
quil.sketch._STAR_applet_STAR_ = _STAR_applet_STAR__temp_val__5617;
|
||||
|
||||
try{return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(handler_5632,args);
|
||||
}finally {quil.sketch._STAR_applet_STAR_ = _STAR_applet_STAR__orig_val__5616;
|
||||
}};
|
||||
var G__5633 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__5634__i = 0, G__5634__a = new Array(arguments.length - 0);
|
||||
while (G__5634__i < G__5634__a.length) {G__5634__a[G__5634__i] = arguments[G__5634__i + 0]; ++G__5634__i;}
|
||||
args = new cljs.core.IndexedSeq(G__5634__a,0,null);
|
||||
}
|
||||
return G__5633__delegate.call(this,args);};
|
||||
G__5633.cljs$lang$maxFixedArity = 0;
|
||||
G__5633.cljs$lang$applyTo = (function (arglist__5635){
|
||||
var args = cljs.core.seq(arglist__5635);
|
||||
return G__5633__delegate(args);
|
||||
});
|
||||
G__5633.cljs$core$IFn$_invoke$arity$variadic = G__5633__delegate;
|
||||
return G__5633;
|
||||
})()
|
||||
;})(seq__5594,chunk__5595,count__5596,i__5597,handler_5632,temp__5735__auto___5631__$1,vec__5613,processing_name,quil_name,seq__5594__$1,temp__5735__auto__))
|
||||
);
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
var G__5636 = cljs.core.next(seq__5594__$1);
|
||||
var G__5637 = null;
|
||||
var G__5638 = (0);
|
||||
var G__5639 = (0);
|
||||
seq__5594 = G__5636;
|
||||
chunk__5595 = G__5637;
|
||||
count__5596 = G__5638;
|
||||
i__5597 = G__5639;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
quil.sketch.in_fullscreen_QMARK_ = (function quil$sketch$in_fullscreen_QMARK_(){
|
||||
var or__4131__auto__ = document.fullscreenElement;
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return document.mozFullScreenElement;
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Adds fullscreen support for the provided `p5` object.
|
||||
* Fullscreen is enabled when the user presses `F11`. We turn
|
||||
* the sketch `<canvas>` element to fullscreen storing the old size
|
||||
* in an `atom`. When the user cancels fullscreen (`F11` or `Esc`)
|
||||
* we resize the sketch back to the old size.
|
||||
*/
|
||||
quil.sketch.add_fullscreen_support = (function quil$sketch$add_fullscreen_support(applet){
|
||||
var old_size = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(null);
|
||||
var adjust_canvas_size = ((function (old_size){
|
||||
return (function (){
|
||||
if(cljs.core.truth_(quil.sketch.in_fullscreen_QMARK_())){
|
||||
cljs.core.reset_BANG_(old_size,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [applet.width,applet.height], null));
|
||||
|
||||
return quil.sketch.set_size(applet,window.screen.width,window.screen.height);
|
||||
} else {
|
||||
return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(quil.sketch.set_size,applet,cljs.core.deref(old_size));
|
||||
}
|
||||
});})(old_size))
|
||||
;
|
||||
var G__5641_5647 = window;
|
||||
var G__5642_5648 = goog.events.EventType.KEYDOWN;
|
||||
var G__5643_5649 = ((function (G__5641_5647,G__5642_5648,old_size,adjust_canvas_size){
|
||||
return (function (event){
|
||||
if(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(event.key,"F11")) && (cljs.core.not(quil.sketch.in_fullscreen_QMARK_())))){
|
||||
event.preventDefault();
|
||||
|
||||
var canvas = applet.quil_canvas;
|
||||
if(cljs.core.truth_(canvas.requestFullscreen)){
|
||||
return canvas.requestFullscreen();
|
||||
} else {
|
||||
if(cljs.core.truth_(canvas.mozRequestFullScreen)){
|
||||
return canvas.mozRequestFullScreen();
|
||||
} else {
|
||||
return console.warn("Fullscreen mode is not supported in current browser.");
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});})(G__5641_5647,G__5642_5648,old_size,adjust_canvas_size))
|
||||
;
|
||||
goog.events.listen(G__5641_5647,G__5642_5648,G__5643_5649);
|
||||
|
||||
goog.events.listen(document,"fullscreenchange",adjust_canvas_size);
|
||||
|
||||
goog.events.listen(document,"mozfullscreenchange",adjust_canvas_size);
|
||||
|
||||
var G__5644 = document;
|
||||
var G__5645 = "fullscreenerror";
|
||||
var G__5646 = ((function (G__5644,G__5645,old_size,adjust_canvas_size){
|
||||
return (function (p1__5640_SHARP_){
|
||||
return console.error("Error while switching to/from fullscreen: ",p1__5640_SHARP_);
|
||||
});})(G__5644,G__5645,old_size,adjust_canvas_size))
|
||||
;
|
||||
return goog.events.listen(G__5644,G__5645,G__5646);
|
||||
});
|
||||
quil.sketch.make_sketch = (function quil$sketch$make_sketch(options){
|
||||
var opts = cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$size,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(500),(300)], null)], null),(function (){var G__5652 = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.comp,cljs.core.cons(quil.middlewares.deprecated_options.deprecated_options,cljs.core.cst$kw$middleware.cljs$core$IFn$_invoke$arity$2(options,cljs.core.PersistentVector.EMPTY)));
|
||||
var fexpr__5651 = ((function (G__5652){
|
||||
return (function (p1__5650_SHARP_){
|
||||
return (p1__5650_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__5650_SHARP_.cljs$core$IFn$_invoke$arity$1(options) : p1__5650_SHARP_.call(null,options));
|
||||
});})(G__5652))
|
||||
;
|
||||
return fexpr__5651(G__5652);
|
||||
})()], 0));
|
||||
var sketch_size = cljs.core.cst$kw$size.cljs$core$IFn$_invoke$arity$1(opts);
|
||||
var renderer = cljs.core.cst$kw$renderer.cljs$core$IFn$_invoke$arity$1(opts);
|
||||
var features = cljs.core.set(cljs.core.cst$kw$features.cljs$core$IFn$_invoke$arity$1(opts));
|
||||
var setup = ((function (opts,sketch_size,renderer,features){
|
||||
return (function (){
|
||||
cljs.core.apply.cljs$core$IFn$_invoke$arity$2(quil.sketch.size,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(sketch_size,(cljs.core.truth_(renderer)?new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [renderer], null):cljs.core.PersistentVector.EMPTY)));
|
||||
|
||||
if(cljs.core.truth_(cljs.core.cst$kw$settings.cljs$core$IFn$_invoke$arity$1(opts))){
|
||||
var fexpr__5653_5656 = cljs.core.cst$kw$settings.cljs$core$IFn$_invoke$arity$1(opts);
|
||||
(fexpr__5653_5656.cljs$core$IFn$_invoke$arity$0 ? fexpr__5653_5656.cljs$core$IFn$_invoke$arity$0() : fexpr__5653_5656.call(null));
|
||||
} else {
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(cljs.core.cst$kw$setup.cljs$core$IFn$_invoke$arity$1(opts))){
|
||||
var fexpr__5654 = cljs.core.cst$kw$setup.cljs$core$IFn$_invoke$arity$1(opts);
|
||||
return (fexpr__5654.cljs$core$IFn$_invoke$arity$0 ? fexpr__5654.cljs$core$IFn$_invoke$arity$0() : fexpr__5654.call(null));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});})(opts,sketch_size,renderer,features))
|
||||
;
|
||||
var mouse_wheel = (function (){var temp__5735__auto__ = cljs.core.cst$kw$mouse_DASH_wheel.cljs$core$IFn$_invoke$arity$1(opts);
|
||||
if(cljs.core.truth_(temp__5735__auto__)){
|
||||
var wheel_handler = temp__5735__auto__;
|
||||
return ((function (wheel_handler,temp__5735__auto__,opts,sketch_size,renderer,features,setup){
|
||||
return (function (evt){
|
||||
var G__5655 = goog.object.get(evt,"delta");
|
||||
return (wheel_handler.cljs$core$IFn$_invoke$arity$1 ? wheel_handler.cljs$core$IFn$_invoke$arity$1(G__5655) : wheel_handler.call(null,G__5655));
|
||||
});
|
||||
;})(wheel_handler,temp__5735__auto__,opts,sketch_size,renderer,features,setup))
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
var opts__$1 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(opts,cljs.core.cst$kw$setup,setup,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.cst$kw$mouse_DASH_wheel,mouse_wheel], 0));
|
||||
var sketch = ((function (opts,sketch_size,renderer,features,setup,mouse_wheel,opts__$1){
|
||||
return (function (prc){
|
||||
quil.sketch.bind_handlers(prc,opts__$1);
|
||||
|
||||
prc.quil = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(null);
|
||||
|
||||
return prc.quil_internal_state = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(quil.util.initial_internal_state);
|
||||
});})(opts,sketch_size,renderer,features,setup,mouse_wheel,opts__$1))
|
||||
;
|
||||
return sketch;
|
||||
});
|
||||
quil.sketch.destroy_previous_sketch = (function quil$sketch$destroy_previous_sketch(host_elem){
|
||||
var temp__5735__auto__ = host_elem.processing_obj;
|
||||
if(cljs.core.truth_(temp__5735__auto__)){
|
||||
var proc_obj = temp__5735__auto__;
|
||||
return proc_obj.remove();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
quil.sketch.sketch = (function quil$sketch$sketch(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___5658 = arguments.length;
|
||||
var i__4731__auto___5659 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___5659 < len__4730__auto___5658)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___5659]));
|
||||
|
||||
var G__5660 = (i__4731__auto___5659 + (1));
|
||||
i__4731__auto___5659 = G__5660;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return quil.sketch.sketch.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__auto__);
|
||||
});
|
||||
|
||||
quil.sketch.sketch.cljs$core$IFn$_invoke$arity$variadic = (function (opts){
|
||||
var opts_map = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,opts);
|
||||
var host_elem = cljs.core.cst$kw$host.cljs$core$IFn$_invoke$arity$1(opts_map);
|
||||
var renderer = (function (){var or__4131__auto__ = cljs.core.cst$kw$renderer.cljs$core$IFn$_invoke$arity$1(opts_map);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return cljs.core.cst$kw$p2d;
|
||||
}
|
||||
})();
|
||||
var host_elem__$1 = ((typeof host_elem === 'string')?document.getElementById(host_elem):host_elem);
|
||||
if(cljs.core.truth_(host_elem__$1)){
|
||||
if(cljs.core.truth_(host_elem__$1.processing_context)){
|
||||
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(renderer,host_elem__$1.processing_context)){
|
||||
} else {
|
||||
console.warn("WARNING: Using different context on one canvas!");
|
||||
}
|
||||
} else {
|
||||
host_elem__$1.processing_context = renderer;
|
||||
}
|
||||
|
||||
quil.sketch.destroy_previous_sketch(host_elem__$1);
|
||||
|
||||
var proc_obj = (new p5(quil.sketch.make_sketch(opts_map),host_elem__$1));
|
||||
host_elem__$1.processing_obj = proc_obj;
|
||||
|
||||
proc_obj.quil_canvas = host_elem__$1;
|
||||
|
||||
quil.sketch.add_fullscreen_support(proc_obj);
|
||||
|
||||
return proc_obj;
|
||||
} else {
|
||||
return console.error((cljs.core.truth_(cljs.core.cst$kw$host.cljs$core$IFn$_invoke$arity$1(opts_map))?["ERROR: Cannot find host element: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.cst$kw$host.cljs$core$IFn$_invoke$arity$1(opts_map))].join(''):"ERROR: Cannot create sketch. :host is not specified or element not found."));
|
||||
}
|
||||
});
|
||||
|
||||
quil.sketch.sketch.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
/** @this {Function} */
|
||||
quil.sketch.sketch.cljs$lang$applyTo = (function (seq5657){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq5657));
|
||||
});
|
||||
|
||||
quil.sketch.sketch_init_list = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.List.EMPTY);
|
||||
quil.sketch.empty_body_QMARK_ = (function quil$sketch$empty_body_QMARK_(){
|
||||
var child = document.body.childNodes;
|
||||
return (child.length <= (1));
|
||||
});
|
||||
quil.sketch.add_canvas = (function quil$sketch$add_canvas(canvas_id){
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.setAttribute("id",canvas_id);
|
||||
|
||||
return document.body.appendChild(canvas);
|
||||
});
|
||||
quil.sketch.init_sketches = (function quil$sketch$init_sketches(){
|
||||
var add_elem_QMARK__5669 = quil.sketch.empty_body_QMARK_();
|
||||
var seq__5661_5670 = cljs.core.seq(cljs.core.deref(quil.sketch.sketch_init_list));
|
||||
var chunk__5662_5671 = null;
|
||||
var count__5663_5672 = (0);
|
||||
var i__5664_5673 = (0);
|
||||
while(true){
|
||||
if((i__5664_5673 < count__5663_5672)){
|
||||
var sk_5674 = chunk__5662_5671.cljs$core$IIndexed$_nth$arity$2(null,i__5664_5673);
|
||||
if(add_elem_QMARK__5669){
|
||||
quil.sketch.add_canvas(cljs.core.cst$kw$host_DASH_id.cljs$core$IFn$_invoke$arity$1(sk_5674));
|
||||
} else {
|
||||
}
|
||||
|
||||
var fexpr__5667_5675 = cljs.core.cst$kw$fn.cljs$core$IFn$_invoke$arity$1(sk_5674);
|
||||
(fexpr__5667_5675.cljs$core$IFn$_invoke$arity$0 ? fexpr__5667_5675.cljs$core$IFn$_invoke$arity$0() : fexpr__5667_5675.call(null));
|
||||
|
||||
|
||||
var G__5676 = seq__5661_5670;
|
||||
var G__5677 = chunk__5662_5671;
|
||||
var G__5678 = count__5663_5672;
|
||||
var G__5679 = (i__5664_5673 + (1));
|
||||
seq__5661_5670 = G__5676;
|
||||
chunk__5662_5671 = G__5677;
|
||||
count__5663_5672 = G__5678;
|
||||
i__5664_5673 = G__5679;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5735__auto___5680 = cljs.core.seq(seq__5661_5670);
|
||||
if(temp__5735__auto___5680){
|
||||
var seq__5661_5681__$1 = temp__5735__auto___5680;
|
||||
if(cljs.core.chunked_seq_QMARK_(seq__5661_5681__$1)){
|
||||
var c__4550__auto___5682 = cljs.core.chunk_first(seq__5661_5681__$1);
|
||||
var G__5683 = cljs.core.chunk_rest(seq__5661_5681__$1);
|
||||
var G__5684 = c__4550__auto___5682;
|
||||
var G__5685 = cljs.core.count(c__4550__auto___5682);
|
||||
var G__5686 = (0);
|
||||
seq__5661_5670 = G__5683;
|
||||
chunk__5662_5671 = G__5684;
|
||||
count__5663_5672 = G__5685;
|
||||
i__5664_5673 = G__5686;
|
||||
continue;
|
||||
} else {
|
||||
var sk_5687 = cljs.core.first(seq__5661_5681__$1);
|
||||
if(add_elem_QMARK__5669){
|
||||
quil.sketch.add_canvas(cljs.core.cst$kw$host_DASH_id.cljs$core$IFn$_invoke$arity$1(sk_5687));
|
||||
} else {
|
||||
}
|
||||
|
||||
var fexpr__5668_5688 = cljs.core.cst$kw$fn.cljs$core$IFn$_invoke$arity$1(sk_5687);
|
||||
(fexpr__5668_5688.cljs$core$IFn$_invoke$arity$0 ? fexpr__5668_5688.cljs$core$IFn$_invoke$arity$0() : fexpr__5668_5688.call(null));
|
||||
|
||||
|
||||
var G__5689 = cljs.core.next(seq__5661_5681__$1);
|
||||
var G__5690 = null;
|
||||
var G__5691 = (0);
|
||||
var G__5692 = (0);
|
||||
seq__5661_5670 = G__5689;
|
||||
chunk__5662_5671 = G__5690;
|
||||
count__5663_5672 = G__5691;
|
||||
i__5664_5673 = G__5692;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return cljs.core.reset_BANG_(quil.sketch.sketch_init_list,cljs.core.PersistentVector.EMPTY);
|
||||
});
|
||||
quil.sketch.add_sketch_to_init_list = (function quil$sketch$add_sketch_to_init_list(sk){
|
||||
cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(quil.sketch.sketch_init_list,cljs.core.conj,sk);
|
||||
|
||||
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(document.readyState,"complete")){
|
||||
return quil.sketch.init_sketches();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
goog.events.listenOnce(window,goog.events.EventType.LOAD,quil.sketch.init_sketches);
|
||||
131
resources/public/js/optimized/quil/util.cljc
Normal file
131
resources/public/js/optimized/quil/util.cljc
Normal file
@@ -0,0 +1,131 @@
|
||||
(ns ^{:doc "Utility fns"}
|
||||
quil.util
|
||||
(:require [clojure.string :as cstr]))
|
||||
|
||||
(defn no-fn
|
||||
"Function that does nothing."
|
||||
[])
|
||||
|
||||
(def initial-internal-state
|
||||
"Internal state map used to initiate all sketches."
|
||||
{:frame-rate 60
|
||||
:looping? true})
|
||||
|
||||
#?(:clj
|
||||
(defn callable? [value]
|
||||
(or (fn? value)
|
||||
(var? value))))
|
||||
|
||||
#?(:clj
|
||||
(defn absolute-path [path]
|
||||
(-> (str path)
|
||||
(java.io.File.)
|
||||
(.getAbsolutePath))))
|
||||
|
||||
#?(:clj
|
||||
(defn int-like?
|
||||
[val]
|
||||
(let [t (type val)]
|
||||
(or (= java.lang.Long t)
|
||||
(= java.lang.Integer t)))))
|
||||
|
||||
(defn resolve-constant-key
|
||||
"Returns the val associated with `key` in `mappings` or `key` directly if it
|
||||
is one of the vals in `mappings`. Otherwise throws an exception."
|
||||
[key mappings]
|
||||
(cond
|
||||
(get mappings key) (get mappings key)
|
||||
(some #{key} (vals mappings)) key
|
||||
|
||||
:else (throw (#?(:clj Exception.
|
||||
:cljs js/Error.)
|
||||
(str "Expecting a keyword, got: " key ". Expected one of: " (vec (sort (keys mappings))))))))
|
||||
|
||||
(defn- length-of-longest-key
|
||||
"Returns the length of the longest key of map `m`. Assumes `m`'s keys are strings
|
||||
and returns 0 if map is empty:
|
||||
|
||||
Examples:
|
||||
```
|
||||
(length-of-longest-key {\"foo\" 1 \"barr\" 2 \"bazzz\" 3}) ;=> 5
|
||||
(length-of-longest-key {}) ;=> 0
|
||||
```"
|
||||
[m]
|
||||
(or (last (sort (map #(.length %) (keys m))))
|
||||
0))
|
||||
|
||||
(defn- gen-padding
|
||||
"Generates a padding string with `s` concatenated with `len` times `pad`.
|
||||
May be called without starting string `s` in which case it defaults to the
|
||||
empty string and also without `pad` in which case it defaults to a single
|
||||
space.
|
||||
|
||||
Examples:
|
||||
```
|
||||
(gen-padding \"asdf\" 5 \"b\") ;=> \"asdfbbbbb\"
|
||||
(gen-padding 3 \"b\") ;=> \"bbb\"
|
||||
(gen-padding 3) ;=> \" \"
|
||||
```
|
||||
"
|
||||
([len] (gen-padding "" len " "))
|
||||
([len pad] (gen-padding "" len pad))
|
||||
([s len pad]
|
||||
(if (> len 0)
|
||||
(gen-padding (str s pad) (dec len) pad)
|
||||
s)))
|
||||
|
||||
(defn print-definition-list
|
||||
[definitions]
|
||||
(let [longest-key (length-of-longest-key definitions)]
|
||||
(dorun
|
||||
(map (fn [[k v]]
|
||||
(let [len (.length k)
|
||||
diff (- longest-key len)
|
||||
pad (gen-padding diff)]
|
||||
(println k pad "- " v)))
|
||||
definitions))))
|
||||
|
||||
(defn clj-compilation? []
|
||||
#?(:clj
|
||||
(not
|
||||
(boolean
|
||||
(when-let [n (find-ns 'cljs.analyzer)]
|
||||
(when-let [v (ns-resolve n '*cljs-file*)]
|
||||
@v))))
|
||||
:cljs false))
|
||||
|
||||
(defn prepare-quil-name [const-keyword]
|
||||
(cstr/replace
|
||||
(cstr/upper-case (name const-keyword))
|
||||
#"-" "_"))
|
||||
|
||||
(defn prepare-quil-clj-constants [constants]
|
||||
(into {}
|
||||
(map
|
||||
#(vector % (symbol (str "PConstants/" (prepare-quil-name %))))
|
||||
constants)))
|
||||
|
||||
(defn prepare-quil-cljs-constants [constants]
|
||||
(into {}
|
||||
(map
|
||||
#(vector % `(aget js/p5.prototype ~(prepare-quil-name %)))
|
||||
constants)))
|
||||
|
||||
(defn make-quil-constant-map [target const-map-name const-map]
|
||||
`(def ^{:private true}
|
||||
~const-map-name
|
||||
~(if (= target :clj)
|
||||
(prepare-quil-clj-constants const-map)
|
||||
(prepare-quil-cljs-constants const-map))))
|
||||
|
||||
(defmacro generate-quil-constants [target & opts]
|
||||
`(do
|
||||
~@(map
|
||||
#(make-quil-constant-map target (first %) (second %))
|
||||
(partition 2 opts))))
|
||||
|
||||
(defn clj-unchecked-int
|
||||
"In clojure it does `unchecked-int` and does nothing in cljs.
|
||||
Needed to handle colors in hex form in clojure."
|
||||
[v]
|
||||
#?(:clj (unchecked-int v) :cljs v))
|
||||
190
resources/public/js/optimized/quil/util.js
Normal file
190
resources/public/js/optimized/quil/util.js
Normal file
@@ -0,0 +1,190 @@
|
||||
// Compiled by ClojureScript 1.10.520 {:static-fns true, :optimize-constants true}
|
||||
goog.provide('quil.util');
|
||||
goog.require('cljs.core');
|
||||
goog.require('cljs.core.constants');
|
||||
goog.require('clojure.string');
|
||||
/**
|
||||
* Function that does nothing.
|
||||
*/
|
||||
quil.util.no_fn = (function quil$util$no_fn(){
|
||||
return null;
|
||||
});
|
||||
/**
|
||||
* Internal state map used to initiate all sketches.
|
||||
*/
|
||||
quil.util.initial_internal_state = new cljs.core.PersistentArrayMap(null, 2, [cljs.core.cst$kw$frame_DASH_rate,(60),cljs.core.cst$kw$looping_QMARK_,true], null);
|
||||
/**
|
||||
* Returns the val associated with `key` in `mappings` or `key` directly if it
|
||||
* is one of the vals in `mappings`. Otherwise throws an exception.
|
||||
*/
|
||||
quil.util.resolve_constant_key = (function quil$util$resolve_constant_key(key,mappings){
|
||||
if(cljs.core.truth_(cljs.core.get.cljs$core$IFn$_invoke$arity$2(mappings,key))){
|
||||
return cljs.core.get.cljs$core$IFn$_invoke$arity$2(mappings,key);
|
||||
} else {
|
||||
if(cljs.core.truth_(cljs.core.some(cljs.core.PersistentHashSet.createAsIfByAssoc([key]),cljs.core.vals(mappings)))){
|
||||
return key;
|
||||
} else {
|
||||
throw (new Error(["Expecting a keyword, got: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(key),". Expected one of: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.vec(cljs.core.sort.cljs$core$IFn$_invoke$arity$1(cljs.core.keys(mappings))))].join('')));
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Returns the length of the longest key of map `m`. Assumes `m`'s keys are strings
|
||||
* and returns 0 if map is empty:
|
||||
*
|
||||
* Examples:
|
||||
* ```
|
||||
* (length-of-longest-key {"foo" 1 "barr" 2 "bazzz" 3}) ;=> 5
|
||||
* (length-of-longest-key {}) ;=> 0
|
||||
* ```
|
||||
*/
|
||||
quil.util.length_of_longest_key = (function quil$util$length_of_longest_key(m){
|
||||
var or__4131__auto__ = cljs.core.last(cljs.core.sort.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__5570_SHARP_){
|
||||
return p1__5570_SHARP_.length();
|
||||
}),cljs.core.keys(m))));
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return (0);
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Generates a padding string with `s` concatenated with `len` times `pad`.
|
||||
* May be called without starting string `s` in which case it defaults to the
|
||||
* empty string and also without `pad` in which case it defaults to a single
|
||||
* space.
|
||||
*
|
||||
* Examples:
|
||||
* ```
|
||||
* (gen-padding "asdf" 5 "b") ;=> "asdfbbbbb"
|
||||
* (gen-padding 3 "b") ;=> "bbb"
|
||||
* (gen-padding 3) ;=> " "
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
quil.util.gen_padding = (function quil$util$gen_padding(var_args){
|
||||
var G__5572 = arguments.length;
|
||||
switch (G__5572) {
|
||||
case 1:
|
||||
return quil.util.gen_padding.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
case 2:
|
||||
return quil.util.gen_padding.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
case 3:
|
||||
return quil.util.gen_padding.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
quil.util.gen_padding.cljs$core$IFn$_invoke$arity$1 = (function (len){
|
||||
return quil.util.gen_padding.cljs$core$IFn$_invoke$arity$3("",len," ");
|
||||
});
|
||||
|
||||
quil.util.gen_padding.cljs$core$IFn$_invoke$arity$2 = (function (len,pad){
|
||||
return quil.util.gen_padding.cljs$core$IFn$_invoke$arity$3("",len,pad);
|
||||
});
|
||||
|
||||
quil.util.gen_padding.cljs$core$IFn$_invoke$arity$3 = (function (s,len,pad){
|
||||
if((len > (0))){
|
||||
return quil.util.gen_padding.cljs$core$IFn$_invoke$arity$3([cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),cljs.core.str.cljs$core$IFn$_invoke$arity$1(pad)].join(''),(len - (1)),pad);
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
});
|
||||
|
||||
quil.util.gen_padding.cljs$lang$maxFixedArity = 3;
|
||||
|
||||
quil.util.print_definition_list = (function quil$util$print_definition_list(definitions){
|
||||
var longest_key = quil.util.length_of_longest_key(definitions);
|
||||
return cljs.core.dorun.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (longest_key){
|
||||
return (function (p__5574){
|
||||
var vec__5575 = p__5574;
|
||||
var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5575,(0),null);
|
||||
var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__5575,(1),null);
|
||||
var len = k.length();
|
||||
var diff = (longest_key - len);
|
||||
var pad = quil.util.gen_padding.cljs$core$IFn$_invoke$arity$1(diff);
|
||||
return cljs.core.println.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([k,pad,"- ",v], 0));
|
||||
});})(longest_key))
|
||||
,definitions));
|
||||
});
|
||||
quil.util.clj_compilation_QMARK_ = (function quil$util$clj_compilation_QMARK_(){
|
||||
return false;
|
||||
});
|
||||
quil.util.prepare_quil_name = (function quil$util$prepare_quil_name(const_keyword){
|
||||
return clojure.string.replace(clojure.string.upper_case(cljs.core.name(const_keyword)),/-/,"_");
|
||||
});
|
||||
quil.util.prepare_quil_clj_constants = (function quil$util$prepare_quil_clj_constants(constants){
|
||||
return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__5578_SHARP_){
|
||||
return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[p1__5578_SHARP_,cljs.core.symbol.cljs$core$IFn$_invoke$arity$1(["PConstants/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(quil.util.prepare_quil_name(p1__5578_SHARP_))].join(''))],null));
|
||||
}),constants));
|
||||
});
|
||||
quil.util.prepare_quil_cljs_constants = (function quil$util$prepare_quil_cljs_constants(constants){
|
||||
return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__5579_SHARP_){
|
||||
return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[p1__5579_SHARP_,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,cljs.core.cst$sym$cljs$core_SLASH_aget,null,(1),null)),(new cljs.core.List(null,cljs.core.cst$sym$js_SLASH_p5$prototype,null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,quil.util.prepare_quil_name(p1__5579_SHARP_),null,(1),null))], 0))))],null));
|
||||
}),constants));
|
||||
});
|
||||
quil.util.make_quil_constant_map = (function quil$util$make_quil_constant_map(target,const_map_name,const_map){
|
||||
return cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,cljs.core.cst$sym$def,null,(1),null)),(new cljs.core.List(null,const_map_name,null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(target,cljs.core.cst$kw$clj))?quil.util.prepare_quil_clj_constants(const_map):quil.util.prepare_quil_cljs_constants(const_map)),null,(1),null))], 0))));
|
||||
});
|
||||
var ret__4776__auto___5585 = (function (){
|
||||
quil.util.generate_quil_constants = (function quil$util$generate_quil_constants(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___5586 = arguments.length;
|
||||
var i__4731__auto___5587 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___5587 < len__4730__auto___5586)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___5587]));
|
||||
|
||||
var G__5588 = (i__4731__auto___5587 + (1));
|
||||
i__4731__auto___5587 = G__5588;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((3) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((3)),(0),null)):null);
|
||||
return quil.util.generate_quil_constants.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__4737__auto__);
|
||||
});
|
||||
|
||||
quil.util.generate_quil_constants.cljs$core$IFn$_invoke$arity$variadic = (function (_AMPERSAND_form,_AMPERSAND_env,target,opts){
|
||||
return cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2((new cljs.core.List(null,cljs.core.cst$sym$do,null,(1),null)),cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__5580_SHARP_){
|
||||
return quil.util.make_quil_constant_map(target,cljs.core.first(p1__5580_SHARP_),cljs.core.second(p1__5580_SHARP_));
|
||||
}),cljs.core.partition.cljs$core$IFn$_invoke$arity$2((2),opts)))));
|
||||
});
|
||||
|
||||
quil.util.generate_quil_constants.cljs$lang$maxFixedArity = (3);
|
||||
|
||||
/** @this {Function} */
|
||||
quil.util.generate_quil_constants.cljs$lang$applyTo = (function (seq5581){
|
||||
var G__5582 = cljs.core.first(seq5581);
|
||||
var seq5581__$1 = cljs.core.next(seq5581);
|
||||
var G__5583 = cljs.core.first(seq5581__$1);
|
||||
var seq5581__$2 = cljs.core.next(seq5581__$1);
|
||||
var G__5584 = cljs.core.first(seq5581__$2);
|
||||
var seq5581__$3 = cljs.core.next(seq5581__$2);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__5582,G__5583,G__5584,seq5581__$3);
|
||||
});
|
||||
|
||||
return null;
|
||||
})()
|
||||
;
|
||||
quil.util.generate_quil_constants.cljs$lang$macro = true;
|
||||
|
||||
/**
|
||||
* In clojure it does `unchecked-int` and does nothing in cljs.
|
||||
* Needed to handle colors in hex form in clojure.
|
||||
*/
|
||||
quil.util.clj_unchecked_int = (function quil$util$clj_unchecked_int(v){
|
||||
return v;
|
||||
});
|
||||
Reference in New Issue
Block a user