Mercurial > rlm
diff 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 diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/rlm/clipboard.clj Tue Oct 18 00:57:08 2011 -0700 1.3 @@ -0,0 +1,58 @@ 1.4 +(ns rlm.clipboard 1.5 + (:import java.awt.datatransfer.Transferable) 1.6 + (:import java.awt.Toolkit) 1.7 + (:import sun.awt.X11.XClipboard) 1.8 + (:import java.awt.datatransfer.DataFlavor) 1.9 + (:use [clojure.contrib [duck-streams :only [file-str]]]) 1.10 + (:use rlm.shell-inspect)) 1.11 + 1.12 +(import '(javax.imageio.stream FileImageOutputStream)) 1.13 +(import '(javax.imageio ImageWriteParam IIOImage)) 1.14 +(import '(javax.imageio ImageIO) ) 1.15 +(import '(java.io File) ) 1.16 + 1.17 +(def clip (.getSystemClipboard (Toolkit/getDefaultToolkit))) 1.18 + 1.19 +(defn get-clipboard-image 1.20 + "if the clipboard has an image, return it" 1.21 + [] 1.22 + (.getTransferData 1.23 + (.getContents 1.24 + (.getSystemClipboard 1.25 + (Toolkit/getDefaultToolkit)) nil) 1.26 + DataFlavor/imageFlavor)) 1.27 + 1.28 + 1.29 +(def *ext* "jpg") 1.30 + 1.31 +(defn writeJpg 1.32 + "WTF is this shit?!" 1.33 + [image #^File target quality] 1.34 + (let [jpgWriter (.next (ImageIO/getImageWritersByFormatName *ext*))] 1.35 + (doto (.getDefaultWriteParam jpgWriter) 1.36 + (.setCompressionMode ImageWriteParam/MODE_EXPLICIT) 1.37 + (.setCompressionQuality quality)) 1.38 + (doto jpgWriter 1.39 + (.setOutput (FileImageOutputStream. target)) 1.40 + (.write (IIOImage. image nil nil)) 1.41 + (.dispose)))) 1.42 + 1.43 + 1.44 +(defn save-clipboard 1.45 + [target] 1.46 + (writeJpg 1.47 + (get-clipboard-image) 1.48 + (file-str target) 1.49 + 1)) 1.50 + 1.51 +(def counter 1.52 + (let [count (atom 0)] 1.53 + (fn [] (swap! count inc)))) 1.54 + 1.55 + 1.56 +(defn clipsave [] 1.57 + (save-clipboard (str "/home/r/Desktop/cedba/homo/" (counter) ".jpg"))) 1.58 + 1.59 + 1.60 +(if (command-line?) (clipsave)) 1.61 +