def testRenderFrame2(self):
        point_shp = os.path.join(TEST_DATA_DIR, 'points.shp')
        point_layer = QgsVectorLayer(point_shp, 'Lines', 'ogr')
        self.assertTrue(point_layer.isValid())

        marker_symbol = QgsMarkerSymbol()
        marker_symbol.deleteSymbolLayer(0)
        marker_symbol.appendSymbolLayer(QgsAnimatedMarkerSymbolLayer())
        marker_symbol[0].setPath(
            os.path.join(TEST_DATA_DIR, 'qgis_logo_animated.gif'))
        marker_symbol[0].setSize(20)

        point_layer.setRenderer(QgsSingleSymbolRenderer(marker_symbol))

        ms = QgsMapSettings()
        ms.setOutputSize(QSize(200, 200))
        ms.setOutputDpi(96)
        ms.setExtent(QgsRectangle(-118.5, 19.0, -81.4, 50.4))
        ms.setLayers([point_layer])
        ms.setFrameRate(10)
        ms.setCurrentFrame(2)

        # Test rendering
        renderchecker = QgsMultiRenderChecker()
        renderchecker.setMapSettings(ms)
        renderchecker.setControlPathPrefix('symbol_animatedmarker')
        renderchecker.setControlName('expected_animatedmarker_frame2')
        res = renderchecker.runTest('expected_animatedmarker_frame2')
        self.report += renderchecker.report()
        self.assertTrue(res)
Пример #2
0
    def testFromMapSettings(self):
        """
        test QgsRenderContext.fromMapSettings()
        """
        ms = QgsMapSettings()
        ms.setOutputSize(QSize(1000, 1000))
        ms.setDestinationCrs(QgsCoordinateReferenceSystem('EPSG:3111'))
        ms.setExtent(QgsRectangle(10000, 20000, 30000, 40000))
        ms.setFlag(QgsMapSettings.Antialiasing, True)
        ms.setFlag(QgsMapSettings.LosslessImageRendering, True)
        ms.setFlag(QgsMapSettings.Render3DMap, True)
        ms.setZRange(QgsDoubleRange(1, 10))
        ms.setOutputSize(QSize(100, 100))
        ms.setDevicePixelRatio(2)
        ms.setOutputImageFormat(QImage.Format_Alpha8)
        ms.setFrameRate(30)
        ms.setCurrentFrame(6)

        ms.setTextRenderFormat(QgsRenderContext.TextFormatAlwaysText)
        rc = QgsRenderContext.fromMapSettings(ms)
        self.assertEqual(rc.textRenderFormat(),
                         QgsRenderContext.TextFormatAlwaysText)
        self.assertTrue(rc.testFlag(QgsRenderContext.Antialiasing))
        self.assertTrue(rc.testFlag(QgsRenderContext.LosslessImageRendering))
        self.assertTrue(rc.testFlag(QgsRenderContext.Render3DMap))
        self.assertEqual(ms.zRange(), QgsDoubleRange(1, 10))
        self.assertEqual(rc.symbologyReferenceScale(), -1)
        self.assertEqual(rc.outputSize(), QSize(100, 100))
        self.assertEqual(rc.devicePixelRatio(), 2)
        self.assertEqual(rc.deviceOutputSize(), QSize(200, 200))
        self.assertEqual(rc.imageFormat(), QImage.Format_Alpha8)
        self.assertEqual(rc.frameRate(), 30)
        self.assertEqual(rc.currentFrame(), 6)

        # should have an valid mapToPixel
        self.assertTrue(rc.mapToPixel().isValid())

        ms.setTextRenderFormat(QgsRenderContext.TextFormatAlwaysOutlines)
        ms.setZRange(QgsDoubleRange())
        rc = QgsRenderContext.fromMapSettings(ms)
        self.assertEqual(rc.textRenderFormat(),
                         QgsRenderContext.TextFormatAlwaysOutlines)
        self.assertTrue(ms.zRange().isInfinite())

        self.assertEqual(rc.mapExtent(),
                         QgsRectangle(10000, 20000, 30000, 40000))

        ms.setIsTemporal(True)
        rc = QgsRenderContext.fromMapSettings(ms)
        self.assertEqual(rc.isTemporal(), True)

        ms.setTemporalRange(
            QgsDateTimeRange(QDateTime(2020, 1, 1, 0, 0),
                             QDateTime(2010, 12, 31, 23, 59)))
        rc = QgsRenderContext.fromMapSettings(ms)
        self.assertEqual(
            rc.temporalRange(),
            QgsDateTimeRange(QDateTime(2020, 1, 1, 0, 0),
                             QDateTime(2010, 12, 31, 23, 59)))

        ms.setDpiTarget(111.1)
        rc = QgsRenderContext.fromMapSettings(ms)
        self.assertEqual(rc.dpiTarget(), 111.1)