Groovyではてブカウンター風はてなスターカウンターを作成する 9)はてブカウンターと同じ15色に対応する
はてぶカウンターは、15色あるので、負けじとはてなスターカウンターも15色に対応する。
自分が使うだけなら、orangeだけでいいんだけど、mapの勉強も兼ねて。
色の指定方法
コメントの15色から1つを選択して、MYCOLORに設定する。
存在しない色を選択した場合は、デフォルトの"deepblue"になる。
ソース
import groovy.swing.j2d.* import net.arnx.jsonic.JSON; /* * customize */ /* orangeclover is changed to your hatena id. */ MYURI="http://s.hatena.ne.jp/blog.json/http://d.hatena.ne.jp/orangeclover/" /* "deepblue", "darkgray", "green", "purple", "brown", "red", "sepia", "pink", "tea", "lightgray", "lightblue", "white", "black", "lime", "orange" default:"deepblue" */ MYCOLOR="orange" /* this path is changed to your save fiel path. */ SAVEFILE="D:\\MyDropbox\\My Dropbox\\Public\\hatenastar\\HatenaStarCount.png" /* * Don't touch after this line. */ class HatenaStar { String title; String uri; Integer star_count; } ColorMap=["deepblue": ["highlight":'#839ce6', "body":'#1841cd', "shadow":'#10205a', "star":'#83a4ff', "number":'white'] , "darkgray": ["highlight":'#949ca4', "body":'#6a6a7b', "shadow":'#414a52', "star":'#cdcdcd', "number":'white'] , "green": ["highlight":'#73bdc5', "body":'#4194a4', "shadow":'#206a73', "star":'#b4f6de', "number":'white'] , "purple": ["highlight":'#9473c5', "body":'#6a39a4', "shadow":'#41207b', "star":'#b49ce6', "number":'white'] , "brown": ["highlight":'#bd8362', "body":'#9c5a31', "shadow":'#733918', "star":'#e6b494', "number":'white'] , "red": ["highlight":'#e65a52', "body":'#cd2018', "shadow":'#9c0000', "star":'#ff9494', "number":'white'] , "sepia": ["highlight":'#eed5ac', "body":'#debd6a', "shadow":'#bd8341', "star":'#ffeed5', "number":'white'] , "pink": ["highlight":'#f6bdbd', "body":'#ee8383', "shadow":'#cd5a62', "star":'#ffdede', "number":'white'] , "tea": ["highlight":'#d5e6cd', "body":'#b4cda4', "shadow":'#94ac7b', "star":'#eef6ee', "number":'white'] , "lightgray": ["highlight":'#deded5', "body":'#bdbdb4', "shadow":'#9c9494', "star":'#f6f6f6', "number":'white'] , "lightblue": ["highlight":'#d5e6ff', "body":'#8bb4ff', "shadow":'#6294ee', "star":'#eef6ff', "number":'white'] , "white": ["highlight":'#ffffff', "body":'#ffffff', "shadow":'#b4b4b4', "star":'#cdcdcd', "number":'#9c9c9c'] , "black": ["highlight":'#b4b4b4', "body":'#525252', "shadow":'#000000', "star":'#b4b4b4', "number":'white'] , "lime": ["highlight":'#bdffde', "body":'#5ae6a4', "shadow":'#41bd83', "star":'#deffee', "number":'white'] , "orange": ["highlight":'#ffd583', "body":'#ff9429', "shadow":'#ff7b18', "star":'#ffdea4', "number":'white'] ] myURI = new URL(MYURI) hatenastar = JSON.decode(new InputStreamReader( myURI.openStream() ,"UTF-8"), HatenaStar.class) myColor = ColorMap[MYCOLOR]==null ? "deepblue" : MYCOLOR gr = new GraphicsRenderer() gr.renderToFile(SAVEFILE, 75, 14){ antialias("on") rect(x:0, y:0, width:75, height:14, fill: color(ColorMap[myColor]["body"]), borderColor: color(ColorMap[myColor]["highlight"]), borderWidth:1 ) star(cx:7, cy:7, count:5, ir:2, or:4, fill: color(ColorMap[myColor]["star"]), borderColor: no ) /* 3D-ish */ /* right side of of star:Shadow */ line(x1:14, y1:0, x2:14, y2:14, borderColor:color(ColorMap[myColor]["shadow"]), borderWidth:1) /* left side of the rectangle:Hilight */ line(x1:15, y1:0, x2:15, y2:14, borderColor:color(ColorMap[myColor]["highlight"]), borderWidth:1) /* right side of the rectangle:Shadow */ line(x1:74, y1:0, x2:74, y2:14, borderColor:color(ColorMap[myColor]["shadow"]), borderWidth:1) /* base of the rectangle:Shadow */ line(x1:0, y1:13, x2:75, y2:13, borderColor:color(ColorMap[myColor]["shadow"]), borderWidth:1) font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 10)) text( x:70 - (hatenastar.star_count.toString().length() -1) * 10, y:4, text: hatenastar.star_count.toString(), fill: ColorMap[myColor]["number"], borderColor: no ) }
結果
groovysh -classpath c:\usr\lib\jsonic\jsonic-1.1.3\jsonic-1.1.3.jar; groovy:000> load GraphicsHatenaStarCount.groovy ===> [import groovy.swing.j2d.*] ===> [import groovy.swing.j2d.*, import net.arnx.jsonic.JSON;] ===> true ===> true ===> http://s.hatena.ne.jp/blog.json/http://d.hatena.ne.jp/orangeclover/ ===> true ===> orange ===> true ===> D:\MyDropbox\My Dropbox\Public\hatenastar\HatenaStarCount.png ===> true ===> true ===> {deepblue={highlight=#839ce6, body=#1841cd, shadow=#10205a, star=#83a4ff, number=white}, darkgray={highlight=#949ca4, body=#6a6a7b, shadow=#414a52, star=#cdcdcd, number=white}, green={highlight=#73bdc5, body=#4194a4, shadow=#206a73, star=#b4f6de, number=white}, purple={highlight=#9473c5, body=#6a39a4, shadow=#41207b, star=#b49ce6, number=white}, brown={highlight=#bd8362, body=#9c5a31, shadow=#733918, star=#e6b494, number=white}, red={highlight=#e65a52, body=#cd2018, shadow=#9c0000, star=#ff9494, number=white}, sepia={highlight=#eed5ac, body=#debd6a, shadow=#bd8341, star=#ffeed5, number=white}, pink={highlight=#f6bdbd, body=#ee8383, shadow=#cd5a62, star=#ffdede, number=white}, tea={highlight=#d5e6cd, body=#b4cda4, shadow=#94ac7b, star=#eef6ee, number=white}, lightgray={highlight=#deded5, body=#bdbdb4, shadow=#9c9494, star=#f6f6f6, number=white}, lightblue={highlight=#d5e6ff, body=#8bb4ff, shadow=#6294ee, star=#eef6ff, number=white}, white={highlight=#ffffff, body=#ffffff, shadow=#b4b4b4, star=#cdcdcd, number=#9c9c9c}, black={highlight=#b4b4b4, body=#525252, shadow=#000000, star=#b4b4b4, number=white}, lime={highlight=#bdffde, body=#5ae6a4, shadow=#41bd83, star=#deffee, number=white}, orange={highlight=#ffd583, body=#ff9429, shadow=#ff7b18, star=#ffdea4, number=white}} ===> http://s.hatena.ne.jp/blog.json/http://d.hatena.ne.jp/orangeclover/ ===> HatenaStar@391da0 ===> orange ===> groovy.swing.j2d.GraphicsRenderer@199a84f ===> D:\MyDropbox\My Dropbox\Public\hatenastar\HatenaStarCount.png