From ff7cf937629933e782eb8103dadb8b5f27f14a4d Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Wed, 28 Nov 2012 21:30:24 +0100 Subject: Started refactoring of global redraw handling. --- atari/redrawslots.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'atari/redrawslots.c') diff --git a/atari/redrawslots.c b/atari/redrawslots.c index 069e6cc91..d2f74e4fb 100644 --- a/atari/redrawslots.c +++ b/atari/redrawslots.c @@ -23,10 +23,16 @@ void redraw_slots_init(struct s_redrw_slots * slots, short size) { + // TODO: allocate slots dynamically! slots->size = MIN( MAX_REDRW_SLOTS , size); slots->areas_used = 0; } +void redraw_slots_free(struct s_redrw_slots * slots) +{ + // TOOD: free areas... +} + static inline bool rect_intersect( struct rect * box1, struct rect * box2 ) { @@ -44,10 +50,19 @@ static inline bool rect_intersect( struct rect * box1, struct rect * box2 ) return true; } + + +void redraw_slot_schedule_grect(struct s_redrw_slots * slots, GRECT *area) +{ + redraw_slot_schedule(slots, area->g_x, area->g_y, + area->g_x + area->g_w, area->g_y + area->g_h); +} + /* - schedule redraw coords, coords are relative. + schedule redraw coords. */ -void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0, short x1, short y1) +void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0, + short x1, short y1) { int i; struct rect area; @@ -91,6 +106,15 @@ void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0, shor slots->areas[slots->size-1].x1 = MAX(slots->areas[i].x1, x1); slots->areas[slots->size-1].y1 = MAX(slots->areas[i].y1, y1); } -done: +done: return; } + +void redraw_slots_remove_area(struct s_redrw_slots * slots, int i) +{ + int x; + for(x = i+1; iareas_used; x++){ + slots->areas[x-1] = slots->areas[x]; + } + slots->areas_used--; +} -- cgit v1.2.3