# # $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 ;