1 |
# Copyright (c) 2001, 2002, 2003 by Intevation GmbH |
# Copyright (c) 2001, 2002, 2003, 2004 by Intevation GmbH |
2 |
# Authors: |
# Authors: |
3 |
# Bernhard Herzog <[email protected]> |
# Bernhard Herzog <[email protected]> |
4 |
# Jonathan Coles <[email protected]> |
# Jonathan Coles <[email protected]> |
42 |
# (layer_class, draw_function) pairs. If the renderer has to draw a |
# (layer_class, draw_function) pairs. If the renderer has to draw a |
43 |
# non-builtin layer type, i.e. a layer that is not a subclass of Layer |
# non-builtin layer type, i.e. a layer that is not a subclass of Layer |
44 |
# or RasterLayer, it iterates through that list, tests whether the layer |
# or RasterLayer, it iterates through that list, tests whether the layer |
45 |
# to be drawin is an instance of layer_class and if so calls |
# to be drawn is an instance of layer_class and if so calls |
46 |
# draw_function with the renderer and the layer as arguments. Since |
# draw_function with the renderer and the layer as arguments. Since |
47 |
# drawing is done incrementally, the draw_function should return an |
# drawing is done incrementally, the draw_function should return an |
48 |
# iterable. The easiest way is to simply implement the draw_function as |
# iterable. The easiest way is to simply implement the draw_function as |
64 |
function should return an iterable. The easiest way is to simply |
function should return an iterable. The easiest way is to simply |
65 |
implement the draw_function as a generator and to yield True in |
implement the draw_function as a generator and to yield True in |
66 |
suitable places, or to return the empty tuple if it's not possible |
suitable places, or to return the empty tuple if it's not possible |
67 |
to do the rendering in incrementally. |
to do the rendering incrementally. |
68 |
""" |
""" |
69 |
_renderer_extensions.append((layer_class, function)) |
_renderer_extensions.append((layer_class, function)) |
70 |
|
|
198 |
# if honor_visibility is true, only draw visible layers, |
# if honor_visibility is true, only draw visible layers, |
199 |
# otherwise draw all layers |
# otherwise draw all layers |
200 |
if not self.honor_visibility or layer.Visible(): |
if not self.honor_visibility or layer.Visible(): |
201 |
if isinstance(layer, Layer) and seenRaster: |
if isinstance(layer, Layer): |
202 |
for i in self.draw_shape_layer_incrementally(layer): |
if seenRaster: |
203 |
yield True |
for i in self.draw_shape_layer_incrementally(layer): |
204 |
|
yield True |
205 |
elif isinstance(layer, RasterLayer) \ |
elif isinstance(layer, RasterLayer) \ |
206 |
and Thuban.Model.resource.has_gdal_support(): |
and Thuban.Model.resource.has_gdal_support(): |
207 |
self.draw_raster_layer(layer) |
self.draw_raster_layer(layer) |
289 |
data = shape.RawData() |
data = shape.RawData() |
290 |
else: |
else: |
291 |
data = shape.Points() |
data = shape.Points() |
292 |
draw_func(draw_func_param, data, pen, brush) |
if draw_func == self.draw_point_shape: |
293 |
|
draw_func(draw_func_param, data, pen, brush, |
294 |
|
size = group.GetProperties().GetSize()) |
295 |
|
else: |
296 |
|
draw_func(draw_func_param, data, pen, brush) |
297 |
if count % 500 == 0: |
if count % 500 == 0: |
298 |
yield True |
yield True |
299 |
|
|
425 |
for part in points: |
for part in points: |
426 |
self.dc.DrawLines(part) |
self.dc.DrawLines(part) |
427 |
|
|
428 |
def draw_point_shape(self, layer, points, pen, brush): |
def draw_point_shape(self, layer, points, pen, brush, size = 5): |
429 |
"""Draw a point shape from layer with the given brush and pen |
"""Draw a point shape from layer with the given brush and pen |
430 |
|
|
431 |
The shape is given by points argument which is a the return |
The shape is given by points argument which is a the return |
439 |
if not points: |
if not points: |
440 |
return |
return |
441 |
|
|
442 |
radius = int(round(self.resolution * 5)) |
radius = int(round(self.resolution * size)) |
443 |
self.dc.SetBrush(brush) |
self.dc.SetBrush(brush) |
444 |
self.dc.SetPen(pen) |
self.dc.SetPen(pen) |
445 |
for part in points: |
for part in points: |