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()

В Будущем планируется сделать безопасную обертку.

Во вложении бинд, сама либа и тестовый пример.

Вложения:
iup_test3.txt [744.9 КБ]
Скачиваний: 307

Автор:  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/