Portál AbcLinuxu, 25. dubna 2024 02:14


Dotaz: Jak kreslit v X do velkého okna

23.4.2015 19:41 Jardík
Jak kreslit v X do velkého okna
Přečteno: 370×
Odpovědět | Admin
Vytvářím v aplikaci "velké" okno (řekněme UINT16_MAX šířka a výška). xcb_create_window má šířku a výšku jako uint16_t, takže je to v pořádku. Okno se opravdu vytvoří. První problém je, že "výchozí" překreslování, co dělá X při nastavení "back pixelu" funguje jen do velikosti INT16_MAX, od INT16_MAX do UINT16_MAX je to plné artefaktů od překrývajících oken, nepřekresluje se to. Zachytávám v programu expose události, ty mi dají X, Y, šířku a výšku jako uint16_t, takže jsou ok. Jenže jak kreslit do oblasti nad INT16_MAX? xcb_point_t má x a y jako int16_t, takže moje souřadnice nemůžu zadat. Asi bych mohl kreslit do bufferu a použít SHM a jeho "put image", což mi umožní dát obrázek na INT16_MAX X a Y s INT16_MAX šířkou a výškou a tak můžu pokrýt oblast celého okna, ale to je strašně moc alokované paměti a budu muset použít nějakou rasterizační knihovnu a tomu chci předejít, nesmím mít jiné závislosti než na XCB + jeho závislosti.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.4.2015 19:44 Jardík
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
strašně moc alokované paměti
16 GB pro UINT16_MAX * UINT16_MAX * 4BPP
mess avatar 24.4.2015 00:24 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nejde to kreslit "po kouskách" přes tu SHM? A na co vůbec potřebuješ tak velké okno?
Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
24.4.2015 12:09 Jardík
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Přes to SHM po kouskách je taky problém. Protože dst_x a dst_y jsou taky int16_t, takže abych mohl kreslit do zbylé poloviny okna, musím kreslit nejdále od INT16_MAX a mít šířku minimálně INT16_MAX. Takže celkem potřebuji 2 buffery o INT16_MAX * INT16_MAX * 4, což jsou 4GB. zkusím pixmapu, koukám, že bych mohl použít xcb_copy_area s pixmapou, taky má int16_t pozici a uint16_t rozměr, ale nemusel bych použít rasterizační engine a můžu použít na kreslení X.
24.4.2015 12:12 Jardík
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jinak zapomněl jsem zmínit druhý problém, ten, že "motion notify" má souřadnice jako int16_t a tak v druhé polovině okna dostávám "záporné" hodnoty, po přetypování na uint16_t se to zdá být správná hodnota, ale nevím, jestli je situace, kdy motion notify vrací záporné hodnoty "normálně" (tj. nejedná se o nějaké přetečení).
24.4.2015 13:14 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak to Jardíku oprav.
Pochybnost, nejistota - základ poznání
24.4.2015 23:18 Jardík
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Tak to, Jardíku, oprav.
Hotovo
25.4.2015 08:36 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Dobrá práce, bude to i v upstreamu?
Pochybnost, nejistota - základ poznání
Řešení 1× (rADOn)
24.4.2015 14:40 Michal
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obávám se že tyhle limitní velikosti nikdo netestuje a fungovat nebudou.

Takhle velké okno se předpokládám nezobrazuje na žádnou obrazovku, takže hádám že jen potřebuješ něco velkého nakreslit a pak uložit do souboru? Jestli jo, tak bych to vůbec nehnal přes X server, ale použil nějakou knihovnu na client-side kreslení. I pokud to chceš akcelerovat na grafice, tak to budeš muset rozsekat na kousky, grafiky typicky umí kreslít nejvíc 8192x8192, plus mínus dvojnásobek.
27.4.2015 21:42 Jardík
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jsem našel zajímavý dokument pojednávající o špatných vlastnostech X, včetně toho mého.
28.4.2015 14:03 Srsen
Rozbalit Rozbalit vše Re: Jak kreslit v X do velkého okna
Tento dokument je z roku 2001, takze nevim, nakolik je jeste aktualni.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.