#ifndef ANIMATIONFUNCTIONS_H #define ANIMATIONFUNCTIONS_H #include #include "wordclock_constants.h" enum Direction { RIGHT, LEFT, UP, DOWN }; Direction next_direction(Direction dir, int d); int random_snake(bool init, const uint8_t len, const uint32_t color, int numSteps); int random_tetris(bool init); int draw_heart_animation(void); int draw_spiral(bool init, bool empty, uint8_t size); void show_digital_clock(uint8_t hours, uint8_t minutes, uint32_t color); #define HEART_ANIMATION_FRAMES 5 const uint32_t heart_frames_colormap_11x11[HEART_ANIMATION_FRAMES][MATRIX_WIDTH][MATRIX_HEIGHT] = { { { 0x005b000a, 0x002d0304, 0x000f0002, 0x00090001, 0x00350306, 0x00530103, 0x00310407, 0x000a0104, 0x00090001, 0x00300306, 0x00570006, }, { 0x00330206, 0x00090000, 0x00ce0404, 0x00d70300, 0x000f0008, 0x00350306, 0x000b0100, 0x00c70600, 0x00d40201, 0x00080202, 0x00390006, }, { 0x000a0000, 0x00db0503, 0x00940906, 0x00950a03, 0x00e20100, 0x000e0008, 0x00d00000, 0x00960806, 0x00940605, 0x00d50600, 0x000d0103, }, { 0x00da010c, 0x00940700, 0x00580000, 0x00570104, 0x00940a0a, 0x00d40100, 0x00940a08, 0x005a0006, 0x005b0005, 0x009d0305, 0x00da0300, }, { 0x00d70707, 0x00910a06, 0x00560202, 0x00570207, 0x00580007, 0x00900a09, 0x00540109, 0x005a0004, 0x005b0007, 0x00910a04, 0x00d40201, }, { 0x00da0207, 0x0092070c, 0x005b0002, 0x00330005, 0x00300405, 0x00580308, 0x002e0503, 0x002c0404, 0x005a0004, 0x00970609, 0x00d80202, }, { 0x00040402, 0x00dc0600, 0x008f0a0b, 0x00590006, 0x00310504, 0x00320406, 0x00330507, 0x00620008, 0x00960709, 0x00dd0301, 0x000d0304, }, { 0x00330205, 0x00090100, 0x00d8020a, 0x00930906, 0x00570209, 0x00330205, 0x00580007, 0x00980808, 0x00d60200, 0x000d0003, 0x00340205, }, { 0x00560008, 0x00340306, 0x00100001, 0x00d40a00, 0x009e0507, 0x005c0007, 0x009e0508, 0x00e50000, 0x000e0001, 0x00310305, 0x00590004, }, { 0x00a00606, 0x00580007, 0x00350304, 0x00100001, 0x00d40404, 0x00940902, 0x00d50407, 0x00000205, 0x00350304, 0x00560108, 0x00900906, }, { 0x00d90104, 0x008d080b, 0x0060000b, 0x00340106, 0x00050100, 0x00e00106, 0x000f0000, 0x00370003, 0x00570104, 0x00950a07, 0x00e10007, }, }, { { 0x00310304, 0x000b0001, 0x00da0308, 0x00d90101, 0x000b0001, 0x00310304, 0x000b0001, 0x00d60101, 0x00d60101, 0x000b0001, 0x00310304, }, { 0x000b0001, 0x00d90101, 0x00940808, 0x00940808, 0x00d60101, 0x000b0001, 0x00d60101, 0x00940808, 0x00940808, 0x00d60101, 0x000b0001, }, { 0x00d90101, 0x00940808, 0x00590005, 0x00590005, 0x00940808, 0x00d90101, 0x00940808, 0x00560004, 0x00590005, 0x00940808, 0x00d60101, }, { 0x00940808, 0x00590005, 0x00370803, 0x00310304, 0x00590005, 0x00940808, 0x00590005, 0x00310304, 0x00310304, 0x00590005, 0x00940808, }, { 0x00940808, 0x00590005, 0x002c0303, 0x00310304, 0x00310304, 0x00560004, 0x00310304, 0x00310304, 0x00310304, 0x00590005, 0x00940808, }, { 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x000b0001, 0x00310304, 0x000b0001, 0x00130102, 0x00310304, 0x00590005, 0x00940808, }, { 0x00d60101, 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x000b0001, 0x000b0001, 0x00310304, 0x00590005, 0x00940808, 0x00d90101, }, { 0x000b0001, 0x00d90802, 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x00310304, 0x00560004, 0x00940808, 0x00d90101, 0x000b0001, }, { 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00590005, 0x00310304, 0x00590005, 0x00940808, 0x00d90802, 0x000b0001, 0x00310304, }, { 0x00590005, 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00560004, 0x00940808, 0x00d60101, 0x000b0001, 0x00310304, 0x00560004, }, { 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x00d60101, 0x00940808, 0x00d60101, 0x000b0001, 0x00310304, 0x00590005, 0x00940808, }, }, { { 0x000b0001, 0x00d90101, 0x00940808, 0x00940808, 0x00d90101, 0x000b0001, 0x00d90101, 0x00940808, 0x00940808, 0x00d90101, 0x000b0001, }, { 0x00d90101, 0x00940808, 0x00590005, 0x00590005, 0x00940808, 0x00d90101, 0x00940808, 0x00560004, 0x00560004, 0x00940808, 0x00d90101, }, { 0x00940808, 0x00590005, 0x002d0303, 0x00320508, 0x00590005, 0x00940808, 0x00590005, 0x002d0303, 0x00310304, 0x00560004, 0x00940808, }, { 0x00560004, 0x00320508, 0x000b0001, 0x000b0001, 0x00310304, 0x00590005, 0x002f0308, 0x000b0001, 0x000b0001, 0x002d0303, 0x00590005, }, { 0x00560004, 0x002d0303, 0x000b0001, 0x000b0001, 0x000b0001, 0x00320508, 0x000b0001, 0x000b0001, 0x000b0001, 0x002d0303, 0x00590005, }, { 0x00590005, 0x00310304, 0x000b0001, 0x00d40809, 0x00d90101, 0x000b0001, 0x00d90101, 0x00d90101, 0x000b0001, 0x003b0203, 0x00590005, }, { 0x00940808, 0x00590005, 0x002d0303, 0x000b0001, 0x00d90101, 0x00d40809, 0x00d90101, 0x000b0001, 0x002d0303, 0x00590005, 0x00940808, }, { 0x00d40809, 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x00d90101, 0x000b0001, 0x00320508, 0x00590005, 0x00940808, 0x00d90101, }, { 0x000b0001, 0x00d60101, 0x00940808, 0x005a0209, 0x002d0303, 0x000b0001, 0x00310304, 0x00560004, 0x00940808, 0x00d90101, 0x000b0001, }, { 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00590005, 0x00310304, 0x00590005, 0x00940808, 0x00d60101, 0x000b0001, 0x00310304, }, { 0x00560004, 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00590005, 0x00940808, 0x00d60101, 0x000b0001, 0x00310304, 0x00590005, }, }, { { 0x00d80802, 0x00940808, 0x00590004, 0x00590004, 0x00940808, 0x00d90101, 0x00940808, 0x00590004, 0x00590004, 0x00940808, 0x00d90101, }, { 0x00940808, 0x00560004, 0x00310304, 0x00310304, 0x00560004, 0x00940808, 0x00590004, 0x002a0309, 0x00310304, 0x00590004, 0x00940808, }, { 0x00590004, 0x00310304, 0x000b0001, 0x000b0001, 0x00310304, 0x00590004, 0x00310304, 0x000b0001, 0x000b0001, 0x00310304, 0x00560004, }, { 0x00350408, 0x000b0001, 0x00d80802, 0x00d60101, 0x000b0001, 0x00310304, 0x000b0001, 0x00d60101, 0x00d60101, 0x000b0001, 0x00310304, }, { 0x002c0303, 0x00130102, 0x00d60101, 0x00d60101, 0x00d80802, 0x000b0001, 0x00d90101, 0x00d60101, 0x00d80802, 0x000b0001, 0x00310304, }, { 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00940808, 0x00db0209, 0x00940808, 0x00940808, 0x00d60101, 0x000b0001, 0x00310304, }, { 0x00590004, 0x00310304, 0x000b0001, 0x00d80802, 0x00940808, 0x00940808, 0x00940808, 0x00d90101, 0x000b0001, 0x003b0303, 0x00560004, }, { 0x00940808, 0x00590004, 0x00350408, 0x000b0001, 0x00d90101, 0x00940808, 0x00d90101, 0x000b0001, 0x00310304, 0x00590004, 0x00940808, }, { 0x00d90101, 0x00940808, 0x00590004, 0x002e0804, 0x00130102, 0x00d60101, 0x000b0001, 0x00310304, 0x00590004, 0x00940808, 0x00d90101, }, { 0x000b0001, 0x00e10102, 0x00940808, 0x00590004, 0x002c0303, 0x000b0001, 0x003b0303, 0x00590004, 0x00940808, 0x00d90101, 0x000b0001, }, { 0x00310304, 0x000b0001, 0x00d80802, 0x00940808, 0x00560004, 0x00310304, 0x00590004, 0x00940808, 0x00d90101, 0x000b0001, 0x00310304, }, }, { { 0x00940808, 0x00590005, 0x00310304, 0x00310304, 0x00560004, 0x00940808, 0x00590005, 0x002c0303, 0x00310304, 0x00560004, 0x00940808, }, { 0x00560004, 0x00310304, 0x000b0001, 0x000b0001, 0x00310304, 0x00590005, 0x00310304, 0x000b0001, 0x000b0001, 0x00310304, 0x00590005, }, { 0x00310304, 0x000b0001, 0x00d90101, 0x00d90101, 0x000b0001, 0x002c0303, 0x000b0001, 0x00d90101, 0x00cf0804, 0x000b0001, 0x00310304, }, { 0x000b0001, 0x00d60101, 0x00940808, 0x00940808, 0x00e10102, 0x000b0001, 0x00d90101, 0x00940808, 0x00940808, 0x00d90101, 0x000b0001, }, { 0x000b0001, 0x00d90101, 0x00940808, 0x00940808, 0x00940808, 0x00d90101, 0x00940808, 0x00940808, 0x00940808, 0x00cf0804, 0x000b0001, }, { 0x000b0001, 0x00da0308, 0x00940808, 0x00590005, 0x00590005, 0x00940808, 0x00590005, 0x00590005, 0x00940808, 0x00d90101, 0x000b0001, }, { 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00590005, 0x00590005, 0x00560004, 0x00940808, 0x00d90101, 0x000b0001, 0x00310304, }, { 0x005a0109, 0x00310304, 0x000b0001, 0x00d90101, 0x00940808, 0x00560004, 0x00940808, 0x00cf0804, 0x000b0001, 0x00310304, 0x00590005, }, { 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x00e10102, 0x00940808, 0x00d60101, 0x000b0001, 0x00310304, 0x00590005, 0x00940808, }, { 0x00d90101, 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x00d90101, 0x00130102, 0x00310304, 0x00590005, 0x00940808, 0x00e10102, }, { 0x000b0001, 0x00d90101, 0x00940808, 0x00590005, 0x00310304, 0x000b0001, 0x002c0303, 0x00560004, 0x00940808, 0x00d90101, 0x00130102, }, }}; #endif /* ANIMATIONFUNCTIONS_H */