diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..50518c66 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +pub/fonts/Roboto.zip filter=lfs diff=lfs merge=lfs -text +pub/fonts/Roboto_Condensed.zip filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index 31959786..c7c2ec73 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ proguard/ # Do Not Publish files *.donotpublish + +# Fonts +pub/fonts/**/* \ No newline at end of file diff --git a/pub/fonts/Roboto.zip b/pub/fonts/Roboto.zip new file mode 100644 index 00000000..5abd484e --- /dev/null +++ b/pub/fonts/Roboto.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32ed9588236ae77ff0faf23c248ae2d918a71b5bad9bc8d75023a4e6874b277d +size 9817048 diff --git a/pub/fonts/Roboto_Condensed.zip b/pub/fonts/Roboto_Condensed.zip index f75eaf4f..5237f45b 100644 Binary files a/pub/fonts/Roboto_Condensed.zip and b/pub/fonts/Roboto_Condensed.zip differ diff --git a/pub/module-featured-graphic.sh b/pub/module-featured-graphic.sh index d2f96bf8..025b3d44 100755 --- a/pub/module-featured-graphic.sh +++ b/pub/module-featured-graphic.sh @@ -13,6 +13,8 @@ if [[ "$#" -lt 3 || "$#" -gt 4 ]]; then exit 1 # error fi +setIsCI; + AGENCY_NAME_1="" AGENCY_NAME_2="" CITY="" @@ -150,38 +152,109 @@ echo " - width: $WIDTH" HEIGHT=500 echo " - height: $HEIGHT" -FONT_INSTALLED=$(fc-list | grep -i roboto | grep -i condensed) # Roboto Condensed +if [ "$IS_CI" = true ]; then + echo " > Roboto fonts installed ($(fc-list | grep -i roboto | wc -l)):" + fc-list | grep -i roboto; +fi + +# https://fonts.google.com/specimen/Roboto +# https://fonts.google.com/specimen/Roboto+Condensed +FONT_INSTALLED=$(fc-list | grep -i roboto | grep -i condensed) # 'Roboto Condensed' & 'Roboto' font family used in SVGs if [[ -z "${FONT_INSTALLED}" ]]; then - echo "> Font need to be installed!." # https://fonts.google.com/specimen/Roboto+Condensed - FONTS_ZIP_FILE="$ROOT_DIR/commons-android/pub/fonts/Roboto_Condensed.zip" - FONTS_OUTPUT_DIR="fonts" + echo "> Font need to be installed!." + FONTS_OUTPUT_DIR1="fonts1" + FONTS_OUTPUT_DIR2="fonts2" FONTS_USER_DIR="$HOME/.fonts" - echo "> Unzipping font ZIP file '$FONTS_ZIP_FILE' to '$FONTS_OUTPUT_DIR'..." - if [[ -d ${FONTS_OUTPUT_DIR} ]]; then - rm -r ${FONTS_OUTPUT_DIR} + FONTS_USER_LOCAL_SHARE_DIR="$HOME/.local/share/fonts" + + echo ">> Loading fonts from LFS..."; + git lfs pull; + checkResult $?; + echo ">> Loading fonts from LFS... DONE"; + + FONTS_ZIP_FILE_1="$ROOT_DIR/commons-android/pub/fonts/Roboto.zip" + echo "> Unzipping font ZIP file '$FONTS_ZIP_FILE_1' to '$FONTS_OUTPUT_DIR1'..." + if [[ -d ${FONTS_OUTPUT_DIR1} ]]; then + rm -r ${FONTS_OUTPUT_DIR1} checkResult $? fi - unzip -j "$FONTS_ZIP_FILE" -d "$FONTS_OUTPUT_DIR" + unzip -j "$FONTS_ZIP_FILE_1" -d "$FONTS_OUTPUT_DIR1" checkResult $? - echo "> Unzipping font ZIP file '$FONTS_ZIP_FILE' to '$FONTS_OUTPUT_DIR'... DONE" - echo "> Installing fonts from '$FONTS_OUTPUT_DIR'..." + echo "> Unzipping font ZIP file '$FONTS_ZIP_FILE_1' to '$FONTS_OUTPUT_DIR1'... DONE" + + echo "> Fonts to install in '$FONTS_OUTPUT_DIR1':" + ls -l "$FONTS_OUTPUT_DIR1"/ + + FONTS_ZIP_FILE_2="$ROOT_DIR/commons-android/pub/fonts/Roboto_Condensed.zip" + echo "> Unzipping font ZIP file '$FONTS_ZIP_FILE_2' to '$FONTS_OUTPUT_DIR2'..." + if [[ -d ${FONTS_OUTPUT_DIR2} ]]; then + rm -r ${FONTS_OUTPUT_DIR2} + checkResult $? + fi + unzip -j "$FONTS_ZIP_FILE_2" -d "$FONTS_OUTPUT_DIR2" + checkResult $? + echo "> Unzipping font ZIP file '$FONTS_ZIP_FILE_2' to '$FONTS_OUTPUT_DIR2'... DONE" + + echo "> Fonts to install in '$FONTS_OUTPUT_DIR2':" + ls -l "$FONTS_OUTPUT_DIR2"/ + + echo "> Installing fonts from '$FONTS_OUTPUT_DIR1' and '$FONTS_OUTPUT_DIR2'..." mkdir -p "$FONTS_USER_DIR" checkResult $? if [ ! -d "$FONTS_USER_DIR" ]; then echo "> User font directory '$FONTS_USER_DIR' does NOT exist!" exit 1 # error fi - cp "$FONTS_OUTPUT_DIR"/*.ttf "$FONTS_USER_DIR" + cp "$FONTS_OUTPUT_DIR1"/*.ttf "$FONTS_USER_DIR" + checkResult $? + # cp "$FONTS_OUTPUT_DIR1"/**/*.ttf "$FONTS_USER_DIR" + # checkResult $? + cp "$FONTS_OUTPUT_DIR2"/*.ttf "$FONTS_USER_DIR" + checkResult $? + # cp "$FONTS_OUTPUT_DIR2"/**/*.ttf "$FONTS_USER_DIR" + # checkResult $? + + echo "> Installing fonts from '$FONTS_USER_LOCAL_SHARE_DIR'..." + mkdir -p "$FONTS_USER_LOCAL_SHARE_DIR" + checkResult $? + if [ ! -d "$FONTS_USER_LOCAL_SHARE_DIR" ]; then + echo "> User local share font directory '$FONTS_USER_LOCAL_SHARE_DIR' does NOT exist!" + exit 1 # error + fi + cp "$FONTS_OUTPUT_DIR1"/*.ttf "$FONTS_USER_LOCAL_SHARE_DIR" + checkResult $? + # cp "$FONTS_OUTPUT_DIR1"/**/*.ttf "$FONTS_USER_LOCAL_SHARE_DIR" + # checkResult $? + cp "$FONTS_OUTPUT_DIR2"/*.ttf "$FONTS_USER_LOCAL_SHARE_DIR" + checkResult $? + # cp "$FONTS_OUTPUT_DIR2"/**/*.ttf "$FONTS_USER_LOCAL_SHARE_DIR" + # checkResult $? + + rm -r $FONTS_OUTPUT_DIR1 # cleanup: delete unzip fonts + checkResult $? + rm -r $FONTS_OUTPUT_DIR2 # cleanup: delete unzip fonts checkResult $? - rm -r $FONTS_OUTPUT_DIR # cleanup: delete unzip fonts FONT_INSTALLED=$(fc-list | grep -i roboto | grep -i condensed) if [[ -z "${FONT_INSTALLED}" ]]; then echo "> Font not installed! ('$FONT_INSTALLED')" exit 1 # error fi + if [ "$IS_CI" = true ]; then + echo " > Roboto fonts installed ($(fc-list | grep -i roboto | wc -l)):" + fc-list | grep -i roboto; + fi + echo "> scan font directories with apparently valid caches..." + fc-cache --verbose --force; + checkResult $? + echo "> scan font directories with apparently valid caches... DONE" echo "> Installing fonts from '$FONTS_OUTPUT_DIR'... DONE" fi +if [ "$IS_CI" = true ]; then + echo " > Roboto fonts installed ($(fc-list | grep -i roboto | wc -l)):" + fc-list | grep -i roboto; +fi + requireCommand "inkscape"; if ! [ -x "$(command -v inkscape)" ]; then @@ -222,13 +295,13 @@ echo "> Setting file strings... DONE"; echo "> Running inkscape..." inkscape \ + "$SOURCE" \ --export-area-page \ --export-width=$WIDTH \ --export-height=$HEIGHT \ --export-background="#$COLOR" \ --export-type=png \ - --export-filename=$DEST \ - $SOURCE + --export-filename="$DEST"; RESULT=$? if [[ ${RESULT} -ne 0 ]]; then echo "> Error running Inkscape!" diff --git a/pub/module-res-mipmap-launcher-icon-adaptive.sh b/pub/module-res-mipmap-launcher-icon-adaptive.sh index 9f5124f0..1aff6582 100755 --- a/pub/module-res-mipmap-launcher-icon-adaptive.sh +++ b/pub/module-res-mipmap-launcher-icon-adaptive.sh @@ -21,51 +21,29 @@ SRC_DIR="${APP_ANDROID_DIR}/src"; MAIN_DIR="${SRC_DIR}/main"; RES_DIR="${MAIN_DIR}/res"; -FILE_NAME_XML="module_app_icon.xml" -MIPMAP_ANYDPI="${RES_DIR}/mipmap-anydpi-v26" -FILE_XML="${MIPMAP_ANYDPI}/${FILE_NAME_XML}"; - -VALUES_DIR="${RES_DIR}/values" -COLOR_FILE_NAME_XML="module_app_icon_color.xml" -COLOR_FILE_XML="${VALUES_DIR}/${COLOR_FILE_NAME_XML}"; - -mkdir -p "${MIPMAP_ANYDPI}"; -checkResult $?; -mkdir -p "${VALUES_DIR}"; -checkResult $?; - requireCommand "xmllint" "libxml2-utils"; requireCommand "jq"; GTFS_RDS_VALUES_GEN_FILE="$RES_DIR/values/gtfs_rts_values_gen.xml"; # do not change to avoid breaking compat w/ old modules BIKE_STATION_VALUES_FILE="$RES_DIR/values/bike_station_values.xml"; AGENCY_JSON_FILE="$ROOT_DIR/config/gtfs/agency.json"; -COLOR="" TYPE=-1 if [ -f "$GTFS_RDS_VALUES_GEN_FILE" ]; then #1st because color computed echoDebug "> Agency file: '$GTFS_RDS_VALUES_GEN_FILE'." - COLOR=$(xmllint --xpath "//resources/string[@name='gtfs_rts_color']/text()" "$GTFS_RDS_VALUES_GEN_FILE") # https://github.com/mtransitapps/parser/blob/master/src/main/java/org/mtransit/parser/gtfs/data/GRouteType.kt TYPE=$(xmllint --xpath "//resources/integer[@name='gtfs_rts_agency_type']/text()" "$GTFS_RDS_VALUES_GEN_FILE") elif [ -f "$AGENCY_JSON_FILE" ]; then echoDebug "> Agency file: '$AGENCY_JSON_FILE'." # https://github.com/mtransitapps/parser/blob/master/src/main/java/org/mtransit/parser/gtfs/data/GRouteType.kt TYPE=$(jq '.target_route_type_id // empty' "$AGENCY_JSON_FILE") - COLOR=$(jq -r '.default_color // empty' "$AGENCY_JSON_FILE") elif [ -f "$BIKE_STATION_VALUES_FILE" ]; then echoDebug "> Agency file: '$BIKE_STATION_VALUES_FILE'." - COLOR=$(xmllint --xpath "//resources/string[@name='bike_station_color']/text()" "$BIKE_STATION_VALUES_FILE") TYPE=$(xmllint --xpath "//resources/integer[@name='bike_station_agency_type']/text()" "$BIKE_STATION_VALUES_FILE") else echo "> No agency file! (rds:$GTFS_RDS_VALUES_GEN_FILE|json:$AGENCY_JSON_FILE|bike:$BIKE_STATION_VALUES_FILE)" exit 1 #error fi -echoDebug " - color: '$COLOR'" echoDebug " - type: '$TYPE'" -if [ -z "$COLOR" ]; then - echo "> No color found for agency type!" - exit 1 #error -fi if [ -z "$TYPE" ]; then echo " > No type found for agency!" exit 1 # error @@ -106,84 +84,65 @@ echoDebug " - svg: $SOURCE" DEST_FILE_NAME="module_app_icon_foreground.png" -DEST_DIR="$RES_DIR/mipmap-xxxhdpi" -mkdir -p "$DEST_DIR" - -DEST="$DEST_DIR/$DEST_FILE_NAME" -echoDebug " - png: $DEST" -rm -rf "$DEST"; -checkResult $?; - -requireCommand "inkscape"; # used by imagemagick to convert SVG properly -requireCommand "convert" "imagemagick"; - -echoDebug "> Converting SVG to PNG..." -convert \ - -background none \ - "$SOURCE" \ - -gravity center \ - -scale 348x348 \ - -extent 432x432 \ - "$DEST"; -RESULT=$? -if [[ ${RESULT} -ne 0 ]]; then - echo "> Error converting SVG to PNG!" - exit ${RESULT} -fi -echoDebug "> Converting SVG to PNG... DONE" - -echoDebug "> Converting XXXHDPI to other DPIs..." -mkdir -p "$RES_DIR/mipmap-xxhdpi" -convert $DEST -resize 75% $RES_DIR/mipmap-xxhdpi/$DEST_FILE_NAME -checkResult $?; -mkdir -p "$RES_DIR/mipmap-xhdpi" -convert $DEST -resize 50% $RES_DIR/mipmap-xhdpi/$DEST_FILE_NAME -checkResult $?; -mkdir -p "$RES_DIR/mipmap-hdpi" -convert $DEST -resize 37.5% $RES_DIR/mipmap-hdpi/$DEST_FILE_NAME -checkResult $?; -mkdir -p "$RES_DIR/mipmap-mdpi" -convert $DEST -resize 25% $RES_DIR/mipmap-mdpi/$DEST_FILE_NAME -checkResult $?; -echoDebug "> Converting XXXHDPI to other DPIs... DONE" - -rm -f "${COLOR_FILE_XML}"; +XXXHDPI_DIR="$RES_DIR/mipmap-xxxhdpi" +mkdir -p "$XXXHDPI_DIR" checkResult $?; -touch "${COLOR_FILE_XML}"; -checkResult $?; -cat >>"${COLOR_FILE_XML}" < - - - #${COLOR} - -EOL - -if [[ ${DEBUGING} = true ]]; then - echoDebug "---------------------------------------------------------------------------------------------------------------" - cat "${COLOR_FILE_XML}"; #DEBUG - echoDebug "---------------------------------------------------------------------------------------------------------------" +XXXHDPI_DEST="$XXXHDPI_DIR/$DEST_FILE_NAME" +if [ -f "$XXXHDPI_DEST" ]; then + if [[ ${MT_GENERATE_IMAGES} == true ]]; then + echo ">> XXXHDPI File '$XXXHDPI_DEST' already exist: overriding image... (MT_GENERATE_IMAGES=$MT_GENERATE_IMAGES)"; + rm -f "$XXXHDPI_DEST"; + checkResult $?; + else + echo ">> XXXHDPI File '$XXXHDPI_DEST' already exist."; # compat with existing mipmap-xxxhdpi/module_app_icon_foreground.png + fi fi - -rm -f "${FILE_XML}"; -checkResult $?; -touch "${FILE_XML}"; -checkResult $?; -cat >>"${FILE_XML}" < - - - - - - -EOL - -if [[ ${DEBUGING} = true ]]; then - echoDebug "---------------------------------------------------------------------------------------------------------------" - cat "${FILE_XML}"; #DEBUG - echoDebug "---------------------------------------------------------------------------------------------------------------" +if [ ! -f "$XXXHDPI_DEST" ]; then + requireCommand "inkscape"; # used by imagemagick to convert SVG properly + requireCommand "convert" "imagemagick"; + echoDebug "> Converting SVG to XXXHDPI PNG..." + convert \ + -background none \ + "$SOURCE" \ + -gravity center \ + -scale 348x348 \ + -extent 432x432 \ + +set date:create +set date:modify \ + "$XXXHDPI_DEST"; + RESULT=$? + if [[ ${RESULT} -ne 0 ]]; then + echo "> Error converting SVG to PNG!" + exit ${RESULT} + fi + echoDebug "> Converting SVG to XXXHDPI PNG... DONE" fi +for DENSITY in xxhdpi xhdpi hdpi mdpi; do + case "$DENSITY" in + xxhdpi) DEST_DIR="$RES_DIR/mipmap-xxhdpi"; RES="75%";; + xhdpi) DEST_DIR="$RES_DIR/mipmap-xhdpi"; RES="50%";; + hdpi) DEST_DIR="$RES_DIR/mipmap-hdpi"; RES="37.5%";; + mdpi) DEST_DIR="$RES_DIR/mipmap-mdpi"; RES="25%";; + esac + mkdir -p "$DEST_DIR"; + checkResult $?; + DEST="$DEST_DIR/$DEST_FILE_NAME" + if [ -f "$DEST" ]; then + if [[ ${MT_GENERATE_IMAGES} == true ]]; then + echo ">> ${DENSITY^^} File '$DEST' already exist: overriding image... (MT_GENERATE_IMAGES=$MT_GENERATE_IMAGES)"; + rm -f "$DEST"; + checkResult $?; + else + echo ">> ${DENSITY^^} File '$DEST' already exist."; + fi + fi + if [ ! -f "$DEST" ]; then + echoDebug "> Converting XXXHDPI to ${DENSITY^^}..." + requireCommand "convert" "imagemagick"; + convert "$XXXHDPI_DEST" -resize "$RES" +set date:create +set date:modify "$DEST" + checkResult $?; + echoDebug "> Converting XXXHDPI to ${DENSITY^^}... DONE" + fi +done echo -e "\n>> Creating Module Adaptive Launcher Icon... DONE"; diff --git a/pub/module-res-mipmap-launcher-icon.sh b/pub/module-res-mipmap-launcher-icon.sh index 46c927d0..dea82a22 100755 --- a/pub/module-res-mipmap-launcher-icon.sh +++ b/pub/module-res-mipmap-launcher-icon.sh @@ -83,7 +83,8 @@ WIDTH_CONTENT=$((CROP_WIDTH * SCALE / 100)); HEIGHT_CONTENT=$((CROP_HEIGHT * SCALE / 100)); echoDebug " - scale: $SCALE% ${WIDTH_CONTENT} x ${HEIGHT_CONTENT}"; convert $TEMP \ - -background transparent -gravity center \ + -background transparent \ + -gravity center \ -scale ${WIDTH_CONTENT}x${HEIGHT_CONTENT} \ -extent ${CROP_WIDTH}x${CROP_HEIGHT} \ $TEMP;