From 47bd2d31c60a01d7af37c8cd9757403d9380edfc Mon Sep 17 00:00:00 2001 From: Daniel Bernard Date: Sun, 7 Oct 2018 20:32:29 -0500 Subject: [PATCH] Refactored power-related code, added drawIcon -Removed unneeded white charge icon -Added common power interface --- Makefile.pc | 9 +-- common/common.h | 1 + common/menu.c | 73 ++++++------------ common/power.h | 8 ++ ...rging_icon_black.bin => charging_icon.bin} | Bin data/charging_icon_white.bin | Bin 158720 -> 0 bytes nx_main/main.c | 3 +- nx_main/nx_power.c | 38 +++++++++ pc_main/pc_power.c | 15 ++++ ...rging_icon_black.png => charging_icon.png} | Bin resources/charging_icon_white.png | Bin 4019 -> 0 bytes 11 files changed, 90 insertions(+), 57 deletions(-) create mode 100644 common/power.h rename data/{charging_icon_black.bin => charging_icon.bin} (100%) delete mode 100644 data/charging_icon_white.bin create mode 100644 nx_main/nx_power.c create mode 100644 pc_main/pc_power.c rename resources/{charging_icon_black.png => charging_icon.png} (100%) delete mode 100644 resources/charging_icon_white.png diff --git a/Makefile.pc b/Makefile.pc index 1e28197..78a9870 100644 --- a/Makefile.pc +++ b/Makefile.pc @@ -26,7 +26,7 @@ test : pc_main/main.cpp pc_main/pc_launch.c \ build_pc/invalid_icon.bin.o build_pc/folder_icon.bin.o \ build_pc/hbmenu_logo_light.bin.o build_pc/hbmenu_logo_dark.bin.o \ build_pc/theme_icon_dark.bin.o build_pc/theme_icon_light.bin.o \ - build_pc/charging_icon_black.bin.o build_pc/charging_icon_white.bin.o \ + build_pc/charging_icon.bin.o \ #build_pc/tahoma24.o build_pc/tahoma12.o build_pc/interuimedium20.o build_pc/interuimedium30.o build_pc/interuiregular14.o build_pc/interuiregular18.o gcc -Wall -O2 -g -DVERSION=\"v$(APP_VERSION)\" $(EXTRA_CFLAGS) `pkg-config freetype2 --cflags` $^ -lsfml-graphics -lsfml-window -lsfml-system -lstdc++ `pkg-config freetype2 --libs` -lm -lz -lconfig -lturbojpeg $(EXTRA_LDFLAGS) -I. -iquote $(DEVKITPRO)/libnx/include -Ibuild_pc -g -o $@ @@ -90,12 +90,7 @@ build_pc/theme_icon_dark.bin.o : data/theme_icon_dark.bin @echo $(notdir $<) @$(bin2o) -build_pc/charging_icon_black.bin.o : data/charging_icon_black.bin - mkdir -p $(dir $@) - @echo $(notdir $<) - @$(bin2o) - -build_pc/charging_icon_white.bin.o : data/charging_icon_white.bin +build_pc/charging_icon.bin.o : data/charging_icon.bin mkdir -p $(dir $@) @echo $(notdir $<) @$(bin2o) diff --git a/common/common.h b/common/common.h index 77e277f..3f5c9c7 100644 --- a/common/common.h +++ b/common/common.h @@ -58,6 +58,7 @@ typedef union { #include "math.h" #include "theme.h" #include "message-box.h" +#include "power.h" void menuStartupPath(void); void menuStartup(void); diff --git a/common/menu.c b/common/menu.c index 92ea8f4..95a1f2c 100644 --- a/common/menu.c +++ b/common/menu.c @@ -6,8 +6,7 @@ #include "folder_icon_bin.h" #include "theme_icon_dark_bin.h" #include "theme_icon_light_bin.h" -#include "charging_icon_black_bin.h" -#include "charging_icon_white_bin.h" +#include "charging_icon_bin.h" char rootPathBase[PATH_MAX]; char rootPath[PATH_MAX+8]; @@ -109,6 +108,21 @@ static void drawImage(int x, int y, int width, int height, const uint8_t *image, } } +//Draws an RGBA8888 image masked by the passed color. +static void drawIcon(int x, int y, int width, int height, const uint8_t *image, color_t color) { + int tmpx, tmpy; + int pos; + color_t current_color; + + for (tmpy=0; tmpy 100) ? 100 : batteryCharge; - #ifdef __SWITCH__ - if (psmInitialized) - { - psmGetBatteryChargePercentage(&batteryCharge); - psmGetChargerType(&chargeType); - } - #else - batteryCharge = 100; - #endif - - sprintf(chargeString, "%d%%", (int)batteryCharge); + sprintf(chargeString, "%d%%", batteryCharge); int tmpX = GetTextXCoordinate(interuiregular14, 1180, chargeString, 'r'); DrawText(interuiregular14, tmpX, 0 + 47 + 10 + 21, themeCurrent.textColor, chargeString); - - if (chargeType > (ChargerType)ChargerType_None) - drawImage(tmpX - 20, 0 + 47 + 10 + 5, 9, 15, charging_icon_small, IMAGE_MODE_RGBA32); + if (isCharging) + drawIcon(tmpX - 20, 0 + 47 + 10 + 5, 9, 15, charging_icon_small, themeCurrent.textColor); } void drawBackBtn(menu_s* menu, bool emptyDir) { diff --git a/common/power.h b/common/power.h new file mode 100644 index 0000000..1815f0c --- /dev/null +++ b/common/power.h @@ -0,0 +1,8 @@ +#pragma once +#include "common.h" + +void powerInit(void); + +void powerGetDetails(uint32_t *batteryCharge, bool *isCharging); + +void powerExit(void); \ No newline at end of file diff --git a/data/charging_icon_black.bin b/data/charging_icon.bin similarity index 100% rename from data/charging_icon_black.bin rename to data/charging_icon.bin diff --git a/data/charging_icon_white.bin b/data/charging_icon_white.bin deleted file mode 100644 index 2275e8ad4e52460060a6fb1c803ae5d439f8dcc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158720 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 +#include "../common/common.h" + +static bool psmInitialized; + + +void powerGetDetails(uint32_t *batteryCharge, bool *isCharging) { + ChargerType charger = ChargerType_None; + + *isCharging = false; + *batteryCharge = 0; + + if (psmInitialized) + { + psmGetBatteryChargePercentage(batteryCharge); + psmGetChargerType(&charger); + *isCharging = (charger > ChargerType_None); + } +} + +void powerInit(void) { + if (!psmInitialized) + { + Result rc = psmInitialize(); + if (R_SUCCEEDED(rc)) + { + psmInitialized = true; + } + } +} + +void powerExit(void) { + if (psmInitialized) + { + psmExit(); + psmInitialized = false; + } +} \ No newline at end of file diff --git a/pc_main/pc_power.c b/pc_main/pc_power.c new file mode 100644 index 0000000..42aa0e4 --- /dev/null +++ b/pc_main/pc_power.c @@ -0,0 +1,15 @@ +#include "../common/common.h" + + +void powerInit(void) { + +} + +void powerExit(void) { + +} + +void powerGetDetails(uint32_t *batteryCharge, bool *isCharging) + *isCharging = false; + *batteryCharge = 100; +} \ No newline at end of file diff --git a/resources/charging_icon_black.png b/resources/charging_icon.png similarity index 100% rename from resources/charging_icon_black.png rename to resources/charging_icon.png diff --git a/resources/charging_icon_white.png b/resources/charging_icon_white.png deleted file mode 100644 index f46c33cd20d7264b028130349696d8a2c4299f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4019 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 Bfs+6L