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 | |
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
-rw-r--r-- | desktop/browser.c | 27 | ||||
-rw-r--r-- | desktop/thumbnail.c | 16 | ||||
-rw-r--r-- | render/html_redraw.c | 10 |
3 files changed, 34 insertions, 19 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 */ diff --git a/desktop/thumbnail.c b/desktop/thumbnail.c index ce36fdf1d..5407b60bb 100644 --- a/desktop/thumbnail.c +++ b/desktop/thumbnail.c @@ -26,6 +26,7 @@ #include "content/content.h" #include "content/hlcache.h" #include "desktop/browser.h" +#include "desktop/knockout.h" #include "desktop/options.h" #include "desktop/plotters.h" #include "desktop/thumbnail.h" @@ -38,9 +39,13 @@ bool thumbnail_redraw(struct hlcache_handle *content, { struct rect clip; float scale; + bool plot_ok = true; assert(content); + if (plot.option_knockout) + knockout_plot_start(&plot); + /* No selection */ current_redraw_browser = NULL; @@ -53,15 +58,20 @@ bool thumbnail_redraw(struct hlcache_handle *content, plot.clip(&clip); /* Plot white background */ - plot.rectangle(clip.x0, clip.y0, clip.x1, clip.y1, + plot_ok &= plot.rectangle(clip.x0, clip.y0, clip.x1, clip.y1, plot_style_fill_white); /* Find the scale we're using */ scale = thumbnail_get_redraw_scale(content, width); /* Render the content */ - return content_redraw(content, 0, 0, width, height, &clip, scale, - 0xFFFFFF); + plot_ok &= content_redraw(content, 0, 0, width, height, &clip, scale, + 0xFFFFFF); + + if (plot.option_knockout) + knockout_plot_end(); + + return plot_ok; } diff --git a/render/html_redraw.c b/render/html_redraw.c index 7a24acc4e..383bf287e 100644 --- a/render/html_redraw.c +++ b/render/html_redraw.c @@ -37,7 +37,6 @@ #include "css/utils.h" #include "desktop/gui.h" #include "desktop/plotters.h" -#include "desktop/knockout.h" #include "desktop/selection.h" #include "desktop/textinput.h" #include "desktop/options.h" @@ -116,7 +115,7 @@ bool html_redraw(struct content *c, int x, int y, float scale, colour background_colour) { struct box *box; - bool result = true, want_knockout; + bool result = true; bool select, select_only; plot_style_t pstyle_fill_bg = { .fill_type = PLOT_OP_TYPE_SOLID, @@ -126,10 +125,6 @@ bool html_redraw(struct content *c, int x, int y, box = c->data.html.layout; assert(box); - want_knockout = plot.option_knockout; - if (want_knockout) - knockout_plot_start(&plot); - /* The select menu needs special treating because, when opened, it * reaches beyond its layout box. */ @@ -174,9 +169,6 @@ bool html_redraw(struct content *c, int x, int y, x + menu_x, y + menu_y, current_redraw_browser->scale, clip); } - - if (want_knockout) - knockout_plot_end(); return result; |