Mercurial > projects > doodle
comparison doodle/gtk/canvas.d @ 81:d92b9f04b1e8
Bed time
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Mon, 16 Aug 2010 00:04:27 +0930 |
parents | b759414d2b72 |
children | 0314b2e03f9b |
comparison
equal
deleted
inserted
replaced
80:b759414d2b72 | 81:d92b9f04b1e8 |
---|---|
1 module doodle.gtk.canvas; | 1 module doodle.gtk.canvas; |
2 | 2 |
3 public { | 3 public { |
4 import doodle.dia.icanvas; | 4 import doodle.dia.icanvas; |
5 import doodle.gtk.events; | 5 import doodle.gtk.events; |
6 import doodle.gtk.cairo; | |
7 } | 6 } |
8 | 7 |
9 private { | 8 private { |
10 import doodle.core.logging; | 9 import doodle.core.logging; |
11 import doodle.tk.pixel_model; | 10 import doodle.tk.screen_model; |
12 import doodle.tk.cairo; | |
13 import doodle.dia.layer_stack; | 11 import doodle.dia.layer_stack; |
14 import doodle.gtk.conversions; | 12 import doodle.gtk.conversions; |
13 import doodle.gtk.cairo; | |
15 | 14 |
16 import cairo.Surface; | 15 import cairo.Surface; |
16 import cairo.Context; | |
17 | 17 |
18 import gtk.Widget; | 18 import gtk.Widget; |
19 import gtk.Toolbar; | 19 import gtk.Toolbar; |
20 import gtk.Table; | 20 import gtk.Table; |
21 import gtk.HRuler; | 21 import gtk.HRuler; |
68 | 68 |
69 _drawingArea = new DrawingArea; | 69 _drawingArea = new DrawingArea; |
70 _drawingArea.addOnRealize(&onRealize); | 70 _drawingArea.addOnRealize(&onRealize); |
71 _drawingArea.addOnConfigure(&onConfigure); | 71 _drawingArea.addOnConfigure(&onConfigure); |
72 _drawingArea.addOnExpose(&onExpose); | 72 _drawingArea.addOnExpose(&onExpose); |
73 _drawingArea.addOnButtonPress(&onButtonPress); // FIXME merge delegate with next | 73 _drawingArea.addOnButtonPress(&onButtonPress); |
74 _drawingArea.addOnButtonRelease(&onButtonRelease); | 74 _drawingArea.addOnButtonRelease(&onButtonRelease); |
75 _drawingArea.addOnKeyPress(&onKeyPressEvent); // FIXME merge delegate with next | 75 _drawingArea.addOnKeyPress(&onKeyPressEvent); |
76 _drawingArea.addOnKeyRelease(&onKeyReleaseEvent); | 76 _drawingArea.addOnKeyRelease(&onKeyReleaseEvent); |
77 _drawingArea.addOnMotionNotify(&onMotionNotify); | 77 _drawingArea.addOnMotionNotify(&onMotionNotify); |
78 _drawingArea.addOnScroll(&onScroll); | 78 _drawingArea.addOnScroll(&onScroll); |
79 _drawingArea.addOnEnterNotify(&onEnterNotify); // FIXME merge delegate with next | 79 _drawingArea.addOnEnterNotify(&onEnterNotify); |
80 _drawingArea.addOnLeaveNotify(&onLeaveNotify); | 80 _drawingArea.addOnLeaveNotify(&onLeaveNotify); |
81 | 81 |
82 _drawingArea.addOnFocusIn(&onFocusIn); | 82 _drawingArea.addOnFocusIn(&onFocusIn); |
83 _drawingArea.addOnFocusOut(&onFocusOut); | 83 _drawingArea.addOnFocusOut(&onFocusOut); |
84 _drawingArea.addOnMoveFocus(&onMoveFocus); | 84 _drawingArea.addOnMoveFocus(&onMoveFocus); |
232 modelCr.scale(_screenModel.zoom, -_screenModel.zoom); | 232 modelCr.scale(_screenModel.zoom, -_screenModel.zoom); |
233 | 233 |
234 immutable Point viewLeftBottom = _screenModel.screenToModel(Point(0.0, 0.0)); | 234 immutable Point viewLeftBottom = _screenModel.screenToModel(Point(0.0, 0.0)); |
235 modelCr.translate(-viewLeftBottom.x, -viewLeftBottom.y); | 235 modelCr.translate(-viewLeftBottom.x, -viewLeftBottom.y); |
236 | 236 |
237 rectangle(modelCr, modelDamage); | 237 modelCr.rectangle(modelDamage.x0, modelDamage.y0, modelDamage.w, modelDamage.h); |
238 modelCr.clip; | 238 modelCr.clip; |
239 } | 239 } |
240 | 240 |
241 { | 241 { |
242 // Setup screen context and clip | 242 // Setup screen context and clip |
243 screenCr.translate(0.0, _screenModel.viewBoundsScreen.h); | 243 screenCr.translate(0.0, _screenModel.viewBoundsScreen.h); |
244 screenCr.scale(1.0, -1.0); | 244 screenCr.scale(1.0, -1.0); |
245 | 245 |
246 rectangle(screenCr, screenDamage); | 246 screenCr.rectangle(screenDamage.x0, screenDamage.y0, screenDamage.w, screenDamage.h); |
247 screenCr.clip; | 247 screenCr.clip; |
248 } | 248 } |
249 | 249 |
250 screenCr.save; { | 250 screenCr.save; { |
251 // Fill the background with light grey | 251 // Fill the background with light grey |
252 screenCr.setSourceRgba(0.9, 0.9, 0.9, 1.0); | 252 screenCr.setSourceRgba(0.9, 0.9, 0.9, 1.0); |
253 rectangle(screenCr, screenDamage); | 253 screenCr.rectangle(screenDamage.x0, screenDamage.y0, screenDamage.w, screenDamage.h); |
254 screenCr.fill; | 254 screenCr.fill; |
255 } screenCr.restore; | 255 } screenCr.restore; |
256 | 256 |
257 _layerStack.draw(screenDamage, new CairoDrawable(screenCr), | 257 _layerStack.draw(screenDamage, new CairoDrawable(screenCr), |
258 modelDamage, new CairoDrawable(modelCr)); | 258 modelDamage, new CairoDrawable(modelCr)); |
366 void updateRulers() { | 366 void updateRulers() { |
367 immutable Point viewLeftBottom = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner0); | 367 immutable Point viewLeftBottom = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner0); |
368 immutable Point viewRightTop = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner1); | 368 immutable Point viewRightTop = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner1); |
369 | 369 |
370 // Define these just to obtain the position | 370 // Define these just to obtain the position |
371 // below and we can preserve it | 371 // below so we can preserve it |
372 double lower, upper, position, maxSize; | 372 double lower, upper, position, maxSize; |
373 | 373 |
374 _hRuler.getRange(lower, upper, position, maxSize); | 374 _hRuler.getRange(lower, upper, position, maxSize); |
375 _hRuler.setRange(viewLeftBottom.x, | 375 _hRuler.setRange(viewLeftBottom.x, |
376 viewRightTop.x, | 376 viewRightTop.x, |
434 | 434 |
435 IEventHandler _eventHandler; | 435 IEventHandler _eventHandler; |
436 IGrid _grid; | 436 IGrid _grid; |
437 double _pixelsPerMillimetre; | 437 double _pixelsPerMillimetre; |
438 LayerStack _layerStack; | 438 LayerStack _layerStack; |
439 | |
440 immutable CursorType[Cursor] _cursors; | |
441 | 439 |
442 // Child widgets: | 440 // Child widgets: |
443 HRuler _hRuler; | 441 HRuler _hRuler; |
444 VRuler _vRuler; | 442 VRuler _vRuler; |
445 DrawingArea _drawingArea; | 443 DrawingArea _drawingArea; |
448 Adjustment _vAdjustment; | 446 Adjustment _vAdjustment; |
449 VScrollbar _vScrollbar; | 447 VScrollbar _vScrollbar; |
450 | 448 |
451 Rectangle _damageScreen; | 449 Rectangle _damageScreen; |
452 ScreenModel _screenModel; | 450 ScreenModel _screenModel; |
451 | |
452 immutable CursorType[Cursor] _cursors; | |
453 } | 453 } |
454 } | 454 } |