comparison doodle/dia/grid_layer.d @ 89:467febed7367

* Ignore excre * Some tentative work in grid_layer.d * Give the ScreenModel to all the layers. This needs refinement. * A stroke wouldn't hurt occasionally in cairo_renderer.d
author David Bryant <bagnose@gmail.com>
date Thu, 19 Aug 2010 00:19:42 +0930
parents cdd4fc728d94
children 885914257e0e
comparison
equal deleted inserted replaced
88:100dd23c7bdf 89:467febed7367
4 import doodle.dia.icanvas; 4 import doodle.dia.icanvas;
5 } 5 }
6 6
7 private { 7 private {
8 import std.math; 8 import std.math;
9 import std.stdio;
9 } 10 }
10 11
11 private { 12 private {
12 double start(in double value, in double spacing) { 13 double start(in double value, in double spacing) {
13 real r = floor(value / spacing); 14 real r = floor(value / spacing);
29 // We don't require any geometry 30 // We don't require any geometry
30 return Rectangle(); 31 return Rectangle();
31 } 32 }
32 33
33 override void draw(in Rectangle screenDamage, scope Renderer screenRenderer, 34 override void draw(in Rectangle screenDamage, scope Renderer screenRenderer,
34 in Rectangle modelDamage, scope Renderer modelRenderer) const { 35 in Rectangle modelDamage, scope Renderer modelRenderer,
35 /+ 36 in ScreenModel screenModel) const {
36 assert(_zoomValid); 37 assert(_zoomValid);
37 38
38 double xx = 1.0, yy = 1.0; 39 auto z = screenModel.zoom;
39 modelCr.userToDeviceDistance(xx, yy); 40 // Is _zoom like screenModel.zoom ?
40 41
42 modelRenderer.pushState; {
43 modelRenderer.setColor(Color(0.0, 0.0, 0.0, 0.3));
44 auto x = start(modelDamage.corner0.x, _spacing);
45
46 for (;;) {
47 writefln("Doing something %s", x);
48 modelRenderer.drawVLine(x, modelDamage.corner0.y, modelDamage.corner1.y);
49 x += _spacing;
50 if (x > modelDamage.corner1.x) break;
51 }
52 } modelRenderer.popState;
53
54 /+
41 modelCr.save(); { 55 modelCr.save(); {
42 modelCr.setSourceRgba(0.0, 0.0, 0.0, 0.3); 56 modelCr.setSourceRgba(0.0, 0.0, 0.0, 0.3);
43 modelCr.setLineWidth(0.5); 57 modelCr.setLineWidth(0.5);
44 58
45 { 59 {
50 vline(modelCr, x, modelDamage.corner0.y, modelDamage.corner1.y); 64 vline(modelCr, x, modelDamage.corner0.y, modelDamage.corner1.y);
51 65
52 // Ensure 1 pixel wide FIXME is this naughty? We are sneaking 66 // Ensure 1 pixel wide FIXME is this naughty? We are sneaking
53 // through cairo to mix model and pixel coordinates... 67 // through cairo to mix model and pixel coordinates...
54 modelCr.save(); { 68 modelCr.save(); {
55 modelCr.scale(1.0 / xx, 1.0 / yy); 69 modelCr.scale(1.0 / z, 1.0 / z);
56 modelCr.stroke(); 70 modelCr.stroke();
57 } modelCr.restore(); 71 } modelCr.restore();
58 72
59 if (x > modelDamage.corner1.x) { 73 if (x > modelDamage.corner1.x) {
60 break; 74 break;