diff options
Diffstat (limited to 'atari/caret.c')
-rw-r--r-- | atari/caret.c | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/atari/caret.c b/atari/caret.c deleted file mode 100644 index 42a35a452..000000000 --- a/atari/caret.c +++ /dev/null @@ -1,129 +0,0 @@ -#include <stdbool.h> - -#include "desktop/plot_style.h" -#include "atari/plot/plot.h" -#include "atari/caret.h" - -extern struct s_vdi_sysinfo vdi_sysinfo; - -static void caret_restore_background(struct s_caret *c, VdiHdl vh, GRECT *clip); - -void caret_show(struct s_caret *caret, VdiHdl vh, GRECT *dimensions, GRECT *clip) -{ - GRECT visible, old_dim; - MFDB screen; - short pxy[8]; - - struct rect old_clip; - - return; - - - - plot_get_clip(&old_clip); - plot_get_dimensions(&old_dim); - - - // store background: - visible = *dimensions; - visible.g_x += clip->g_x; - visible.g_y += clip->g_y; - - if(!rc_intersect(clip, &visible)){ - printf("no isect...\n"); - return; - } - - - // TODO: do not alloc / free on each move... - if (caret->background.fd_addr != NULL) { - //caret_restore_background(caret, vh, clip); - } - - plot_lock(); - plot_set_dimensions(clip->g_x, clip->g_y, clip->g_w, clip->g_h); - - caret->dimensions.g_x = dimensions->g_x; - caret->dimensions.g_y = dimensions->g_y; - caret->dimensions.g_w = visible.g_w; - caret->dimensions.g_h = visible.g_h; - - dbg_grect("clip", clip); - dbg_grect("visible", &visible); - // TODO: do not alloc / free on every redraw... - init_mfdb(vdi_sysinfo.scr_bpp, visible.g_w, visible.g_h, 0, - &caret->background); - init_mfdb(0, visible.g_w, visible.g_h, 0, &screen); - pxy[0] = visible.g_x;
- pxy[1] = visible.g_y;
- pxy[2] = visible.g_x + visible.g_w;
- pxy[3] = visible.g_y + visible.g_h;
- pxy[4] = 0;
- pxy[5] = 0;
- pxy[6] = visible.g_w;
- pxy[7] = visible.g_h; - vro_cpyfm (vh, S_ONLY, pxy, &screen, &caret->background); - - plot_line(dimensions->g_x, dimensions->g_y, dimensions->g_x, - dimensions->g_y + dimensions->g_h, plot_style_caret); - - plot_set_dimensions(old_clip.x0, old_clip.y0, old_clip.x1, old_clip.y1); - plot_clip(&old_clip); - - plot_unlock(); - caret->visible = true; -} - -void caret_hide(struct s_caret *caret, VdiHdl vh, GRECT *clip) -{ - struct rect old_clip; - GRECT old_dim; - - plot_lock(); - plot_get_clip(&old_clip); - plot_get_dimensions(&old_dim); - plot_set_dimensions(clip->g_x, clip->g_y, clip->g_w, clip->g_h); - caret_restore_background(caret, vh, clip); - plot_set_dimensions(old_clip.x0, old_clip.y0, old_clip.x1, old_clip.y1); - plot_clip(&old_clip); - plot_unlock(); - caret->visible = false; -} - -static void caret_restore_background(struct s_caret *caret, VdiHdl vh, GRECT *clip) -{ - MFDB screen; - GRECT visible; - short pxy[8]; - - visible = caret->dimensions; - visible.g_x += clip->g_x; - visible.g_y += clip->g_y; - - dbg_grect("restore ", &visible); - - if(!rc_intersect(clip, &visible)){ - goto exit; - } - - // TODO: check isect - - // restore mfdb - - init_mfdb(0, caret->dimensions.g_w, caret->dimensions.g_h, 0, &screen); - pxy[0] = 0; - pxy[1] = 0;
- pxy[2] = caret->dimensions.g_w; - pxy[3] = caret->dimensions.g_h;
- pxy[4] = clip->g_x + caret->dimensions.g_x;
- pxy[5] = clip->g_y + caret->dimensions.g_y;
- pxy[6] = pxy[2];
- pxy[7] = pxy[3]; - vro_cpyfm(vh, S_ONLY, pxy, &caret->background, &screen); - // exit: - // TODO: do not alloc / free on every redraw... - -exit: - free(caret->background.fd_addr); - caret->background.fd_addr = NULL; -} |