CompositeStyle
=================

.. currentmodule:: axioma.render

.. class:: CompositeStyle

	Композитный стиль, состоящий из одного или нескольких стилей. При отрисовке, содержащиеся внутри стили, последовательно друг за другом отрисовывают геометрический объект. Создание композитного стиля так-же возможно посредством :meth:`~axioma.mapinfo.MapBasicStyle.styleFromString`

	Унаследован от: :class:`~axioma.render.Style`

		.. py:method:: CompositeStyle()

			Конструктор

		.. py:method:: append(style)

			Добавляет стиль. Вначале производится отрисовка, используя стили, добавленные ранее

			:param style: Добавляемый стиль
			:type style: :class:`~axioma.render.Style`

		.. py:method:: replace(index, style)

			Заменяет существующий стиль по его индексу внутреннего хранения

			:param index: Индекс заменяемого элемента
			:type index: :class:`int`
			:param style: Новый стиль
			:type style: :class:`~axioma.render.Style`
			:return: True, если индекс существует и операция прошла успешно. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: remove(index)

			Удаляет стиль по его индексу внутреннего хранения

			:param index: Индекс удаляемого элемента
			:type index: :class:`int`
			:return: True, если индекс существует и операция прошла успешно. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: swap(index1, index2)

			Меняет местами два элемента по их индексу

			:param index1: Индекс первого заменяемого элемента
			:type index1: :class:`int`
			:param index2: Индекс второго заменяемого элемента
			:type index2: :class:`int`
			:return: True, если оба индекса существуют, они не равны и операция прошла успешно. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: styles()

			Список хранимых стилей

			:rtype: :class:`list` [:class:`~axioma.render.Style`]

		.. py:method:: count()

			Количество внутренних стилей

			:rtype: :class:`int`

		.. py:method:: isEmpty()

			Существуют ли внутренние стили. Изначально после вызова конструктора значение True.

			:rtype: :class:`bool`

Пример использования (линия последовательно рисуется тремя добавленными стилями):

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

            # Создаем стили-элементы
            styleComp0 = MapBasicStyle().styleFromString("Pen (5,2,16711680)")
            styleComp1 = MapBasicStyle().styleFromString("Pen (2,2,16776960)")
            styleComp2 = MapBasicStyle().styleFromString("Pen (2,9,0)")
            # Создаем сам композитный стиль
            compositeStyle = CompositeStyle()
            # Последовательно (как должны быть отрисованы) добавляем элементы в стиль
            compositeStyle.append(styleComp0)
            compositeStyle.append(styleComp1)
            compositeStyle.append(styleComp2)
            # Стиль можно создать из строки MapBasic, в которой стили разделены '|' или ';' (альтернатива предыдущим строкам)
            #compositeStyle = MapBasicStyle().styleFromString("Pen (5,2,16711680)|Pen (2,2,16776960)|Pen (2,9,0)")
            line = Line(cs_ne, QLineF(QPointF(400,100), QPointF(600,100)))
            compositeStyle.draw(line, context) # Рисуем линию
			
