#!/usr/local/bin/rebview -qvs
REBOL [
Title: "CSS Sprite creator"
Author: onetom@hackerspace.sg
Date: 2011-02-20
File: %css-sprite.r
]
types: [%*.gif %*.png] sprite: %sprite.png test: %sprite.html spacing: 0x1
name: func[f][ rejoin ["sprite-" head clear find copy f suffix? f]]
files: remove-each f read %. [f = sprite or not any map-each t types [find/any f t]]
montage: collect [ foreach f files [keep 'image keep f] ]
save/png sprite to-image layout/tight compose [
backdrop 255.255.255.255 space spacing pad 0x0 (montage)]
offset: 0x0
css: map-each f files [
i: load-image f class: name f
rule: rejoin [
"."class" {width: "i/size/x"px; height: "i/size/y"px; "
"background: transparent url("sprite") 0 "offset/y"px no-repeat;}" lf
] offset: offset - i/size - spacing
rule
]
sprites: map-each f files [ reform [build-tag [div class (name f)] ] ]
images: map-each f files [ build-tag [img src (f)] ]
write test reduce [
Sprites:
sprites
Images:
images
]