Kairó
A Cairo egy nyílt forráskódú vektorgrafikus renderelő szoftverkönyvtár . Hardverfüggetlen alkalmazásprogramozási felületet tartalmaz szoftverfejlesztők számára. Kairó grafikus primitíveket biztosít a 2D képek megjelenítéséhez különféle háttérprogramokon keresztül . Amikor csak lehetséges, Kairó hardveres gyorsítást használ .
Hivatalos javaslat született a kairói könyvtárra épülő 2D renderelő API C++ nyelvű szabványosítására [6] .
Szoftver architektúra
Nyelvi kötések
Bármelyik programozási nyelven írt könyvtár használható egy másikban is, ha az ún. összekapcsolása egy új nyelvvel. Kairóban a programozási nyelv-összerendelések széles skálája létezik: C++ , C# és más CLI - kompatibilis nyelvek . Vannak Kairo kötések is a Delphi , Factor , Haskell , Lua , Perl , PHP , Python , Ruby , Scheme , Smalltalk és mások számára [7] .
Szerszámkötések
Mivel Cairo csak egy renderelő könyvtár, nagy előnyt jelenthet, ha integrálva van a grafikus felhasználói felület -építő eszközökkel :
- Az FLTK teljes mértékben támogatja a Kairót (az FLTK fordításakor meg kell adni az "--enable-cairo" opciót).
- A GNUstep a Cairo-t használja fő háttérprogramjaként nem Windows rendszereken [8] .
- A GTK+ teljes mértékben támogatja a Kairót. A 2005-ös 2.8-as verziótól kezdődően a GTK+ Kairót használja a legtöbb grafikus vezérlő megjelenítéséhez. A 3.0-s verzió óta a GTK+ minden elemet Kairón keresztül rajzol.
- Cairo képes közvetlenül hozzáférni az SDL könyvtárhoz [9] .
Elérhető háttérprogramok
Kairó a felszíni absztrakción működik . A felület az, amire Kairó fest. E felület mögé különféle háttérrendszerek bújhatnak meg, amelyek a kairói munka eredményét továbbíthatják az X Window System , Xlib és XCB , Win32 GDI , OS X Quartz Compositor , BeOS , OS/2 , OpenGL kontextusoknak (közvetlenül [10] és keresztül glitz ), helyi képpuffer, PNG -fájlok, PDF- , PostScript- , DirectFB- és SVG - fájlok.
Vannak más grafikus felhasználói felületek: OpenVG [11] , Qt [12] , Skia [13] és Direct2D [14] .
Render modell
A kairói megjelenítési modell három lépésből áll:
- Először egy maszk jön létre, amely vektorprimitívekből vagy alakzatokból áll. Például körök, négyzetek, Bezier-görbék , TrueType betűtípusok stb.
- Ezután meg kell határozni egy úgynevezett forrást, amely lehet szín, színátmenet , bittérkép vagy vektorkép. Ezután a forrás színes részeit a megadott maszk segítségével levágjuk.
- Ezután az eredmény átkerül a felületre, amelyet a megfelelő háttérrendszer veszi fel.
Ez a leképezési modell alapvetően különbözik az SVG -ben alkalmazott renderelési megközelítéstől .
Példa
A népszerű Hello World! meglehetősen összetett grafikus változata! ” megvalósítható Kairó használatával, például az alábbiak szerint:
#include <cairo-svg.h>
int main ( int argc , char ** argv ) {
cairo_t * cr ;
cairo_surface_t * felület ;
cairo_pattern_t * minta ;
int x , y ;
felület = ( cairo_surface_t * ) cairo_svg_surface_create ( "Cairo_example.svg" , 110.0 , 110.0 );
cr = cairo_create ( felület );
/* Rajzolj négyzeteket a háttérben */
for ( x = 0 ; x < 10 ; x ++ )
for ( y = 0 ; y < 10 ; y ++ )
cairo_rectangle ( cr , x * 10,0 , y * 10,0 , 5 , 5 );
minta = cairo_pattern_create_radial ( 50 , 50 , 5 , 50 , 50 , 50 );
cairo_pattern_add_color_stop_rgb ( minta , 0 , 0,75 , 0,15 , 0,99 );
cairo_pattern_add_color_stop_rgb ( minta , 0.9 , 1 , 1 , 1 );
cairo_set_source ( cr , minta );
cairo_fill ( cr );
/* Rajzolja meg az előteret */
cairo_set_font_size ( cr , 15 );
cairo_select_font_face ( cr , "Georgia" , CAIRO_FONT_SLANT_NORMAL , CAIRO_FONT_WEIGHT_BOLD );
cairo_set_source_rgb ( cr , 0 , 0 , 0 );
cairo_move_to ( cr , 10 , 25 );
cairo_show_text ( cr , "Szia," );
cairo_move_to ( cr , 10 , 55 );
cairo_show_text ( cr , "Wikipédia!" );
cairo_destroy ( cr );
cairo_surface_destroy ( felület );
return 0 ;
}
Használat
Kairó népszerű a nyílt forráskódú közösségben a hordozhatósága és a 2D képek minőségi megjelenítése miatt.
- A GTK+ teljes mértékben támogatja a Kairót. A 2005-ös 2.8-as verziótól kezdődően a GTK+ Kairót használja a legtöbb grafikus vezérlő megjelenítéséhez. A 3.0-s verziótól kezdve a GTK+ általában mindent Kairón keresztül rajzol.
- A Mono projekt [15] , beleértve a Holdfényt [16] , Kairót használja.
- A Mozilla projekt a Kairót használja a Gecko [17] böngészőmotorban . A Firefox 52-ben elavult a Direct2D (Windows 10) és a Skia (alacsonyabb) javára, de továbbra is támogatott, ha speciális beállításokon keresztül vált rá. A Firefox 66 támogatása óta teljesen megszűnt [18] .
- A WebKit keretrendszer a Kairót használja a GTK+ és EFL portokra való rendereléshez. A Cairo támogatása az SVG-grafikák megjelenítéséhez és a <canvas> címke tartalmához is hozzáadásra került.
- A Poppler-könyvtár Kairót használja a PDF-dokumentumok megjelenítéséhez. Kairót sima vektorgrafikák és átlátszó objektumok készítésére használják.
- Az Inkscape vektorgrafikus szerkesztő Kairót használja.
- A MorphOS 2.5 operációs rendszer a Cairo rendszert használja.
- Az AmigaOS 4.1 operációs rendszer az alapértelmezett telepítésben támogatja a Cairo megosztott objektumkönyvtárat (libcairo.so).
- A FontForge alapértelmezett betűkészlet-szerkesztője 2008. október közepe óta a Cairo-t használja.
- Az R programozási nyelv képes PDF , PostScript és SVG formátumú grafikák kiadására Cairo használatával.
- Kairó a Gnuplot 4.4-et használja PDF és PNG formátumú rendereléshez [19] .
- A PlayStation 3 webböngészője a Kairót használja a rendszerfrissítés 4.10-es verziójától kezdve.
- A Synfig 0.64 mostantól opcionálisan támogatja a képmegjelenítést Kairón keresztül.
- A Graphite számítógépes rendszer teljesítményét figyelő és megjelenítő program képes grafikonok megjelenítésére Kairón keresztül.
- Az 1C:Enterprise 8.3 platform a 8.3.16-os verziótól kezdve a Cairo-t használja a rendereléshez [20] .
Történelem
Keith Packard és Carl Worth megalapította a Cairo projektet az X Window Systemben való használatra [21] . Kezdetben (legalábbis 2003-ig) a projekt neve Xr vagy Xr/Xc volt . A név megváltozott annak hangsúlyozása érdekében, hogy a könyvtár hordozható, tetszőleges megjelenítőszerverhez hozzáférhet, nem csak az X Window System -hez [22] kötve .
A Kairó név a görög χ és ρ betűkkel értelmezett eredeti Xr névből származik [23] .
Lásd még
- PostScript megjelenítése
- Skia grafikus
- Starling
- WebGL
Jegyzetek
- ↑ https://gitlab.freedesktop.org/cairo/cairo/-/graphs/master
- ↑ https://www.cairographics.org/news/cairo-1.16.0/
- ↑ Kiadási pillanatkép 1.17.6
- ↑ A kairói nyílt forráskódú projekt az Open Hubon: Nyelvek oldala - 2006.
- ↑ 1 2 https://web.archive.org/web/20180224092509/https://www.cairographics.org/
- ↑ Michael B. McLaughlin; Herb Sutter, Jason Zink. Javaslat a 2D grafikai megjelenítés és megjelenítés hozzáadására a C++ 2. változatához . Nyílt szabványok (2014. július 3.). Letöltve: 2014. szeptember 12. Az eredetiből archiválva : 2014. szeptember 12.. (határozatlan)
- ↑ Kairói nyelvi kötések . Letöltve: 2014. április 16. Az eredetiből archiválva : 2011. május 17.. (határozatlan)
- ↑ Fedor, Adam felhasználói alapértelmezések összefoglalása a GNUstep háttérrendszerhez (2011. szeptember 29.). Letöltve: 2014. november 3. Az eredetiből archiválva : 2014. március 26.. (határozatlan)
- ↑ Kairó – SDL (2009. február 17.). Letöltve: 2014. november 3. Az eredetiből archiválva : 2014. október 2.. (határozatlan)
- ↑ Chris Wilson. Az új OpenGL-háttér egyesítése (2009. július 22.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2011. július 24.. (határozatlan)
- ↑ Øyvind Kolås. Az OpenVG háttérrendszer bemutatása (2008. január 24.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2009. április 16.. (határozatlan)
- ↑ Vlagyimir Vukicevic. Hát nem ez a Qt (hivatkozás nem elérhető) (2008. május 6.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2010. április 9.. (határozatlan)
- ↑ Chris Wilson. Cool Stuff (2009. augusztus 31.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2011. július 24.. (határozatlan)
- ↑ Bas Schouten. Direct2D: Böngésző hardveres megjelenítése (2009. november 22.). Letöltve: 2010. február 12. Az eredetiből archiválva : 2010. február 10.. (határozatlan)
- ↑ Mono-rajz . Hozzáférés dátuma: 2009. december 27. Az eredetiből archiválva : 2010. január 2.. (határozatlan)
- ↑ Moonlight Notes . Hozzáférés dátuma: 2009. december 27. Az eredetiből archiválva : 2010. január 2.. (határozatlan)
- ↑ Gecko 1.9 ütemterv . Hozzáférés dátuma: 2009. december 27. Az eredetiből archiválva : 2008. július 25. (határozatlan)
- ↑ Távolítsa el a cairo D2D hátterét . Letöltve: 2019. január 9. Az eredetiből archiválva : 2019. január 9.. (határozatlan)
- ↑ A Gnuplot 4.4.0-s verziójának bejelentése (lefelé irányuló kapcsolat) . gnuplot honlapja . Letöltve: 2011. február 22. Az eredetiből archiválva : 2011. május 14.. (határozatlan)
- ↑ V8 frissítés . dl03.1c.ru. Letöltve: 2019. november 9. Az eredetiből archiválva : 2019. november 9.. (határozatlan)
- ↑ Xr: Eszközök közötti renderelés vektorgrafikához . Letöltve: 2009. június 8. Az eredetiből archiválva : 2009. június 14.. (határozatlan)
- ↑ Levelezőlista szál a kairói névváltoztatásról . Letöltve: 2009. június 8. Az eredetiből archiválva : 2011. július 24.. (határozatlan)
- ↑ Levelezőlista szál a kairói névváltoztatásról . Letöltve: 2006. december 2. Az eredetiből archiválva : 2013. június 25. (határozatlan)
Hivatkozások külső forrásokhoz
|
---|
Alkatrészek |
| |
---|
Könyvtárak |
|
---|
Keretrendszerek |
|
---|
Találkozók |
|
---|