Вопросы по исходному коду.

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: Tolik, zed, vdemidov

Вопросы по исходному коду.

Сообщение DJ VK » 27 апр 2012, 12:58

Давайте тему что ли создадим. Код огромный, весь его постигнуть самостоятельно очень сложно.

итак. Вопрос первый. Загрузка тайлов из кэша. Есть желание вставить принудительную полупрозрачнось в zmp. Какая часть кода отвечает за загрузку тайла слоя из кэша, где мы можем дотянуться и до zmp info, и до самого только что загруженного (наверное и перепроецированного) изображения перед его отрисовкой? (Подскажите, для ускорения процесса поиска, в каком модуле хотя бы.)
Аватара пользователя
DJ VK
Специалист
 
Сообщения: 821
Зарегистрирован: 16 апр 2009, 13:57
Благодарил (а): 51 раз.
Поблагодарили: 80 раз.

Re: Вопросы по исходному коду.

Сообщение vdemidov » 27 апр 2012, 13:29

Модуль u_MapType метод LoadBitmapTileFromStorage
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Вопросы по исходному коду.

Сообщение EVGENRUS » 02 май 2012, 08:20

А как называется функция, которая непосредственно получает загруженный из интернета тайл?
EVGENRUS
Новичок
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 10:07
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду.

Сообщение zed » 02 май 2012, 08:42

u_DownloaderHttp.pas:

Код: Выделить всё
procedure TDownloaderHttp.DoGetRequest(const ARequest: IDownloadRequest);
begin
  FHttpClient.Get(
    ARequest.Url,
    FHttpResponseBody,
    FHttpResponseHeader
  );
end;
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 1519
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 37 раз.
Поблагодарили: 177 раз.

Re: Вопросы по исходному коду.

Сообщение zed » 08 май 2012, 18:33

Наблюдаю интересную работу итератора тайлов TTileIteratorByRect (u_TileIteratorByRect.pas): он почему-то выдаёт на 1 тайл меньше по X и Y, чем по-идее, должен бы.
На скриншоте пример. Черным - выделение, красным - то что выдаёт итератор, зелёным - ожидаемый результат. Вопрос - это баг или кто-то спецом так закрутил? Если баг, то надо фиксить (бо мешает), если фича, то буду другой класс писать с нужным мне ожидаемым результатом.
Вложения
rect.jpg
TRect, переданный конструктору
Image.jpg
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 1519
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 37 раз.
Поблагодарили: 177 раз.

Re: Вопросы по исходному коду.

Сообщение vdemidov » 08 май 2012, 19:02

Ну судя по переданному в конструктор все правильно. То что передается в Right и Bottom уже в желаемый прямоугольник не входит. Логика та же что и везде в VCL при работе с пикселами. А вот вычисление этого прямоугольника уже нужно рихтовать. Видно где-то не так округление стоит. Там и ищи.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Вопросы по исходному коду.

Сообщение EVGENRUS » 04 июн 2012, 09:21

Может кто знает, как заставить TBXDockablePanel отображать свой заголовок, если она не встроена в док?
Получается, когда вытаскиваешь окно "результаты поиска" на середину экрана оно становится безликим.
EVGENRUS
Новичок
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 10:07
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду.

Сообщение EVGENRUS » 13 июл 2012, 15:40

Ув. разработчики!
Почему в программе каждый класс описывается своим интерфесом? для чего это сделано? почему нельзя было сразу писать классы без интерфейса?
EVGENRUS
Новичок
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 10:07
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопросы по исходному коду.

Сообщение vdemidov » 13 июл 2012, 16:14

EVGENRUS писал(а):Почему в программе каждый класс описывается своим интерфесом? для чего это сделано? почему нельзя было сразу писать классы без интерфейса?

Причин несколько:
1. Управление временем жизни объектов при помощи автоматического подсчета ссылок.
2. Интерфейсы можно передавать между границами DLL (Например в плагины и из плагинов), а обычные делфовские объекты нельзя. Пока далеко не все классы имеют интерфейсы и это тормозит появление плагинов.
3. Имея интерфейс, мы можем делать реализации его совсем не связанными между собой.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Вопросы по исходному коду.

Сообщение EVGENRUS » 13 июл 2012, 16:29

vdemidov писал(а):
EVGENRUS писал(а):Почему в программе каждый класс описывается своим интерфесом? для чего это сделано? почему нельзя было сразу писать классы без интерфейса?

Причин несколько:
1. Управление временем жизни объектов при помощи автоматического подсчета ссылок.
2. Интерфейсы можно передавать между границами DLL (Например в плагины и из плагинов), а обычные делфовские объекты нельзя. Пока далеко не все классы имеют интерфейсы и это тормозит появление плагинов.
3. Имея интерфейс, мы можем делать реализации его совсем не связанными между собой.


1. Да, с этим ясно.
2. Получается, что вы пришли к интерфесам уже на каком-то этапе разработки?
3. Т.е. сторонняя dll (плагин) может реализовать интерфейс по своему? как тогда она перекроет родную реализацию?
EVGENRUS
Новичок
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 10:07
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron