view 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
line wrap: on
line source
1 (ns rlm.clipboard
2 (:import java.awt.datatransfer.Transferable)
3 (:import java.awt.Toolkit)
4 (:import sun.awt.X11.XClipboard)
5 (:import java.awt.datatransfer.DataFlavor)
6 (:use [clojure.contrib [duck-streams :only [file-str]]])
7 (:use rlm.shell-inspect))
9 (import '(javax.imageio.stream FileImageOutputStream))
10 (import '(javax.imageio ImageWriteParam IIOImage))
11 (import '(javax.imageio ImageIO) )
12 (import '(java.io File) )
14 (def clip (.getSystemClipboard (Toolkit/getDefaultToolkit)))
16 (defn get-clipboard-image
17 "if the clipboard has an image, return it"
18 []
19 (.getTransferData
20 (.getContents
21 (.getSystemClipboard
22 (Toolkit/getDefaultToolkit)) nil)
23 DataFlavor/imageFlavor))
26 (def *ext* "jpg")
28 (defn writeJpg
29 "WTF is this shit?!"
30 [image #^File target quality]
31 (let [jpgWriter (.next (ImageIO/getImageWritersByFormatName *ext*))]
32 (doto (.getDefaultWriteParam jpgWriter)
33 (.setCompressionMode ImageWriteParam/MODE_EXPLICIT)
34 (.setCompressionQuality quality))
35 (doto jpgWriter
36 (.setOutput (FileImageOutputStream. target))
37 (.write (IIOImage. image nil nil))
38 (.dispose))))
41 (defn save-clipboard
42 [target]
43 (writeJpg
44 (get-clipboard-image)
45 (file-str target)
46 1))
48 (def counter
49 (let [count (atom 0)]
50 (fn [] (swap! count inc))))
53 (defn clipsave []
54 (save-clipboard (str "/home/r/Desktop/cedba/homo/" (counter) ".jpg")))
57 (if (command-line?) (clipsave))