diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2011-02-21 14:48:55 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2011-02-21 14:48:55 +0000 |
commit | cd40c260b9cecbe9d658a00e231aa4d82734e22d (patch) | |
tree | c32114f6cad7f296e96fdd23ed35d3ea30606873 /desktop/browser.c | |
parent | 1b5d9f07c8877121ecaa1391857ee6f130cb6205 (diff) | |
download | netsurf-cd40c260b9cecbe9d658a00e231aa4d82734e22d.tar.gz netsurf-cd40c260b9cecbe9d658a00e231aa4d82734e22d.tar.bz2 |
Remove knockout from html_redraw, and use it in browser_window_redraw and thumbnail_redraw.
svn path=/trunk/netsurf/; revision=11746
Diffstat (limited to 'desktop/browser.c')
-rw-r--r-- | desktop/browser.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index 351b327c6..1f536fe17 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -48,6 +48,7 @@ #include "desktop/history_core.h" #include "desktop/hotlist.h" #include "desktop/gui.h" +#include "desktop/knockout.h" #include "desktop/options.h" #include "desktop/selection.h" #include "desktop/textinput.h" @@ -94,20 +95,26 @@ bool browser_window_redraw(struct browser_window *bw, int x, int y, { int width = 0; int height = 0; + bool plot_ok = true; if (bw == NULL) { LOG(("NULL browser window")); return false; } - plot.clip(clip); - if (bw->current_content == NULL) { + /* Browser window has no content, render blank fill */ + plot.clip(clip); return plot.rectangle(clip->x0, clip->y0, clip->x1, clip->y1, plot_style_fill_white); - } + /* Browser window has content */ + if (plot.option_knockout) + knockout_plot_start(&plot); + + plot.clip(clip); + if (content_get_type(bw->current_content) != CONTENT_HTML) { /* Set render area according to scale */ width = content_get_width(bw->current_content) * bw->scale; @@ -115,12 +122,18 @@ bool browser_window_redraw(struct browser_window *bw, int x, int y, /* Non-HTML may not fill viewport to extents, so plot white * background fill */ - plot.rectangle(clip->x0, clip->y0, clip->x1, clip->y1, - plot_style_fill_white); + plot_ok &= plot.rectangle(clip->x0, clip->y0, + clip->x1, clip->y1, plot_style_fill_white); } - return content_redraw(bw->current_content, x, y, width, height, - clip, bw->scale, 0xFFFFFF); + /* Render the content */ + plot_ok &= content_redraw(bw->current_content, x, y, width, height, + clip, bw->scale, 0xFFFFFF); + + if (plot.option_knockout) + knockout_plot_end(); + + return plot_ok; } /* exported interface, documented in browser.h */ |