OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 02:41

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Замена оконной системы
СообщениеДобавлено: Четверг, 01 Март, 2012 16:18 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
и избавление её от винапи как приятный бонус.

Есть мысль реализовать окна на базе SDL (viewtopic.php?f=47&t=2019). Как думаете, насколько перспективно связываться именно с SDL? И какие ещё могут быть варианты?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Четверг, 01 Март, 2012 16:44 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Четверг, 01 Март, 2012 16:48 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Актуальная тема!

Я вот тоже посматриваю в сторону SDL. Хотелось бы услышать мнение человека, который под нее писал.
А вариантов наверное всего два - SDL и OpenGL

SDL лично мне кажется более правильным выбором, т.к. там не только графика...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Четверг, 01 Март, 2012 20:24 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
SDL и OpenGL - разные вещи. OpenGL - это библиотека трёхмерной графики, SDL - система комплексная и звук и видео и сеть и т.п. Более того, есть интеграция у SDL с OpenGL.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Четверг, 01 Март, 2012 22:18 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Пятница, 02 Март, 2012 21:43 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Сам по себе Ports (растровый вывод) вполне можно реализовать с помощью SDL. Таким образом, рендерингом рабочей области окна может заниматься SDL как замена GDI.
Также для вывода примитивов на рабочую область (canvas) можно использовать векторные команды с помощью Cairo, OpenVG, AGG.

Но что касается оконной системы, то тут опять возвращаемся к WinAPI или каким-то внешним библиотекам элементов интерфейса: GTK+, Qt, fpGUI и прочим. По сути, для замены оконной системы сначала потребуется создать некий абстрактный слой - аналог вышеупомянутых библиотек. Возможно, какие-то наработки можно позаимствовать у проекта A2 OS (BlueBottle).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Пятница, 02 Март, 2012 22:00 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Еще можно глянуть на архитектуру управляемых форм 1С
http://v8.1c.ru/beta_ma/ma_forms.htm

А также на архитектуру форм в Oracle APEX.

Идеи этих технологий похожи


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Среда, 06 Февраль, 2013 08:52 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
ilovb писал(а):
Еще можно глянуть на архитектуру управляемых форм 1С

Очень похожая технология: http://ru.wikipedia.org/wiki/XUL


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Четверг, 14 Февраль, 2013 14:54 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Формы являются частью рабочей части окна. А речь именно об оконной системе.

Как отдельный, концептуальный вариант реализации ББ, вместо создания дочерних окон средствами оконной системы можно использовать всю рабочую область ББ поручить самостоятельной отрисовке всех элементов интерфейса: окон, меню, панели статуса и прочих привычных элементов. Правда, муторно всё это создавать (аналог Graphics Vision?), когда под рукой доступно столько готовых библиотек. Именно поэтому за это никто не берётся.

Вот вариант на PicoGUI (SDL):
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Четверг, 14 Февраль, 2013 15:34 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
По-сути, вернуться к тому из чего ББ первоначально создали, к ETH Oberon / Linz Oberon viewtopic.php?f=30&t=500
Или к новой реинкарнации - Bluebottle/AOS/A2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Вторник, 19 Март, 2013 20:20 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Вот еще интересная либа:
http://ru.wikipedia.org/wiki/IUP
http://www.tecgraf.puc-rio.br/iup/
Gallery
Additional Controls
Screenshots


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Воскресенье, 05 Май, 2013 17:47 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Сделал бинд к основной либе 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 КБ]
Скачиваний: 779
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Замена оконной системы
СообщениеДобавлено: Пятница, 10 Май, 2013 23:47 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Цитата:
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/


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


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

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


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

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