OberonCore
https://forum.oberoncore.ru/

Прокрутка Крысой
https://forum.oberoncore.ru/viewtopic.php?f=2&t=3391
Страница 4 из 4

Автор:  Иван Денисов [ Пятница, 02 Октябрь, 2015 08:24 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Роман М. писал(а):
Иван Денисов писал(а):
Господа, кому интересна качественная прокрутка текста в ББ, прошу протестировать данный модуль.
Переписал заново вычисление позиции при прокрутке.

Иван, на каком документе ощутимее всего заметны тормоза при прокрутке? У меня на мониторе почему-то не видно разницы.

Бери документы с большим числом Кириллицы, еще TrueType метрику включи для большего эффекта.

Автор:  prospero78 [ Пятница, 02 Октябрь, 2015 09:21 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Я тут Вань, нечаянно подумал, почему для мышки три события.
Возможно я не прав, но как-то по аналогии с Visual Basic:
1. Mouse_onDown
2. Mouse_onClick
3. Mouse_onUp.

На сколько я понял из исходников БлэкБокс, он не различает эти события. Так что можно смело ставить счётчик на три.

Автор:  GameHunter [ Суббота, 03 Октябрь, 2015 12:46 ]
Заголовок сообщения:  Re: Прокрутка Крысой

При применении этого модуля прокрутка стала какая-то рваная, что ли... Чисто субъективное впечатление.

Автор:  Иван Денисов [ Суббота, 03 Октябрь, 2015 14:12 ]
Заголовок сообщения:  Re: Прокрутка Крысой

GameHunter писал(а):
При применении этого модуля прокрутка стала какая-то рваная, что ли... Чисто субъективное впечатление.

Исчез эффект анимации. Раньше по три раза рисовалось, поэтому был smooth эффект... А на русской документации например сравните.

Автор:  Kemet [ Суббота, 03 Октябрь, 2015 17:09 ]
Заголовок сообщения:  Re: Прокрутка Крысой

ilovb писал(а):
Т.е. в данном случае проблема в TestFoo2.Do, но профилировщик ББ этого не знает.

А ты дождался завершения выполнения своей мега-процедуры в TestFoo2?
Кстати, в профилировщике компилятора FoxCompiler из A2 та же самая проблема - если количество итераций вменяемое, то выдаётся правильный результат, иначе, естественно, фигня.
Вот интересно, как в других средах?

Автор:  Иван Денисов [ Вторник, 06 Октябрь, 2015 03:56 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Доработал еще. Неверно была прокрутка вниз сделана. Теперь вроде все корректно.

Вложения:
Views.odc [58.97 КБ]
Скачиваний: 796

Автор:  Иван Денисов [ Пятница, 09 Октябрь, 2015 09:33 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Кстати! Заметил, что исчез старый баг, когда в Wine окно выходит нижней частью за границы экрана, было размазывание содержимого по окну.
Вложение:
badScrol.png
badScrol.png [ 11.45 КБ | Просмотров: 9921 ]


Теперь этого не наблюдается.

Автор:  Иван Денисов [ Суббота, 10 Октябрь, 2015 22:16 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Йо-хо-хо.

Я сделал кэширование ширин строк в дереве и это ускорило отрисовку текстов до приемлемого уровня! Памяти такой способ потребляет очень мало. Так что для своего проекта сразу в дело пущу.

Выкладываю исходники новой HostFonts для версии Центра.

Что при этом обнаружил!? GatherString из TextSetters обрабатывает кириллические тексты побуквенно, что с одной стороны хорошо ­— дерево получается маленькое, но с другой стороны — это явно косяк.

Может кому-то придет в голову как это вылечить?
Код:
   PROCEDURE GatherString (rd: StdReader);
      VAR i, len: INTEGER; ch: CHAR;
   BEGIN
      i := 1; len := LEN(rd.string) - 1; ch := rd.r.char;
      WHILE (i < len)
         & (rd.r.view = NIL) & (rd.r.attr = rd.attr)
         & (    (" " < ch) & (ch <= "~") & (ch # "-")
            OR  (ch = digitspace)
            OR  (ch >= nbspace) & (ch < 100X) & (ch # softhyphen)
            )
      DO   (* rd.r.char > " " => ~rd.eot *)
         rd.string[i] := ch; INC(i);
         rd.eot := rd.r.eot;
         rd.r.Read; ch := rd.r.char; INC(rd.pos)
      END;
      rd.string[i] := 0X; rd.setterOpts := {wordJoin};
      IF i = 1 THEN
         IF WordPart(rd.string[0], 0X) THEN INCL(rd.setterOpts, wordPart) END
      END;
      rd.w := rd.attr.font.StringWidth(rd.string); rd.endW := rd.w
   END GatherString;


Вложения:
Fonts.odc [23.99 КБ]
Скачиваний: 737

Автор:  Иван Денисов [ Вторник, 02 Февраль, 2016 20:53 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Мы с Олегом Чередниченко устроили мозговой штурм и вместе решили проблему:
http://forum.blackboxframework.org/view ... 3135#p3135

Всего одна строчка кардинально влияет на эффективность отрисовки не ASCII текстов.

Вот сравните две версии:
До: http://blackboxframework.org/unstable/i ... a1.389.zip
После: http://blackboxframework.org/unstable/i ... a1.415.zip

Автор:  prospero78 [ Четверг, 17 Март, 2016 10:33 ]
Заголовок сообщения:  Re: Прокрутка Крысой

Ваня. Я сейчас тебе подкину работы. :mrgreen:
Заметил только-что

Пока режим просмотра -- тормоза при прокрутке.
Как только ставлю режим редактирования -- тормоза испаряются. Где-то надо в режиме просмотра ещё допилить)

Страница 4 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/