lineage: Rework bootanimation generation

Change-Id: Ib0b363c3e0545cb0c86dc69dd1a75f82dd777e59
diff --git a/bootanimation/Android.mk b/bootanimation/Android.mk
index 7eaf96c..b32e4b9 100644
--- a/bootanimation/Android.mk
+++ b/bootanimation/Android.mk
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2016 The CyanogenMod Project
-#               2017 The LineageOS Project
+#               2017-2019 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,18 +24,32 @@
     TARGET_SCREEN_HEIGHT := 1920
 endif
 
-define build-bootanimation
-    $(shell) vendor/lineage/bootanimation/generate-bootanimation.sh \
-    $(PRODUCT_OUT) \
-    $(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)
+$(TARGET_GENERATED_BOOTANIMATION): INTERMEDIATES := $(TARGET_OUT_INTERMEDIATES)/BOOTANIMATION
+$(TARGET_GENERATED_BOOTANIMATION): $(SOONG_ZIP)
+	@echo "Building bootanimation.zip"
+	@rm -rf $(dir $@)
+	@mkdir -p $(dir $@)
+	$(hide) tar xfp vendor/lineage/bootanimation/bootanimation.tar -C $(INTERMEDIATES)
+	$(hide) if [ $(TARGET_SCREEN_HEIGHT) -lt $(TARGET_SCREEN_WIDTH) ]; then \
+	    IMAGEWIDTH=$(TARGET_SCREEN_HEIGHT); \
+	else \
+	    IMAGEWIDTH=$(TARGET_SCREEN_WIDTH); \
+	fi; \
+	IMAGESCALEWIDTH=$$IMAGEWIDTH; \
+	IMAGESCALEHEIGHT=$$(expr $$IMAGESCALEWIDTH / 3); \
+	if [ "$(TARGET_BOOTANIMATION_HALF_RES)" = "true" ]; then \
+	    IMAGEWIDTH="$$(expr "$$IMAGEWIDTH" / 2)"; \
+	fi; \
+	IMAGEHEIGHT=$$(expr $$IMAGEWIDTH / 3); \
+	RESOLUTION="$$IMAGEWIDTH"x"$$IMAGEHEIGHT"; \
+	for part_cnt in 0 1 2 3 4; do \
+	    mkdir -p $(INTERMEDIATES)/part$$part_cnt; \
+	done; \
+	mogrify -resize $$RESOLUTION -colors 250 $(INTERMEDIATES)/*/*.png; \
+	echo "$$IMAGESCALEWIDTH $$IMAGESCALEHEIGHT 60" > $(INTERMEDIATES)/desc.txt; \
+	cat vendor/lineage/bootanimation/desc.txt >> $(INTERMEDIATES)/desc.txt
+	$(hide) $(SOONG_ZIP) -L 0 -o $(TARGET_GENERATED_BOOTANIMATION) -C $(INTERMEDIATES) -D $(INTERMEDIATES)
 
 ifeq ($(TARGET_BOOTANIMATION),)
     TARGET_BOOTANIMATION := $(TARGET_GENERATED_BOOTANIMATION)
@@ -59,5 +73,4 @@
 include $(BUILD_SYSTEM)/base_rules.mk
 
 $(LOCAL_BUILT_MODULE): $(TARGET_BOOTANIMATION)
-	@mkdir -p $(dir $@)
 	@cp $(TARGET_BOOTANIMATION) $@