diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2012-08-05 11:28:48 +0100 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2012-08-05 11:28:48 +0100 |
commit | d577a48bb7cce5f88904e86499906ade86809d8a (patch) | |
tree | 577bf9093d802823541c0830b242eefbd60cd3a1 /amiga/plotters.c | |
parent | 337b0f6724144800b9d226e1f949642ec200b511 (diff) | |
download | netsurf-d577a48bb7cce5f88904e86499906ade86809d8a.tar.gz netsurf-d577a48bb7cce5f88904e86499906ade86809d8a.tar.bz2 |
Abstract pen obtain/release and structure so we can add these to a physical browser window's list
Diffstat (limited to 'amiga/plotters.c')
-rwxr-xr-x | amiga/plotters.c | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/amiga/plotters.c b/amiga/plotters.c index 348e66e94..34f596474 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); } } |