ClassStylePair
=================

.. currentmodule:: axioma.render

.. class:: ClassStylePair

	Контейнер, содержащий класс стиля геометрии и конкретного соответствующего ему стиля оформления

		.. py:attribute:: geomStyle

		Стиль с геометрией

		:type: :class:`GeometryStyleClass` 

		.. py:attribute:: style

		Конкретное значение стиля

		:type: :class:`Style` 


CollectionStyle
=================

.. currentmodule:: axioma.render

.. class:: CollectionStyle

	Класс - контейнер, содержащий набор пар соответствий типа геометрии и стиля его оформления

	Унаследован от: :class:`Style`

	От него наследуются: :class:`~axioma.mapinfo.MapinfoCollectionStyle`

		.. py:method:: CollectionStyle()

		Конструктор со значениями по умолчанию

		.. py:method:: CollectionStyle(other)

			Копирующий конструктор

			:param other: Исходный объект CollectionStyle, на базе которого необходимо сделать копию. 
			:type other: :class:`CollectionStyle`

		.. py:method:: CollectionStyle(classStyleList)

			Конструктор

			:param classStyleList: Список, с которым инициализируется коллекция.
			:type classStyleList: :class:`list` [:class:`~axioma.render.ClassStylePair`]

		.. py:method:: classStylePairs()

			Получение списка всех доступных пар соответствий

			:return: Список
			:rtype: :class:`list` [`ClassStylePair`]  

		.. py:method:: style(geometry)

			Получение стиля по геометрии

			:param  geometry: Анализируемая геометрия
			:type geometry: :class:`~axioma.core.geometry.Geometry`
			:return: Стиль. Если соответствия не найдено, возвращается None
			:rtype: :class:`Style`

		.. py:method:: style(geometryClassId)

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

			.. csv-table:: Существующие допустимые значения идентификатора класса геометрии:
				:header: "Значение", "Описание"

				'Point', "Точечные объекты"
				'Linear', "Линейные объекты"
				'Polygonal', "Площадные объекты"
				'MultiGeometry', "Сложные объекты"
				'Text', "Текстовые объекты"


			:param `str` geometryClassId: Идентификатор класса геометрии
			:return: Стиль. Если соответствия не найдено, возвращается None
			:rtype: :class:`Style`

		.. py:method:: style(geometryClass)

			Получение стиля по экземпляру геометрии стилей

			:param `GeometryStyleClass` geometryClass: Экземпляр стиля геометрии
			:return: Стиль. Если соответствия не найдено, возвращается None
			:rtype: :class:`Style`

		.. py:method:: setStyle(geometryStyleClass, style)

			Определение нового соответствия между экземпляром стиля геометрии и конкретным значением стиля

			:param `GeometryStyleClass` geometryStyleClass: Экземпляр стиля геометрии
			:param `Style` style: Соответствующий стиль

		.. py:method:: setStyle(geomClassId, style)

			Определение нового соответствия между идентификатором класса геометрии и конкретным значением стиля

			:param `str` geomClassId: Идентификатор класса геометрии
			:param `Style` style: Соответствующий стиль

		.. py:method:: setStyle(style)

			Производится попытка установить стиль без указания типа геометрического объекта, которому он соответствует. При этом производится поиск зарегистрированного в системе расширения с целью получения данного соответствия. Если такого не найдено, рекомендуется воспользоваться методом явного задания типа геометрического объекта.

			:param style: Стиль
			:type style: :class:`~axioma.render.Style`

Пример использования:

  .. code-block:: python
  
    from axioma.mapinfo import *
    from axioma.render import *

    collStyle = CollectionStyle()
    style = MapBasicStyle().styleFromString("Brush (2,16776960,16777215) Pen (1,2,0)")
    # Устанавливаем стиль для полигона
    collStyle.setStyle(PolygonalGeometryClass(), style)

Получить тип геометрии для установки стиля можно у расширения :class:`~axioma.render.StyleExtension` при помощи менеджера стилей :class:`~axioma.render.GeometryStyleManager` (там же пример использования)

  .. code-block:: python
  
    ...
    styleExt = ext.styleManager().styleExtensionByStyle(style)
    collStyle.setStyle(styleExt.geometryStyleClassId(), style)
