Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб ноя 18, 2017 3:02 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 34 сообщения ]  На страницу Пред. 1 2 3 След.
Автор Сообщение
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт ноя 19, 2010 10:41 am 
Выделена тема Рациональность выбора пути


Вернуться к началу
   
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт ноя 19, 2010 8:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
Mario, спасибо

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт дек 17, 2010 2:32 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
Изображение

Делаю SCROLLBAR и у меня появилась проблема. Не могу никак сделать перемещение ползунка. То есть оно получилось, в результате долгих мучений, но не совсем правильно. Может кто поделится алгоритмом работы scrollbar'а. Возможно я что-то не правильно делаю. Вернее, я алгоритм реализовал неправильно наверно.

Если надо потестить, прикрепил бинарник.


Вложения:
SB.KEX [1.51 КБ]
99 скачиваний

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение
Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт дек 17, 2010 9:37 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт мар 17, 2006 4:01 pm
Сообщения: 28
Врядли это можно считать полноценным ответом, но аглоритмы полосы прокрутки есть в исходниках таких программ как Tinypad, Table, Eolite, KFM...


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт дек 17, 2010 12:40 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
connect писал(а):
Врядли это можно считать полноценным ответом, но аглоритмы полосы прокрутки есть в исходниках таких программ как Tinypad, Table, Eolite, KFM...

1. Я уже неоднократно писал, что чужие исходники для меня тёмный лес (особенно без комментарий).
2. В Tinypad, скроллинг работает не совсем праваильно, и мне бы не хотелось бы заранее писать неправильно, в том случае, если я конечно разберусь в его исходниках.
3. Table и Eolite написаны на наСильниках, на которых я не умею программировать. Сложноваты будут.
4 Исходников KFM у меня нет, и на SVN тоже.

Неужели так сложно написать 5 - 10 строчек с алгоритмом? Или это секрет?

P.S. Пожалуйста помогите! :(

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт дек 17, 2010 2:11 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 750
В скроллинге самые главные 3 параметра это:
- Максимальный размер документа
- Какая часть документа влазит в экран
- Позиция бегунка
Вот описание этих параметров из box_lib.obj со страницы http://wiki.kolibrios.org/wiki/Box_lib_scrollbar/ru :
Цитата:
# sb_max_area - область максимальная, актуально когда не влазит в отображаемую область, т.е. случай активности компонента (весь максимальный размер документа)
# sb_cur_area - область отображаемая (какая часть документа влазит в экран)
# sb_position - позиция бегунка изменяемая от 0 до значения (sb_max_area-sb_cur_area)


Все алгоритмы по работе со скроллингом сводятся к правильной обработке этих параметров и правильном отображении скроллинга на экране в зависимости от значений этих параметров. Остальные параметры не столь важны для программиста использующего твой компонент, они имеют для него второстепенное значение (цвет, положение, размер, ... и т.д.) . Детального алгоритма у меня нет т. к. я скроллинги не делал. Для каждого события (нажатие на мышку или клавиатуру) должен быть свой алгоритм ли функция.


Вложения:
Комментарий к файлу: результат теста: мышей я смог сдвинуть ползунок скроллинга ниже кнопки
test_scroll.png
test_scroll.png [ 3.41 КБ | 2800 просмотров ]
Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт дек 17, 2010 4:21 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
IgorA писал(а):
результат теста: мышей я смог сдвинуть ползунок скроллинга ниже кнопки


Знаю, scrollbar ещё не доделан. Я заглушку пока поставил только на кнопки. На ползунок пока не ставил, так как смысла нет, потому что он всё равно работает неправильно, и наверняка его надо будет переделывать.

На счёт параметров я знаю, но алгоритма перемещения scroller'а мне они не раскрывают. Именно поэтому, мне и нужен более детальный алгоритм, чтобы было с чем сравнивать. И если что-то неправильно, то поменять на правильно. Может я вообще неправильно алгоритм организовал в своём scrollbar'е, что скорее всего.

Но всё равно, спасибо.

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Пт дек 17, 2010 5:14 pm 
Не в сети

Зарегистрирован: Вт окт 05, 2010 6:05 pm
Сообщения: 178
Результаты поиска "scroll" по src, sdk, svn ("с" результаты опущены)

kolibri_0.7.7.0_src\lib\box_lib\scrollbar.mac
kolibri_0.7.7.0_src\programs\fs\kfm\scroll.inc
kolibri_0.7.7.0_sdk\INFOBOX\VSCROLL8.asm
---
svn\programs\develop\libraries\box_lib\trunk\scrollbar.mac
svn\programs\develop\libraries\box_lib\trunk\doc\scrollbar\scrollbar.htm
svn\programs\develop\libraries\libGUI\examples\src\ASM\SCROLL_BAR.ASM
svn\programs\develop\libraries\libGUI\examples\src\ASM\SCROLLED_WINDOW.ASM
---
ещё у Зубкова которого я взял по ссылке откуда-то с этого форума, scroll'ы описываются


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Вс дек 19, 2010 2:49 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
lev писал(а):
Результаты поиска "scroll" по src, sdk, svn ("с" результаты опущены)

kolibri_0.7.7.0_src\lib\box_lib\scrollbar.mac
kolibri_0.7.7.0_src\programs\fs\kfm\scroll.inc
kolibri_0.7.7.0_sdk\INFOBOX\VSCROLL8.asm
---
svn\programs\develop\libraries\box_lib\trunk\scrollbar.mac
svn\programs\develop\libraries\box_lib\trunk\doc\scrollbar\scrollbar.htm
svn\programs\develop\libraries\libGUI\examples\src\ASM\SCROLL_BAR.ASM
svn\programs\develop\libraries\libGUI\examples\src\ASM\SCROLLED_WINDOW.ASM
---

Я просил алгоритм, а не код. Не знал что там есть. Врятли поможет, но спасибо.

lev писал(а):
ещё у Зубкова которого я взял по ссылке откуда-то с этого форума, scroll'ы описываются

Не нашёл. Хоть номер главы написал бы.

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Вс дек 19, 2010 4:18 pm 
Rock_maniak_forever
Для начала я еще раз проясню свою позицию - я не считаю целесообразным написание собственного кода, если есть доступный рабочий пример чужого кода. Однако раз так хочется разбрасывать свои и грабли, то дело хозяйское.

В простейшем виде скроллбар получает два события: события мыши (нажатие и отпускание кнопки - соответственно наличие или отсутствие флагов отвечающих за эти кнопки) и событие перерасчета позиции при внешнем воздействии (клавиатура например или изменение размера отображаемых данных). Как уже писал ранее Игорь имеется три главных параметра с которыми оперирует код, на самом деле их четыре:
1) размер полной рабочей области (в условных единицах - строки или пиксели, смотря что выводится)
2) размер отображаемой части (в условных единицах - строки или пиксели, смотря что выводится)
3) размер занимаемый скроллбаром (в пикселах, за вычетом боковых кнопок)
4) размер занимаемый бегунком скроолбара (в пикселах)

обозначим параметры как: a, b, c, d

Исходя из вышеперечисленного имеем формулы:

c = a/K
d = b/K

где:
a - размер полной рабочей области
b - размер отображаемой части
c - размер занимаемый скроллбаром
d - размер занимаемый бегунком скроолбара
K - коэффициент соответствия

Изначально известны две величины a и с - все остальное пляшется исходя из них.

На практике формулы несколько усложняется, поскольку в текущем виде она будет обрабатывать позицию мыши слишком жестко и у пользователя будет создаваться ощущение рассинхронизации. Нужно еще учитывать, что пользователь захватив бегунок тащит его в одну или другую сторону и бегунок (пока не отпущена кнопка мыши или не закончилась область скроллбара) относительно курсора мыши должен идти строго синхронно, для этого приходится немного поизвращаться с кодом. К примеру в KFM как раз присутствует вариант когда есть рассинхронизация, этот же код но доработанный на 40-50% перекочевал в библиотеку Box_Lib и там уже недоработка с рассинхронизацией устранена.

Теперь представляем сколько времени и сил уходит на реализацию правильного скроллбара - вылизывать код придется основательно. Единственно почему я не взял код из Tinypad в свое время это его высокая интеграция в приложение. В KFM оно тоже было вшито сильно, но тот код хотя бы был мой - хотя два месяца на выдирание и отладку были не самыми простыми и приятными.


Вернуться к началу
   
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Вс дек 19, 2010 8:44 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
Mario
Спасибо за полезную инфу, пригодится. :D

Mario писал(а):
Rock_maniak_forever
Для начала я еще раз проясню свою позицию - я не считаю целесообразным написание собственного кода, если есть доступный рабочий пример чужого кода.

Теперь я проясню свою позицию:
==========================
1. Чужой код, для меня тёмный лес. Четно говоря, мне это, уже надоело повторять.
2. Если даже я и буду разбирать чужой код, и вдруг что нибудь пойму, то на понимание всего кода у меня уйдёт куда больше времени, чем у вас на выдирание и отладку. Да и код, в чужой программе, может быть написан не полностью.
3. На scrollbar, который я написал недавно, у меня ушла всего неделя, с отладкой (но без оптимизации) и без знания алгоритма работы. Там только ползунок неправильно работает. Сначала пришлось смотреть работу scrollbar'а в давно всеми забытом Menuet'е (как потом оказалось, там он работает неправильно), а потом смотрел в Must Die (смотрел изменение scrollbar'а, при разных условиях). Часть алгоритма, взял: из Menuet'а, часть из Must Die и часть сам придумал. Да и scrollbar не простой, как в Tinypad или KFM. Да, люблю красивый фейс в проге, и без этого никак. А если бы я знал алгоритм заранее, то у меня бы ушло всего от 2-4 дней на его написание, со всеми вытекающими.
4. Мне не доставляет радости, ковыряться в чужом коде. Особенно, когда его не понимаешь.
5. Велосипед изобретать не хочется.
6. Время жалко на понимание и изобретение того, что уже придумано до меня.
7. На ошибках учатся.

Тем самым, мне проще, приятнее и быстрее написать программу (макрос) самому. Конечно, если я точно знаю алгоритм.

Ну допустим, перепишу я этот код, а знать как он работает, не буду. А если я этого не буду знать, то я не смогу правильно написать программу (макрос), ну или как-то её, или тот код,усовершенствовать или оптимизировать. Поэтому, мне архи-нужен и архи-важен алгоритм работы программы, а не код. И чем точнее и понятнее он будет описан, тем быстрее я напишу программу (макрос), и тем качественнее она будет работать.

Mario писал(а):
Однако раз так хочется разбрасывать свои и грабли, то дело хозяйское.

Вот я и спрашиваю, чтобы их не разбрасывать, и на них не натыкаться.

Mario писал(а):
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
На практике формулы несколько усложняется, поскольку в текущем виде она будет обрабатывать позицию мыши слишком жестко и у пользователя будет создаваться ощущение рассинхронизации. Нужно еще учитывать, что пользователь захватив бегунок тащит его в одну или другую сторону и бегунок (пока не отпущена кнопка мыши или не закончилась область скроллбара) относительно курсора мыши должен идти строго синхронно, для этого приходится немного поизвращаться с кодом. К примеру в KFM как раз присутствует вариант когда есть рассинхронизация, этот же код но доработанный на 40-50% перекочевал в библиотеку Box_Lib и там уже недоработка с рассинхронизацией устранена.

Я не в праве требовать от вас писать мне целую диссертацию, ибо понимаю, что ваше время бесценно и принадлежит только вам. Но если вы решите уделить мне ваше драгоценное время, чтобы помочь мне разрешить мою проблему, то хотелось бы побольше узнать о таинственном перемещении ползунка, которое так не даёт мне покоя. :D

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение


Последний раз редактировалось Rock_maniak_forever Вс дек 19, 2010 9:12 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Вс дек 19, 2010 9:12 pm 
Не в сети

Зарегистрирован: Чт авг 13, 2009 10:39 am
Сообщения: 54
Rock_maniak_forever
Без обид, но пункты 4, 5, 6 противоречат друг другу по сути.


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Вс дек 19, 2010 9:39 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн фев 09, 2009 4:13 am
Сообщения: 445
ChE писал(а):
Rock_maniak_forever
Без обид, но пункты 4, 5, 6 противоречат друг другу по сути.

И чем же...

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

_________________
\ Маузер в руке, Путин – на крюке! \ Путину – клизму! Смерть капитализму! \ Путин – параша, победа будет наша!\
\ Застрели буржуя в спину! Он не лучше чем скотина! \
Изображение


Вернуться к началу
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Вс дек 19, 2010 9:53 pm 
Rock_maniak_forever
1) тебе надо организовать обработку случая захвата бегунка - это зачастую не всегда очевидно когда только задумываешься над реализацией.
2) отлавливать момент когда бегунок захвачен, в примере простейшего скроллбара в этот момент бегунок прыгает и центрируется относительно текущего положения курсора мыши, для полноценного скроллбара этого естественно не должно происходить.

OFFTOP: скроллбар это не велосипед, а скорее цепной механизм - можно его и самому изобретать, но пророй лучше изобретать раму и колеса, чем это.

И без обид - если тебе не хочется, неприятно и неинтересно разбираться с чужим кодом, то вероятно другим также может быть интересно с твоим кодом, тем самым обрекаешь себя на ограниченный ресурс собственных сил. Именно чтобы не разбираться с чужим кодом и придумали динамически подключаемые библиотеки имеющие достаточно четко реализованный интерфейс. Я понимаю что это надо осознать просто - мне потребовалось 3-4 года и если бы я писал KFM сейчас он был бы другим.

Кстати в Tinypad реализация скроллбара полноценная, но как я уже сказал слишком глубоко вшитая в приложение, иначе автор бы сам вынес этот код в подключаемую библиотеку.


Вернуться к началу
   
 Заголовок сообщения: Re: KMLIB (Kolibri Macro Library) v0.05
СообщениеДобавлено: Сб апр 23, 2011 5:41 pm 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 750
Rock_maniak_forever
Думаю, не нужно 3 экзешника фасма в архив включать. У каждого, уверен, есть свой - у кого под винду, у кого под линукс, у кого под кос.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 34 сообщения ]  На страницу Пред. 1 2 3 След.

Часовой пояс: UTC+03:00


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB