mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-12-20 17:53:20 +00:00
3ab9112c21
* Fix lock screen menu * Fix pin setup in lock menu * Desktop GUI layer on FS, black status bar * Desktop: fix spelling * Fix first start screen * Fix status bar drawing Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
59 lines
1.6 KiB
C
59 lines
1.6 KiB
C
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <gui/icon.h>
|
|
|
|
typedef struct DesktopAnimation DesktopAnimation;
|
|
|
|
typedef struct ActiveAnimation ActiveAnimation;
|
|
typedef struct BasicAnimation BasicAnimation;
|
|
|
|
typedef enum {
|
|
DesktopAnimationStateBasic,
|
|
DesktopAnimationStateActive,
|
|
DesktopAnimationStateLevelUpIsPending,
|
|
DesktopAnimationStateSDEmpty,
|
|
DesktopAnimationStateSDEmptyURL,
|
|
DesktopAnimationStateSDCorrupted,
|
|
} DesktopAnimationState;
|
|
|
|
struct BasicAnimation {
|
|
const Icon* icon;
|
|
uint16_t duration; // sec
|
|
uint16_t active_cooldown;
|
|
uint8_t weight;
|
|
bool black_status_bar;
|
|
uint16_t butthurt_level_mask;
|
|
};
|
|
|
|
struct ActiveAnimation {
|
|
const Icon* icon;
|
|
bool black_status_bar;
|
|
uint16_t duration; // sec
|
|
};
|
|
|
|
typedef struct {
|
|
const BasicAnimation* basic;
|
|
const ActiveAnimation* active;
|
|
} PairedAnimation;
|
|
|
|
typedef void (*AnimationChangedCallback)(void*);
|
|
|
|
DesktopAnimation* desktop_animation_alloc(void);
|
|
void desktop_animation_free(DesktopAnimation*);
|
|
void desktop_animation_activate(DesktopAnimation* instance);
|
|
void desktop_animation_set_animation_changed_callback(
|
|
DesktopAnimation* instance,
|
|
AnimationChangedCallback callback,
|
|
void* context);
|
|
|
|
DesktopAnimationState desktop_animation_handle_right(DesktopAnimation* animation);
|
|
|
|
void desktop_animation_start_oneshot_levelup(DesktopAnimation* animation);
|
|
|
|
const Icon*
|
|
desktop_animation_get_animation(DesktopAnimation* animation, bool* status_bar_background_black);
|
|
const Icon* desktop_animation_get_oneshot_frame(DesktopAnimation* animation);
|
|
|
|
void desktop_start_new_idle_animation(DesktopAnimation* animation);
|