SAS.Wiki

Веб-картография и навигация

Инструменты пользователя

Инструменты сайта


sasdev:конвейер_подготовки_видимого_изображения

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

sasdev:конвейер_подготовки_видимого_изображения [16/01/2015 13:20]
vdemidov [Подготвка изображения растровых карт и слоев]
sasdev:конвейер_подготовки_видимого_изображения [23/01/2015 10:50] (текущий)
vdemidov [Конвейеры подготовки изображения]
Строка 2: Строка 2:
  
 Это пока только план, реализация планируется на ближайшее время, но кто его знает. Это пока только план, реализация планируется на ближайшее время, но кто его знает.
 +
 +Воркеры могут быть не обязательно отдельными потоками. Это могут быть элементы из пула потоков,​ которые будут заниматься задачами разных карт и разных этапов конвейера. Главным ограничением для них вероятно будет то, что задачи каждого элемента конвейера в один момент времени должен выполнять ровно один поток. Это позволит упростить код и меньше заботится о потокобезопасности.
 +
 +Более отдаленным шагом будет введение интерфейса IBitmapFilter,​ который будет получать IBitmap32Surface и что-то на нем рисовать. В самом простом случае это будет просто обертка вокруг IBitmap32Static,​ которая будет отрисовывать готовый тайл на полученной поверхности. Это позволит при рендеринге векторных объектов и сеток для простых элементов не тратить память на полноценный тайла, а просто запомнить нужные операции для его воспроизведения.
 +
 +Примеры:​
 +
 +  - Для тайловой сетки текущего зума достаточно нарисовать вертикальную и горизонтальные линии плюс вывести подготовленный маркер с подписью в центр. Есть шанс, что это не только сэкономит память,​ но даже выполнится быстрее (нужно замерять время этих операций).
 +  - Для отображения полигона,​ который полностью покрывает тайл достаточно просто нарисовать прямоугольник заданного цвета на весь тайл. Скорость не меньше чем наложение битмапки,​ а памяти экономится очень много - 4 байта вместо 65536 байт необходимых для битмапки размером с тайл.
 +  - Для отображения метки-точки достаточно вывести заранее подготовленный маркер,​ который скорее всего меньше тайла и следовательно операция займет меньше времени и меньше памяти для хранения.
 +
 +То есть, в результате все операции рендеринга будут возвращать не IBitmapTileMatrix,​ а IBitmapFilterTileMatrix при помощи которых битмапки будут создаваться на самом последнем шаге конвейера,​ непосредственно перед выводом на экран.
  
 ===== Подготовка изображения растровых карт и слоев ===== ===== Подготовка изображения растровых карт и слоев =====