changeset 0:43e3358ca4d9

Initial.
author Mikhail Kryshen <mikhail@kryshen.net>
date Sun, 06 Jun 2010 06:03:38 +0400
parents
children a93cfcf60f27
files .hgignore README project.clj src/indyvon/component.clj src/indyvon/core.clj src/indyvon/layer.clj test/indyvon/core_test.clj
diffstat 7 files changed, 115 insertions(+), 0 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/.hgignore	Sun Jun 06 06:03:38 2010 +0400
     1.3 @@ -0,0 +1,7 @@
     1.4 +syntax: glob
     1.5 +
     1.6 +pom.xml
     1.7 +lib
     1.8 +classes
     1.9 +*.jar
    1.10 +*~
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/README	Sun Jun 06 06:03:38 2010 +0400
     2.3 @@ -0,0 +1,15 @@
     2.4 +# indyvon
     2.5 +
     2.6 +FIXME: write description
     2.7 +
     2.8 +## Usage
     2.9 +
    2.10 +FIXME: write
    2.11 +
    2.12 +## Installation
    2.13 +
    2.14 +FIXME: write
    2.15 +
    2.16 +## License
    2.17 +
    2.18 +FIXME: write
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/project.clj	Sun Jun 06 06:03:38 2010 +0400
     3.3 @@ -0,0 +1,5 @@
     3.4 +(defproject indyvon "1.0.0-SNAPSHOT"
     3.5 +  :description "FIXME: write"
     3.6 +  :dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"]
     3.7 +                 [org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]]
     3.8 +  :dev-dependencies [[leiningen/lein-swank "1.2.0-SNAPSHOT"]])
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/src/indyvon/component.clj	Sun Jun 06 06:03:38 2010 +0400
     4.3 @@ -0,0 +1,17 @@
     4.4 +;; (ns indyvon.component
     4.5 +;;   (:use indyvon.layer)
     4.6 +;;   (:import (java.awt Graphics Graphics2D))
     4.7 +;;   (:gen-class
     4.8 +;;    :name indyvon.Component
     4.9 +;;    :extends java.awt.Component
    4.10 +;;    :constructor {[Layer] []}
    4.11 +;;    :state layer
    4.12 +;;    :init init-state))
    4.13 +
    4.14 +;; (defn- init-state [layer]
    4.15 +;;   [[] layer])
    4.16 +
    4.17 +;; (defn -paint [this graphics])
    4.18 +
    4.19 +;; (defn -update [this graphics]
    4.20 +;;      (-paint this graphics))
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/src/indyvon/core.clj	Sun Jun 06 06:03:38 2010 +0400
     5.3 @@ -0,0 +1,1 @@
     5.4 +(ns indyvon.core)
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/src/indyvon/layer.clj	Sun Jun 06 06:03:38 2010 +0400
     6.3 @@ -0,0 +1,64 @@
     6.4 +(ns indyvon.layer
     6.5 +  (:import (java.awt Component Graphics2D)))
     6.6 +
     6.7 +(def ^{:private true} *graphics*)
     6.8 +(def ^{:private true} *rx* 0)
     6.9 +(def ^{:private true} *ry* 0)
    6.10 +
    6.11 +(def *width*)
    6.12 +(def *height*)
    6.13 +
    6.14 +(def *lag*)
    6.15 +
    6.16 +(def *update-fn*)
    6.17 +
    6.18 +(defprotocol Layer
    6.19 +  (render! [this])
    6.20 +  (size [this])
    6.21 +  (anchor [this]))
    6.22 +
    6.23 +(defn- translate [g x y w h clip]
    6.24 +  (if clip
    6.25 +    (.create g x y w h)
    6.26 +    (doto (.create g)
    6.27 +      (.translate x y))))
    6.28 +
    6.29 +(defn render-layer!
    6.30 +  "Render layer in a new graphics context."
    6.31 +  ([layer]
    6.32 +     (render-layer! layer 0 0 *width* *height*))
    6.33 +  ([layer x y]
    6.34 +     (render-layer! layer x y true))
    6.35 +  ([layer x y clip]
    6.36 +     (let [s (size layer)]
    6.37 +       (render-layer! layer x y (.width s) (.height s) clip)))
    6.38 +  ([layer x y w h]
    6.39 +     (render-layer! layer x y w h true))
    6.40 +  ([layer x y w h clip]
    6.41 +     (binding [*graphics* (translate *graphics* x y w h clip)
    6.42 +               *rx* (+ *rx* x)
    6.43 +               *ry* (+ *ry* y)
    6.44 +               *width* w
    6.45 +               *height* h]
    6.46 +       (render! layer))))
    6.47 +
    6.48 +(defn- make-update-fn [component]
    6.49 +  (fn [] (.repaint component)))
    6.50 +
    6.51 +(defn make-component [layer]
    6.52 +  (proxy [Component] []
    6.53 +    (update [g] (.paint this g))
    6.54 +    (paint [g]
    6.55 +           (let [insets (.getInsets this)
    6.56 +                 top (.top insets)
    6.57 +                 left (.left insets)
    6.58 +                 bottom (.bottom insets)
    6.59 +                 right (.right insets)
    6.60 +                 size (.getSize this)
    6.61 +                 width (- (.width size) left right)
    6.62 +                 height (- (.height size) top bottom)]
    6.63 +             (binding [*graphics* g
    6.64 +                       *update-fn* (make-update-fn this)]
    6.65 +               (render-layer! layer top left width height false))))
    6.66 +    (getPreferredSize []
    6.67 +                      (size layer))))
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/test/indyvon/core_test.clj	Sun Jun 06 06:03:38 2010 +0400
     7.3 @@ -0,0 +1,6 @@
     7.4 +(ns indyvon.core-test
     7.5 +  (:use [indyvon.core] :reload-all)
     7.6 +  (:use [clojure.test]))
     7.7 +
     7.8 +(deftest replace-me ;; FIXME: write
     7.9 +  (is false))