summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2008-12-28 12:24:18 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2008-12-28 12:24:18 +0000
commit495fa6c648890c9bf6f691bdbe6d45f1a8a112ea (patch)
tree850a516527fe81e862ecf92aa1c631565de87a0c /amiga
parentfcf46a91b60831b7b7cba8e44c98757a1407a5a8 (diff)
downloadnetsurf-495fa6c648890c9bf6f691bdbe6d45f1a8a112ea.tar.gz
netsurf-495fa6c648890c9bf6f691bdbe6d45f1a8a112ea.tar.bz2
Minor changes for Amiga Cairo build
svn path=/trunk/netsurf/; revision=5940
Diffstat (limited to 'amiga')
-rwxr-xr-xamiga/gui.c42
-rwxr-xr-xamiga/gui.h7
-rwxr-xr-xamiga/plotters.c64
3 files changed, 53 insertions, 60 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index fb6faf2ef..bd862194f 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -71,6 +71,9 @@
#include "amiga/fetch_mailto.h"
#include "amiga/search.h"
+#ifdef NS_AMIGA_CAIRO
+#include <cairo/cairo-amigaos.h>
+#endif
#ifdef WITH_HUBBUB
#include <hubbub/hubbub.h>
#endif
@@ -113,8 +116,6 @@ ULONG throbber_width,throbber_height,throbber_frames;
BOOL rmbtrapped;
BOOL locked_screen = FALSE;
-//static struct RastPort dummyrp;
-
#define AMI_LASTPOINTER GUI_POINTER_PROGRESS+1
Object *mouseptrobj[AMI_LASTPOINTER+1];
struct BitMap *mouseptrbm[AMI_LASTPOINTER+1];
@@ -434,14 +435,6 @@ void gui_init2(int argc, char** argv)
ami_fetch_file_register();
ami_fetch_mailto_register();
-/*
- InitRastPort(&dummyrp);
- dummyrp.BitMap = p96AllocBitMap(1,1,32,
- BMF_CLEAR | BMF_DISPLAYABLE | BMF_INTERLEAVED,
- NULL,RGBFB_A8R8G8B8);
-
- if(!dummyrp.BitMap) die(messages_get("NoMemory"));
-*/
if(notalreadyrunning)
{
if((option_modeid) && (option_modeid[0] != '\0'))
@@ -497,8 +490,7 @@ void gui_init2(int argc, char** argv)
/* init shared bitmaps */
glob.bm = p96AllocBitMap(scrn->Width,scrn->Height,32,
BMF_CLEAR | BMF_DISPLAYABLE | BMF_INTERLEAVED,
- NULL, //gwin->shared->win->RPort->BitMap,
- RGBFB_A8R8G8B8);
+ scrn->RastPort.BitMap,RGBFB_A8R8G8B8);
if(!glob.bm)
{
@@ -536,8 +528,12 @@ void gui_init2(int argc, char** argv)
}
InitTmpRas(glob.rp.TmpRas,glob.tmprasbuf,scrn->Width*scrn->Height);
-
currp = &glob.rp;
+
+#ifdef NS_AMIGA_CAIRO
+ glob.surface = cairo_amigaos_surface_create(glob.bm);
+ glob.cr = cairo_create(glob.surface);
+#endif
/* init shared bitmaps */
if(argc) // argc==0 is started from wb
@@ -1275,6 +1271,10 @@ void gui_quit(void)
ami_arexx_cleanup();
+#ifdef NS_AMIGA_CAIRO
+ cairo_destroy(glob.cr);
+ cairo_surface_destroy(glob.surface);
+#endif
DeleteLayer(0,glob.rp.Layer);
DisposeLayerInfo(glob.layerinfo);
p96FreeBitMap(glob.bm);
@@ -1287,7 +1287,6 @@ void gui_quit(void)
{
while(!CloseScreen(scrn));
}
-// p96FreeBitMap(dummyrp.BitMap);
FreeVec(nsscreentitle);
@@ -1497,7 +1496,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
WA_CustomScreen,scrn,
WA_ReportMouse,TRUE,
WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS |
- IDCMP_NEWSIZE | IDCMP_VANILLAKEY | IDCMP_RAWKEY | IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | IDCMP_INTUITICKS,
+ IDCMP_NEWSIZE | IDCMP_VANILLAKEY | IDCMP_RAWKEY | IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | IDCMP_INTUITICKS | IDCMP_EXTENDEDMOUSE,
// WINDOW_IconifyGadget, TRUE,
// WINDOW_NewMenu,menu,
WINDOW_HorizProp,1,
@@ -1506,6 +1505,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE,
WINDOW_AppPort, appport,
WINDOW_AppWindow,TRUE,
+ WINDOW_BuiltInScroll,TRUE,
WINDOW_SharedPort,sport,
WINDOW_UserData,gwin->shared,
// WINDOW_Position, WPOS_CENTERSCREEN,
@@ -1575,7 +1575,8 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE |
IDCMP_VANILLAKEY | IDCMP_RAWKEY |
IDCMP_GADGETUP | IDCMP_IDCMPUPDATE |
- IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW,
+ IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW |
+ IDCMP_EXTENDEDMOUSE,
// WINDOW_IconifyGadget, TRUE,
WINDOW_NewMenu,menu,
WINDOW_HorizProp,1,
@@ -1585,6 +1586,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
WINDOW_AppPort, appport,
WINDOW_AppWindow,TRUE,
WINDOW_SharedPort,sport,
+ WINDOW_BuiltInScroll,TRUE,
WINDOW_UserData,gwin->shared,
// WINDOW_Position, WPOS_CENTERSCREEN,
// WINDOW_CharSet,106,
@@ -1736,7 +1738,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE |
IDCMP_VANILLAKEY | IDCMP_RAWKEY |
IDCMP_GADGETUP | IDCMP_IDCMPUPDATE |
- IDCMP_INTUITICKS,
+ IDCMP_INTUITICKS | IDCMP_EXTENDEDMOUSE,
WINDOW_HorizProp,1,
WINDOW_VertProp,1,
WINDOW_IDCMPHook,&gwin->shared->scrollerhook,
@@ -1745,6 +1747,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
WINDOW_AppWindow,TRUE,
WINDOW_SharedPort,sport,
WINDOW_UserData,gwin->shared,
+ WINDOW_BuiltInScroll,TRUE,
WINDOW_ParentGroup, gwin->shared->gadgets[GID_MAIN] = VGroupObject,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_AddChild, gwin->shared->gadgets[GID_BROWSER] = SpaceObject,
@@ -1826,8 +1829,6 @@ void gui_window_destroy(struct gui_window *g)
if(!g) return;
-// currp = &dummyrp;
-
if(g->shared->tabs > 1)
{
SetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL,
@@ -1979,7 +1980,6 @@ void gui_window_update_box(struct gui_window *g,
0xFFFFFF);
current_redraw_browser = NULL;
-// currp = &dummyrp;
ami_update_buttons(g->shared);
@@ -2052,8 +2052,6 @@ void ami_do_redraw(struct gui_window_2 *g)
// }
current_redraw_browser = NULL;
-// currp = &dummyrp;
-
ami_update_buttons(g);
diff --git a/amiga/gui.h b/amiga/gui.h
index 66e42482f..723b6950f 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -24,6 +24,9 @@
#include "desktop/browser.h"
#include <dos/dos.h>
#include "desktop/gui.h"
+#ifdef NS_AMIGA_CAIRO
+#include <cairo/cairo.h>
+#endif
enum
{
@@ -121,6 +124,10 @@ struct gui_globals
struct Layer_Info *layerinfo;
APTR areabuf;
APTR tmprasbuf;
+#ifdef NS_AMIGA_CAIRO
+ cairo_surface_t *surface;
+ cairo_t *cr;
+#endif
};
void ami_get_msg(void);
diff --git a/amiga/plotters.c b/amiga/plotters.c
index ed531ac96..2fc407031 100755
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -75,7 +75,7 @@ void ami_cairo_set_colour(cairo_t *cr,colour c)
g = (c & 0xff00) >> 8;
b = (c & 0xff0000) >> 16;
- cairo_set_source_rgba(cr, r / 255.0,
+ cairo_set_source_rgba(glob.cr, r / 255.0,
g / 255.0, b / 255.0, 1.0);
}
@@ -83,21 +83,21 @@ void ami_cairo_set_solid(cairo_t *cr)
{
double dashes = 0;
- cairo_set_dash(cr, &dashes, 0, 0);
+ cairo_set_dash(glob.cr, &dashes, 0, 0);
}
void ami_cairo_set_dotted(cairo_t *cr)
{
double cdashes = 1;
- cairo_set_dash(cr, &cdashes, 1, 0);
+ cairo_set_dash(glob.cr, &cdashes, 1, 0);
}
void ami_cairo_set_dashed(cairo_t *cr)
{
double cdashes = 3;
- cairo_set_dash(cr, &cdashes, 1, 0);
+ cairo_set_dash(glob.cr, &cdashes, 1, 0);
}
#endif
@@ -281,20 +281,14 @@ bool ami_arc(int x, int y, int radius, int angle1, int angle2,
colour c)
{
#ifdef NS_AMIGA_CAIRO
- cairo_surface_t *surface = cairo_amigaos_surface_create(currp->BitMap);
- cairo_t *cr = cairo_create(surface);
+ ami_cairo_set_colour(glob.cr,c);
+ ami_cairo_set_solid(glob.cr);
- ami_cairo_set_colour(cr,c);
- ami_cairo_set_solid(cr);
-
- cairo_set_line_width(cr, 1);
- cairo_arc(cr, x, y, radius,
+ cairo_set_line_width(glob.cr, 1);
+ cairo_arc(glob.cr, x, y, radius,
(angle1 + 90) * (M_PI / 180),
(angle2 + 90) * (M_PI / 180));
- cairo_stroke(cr);
-
- cairo_destroy (cr);
- cairo_surface_destroy(surface);
+ cairo_stroke(glob.cr);
#else
/* http://www.crbond.com/primitives.htm
CommonFuncsPPC.lha */
@@ -503,9 +497,6 @@ bool ami_path(float *p, unsigned int n, colour fill, float width,
/* For SVG only, because it needs Bezier curves we are going to cheat
and insist on Cairo */
#ifdef NS_AMIGA_CAIRO
- cairo_surface_t *surface = cairo_amigaos_surface_create(currp->BitMap);
- cairo_t *cr = cairo_create(surface);
-
unsigned int i;
cairo_matrix_t old_ctm, n_ctm;
@@ -518,11 +509,11 @@ bool ami_path(float *p, unsigned int n, colour fill, float width,
}
/* Save CTM */
- cairo_get_matrix(cr, &old_ctm);
+ cairo_get_matrix(glob.cr, &old_ctm);
/* Set up line style and width */
- cairo_set_line_width(cr, 1);
- ami_cairo_set_solid(cr);
+ cairo_set_line_width(glob.cr, 1);
+ ami_cairo_set_solid(glob.cr);
/* Load new CTM */
n_ctm.xx = transform[0];
@@ -532,56 +523,53 @@ bool ami_path(float *p, unsigned int n, colour fill, float width,
n_ctm.x0 = transform[4];
n_ctm.y0 = transform[5];
- cairo_set_matrix(cr, &n_ctm);
+ cairo_set_matrix(glob.cr, &n_ctm);
/* Construct path */
for (i = 0; i < n; ) {
if (p[i] == PLOTTER_PATH_MOVE) {
- cairo_move_to(cr, p[i+1], p[i+2]);
+ cairo_move_to(glob.cr, p[i+1], p[i+2]);
i += 3;
} else if (p[i] == PLOTTER_PATH_CLOSE) {
- cairo_close_path(cr);
+ cairo_close_path(glob.cr);
i++;
} else if (p[i] == PLOTTER_PATH_LINE) {
- cairo_line_to(cr, p[i+1], p[i+2]);
+ cairo_line_to(glob.cr, p[i+1], p[i+2]);
i += 3;
} else if (p[i] == PLOTTER_PATH_BEZIER) {
- cairo_curve_to(cr, p[i+1], p[i+2],
+ cairo_curve_to(glob.cr, p[i+1], p[i+2],
p[i+3], p[i+4],
p[i+5], p[i+6]);
i += 7;
} else {
LOG(("bad path command %f", p[i]));
/* Reset matrix for safety */
- cairo_set_matrix(cr, &old_ctm);
+ cairo_set_matrix(glob.cr, &old_ctm);
return false;
}
}
/* Restore original CTM */
- cairo_set_matrix(cr, &old_ctm);
+ cairo_set_matrix(glob.cr, &old_ctm);
/* Now draw path */
if (fill != TRANSPARENT) {
- ami_cairo_set_colour(cr,fill);
+ ami_cairo_set_colour(glob.cr,fill);
if (c != TRANSPARENT) {
/* Fill & Stroke */
- cairo_fill_preserve(cr);
- ami_cairo_set_colour(cr,c);
- cairo_stroke(cr);
+ cairo_fill_preserve(glob.cr);
+ ami_cairo_set_colour(glob.cr,c);
+ cairo_stroke(glob.cr);
} else {
/* Fill only */
- cairo_fill(cr);
+ cairo_fill(glob.cr);
}
} else if (c != TRANSPARENT) {
/* Stroke only */
- ami_cairo_set_colour(cr,c);
- cairo_stroke(cr);
+ ami_cairo_set_colour(glob.cr,c);
+ cairo_stroke(glob.cr);
}
-
- cairo_destroy (cr);
- cairo_surface_destroy(surface);
#endif
return true;
}