Для отображения любого графического объекта карты система использует какой-либо стиль. Существуют две возможности:
объект может иметь свой собственный стиль, заданный именно для этого конкретного объекта и не зависящий от стиля других однотипных объектов;
для объекта может быть не задан собственный стиль; в этом случае объект наследует общий стиль, заданный для всех объектов данного компонента (слоя или типа объектов).
В большинстве случаев используется наследование стиля, что позволяет одинаково отображать однотипные объекты. Задание собственного стиля может быть полезным для уникальных объектов, которые при отображении должны отличаться от прочих объектов того же типа.
Стиль площадных объектов, в отличие от стиля точечных и линейных объектов, включает в себя три элемента стиля: стиль заливки, стиль штриховки и стиль граничной линии. Каждый из элементов стиля устанавливается независимо от других. Объект может, например, иметь собственный стиль заливки, но наследовать стиль штриховки и стиль линии.
Стиль текстовых объектов включает в себя шрифт и цвет текста, которые также устанавливаются независимо друг от друга.
Компонент карты или темы (т.е. слой или тип объектов) также может либо иметь собственный стиль, либо наследовать стиль более общего компонента. Таким образом, возможно наследование стиля от компонента к конкретному объекту и от более общего компонента к менее общему.
Стили отображения, установленные для типов объектов и слоев, хранятся в системе как часть описания структуры карты.
Наиболее общими ObjectLand считает значения стилей, заданные для слоев карты. Эти значения могут наследоваться слоями тем, основанных на данной карте, далее по порядку наследования идут типы объектов карты, потом типы объектов слоя темы, и наконец – конкретные объекты.
Пусть, например, в карте «Город Энск» имеется слой «Коммунальное хозяйство», а в нем тип объектов «Газопровод». Далее, пусть просматриваемая тема этой карты включает в себя слой «Коммунальное хозяйство» и тип «Газопровод». Чем в этом случае будет определяться стиль линии, отображающей газопроводы?
Прежде всего, если для конкретного объекта-газопровода задан его собственный стиль линий, то именно он и будет использован для отображения. Если собственного стиля у объекта нет, то наследуется стиль линий, заданный для типа объектов «Газопровод» слоя «Коммунальное хозяйство» просматриваемой темы. Если этот тип не имеет собственного стиля линий, то будет унаследован стиль, установленный для типа объектов «Газопровод» слоя «Коммунальное хозяйство» карты «Город Энск». Если и для этого типа собственный стиль линий не определен, то будет наследоваться стиль всего слоя «Коммунальное хозяйство» данной просматриваемой темы. Далее очередь наследования доходит до стиля линий всего слоя «Коммунальное хозяйство» карты «Город Энск».
Наконец, если и для слоя карты собственный стиль не задан, то наследуется системный стиль, который выбран разработчиками системы. Он включает набор элементов стиля самого простого вида.
Элементы системного стиля не входят ни в какие библиотеки, они не имеют имен и не могут быть изменены.
При создании нового слоя карты или нового типа объектов система не устанавливает для него собственного стиля. Пока пользователь не установит такой стиль, для нового компонента будут использоваться унаследованные значения всех элементов стиля.
Упрощенная схема наследования стилей отображения объектов показана на рис. 10-1. В гл. 37 «Работа с фильтрами» приведена более полная схема, учитывающая влияние фильтра темы.
Рис. 10-1. Схема наследования стилей