cm: Rework boot animation generation

Keep the largest bootanimation extracted
and resize it at build-time.

Change-Id: Iee32f18440ff955d13ed85b273e97cbd540721fc
This commit is contained in:
Griffin Millender 2016-10-07 18:16:06 -05:00 committed by Luca Stefani
parent 1b19f16eb7
commit 67ddf37281
39 changed files with 87 additions and 87 deletions

52
bootanimation/Android.mk Normal file
View file

@ -0,0 +1,52 @@
#
# Copyright (C) 2016 The CyanogenMod Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
define build-bootanimation
sh vendor/cm/bootanimation/generate-bootanimation.sh \
$(TARGET_SCREEN_WIDTH) \
$(TARGET_SCREEN_HEIGHT) \
$(TARGET_BOOTANIMATION_HALF_RES)
endef
TARGET_GENERATED_BOOTANIMATION := $(TARGET_OUT_INTERMEDIATES)/BOOTANIMATION/bootanimation.zip
$(TARGET_GENERATED_BOOTANIMATION):
@echo "Building bootanimation"
$(build-bootanimation)
ifeq ($(TARGET_BOOTANIMATION),)
TARGET_BOOTANIMATION := $(TARGET_GENERATED_BOOTANIMATION)
ifeq ($(shell command -v convert),)
$(info **********************************************)
$(info The boot animation could not be generated as)
$(info ImageMagick is not installed in your system.)
$(info $(space))
$(info Please install ImageMagick from this website:)
$(info https://imagemagick.org/script/binary-releases.php)
$(info **********************************************)
$(error stop)
endif
endif
include $(CLEAR_VARS)
LOCAL_MODULE := bootanimation.zip
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/media
include $(BUILD_SYSTEM)/base_rules.mk
$(LOCAL_BUILT_MODULE): $(TARGET_BOOTANIMATION)
@mkdir -p $(dir $@)
@cp $(TARGET_BOOTANIMATION) $@

3
bootanimation/desc.txt Normal file
View file

@ -0,0 +1,3 @@
c 1 0 part0
c 0 0 part1
c 1 0 part2

View file

@ -0,0 +1,32 @@
#!/bin/bash
WIDTH="$1"
HEIGHT="$2"
HALF_RES="$3"
OUT="$ANDROID_PRODUCT_OUT/obj/BOOTANIMATION"
if [ "$HEIGHT" -lt "$WIDTH" ]; then
SIZE="$HEIGHT"
else
SIZE="$WIDTH"
fi
if [ "$HALF_RES" = "true" ]; then
IMAGESIZE=$(expr $SIZE / 2)
else
IMAGESIZE="$SIZE"
fi
RESOLUTION=""$IMAGESIZE"x"$IMAGESIZE""
mkdir -p $ANDROID_PRODUCT_OUT/obj/BOOTANIMATION/bootanimation/part{0..2}
tar xfp "vendor/cm/bootanimation/bootanimation.tar" --to-command="convert - -resize '$RESOLUTION' \"png8:$OUT/bootanimation/\$TAR_FILENAME\""
# Create desc.txt
echo "$SIZE" "$SIZE" 30 > "$OUT/bootanimation/desc.txt"
cat "vendor/cm/bootanimation/desc.txt" >> "$OUT/bootanimation/desc.txt"
# Create bootanimation.zip
cd "$OUT/bootanimation"
zip -qr0 "$OUT/bootanimation.zip" .

View file

@ -1,37 +1,5 @@
PRODUCT_BRAND ?= cyanogenmod
ifneq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
# determine the smaller dimension
TARGET_BOOTANIMATION_SIZE := $(shell \
if [ "$(TARGET_SCREEN_WIDTH)" -lt "$(TARGET_SCREEN_HEIGHT)" ]; then \
echo $(TARGET_SCREEN_WIDTH); \
else \
echo $(TARGET_SCREEN_HEIGHT); \
fi )
# get a sorted list of the sizes
bootanimation_sizes := $(subst .zip,,$(shell ls -1 vendor/cm/prebuilt/common/bootanimation | sort -rn))
# find the appropriate size and set
define check_and_set_bootanimation
$(eval TARGET_BOOTANIMATION_NAME := $(shell \
if [ -z "$(TARGET_BOOTANIMATION_NAME)" ]; then \
if [ "$(1)" -le "$(TARGET_BOOTANIMATION_SIZE)" ]; then \
echo $(1); \
exit 0; \
fi;
fi;
echo $(TARGET_BOOTANIMATION_NAME); ))
endef
$(foreach size,$(bootanimation_sizes), $(call check_and_set_bootanimation,$(size)))
ifeq ($(TARGET_BOOTANIMATION_HALF_RES),true)
PRODUCT_BOOTANIMATION := vendor/cm/prebuilt/common/bootanimation/halfres/$(TARGET_BOOTANIMATION_NAME).zip
else
PRODUCT_BOOTANIMATION := vendor/cm/prebuilt/common/bootanimation/$(TARGET_BOOTANIMATION_NAME).zip
endif
endif
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
ifeq ($(PRODUCT_GMS_CLIENTID_BASE),)

View file

@ -8,9 +8,4 @@ PRODUCT_PACKAGES += \
# Include CM LatinIME dictionaries
PRODUCT_PACKAGE_OVERLAYS += vendor/cm/overlay/dictionaries
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/480.zip:system/media/bootanimation.zip
endif
$(call inherit-product, vendor/cm/config/telephony.mk)

View file

@ -7,8 +7,3 @@ PRODUCT_PACKAGES += \
# Include CM LatinIME dictionaries
PRODUCT_PACKAGE_OVERLAYS += vendor/cm/overlay/dictionaries
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
endif

View file

@ -1,7 +1,2 @@
# Inherit common CM stuff
$(call inherit-product, vendor/cm/config/common_full.mk)
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
endif

View file

@ -4,9 +4,4 @@ $(call inherit-product, vendor/cm/config/common_mini.mk)
PRODUCT_PACKAGES += \
LatinIME
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/320.zip:system/media/bootanimation.zip
endif
$(call inherit-product, vendor/cm/config/telephony.mk)

View file

@ -4,8 +4,3 @@ $(call inherit-product, vendor/cm/config/common_mini.mk)
# Required CM packages
PRODUCT_PACKAGES += \
LatinIME
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
endif

View file

@ -1,7 +1,2 @@
# Inherit common CM stuff
$(call inherit-product, vendor/cm/config/common_mini.mk)
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
endif

View file

@ -1,25 +0,0 @@
#!/bin/sh
HALF_RES_RESOLUTIONS="240 320 360 480 540 600 720 768 800 1080 1200 1440 1536 1600"
for i in $HALF_RES_RESOLUTIONS; do
rm -f $i.zip
mkdir $i
cd $i
if [ -f ../../$(($i/2)).zip ]; then
# use the existing scaled images
echo "Using existing half-scale images instead of scaling from $i px"
unzip ../../$(($i/2)).zip
rm -f desc.txt
unzip ../../$i.zip desc.txt
else
unzip ../../$i.zip
for j in */*.[pP][nN][gG]; do
convert $j -resize 50% tmp.png
mv tmp.png $j
done
fi
zip -r0 ../$i.zip .
cd ..
rm -rf $i
done