Kairo
Cairo on avoimen lähdekoodin vektorigrafiikkaohjelmistokirjasto . _ _ Sisältää laitteistosta riippumattoman sovellusohjelmointirajapinnan ohjelmistokehittäjille. Kairo tarjoaa grafiikkaprimitiivit 2D-kuvien renderöimiseen useiden taustaohjelmien kautta . Aina kun mahdollista, Kairo käyttää laitteistokiihdytystä .
Kairon kirjastoon perustuvan 2D-renderöinnin API :n C++-kielellä on olemassa virallinen standardisointiehdotus [6] .
Ohjelmistoarkkitehtuuri
Kielisidokset
Mitä tahansa yhdellä ohjelmointikielellä kirjoitettua kirjastoa voidaan käyttää toisella, jos ns. linkittämällä tämän kirjaston ohjelmointikielet uuteen kieleen. Kairossa on laaja valikoima ohjelmointikielisidoksia: C++ , C# ja muut CLI - yhteensopivat kielet . Kairo-sidoksia on myös Delphille , Factorille , Haskellille , Lualle , Perlille , PHP :lle , Pythonille , Rubylle , Schemelle , Smalltalkille ja muille [7] .
Työkalun siteet
Koska Kairo on vain renderöintikirjasto, siitä voi olla suurta hyötyä, kun se on integroitu graafisen käyttöliittymän rakennustyökaluihin :
- FLTK :lla on täysi tuki Kairolle (sinun on määritettävä "--enable-cairo" vaihtoehto FLTK:ta käännettäessä).
- GNUstep käyttää Kairoa päätaustana muissa kuin Windows-järjestelmissä [8] .
- GTK+ tukee täysin Kairoa. Vuodesta 2005 alkaen versiosta 2.8 alkaen GTK+ käyttää Kairoa useimpien graafisten ohjainten hahmontamiseen. Versiosta 3.0 lähtien GTK+ piirtää kaikki elementit Kairon kautta.
- Kairo pääsee suoraan SDL -kirjastoon [9] .
Käytettävissä olevat taustaohjelmat
Kairo toimii pinnan abstraktiolla . Pinta on se, jolle Kairo maalaa. Tämän pinnan taakse voi piiloutua erilaisia taustaohjelmia, jotka voivat välittää Kairon työn tuloksen X Window System , Xlib ja XCB , Win32 GDI , OS X Quartz Compositor , BeOS , OS/2 , OpenGL - konteksteihin (suoraan [10] ja kautta glitz ), paikallinen kuvapuskuri, PNG - tiedostot, PDF- , PostScript- , DirectFB- ja SVG - tiedostot.
On olemassa muita GUI-taustaohjelmia: OpenVG [11] , Qt [12] , Skia [13] ja Direct2D [14] .
Renderöi malli
Kairon renderöintimalli sisältää kolme vaihetta:
- Ensin luodaan maski, joka koostuu vektoriprimitiiveistä tai muodoista. Esimerkiksi ympyrät, neliöt, Bezier-käyrät , TrueType-fontit jne.
- Sitten täytyy määritellä ns. lähde, joka voi olla väri, värigradientti , bittikartta tai vektorikuva. Seuraavaksi lähteen värilliset osat leikataan käyttämällä määritettyä maskia.
- Sitten tulos välitetään pinnalle, jonka vastaava taustaohjelma poimii.
Tämä renderöintimalli eroaa olennaisesti SVG :ssä omaksutusta renderöintimenetelmästä .
Esimerkki
Melko monimutkainen graafinen muunnos suositusta Hello World! ” voidaan toteuttaa käyttämällä Kairoa esimerkiksi seuraavasti:
#include <cairo-svg.h>
int main ( int argc , char ** argv ) {
cairo_t * cr ;
cairo_surface_t * pinta ;
cairo_pattern_t * kuvio ;
int x , y ;
pinta = ( cairo_surface_t * ) cairo_svg_surface_create ( "Kairon_esimerkki.svg" , 110.0 , 110.0 );
cr = cairo_create ( pinta );
/* Piirrä neliöitä taustalle */
for ( x = 0 ; x < 10 ; x ++ )
for ( y = 0 ; y < 10 ; y ++ )
kairon_suorakulmio ( cr , x * 10.0 , y * 10.0 , 5 , 5 );
kuvio = cairo_pattern_create_radial ( 50 , 50 , 5 , 50 , 50 , 50 );
cairo_pattern_add_color_stop_rgb ( kuvio , 0 , 0,75 , 0,15 , 0,99 );
cairo_pattern_add_color_stop_rgb ( kuvio , 0.9 , 1 , 1 , 1 );
cairo_set_source ( cr , kuvio );
cairo_fill ( cr );
/* Piirrä etualalla */
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 , "Hei," );
cairo_move_to ( cr , 10 , 55 );
cairo_show_text ( cr , "Wikipedia!" );
cairo_destroy ( cr );
cairo_surface_destroy ( pinta );
paluu 0 ;
}
Käyttö
Kairo on suosittu avoimen lähdekoodin yhteisössä siirrettävyyden ja 2D-kuvien laadukkaan renderöinnin vuoksi.
- GTK+ tukee täysin Kairoa. Vuodesta 2005 alkaen versiosta 2.8 alkaen GTK+ käyttää Kairoa useimpien graafisten ohjainten hahmontamiseen. Versiosta 3.0 alkaen GTK+ vetää yleensä kaiken Kairon kautta.
- Mono - projekti [15] , mukaan lukien Moonlight [16] , käyttää Kairoa.
- Mozilla - projekti käyttää Kairoa Gecko [17] -selainmoottorissa . Se on poistettu käytöstä Firefox 52:ssa Direct2D :n (Windows 10) ja Skian (alempi) hyväksi, mutta sitä tuetaan edelleen, jos vaihdat siihen lisäasetusten kautta. Firefox 66:n tuki on poistettu kokonaan [18] .
- WebKit - kehys käyttää Kairoa renderöimiseen GTK+ - ja EFL - portteihin. Kairo-tuki on myös lisätty SVG-grafiikan renderöintiin ja <canvas>-tunnisteen sisältöön.
- Poppler -kirjasto käyttää Kairoa PDF-dokumenttien hahmontamiseen. Kairoa käytetään sujuvan vektorigrafiikan ja läpinäkyvien objektien rakentamiseen.
- Inkscapen vektorigrafiikkaeditori käyttää Kairoa.
- Käyttöjärjestelmä MorphOS 2.5 käyttää Cairoa.
- AmigaOS 4.1 -käyttöjärjestelmä tukee Kairon jaettua objektikirjastoa (libcairo.so) oletusasennuksessa.
- FontForgen oletusfonttieditori on käyttänyt Kairoa lokakuun 2008 puolivälistä lähtien.
- R - ohjelmointikieli pystyy tuottamaan grafiikkaa PDF- , PostScript- ja SVG - muotoihin käyttämällä Kairoa.
- Kairo käyttää Gnuplot 4.4:ää PDF- ja PNG -muotoon renderöimiseen [19] .
- PlayStation 3 -verkkoselain käyttää Kairoa järjestelmäpäivityksen versiosta 4.10 alkaen.
- Synfig 0.64 tukee nyt valinnaisesti kuvan renderöintiä Kairon kautta.
- Graphite tietokonejärjestelmän suorituskyvyn seuranta- ja visualisointiohjelma pystyy renderöimään kaavioita Kairon kautta.
- 1C:Enterprise 8.3 -alusta versiosta 8.3.16 alkaen käyttää Cairoa renderöintiin [20] .
Historia
Keith Packard ja Carl Worth perustivat Cairo-projektin käytettäväksi X Window Systemissä [21] . Aluksi (ainakin vuoteen 2003 asti) projektin nimi oli Xr tai Xr/Xc . Nimi on muutettu korostamaan ajatusta siitä, että kirjasto on kannettava, ja sillä on mahdollisuus käyttää mielivaltaista näyttöpalvelinta , ei vain sidottu X Window Systemiin [22] .
Kairon nimi tulee alkuperäisestä nimestä Xr , joka on tulkittu kreikkalaisilla kirjaimilla χ ja ρ [23] .
Katso myös
- Näytä PostScript
- Skia Graphics
- Starling
- WebGL
Muistiinpanot
- ↑ https://gitlab.freedesktop.org/cairo/cairo/-/graphs/master
- ↑ https://www.cairographics.org/news/cairo-1.16.0/
- ↑ Julkaisun tilannekuva 1.17.6
- ↑ Kairon avoimen lähdekoodin projekti Open Hubissa: Kielisivu - 2006.
- ↑ 1 2 https://web.archive.org/web/20180224092509/https://www.cairographics.org/
- ↑ Michael B. McLaughlin; Herb Sutter, Jason Zink. Ehdotus 2D-grafiikan renderöinnin ja näytön lisäämiseksi C++- versioon 2 . Avoimet standardit (3. heinäkuuta 2014). Haettu 12. syyskuuta 2014. Arkistoitu alkuperäisestä 12. syyskuuta 2014. (määrätön)
- ↑ Kairon kielisidokset . Haettu 16. huhtikuuta 2014. Arkistoitu alkuperäisestä 17. toukokuuta 2011. (määrätön)
- ↑ Fedor, Adam Käyttäjän oletusyhteenveto GNUstep-taustajärjestelmälle (29. syyskuuta 2011). Haettu 3. marraskuuta 2014. Arkistoitu alkuperäisestä 26. maaliskuuta 2014. (määrätön)
- ↑ Kairo – SDL (17. helmikuuta 2009). Haettu 3. marraskuuta 2014. Arkistoitu alkuperäisestä 2. lokakuuta 2014. (määrätön)
- ↑ Chris Wilson. Uusi OpenGL-taustaohjelma yhdistetty (22. heinäkuuta 2009). Haettu 12. helmikuuta 2010. Arkistoitu alkuperäisestä 24. heinäkuuta 2011. (määrätön)
- ↑ Øyvind Kolås. OpenVG-taustaohjelmiston julkistaminen (24. tammikuuta 2008). Haettu 12. helmikuuta 2010. Arkistoitu alkuperäisestä 16. huhtikuuta 2009. (määrätön)
- ↑ Vladimir Vukicevic. Eikö se ole Qt (linkki ei ole käytettävissä) (6. toukokuuta 2008). Haettu 12. helmikuuta 2010. Arkistoitu alkuperäisestä 9. huhtikuuta 2010. (määrätön)
- ↑ Chris Wilson. Cool Stuff (31. elokuuta 2009). Haettu 12. helmikuuta 2010. Arkistoitu alkuperäisestä 24. heinäkuuta 2011. (määrätön)
- ↑ Bas Schouten. Direct2D: Hardware Rendering a Browser (22. marraskuuta 2009). Haettu 12. helmikuuta 2010. Arkistoitu alkuperäisestä 10. helmikuuta 2010. (määrätön)
- ↑ Mono-piirustus . Käyttöpäivä: 27. joulukuuta 2009. Arkistoitu alkuperäisestä 2. tammikuuta 2010. (määrätön)
- ↑ Moonlight Notes . Käyttöpäivä: 27. joulukuuta 2009. Arkistoitu alkuperäisestä 2. tammikuuta 2010. (määrätön)
- ↑ Gecko 1.9 Roadmap . Käyttöpäivä: 27. joulukuuta 2009. Arkistoitu alkuperäisestä 25. heinäkuuta 2008. (määrätön)
- ↑ Poista cairo D2D - taustaohjelma . Haettu 9. tammikuuta 2019. Arkistoitu alkuperäisestä 9. tammikuuta 2019. (määrätön)
- ↑ Gnuplot version 4.4.0 ilmoitus (downlink) . gnuplotin kotisivu . Haettu 22. helmikuuta 2011. Arkistoitu alkuperäisestä 14. toukokuuta 2011. (määrätön)
- ↑ V8-päivitys . dl03.1c.ru. Haettu 9. marraskuuta 2019. Arkistoitu alkuperäisestä 9. marraskuuta 2019. (määrätön)
- ↑ Xr: laitteiden välinen renderöinti vektorigrafiikkaa varten . Haettu 8. kesäkuuta 2009. Arkistoitu alkuperäisestä 14. kesäkuuta 2009. (määrätön)
- ↑ Postituslistaketju Kairon nimenmuutoksesta . Haettu 8. kesäkuuta 2009. Arkistoitu alkuperäisestä 24. heinäkuuta 2011. (määrätön)
- ↑ Postituslistaketju kairon nimenmuutoksesta . Haettu 2. joulukuuta 2006. Arkistoitu alkuperäisestä 25. kesäkuuta 2013. (määrätön)
Linkkejä ulkoisiin lähteisiin
|
---|
Komponentit |
| |
---|
Kirjastot |
|
---|
Kehykset |
|
---|
Kokoukset |
|
---|