SASGIS - SAS.Планета
View Issue Details
0003597SAS.ПланетаРефакторингpublic06-12-2019 08:1512-12-2019 16:14
zed 
vdemidov 
normalminorN/A
resolvedfixed 
190707 
191221191221 
0003597: Переход на актуальную версию Graphics32
Как-то так получилось, что у нас сорцы этого компонента застряли на отметке 2012-го года, а он, в общем-то, продолжает разрабатываться.

Официальный репозиторий тут: https://github.com/graphics32/graphics32
No tags attached.
related to 0003581new  Сборка 64-х битной версии SAS 
patch gr32.patch (64,904) 08-12-2019 17:06
https://bugtracker.sasgis.org/file_download.php?file_id=2401&type=bug
patch Sas.patch (82,446) 08-12-2019 17:09
https://bugtracker.sasgis.org/file_download.php?file_id=2402&type=bug
jpg Screenshot_1.jpg (369,635) 09-12-2019 09:32
https://bugtracker.sasgis.org/file_download.php?file_id=2403&type=bug
png Screenshot_2.png (57,127) 09-12-2019 09:53
https://bugtracker.sasgis.org/file_download.php?file_id=2404&type=bug
png

patch 10089.patch (7,122) 10-12-2019 18:47
https://bugtracker.sasgis.org/file_download.php?file_id=2406&type=bug
Issue History
06-12-2019 08:15zedNew Issue
06-12-2019 08:15zedRelationship addedrelated to 0003581
06-12-2019 08:20zedNote Added: 0019529
06-12-2019 10:46vdemidovNote Added: 0019530
06-12-2019 16:15vdemidovNote Added: 0019531
08-12-2019 17:06vdemidovFile Added: gr32.patch
08-12-2019 17:09vdemidovFile Added: Sas.patch
08-12-2019 17:10vdemidovNote Added: 0019533
08-12-2019 18:03zedNote Added: 0019534
08-12-2019 18:24zedNote Added: 0019535
08-12-2019 18:48zedNote Added: 0019536
08-12-2019 18:49zedNote Edited: 0019536bug_revision_view_page.php?bugnote_id=19536#r7554
08-12-2019 19:55vdemidovNote Added: 0019537
09-12-2019 09:32zedNote Added: 0019538
09-12-2019 09:32zedFile Added: Screenshot_1.jpg
09-12-2019 09:45zedNote Added: 0019539
09-12-2019 09:53zedNote Added: 0019540
09-12-2019 09:53zedFile Added: Screenshot_2.png
09-12-2019 10:30zedFile Added: 10089.patch
09-12-2019 10:31zedNote Added: 0019541
09-12-2019 11:44vdemidovNote Added: 0019542
10-12-2019 18:47zedFile Deleted: 10089.patch
10-12-2019 18:47zedFile Added: 10089.patch
10-12-2019 18:49zedNote Added: 0019547
10-12-2019 18:50zedNote Edited: 0019547bug_revision_view_page.php?bugnote_id=19547#r7556
11-12-2019 07:33vdemidovNote Added: 0019556
12-12-2019 08:14zedStatusnew => resolved
12-12-2019 08:14zedFixed in Version => 191221
12-12-2019 08:14zedResolutionopen => fixed
12-12-2019 08:14zedAssigned To => vdemidov
12-12-2019 08:14zedTarget Version => 191221
12-12-2019 12:34zedNote Added: 0019564
12-12-2019 12:55vdemidovNote Added: 0019565
12-12-2019 15:20zedNote Added: 0019567
12-12-2019 15:52vdemidovNote Added: 0019568
12-12-2019 16:02zedNote Added: 0019569
12-12-2019 16:05vdemidovNote Added: 0019570
12-12-2019 16:08vdemidovNote Added: 0019571
12-12-2019 16:09zedNote Added: 0019572
12-12-2019 16:14vdemidovNote Added: 0019573

Notes
(0019529)
zed   
06-12-2019 08:20   
vdemidov
Не хочешь заняться? Я так понимаю, что ты уже экспериментировал с миграцией и хорошо представляешь что надо делать.
(0019530)
vdemidov   
06-12-2019 10:46   
Хорошо. Там уже много чего сделано в нужном направлении. Может в субботу или воскресенья попытаюсь сделать.
(0019531)
vdemidov   
06-12-2019 16:15   
Освежил чуть воспоминания о коде. Там действительно почти все сделано. Осталось только заменить все использования TFixedPoint на TFloatPoint (в том числе и всякие массивы). И вместо TPolygon32 использовать TArrayOfArrayOfFloatPoint. Там уже почти все для этого готово.
(0019533)
vdemidov   
08-12-2019 17:10   
Залил патчи для свежей гитовой версии gr32 и для сас для перехода. Но нужно проверять. А у меня возможности нет.
(0019534)
zed   
08-12-2019 18:03   
Я немного не понял про патч GR32. Ты взял версию с git и внёс туда какие-то фиксы?
(0019535)
zed   
08-12-2019 18:24   
Мда, так и есть. Не ожидал такого поворота. Есть шанс что эти изменения могут быть приняты в основную ветку GR32?
(0019536)
zed   
08-12-2019 18:48   
(edited on: 08-12-2019 18:49)
Немного погонял, вроде работает без проблем.

Вот тестовая сборка: https://yadi.sk/d/yt2ePQl_f9MrCg (утечки памяти детектит FastMM, стектрейсы сохраняет SynLog. Если что-то случится, то файлы с отчётами автоматически появятся в папке с программой).

(0019537)
vdemidov   
08-12-2019 19:55   
> Мда, так и есть. Не ожидал такого поворота. Есть шанс что эти изменения могут быть приняты в основную ветку GR32?
Очень вряд ли. Но можешь попробовать протолкнуть. Проще их в своей копии подтягивать и мержить.

>Немного погонял, вроде работает без проблем.
Проверь свой SunCalc. Я там не очень уверен в ThickPolyLine.
(0019538)
zed   
09-12-2019 09:32   
> Проверь свой SunCalc
С ним всё нормально, на сколько я могу судить. И в актуальной версии GR32, если не ошибаюсь, даже есть аналог ThickPolyLine. Помню, я этот код откуда-то копи-пастил.

Пока что заметил 2 отличия:
- цвет заливки полигонов стал менее прозрачным
- пропала обводка тенью у надписей шкалы масштаба

Приложил скриншот, где видны оба отличия. Слева - старый вариант, справа - новый.

По первому отличию, на гитхабе есть тикет https://github.com/graphics32/graphics32/issues/102 но написано, что исправлено.
(0019539)
zed   
09-12-2019 09:45   
Если при запуске задать гамму равную единице, как советуют в комментариях то первое отличие пропадает: SetGamma(1).
(0019540)
zed   
09-12-2019 09:53   
Оу, с надписями у SunCalc баг вылез - второй скриншот в аттаче.
(0019541)
zed   
09-12-2019 10:31   
Добавил патч для фикса SunCalc.

А вот что делать с обводкой непонятно.
(0019542)
vdemidov   
09-12-2019 11:44   
С обводкой, нужно посмотреть в новой версии GR32. Если я ничего не путаю, там сейчас есть рендеринг текста в полигоны, которые потом можно сделать Grow и нарисовать предварительно.
(0019547)
zed   
10-12-2019 18:49   
(edited on: 10-12-2019 18:50)
Решил проблему с обводкой, доработав старый алгоритм. Приложил обновлённый патч с исправлением всех обнаруженных проблем. Думаю, патчи можно вливать в репозитории.

(0019556)
vdemidov   
11-12-2019 07:33   
Ну, так давай. Заменяй репозиторий Gr32 (если я правильно помню, у нас не общий корень, так что придется). Вливай патчи.
Отдельно можно таки попоробвать пропихнуть наши патчи в апстрим. Они там вполне логичные.
(0019564)
zed   
12-12-2019 12:34   
Отправил PR: https://github.com/graphics32/graphics32/pull/118
(0019565)
vdemidov   
12-12-2019 12:55   
Надо было изменения в GR32_Polygons.pas отдельным пул реквестом кидать. Они никак не связаны и почти на что не влияют.
(0019567)
zed   
12-12-2019 15:20   
Ответь в PR, какую проблему и как решают изменения.

Что касается GR32_Polygons то эти изменения могу откатить или возьми сам откати.
(0019568)
vdemidov   
12-12-2019 15:52   
Проблема - использование StretchTransfer для копирования данных в случае, если исходное изображение живет не в TCustomBitmap32, а в каком-то другом объекте, но сами данные, при этом, в формате PColor32Array. Все остальные изменения - это последствия этого изменения. Как это обосновать ХЗ. У нас это тайлы, которые нужно отрисовывать на чем-то. Хранить для каждого тайла TCustomBitmap32 это явный перебор - там кучу всего криэйтить и дестроить нужно. И копировать в TCustomBitmap32 перед каждой операцией - тоже дикий оверхед.

>возьми сам откати.
Как я это откачу, если это твой пул реквест. Я там никто. Так упомянут в качестве автора, но прав никаких не имею
(0019569)
zed   
12-12-2019 16:02   
> Как это обосновать ХЗ
Ну вот так и обоснуй. И я тут немного подумал над кодом и мне кажется можно сделать менее калечащие изменения: оставить оригинальную версию StretchTransfer и добавить нашу, с доп параметрами. Из оригинальной (её даже можно попробовать сделать inline) вызывать нашу, а ресамплеры не трогать, пусть они вызывают оригинальную.

> но прав никаких не имею
Точно? У тебя же в исходном репо из которого сделан пулл такие же права, как и у меня. Так что делаешь коммит в соответствующую ветку и PR обновляется.
(0019570)
vdemidov   
12-12-2019 16:05   
> добавить нашу, с доп параметрами.
Ты не поверишь :) Именно так и сделано.
(0019571)
vdemidov   
12-12-2019 16:08   
> Так что делаешь коммит в соответствующую ветку и PR обновляется.
Ну, может на следующей недельке получится.
(0019572)
zed   
12-12-2019 16:09   
Не совсем так, ты в оригинальную добавил 3 доп. параметра и это за собой потянуло кучу изменений. А я предлагаю не добавлять их, а для передачи параметров в нашу брать соответствующие значения из параметра Src.
(0019573)
vdemidov   
12-12-2019 16:14   
> Не совсем так, ты в оригинальную добавил 3 доп. параметра и это за собой потянуло кучу изменений.
Возможно. Давно это было. Много лет назад. Плюс делалось постепенно. А на новую версию просто было перетащено почти без изменений.
Причеши это хозяйство, если есть время и желание.