Portál AbcLinuxu, 4. května 2025 15:15
Hraju si programováním, baví mě to.Docela změna. Ty seš člověče jak korouhvička. Ne že by na téhle změně bylo něco špatného, ba naopak. Na přečtení a vstřebání celého příspěvku už nemám sílu a klížej se mi oči, ale podle nadšeného tónu to bude asi opravdu super. Těším se, až si to zítra prostuduju.
Toolkit … je přímo slinkován s binárkou, a tudíž by nemělo docházet k žádným pomalostem, jako je tomu v případě Gtkmm.
Nerozumím. Můžete, prosím, tuto úvahu trochu rozvést?
Kdyby někdo měl velký zájem tak jsem napsal článek o výpočtu gradientu přes MMX. Zatím není publikováno, možná se někdy dočkáteA co to nabídnout Robertovi k vydání tady na abíčku? Určitě by měl zájem
Nemyslel jsem to proti čtenářům, určitě je tady hodně programátorů, ale koho zajímá tak odborná věc, tak asi použije první vyhledávačTady si to ale určitě přečtou i lidé, kteří takovou věc v té chvíli zrovna nepotřebují (a tudíž by ten vyhledávač nepoužili), ale určitě k tomu mají co podnětného říci.
$ du -h vlak.com 16K vlak.com
Hudba se vejde na pár bajtů, zvuky totéž. Podívej se jak velké jsou mod, it, mid,...Z pár mod/mid bajtov rozhodne nedostanete peknú hudbu a rozhodne jej nedostanete dosť na to, aby vás po piatich minútach nebolela hlava z jej opakovania. Pojem pekná hudba je relatívny, ale obávam sa, že ak niekto nazve pár bajtov peknou hudbou, tak ho budem musieť považovať za hluchého.
Rozlišení bylo tehdy mrňavé a tím pádem i obrázky byly mrňavé. Při použití mála barev a indexované palety se lze vejít opravdu do mála i bez komprese.Tak s tým súhlasím, nenapadlo ma, že na tom tie hry kedysi boli až tak zle
10 instrukcí je celkem dost. Minimálně na počítání skóre to stačíLen či ešte zostane aj nejaká inštrukcia na inicializáciu a zobrazenie toho, čo počíta.![]()
Vlastně s těma 20KB celkem přeháněl...V tejto hre nebola pekná grafika, zvuky boli odporné a hudba žiadna. A opať, ja za hru považujem niečo trochu zložitejšie, takže aj kódu tam bolo málo. Ale už začínam veriť, že v rádoch desiatok kilobajotv sa dajú robiť nejaké hry$ du -h vlak.com 16K vlak.com
/* xwindow.h */ XWINDOW * xwindow_init(void); void xwindow_load_widgets(XWINDOW *xwin, char *filename); void xwindow_destroy(XWINDOW *xwin); void xwindow_process_events(XWINDOW *xwin); void xwindow_reposition (XWINDOW *xwin, int now); void xwindow_recalculate(XWINDOW *xwin); void xwindow_redraw(XWINDOW *xwin, int recalculate); #define xwindow_get_fd(xwin) {ConnectionNumber((xwin)->disp);} #define xwindow_is_broken(xwin) ((xwin)->is_broken) /* xdraw.h */ void xdraw_frame(XWINDOW *xwin, long x, long y, long w, long h, int is_raised); void xdraw_frame_color(XWINDOW *xwin, long x, long y, long w, long h, int is_raised, int cl, int cs, int draw_border); int xdraw_select_font(XWINDOW *xwin, int fid); void xdraw_text(XWINDOW *xwin, long x, long y, char* text, float align, int shadow); void xdraw_bar(XWINDOW *xwin, long x, long y, long w, long h, float fill); void xdraw_vsep(XWINDOW *xwin, long x, long y, long len); void xdraw_hsep(XWINDOW *xwin, long x, long y, long len);Prostě jen nakresli tohle támhle. Nic víc pro ten program nepotřebuju. A aby to trošku ladilo s desktopem, vypdadá to jako kdyby to bylo podle defaultního témata gtk2 :) Chybějící podpora jakéhokoliv vstupu je naprosto záměrná. Předpokládám, že to dopíšu koncem prázdnin, případně v září. Teď na to nemám moc času. Chybí tam jen část, která bude sbírat data. Kreslení a načítání rozložení widgetů lze víceméně považovat za hotové. Adresa: http://jk.myserver.cz/programy/icebuteo/
#include <wpp/core/core.h> using namespace WPP; WPP_MAIN() { FileStream fileStream("out.txt", IO::Create | IO::Write | IO::Truncate); TextStream textStream(&fileStream); Directory d; if ( d.open( User::homeDirectory() ).ok() ) { const Directory::Entry* e; while ( (e = d.read()) != NULL ) { textStream.writeLine(e->name()); } } textStream.end(); return ExitSuccess; }Tento kód běhá na Win/Lin, výsledný soubor je v UTF8 kódování, pro současné kódování stačí před zápisem napsat:
textStream.setTextCodec(TextCodec::local());Lomítka v cestách jsou vždy v posix tvaru '/' atd, ... Šlo mi jen o to maximálně sjednotit API dvou různých OS a až naněm něco stavět. Jestli bude čas tak o tom napíšu blog, ale v současnosti mám dočasnou práci v .IE takže to nejde ahoj
používala standardní datové typyHovoríme o tom istom C/C++, kde ešte stále v štandarde nie je popísaná veľkosť základných dátových typov, o unicode ani nehovoriac? Ak ten toolkit má byť multiplatformný, tak nevidím lepšiu cestu, vy áno?
String
, ale API ho používá a ví, že má pokaždé stejné kódování, že může zjistit rychle jeho délku a používat jeho metody.
Třeba když jsme u zmíněného příkladu, tak jak byste vypsal obsah domácího adresáře na těchto platformách do souboru v UTF8 nebo jiném kódování, kolik knihoven byste musel použít?
Nechci se přít, glib/gtk+ to řeší Vaším způsobem, ale když chci napsat opravdu jednodušší aplikaci tak proč použivat 10 knihoven na to, abych si přečetl konfiguraci, zobrazil nějaké ovládací prvky a při ukončení zase zapsal konfiguraci (xml).
Celá binárka má po zkompilování asi 300kb a je tam opravdu veškeré non-gui co pro gui potřebuji tak proč z toho dělat samostatný balík?
String
:
Příklad:
char* asciiText = "neco"; char* utf8Text = "neco"; char* localText = "neco"; wchar_t* wcharText = L"neco"; String s1(asciiText, TextCodec::ascii()); // nebo String s1(asciiText); String s2(utf8Text, TextCodec::utf8()); String s3(localText, TextCodec::local()); String s4(wcharText, TextCodec::localWChar());A pokud chcete zpět
ByteArray a = s1.to(TextCodec::utf8()); // pokud chcete opravdu char* char* text = malloc(a.length() + 1); memcpy(text, a.constStr(), a.length()); text[a.length()] = 0;Ale právě takovým věcem jsem se chtěl vyhnout. To co jsem zde napsal mě normálně funguje a je to standardní postup. Navíc je zde možnost implicitního sdílení jako třeba u Qt což dodává programování ještě další rozměr
StringList sl = String("a|b|c|d|e|f").split("|");Myslím že jednotný Char na všech platformách má svou výhodu, wchar_t je pro mě nepoužitelný protože na linuxu je 32 bit a ve win 16 bit, s tím ale nikdo z nás nic neudělá. Ale multiplatformnost není jenom problém se strings (kéž by), problém jsou třeba cesty k souborům (lomítka / \, pracovní adresář atd...), o GUI rači mlčím
*((unsigned long *)NULL) = 0UL;
- licencia nieje problem, kludne to dam aj pod public domain, bsd licencia nieje problem (z mojej strany urcite nie)
- ano, kazdy widget ma vlastne okno (teraz je STK 2.x) predtym som to robil v inak (STK v1.0) a zistil som ze to nieje dobre riesenie (najme s pohladu obsluhy udalosti a z hladiska rychlosti). Tak som to cele prepisal.
- k prenositelnosti: uz dlhsie planujem port na FBUI (framebuffer user interface) to je 26kB kernel modul ktory robi to co X Server. Pisal som aj toolkit pre SDL, ale ten som nedotiahol...
- Inak pisat toolkit v xlib je docela porod. Je to tak trochu alchimia. Mizerna dokumentacia. Asi najhorsie bolo dokopat X Windows-ovi fokus handling na pouzitelnu uroven (defakto pouzivam vlastny).
- Urcite mozeme pokecat, aj ked teraz som menil ICQ klienta na SIM a neviem ci je 100% funkcni ale kludne - icq:284233649 alebo na moj email...
Nejlepší toolkit je ten co ti vyhovuje a to bude s největší pravděpodobností pouze ten co si napíšeš.To je samozřejmě pravda a platí to obecně. Ale při pohledu na to, kolik se mi během let nahromadilo kostlivců ve skříni, raději každého předem varuji. Napsat něco většího (což takový toolkit bezpochyby je) znamená překonávat řadu situací, kdy má člověk tendenci se na to vykašlat.
XDrawLine()
napsal XCreateWindow()
, protože bez XDrawLine()
se dá obejítMoveTo()
a LineTo()
ale Qt a Gtk+ je úplně jinde. Nejhorší na tom je, že ten builder jsem měl ješte tehdy na 486 s 8MB ram a jelo úplně krásně.
Třeba tehdejší ZoneRings32 - hezký prográmek na naučení, sice v Delphi ale hukotTohle není toolkit, ale wrapper.To nic nemění na faktu, že za půl hodiny se to nenapíše
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.