summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2011-02-21 14:48:55 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2011-02-21 14:48:55 +0000
commitcd40c260b9cecbe9d658a00e231aa4d82734e22d (patch)
treec32114f6cad7f296e96fdd23ed35d3ea30606873 /desktop
parent1b5d9f07c8877121ecaa1391857ee6f130cb6205 (diff)
downloadnetsurf-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')
-rw-r--r--desktop/browser.c27
-rw-r--r--desktop/thumbnail.c16
2 files changed, 33 insertions, 10 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;
}