/[thuban]/branches/WIP-pyshapelib-bramz/test/test_baserenderer.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/test_baserenderer.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1585 by bh, Fri Aug 15 10:26:40 2003 UTC revision 2571 by jonathan, Fri Feb 18 14:54:17 2005 UTC
# Line 22  support.initthuban() Line 22  support.initthuban()
22  from Thuban.Model.color import Transparent, Color  from Thuban.Model.color import Transparent, Color
23  from Thuban.Model.data import SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT  from Thuban.Model.data import SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT
24  from Thuban.Model.map import Map  from Thuban.Model.map import Map
25  from Thuban.Model.layer import Layer, RasterLayer  from Thuban.Model.layer import BaseLayer, Layer, RasterLayer
26  from Thuban.Model.table import MemoryTable, \  from Thuban.Model.table import MemoryTable, \
27       FIELDTYPE_DOUBLE, FIELDTYPE_INT, FIELDTYPE_STRING       FIELDTYPE_DOUBLE, FIELDTYPE_INT, FIELDTYPE_STRING
28  from Thuban.Model.classification import ClassGroupSingleton  from Thuban.Model.classification import ClassGroupSingleton
29  import Thuban.Model.resource  import Thuban.Model.resource
30    
31    
32  from Thuban.UI.baserenderer import BaseRenderer  from Thuban.UI.baserenderer import BaseRenderer, \
33         add_renderer_extension, init_renderer_extensions
34    
35    if Thuban.Model.resource.has_gdal_support():
36        from gdalwarp import ProjectRasterFile
37    
38  class MockDC:  class MockDC:
39    
# Line 88  class SimpleRenderer(BaseRenderer): Line 91  class SimpleRenderer(BaseRenderer):
91      def label_font(self):      def label_font(self):
92          return "label font"          return "label font"
93    
94      def draw_raster_data(self, data):      def draw_raster_data(self, x, y, data, format='BMP'):
95          self.raster_data = data          self.raster_data = data
96            self.raster_format = format
97    
98        def projected_raster_layer(self, layer, srcProj, dstProj, extents,
99                                   resolution, dimensions, options):
100    
101            if not Thuban.Model.resource.has_gdal_support():
102                raise support.SkipTest("No gdal support")
103    
104            #print srcProj, dstProj,extents, resolution, dimensions, options
105    
106            return ProjectRasterFile(layer.GetImageFilename(),
107                                     srcProj, dstProj,
108                                     extents, resolution, dimensions,
109                                     options)
110    
111  class MockProjection:  class MockProjection:
112    
113      """Objects that look like projections but simply apply non-uniform scalings      """Objects that look like projections but simply apply non-uniform scalings
# Line 137  class TestBaseRenderer(unittest.TestCase Line 153  class TestBaseRenderer(unittest.TestCase
153          map.AddLayer(layer)          map.AddLayer(layer)
154    
155          dc = MockDC()          dc = MockDC()
156          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
157    
158          renderer.render_map(map)          renderer.render_map()
159    
160          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
161                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 167  class TestBaseRenderer(unittest.TestCase Line 183  class TestBaseRenderer(unittest.TestCase
183          self.to_destroy.append(map)          self.to_destroy.append(map)
184    
185          dc = MockDC()          dc = MockDC()
186          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
187    
188          renderer.render_map(map)          renderer.render_map()
189    
190          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
191                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 206  class TestBaseRenderer(unittest.TestCase Line 222  class TestBaseRenderer(unittest.TestCase
222          self.to_destroy.append(map)          self.to_destroy.append(map)
223    
224          dc = MockDC()          dc = MockDC()
225          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
226    
227          renderer.render_map(map)          renderer.render_map()
228    
229          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
230                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 245  class TestBaseRenderer(unittest.TestCase Line 261  class TestBaseRenderer(unittest.TestCase
261          self.to_destroy.append(map)          self.to_destroy.append(map)
262    
263          dc = MockDC()          dc = MockDC()
264          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
265    
266          renderer.render_map(map)          renderer.render_map()
267    
268          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
269                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 260  class TestBaseRenderer(unittest.TestCase Line 276  class TestBaseRenderer(unittest.TestCase
276                             ('SetFont', "label font"),                             ('SetFont', "label font"),
277                             ('EndDrawing',)])                             ('EndDrawing',)])
278    
279        def test_projected_raster_layer(self):
280            if not Thuban.Model.resource.has_gdal_support():
281                raise support.SkipTest("No gdal support")
282    
283            layer = RasterLayer("raster layer",
284                                os.path.join("..", "Data", "iceland",
285                                             "island.tif"))
286    
287            dc = MockDC(size = (20, 20))
288            renderer = SimpleRenderer(dc, map, 34, (800, 2250))
289    
290            # The reference data as a base64 coded RAW image
291            raw_data = binascii.a2b_base64(
292                'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
293                'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
294                'ICJooCIo4CCpoCQnoGOn4CDpYCOn4CUmbmUmbmNo6aEpYCLoYCAqICGpICFpICUmb'
295                'mAt4CUmbmNo6aAtICArYCAqoCKoYCMoICTnYKOn4CFpICUmbmUmbmUmbmUmbmAp4C'
296                'NoICArYCAr4CCpoCAqYCCpoCEpYCHo4CFpICHo4CGpICFpICKoYCTnYKMoICAp4CU'
297                'mbmUmbmUmbmUmbmUmbmUmbmAtYCAroCArYCCpoCAtYCAroCAtICAsYCUmbmAt4CAq'
298                'YCAroCMoICAs4CAs4CAtYCAt4CAqYCUmbmUmbmUmbmUmbmAtoCAtYCAq4CAtoCBp4'
299                'CAroCAqoCAq4CAr4CDpYCGpICAt4CAsICDpYCArICCpoCHo4CAs4CAuICUmbmUmbm'
300                'UmbmUmbmUmbmUmbmAuICAqICFpYCAq4CDpoCAqYCFpICAqYCUmbmNo6aAsYCCpoCD'
301                'pYCAqICAtoCUmbmAt4CAqoCCpoCAroCHo4CAsYCAq4CAsICAs4CAp4CUmbmAtYCAq'
302                'YCIooCHo4CAsICAr4CAqICEpYCAs4CAqICArICDpYCEpYCEpYCAr4CUmbmEpYCAs4'
303                'CAtICAs4CAqYCUmbmAtoCAp4CCpoCDpYCAq4CArICAqoCAqYCAqYCAtYCAtoCDpYC'
304                'At4CUmbmUmbmUmbmUmbmAt4CAsoCAsoCAp4CAp4CCpoCAsoCAt4CNo6aUmbmUmbmU'
305                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAt4CAtYCCpoCAqICAroCAr4CUmbmUm'
306                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
307                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
308                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
309                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
310                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
311                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
312                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
313                'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
314                'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
315                'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
316                'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
317    
318            raw_mask = binascii.a2b_base64(
319                '//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P//8P/'
320                '/8P//8P//8P//8P//8P\n')
321    
322            raw_mask_inverted = binascii.a2b_base64(
323                'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
324                'AAAAAAAAAAAAAAAAAAA\n')
325    
326            raw_alpha = binascii.a2b_base64(
327                '/////////////////////////////////////////////////////////////'
328                '/////////////////////////////////////////////////////////////'
329                '/////////////////////////////////////////////////////////////'
330                '/////////////////////////////////////////////////////////////'
331                '/////////////////////////////////////////////////////////////'
332                '/////////////////////////////////////////////////////////////'
333                '/////////////////////////////////////////////////////////////'
334                '/////////////////////////////////////////////////////////////'
335                '/////////////////////////////////////////////w==\n')
336    
337            for opts, data in [[1,   (raw_data, raw_mask,          None)],
338                               [1|4, (raw_data, raw_mask_inverted, None)],
339                               [2,   (raw_data, None,              raw_alpha)]]:
340    
341                img_data = renderer.projected_raster_layer(layer, "", "",
342                                (-24, 65, -23, 66), [0, 0], (20, 20), opts)
343                self.assertEquals(img_data, data)
344    
345      def test_raster_no_projection(self):      def test_raster_no_projection(self):
346          """Test BaseRenderer with raster layer and no projections          """Test BaseRenderer with raster layer and no projections
347    
# Line 275  class TestBaseRenderer(unittest.TestCase Line 357  class TestBaseRenderer(unittest.TestCase
357          layer = RasterLayer("raster layer",          layer = RasterLayer("raster layer",
358                              os.path.join("..", "Data", "iceland",                              os.path.join("..", "Data", "iceland",
359                                           "island.tif"))                                           "island.tif"))
360            layer.SetMaskType(layer.MASK_NONE)
361    
362          map.AddLayer(layer)          map.AddLayer(layer)
363          self.to_destroy.append(map)          self.to_destroy.append(map)
364    
365          dc = MockDC(size = (20, 20))          dc = MockDC(size = (20, 20))
366          renderer = SimpleRenderer(dc, 34, (800, 2250))          renderer = SimpleRenderer(dc, map, 34, (800, 2250))
367    
368          renderer.render_map(map)          renderer.render_map()
369    
370          # The following commented out code block can be used to generate          # The following commented out code block can be used to generate
371          # the base64 coded reference image data          # the base64 coded reference image data
372          #hexed = binascii.b2a_base64(renderer.raster_data)          #hexed = binascii.b2a_base64(renderer.raster_data[2][0])
373          #while hexed:          #while hexed:
374          #    print repr(hexed[:65])              #print repr(hexed[:65])
375          #    hexed = hexed[65:]              #hexed = hexed[65:]
376    
377          # The reference data as a base64 coded BMP image          # The reference data as a base64 coded RAW image
378          raw_data = binascii.a2b_base64(          raw_data = binascii.a2b_base64(
379              'Qk3GBQAAAAAAADYEAAAoAAAAFAAAABQAAAABAAgAAAAAAJABAAAAAAAAAAAAAAABA'              'UmbmUmbmUmbmUmbmUmbmAtYCJooCAtICAq4CJooCArICAuICArICAuYCAs4COn4CO'
380              'AAAAAAAApYOAALGAgAGfjoAHmZyACZ2egAujo4AArICAE66GgACngIA5mZSAJqONg'              'n4CAq4CAuICFpICUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAuYCAqICAqoCAqoCFp'
381              'ACzgIAAoIyABZqZgAO4uYAAtICAAKqAgAScloAAtYCADKepgAS2t4AAooiAALaAgA'              'ICJooCIo4CCpoCQnoGOn4CDpYCOn4CUmbmUmbmNo6aEpYCLoYCAqICGpICFpICUmb'
382              'CtgIAHsbOAAp2TgACogIAFtbaACqOigAidnoAAuICADKaogACfjoAAr4CAAKSFgAm'              'mAt4CUmbmNo6aAtICArYCAqoCKoYCMoICTnYKOn4CFpICUmbmUmbmUmbmUmbmAp4C'
383              'fnoAAo4eABrS1gAibnoAHsbKAAp6SgACmg4AGs7SACLCxgAqioIAAoYqAAZ6RgACm'              'NoICArYCAr4CCpoCAqYCCpoCEpYCHo4CFpICHo4CGpICFpICKoYCTnYKMoICAp4CU'
384              'goAKrK6AALmAgAC3gIAApIaABZqagACngYAAo4iAAKmAgAivsYAJoJ6AALCAgACyg'              'mbmUmbmUmbmUmbmUmbmUmbmAtYCAroCArYCCpoCAtYCAroCAtICAsYCUmbmAt4CAq'
385              'IAAq4CAAKWEgAOclYALpqeAAK6AgACgjYAEm5eAAKKKgAGekIAHmp6ABpmcgAChi4'              'YCAroCMoICAs4CAs4CAtYCAt4CAqYCUmbmUmbmUmbmUmbmAtoCAtYCAq4CAtoCBp4'
386              'ALpaaACJyegAClhYAEnJeAAZ+QgAqhoIADnZSAB5mdgACiiYAJnp6ACqGegAqrrYA'              'CAroCAqoCAq4CAr4CDpYCGpICAt4CAsICDpYCArICCpoCHo4CAs4CAuICUmbmUmbm'
387              'GmpuAB5megACkh4ALqqyAA52VgAulpYAAoI6AAZ+PgASbmIALpKWAA7m5gAWbmYAG'              'UmbmUmbmUmbmUmbmAuICAqICFpYCAq4CDpoCAqYCFpICAqYCUmbmNo6aAsYCCpoCD'
388              'mpyAC6SjgAqioYADnZOAA7q6gAianoALqauABpqagAqgnoAEnJWAAp6RgAWbmIACu'              'pYCAqICAtoCUmbmAt4CAqoCCpoCAroCHo4CAsYCAq4CAsICAs4CAp4CUmbmAtYCAq'
389              '7uACqGfgAqiooAMqauAAby8gAmusIAMp6qAC6WngAyoqoABvb2AC6SkgAS3uIAJra'              'YCIooCHo4CAsICAr4CAqICEpYCAs4CAqICArICDpYCEpYCEpYCAr4CUmbmEpYCAs4'
390              '+AB7KzgAynqIALq62ADKirgAC+voAGsrSABLi4gAG8vYADubqAC6qtgAuprIABvb6'              'CAtICAs4CAqYCUmbmAtoCAp4CCpoCDpYCAq4CArICAqoCAqYCAqYCAtYCAtoCDpYC'
391              'ACLCygAW2t4AKra+AAru8gAS4uYACuruAAry8gAG+voAAEBAAFhkZABAQEAABp6fA'              'At4CUmbmUmbmUmbmUmbmAt4CAsoCAsoCAp4CAp4CCpoCAsoCAt4CNo6aUmbmUmbmU'
392              'EBACAAAgPwAAPu/AJE9CgBACAAALj1BAEAICAAGPAAAQAgAAAY8+gBACL8AJTxXAA'              'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmAt4CAtYCCpoCAqICAroCAr4CUmbmUm'
393              'gIQAAAPEAAAAgIAAY8QABACAgAAGQAAABAAAAALpoAAEBAAAAALgAAAEAABkAGAEA'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
394              'IQAD2AEAAvwAIAJAu2ABAQEAALmQ5AEBAQAAAnp8AAEAIAAD4+gAAv78An5rDAEBA'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
395              'QAAuhAcAQEBAAAb8AABAvwAAAGQKAABAAABpLksAQEAIAC4ACwBAAAAAAPkGAAC/Q'              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
396              'AD2APoAvwC/AJ0umgBAQEAAAGRkAABAQAAGnp8AQEAIAPcA/AC/AL8A7D0GAEAIQA'              'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
397              'D4hAAAv0AAAAD8QAAAvwgA92T6AL9AvwDsLlcAQEBAAC4AQABAAAgA+EAAAL8IAAA'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
398              '8AAAACAAAAJ8uVgBAQEAAAGQ5AABAQAAAnpcAAEBAAPYAQAC/AAgAnQsGAEAAQAAA'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
399              'hG0AAEBAAB38PQAIv0AA9mT6AL9AvwAJLmwAZUBAAB0AQAAIAAgAHUAAAAgIAAAAA'              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmU'
400              'AAAAAAAAACzbAAAQEAA//k5AH+/QAAGb5cAQEBAAACy5AAAQAgAAIpAAABACAAAAA'              'mbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUm'
401              'AAAAAAAAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk'              'bmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmb'
402              'JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ'              'mUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm'
403              'CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJC'              'UmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbmUmbm\n')
404              'QkJCQkJCQkJCQkJCQkJCQkJCQkyEi8aQCEJCQkJCQkJCQkJCQkJCTI7OwgILzsyCg'  
405              'kJCQkJCQkJCQkJCzcJFggvADwGEDc3EhYAMgkJCQkJEjcVJDohGj0LGgYAPT0hCT0'          self.assertEquals(renderer.raster_data,
406              'LDyI3CQoBLwAaFgkyEC9AJAE8OgsIMjoABi8kCx4JCQkJCQkeGko8KTcLCxIyNwkJ'                            (20,20,(raw_data, None, None)))
407              'CQkWEjwWNUAQPCEAMwgJCQkJCQkSQBcvEkAPAQkyN0AMCQkJCQhBFyEvNy89JCIkM'  
408              'yItGQwJCQo9RxozIgkyCQoPFxAtDBkgIgkJCQkJCQkJMRoQECJQNi9EIAAgCQkJCQ'          self.assertEquals(renderer.raster_format, "RAW")
             'kSUA88UAYeBjELICA8HiI=\n')  
         self.assertEquals(renderer.raster_data, raw_data)  
409    
410          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
411                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 346  class TestBaseRenderer(unittest.TestCase Line 428  class TestBaseRenderer(unittest.TestCase
428          self.to_destroy.append(map)          self.to_destroy.append(map)
429    
430          dc = MockDC()          dc = MockDC()
431          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
432    
433          renderer.render_map(map)          renderer.render_map()
434    
435          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
436                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 374  class TestBaseRenderer(unittest.TestCase Line 456  class TestBaseRenderer(unittest.TestCase
456          self.to_destroy.append(map)          self.to_destroy.append(map)
457    
458          dc = MockDC()          dc = MockDC()
459          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
460    
461          renderer.render_map(map)          renderer.render_map()
462    
463          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
464                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 403  class TestBaseRenderer(unittest.TestCase Line 485  class TestBaseRenderer(unittest.TestCase
485          self.to_destroy.append(map)          self.to_destroy.append(map)
486    
487          dc = MockDC()          dc = MockDC()
488          renderer = SimpleRenderer(dc, 2, (10, 10))          renderer = SimpleRenderer(dc, map, 2, (10, 10))
489    
490          renderer.render_map(map)          renderer.render_map()
491    
492          self.assertEquals(dc.calls,          self.assertEquals(dc.calls,
493                            [('BeginDrawing',),                            [('BeginDrawing',),
# Line 416  class TestBaseRenderer(unittest.TestCase Line 498  class TestBaseRenderer(unittest.TestCase
498                             ('EndDrawing',)])                             ('EndDrawing',)])
499    
500    
501        def test_point_with_classification(self):
502            """Test BaseRenderer with point layer and classification"""
503            table = MemoryTable([("type", FIELDTYPE_STRING),
504                                 ("value", FIELDTYPE_DOUBLE),
505                                 ("code", FIELDTYPE_INT)],
506                                [("UNKNOWN", 0.0, 0),
507                                 ("UNKNOWN", 0.0, 1)])
508            shapes = [[[(0, 0)]], [[(10, 10)]]]
509            store = SimpleShapeStore(SHAPETYPE_POINT, shapes, table)
510    
511            map = Map("TestBaseRenderer")
512            layer = Layer("point layer", store)
513            group = ClassGroupSingleton(1)
514            group.GetProperties().SetFill(Color(0, 0, 1))
515            layer.GetClassification().AppendGroup(group)
516            layer.SetClassificationColumn("code")
517    
518            map.AddLayer(layer)
519            self.to_destroy.append(map)
520    
521            dc = MockDC()
522            renderer = SimpleRenderer(dc, map, 2, (10, 10))
523    
524            renderer.render_map()
525    
526            self.assertEquals(dc.calls,
527                              [('BeginDrawing',),
528                               ('SetBrush', ('brush', Transparent)),
529                               ('SetPen', ('pen', Color(0, 0, 0), 1)),
530                               ('DrawEllipse', 5, 5, 10, 10),
531                               ('SetBrush', ('brush', Color(0, 0, 1))),
532                               ('SetPen', ('pen', Color(0, 0, 0), 1)),
533                               ('DrawEllipse', 25, -15, 10, 10),
534                               ('SetFont', "label font"),
535                               ('EndDrawing',)])
536    
537    
538        def test_renderer_extension(self):
539            """Test renderer with a renderer extension"""
540            class MyLayer(BaseLayer):
541                pass
542    
543            calls = []
544            def my_renderer(renderer, layer):
545                calls.append((renderer, layer))
546                return ()
547    
548            add_renderer_extension(MyLayer, my_renderer)
549    
550            try:
551                map = Map("test_renderer_extension")
552                layer = MyLayer("my layer")
553                map.AddLayer(layer)
554                self.to_destroy.append(map)
555    
556                dc = MockDC()
557                renderer = SimpleRenderer(dc, map, 2, (10, 10))
558                renderer.render_map()
559            finally:
560                init_renderer_extensions()
561    
562            self.assertEquals(calls, [(renderer, layer)])
563    
564    
565  if __name__ == "__main__":  if __name__ == "__main__":
566      support.run_tests()      support.run_tests()

Legend:
Removed from v.1585  
changed lines
  Added in v.2571

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26