annotate doodle/gtk/opengl_canvas.d @ 85:98980cee8c5b

More work trying to support OpenGL as a renderer
author daveb
date Mon, 16 Aug 2010 17:59:42 +0930
parents
children 8a491b67bc46
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
85
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
1 module doodle.gtk.opengl_canvas;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
2
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
3 public {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
4 import doodle.dia.icanvas;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
5 import doodle.gtk.events;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
6 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
7
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
8 private {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
9 import doodle.core.logging;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
10 import doodle.tk.screen_model;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
11 import doodle.dia.layer_stack;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
12 import doodle.gtk.cairo_renderer;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
13
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
14 import cairo.Surface;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
15 import cairo.Context;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
16
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
17 import gtk.Widget;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
18 import gtk.Toolbar;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
19 import gtk.Table;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
20 import gtk.HRuler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
21 import gtk.VRuler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
22 import gtk.Range;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
23 import gtk.HScrollbar;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
24 import gtk.VScrollbar;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
25 import gtk.DrawingArea;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
26 import gtk.Adjustment;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
27
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
28 import gdk.Drawable;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
29
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
30 import gtkc.gtk;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
31 import gtkc.gtktypes;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
32 //import gtkc.gdktypes;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
33
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
34 import std.math;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
35 import std.stdio;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
36 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
37
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
38 final class OpenGLCanvas : Table, private IViewport {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
39 this(in Layer[] layers, IEventHandler eventHandler, IGrid grid, in double pixelsPerMillimetre) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
40 super(3, 3, 0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
41
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
42 _damageScreen = Rectangle.DEFAULT;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
43
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
44 _eventHandler = eventHandler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
45 _grid = grid;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
46 _pixelsPerMillimetre = pixelsPerMillimetre;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
47
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
48 _layerStack = new LayerStack(layers);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
49
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
50 // Create our child widgets and register callbacks
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
51
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
52 _hRuler = new HRuler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
53 attach(_hRuler,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
54 1, 2,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
55 0, 1,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
56 AttachOptions.FILL | AttachOptions.EXPAND, AttachOptions.SHRINK,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
57 0, 0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
58 _hRuler.setMetric(MetricType.PIXELS);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
59
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
60 _vRuler = new VRuler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
61 attach(_vRuler,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
62 0, 1,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
63 1, 2,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
64 AttachOptions.SHRINK, AttachOptions.FILL | AttachOptions.EXPAND,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
65 0, 0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
66 _vRuler.setMetric(MetricType.PIXELS);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
67
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
68 _drawingArea = new GLDrawingArea;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
69 _drawingArea.addOnRealize(&onRealize);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
70 _drawingArea.addOnConfigure(&onConfigure);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
71 _drawingArea.addOnExpose(&onExpose);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
72 _drawingArea.addOnButtonPress(&onButtonPress);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
73 _drawingArea.addOnButtonRelease(&onButtonRelease);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
74 _drawingArea.addOnKeyPress(&onKeyPressEvent);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
75 _drawingArea.addOnKeyRelease(&onKeyReleaseEvent);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
76 _drawingArea.addOnMotionNotify(&onMotionNotify);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
77 _drawingArea.addOnScroll(&onScroll);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
78 _drawingArea.addOnEnterNotify(&onEnterNotify);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
79 _drawingArea.addOnLeaveNotify(&onLeaveNotify);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
80
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
81 _drawingArea.addOnFocusIn(&onFocusIn);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
82 _drawingArea.addOnFocusOut(&onFocusOut);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
83 _drawingArea.addOnMoveFocus(&onMoveFocus);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
84 _drawingArea.addOnGrabBroken(&onGrabBroken);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
85 _drawingArea.addOnGrabFocus(&onGrabFocus);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
86 _drawingArea.addOnGrabNotify(&onGrabNotify);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
87 // addOnPopupMenu
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
88 // addOnQueryTooltip
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
89 // addOnSelection*
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
90 _drawingArea.setEvents(EventMask.EXPOSURE_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
91 EventMask.POINTER_MOTION_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
92 EventMask.POINTER_MOTION_HINT_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
93 EventMask.BUTTON_MOTION_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
94 EventMask.BUTTON_PRESS_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
95 EventMask.BUTTON_RELEASE_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
96 EventMask.KEY_PRESS_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
97 EventMask.KEY_RELEASE_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
98 EventMask.ENTER_NOTIFY_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
99 EventMask.LEAVE_NOTIFY_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
100 EventMask.FOCUS_CHANGE_MASK |
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
101 EventMask.SCROLL_MASK);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
102
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
103 _drawingArea.setCanFocus(true);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
104
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
105 attach(_drawingArea,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
106 1, 2,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
107 1, 2,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
108 AttachOptions.FILL | AttachOptions.EXPAND, AttachOptions.FILL | AttachOptions.EXPAND,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
109 0, 0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
110
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
111 // value, lower, upper, step-inc, page-inc, page-size
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
112 // Give the adjustments dummy values until we receive a configure
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
113 _hAdjustment = new Adjustment(0.0, 0.0, 1.0, 0.2, 0.5, 0.5);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
114 _hAdjustment.addOnValueChanged(&onAdjustmentValueChanged);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
115 _hScrollbar = new HScrollbar(_hAdjustment);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
116 _hScrollbar.setInverted(false);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
117 attach(_hScrollbar,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
118 1, 2,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
119 2, 3,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
120 AttachOptions.FILL | AttachOptions.EXPAND,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
121 AttachOptions.SHRINK,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
122 0, 0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
123
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
124 _vAdjustment = new Adjustment(0.0, 0.0, 1.0, 0.2, 0.5, 0.5);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
125 _vAdjustment.addOnValueChanged(&onAdjustmentValueChanged);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
126 _vScrollbar = new VScrollbar(_vAdjustment);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
127 _vScrollbar.setInverted(true);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
128 attach(_vScrollbar,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
129 2, 3,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
130 1, 2,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
131 AttachOptions.SHRINK,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
132 AttachOptions.FILL | AttachOptions.EXPAND,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
133 0, 0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
134
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
135 _cursors = [
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
136 Cursor.DEFAULT : CursorType.ARROW,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
137 Cursor.HAND : CursorType.HAND1,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
138 Cursor.CROSSHAIR : CursorType.CROSSHAIR,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
139 Cursor.PENCIL : CursorType.PENCIL
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
140 ];
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
141 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
142
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
143 protected { // XXX the compiler complains about unimplemented methods if this is private
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
144
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
145 // IViewport overrides:
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
146
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
147 void zoomRelative(in Point screenDatum, in double factor) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
148 _screenModel.zoomRelative(factor, screenDatum);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
149 consolidateBounds;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
150 updateAdjustments;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
151 updateRulers;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
152 _grid.zoomChanged(_screenModel.zoom);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
153 queueDraw;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
154 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
155
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
156 void panRelative(in Vector screenDisplacement) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
157 _screenModel.panRelativeScreen(screenDisplacement);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
158 consolidateBounds;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
159 updateAdjustments;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
160 updateRulers;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
161 queueDraw;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
162 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
163
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
164 void setCursor(in Cursor cursor) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
165 _drawingArea.setCursor(new gdk.Cursor.Cursor(_cursors[cursor]));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
166 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
167
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
168 void damageModel(in Rectangle area) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
169 _damageScreen = _damageScreen | _screenModel.modelToScreen(area);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
170 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
171
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
172 void damageScreen(in Rectangle area) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
173 _damageScreen = _damageScreen | area;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
174 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
175 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
176
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
177 private {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
178
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
179 void initialiseBounds(in Rectangle viewBoundsScreen) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
180 Rectangle layerBounds = _layerStack.bounds;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
181 Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
182 _screenModel = new ScreenModel(0.25 * _pixelsPerMillimetre, paddedLayerBounds, viewBoundsScreen);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
183 _grid.zoomChanged(_screenModel.zoom);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
184
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
185 updateAdjustments;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
186 updateRulers;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
187 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
188
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
189 void consolidateBounds() {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
190 Rectangle layerBounds = _layerStack.bounds;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
191 Rectangle paddedLayerBounds = growCentre(layerBounds, 2 * layerBounds.size);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
192 _screenModel.consolidateCanvasBounds(paddedLayerBounds);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
193
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
194 updateAdjustments;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
195 updateRulers;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
196 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
197
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
198 bool onConfigure(GdkEventConfigure * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
199 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
200 assert(event);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
201
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
202 trace("onConfigure %sx%s", event.width, event.height);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
203
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
204 Rectangle viewBoundsScreen = Rectangle(Point(0.0, 0.0), Vector(cast(double)event.width, cast(double)event.height));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
205 if (_screenModel is null) { initialiseBounds(viewBoundsScreen); }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
206 else { consolidateBounds; }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
207
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
208 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
209 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
210
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
211 bool onExpose(GdkEventExpose * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
212 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
213 assert(event);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
214
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
215 trace("onExpose %sx%s", event.area.width, event.area.height);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
216
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
217 /+
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
218 Drawable dr = _drawingArea.getWindow;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
219
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
220 int width, height;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
221 dr.getSize(width, height);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
222 //trace("Got expose %dx%d\n", width, height);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
223
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
224 scope modelCr = new Context(dr);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
225 scope screenCr = new Context(dr);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
226
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
227 Rectangle screenDamage =
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
228 event is null ? _screenModel.viewBoundsScreen :
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
229 Rectangle(_screenModel.viewBoundsScreen.position + Vector(cast(double)event.area.x, _screenModel.viewBoundsScreen.h - cast(double)(event.area.y + event.area.height)),
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
230 Vector(cast(double)event.area.width, cast(double)event.area.height));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
231
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
232 Rectangle modelDamage = _screenModel.screenToModel(screenDamage);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
233
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
234 modelCr.save; screenCr.save; {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
235 {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
236 // Setup model context and clip
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
237 modelCr.translate(0.0, _screenModel.viewBoundsScreen.h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
238 modelCr.scale(_screenModel.zoom, -_screenModel.zoom);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
239
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
240 immutable Point viewLeftBottom = _screenModel.screenToModel(Point(0.0, 0.0));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
241 modelCr.translate(-viewLeftBottom.x, -viewLeftBottom.y);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
242
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
243 modelCr.rectangle(modelDamage.x0, modelDamage.y0, modelDamage.w, modelDamage.h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
244 modelCr.clip;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
245 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
246
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
247 {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
248 // Setup screen context and clip
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
249 screenCr.translate(0.0, _screenModel.viewBoundsScreen.h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
250 screenCr.scale(1.0, -1.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
251
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
252 screenCr.rectangle(screenDamage.x0, screenDamage.y0, screenDamage.w, screenDamage.h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
253 screenCr.clip;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
254 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
255
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
256 screenCr.save; {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
257 // Fill the background with light grey
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
258 screenCr.setSourceRgba(0.9, 0.9, 0.9, 1.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
259 screenCr.rectangle(screenDamage.x0, screenDamage.y0, screenDamage.w, screenDamage.h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
260 screenCr.fill;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
261 } screenCr.restore;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
262
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
263 _layerStack.draw(screenDamage, new CairoRenderer(screenCr),
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
264 modelDamage, new CairoRenderer(modelCr));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
265 } screenCr.restore; modelCr.restore;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
266
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
267 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
268 +/
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
269
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
270 return false;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
271 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
272
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
273 bool onButtonPress(GdkEventButton * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
274 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
275 _eventHandler.handleButtonPress(this, makeButtonEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
276 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
277 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
278 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
279
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
280 bool onButtonRelease(GdkEventButton * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
281 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
282 _eventHandler.handleButtonRelease(this, makeButtonEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
283 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
284 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
285 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
286
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
287 bool onKeyPressEvent(GdkEventKey * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
288 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
289 _eventHandler.handleKeyPress(this, makeKeyEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
290 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
291 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
292 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
293
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
294 bool onKeyReleaseEvent(GdkEventKey * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
295 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
296 _eventHandler.handleKeyRelease(this, makeKeyEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
297 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
298 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
299 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
300
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
301 bool onMotionNotify(GdkEventMotion * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
302 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
303
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
304 // Pass the events on to the rulers so that they update
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
305 gtk_widget_event(_hRuler.getWidgetStruct(), cast(GdkEvent *)event);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
306 gtk_widget_event(_vRuler.getWidgetStruct(), cast(GdkEvent *)event);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
307
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
308 _eventHandler.handleMotion(this, makeMotionEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
309 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
310 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
311 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
312
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
313 bool onScroll(GdkEventScroll * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
314 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
315 _eventHandler.handleScroll(this, makeScrollEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
316 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
317 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
318 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
319
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
320 bool onEnterNotify(GdkEventCrossing * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
321 trace("1");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
322 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
323 trace("2");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
324 _eventHandler.handleEnter(this, makeCrossingEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
325 trace("3");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
326 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
327 trace("4");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
328 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
329 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
330
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
331 bool onLeaveNotify(GdkEventCrossing * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
332 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
333 _eventHandler.handleLeave(this, makeCrossingEvent(event, _screenModel));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
334 fixDamage;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
335 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
336 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
337
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
338 bool onFocusIn(GdkEventFocus * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
339 trace("onFocusIn");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
340 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
341 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
342
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
343 bool onFocusOut(GdkEventFocus * event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
344 trace("onFocusOut");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
345 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
346 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
347
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
348 void onMoveFocus(GtkDirectionType direction, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
349 trace("onMoveFocus");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
350 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
351
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
352 bool onGrabBroken(gdk.Event.Event event, Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
353 trace("onGrabBroken");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
354 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
355 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
356
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
357 void onGrabFocus(Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
358 //trace("onGrabFocus");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
359 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
360
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
361 void onGrabNotify(gboolean what, Widget widget){
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
362 trace("onGrabNotify");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
363 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
364
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
365 void onAdjustmentValueChanged(Adjustment adjustment) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
366 GtkAdjustment * hGtkAdjustment = _hAdjustment.getAdjustmentStruct;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
367 GtkAdjustment * vGtkAdjustment = _vAdjustment.getAdjustmentStruct;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
368
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
369 Point oldViewLeftBottom = _screenModel.screenToModel(Point(0.0, 0.0));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
370 Point newViewLeftBottom = Point(gtk_adjustment_get_value(hGtkAdjustment),
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
371 gtk_adjustment_get_value(vGtkAdjustment));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
372
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
373 _screenModel.panRelativeModel(newViewLeftBottom - oldViewLeftBottom);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
374
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
375 updateRulers;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
376 queueDraw;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
377 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
378
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
379 void updateRulers() {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
380 immutable Point viewLeftBottom = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
381 immutable Point viewRightTop = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner1);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
382
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
383 // Define these just to obtain the position
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
384 // below so we can preserve it
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
385 double lower, upper, position, maxSize;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
386
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
387 _hRuler.getRange(lower, upper, position, maxSize);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
388 _hRuler.setRange(viewLeftBottom.x,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
389 viewRightTop.x,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
390 position,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
391 _screenModel.zoom * 50.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
392
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
393 _vRuler.getRange(lower, upper, position, maxSize);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
394 _vRuler.setRange(viewRightTop.y,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
395 viewLeftBottom.y,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
396 position,
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
397 _screenModel.zoom * 50.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
398 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
399
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
400 void updateAdjustments() {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
401 immutable Point viewLeftBottom = _screenModel.screenToModel(Point(0.0, 0.0));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
402 immutable Point viewRightTop = _screenModel.screenToModel(_screenModel.viewBoundsScreen.corner1);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
403
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
404 // Adjust the canvas size if necessary
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
405 _screenModel.canvasAccommodate(Rectangle(viewLeftBottom, viewRightTop));
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
406
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
407 Rectangle viewBoundsModel = _screenModel.viewBoundsModel;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
408
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
409 // Update the adjustments
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
410
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
411 GtkAdjustment * hGtkAdjustment = _hAdjustment.getAdjustmentStruct;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
412 GtkAdjustment * vGtkAdjustment = _vAdjustment.getAdjustmentStruct;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
413
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
414 gtk_adjustment_set_lower(hGtkAdjustment, _screenModel.canvasBoundsModel.x0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
415 gtk_adjustment_set_upper(hGtkAdjustment, _screenModel.canvasBoundsModel.x1);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
416 gtk_adjustment_set_value(hGtkAdjustment, viewLeftBottom.x);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
417 gtk_adjustment_set_step_increment(hGtkAdjustment, _screenModel.canvasBoundsModel.w / 16.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
418 gtk_adjustment_set_page_increment(hGtkAdjustment, _screenModel.canvasBoundsModel.w / 4.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
419 gtk_adjustment_set_page_size(hGtkAdjustment, viewBoundsModel.w);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
420
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
421 gtk_adjustment_set_lower(vGtkAdjustment, _screenModel.canvasBoundsModel.y0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
422 gtk_adjustment_set_upper(vGtkAdjustment, _screenModel.canvasBoundsModel.y1);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
423 gtk_adjustment_set_value(vGtkAdjustment, viewLeftBottom.y);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
424 gtk_adjustment_set_step_increment(vGtkAdjustment, _screenModel.canvasBoundsModel.h / 16.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
425 gtk_adjustment_set_page_increment(vGtkAdjustment, _screenModel.canvasBoundsModel.h / 4.0);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
426 gtk_adjustment_set_page_size(vGtkAdjustment, viewBoundsModel.h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
427
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
428 _hAdjustment.changed;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
429 _hAdjustment.valueChanged;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
430 _vAdjustment.changed;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
431 _vAdjustment.valueChanged;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
432 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
433
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
434 void fixDamage() {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
435 if (_damageScreen.valid) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
436 int x, y, w, h;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
437 _damageScreen.getQuantised(x, y, w, h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
438 _drawingArea.queueDrawArea(x, cast(int)_screenModel.viewBoundsScreen.h - (y + h), w, h);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
439 _damageScreen = Rectangle.DEFAULT;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
440 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
441 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
442
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
443 void onRealize(Widget widget) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
444 assert(widget is _drawingArea);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
445 _drawingArea.grabFocus();
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
446 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
447
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
448 IEventHandler _eventHandler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
449 IGrid _grid;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
450 double _pixelsPerMillimetre;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
451 LayerStack _layerStack;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
452
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
453 // Child widgets:
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
454 HRuler _hRuler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
455 VRuler _vRuler;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
456 DrawingArea _drawingArea;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
457 Adjustment _hAdjustment;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
458 HScrollbar _hScrollbar;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
459 Adjustment _vAdjustment;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
460 VScrollbar _vScrollbar;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
461
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
462 Rectangle _damageScreen;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
463 ScreenModel _screenModel;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
464
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
465 immutable CursorType[Cursor] _cursors;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
466 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
467 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
468
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
469 private import gtk.DrawingArea;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
470 private import glgtk.GLCapability;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
471 private import glgdk.GLDrawable;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
472 private import glgdk.GLConfig;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
473 private import glgdk.GLContext;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
474 private import gtkglc.glgdktypes;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
475
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
476 private import gtkglc.gl;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
477 private import gtkglc.glu;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
478
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
479 private import gdk.Event;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
480
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
481 private import gtk.Widget;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
482
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
483 private import gtk.Main;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
484 private import gtk.MainWindow;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
485
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
486 class GLDrawingArea : DrawingArea {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
487 GLfloat width;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
488 GLfloat height;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
489
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
490 /** need to include the mixin to add GL capabilities to this widget */
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
491 mixin GLCapability;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
492
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
493 /**
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
494 * Construct a simple DrawingArea and sets the GLCapabilities
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
495 */
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
496 this() {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
497 setGLCapability(); // set the GL capabilities for this widget
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
498 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
499
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
500 /**
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
501 * put any gl initializations here
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
502 * returns true to consume the event
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
503 */
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
504 bool initGL() {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
505 trace("initGL");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
506
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
507 resizeGL(null);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
508 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
509 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
510
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
511 /**
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
512 * This method is called every time the window must be paint or repaint
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
513 * This is where you put the OpenGL call to draw something.
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
514 * This method call be called directly by the application without an event object
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
515 * to force redrawing of the scene.
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
516 * returns true to consume the event
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
517 */
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
518 bool drawGL(GdkEventExpose* event = null) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
519 trace("drawGL");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
520
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
521 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
522 glLoadIdentity ();
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
523
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
524 gluLookAt(0, 0, 10, 0, 0, 0, 0, 1,0); //Set the camera position
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
525
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
526 //Just Draw a tri-colored triangle
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
527 glBegin(GL_TRIANGLES);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
528 glColor3f(1.0f,0.0f,0.0f);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
529 glVertex3f( 0.0f, 1.0f, 0.0f);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
530 glColor3f(0.0f,1.0f,0.0f);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
531 glVertex3f(-1.0f,-1.0f, 0.0f);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
532 glColor3f(0.0f,0.0f,1.0f);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
533 glVertex3f( 1.0f,-1.0f, 0.0f);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
534 glEnd();
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
535
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
536 return true;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
537 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
538
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
539 /**
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
540 * This method is called when the window is resized
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
541 * returns true to consume the event
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
542 */
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
543 bool resizeGL(GdkEventConfigure* event = null) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
544 trace("resizeGL");
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
545
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
546 if (event == null) {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
547 width = getWidth();
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
548 height = getHeight();
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
549 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
550 else {
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
551 width = event.width;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
552 height = event.height;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
553 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
554
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
555 trace("Size %sx%s", width, height);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
556
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
557 glViewport(0, 0, cast(int)width, cast(int)height); //Adjust the viewport according to new window dimensions
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
558
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
559 /*
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
560 * Update the projection Matrix accoding to the new dimension
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
561 * and reset the OpenGL state to MODELVIEW
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
562 */
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
563 glMatrixMode(GL_PROJECTION);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
564 glLoadIdentity();
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
565 gluPerspective(20, width/height, 0.1, 10);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
566 glMatrixMode(GL_MODELVIEW);
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
567
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
568 return false;
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
569 }
98980cee8c5b More work trying to support OpenGL as a renderer
daveb
parents:
diff changeset
570 }