Mercurial > projects > doodle
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; |