Автор Тема: IDE на базе SDL  (Прочитано 27307 раз)

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
IDE на базе SDL
« : Март 03, 2012, 12:52:24 pm »
Убогость или приемлемое кроссплатформенное решение?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #1 : Март 03, 2012, 01:07:42 pm »
А можно ссылок на то, что вообще имеется в виду? А то SDL -- довольно распространённая аббревиатура, и везде расшифровывается по разному...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #2 : Март 03, 2012, 01:17:45 pm »
А можно ссылок на то, что вообще имеется в виду? А то SDL -- довольно распространённая аббревиатура, и везде расшифровывается по разному...
libsdl.org

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #3 : Март 03, 2012, 01:38:54 pm »
Убогость или приемлемое кроссплатформенное решение?
Я просто с SDL имел дело и знаю на что оно способно.

SDL прекрасно подходит для кроссплатформенной игры например. Для кроссплатформенного эмулятора (виртуальной машины) - тоже прекрасно (см. qemu, dosbox и так далее). Вполне сойдет для видеоплеера (хотя тут уже с натяжками). Абсолютно не годится для IDE и тем более для BB (ведь он не только IDE, но и то на базе чего затем строится конечное приложение).

Поясню: в SDL у тебя ровно одно окно. Больше одного окна (в терминах OS) SDL не умеет. Более того, оно и с этим то окном весьма неумело обращается. Все что SDL умеет делать (в плане графики) - это рисовать в этом самом окне, точнее работать с видеопамятью (а функции рисования примитивов - изволь реализовывать сам, либо используй сторонние либы). И делает это хорошо.

А зачем нам вообще что-то кроме одного окна (в терминах OS, понятно что своих окошек мы внутри можем нарисовать ровно столько сколько захотим и OS про них ничего знать не будет)? А затем. Например для выпадающих меню - меню должно быть полностью на экране даже если не вмещается в родительское окно (простейший пример - высота окошка меньше чем высота менюшки - оно вылезает за его пределы). Также для диалогов (open file и так далее). Для всплывающих подсказок. Вообще многооконность вещь весьма полезная. Я видел помнится коммерческий графический редактор (аля фотошоп) реализованный целиком на SDL - это смотрелось ужасно. Вроде на скриншотах ничего, но пользоваться не приятно. Он крайне чужд любой системе.

В swing'e (стандартная gui-либа для java) есть разделение - есть тяжеловесные окна - это те окна которые существуют в терминах OS, и легковесные окна - которые мы полностью рисуем сами и OS про них ничего не знает. Одно тяжеловесное окно может содержать одно или несколько наших окон/граф. компонентов/виджетов (любой виджет это, очевидно, окно). Специально для тяжеловесных окон в swing'e есть тоненькая абстрактная прослойка над механизмами данной конкретной OS - awt. Она реализует (точнее оборачивает системные) кроссплатформенно ровно те немногочисленные функции, которые swing'у нужны от оконной системы. Например swing'у не нужны нативные системные контролы (кнопка там, чекбокс и так далее) - он сам рисует свои на базе легковесных окон. (хотя, справедливости ради, следует заметить что в awt они есть - это осталось с тех времен когда не было swing'a и все пытались сделать чисто на awt, без легковесных окон).

Таким образом, для построения кроссплатформенной гуйной либы тоже нужно реализовать тоже что-то вроде облегченного AWT для тяжеловесных окон разных систем. А уже потом внутри рисовать красивый (или не очень) гуй.

И да, swing работает во всех распространенных системах. Перекомпиляция программы не требуется.

PS. Кроме того, SDL изначально затачивался под игры. Там скорость много важнее надежности.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #4 : Март 03, 2012, 09:46:28 pm »
Может адаптировать что-нибудь паскалевское, типа fpGUI?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #5 : Март 03, 2012, 11:21:58 pm »
Может адаптировать что-нибудь паскалевское, типа fpGUI?
Я не знаю. С fpGUI я не знаком.
В принципе вполне годится взять и портировать (переписать) что-нибудь легковесное-сишное (не плюсовое). Именно в плане оконной либы. В качестве алгоритмов для рисования можно тот же AGG взять, который уже переписан на Обероне (полностью или почти полностью).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: IDE на базе SDL
« Ответ #6 : Март 04, 2012, 07:43:07 am »
Например для выпадающих меню - меню должно быть полностью на экране даже если не вмещается в родительское окно (простейший пример - высота окошка меньше чем высота менюшки - оно вылезает за его пределы). Также для диалогов (open file и так далее). Для всплывающих подсказок.
Зачем это быть полностью на экране даже если не вмещается в родительское окно? Я, например, наоборот всегда воспринимал такое поведение (когда нечто выперло за рамки окна) как глюк в программе из-за кривых рук программистов.

DIzer

  • Гость
Re: IDE на базе SDL
« Ответ #7 : Март 04, 2012, 07:48:28 am »
Например для выпадающих меню - меню должно быть полностью на экране даже если не вмещается в родительское окно (простейший пример - высота окошка меньше чем высота менюшки - оно вылезает за его пределы). Также для диалогов (open file и так далее). Для всплывающих подсказок.
Зачем это быть полностью на экране даже если не вмещается в родительское окно? Я, например, наоборот всегда воспринимал такое поведение (когда нечто выперло за рамки окна) как глюк в программе из-за кривых рук программистов.
Например, когда отображения  окна НЕТ (свернуто в трей).

DIzer

  • Гость
Re: IDE на базе SDL
« Ответ #8 : Март 04, 2012, 08:03:13 am »
Точнее, когда меню содержит команды - СМЫСЛ которых не зависит от статуса видимости и размеров ОКНА приложения

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #9 : Март 04, 2012, 08:19:05 am »
Например для выпадающих меню - меню должно быть полностью на экране даже если не вмещается в родительское окно (простейший пример - высота окошка меньше чем высота менюшки - оно вылезает за его пределы). Также для диалогов (open file и так далее). Для всплывающих подсказок.
Зачем это быть полностью на экране даже если не вмещается в родительское окно? Я, например, наоборот всегда воспринимал такое поведение (когда нечто выперло за рамки окна) как глюк в программе из-за кривых рук программистов.
Ну, например вот для такого (видимо я не слишком ясно объяснил, картинка покажет лучше):
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: IDE на базе SDL
« Ответ #10 : Март 04, 2012, 08:23:01 am »
Например для выпадающих меню - меню должно быть полностью на экране даже если не вмещается в родительское окно (простейший пример - высота окошка меньше чем высота менюшки - оно вылезает за его пределы). Также для диалогов (open file и так далее). Для всплывающих подсказок.
Зачем это быть полностью на экране даже если не вмещается в родительское окно? Я, например, наоборот всегда воспринимал такое поведение (когда нечто выперло за рамки окна) как глюк в программе из-за кривых рук программистов.
Ну, например вот для такого (видимо я не слишком ясно объяснил, картинка покажет лучше):

Что за ФОШИСТКАЯ  писанина?  ;)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #11 : Март 04, 2012, 08:25:04 am »
Что за ФОШИСТКАЯ  писанина?  ;)
Да это видимо скриншот какого-то из немецких разработчиков ReactOS'и (у меня винды нет под рукой, поэтому использовал первый подвернувшийся скриншот из интернетов).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #12 : Март 04, 2012, 09:49:53 am »
Впринципе, что касаеться SDL в качестве IDE, думаю понятно - в морг.
Так, что тему можно закрывать.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #13 : Март 04, 2012, 09:53:03 am »
Поясню: в SDL у тебя ровно одно окно. Больше одного окна (в терминах OS) SDL не умеет. Более того, оно и с этим то окном весьма неумело обращается. Все что SDL умеет делать (в плане графики) - это рисовать в этом самом окне, точнее работать с видеопамятью (а функции рисования примитивов - изволь реализовывать сам, либо используй сторонние либы). И делает это хорошо.
По идее, описанное Вами ограничение можно было бы снять, если окно, принадлежащее системе, сделать transparent и растянуть во весь экран. В этом случае рисуй где хочешь. Но боюсь, что в этом случае система не позволит нарисовать "плотные" окна внутри прозрачного системного окна.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: IDE на базе SDL
« Ответ #14 : Март 04, 2012, 10:00:14 am »
Поясню: в SDL у тебя ровно одно окно. Больше одного окна (в терминах OS) SDL не умеет. Более того, оно и с этим то окном весьма неумело обращается. Все что SDL умеет делать (в плане графики) - это рисовать в этом самом окне, точнее работать с видеопамятью (а функции рисования примитивов - изволь реализовывать сам, либо используй сторонние либы). И делает это хорошо.
По идее, описанное Вами ограничение можно было бы снять, если окно, принадлежащее системе, сделать transparent и растянуть во весь экран. В этом случае рисуй где хочешь. Но боюсь, что в этом случае система не позволит нарисовать "плотные" окна внутри прозрачного системного окна.
Ну, вообще, теоретически, OS может позволять делать окна с неравномерной прозрачностью (вот винда например позволяет, через GDI+). То есть прозрачность указывается индивидуально для каждого из пикселей, причем не 0/1, а с градацией. Но, сколь я помню, SDL это не умеет. В плане руления системным окном SDL весьма ограничена - оно ей просто не нужно.

Ну и в любом случае это был бы костыль который наверняка выходил бы боком в некоторых случаях.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"