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

作成された画像

標準・デープブルー(deepblue)

グレー(darkgray)

緑(green)

紫(purple)

茶(brown)

赤(red)

セピア(sepia)

ピンク(pink)

抹茶(tea)

ライトグレー(lightgray)

ライトブルー(lightblue)

白(white)

黒(black)

ライム(lime)

オレンジ(orange)


実行環境





最近のキーワード






Groovyイン・アクション
Dierk Konig Andrew Glover Paul King Guillaume Laforge Jon Skeet
毎日コミュニケーションズ
売り上げランキング: 294340




Groovyイン・アクションを読むならあった方が便利かな。

ブックストッパー
ブックストッパー
posted with amazlet at 10.09.18

トモエ算盤
売り上げランキング: 614


Rubyレシピブックは「ほんたった」で立ててる

EDISON ほんたった黒(ハードケース入り)
株式会社エジソン
売り上げランキング: 2164