diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2009-12-04 11:12:07 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2009-12-04 11:12:07 +0000 |
commit | 0f3db39f79300a8354812050cf15e3e060e71442 (patch) | |
tree | f93bb8c724130c95108b392cb2bffda956ec3849 /src/cursor.c | |
parent | 936196d9965a1c75c015f915169dadd8ea64f35e (diff) | |
download | libnsfb-0f3db39f79300a8354812050cf15e3e060e71442.tar.gz libnsfb-0f3db39f79300a8354812050cf15e3e060e71442.tar.bz2 |
Improve cursor handling
Improve screen copy handling and API
svn path=/trunk/libnsfb/; revision=9714
Diffstat (limited to 'src/cursor.c')
-rw-r--r-- | src/cursor.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/cursor.c b/src/cursor.c index faa96b1..98bd07b 100644 --- a/src/cursor.c +++ b/src/cursor.c @@ -10,7 +10,6 @@ #include "nsfb_plot.h" #include "frontend.h" - bool nsfb_cursor_init(nsfb_t *nsfb) { if (nsfb->cursor != NULL) @@ -65,6 +64,10 @@ bool nsfb_cursor_loc_get(nsfb_t *nsfb, nsfb_bbox_t *loc) bool nsfb_cursor_plot(nsfb_t *nsfb, struct nsfb_cursor_s *cursor) { int sav_size; + nsfb_bbox_t sclip; /* saved clipping area */ + + nsfb->plotter_fns->get_clip(nsfb, &sclip); + nsfb->plotter_fns->set_clip(nsfb, NULL); cursor->savloc = cursor->loc; @@ -88,7 +91,32 @@ bool nsfb_cursor_plot(nsfb_t *nsfb, struct nsfb_cursor_s *cursor) cursor->bmp_height, cursor->bmp_stride, true); + + nsfb->plotter_fns->set_clip(nsfb, &sclip); + cursor->plotted = true; return true; } + +bool nsfb_cursor_clear(nsfb_t *nsfb, struct nsfb_cursor_s *cursor) +{ + nsfb_bbox_t sclip; /* saved clipping area */ + + nsfb->plotter_fns->get_clip(nsfb, &sclip); + nsfb->plotter_fns->set_clip(nsfb, NULL); + + nsfb->plotter_fns->bitmap(nsfb, + &cursor->savloc, + cursor->sav, + cursor->sav_width, + cursor->sav_height, + cursor->sav_width, + false); + + nsfb->plotter_fns->set_clip(nsfb, &sclip); + + cursor->plotted = false; + return true; + +} |