1 #ifndef __NR_ARENA_H__
2 #define __NR_ARENA_H__
4 /*
5 * RGBA display list system for inkscape
6 *
7 * Author:
8 * Lauris Kaplinski <lauris@kaplinski.com>
9 *
10 * Copyright (C) 2001-2002 Lauris Kaplinski
11 * Copyright (C) 2001 Ximian, Inc.
12 *
13 * Released under GNU GPL, read the file 'COPYING' for more information
14 */
16 #include <glib/gmacros.h>
18 G_BEGIN_DECLS
20 typedef struct _SPCanvasArena SPCanvasArena;
22 G_END_DECLS
24 #define NR_TYPE_ARENA (nr_arena_get_type ())
25 #define NR_ARENA(o) (NR_CHECK_INSTANCE_CAST ((o), NR_TYPE_ARENA, NRArena))
26 #define NR_IS_ARENA(o) (NR_CHECK_INSTANCE_TYPE ((o), NR_TYPE_ARENA))
28 #include <libnr/nr-forward.h>
29 #include <libnr/nr-object.h>
30 #include "nr-arena-forward.h"
31 #include "sp-paint-server.h"
33 NRType nr_arena_get_type (void);
35 struct NRArenaEventVector {
36 NRObjectEventVector parent;
37 void (* request_update) (NRArena *arena, NRArenaItem *item, void *data);
38 void (* request_render) (NRArena *arena, NRRectL *area, void *data);
39 };
41 enum {
42 RENDERMODE_NORMAL,
43 RENDERMODE_NOAA,
44 RENDERMODE_OUTLINE
45 };
47 struct NRArena : public NRActiveObject {
48 static NRArena *create() {
49 return reinterpret_cast<NRArena *>(nr_object_new(NR_TYPE_ARENA));
50 }
52 double delta;
53 int rendermode;
54 guint32 outlinecolor;
55 SPCanvasArena *canvasarena; // may be NULL is this arena is not the screen but used for export etc.
56 };
58 struct NRArenaClass : public NRActiveObjectClass {
59 };
61 void nr_arena_request_update (NRArena *arena, NRArenaItem *item);
62 void nr_arena_request_render_rect (NRArena *arena, NRRectL *area);
64 void nr_arena_render_paintserver_fill (NRPixBlock *pb, NRRectL *area, SPPainter *painter, float opacity, NRPixBlock *mask);
66 #endif