desktop_animation.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #include <gui/icon.h>
  5. typedef struct DesktopAnimation DesktopAnimation;
  6. typedef struct ActiveAnimation ActiveAnimation;
  7. typedef struct BasicAnimation BasicAnimation;
  8. typedef enum {
  9. DesktopAnimationStateBasic,
  10. DesktopAnimationStateActive,
  11. DesktopAnimationStateLevelUpIsPending,
  12. DesktopAnimationStateSDEmpty,
  13. DesktopAnimationStateSDEmptyURL,
  14. DesktopAnimationStateSDCorrupted,
  15. } DesktopAnimationState;
  16. struct BasicAnimation {
  17. const Icon* icon;
  18. uint16_t duration; // sec
  19. uint16_t active_cooldown;
  20. uint8_t weight;
  21. bool black_status_bar;
  22. uint16_t butthurt_level_mask;
  23. };
  24. struct ActiveAnimation {
  25. const Icon* icon;
  26. bool black_status_bar;
  27. uint16_t duration; // sec
  28. };
  29. typedef struct {
  30. const BasicAnimation* basic;
  31. const ActiveAnimation* active;
  32. } PairedAnimation;
  33. typedef void (*AnimationChangedCallback)(void*);
  34. DesktopAnimation* desktop_animation_alloc(void);
  35. void desktop_animation_free(DesktopAnimation*);
  36. void desktop_animation_activate(DesktopAnimation* instance);
  37. void desktop_animation_set_animation_changed_callback(
  38. DesktopAnimation* instance,
  39. AnimationChangedCallback callback,
  40. void* context);
  41. DesktopAnimationState desktop_animation_handle_right(DesktopAnimation* animation);
  42. void desktop_animation_start_oneshot_levelup(DesktopAnimation* animation);
  43. const Icon*
  44. desktop_animation_get_animation(DesktopAnimation* animation, bool* status_bar_background_black);
  45. const Icon* desktop_animation_get_oneshot_frame(DesktopAnimation* animation);
  46. void desktop_start_new_idle_animation(DesktopAnimation* animation);