ede/build/Svg.jam

77 lines
1.9 KiB
Plaintext

#
# $Id$
#
# Part of Equinox Desktop Environment (EDE).
# Copyright (c) 2000-2007 EDE Authors.
#
# This program is licensed under terms of the
# GNU General Public License version 2 or newer.
# See COPYING for details.
SVG_CONVERTOR = "rsvg-convert" ;
# SvgToPng [target-png] : [source-svg] : [width] : [height] ;
rule SvgToPng
{
if ! $(SVG_CONVERTOR) {
Echo "SVG_CONVERTOR not defined; $(1) will not be built" ;
return ;
}
LocalDepends $(1) : $(2) ;
LocalDepends icons : $(1) ;
LocalDepends all : $(1) ;
PNG_WIDTH on $(1) = $(3) ;
PNG_HEIGHT on $(1) = $(4) ;
SvgToPng1 $(1) : $(2) ;
LocalClean clean : $(1) ;
}
# SvgToPngDirectory [directory-where-to-place] : [directory-where-is-source] : [icon-sizes] ;
rule SvgToPngDirectory
{
local icons source target png_ext ;
if ! $(SVG_CONVERTOR) {
Echo "SVG_CONVERTOR not defined; directory $(1) will not be built" ;
return ;
}
png_ext = ".png" ;
icons = [ Wildcard $(2) : *.svg ] ;
for i in $(icons) {
# before source and target are further used
# grist must be calculated uniquely or jam will be confused
# e.g. if we want foo.svg to be placed in 32/foo.png and 16/foo.png
# with different sizes, without unique grist, jam will construct only
# 32/foo.png since it is bound to source; to skip this, source and
# target are gristed to directory name plus jam's SOURCE_GRIST
target = $(i:S=$(png_ext):G=$(SOURCE_GRIST)-$(1)) ;
source = $(i:G=$(SOURCE_GRIST)-$(2)) ;
# where to look for source
SEARCH on $(source) = [ FDirName $(SUBDIR) $(2) ] ;
# where to place target; directory will be created if
# does not exists
MakeLocate $(target) : [ FDirName $(SUBDIR) $(1) ] ;
SvgToPng $(target) : $(source) : $(3) : $(3) ;
}
# let 'jam clean' removes created directory
CleandirSafe clean : [ FDirName $(SUBDIR) $(1) ] ;
}
actions SvgToPng1
{
$(SVG_CONVERTOR) -w $(PNG_WIDTH) -h $(PNG_HEIGHT) -f png "$(>)" "$(<)"
}
NotFile icons ;
Always icons ;