Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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í :-)
-
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.
-
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
-
Kivy, ale nehodí se na vše, používá openGL, https://kivy.org/#home
-
Nana http://nanapro.org/en-us/ (http://nanapro.org/en-us/)
-
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.
-
Qt je nadstavba bud nad winapi, linuxove xlib, existuje i nad framebufferem.
-
Možná by mohl vyhovovat FOX Toolkit. (http://www.fox-toolkit.org/)
-
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.
-
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...
-
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.
-
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.
-
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.
-
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 :).
-
Google jsi zkusil ? První odkaz z Googlu: https://github.com/ryankurte/micro-gui
-
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.
-
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 ;)
-
Pouvazuj aj nad kompatibilitou HiDPI monitorov