efl/src/lib/elementary/efl_ui_widget_scroll_manager.h

132 lines
2.9 KiB
C

#ifndef EFL_UI_WIDGET_SCROLL_MANAGER_H
#define EFL_UI_WIDGET_SCROLL_MANAGER_H
#include "Elementary.h"
typedef double (*Interpolator)(void *data, double progress);
typedef enum {
INTERP_LINEAR,
INTERP_ACCEL,
INTERP_DECEL,
} InterpType;
typedef struct _Efl_Ui_Scroll_Manager_Data
{
Evas_Coord x, y, w, h;
Evas_Coord wx, wy, ww, wh; /**< Last "wanted" geometry */
Evas_Object *obj;
Evas_Object *pan_obj;
Evas_Object *event_rect;
Evas_Object *parent;
Efl_Ui_Scrollbar_Mode hbar_mode, vbar_mode;
Ecore_Timer *hbar_timer, *vbar_timer;
Efl_Ui_Layout_Orientation block;
struct
{
Evas_Coord x, y;
Evas_Coord sx, sy;
struct
{
Evas_Coord x, y;
double timestamp;
} history[60];
double est_timestamp_diff;
double onhold_vx, onhold_vy;
double onhold_vxe, onhold_vye;
double onhold_tlast;
double last_time_x_wheel;
double last_time_y_wheel;
int hdir, vdir;
Evas_Coord hold_x, hold_y;
Ecore_Idle_Enterer *hold_enterer;
double dragged_began_timestamp;
Eina_Bool dragged : 1;
Eina_Bool dragged_began : 1;
Eina_Bool hold_animator : 1;
Eina_Bool onhold_animator : 1;
Eina_Bool last_hold_x_wheel : 1;
Eina_Bool last_hold_y_wheel : 1;
Eina_Bool dir_x : 1;
Eina_Bool dir_y : 1;
Eina_Bool scroll : 1;
Eina_Bool hold : 1;
Eina_Bool now : 1;
Eina_Bool want_reset : 1;
} down;
struct
{
Evas_Coord w, h;
Eina_Bool resized : 1;
} content_info;
struct
{
Evas_Coord x, y;
} step, page;
struct
{
struct
{
Evas_Coord start, end;
Eina_Bool animator;
Interpolator interp;
double start_t, dur;
} x, y;
} scrollto;
struct
{
struct
{
Evas_Coord p0, p1, p2;
double vel;
Eina_Bool animator;
double start_t;
double t01, t12;
} x, y;
} bounce;
double last_wheel_mul;
unsigned int last_wheel;
void *event_info;
double gravity_x, gravity_y;
Evas_Coord prev_cw, prev_ch;
Eina_Bool hbar_visible : 1;
Eina_Bool vbar_visible : 1;
Eina_Bool bounce_horiz : 1;
Eina_Bool bounce_vert : 1;
Eina_Bool is_mirrored : 1;
Eina_Bool bouncemey : 1;
Eina_Bool bouncemex : 1;
Eina_Bool freeze : 1;
Eina_Bool freeze_want : 1;
Eina_Bool hold : 1;
Eina_Bool match_content_w : 1;
Eina_Bool match_content_h : 1;
Eina_Bool loop_h : 1;
Eina_Bool loop_v : 1;
Eina_Bool scrolling : 1;
} Efl_Ui_Scroll_Manager_Data;
#endif