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 +