annotate src/rlm/clipboard.clj @ 0:78a630e650d2

initial import
author Robert McIntyre <rlm@mit.edu>
date Tue, 18 Oct 2011 00:57:08 -0700
parents
children
rev   line source
rlm@0 1 (ns rlm.clipboard
rlm@0 2 (:import java.awt.datatransfer.Transferable)
rlm@0 3 (:import java.awt.Toolkit)
rlm@0 4 (:import sun.awt.X11.XClipboard)
rlm@0 5 (:import java.awt.datatransfer.DataFlavor)
rlm@0 6 (:use [clojure.contrib [duck-streams :only [file-str]]])
rlm@0 7 (:use rlm.shell-inspect))
rlm@0 8
rlm@0 9 (import '(javax.imageio.stream FileImageOutputStream))
rlm@0 10 (import '(javax.imageio ImageWriteParam IIOImage))
rlm@0 11 (import '(javax.imageio ImageIO) )
rlm@0 12 (import '(java.io File) )
rlm@0 13
rlm@0 14 (def clip (.getSystemClipboard (Toolkit/getDefaultToolkit)))
rlm@0 15
rlm@0 16 (defn get-clipboard-image
rlm@0 17 "if the clipboard has an image, return it"
rlm@0 18 []
rlm@0 19 (.getTransferData
rlm@0 20 (.getContents
rlm@0 21 (.getSystemClipboard
rlm@0 22 (Toolkit/getDefaultToolkit)) nil)
rlm@0 23 DataFlavor/imageFlavor))
rlm@0 24
rlm@0 25
rlm@0 26 (def *ext* "jpg")
rlm@0 27
rlm@0 28 (defn writeJpg
rlm@0 29 "WTF is this shit?!"
rlm@0 30 [image #^File target quality]
rlm@0 31 (let [jpgWriter (.next (ImageIO/getImageWritersByFormatName *ext*))]
rlm@0 32 (doto (.getDefaultWriteParam jpgWriter)
rlm@0 33 (.setCompressionMode ImageWriteParam/MODE_EXPLICIT)
rlm@0 34 (.setCompressionQuality quality))
rlm@0 35 (doto jpgWriter
rlm@0 36 (.setOutput (FileImageOutputStream. target))
rlm@0 37 (.write (IIOImage. image nil nil))
rlm@0 38 (.dispose))))
rlm@0 39
rlm@0 40
rlm@0 41 (defn save-clipboard
rlm@0 42 [target]
rlm@0 43 (writeJpg
rlm@0 44 (get-clipboard-image)
rlm@0 45 (file-str target)
rlm@0 46 1))
rlm@0 47
rlm@0 48 (def counter
rlm@0 49 (let [count (atom 0)]
rlm@0 50 (fn [] (swap! count inc))))
rlm@0 51
rlm@0 52
rlm@0 53 (defn clipsave []
rlm@0 54 (save-clipboard (str "/home/r/Desktop/cedba/homo/" (counter) ".jpg")))
rlm@0 55
rlm@0 56
rlm@0 57 (if (command-line?) (clipsave))
rlm@0 58