Skip to content
Merged
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ proguard/

# Do Not Publish files
*.donotpublish

# Fonts
pub/fonts/**/*
3 changes: 3 additions & 0 deletions pub/fonts/Roboto.zip
Git LFS file not shown
Binary file modified pub/fonts/Roboto_Condensed.zip
Binary file not shown.
101 changes: 87 additions & 14 deletions pub/module-featured-graphic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ if [[ "$#" -lt 3 || "$#" -gt 4 ]]; then
exit 1 # error
fi

setIsCI;

AGENCY_NAME_1=""
AGENCY_NAME_2=""
CITY=""
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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!"
Expand Down
153 changes: 56 additions & 97 deletions pub/module-res-mipmap-launcher-icon-adaptive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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}" <<EOL
<?xml version="1.0" encoding="utf-8"?>
<!-- DO NOT EDIT: this file is generated by mtransitapps/commons-android:pub/module-res-mipmap-launcher-icon-adaptive.sh -->
<resources>
<color name="module_app_icon_color">#${COLOR}</color>
</resources>
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
<?xml version="1.0" encoding="utf-8"?>
<!-- DO NOT EDIT: this file is generated by mtransitapps/commons-android:pub/module-res-mipmap-launcher-icon-adaptive.sh -->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/module_app_icon_color" />
<foreground android:drawable="@mipmap/module_app_icon_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>
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";
3 changes: 2 additions & 1 deletion pub/module-res-mipmap-launcher-icon.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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} \
Comment thread
mmathieum marked this conversation as resolved.
$TEMP;
Expand Down