OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 19:20

Часовой пояс: UTC + 3 часа


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему  [ Сообщений: 140 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Пятница, 29 Март, 2013 20:39 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Пётр Кушнир писал(а):
Кстати, так как в новом ББ не планируется вводить полноценный MDI "как-в-винде", то принимаются идеи по утилизации пространства внутри основного окна, которое пока никуда не исчезнет.
Эх... были бы в наличии толковые и/или трудолюбивые студенты, может было бы что предложить посолиднее идеи... идея, Пётр, кстати, Ваша.

Тема курсовой, предлагавшаяся на 2011-12 уч. год. Контейнерная вьюшка BlackBox «Мозаичный "менеджер окон"»
Код:
StdCoder.Decode ..,, ...O,...3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
 hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
 7.2.s,M,h.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
 NbXmb.2.QeJk2kZK,,6.,U08J99SdfJHPNjvQCJuGKfaqmY6MwdONl1QCh0708T,U..w.gyIU.
 sUGpmWbBxhYhAbndMHT9NY6Mw.sQq2Y6cwB.0.lv2w,2iHE.0E.M.NP0cU.ktAcoZimBhWhioh
 gnZcZRCY.2.o36.I16.M.,U.I3,S45.0ES9.2.c8fP3d8mBE,5TeEdKLqKKtCLLCJuIepZBGom
 Crl0ks,ktuGdKLqKa2V.Iy1.,USX56.C80E.QE.sQRtIQeoBjghg2hgn7.X5.u0n9PU.Iy5.,.
 60cK6.,U00.umUG5.E.Y.2..EGE.4.2.2YXK9VuI3Eyuv.Ih8l.k,U.UczzzzT1.,6xzzzzr3U
 izzzzT3.0zzzzzB.6yzzzzL,k.8Mtr.2.S02.e,0E.k.0.eG.WFs5.2UEC.c.0U0Ikmj,6.2w0
 U.2.p.0.4.I3.0ES,l51M.M.Zzzzzz1.ozzzzz1Yyzzzz12yzzzz1Yzzzzz1IS.oyzzzz1oxzz
 zz1Yxzzzz12zzzzz1oT.YT.YS60M.x54.owzzzzf.M.U,.Z5S,4Epzzzzj,.3zzzzz.h5.t5.F
 5.Z5.x5.Z5.J5.N5.h5.d5.x5m,IzzzzzP.Ep,Eu,Ez,EsV0.d5.N5C..4...h5.R5.Z5.p5.F
 5e.YTM.Eu,EyV0.h54....Ew,Eu,EoV7.d5y.oRM.Ew,..2S6,EwV0.t54.YS.IS.YQ.YSc.Ew
 V,.V5.t5.d5q.2.,6.ZJ,QXiI.3Qwb8R79HHfPLvQR7HHfPL9F9vQs.6.,UR,,UIV.k.m2aKN4
 ntartCokmKqCLLyIsKKrWmHWKuGLsenLyGnyKtKrqumr8qm8rruqlyKtKKL8ruyGvaqmYij3id
 Rgi2ic3iz2ixIaswakwaX2im2br24DN8CE,9z4U.kNU.EBE.0.z50EJ.36.2GkPk.0.89.Zz26
 .,U6J.2U.606..4k.E,4.Yyzzzz9,EtzD4.4Ez,Et,Er,Eq,Ew,Ez,Ey,EuV0U,IRM.Er,Ey,E
 o,Et,Ez,El,Ey,Eq,ErV0.d5y.4EpV,.R5i.IQM.Eo,ErV0.J54.oR.YS.YT.YSM0EtV,.J5.x
 5.J5.R5..EqV3.x5m,ITM.Eq,EszD.N5.t5.d5.V5.l5O,oTM...YR.oT.2RM,EqV8U0A.IUi1
 v016.0E.89.U.2.482.S62.1sTMO....TfM9fQ.EqaKl8rk8rwymvaKtGLoypnKLuiKrKqlWKu
 yJs8rreqmCKuypr84wfo3hZxfYhgnBhbphTxhaxfVphTxhkhgmBgoBhixgTRitRiohghxfVphY
 xfXxhh3idZhZJibA35cOM.,.Z3.E.0.x0,6.2,2..1M.M.h5S14EzV,.d5.N5.x5.l58.4E.6.
 Z3.E.0.,X.2.o66.4ETko.....C4UWZhVRgfJgj3jjggipidJijphhhgiZibA35M8M.,U.IK..
 0..2,2..16,EuVBU,2R61sz3c47gD7QD7gE7QB7QC7QD7QB7AE7QD7AA7wH7A6Z7VN8VR8VF8V
 p7VV7V,dENPM5HVyKw0mJnF0vH0TH01H0XH0TI0rH0jI0bH01GFmH0LH0rH07B7gB7QB7AE0GT
 GMRGMTEFiv4uEHGsOGsRGMaGs4WF0TH0DI0TI0XH09I0nI01GQGMEeH01I01H09I0fH076l7Vj
 7Vr7Vx7Vh7Vl7V3GaMD7AA0GUGsVGsUGsUGMRGMTYb24YDZkrYk9ZkuYkpYkUAc2Kc24c20flN
 GMQGMbGME0I01XrYkwYkpYk7ZkpYkx6C7wH7ITG6g5,dA7A6x6V17V,d57QA7QB7AEuH0r1rOA
 N76dNL,73,B6,8VkSGMTGMNGMQGMOGsSGMTAc2K6NWW2b2ia246VFUGsWGMQGsXga2Cc20n7V,
 7D7gD7wBUuYksYkW2YP3hdhgmBgmRgcBhX3YoBhgBhixgRpZU2Y2ia24a2Sb24b2y4x7VZFMGM
 VY70H0jXnYkyYk.ZksYk07D7AC7wF.CI0vI01mXGMMGsUGMVUxUUIX2qb2a5z7Vx7VvlOg53mS
 GMTY5,t57AA7Yu6AiXpYkU2b24YssBC2cEm2Z7Vx7VjFSo5hlSG610NWsMD7gEK10I01X4ZksY
 ksYkUgd2Kc2qb2Sa2q5,7D7QB8I07B7AA7A6ZFE8Iq.AaioahIiXpaUQfLBhiZgjxinhfUYa2S
 b2yd2420I0DH01H0rH0XXr6AO2EUG6X7Vx7V38VL8V,NE7A6ZFao7F0VFSGMQ68x7VplSGMMY5
 AZUYa2qb2K55GSGsOg5ENoZBgVUYkpYkksCWXr.sHwb2q51mRGsOY4vlOQ4xFEcDOXpcE0GTGM
 R24j,3018VT8V,,iH0LXrYkx6A0mTGMUGMQ2YzcD0Y0ZksYk.ZkycA0Xx6CW130UxYEYa24c2S
 c2Sa245f7V,d54Wv2Y0ZkkYkuYkqYE0maG6xFSQc24YlYk1ZkoYk1Zk0ZkU26Ya2Sd24YwYkxY
 kysAW1wb2mRY7j7VxFNEVg4rFQ2YLBhiZAgZmYkp6E4I0XH0FV.68P8FH86l7VvFVg4Yc2ia2C
 518V,7D0H0jXy66p7Vx,2YxYk.ZkkcA7AC8Y,ZkDN8RN1P647AB7QB7wH7A9,ND7AAo51mSGMT
 I4f7V,dC7Y0dD0YyMCA678Vx7V,GSGsVQb245,GTI4VlS24SH01Xo6ASI01Xg2YlYk9ZkvYkkY
 kUo5jFNGsVGsXg4vFMMDEWGMT265GSEEyIlK4Cor8rmeHE8EoGLu05O4.sMc9cR..cAkF.8k4u
 k9GMMY4EMgVlAZU2X2ya2S6253Ga220GTwb24b2Cc24a2K6ME7gE0YkcEKXn6CuYU26w4t,H0v
 FQw7uXucDqXUI4,d566A426xlSoZU2Y2GMQ5llPo5Z,3Ga6AsAuX.7C8YwsG7oSEEe,mXzUxMB
 qX0NDuXw66kUI5Q5fFEW1dlOYb2q5Ac2K6,0,mVo7H8Vl7Vn7V,7CKI01GN25jlV2a2S5NmSGs
 ZA5e1sDUp.0GI8H0nYC7GsEaGE8Iq44c9PcAH76,7VfFMQ5l,xFNEVY7,dC.MD.I6.N76z7V,m
 OGMOo51GV24ZlRGsbod206B7AC7QD0Xw6CSYpMEeXsMCI5g53mOA5vlO26N76,8VESkY2a2qd2
 C7UmsCuXqUxMD7wGKH01GNY7RGYEQ2YzcD0GSg43GTY45GEWmMaGLqkNaGEWF0tES2820GNo5j
 FSo5hlSo510NWs66kT26xlMGMTI4I6cAiI0zH0vXvMD7AC82kSGsOY4,mOg5llO2YuUw.q1qX0
 7A0GI8nI0GNGME82UUA4.r0kikRw7,tE7wD7AE0XmUpMDWXDFNY7R024t,,7BuXusEmXpMD8Yy
 cA0GQw4,NEyH0XX,Vk66xFVI5,mZGMVGsZgc24YyYkucDqXUwed,uGmaKtuGXaKtCLuWmImGEG
 FE1GNGMEGH0tDuXvMDK1WXp662Y,Zk07AqXoYkk6E8YxcDmX1laGoYqGQGsSGMVg4,GWG6nlUQ
 c24YLBBUBoVQYkkcEK1WXkYkvsG7Q1XN8Spo8Lu2YCpZg2Y5hioRBEEeIL0Gc8rre40mb84IbU
 YechgUYcZRidFEyKn0mkuKEyIsKKtMO2YHBjnZC0mkuKm0mVyqq0roEL0mLyG,WKuG5wBklICE
 q..y3.yZm,y3kjGLo.sLUTlm.y3kjkj.c.Ps27wC7Ym6A0GO0GFGJoKKEAhn3igBgt3YHBjnVW
 oZBIadcEN1kVyqqwhihgiZiUIcpBhgZgZJiU2b24Y,tDUyYku66r7VlFV.VFVQc24c2S7,dC7o
 SGsOY55GR0G,Wao,.5Ht.3184.ghZF,qkNaWQYkyYkoUv6H0mVoho,2YcYa2q5plVY5g53GMo6
 w78IqEVM8RN13QwdONQcjpBZvPN9P9fQbf9bGmCIu8LqGomCrl0ks,.ELCYiZCU2hA0U1VV,u0
 IC...Qii..70,cw7.,.d.,.HE.2U..U,IER.,6.AAw.,kgE.0U1KyEE.0.U66.y12.8Mt9V.E.
 .UY2.0k.0.0.0mF7.2UlSw,sbTX,U,U.2.8cB.,..e,2.A.c8U.E.0t.U..61lbAUgQnPt0lLU
 8ssH2q4Cb1xB..O,2..606.k22.WtZCbUwYX8Utj00MyfUMwdc7cJ7a.yS1...
 --- end of encoding ---


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Пятница, 29 Март, 2013 22:44 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
По волнам моей памяти... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Суббота, 30 Март, 2013 16:54 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Сегодня, добравшись до функций выпадающего меню, решил две проблемы.

Первая - это абстрактное представление, а что же такое вообще всплывающее/выпадающее меню? Из ответа сразу последовал типовой сценарий применения.
Итак, всплывающее меню это просто особое отображение, которое при встраивании возвращает особый Плавающий Фрейм, связанный с хост-реализацией, которая в свою очередь помогает этому фрейму находиться поверх остальных элементов, в том числе и окон системы, что зависит от реализации. То есть, фрейм лежит "как бы" там, где ему положено, то есть внутри вызывающего отображения. А так как встраиваемое отображение всё равно является отображением, оказалось, что больше ничего выдумывать не надо.

Вторая проблема - это реализация. В данном случае я упёрся в деревянное API freeglut, которое вообще для игр предназначено, а они либо в одном окне, либо вообще на полный экран, и собственно, проблемы отображения меню в полноэкранном режиме нет.
Но ведь абстракция нашего Плавающего Фрейма требует от нас отображения поверх текущего окна, поэтому пришлось немного погрузиться в винапи и пошаманить со стилями окна glut, чтобы оно перестало быть окном в привычном понимании :)

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Понедельник, 01 Апрель, 2013 19:39 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
А вот такой вопрос, кто может оценить частоту использования в своих проектах системных диалогов открытия/сохранения/выбора цвета/шрифта/каталога и прочего модального мусора в работе с текущим ББ?
А то они не очень вяжутся с общей концепцией, и поэтому в планах возник возможный сценарий по игнорированию функций модальных диалогов.
Единственную проблему составляют вопросы пользователю через GetOK, даже прям не знаю, что с ними делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 02 Апрель, 2013 10:36 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 358
Откуда: Россия, Стерлитамак
Пётр Кушнир писал(а):
А вот такой вопрос, кто может оценить частоту использования в своих проектах системных диалогов открытия/сохранения/выбора цвета/шрифта/каталога и прочего модального мусора в работе с текущим ББ?
А то они не очень вяжутся с общей концепцией, и поэтому в планах возник возможный сценарий по игнорированию функций модальных диалогов.
Единственную проблему составляют вопросы пользователю через GetOK, даже прям не знаю, что с ними делать.

Т.к. система хранения файловая, то думаю без этого не обойтись.

Я конечно не предсталяю оконную систему, но если я правильно понял, у Вас получилось контекстное меню связать с оконной системой, а оно (меню) вроде как всегда поверх других окон. Может сделать аналогично?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 02 Апрель, 2013 15:30 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Заготовка меню, выводимое через механизм плавающих фреймов, не является модальным в общем случае, и тем более оно не блокирует работу фреймворка.

В противоположность этому, вызов Dialog.GetIntSpec например является синхронным и выводит модальное окно.
А так как механизм стандартный, то изменить я его не могу, а если и могу, то не в виде изменения интерфейсов процедур, а разве что в виде хака на уровне хост-части.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 02 Апрель, 2013 16:01 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Часики: примитивы, сглаживание, анимация.

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 02 Апрель, 2013 20:50 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
ObxOmosi, героическими усилиями Ивана по борьбе с тесселяцией.

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 02 Апрель, 2013 21:05 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Пётр Кушнир писал(а):
А вот такой вопрос, кто может оценить частоту использования в своих проектах системных диалогов открытия/сохранения/выбора цвета/шрифта/каталога и прочего модального мусора в работе с текущим ББ?
Каталоги часто открываются.

Для этих диалогов было (в 1992/3) соображение, чтоб было как в подлежащей ОСи.
Если это соображение уходит -- а оно сейчас, видимо, не особо уже актуально, т.к. у всех всё стало похоже -- то и путь открыт.

Про GetOK с ходу сообразить не могу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Четверг, 04 Апрель, 2013 21:32 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Кубы наши друзья!

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Понедельник, 08 Апрель, 2013 23:06 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Несколько дней молчания не прошли зря, теперь у нас есть работающий механизм выделения (Ports.Rider.MarkRect), работа с фокусом, меню и клавиатурными шорткатами. Можно даже редактировать и изменять стили у текстов. И даже компилировать!

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 09 Апрель, 2013 08:17 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
что такое несколько дней в таком усилии


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Среда, 10 Апрель, 2013 09:47 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Подсистема Ole настолько винапишная, что аж противно.
Плюс, на неё завязан драг-н-дроп в реализации HostMechanisms.
Вот ничего больше не завязано на винапи в Mechanisms, только драг-н-дроп, и ещё операция pick, но там совсем маленькая привязка.
Мерзко.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Среда, 10 Апрель, 2013 20:29 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Пётр Кушнир писал(а):
Подсистема Ole настолько винапишная, что аж противно.
А как по-другому? Ole это виндуса же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Понедельник, 15 Апрель, 2013 18:53 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
По традиции, небольшой отчёт.

Реализовано почти похожее на windows поведение меню, с учётом потери фокуса и так далее.
Многие пункты меню, как оказалось, работают, особенно порадовали почти совместимые с новым ББ демки из Obx.

Реализованы некоторые механизмы из модуля Mechanisms. Как и всегда, при погружении начинают проявляться проблемы и органичения.

Например, при реализации Mechanisms я столкнулся с несовместимостью старой схемы рисования и нового порта на OpenGL, так, при ресайзе контролов внутри контейнера выполняется приснопамятный цикл с Ports.Rider.Input внутри, что предполагает рисование на канвасе окна вин-апи внутри этого цикла, однако глут построен по другой схеме и выполняет перерисовку ПОСЛЕ обработки сигналов коллбеком пользователя, то есть, цикл внутри ББ рисует в буфер, который будет обновлён внешними системами только после выхода из цикла, ну и естественно никакой рамки ресайза не появляется на экране.

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

Ввиду непреодолимости этого архитектурного решения, видимо нам придётся разработать отдельные механизмы для решения описанных проблем, ну а платой за это станет некоторая несовместимость с предыдущими версиями ББ в плане написания обработчиков сигналов контроллера.

Ну, то есть, интерфейсы останутся на месте и совместимость по ним останется, но понятно, что мы для этого случая результатов обещать не станем, всецело призывая использовать новые механизмы, которые ещё предстоит осмыслить. Учитывая, что Containers ждёт от Mechanisms якобы мгновенного результата при ресайзе (конечно, реализация с циклом ведь блокирует фреймворк).

Так же были реализованы самые простые контролы, а мои вкладки вообще по сути править не пришлось, разве что убрать паразитную зависимость от HostPorts.
Картинка:
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Понедельник, 15 Апрель, 2013 21:04 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Да, это переломный этап для OpenGL-BlackBox. Надо что-то делать с Ports.rider.Input (напомню, были обсуждения, посвящённые циклу обработки мыши здесь и здесь.

Я ещё как-то делал режим "hover" для кнопки, который выглядит так: Кнопка с ховером, а работает так: при получении кнопкой сообщения Controllers.CursorMessage включается периодическая проверка координат курсора, и кнопка перерисовывается "приподнятой". Ну а при нажатии на кнопку надо отрабатывать сход курсора с кнопки при помощи этого самого REPEAT f.Input(x, y, modifiers, isDown) UNTIL ~isDown; с перерисовкой внутри цикла, что совсем не ложится на схему рендера в OpenGL.

И что-то я не вижу, как можно порешать эту проблему безболезненно. Ситуаций типа "ховера" будет полно, к гадалке не ходи. Думаю, что для дальнейшего продвижения придётся ломать ввод f.Input и терять совместимость со всеми компонентами, которые на нём построены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Понедельник, 15 Апрель, 2013 21:38 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
2007-й год, хыых.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 16 Апрель, 2013 01:53 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Поди, на дворе 2013 год. То, что мышь являлась чуть ли не единственным манипулятором в 1990-х, собственно и отразилось на Обероне и абстрактном модуле Ports. Сегодня же мультитач встречаешь повсюду.
Так что ломать совместимость с исходным ББ придётся рано или поздно. Главное, чтобы это было в лучшую сторону.

А много ли компонентов зависят от Rider.Input? У меня вообще была мысль разделить модуль Ports на следующие функциональные части: растровые операции, обработку ввода-вывода, курьер для вывода графических примитивов и текстовый курьер - для операций над текстом. Только, на мой взгляд, полноценно описать текстовый курьер в абстрактном виде довольно сложно. Собственно, это зависит от того насколько полно абстрактное описание должно покрывать нужды каркаса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 16 Апрель, 2013 02:16 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Если пойти принципиально до конца по пути сохранения совместимости, то можно попробовать сделать в Input переключение контекста.

В том месте фреймворка, где идёт вызов HandleCtrlMsg, сделать логику запоминания "базы" и продолжения (если при прошлом вызове HandleCtrlMsg был вызван Input). А внутри Input запоминать контекст потока, снимать со стека все кадры выше запомненной "базы".
Есть пробная реализация такого механизма.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox на OpenGL
СообщениеДобавлено: Вторник, 16 Апрель, 2013 07:58 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Илья Ермаков писал(а):
А внутри Input запоминать контекст потока, снимать со стека все кадры выше запомненной "базы".Есть пробная реализация такого механизма.
Это было бы неплохо. Думаю, технически никак не нужно ограничивать работу пользователей с Ports.Input, но в реализацию встроить механизм.
Правильно я понимаю, он будет работать даже с вызовом Input внутри цикла, в каждой новой итерации восстанавливая прежнее состояние процедуры/метода?
А какие побочные эффекты могут быть?
И можно ли использовать подобный механизм для замены модальных диалогов/сообщений? или же имеет смысл проработать альтернативный способ в первую очередь, а манипуляции со стеком оставить только для legacy-кода?
Роман М. писал(а):
У меня вообще была мысль разделить модуль Ports на следующие функциональные части: растровые операции, обработку ввода-вывода, курьер для вывода графических примитивов и текстовый курьер - для операций над текстом.
В этом я с вами согласен, но делить по идее можно и реализацию YHostPorts, ведь она вполне легально может использовать абстракцию Ports только для поддержки работоспособности ББ, а более крутые фичи будут расположены в отдельных абстракциях, у меня например для расширения функций оконной подсистемы уже возник модуль YSystemWindows. Думаю, ваша идея вполне может быть реализована подобным образом, ну и не надо забывать, что основа порта у нас OpenGL, а значит к нему тоже надо дать доступ людям.
Но пока я хочу выйти на крейсерскую скорость с максимумом прежних механизмов, всё таки ББ как консервативно развивающийся софт должен хранить совместимость :)

Роман М. писал(а):
А много ли компонентов зависят от Rider.Input?
Цитата:
Location Count
Controls/Mod/Scrollers.odc 6
Grid/Mod/Views.odc 6
O3app/Mod/Movie.odc 5
O3base/Mod/WebObj.odc 5
ypk/Mod/CtlsSplitter.odc 5
O3base/Mod/WebContainers.odc 4
O3std/Mod/WebUser.odc 4
Text/Mod/Controllers.odc 4
Ctls/Mod/Sliders.odc 3
Ctls/Mod/Trackbar.odc 3
Dev/Mod/Dependencies.odc 3
Host/Mod/Mechanisms.odc 3
Std/Mod/Tables.odc 3
Stern/Mod/Tables.odc 3
System/Mod/Containers.odc 3
YStd/Mod/Mechanisms.odc 3
Abf/Mod/MtScrollers.odc 2
Dev/Mod/Debug.odc 2
Dev/Mod/MsgSpy.odc 2
Sql/Mod/Controls.odc 2
Std/Mod/Links.odc 2
Stern/Mod/Controls.odc 2
ygl/Mod/Windows.odc 2
ypk/Mod/HostTabFrames.odc 2
Cpc/Mod/ControlTips.odc 1
Ctls/Mod/Buttons2.odc 1
Ctls/Mod/ButtonsB.odc 1
Ctls/Mod/ButtonsV.odc 1
Ctls/Mod/Progress.odc 1
Ctls/Mod/UnitField.odc 1
Db/Mod/SqlLogView.odc 1
Dev/Mod/Commanders.odc 1
Dev/Mod/HeapSpy.odc 1
Dev/Mod/Markers.odc 1
Dev/Mod/Selectors.odc 1
Form/Mod/Controllers.odc 1
Host/Mod/Menus.odc 1
Host/Mod/~Menus.odc 1
O3base/Mod/WebElements.odc 1
O3base/Mod/WebElements2.odc 1
O3bb/Mod/WebServlets.odc 1
Obx/Mod/Buttons.odc 1
Obx/Mod/Calc.odc 1
Obx/Mod/Ctrls.odc 1
Obx/Mod/Graphs.odc 1
Obx/Mod/Lines.odc 1
Obx/Mod/Omosi.odc 1
Obx/Mod/Views5.odc 1
Obx/Mod/Views6.odc 1
Ogl/Mod/Cube.odc 1
Ogl/Mod/Image.odc 1
Ogl/Mod/MoveLight.odc 1
Ogl/Mod/PickSquare.odc 1
Ogl/Mod/Polyoff.odc 1
Ogl/Mod/VArray.odc 1
Priv/Mod/Views6.odc 1
Std/Mod/Folds.odc 1
Std/Mod/Stamps.odc 1
Stern/Mod/Ctrls.odc 1
System/Mod/Ports.odc 1
Text/Mod/Rulers.odc 1
ygl/Mod/Msg.odc 1
YHost/Mod/Ports.odc 1


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 140 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB