Lines Matching refs:arena

18 #include "display/canvas-arena.h"
35 static void sp_canvas_arena_item_deleted(SPCanvasArena *arena, Inkscape::DrawingItem *item);
42 static gint sp_canvas_arena_send_event (SPCanvasArena *arena, GdkEvent *event);
50 CachePrefObserver(SPCanvasArena *arena)
52 , _arena(arena)
94 sp_canvas_arena_init (SPCanvasArena *arena)
96 arena->sticky = FALSE;
98 new (&arena->drawing) Inkscape::Drawing(arena);
100 Inkscape::DrawingGroup *root = new DrawingGroup(arena->drawing);
102 arena->drawing.setRoot(root);
104 arena->observer = new CachePrefObserver(arena);
106 arena->drawing.signal_request_update.connect(
109 arena));
110 arena->drawing.signal_request_render.connect(
113 arena));
114 arena->drawing.signal_item_deleted.connect(
117 arena));
119 arena->active = NULL;
124 SPCanvasArena *arena = SP_CANVAS_ARENA(object);
126 delete arena->observer;
127 arena->drawing.~Drawing();
136 SPCanvasArena *arena = SP_CANVAS_ARENA (item);
141 arena->ctx.ctm = affine;
144 arena->drawing.update(Geom::IntRect::infinite(), arena->ctx, DrawingItem::STATE_ALL, reset);
146 Geom::OptIntRect b = arena->drawing.root()->visualBounds();
154 if (arena->cursor) {
156 DrawingItem *new_arena = arena->drawing.pick(arena->c, arena->drawing.delta, arena->sticky);
157 if (new_arena != arena->active) {
163 ec.x = arena->c[Geom::X];
164 ec.y = arena->c[Geom::Y];
166 if (arena->active) {
168 sp_canvas_arena_send_event (arena, (GdkEvent *) &ec);
170 arena->active = new_arena;
171 if (arena->active) {
173 sp_canvas_arena_send_event (arena, (GdkEvent *) &ec);
180 sp_canvas_arena_item_deleted(SPCanvasArena *arena, Inkscape::DrawingItem *item)
182 if (arena->active == item) {
183 arena->active = NULL;
191 SPCanvasArena *arena = SP_CANVAS_ARENA (item);
198 arena->drawing.update(Geom::IntRect::infinite(), arena->ctx);
199 arena->drawing.render(dc, *r);
205 SPCanvasArena *arena = SP_CANVAS_ARENA (item);
207 arena->drawing.update(Geom::IntRect::infinite(), arena->ctx, DrawingItem::STATE_PICK | DrawingItem::STATE_BBOX);
208 DrawingItem *picked = arena->drawing.pick(p, arena->drawing.delta, arena->sticky);
210 arena->picked = picked;
223 SPCanvasArena *arena = SP_CANVAS_ARENA(item);
228 arena->drawing.setCacheLimit(expanded);
237 SPCanvasArena *arena = SP_CANVAS_ARENA (item);
243 if (!arena->cursor) {
244 if (arena->active) {
245 //g_warning ("Cursor entered to arena with already active item");
247 arena->cursor = TRUE;
249 /* TODO ... event -> arena transform? */
250 arena->c = Geom::Point(event->crossing.x, event->crossing.y);
253 arena->drawing.update(Geom::IntRect::infinite(), arena->ctx,
255 arena->active = arena->drawing.pick(arena->c, arena->drawing.delta, arena->sticky);
256 ret = sp_canvas_arena_send_event (arena, event);
261 if (arena->cursor) {
262 ret = sp_canvas_arena_send_event (arena, event);
263 arena->active = NULL;
264 arena->cursor = FALSE;
269 /* TODO ... event -> arena transform? */
270 arena->c = Geom::Point(event->motion.x, event->motion.y);
273 arena->drawing.update(Geom::IntRect::infinite(), arena->ctx,
275 new_arena = arena->drawing.pick(arena->c, arena->drawing.delta, arena->sticky);
276 if (new_arena != arena->active) {
285 if (arena->active) {
287 ret = sp_canvas_arena_send_event (arena, (GdkEvent *) &ec);
289 arena->active = new_arena;
290 if (arena->active) {
292 ret = sp_canvas_arena_send_event (arena, (GdkEvent *) &ec);
295 ret = ret || sp_canvas_arena_send_event (arena, event);
306 ret = sp_canvas_arena_send_event (arena, event);
312 ret = sp_canvas_arena_send_event (arena, event);
320 sp_canvas_arena_send_event (SPCanvasArena *arena, GdkEvent *event)
324 /* Send event to arena */
325 g_signal_emit (G_OBJECT (arena), signals[ARENA_EVENT], 0, arena->active, event, &ret);