ViewportInterface
====================

.. currentmodule:: axioma.render

.. class:: ViewportInterface

	Базовый класс, который определяет какая область карты или отчета (сцены) отображается на области рисования. С помощью него проводится соответствие между координатами проекции и координатами устройства, где производится вывод карты или отчета.
	Может использоваться для передачи в контекст рисования :class:`~axioma.render.ContextInterface` для преобразования рисуемых объектов или же отдельно.
	Пример использования см. в описании класса  :class:`~axioma.render.ContextInterface`

	От него наследуются: 
	
	* :class:`~axioma.render.Viewport`
	* :class:`MapViewport`

		.. py:method:: deviceRect()

			Область устройства рисования

			:return:  Прямоугольник
			:rtype: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: sceneRect()

			Область сцены

			:return:  Прямоугольник
			:rtype: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: sceneToDeviceTransform()

			Матрица преобразования из координат сцены в координаты устройства рисования

			:return:  Матрица преобразования
			:rtype: :class:`~PyQt5.QtGui.QTransform`

		.. py:method:: deviceToSceneTransform()

			Матрица преобразования из координат устройства рисования в координаты сцены

			:return:  Матрица преобразования
			:rtype: :class:`~PyQt5.QtGui.QTransform`

		.. py:method:: zoom()

			Ширина отображаемой области сцены

			:return:  Значение ширины 
			:rtype: :class:`float`

		.. py:method:: zoomIn(coef)

			Увеличение масштаба. Размер области сцены уменьшается в coef раз.

			:param coef: Коэффициент увеличения масштаба.
			:type coef: :class:`float`

		.. py:method:: zoomOut(coef)

			Уменьшение масштаба. Размер области сцены уменьшается в coef раз.

			:param coef: Коэффициент уменьшения масштаба.
			:type coef: :class:`float`

		.. py:method:: setCenter( point)

			Установка центра области отображения карты

			:param point: Новый центр в координатах проекции карты.
			:type point: :class:`~PyQt5.QtCore.QPointF`

		.. py:method:: deviceUnitSize( )

			Размер единицы устройства рисования в координатах карты

			:return: Рассчитывается какой размер в проекции карты будет занимать квадрат 1*1 на устройстве отображения
			:rtype: :class:`~PyQt5.QtCore.QSizeF`

		.. py:method:: setDeviceRect( rect)

			Установка нового прямоугольника устройства рисования. Прямоугольник карты sceneRect остается неизменным

			:param rect: Новый прямоугольник отображения
			:type rect: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: setSceneRect( rect)

			Установка новой области отображения на карте. Прямоугольник устройства рисования deviceRect остается неизменным

			:param rect: Новый прямоугольник
			:type rect: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: mapToScene(point)

			Производит преобразование точки point из координат области рисования в координаты карты

			:return: Преобразованная точка в координатах карты
			:rtype: :class:`~PyQt5.QtCore.QPointF`

		.. py:method:: mapToScene(rect)

			Производит преобразование прямоугольника rect из координат области рисования в координаты карты

			:param rect: Исходный прямоугольник отображения
			:type rect: :class:`~PyQt5.QtCore.QRectF`
			:return: Преобразованный прямоугольник в координатах карты
			:rtype: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: mapToDevice(point)

			Производит преобразование точки point из координат карты в координаты области рисования

			:return: Преобразованная точка в координатах устройства рисования
			:rtype: :class:`~PyQt5.QtCore.QPointF`

		.. py:method:: mapToDevice(rect)

			Производит преобразование прямоугольника rect из координат карты в координаты области рисования

			:return: Преобразованный прямоугольник в координатах устройства рисования
			:rtype: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: isEqual(viewport)

			Производит сравнение параметров с другим экземпляром

			:param viewport: Экземпляр Viewport для сравнения
			:type viewport: :class:`~axioma.render.Viewport`
			:return: True, если параметры идентичны
			:rtype: :class:`bool`

		.. py:method:: isEmpty()

			Инициализированы ли значения ограничивающих прямоугольников

			:return: True, если нет
			:rtype: :class:`bool`

