vs solution, animations, some warnings fixed
This commit is contained in:
commit
1b31faa7ee
115 files changed
+81650
No files matched your search
@@ -0,0 +1,101 @@
|
||||
// compositor.h
|
||||
#ifndef COMPOSITOR_H
|
||||
#define COMPOSITOR_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
// Animation types
|
||||
enum animation_type_t {
|
||||
ANIM_NONE = 0,
|
||||
ANIM_MOVE,
|
||||
ANIM_FADE,
|
||||
ANIM_SCALE,
|
||||
ANIM_MOVE_FADE // Combined animation
|
||||
};
|
||||
|
||||
// Easing functions
|
||||
enum easing_t {
|
||||
EASE_LINEAR = 0,
|
||||
EASE_IN_QUAD,
|
||||
EASE_OUT_QUAD,
|
||||
EASE_IN_OUT_QUAD,
|
||||
EASE_IN_CUBIC,
|
||||
EASE_OUT_CUBIC,
|
||||
EASE_IN_OUT_CUBIC
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
|
||||
typedef struct compositor_t compositor_t;
|
||||
|
||||
// Initialize compositor with given dimensions
|
||||
compositor_t* compositor_init(uint32_t width, uint32_t height);
|
||||
|
||||
// Destroy compositor and free resources
|
||||
void compositor_destroy(compositor_t* comp);
|
||||
|
||||
// Insert element, returns unique ID
|
||||
uint32_t compositor_insert(compositor_t* comp,
|
||||
const uint32_t* fb,
|
||||
uint32_t fb_width,
|
||||
uint32_t fb_height,
|
||||
int32_t x, int32_t y,
|
||||
int32_t z_order, float scale = 1.0f);
|
||||
|
||||
// Remove element by ID
|
||||
void compositor_remove(compositor_t* comp, uint32_t id);
|
||||
|
||||
// AIO Update element properties
|
||||
void compositor_update(compositor_t* comp, uint32_t id,
|
||||
int32_t x, int32_t y,
|
||||
int32_t z_order, float scale,
|
||||
bool visible); // holy clusterfuck
|
||||
|
||||
// Individual setters
|
||||
void compositor_set_position(compositor_t* comp, uint32_t id,
|
||||
int32_t x, int32_t y);
|
||||
|
||||
void compositor_set_zorder(compositor_t* comp, uint32_t id,
|
||||
int32_t z_order);
|
||||
|
||||
void compositor_set_visible(compositor_t* comp, uint32_t id,
|
||||
bool visible);
|
||||
|
||||
void compositor_set_scale(compositor_t* comp, uint32_t id,
|
||||
float scale);
|
||||
|
||||
// Advances all animations by a given time delta.
|
||||
void compositor_tick(compositor_t* comp, float delta_time_sec);
|
||||
|
||||
// Instantly sets the element-wide alpha.
|
||||
void compositor_set_alpha(compositor_t* comp, uint32_t id, float alpha);
|
||||
|
||||
// Starts a "slide" animation on an element.
|
||||
void compositor_animate_move(compositor_t* comp, uint32_t id,
|
||||
int32_t to_x, int32_t to_y,
|
||||
float duration_sec, easing_t easing);
|
||||
|
||||
// Starts a "fade" or "dissolve" animation on an element.
|
||||
void compositor_animate_fade(compositor_t* comp, uint32_t id,
|
||||
float to_alpha,
|
||||
float duration_sec, easing_t easing);
|
||||
|
||||
// Starts a "scale" animation on an element.
|
||||
void compositor_animate_scale(compositor_t* comp, uint32_t id,
|
||||
float to_scale,
|
||||
float duration_sec, easing_t easing);
|
||||
|
||||
// Compose all visible elements and return framebuffer pointer
|
||||
const uint32_t* compositor_compose(compositor_t* comp);
|
||||
|
||||
void compositor_mark_content_dirty(compositor_t* comp, uint32_t id);
|
||||
void compositor_mark_all_dirty(compositor_t* comp);
|
||||
|
||||
// Returns the last error message set for this compositor instance.
|
||||
// Returns nullptr if no error has occurred.
|
||||
const char* compositor_get_last_error(compositor_t* comp);
|
||||
|
||||
}
|
||||
|
||||
#endif // COMPOSITOR_H
|
||||
Reference in new issue
Block a user