Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ginfjan 11. 02. 2018, 12:56:57

Název: Jaké GUI nezávislé na operačním systému?
Přispěvatel: ginfjan 11. 02. 2018, 12:56:57
Prosím o radu, jakou GUI knihovnu byste mi doporučili pro software nezávislý na operačním systému.

"Nezávislostí" mám na mysli to, že pro knihovnu je k dispozici pouze bitmapa a události z klávesnice a myši.

Téměř všechny knihovny, co jsem nalezl v Google (QT, GTK+, wxWidgets, ...), tento požadavek nesplňují, neboť se jedná o nadstavby nad jiná API (WinAPI, X Window server, ...).
Částečně použitelné by bylo rozhraní Turbo Vision, to však je úplný extrém, neboť nepodporuje grafiku, ale pouze text. Ale v krajním případě o něm skutečně uvažuji s tím, že si nějaký canvas budu muset doimplementovat. Nerad ale znovu objevuji kolo, na to v současnosti nemám čas.

Nezáleží mi na jazyce, v němž je knihovna vytvořena (např. Pascal u Turbo Vision), stejně si ji budu muset celou překopat pro vlastní účely.
Kromě výše uvedených technických požadavků - podpora grafiky a nezávislost na GUI/API operačního systému mám ještě požadavek, že licence musí být kompatibilní s LGPL, tedy plně dostupné modifikovatelné zdrojové kódy zdarma, ale možnost z nich sestavit proprietální aplikaci, a to pro jakékoliv účely (byť o komerčních rozhodně neuvažuji).

Děkuji všam za brainstorming netypického zadání :-)
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: OMG 11. 02. 2018, 13:07:28
Prosím o radu, jakou GUI knihovnu byste mi doporučili pro software nezávislý na operačním systému.

"Nezávislostí" mám na mysli to, že pro knihovnu je k dispozici pouze bitmapa a události z klávesnice a myši.

Téměř všechny knihovny, co jsem nalezl v Google (QT, GTK+, wxWidgets, ...), tento požadavek nesplňují, neboť se jedná o nadstavby nad jiná API (WinAPI, X Window server, ...).
Částečně použitelné by bylo rozhraní Turbo Vision, to však je úplný extrém, neboť nepodporuje grafiku, ale pouze text. Ale v krajním případě o něm skutečně uvažuji s tím, že si nějaký canvas budu muset doimplementovat. Nerad ale znovu objevuji kolo, na to v současnosti nemám čas.

Nezáleží mi na jazyce, v němž je knihovna vytvořena (např. Pascal u Turbo Vision), stejně si ji budu muset celou překopat pro vlastní účely.
Kromě výše uvedených technických požadavků - podpora grafiky a nezávislost na GUI/API operačního systému mám ještě požadavek, že licence musí být kompatibilní s LGPL, tedy plně dostupné modifikovatelné zdrojové kódy zdarma, ale možnost z nich sestavit proprietální aplikaci, a to pro jakékoliv účely (byť o komerčních rozhodně neuvažuji).

Děkuji všam za brainstorming netypického zadání :-)
U toho textového rozhraní jednoznačně ncurses, je unixové, ale pro Windows existuje překladová vrstva pro conio. Jinak ale těžko říct, pokud nevyhovuje Qt apod., tak o ničem universálním nevím.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: Kate 11. 02. 2018, 13:14:54
Možná bych šla cestou SDL? Event handling řeší za tebe a vyrobit si objekty potřebných widgetů by neměl být zas takový problém.

Tohle vypadá hrozně cool, ale nevím jestli není požadavek OpenGL 3 moc limitující. https://github.com/wjakob/nanogui
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: Ivan Nový 11. 02. 2018, 13:21:10
Kivy, ale nehodí se na vše, používá openGL, https://kivy.org/#home
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: DogWithFleas 11. 02. 2018, 15:09:38
Nana http://nanapro.org/en-us/ (http://nanapro.org/en-us/)
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: ginfjan 11. 02. 2018, 18:20:18
Děkuji za odpovědi. Ncurses mi vůbec nenapadly, přitom jsou jsou narozdíl od TV dosud udržované :-) Na OpenGL se též podívám, sice u mé aplikace k dispozici nebude, ale předpokládám, že se používá jen na překrývání oken a půjde nahradit vlastním překreslováním.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: xul 11. 02. 2018, 18:26:47
Qt je nadstavba bud nad winapi, linuxove xlib, existuje i nad framebufferem.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: Vinicius 11. 02. 2018, 22:08:26
Možná by mohl vyhovovat FOX Toolkit. (http://www.fox-toolkit.org/)
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: Electron 12. 02. 2018, 12:57:58
Electron https://electronjs.org/ . Implementacne jde defacto o chrome browser takze ty neresis nic nizkourovnoveho pouzivas jenom web browser. Samozrejme muzes vyzit i HTML Canvas, webGL, proste jakoukoli web technologii nebo GUI. Je to multiplatformni a vypada vsude stejne. Pribalit si muzes i vlastni webfonty a nespolehat na systemove.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: ava 12. 02. 2018, 19:41:26
Aby nešlo o XY problém - můžete možná popsat, jaký problém vlastně potřebujete řešit, že k němu budete psát vlastní canvas? Třeba by mohla existovat snazší cesta...
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: ginfjan 12. 02. 2018, 21:27:46
Aby nešlo o XY problém - můžete možná popsat, jaký problém vlastně potřebujete řešit, že k němu budete psát vlastní canvas? Třeba by mohla existovat snazší cesta...

Děkuji všem za nápady, existuje toho daleko více, než jsem našel v Google.

Tím "problémem" je jednoúčelová aplikace pro platformu bez operačního systému, kde je k dispozici jen videoRAM a klávesnice/myš přes porty. Žádné WinAPI, žádný X server (ba ani Linux), žádné OpenGL.
Nicméně knihovny pro OpenGL jsem nezavrhl - myslím si, že se přes toto rozhraní řeší akorát překrývání oken. Pokud nenarazím na nějaké limity typu kreslení glyphů přes polygony, tak to půjde určitě předělat na klasický framebuffer.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: Sten 12. 02. 2018, 23:56:17
Pro něco takového by šlo použít Qt a napsat si vlastní Platform Abstraction (http://doc.qt.io/qt-5/qpa.html), třeba založené na modulu pro DirectFB.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: m 13. 02. 2018, 02:30:44
Ak je poziadavka bitmapa + vstupy z klavesnici a mysi, tak je jednoznacne spravna odpoved tu uz spominane SDL. Teda pri novom projekte SDL2.

Pretoze to _funguje_. Pouzivaju to A+ hry, radost s tym robit, bezi naozaj vsade, vratane mobilov a riesi drvivu vacsinu cross platform nezmyslov  (napriklad ma aj vlastny snprintf). OpenGL mozete ale nemusite pouzit. Existuje pre to kopa rozsirijucich knzinic. Ak pouzivame len 2D grafiku tak SDL zvoli vhodnu hardverovu akcelaciu, ak je k dispozicii.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: m 13. 02. 2018, 02:37:17
Ak je poziadavka bitmapa + vstupy z klavesnici a mysi, tak je jednoznacne spravna odpoved tu uz spominane SDL. Teda pri novom projekte SDL2.

Pretoze to _funguje_. Pouzivaju to A+ hry, radost s tym robit, bezi naozaj vsade, vratane mobilov a riesi drvivu vacsinu cross platform nezmyslov  (napriklad ma aj vlastny snprintf). OpenGL mozete ale nemusite pouzit. Existuje pre to kopa rozsirijucich knzinic. Ak pouzivame len 2D grafiku tak SDL zvoli vhodnu hardverovu akcelaciu, ak je k dispozicii.

aha, nevisimol som si ze sa bavime o preostredi, kde nie je ani linux framebuffer. Ospravdelnujem sa. Co takto cairo a nejako ho prepojit s tym framebufferom. Malo by to ist pomerne jedoducho, cairo vie kreslit priamo do pixbufferu v zlovenom formate. Druhy krok by som pogoogil "cairo GUI toolkit" a pouzil to :).
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: borekz 13. 02. 2018, 07:22:08
Google jsi zkusil ? První odkaz z Googlu: https://github.com/ryankurte/micro-gui
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: ava 13. 02. 2018, 08:53:17
Aby nešlo o XY problém - můžete možná popsat, jaký problém vlastně potřebujete řešit, že k němu budete psát vlastní canvas? Třeba by mohla existovat snazší cesta...

Děkuji všem za nápady, existuje toho daleko více, než jsem našel v Google.

Tím "problémem" je jednoúčelová aplikace pro platformu bez operačního systému, kde je k dispozici jen videoRAM a klávesnice/myš přes porty. Žádné WinAPI, žádný X server (ba ani Linux), žádné OpenGL.
Nicméně knihovny pro OpenGL jsem nezavrhl - myslím si, že se přes toto rozhraní řeší akorát překrývání oken. Pokud nenarazím na nějaké limity typu kreslení glyphů přes polygony, tak to půjde určitě předělat na klasický framebuffer.


Na jaké platformě budete vyvíjet?

Hmm, v takovém případě doporučuji googlit "embedded gui library".


Hned první odkazy směřují na

https://littlevgl.com

https://ugfx.io (placené, hobby licence zdarma, takže pro vás to asi nebude, ale stejně možná stojí za skouknutí)

https://github.com/ryankurte/micro-gui - mj. v README odkazuje na další projekty, vypadá že toho dost chybí, ale asi by se z toho dalo vyjít

dále jsem našel https://github.com/olikraus/u8g2/wiki - vypadá funkční ale pouze pro monochromní displeje

https://github.com/olikraus/m2tklib, vypadá že už se nevyvíjí, ale za skouknutí to může stát

https://github.com/achimdoebler/UGUI dtto , tady je představení: http://embeddedlightning.com/ugui/

Bohužel s ničím nemám osobní zkušenost. Doufám, že něco z toho pomůže.
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: M0N7Y5 15. 03. 2018, 11:26:43
Na tohle koukám už nějakou dobu https://github.com/vurtun/nuklear (https://github.com/vurtun/nuklear)
Jedná se o Single header library v C89  ;)
Název: Re:Jaké GUI nezávislé na operačním systému?
Přispěvatel: aabb 15. 03. 2018, 11:45:40
Pouvazuj aj nad kompatibilitou HiDPI monitorov