OberonCore https://forum.oberoncore.ru/ |
|
Замена оконной системы https://forum.oberoncore.ru/viewtopic.php?f=24&t=3865 |
Страница 1 из 1 |
Автор: | Иван Кузьмицкий [ Четверг, 01 Март, 2012 16:18 ] |
Заголовок сообщения: | Замена оконной системы |
и избавление её от винапи как приятный бонус. Есть мысль реализовать окна на базе SDL (viewtopic.php?f=47&t=2019). Как думаете, насколько перспективно связываться именно с SDL? И какие ещё могут быть варианты? |
Автор: | Пётр Кушнир [ Четверг, 01 Март, 2012 16:44 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Первым шагом, кмк, требуется ввести в ББ абстракцию Application, реализация которой, заменит, скажем, винапишные принципы создания приложений. Как вариант, предоставить набор межмодульных сообщений с соответствующим смыслом. |
Автор: | ilovb [ Четверг, 01 Март, 2012 16:48 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Актуальная тема! Я вот тоже посматриваю в сторону SDL. Хотелось бы услышать мнение человека, который под нее писал. А вариантов наверное всего два - SDL и OpenGL SDL лично мне кажется более правильным выбором, т.к. там не только графика... |
Автор: | Madzi [ Четверг, 01 Март, 2012 20:24 ] |
Заголовок сообщения: | Re: Замена оконной системы |
SDL и OpenGL - разные вещи. OpenGL - это библиотека трёхмерной графики, SDL - система комплексная и звук и видео и сеть и т.п. Более того, есть интеграция у SDL с OpenGL. |
Автор: | Пётр Кушнир [ Четверг, 01 Март, 2012 22:18 ] |
Заголовок сообщения: | Re: Замена оконной системы |
так же это могут быть движки векторной графики. кто-то уже пытался портировать кайро и agg. |
Автор: | Роман М. [ Пятница, 02 Март, 2012 21:43 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Сам по себе Ports (растровый вывод) вполне можно реализовать с помощью SDL. Таким образом, рендерингом рабочей области окна может заниматься SDL как замена GDI. Также для вывода примитивов на рабочую область (canvas) можно использовать векторные команды с помощью Cairo, OpenVG, AGG. Но что касается оконной системы, то тут опять возвращаемся к WinAPI или каким-то внешним библиотекам элементов интерфейса: GTK+, Qt, fpGUI и прочим. По сути, для замены оконной системы сначала потребуется создать некий абстрактный слой - аналог вышеупомянутых библиотек. Возможно, какие-то наработки можно позаимствовать у проекта A2 OS (BlueBottle). |
Автор: | ilovb [ Пятница, 02 Март, 2012 22:00 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Еще можно глянуть на архитектуру управляемых форм 1С http://v8.1c.ru/beta_ma/ma_forms.htm А также на архитектуру форм в Oracle APEX. Идеи этих технологий похожи |
Автор: | ilovb [ Среда, 06 Февраль, 2013 08:52 ] |
Заголовок сообщения: | Re: Замена оконной системы |
ilovb писал(а): Еще можно глянуть на архитектуру управляемых форм 1С Очень похожая технология: http://ru.wikipedia.org/wiki/XUL |
Автор: | Роман М. [ Четверг, 14 Февраль, 2013 14:54 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Формы являются частью рабочей части окна. А речь именно об оконной системе. Как отдельный, концептуальный вариант реализации ББ, вместо создания дочерних окон средствами оконной системы можно использовать всю рабочую область ББ поручить самостоятельной отрисовке всех элементов интерфейса: окон, меню, панели статуса и прочих привычных элементов. Правда, муторно всё это создавать (аналог Graphics Vision?), когда под рукой доступно столько готовых библиотек. Именно поэтому за это никто не берётся. Вот вариант на PicoGUI (SDL): |
Автор: | Ярослав Романченко [ Четверг, 14 Февраль, 2013 15:34 ] |
Заголовок сообщения: | Re: Замена оконной системы |
По-сути, вернуться к тому из чего ББ первоначально создали, к ETH Oberon / Linz Oberon viewtopic.php?f=30&t=500 Или к новой реинкарнации - Bluebottle/AOS/A2. |
Автор: | ilovb [ Вторник, 19 Март, 2013 20:20 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Вот еще интересная либа: http://ru.wikipedia.org/wiki/IUP http://www.tecgraf.puc-rio.br/iup/ Gallery Additional Controls Screenshots |
Автор: | ilovb [ Воскресенье, 05 Май, 2013 17:47 ] | ||
Заголовок сообщения: | Re: Замена оконной системы | ||
Сделал бинд к основной либе IUP: https://code.google.com/p/cp-iup/ Пример использования: Код: MODULE IupTest; IMPORT Iup := IupLib, SYSTEM; CONST expand = "EXPAND"; VAR ml: Iup.Ihandle; PROCEDURE [ccall] BtnCB(self: Iup.Ihandle); BEGIN Iup.SetAttribute(ml, "VALUE", "Hello!") END BtnCB; PROCEDURE Main*; VAR dlg, bt, split: Iup.Ihandle; res: INTEGER; ih: Iup.Ihandle; prev: Iup.Icallback; (* the address of the previous function associated to the action. *) BEGIN res := Iup.Open(NIL, NIL); bt := Iup.Button("Button", "btn_test"); Iup.SetAttribute(bt, expand, "YES"); prev := Iup.SetCallback(bt, "ACTION", SYSTEM.ADR(BtnCB)); ml := Iup.SetAttributes(Iup.MultiLine(NIL), "EXPAND = YES, VISIBLELINES = 5, VISIBLECOLUMNS = 10"); split := Iup.Split(bt, ml); Iup.SetAttribute(split, "ORIENTATION", "VERTICAL"); Iup.SetAttribute(split, "COLOR", "255 20 20"); dlg := Iup.Dialog(Iup.SetAttributes(Iup.Vbox(split, NIL), "MARGIN = 10x10, GAP = 10")); Iup.SetAttribute(dlg, "TITLE", "IupSplit Example"); res := Iup.Show(dlg); res := Iup.MainLoop(); Iup.Close(); END Main; BEGIN Main; END IupTest. ^Q DevLinker.LinkExe Simple.exe := IupTest ~ Бинд пока неполный. Есть еще расширения: http://www.tecgraf.puc-rio.br/iup/en/gallery_ctrl.html В ближайшее время появится доп. контрол Scintilla: http://ru.wikipedia.org/wiki/Scintilla Но даже на этом бинде вполне можно сделать автономное приложение с полноценным интерфейсом. API очень простой. Есть куча примеров на C и Lua: http://www.tecgraf.puc-rio.br/iup/examples/ Планируется сделать еще бинд к Canvas Draw: http://www.tecgraf.puc-rio.br/cd/ Это чтобы иметь возможность рисовать на канве. Кроме этого на канве в IUP можно рисовать с помощью Cairo и OpenGL. Бинды к ним уже есть, так что дело за малым. Еще довольно любопытен вот этот доп. контрол: http://www.tecgraf.puc-rio.br/iup/en/ct ... lplot.html Библиотеки (IUP и CD) работают на след. платформах: Цитата: UNIX (SunOS, IRIX, and AIX) using Motif 2.x UNIX (FreeBSD and Linux) using GTK+ (since 3.0) Microsoft Windows 2000/XP/2003/Vista/7 using the Win32 API В ближайшее время должна появиться поддержка Mac'ов. Особенности бинда: * Типы оканчивающиеся на List - это массивы, которые обязательно должны иметь NIL в последнем элементе (Так определяется конец списка) * Значение типа Inull должно всегда быть равно NIL. * Колбэки имеют тип INTEGER. Это необходимо, т.к. есть много видов колбэков с разными сигнатурами. Для установки колбэка следует использовать SYSTEM.ADR() В Будущем планируется сделать безопасную обертку. Во вложении бинд, сама либа и тестовый пример.
|
Автор: | ilovb [ Пятница, 10 Май, 2013 23:47 ] |
Заголовок сообщения: | Re: Замена оконной системы |
Цитата: Hi All, The 3.8 version of the IUP library has been released. You can find the list of changes and files for download at: http://www.tecgraf.puc-rio.br/iup/ We would like to highlight some of the improvements: New: attribute TOGGLEVISIBLEid for IupTree when SHOWTOGGLE=Yes. New: attribute TABVISIBLEid for IupTabs. New: IupLink control that shows a clickable URL. New: IupGridBox container to arrange elements in a regular grid. New: IupScintilla control that shows a source code text editor based on the Scintilla library. New: IupExpander container to interactively control the visibility of a child inside the dialog. Changed: GTK stock images now uses the same size as the Windows and Motif images in IupImageLib Best Regards, Antonio Scuri http://sourceforge.net/p/iup/news/2013/ ... -released/ |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |