diff --git a/misc/flag-icons/Makefile b/misc/flag-icons/Makefile index 39b9a896c51f..21cf09b196fc 100644 --- a/misc/flag-icons/Makefile +++ b/misc/flag-icons/Makefile @@ -1,32 +1,37 @@ 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= 24 32 48 64 96 128 192 256 # 512 adds 27MB for .tbz package +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 -# TODO: add bordered and plain versions maybe? do-build: cd ${BUILD_WRKSRC}/flags && ${SH} ${FILESDIR}/makeflags.sh \ - rounded_corners ${STAGEDIR}${FLAGS_TOPDIR}/rounded ${FLAG_SIZES} + ${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 ea16f8edd252..160212b7c673 100644 --- a/misc/flag-icons/files/makeflags.sh +++ b/misc/flag-icons/files/makeflags.sh @@ -1,35 +1,67 @@ +simple() +{ + local comment convert_extra_args destdir height 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 \ + "$flag" "$destdir/${width}x${height}/$(basename "$flag" svg)png" + done + 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_corners() +rounded() { local destdir height 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 flags ${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} \ "$flag" -matte "$mask" \ -compose DstIn -composite -strip \ "$destdir/${width}x${height}/$(basename "$flag" svg)png" done echo "finished in $(date -ur $((`date +%s`-t0)) +%M:%S)" done done rm "$mask" } "$@" diff --git a/misc/flag-icons/pkg-descr b/misc/flag-icons/pkg-descr index 7b0c5c3dd950..c1cedd032cda 100644 --- a/misc/flag-icons/pkg-descr +++ b/misc/flag-icons/pkg-descr @@ -1,2 +1,2 @@ A curated collection of all country flags in 4x3 and 1x1 formats -converted from SVG to PNG for various sizes, from 24px to 256px. +converted from SVG to PNG for various sizes, from 16px to 256px.