Liking cljdoc? Tell your friends :D

Capra

Clojars Project

Little straight forward drawing library that uses Java AWT underneath.

See Changes

Use via

[com.github.mikehardice/capra "0.0.2"]

in your project.clj

(ns capra.playground
  (:require [capra.core :refer [ellipse rect line text create-window draw-> get-text-dimensions handle-event]])
  (:import [java.awt Color RenderingHints]))

(defn draw-weigth
  [canvas x y]
  (draw-> canvas
          (ellipse x y 100 110 Color/red true)
          (ellipse x y 90 100 Color/green true)
          (ellipse x y 80 90 Color/red true)
          (ellipse x y 70 80 Color/green true)))

(defn main []
  (let [context (create-window 200 100 500 600 "Meeehhhh" Color/black false "resources/icon-test.bla")
        canvas (assoc (:canvas context) :rendering {RenderingHints/KEY_ANTIALIASING RenderingHints/VALUE_ANTIALIAS_ON})]
    (doto (:window context)
      (.setLocation 300 200))
    (draw-> canvas
                          (rect 100 100 50 60 Color/yellow true)
                          (rect 300 100 50 60 Color/black false)
                          (rect 100 300 50 60 Color/green true)
                          (rect 300 300 50 60 Color/orange true)
                          (line 200 200 400 400 Color/green 5)
                          (text 200 50 "Hello this is a test" Color/pink 20))
    (draw-weigth canvas 400 400)
    (draw-weigth canvas 200 200)
    (println "Size: " (get-text-dimensions canvas "Hello this is a test" 20))
    canvas))

(defmethod handle-event :mouse-dragged [_ event]
  (println "mouse at (" (:x event) " , " (:y event) ") is being dragged"))

(defmethod handle-event :key-pressed [_ {:keys [code char]}]
  (println "key pressed " code " (code) " char " (char)"))

Capra now also supports double buffering. To let all draw-> calls draw to the same buffer, use use-buffer-> which will flip the buffer at the end. Example as above but with double buffering:

(defn main []
  (let [context (create-window 200 100 500 600 "Meeehhhh" Color/black false "resources/icon-test.bla")
        canvas (assoc (:canvas context) :rendering {RenderingHints/KEY_ANTIALIASING RenderingHints/VALUE_ANTIALIAS_ON})
        canvas (attach-buffered-strategy canvas 2)]
    (doto (:window context)
      (.setLocation 300 200))
    (use-buffer-> canvas
     (draw-> canvas
             (rect 100 100 50 60 Color/yellow true)
             (rect 300 100 50 60 Color/black false)
             (rect 100 300 50 60 Color/green true)
             (rect 300 300 50 60 Color/orange true)
             (line 200 200 400 400 Color/green 5)
             (text 200 50 "Hello this is a test" Color/pink 20))
     (draw-weigth canvas 400 400)
     (draw-weigth canvas 200 200))
    (println "Size: " (get-text-dimensions canvas "Hello this is a test" 20))
    canvas))

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close