diff --git a/misc/flag-icons/Makefile b/misc/flag-icons/Makefile index 21cf09b196fc..7a123012a67d 100644 --- a/misc/flag-icons/Makefile +++ b/misc/flag-icons/Makefile @@ -1,37 +1,41 @@ PORTNAME= flag-icons PORTVERSION= 7.3.2 DISTVERSIONPREFIX= v CATEGORIES= misc MAINTAINER= danfe@FreeBSD.org COMMENT= Curated collection of all country flags rendered in PNG WWW= https://flagicons.lipis.dev/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= convert:graphics/ImageMagick6 # ${IMAGEMAGICK_DEFAULT} USE_GITHUB= yes GH_ACCOUNT= lipis NO_ARCH= yes NO_INSTALL= yes FLAGS_TOPDIR= ${PREFIX}/share/icons/${PORTNAME} FLAG_SIZES= 16 24 32 48 64 96 128 192 256 # 512 adds 25+ MB for .tbz package FLAVORS= plain bordered rounded .if ${FLAVOR:U:Nplain} PKGNAMESUFFIX= -${FLAVOR} .endif +post-extract: + cd ${WRKSRC}/flags && ${SH} ${FILESDIR}/makeflags.sh add-missing-flags + do-build: - cd ${BUILD_WRKSRC}/flags && ${SH} ${FILESDIR}/makeflags.sh \ - ${FLAVOR} ${STAGEDIR}${FLAGS_TOPDIR}/${FLAVOR} ${FLAG_SIZES} + cd ${BUILD_WRKSRC}/flags && JOBS=${MAKE_JOBS_NUMBER} ${SH} \ + ${FILESDIR}/makeflags.sh ${FLAVOR} \ + ${STAGEDIR}${FLAGS_TOPDIR}/${FLAVOR} ${FLAG_SIZES} post-stage: cd ${STAGEDIR}${PREFIX} && ${FIND} share -type f >> ${TMPPLIST} .include diff --git a/misc/flag-icons/files/makeflags.sh b/misc/flag-icons/files/makeflags.sh index 160212b7c673..b98888fa1546 100644 --- a/misc/flag-icons/files/makeflags.sh +++ b/misc/flag-icons/files/makeflags.sh @@ -1,67 +1,91 @@ +# https://commons.wikimedia.org/wiki/File:Flag_of_Esperanto.svg +add-esperanto-flag() +{ + cat > "$1/epo.svg" << EOD + + + + + +EOD +} + +add-missing-flags() +{ + add-esperanto-flag 1x1 400 + add-esperanto-flag 4x3 533 +} + +async() { "$@" & } + simple() { - local comment convert_extra_args destdir height ratio subdir t0 width + local comment convert_extra_args destdir flag height i=0 ratio subdir t0 width comment=$1; convert_extra_args=$2; destdir=$3; shift 3 for subdir in ?x?; do ratio=${subdir%x*}/${subdir#*x} for height; do width=$((height * $ratio)) mkdir -p "$destdir/${width}x${height}" echo -n "Generating $comment flags ${width}x${height}... " t0=$(date +%s) for flag in $subdir/*.svg; do - convert -resize ${width}x${height} $convert_extra_args \ + i=$((i % ${JOBS:-1})) + test $((i+=1)) -eq 1 && wait + async convert -resize ${width}x${height} $convert_extra_args \ "$flag" "$destdir/${width}x${height}/$(basename "$flag" svg)png" - done + done; wait echo "finished in $(date -ur $((`date +%s`-t0)) +%M:%S)" done done } plain() { simple undecorated -strip "$@" } bordered() { simple black-bordered '-shave 1x1 -bordercolor black -border 1 -strip' "$@" } # https://joeldare.com/rounding-image-corners-with-imagemagick rounded() { - local destdir height mask radius ratio subdir t0 width + local destdir flag height i=0 mask radius ratio subdir t0 width destdir=$1; shift mask=$(mktemp) for subdir in ?x?; do ratio=${subdir%x*}/${subdir#*x} for height; do width=$((height * $ratio)) radius=$((height / 10)) convert -size ${width}x${height} xc:none -draw \ "roundRectangle 0,0,$((width-1)),$((height-1)),$radius,$radius" \ -strip "png:$mask" mkdir -p "$destdir/${width}x${height}" echo -n "Generating rounded corner flags ${width}x${height}... " t0=$(date +%s) for flag in $subdir/*.svg; do - convert -resize ${width}x${height} \ + i=$((i % ${JOBS:-1})) + test $((i+=1)) -eq 1 && wait + async convert -resize ${width}x${height} \ "$flag" -matte "$mask" \ -compose DstIn -composite -strip \ "$destdir/${width}x${height}/$(basename "$flag" svg)png" - done + done; wait echo "finished in $(date -ur $((`date +%s`-t0)) +%M:%S)" done done rm "$mask" } "$@"