# HG changeset patch # User daveb # Date 1281945189 -34200 # Node ID cdd4fc728d9480c81f8fc5eea37c558d34264225 # Parent 06b4504cbcb0cabe69ef8a458f5cdd532ee4c8e4 Renamed Drawable to Renderer diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/dia/grid_layer.d --- a/doodle/dia/grid_layer.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/dia/grid_layer.d Mon Aug 16 17:23:09 2010 +0930 @@ -30,8 +30,8 @@ return Rectangle(); } - override void draw(in Rectangle screenDamage, scope Drawable screenDrawable, - in Rectangle modelDamage, scope Drawable modelDrawable) const { + override void draw(in Rectangle screenDamage, scope Renderer screenRenderer, + in Rectangle modelDamage, scope Renderer modelRenderer) const { /+ assert(_zoomValid); diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/dia/icanvas.d --- a/doodle/dia/icanvas.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/dia/icanvas.d Mon Aug 16 17:23:09 2010 +0930 @@ -3,7 +3,7 @@ public { import doodle.tk.geometry; import doodle.tk.events; - import doodle.tk.drawable; + import doodle.tk.renderer; } private { @@ -67,8 +67,8 @@ Rectangle bounds() const; - void draw(in Rectangle screenDamage, scope Drawable screenDrawable, - in Rectangle modelDamage, scope Drawable modelDrawable) const; + void draw(in Rectangle screenDamage, scope Renderer screenRenderer, + in Rectangle modelDamage, scope Renderer modelRenderer) const; private { immutable string _name; diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/dia/layer_stack.d --- a/doodle/dia/layer_stack.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/dia/layer_stack.d Mon Aug 16 17:23:09 2010 +0930 @@ -17,10 +17,10 @@ return bounds; } - void draw(in Rectangle screenDamage, scope Drawable screenDrawable, - in Rectangle modelDamage, scope Drawable modelDrawable) { + void draw(in Rectangle screenDamage, scope Renderer screenRenderer, + in Rectangle modelDamage, scope Renderer modelRenderer) { foreach(layer; _layers) { - layer.draw(screenDamage, screenDrawable, modelDamage, modelDrawable); + layer.draw(screenDamage, screenRenderer, modelDamage, modelRenderer); } } diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/dia/page_layer.d --- a/doodle/dia/page_layer.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/dia/page_layer.d Mon Aug 16 17:23:09 2010 +0930 @@ -20,19 +20,19 @@ return _pageGeometry; } - override void draw(in Rectangle screenDamage, scope Drawable screenDrawable, - in Rectangle modelDamage, scope Drawable modelDrawable) const { + override void draw(in Rectangle screenDamage, scope Renderer screenRenderer, + in Rectangle modelDamage, scope Renderer modelRenderer) const { // Make the paper white, with a border - modelDrawable.pushState; { - modelDrawable.setColor(Color(0.0, 0.0, 0.0, 1.0)); - modelDrawable.drawRectangle(_pageGeometry, false); - } modelDrawable.popState; + modelRenderer.pushState; { + modelRenderer.setColor(Color(0.0, 0.0, 0.0, 1.0)); + modelRenderer.drawRectangle(_pageGeometry, false); + } modelRenderer.popState; - modelDrawable.pushState; { - modelDrawable.setColor(Color(1.0, 1.0, 1.0, 1.0)); - modelDrawable.drawRectangle(_pageGeometry, true); - } modelDrawable.popState; + modelRenderer.pushState; { + modelRenderer.setColor(Color(1.0, 1.0, 1.0, 1.0)); + modelRenderer.drawRectangle(_pageGeometry, true); + } modelRenderer.popState; } // IPage overrides: diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/dia/tool.d --- a/doodle/dia/tool.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/dia/tool.d Mon Aug 16 17:23:09 2010 +0930 @@ -24,7 +24,7 @@ //bool handleFocusIn(scope IViewport viewport, FocusEvent event) { return false; } //bool handleFocusOut(scope IViewport viewport, FocusEvent event) { return false; } - void draw(in Rectangle screenDamage, scope Drawable screenDrawable) const { } + void draw(in Rectangle screenDamage, scope Renderer screenRenderer) const { } private { immutable string _name; diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/dia/tool_layer.d --- a/doodle/dia/tool_layer.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/dia/tool_layer.d Mon Aug 16 17:23:09 2010 +0930 @@ -39,10 +39,10 @@ return Rectangle(); } - override void draw(in Rectangle screenDamage, scope Drawable screenDrawable, - in Rectangle modelDamage, scope Drawable modelDrawable) const { + override void draw(in Rectangle screenDamage, scope Renderer screenRenderer, + in Rectangle modelDamage, scope Renderer modelRenderer) const { if (_grabbedTool) { - _grabbedTool.draw(screenDamage, screenDrawable); + _grabbedTool.draw(screenDamage, screenRenderer); } } diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/fig/diagram_elements.d --- a/doodle/fig/diagram_elements.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/fig/diagram_elements.d Mon Aug 16 17:23:09 2010 +0930 @@ -2,7 +2,7 @@ private { import doodle.tk.geometry; - import doodle.tk.drawable; + import doodle.tk.renderer; } interface IDiagram { @@ -12,7 +12,7 @@ abstract class DiagramElement { Rectangle bounds() const; - void draw(in Rectangle damage, scope Drawable cr) const; + void draw(in Rectangle damage, scope Renderer cr) const; private { //GraphElement _container; // FIXME use an interface to the container @@ -64,7 +64,7 @@ */ final class RectanglePrimitive : GraphicPrimitive { - override void draw(in Rectangle damage, scope Drawable drawable) const { + override void draw(in Rectangle damage, scope Renderer drawable) const { drawable.drawRectangle(bounds, false); } diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/fig/diagram_layer.d --- a/doodle/fig/diagram_layer.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/fig/diagram_layer.d Mon Aug 16 17:23:09 2010 +0930 @@ -23,11 +23,11 @@ return Rectangle.DEFAULT; } - override void draw(in Rectangle screenDamage, scope Drawable screenDrawable, - in Rectangle modelDamage, scope Drawable modelDrawable) const { + override void draw(in Rectangle screenDamage, scope Renderer screenRenderer, + in Rectangle modelDamage, scope Renderer modelRenderer) const { foreach (e; _elements) { if ((e.bounds & modelDamage).valid) { - e.draw(modelDamage, modelDrawable); + e.draw(modelDamage, modelRenderer); } } } diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/fig/select_tool.d --- a/doodle/fig/select_tool.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/fig/select_tool.d Mon Aug 16 17:23:09 2010 +0930 @@ -43,14 +43,14 @@ return false; } - override void draw(in Rectangle screenDamage, scope Drawable screenDrawable) const { + override void draw(in Rectangle screenDamage, scope Renderer screenRenderer) const { if (_active) { - screenDrawable.pushState; { - screenDrawable.setLineStyle(Drawable.LineStyle.DASHED); - screenDrawable.setLineWidth(LINE_WIDTH); - screenDrawable.setColor(Color(0.0, 0.0, 0.5, 1.0)); - screenDrawable.drawRectangle(Rectangle(_currentPoint, _anchorPoint), false); - } screenDrawable.popState; + screenRenderer.pushState; { + screenRenderer.setLineStyle(Renderer.LineStyle.DASHED); + screenRenderer.setLineWidth(LINE_WIDTH); + screenRenderer.setColor(Color(0.0, 0.0, 0.5, 1.0)); + screenRenderer.drawRectangle(Rectangle(_currentPoint, _anchorPoint), false); + } screenRenderer.popState; } } diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/gtk/cairo.d --- a/doodle/gtk/cairo.d Mon Aug 16 17:16:36 2010 +0930 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -module doodle.gtk.cairo; - -public { - import doodle.tk.drawable; - import cairo.Context; -} - -final class CairoDrawable : Drawable { - this(Context cr) { - assert(cr); - _cr = cr; - } - - // Drawing overrides: - - void setLineStyle(LineStyle style) { - switch (style) { - case LineStyle.SOLID: - _cr.setDash([ ], 0.0); - break; - case LineStyle.DASHED: - _cr.setDash([ 4.0, 4.0 ], 0.0); - break; - case LineStyle.DOTTED: - _cr.setDash([ 1.0, 4.0 ], 0.0); - break; - default: - assert(0); - } - } - - void setLineWidth(in double width) { _cr.setLineWidth(width); } - - void setColor(in Color color) { _cr.setSourceRgba(color.r, color.g, color.b, color.a); } - - void translate(in Point p) { _cr.translate(p.x, p.y); } - void scale(in double s) { _cr.scale(s, s); } - - void pushState() { _cr.save; } - void popState() { _cr.restore; } - - void drawRectangle(in Rectangle rectangle, bool fill = false) { - _cr.rectangle(rectangle.position.x, rectangle.position.y, - rectangle.size.x, rectangle.size.y); - if (fill) { _cr.fill; } else { _cr.stroke; } - } - - void drawEllipse(in Rectangle rectangle, bool fill = false) { - // NYI - } - - void drawSegment(in Segment segment) { - _cr.moveTo(segment.begin.x, segment.begin.y); - _cr.lineTo(segment.end.x, segment.end.y); - _cr.stroke; - } - - void drawHLine(in double y, in double x0, in double x1) { - _cr.moveTo(x0, y); - _cr.lineTo(x1, y); - _cr.stroke; - } - - void drawVLine(in double x, in double y0, in double y1) { - _cr.moveTo(x, y0); - _cr.lineTo(x, y1); - } - - void drawPoly(in Point[] points, bool fill = false) { - assert(points.length >= 2); - foreach(i, p; points) { - if (i == 0) { _cr.moveTo(p.x, p.y); } - else { _cr.lineTo(p.x, p.y); } - } - if (fill) { _cr.fill; } else { _cr.stroke; } - } - - void setFontFace(in FontFace face) { - // NYI - } - - void setFontSize(in double size) { - // NYI - } - - void drawText(in string text) { - // NYI - } - - void measureText(in string text, out Rectangle logicalBounds, out Rectangle totalBounds) const { - // NYI - } - - private { - Context _cr; - } -} diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/gtk/cairo_canvas.d --- a/doodle/gtk/cairo_canvas.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/gtk/cairo_canvas.d Mon Aug 16 17:23:09 2010 +0930 @@ -9,7 +9,7 @@ import doodle.core.logging; import doodle.tk.screen_model; import doodle.dia.layer_stack; - import doodle.gtk.cairo; + import doodle.gtk.cairo_renderer; import cairo.Surface; import cairo.Context; @@ -208,7 +208,7 @@ bool onExpose(GdkEventExpose * event, Widget widget) { assert(widget is _drawingArea); - gdk.Drawable.Drawable dr = _drawingArea.getWindow; + Drawable dr = _drawingArea.getWindow; int width, height; dr.getSize(width, height); @@ -253,8 +253,8 @@ screenCr.fill; } screenCr.restore; - _layerStack.draw(screenDamage, new CairoDrawable(screenCr), - modelDamage, new CairoDrawable(modelCr)); + _layerStack.draw(screenDamage, new CairoRenderer(screenCr), + modelDamage, new CairoRenderer(modelCr)); } screenCr.restore; modelCr.restore; return true; diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/gtk/cairo_renderer.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/gtk/cairo_renderer.d Mon Aug 16 17:23:09 2010 +0930 @@ -0,0 +1,97 @@ +module doodle.gtk.cairo_renderer; + +public { + import doodle.tk.renderer; + import cairo.Context; +} + +final class CairoRenderer : Renderer { + this(Context cr) { + assert(cr); + _cr = cr; + } + + // Drawing overrides: + + void setLineStyle(LineStyle style) { + switch (style) { + case LineStyle.SOLID: + _cr.setDash([ ], 0.0); + break; + case LineStyle.DASHED: + _cr.setDash([ 4.0, 4.0 ], 0.0); + break; + case LineStyle.DOTTED: + _cr.setDash([ 1.0, 4.0 ], 0.0); + break; + default: + assert(0); + } + } + + void setLineWidth(in double width) { _cr.setLineWidth(width); } + + void setColor(in Color color) { _cr.setSourceRgba(color.r, color.g, color.b, color.a); } + + void translate(in Point p) { _cr.translate(p.x, p.y); } + void scale(in double s) { _cr.scale(s, s); } + + void pushState() { _cr.save; } + void popState() { _cr.restore; } + + void drawRectangle(in Rectangle rectangle, bool fill = false) { + _cr.rectangle(rectangle.position.x, rectangle.position.y, + rectangle.size.x, rectangle.size.y); + if (fill) { _cr.fill; } else { _cr.stroke; } + } + + void drawEllipse(in Rectangle rectangle, bool fill = false) { + // NYI + } + + void drawSegment(in Segment segment) { + _cr.moveTo(segment.begin.x, segment.begin.y); + _cr.lineTo(segment.end.x, segment.end.y); + _cr.stroke; + } + + void drawHLine(in double y, in double x0, in double x1) { + _cr.moveTo(x0, y); + _cr.lineTo(x1, y); + _cr.stroke; + } + + void drawVLine(in double x, in double y0, in double y1) { + _cr.moveTo(x, y0); + _cr.lineTo(x, y1); + } + + void drawPoly(in Point[] points, bool fill = false) { + assert(points.length >= 2); + foreach(i, p; points) { + if (i == 0) { _cr.moveTo(p.x, p.y); } + else { _cr.lineTo(p.x, p.y); } + } + if (fill) { _cr.fill; } else { _cr.stroke; } + } + + void setFontFace(in FontFace face) { + // NYI + } + + void setFontSize(in double size) { + // NYI + } + + void drawText(in string text) { + // NYI + } + + void measureText(in string text, out Rectangle logicalBounds, out Rectangle totalBounds) const { + // NYI + } + + private { + Context _cr; + } +} diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/gtk/opengl.d --- a/doodle/gtk/opengl.d Mon Aug 16 17:16:36 2010 +0930 +++ b/doodle/gtk/opengl.d Mon Aug 16 17:23:09 2010 +0930 @@ -1,11 +1,11 @@ module doodle.gtk.opengl; public { - import doodle.tk.drawable; + import doodle.tk.renderer; } /* -final class OpenGLDrawing : Drawable { +final class OpenGLRenderer : Renderer { // Drawing overrides: diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/tk/drawable.d --- a/doodle/tk/drawable.d Mon Aug 16 17:16:36 2010 +0930 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -module doodle.tk.drawable; - -public { - import doodle.tk.geometry; - import doodle.tk.color; -} - -interface Drawable { - enum LineStyle { - SOLID, - DASHED, - DOTTED - } - - enum FontFace { - NORMAL - } - - // Low-level state manipulation - - void setLineStyle(LineStyle style); - void setLineWidth(in double width); - void setColor(in Color color); - - void translate(in Point p); - void scale(in double s); - - void pushState(); // Copies all of current state - void popState(); // Restores all of previous state - - // High-level drawing routines - - void drawRectangle(in Rectangle rectangle, bool fill); - void drawEllipse(in Rectangle rectangle, bool fill); - void drawSegment(in Segment segment); - void drawHLine(in double y, in double x0, in double x1); - void drawVLine(in double x, in double y0, in double y1); - void drawPoly(in Point[] points, bool fill); - - // Text routines - - void setFontFace(in FontFace face); - void setFontSize(in double size); - void drawText(in string text); - - void measureText(in string text, out Rectangle logicalBounds, out Rectangle totalBounds) const; -} diff -r 06b4504cbcb0 -r cdd4fc728d94 doodle/tk/renderer.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/tk/renderer.d Mon Aug 16 17:23:09 2010 +0930 @@ -0,0 +1,47 @@ +module doodle.tk.renderer; + +public { + import doodle.tk.geometry; + import doodle.tk.color; +} + +interface Renderer { + enum LineStyle { + SOLID, + DASHED, + DOTTED + } + + enum FontFace { + NORMAL + } + + // Low-level state manipulation + + void setLineStyle(LineStyle style); + void setLineWidth(in double width); + void setColor(in Color color); + + void translate(in Point p); + void scale(in double s); + + void pushState(); // Copies all of current state + void popState(); // Restores all of previous state + + // High-level drawing routines + + void drawRectangle(in Rectangle rectangle, bool fill); + void drawEllipse(in Rectangle rectangle, bool fill); + void drawSegment(in Segment segment); + void drawHLine(in double y, in double x0, in double x1); + void drawVLine(in double x, in double y0, in double y1); + void drawPoly(in Point[] points, bool fill); + + // Text routines + + void setFontFace(in FontFace face); + void setFontSize(in double size); + void drawText(in string text); + + void measureText(in string text, out Rectangle logicalBounds, out Rectangle totalBounds) const; +}