Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/d577a48bb7cce5f88904e86499906ade86809d8a
...commit
http://git.netsurf-browser.org/netsurf.git/commit/d577a48bb7cce5f88904e86499906ade86809d8a
...tree
http://git.netsurf-browser.org/netsurf.git/tree/d577a48bb7cce5f88904e86499906ade86809d8a
The branch, chris/palette-mapped-plotters has been updated
via d577a48bb7cce5f88904e86499906ade86809d8a (commit)
via 337b0f6724144800b9d226e1f949642ec200b511 (commit)
from 34154ebb99c9ce199e6c9c9ed5993e017023c697 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/netsurf.git/commitdiff/d577a48bb7cce5f88904e86499906ade86809d8a
commit d577a48bb7cce5f88904e86499906ade86809d8a
Author: Chris Young <[email protected]>
Commit: Chris Young <[email protected]>
Abstract pen obtain/release and structure so we can add these to a physical
browser window's list
diff --git a/amiga/gui.c b/amiga/gui.c
index ee15ee9..347fcde 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -2209,6 +2209,7 @@ void ami_switch_tab(struct gui_window_2 *gwin,bool redraw)
return;
}
+ ami_plot_release_pens(&g->shared->shared_pens);
ami_update_buttons(gwin);
ami_menu_update_disabled(gwin->bw->window, gwin->bw->current_content);
@@ -2574,6 +2575,8 @@ struct gui_window *gui_create_browser_window(struct
browser_window *bw,
return NULL;
}
+ NewList(&g->shared->shared_pens);
+
g->shared->scrollerhook.h_Entry = (void *)ami_scroller_hook;
g->shared->scrollerhook.h_Data = g->shared;
@@ -3182,6 +3185,8 @@ void gui_window_destroy(struct gui_window *g)
return;
}
+ ami_plot_release_pens(&g->shared->shared_pens);
+
DisposeObject(g->shared->objects[OID_MAIN]);
ami_gui_appicon_remove(g->shared);
if(g->shared->appwin) RemoveAppWindow(g->shared->appwin);
@@ -3280,6 +3285,8 @@ void ami_do_redraw_tiled(struct gui_window_2 *gwin,
int tile_x_scale = (int)(nsoption_int(redraw_tile_size_x) /
gwin->bw->scale);
int tile_y_scale = (int)(nsoption_int(redraw_tile_size_y) /
gwin->bw->scale);
+ browserglob.shared_pens = &gwin->shared_pens;
+
if(top < 0) {
height += top;
top = 0;
@@ -3997,7 +4004,7 @@ void gui_window_new_content(struct gui_window *g)
g->shared->oldh = 0;
g->shared->oldv = 0;
g->favicon = NULL;
-
+ ami_plot_release_pens(&g->shared->shared_pens);
ami_menu_update_disabled(g, c);
}
diff --git a/amiga/gui.h b/amiga/gui.h
index 01588c7..013be50 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -112,6 +112,7 @@ struct gui_window_2 {
gui_drag_type drag_op;
struct IBox *ptr_lock;
struct AppWindow *appwin;
+ struct MinList shared_pens;
};
struct gui_window
diff --git a/amiga/plotters.c b/amiga/plotters.c
index 348e66e..34f5964 100755
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -227,6 +227,26 @@ void ami_clearclipreg(struct gui_globals *gg)
gg->rect.MaxY = scrn->Height-1;
}
+ULONG ami_plot_obtain_pen(struct MinList *shared_pens, ULONG colour)
+{
+ ULONG pen = ObtainBestPenA(scrn->ViewPort.ColorMap,
+ (colour & 0x000000ff) << 24,
+ (colour & 0x0000ff00) << 16,
+ (colour & 0x00ff0000) << 8,
+ NULL);
+
+ if(pen == -1) LOG(("WARNING: Cannot allocate pen for ABGR:%lx",
colour));
+
+ /* TODO: add allocated pen to list */
+
+ return pen;
+}
+
+void ami_plot_release_pens(struct MinList *shared_pens)
+{
+ /* TODO: trawl through list releasing pens */
+}
+
void ami_plot_setapen(ULONG colour)
{
if(palette_mapped == false) {
@@ -234,16 +254,8 @@ void ami_plot_setapen(ULONG colour)
p96EncodeColor(RGBFF_A8B8G8R8, colour),
TAG_DONE);
} else {
- ULONG pen = ObtainBestPenA(scrn->ViewPort.ColorMap,
- (colour & 0x000000ff) << 24,
- (colour & 0x0000ff00) << 16,
- (colour & 0x00ff0000) << 8,
- NULL);
-
- if(pen == -1) LOG(("WARNING: Cannot allocate pen for ABGR:%lx",
colour));
-
- SetAPen(glob->rp, pen);
- /* TODO: Add pen to a list for later release */
+ ULONG pen = ami_plot_obtain_pen(gg->shared_pens, colour);
+ if(pen != -1) SetAPen(glob->rp, pen);
}
}
@@ -254,16 +266,8 @@ void ami_plot_setopen(ULONG colour)
p96EncodeColor(RGBFF_A8B8G8R8, colour),
TAG_DONE);
} else {
- ULONG pen = ObtainBestPenA(scrn->ViewPort.ColorMap,
- (colour & 0x000000ff) << 24,
- (colour & 0x0000ff00) << 16,
- (colour & 0x00ff0000) << 8,
- NULL);
-
- if(pen == -1) LOG(("WARNING: Cannot allocate pen for ABGR:%lx",
colour));
-
- SetOPen(glob->rp, pen);
- /* TODO: Add pen to a list for later release */
+ ULONG pen = ami_plot_obtain_pen(gg->shared_pens, colour);
+ if(pen != -1) SetOPen(glob->rp, pen);
}
}
diff --git a/amiga/plotters.h b/amiga/plotters.h
index c3f816d..94dfaee 100755
--- a/amiga/plotters.h
+++ b/amiga/plotters.h
@@ -33,6 +33,7 @@ struct gui_globals
APTR areabuf;
APTR tmprasbuf;
struct Rectangle rect;
+ struct MinList *shared_pens;
#ifdef NS_AMIGA_CAIRO
cairo_surface_t *surface;
cairo_t *cr;
@@ -63,6 +64,7 @@ bool ami_path(const float *p, unsigned int n, colour fill,
float width,
void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height);
void ami_free_layers(struct gui_globals *gg);
void ami_clearclipreg(struct gui_globals *gg);
+void ami_plot_release_pens(struct MinList *shared_pens);
struct gui_globals *glob;
#endif
commitdiff
http://git.netsurf-browser.org/netsurf.git/commitdiff/337b0f6724144800b9d226e1f949642ec200b511
commit 337b0f6724144800b9d226e1f949642ec200b511
Author: Chris Young <[email protected]>
Commit: Chris Young <[email protected]>
Allow forcing palette-mapped mode by setting cairo_renderer:-1
diff --git a/amiga/plotters.c b/amiga/plotters.c
index c581711..348e66e 100755
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -131,10 +131,10 @@ void ami_init_layers(struct gui_globals *gg, ULONG width,
ULONG height)
struct BitMap *friend = NULL; /* Required to be NULL for Cairo and ARGB
bitmaps */
if(dri = GetScreenDrawInfo(scrn)) {
- if(dri->dri_Depth < 16) {
+ if((dri->dri_Depth < 16) || (nsoption_int(cairo_renderer) ==
-1)) {
palette_mapped = true;
depth = dri->dri_Depth; /* this is always wrong */
- // friend = scrn->RastPort.BitMap;
+ // friend = scrn->RastPort.BitMap;
} else {
palette_mapped = false;
}
@@ -578,7 +578,7 @@ bool ami_arc(int x, int y, int radius, int angle1, int
angle2, const plot_style_
LOG(("[ami_plotter] Entered ami_arc()"));
#endif
- if((nsoption_int(cairo_renderer) == 0) || (palette_mapped == true)) {
+ if((nsoption_int(cairo_renderer) <= 0) || (palette_mapped == true)) {
/* TODO: gfx.lib plotter needs arc support */
/* eg. http://www.crbond.com/primitives.htm CommonFuncsPPC.lha
*/
ami_plot_setapen(style->fill_colour);
-----------------------------------------------------------------------
Summary of changes:
amiga/gui.c | 9 ++++++++-
amiga/gui.h | 1 +
amiga/plotters.c | 50 +++++++++++++++++++++++++++-----------------------
amiga/plotters.h | 2 ++
4 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/amiga/gui.c b/amiga/gui.c
index ee15ee9..347fcde 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -2209,6 +2209,7 @@ void ami_switch_tab(struct gui_window_2 *gwin,bool redraw)
return;
}
+ ami_plot_release_pens(&g->shared->shared_pens);
ami_update_buttons(gwin);
ami_menu_update_disabled(gwin->bw->window, gwin->bw->current_content);
@@ -2574,6 +2575,8 @@ struct gui_window *gui_create_browser_window(struct
browser_window *bw,
return NULL;
}
+ NewList(&g->shared->shared_pens);
+
g->shared->scrollerhook.h_Entry = (void *)ami_scroller_hook;
g->shared->scrollerhook.h_Data = g->shared;
@@ -3182,6 +3185,8 @@ void gui_window_destroy(struct gui_window *g)
return;
}
+ ami_plot_release_pens(&g->shared->shared_pens);
+
DisposeObject(g->shared->objects[OID_MAIN]);
ami_gui_appicon_remove(g->shared);
if(g->shared->appwin) RemoveAppWindow(g->shared->appwin);
@@ -3280,6 +3285,8 @@ void ami_do_redraw_tiled(struct gui_window_2 *gwin,
int tile_x_scale = (int)(nsoption_int(redraw_tile_size_x) /
gwin->bw->scale);
int tile_y_scale = (int)(nsoption_int(redraw_tile_size_y) /
gwin->bw->scale);
+ browserglob.shared_pens = &gwin->shared_pens;
+
if(top < 0) {
height += top;
top = 0;
@@ -3997,7 +4004,7 @@ void gui_window_new_content(struct gui_window *g)
g->shared->oldh = 0;
g->shared->oldv = 0;
g->favicon = NULL;
-
+ ami_plot_release_pens(&g->shared->shared_pens);
ami_menu_update_disabled(g, c);
}
diff --git a/amiga/gui.h b/amiga/gui.h
index 01588c7..013be50 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -112,6 +112,7 @@ struct gui_window_2 {
gui_drag_type drag_op;
struct IBox *ptr_lock;
struct AppWindow *appwin;
+ struct MinList shared_pens;
};
struct gui_window
diff --git a/amiga/plotters.c b/amiga/plotters.c
index c581711..34f5964 100755
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -131,10 +131,10 @@ void ami_init_layers(struct gui_globals *gg, ULONG width,
ULONG height)
struct BitMap *friend = NULL; /* Required to be NULL for Cairo and ARGB
bitmaps */
if(dri = GetScreenDrawInfo(scrn)) {
- if(dri->dri_Depth < 16) {
+ if((dri->dri_Depth < 16) || (nsoption_int(cairo_renderer) ==
-1)) {
palette_mapped = true;
depth = dri->dri_Depth; /* this is always wrong */
- // friend = scrn->RastPort.BitMap;
+ // friend = scrn->RastPort.BitMap;
} else {
palette_mapped = false;
}
@@ -227,6 +227,26 @@ void ami_clearclipreg(struct gui_globals *gg)
gg->rect.MaxY = scrn->Height-1;
}
+ULONG ami_plot_obtain_pen(struct MinList *shared_pens, ULONG colour)
+{
+ ULONG pen = ObtainBestPenA(scrn->ViewPort.ColorMap,
+ (colour & 0x000000ff) << 24,
+ (colour & 0x0000ff00) << 16,
+ (colour & 0x00ff0000) << 8,
+ NULL);
+
+ if(pen == -1) LOG(("WARNING: Cannot allocate pen for ABGR:%lx",
colour));
+
+ /* TODO: add allocated pen to list */
+
+ return pen;
+}
+
+void ami_plot_release_pens(struct MinList *shared_pens)
+{
+ /* TODO: trawl through list releasing pens */
+}
+
void ami_plot_setapen(ULONG colour)
{
if(palette_mapped == false) {
@@ -234,16 +254,8 @@ void ami_plot_setapen(ULONG colour)
p96EncodeColor(RGBFF_A8B8G8R8, colour),
TAG_DONE);
} else {
- ULONG pen = ObtainBestPenA(scrn->ViewPort.ColorMap,
- (colour & 0x000000ff) << 24,
- (colour & 0x0000ff00) << 16,
- (colour & 0x00ff0000) << 8,
- NULL);
-
- if(pen == -1) LOG(("WARNING: Cannot allocate pen for ABGR:%lx",
colour));
-
- SetAPen(glob->rp, pen);
- /* TODO: Add pen to a list for later release */
+ ULONG pen = ami_plot_obtain_pen(gg->shared_pens, colour);
+ if(pen != -1) SetAPen(glob->rp, pen);
}
}
@@ -254,16 +266,8 @@ void ami_plot_setopen(ULONG colour)
p96EncodeColor(RGBFF_A8B8G8R8, colour),
TAG_DONE);
} else {
- ULONG pen = ObtainBestPenA(scrn->ViewPort.ColorMap,
- (colour & 0x000000ff) << 24,
- (colour & 0x0000ff00) << 16,
- (colour & 0x00ff0000) << 8,
- NULL);
-
- if(pen == -1) LOG(("WARNING: Cannot allocate pen for ABGR:%lx",
colour));
-
- SetOPen(glob->rp, pen);
- /* TODO: Add pen to a list for later release */
+ ULONG pen = ami_plot_obtain_pen(gg->shared_pens, colour);
+ if(pen != -1) SetOPen(glob->rp, pen);
}
}
@@ -578,7 +582,7 @@ bool ami_arc(int x, int y, int radius, int angle1, int
angle2, const plot_style_
LOG(("[ami_plotter] Entered ami_arc()"));
#endif
- if((nsoption_int(cairo_renderer) == 0) || (palette_mapped == true)) {
+ if((nsoption_int(cairo_renderer) <= 0) || (palette_mapped == true)) {
/* TODO: gfx.lib plotter needs arc support */
/* eg. http://www.crbond.com/primitives.htm CommonFuncsPPC.lha
*/
ami_plot_setapen(style->fill_colour);
diff --git a/amiga/plotters.h b/amiga/plotters.h
index c3f816d..94dfaee 100755
--- a/amiga/plotters.h
+++ b/amiga/plotters.h
@@ -33,6 +33,7 @@ struct gui_globals
APTR areabuf;
APTR tmprasbuf;
struct Rectangle rect;
+ struct MinList *shared_pens;
#ifdef NS_AMIGA_CAIRO
cairo_surface_t *surface;
cairo_t *cr;
@@ -63,6 +64,7 @@ bool ami_path(const float *p, unsigned int n, colour fill,
float width,
void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height);
void ami_free_layers(struct gui_globals *gg);
void ami_clearclipreg(struct gui_globals *gg);
+void ami_plot_release_pens(struct MinList *shared_pens);
struct gui_globals *glob;
#endif
--
NetSurf Browser
_______________________________________________
netsurf-commits mailing list
[email protected]
http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org