Mercurial > rlm
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 |