cm: Rework boot animation generation
Keep the largest bootanimation extracted and resize it at build-time. Change-Id: Iee32f18440ff955d13ed85b273e97cbd540721fc
This commit is contained in:
parent
b20aa05024
commit
5517e01a9e
52
bootanimation/Android.mk
Normal file
52
bootanimation/Android.mk
Normal 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) $@
|
Binary file not shown.
3
bootanimation/desc.txt
Normal file
3
bootanimation/desc.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
c 1 0 part0
|
||||||
|
c 0 0 part1
|
||||||
|
c 1 0 part2
|
32
bootanimation/generate-bootanimation.sh
Executable file
32
bootanimation/generate-bootanimation.sh
Executable 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" .
|
@ -1,38 +1,5 @@
|
|||||||
PRODUCT_BRAND ?= cyanogenmod
|
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 vendor/cm/prebuilt/common/bootanimation))
|
|
||||||
bootanimation_sizes := $(shell echo -e $(subst $(space),'\n',$(bootanimation_sizes)) | 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
|
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
|
||||||
|
|
||||||
ifeq ($(PRODUCT_GMS_CLIENTID_BASE),)
|
ifeq ($(PRODUCT_GMS_CLIENTID_BASE),)
|
||||||
|
@ -8,9 +8,4 @@ PRODUCT_PACKAGES += \
|
|||||||
# Include CM LatinIME dictionaries
|
# Include CM LatinIME dictionaries
|
||||||
PRODUCT_PACKAGE_OVERLAYS += vendor/cm/overlay/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)
|
$(call inherit-product, vendor/cm/config/telephony.mk)
|
||||||
|
@ -7,8 +7,3 @@ PRODUCT_PACKAGES += \
|
|||||||
|
|
||||||
# Include CM LatinIME dictionaries
|
# Include CM LatinIME dictionaries
|
||||||
PRODUCT_PACKAGE_OVERLAYS += vendor/cm/overlay/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
|
|
||||||
|
@ -1,7 +1,2 @@
|
|||||||
# Inherit common CM stuff
|
# Inherit common CM stuff
|
||||||
$(call inherit-product, vendor/cm/config/common_full.mk)
|
$(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
|
|
||||||
|
@ -4,9 +4,4 @@ $(call inherit-product, vendor/cm/config/common_mini.mk)
|
|||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
LatinIME
|
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)
|
$(call inherit-product, vendor/cm/config/telephony.mk)
|
||||||
|
@ -4,8 +4,3 @@ $(call inherit-product, vendor/cm/config/common_mini.mk)
|
|||||||
# Required CM packages
|
# Required CM packages
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
LatinIME
|
LatinIME
|
||||||
|
|
||||||
ifeq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
|
|
||||||
PRODUCT_COPY_FILES += \
|
|
||||||
vendor/cm/prebuilt/common/bootanimation/800.zip:system/media/bootanimation.zip
|
|
||||||
endif
|
|
||||||
|
@ -1,7 +1,2 @@
|
|||||||
# Inherit common CM stuff
|
# Inherit common CM stuff
|
||||||
$(call inherit-product, vendor/cm/config/common_mini.mk)
|
$(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
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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
|
|
Loading…
Reference in New Issue
Block a user