카이로(그래픽)
Cairo (graphics)![]() | |
원저작자 | 키스[1] 패커드, 칼 워스 |
---|---|
개발자 | 칼 워스, 베다드 에스파흐보드 |
초기 릴리즈 | 2003년 이전, [2] | 전(
안정된 릴리스 | 1.17.4 (2020년 11월 [3] [±] | , 전 (
저장소 | gitlab |
기입처 | C |
유형 | 그래픽스 라이브러리 |
면허증. | GNU Lesser General Public License 버전 2.1(만) 또는 Mozilla Public License 1.1 |
웹 사이트 | www |
카이로(카이로로 표현)는 소프트웨어 개발자를 위해 벡터 그래픽 기반의 디바이스에 의존하지 않는 API를 제공하는 오픈 소스 그래픽 라이브러리입니다.여러 백엔드에 걸쳐 2차원 도면에 대한 원본을 제공합니다.카이로에서는 가능한 경우[4] 하드웨어 액셀러레이션을 사용합니다.
소프트웨어 아키텍처
언어 바인딩
바인딩이 작성되면 하나의 프로그래밍 언어로 작성된 라이브러리를 다른 언어로 사용할 수 있습니다. 카이로에는 C++, C# 및 기타 CLI 언어, 델파이, 에펠, 팩터, 하버, 하스켈, 줄리아, 루아, Perl, PHP, 파이썬, 루비, Rust, Gam, Scheme 등 다양한 언어에 대한 바인딩 범위가 있습니다.를 참조해 주세요.[5]
툴킷 바인딩
카이로는 도면 라이브러리일 뿐이므로 그래픽 사용자 인터페이스 툴킷과 통합하는 것이 매우 유용할 수 있습니다.
- FLTK는 카이로의 전폭적인 지원을 받고 있다.
--enable-cairo
컴파일 스위치). - GTK는 2005년 버전 2.8에서 카이로를 사용하여 그래픽 제어 요소의 대부분을 렌더링하기 시작했으며 버전 3.0부터는 모든 렌더링이 카이로를 통해 수행됩니다.
- 카이로 개발팀은 표면을 [6]SDL로 렌더링하기 위한 최신 지침을 유지합니다.
사용 가능한 백엔드
카이로에서는 코드에서는 「서페이스」라고 하는 다양한 백엔드에의 출력(래스터라이제이션 포함)을 서포트하고 있습니다.백엔드 지원에는 Xlib 및 XCB, Win32 GDI, OS X Quartz Compositor, BeOS API, OS/2, OpenGL 컨텍스트(직접[7] 및 glitz 경유), 로컬 이미지 버퍼, PNG 파일, PDF, Postscript, Direct를 통한 출력이 포함됩니다.FB 및 SVG 파일
OpenVG,[8] Qt,[9] Skia [10]및 Microsoft의 Direct2D [11]그래픽 API를 대상으로 개발 중인 다른 백엔드도 있습니다.BeOS, OS/2 및 DirectFB 백엔드는 [12]2022년에 폐기되었습니다.
도면 모형
카이로 도면 모델은 3층 모델에 의존합니다.
도면 프로세스는 3단계로 이루어집니다.
- 먼저 하나 이상의 벡터 프리미티브 또는 형태(원, 정사각형, TrueType 글꼴, 베지어 곡선 등)를 포함하는 마스크가 작성된다.
- 그런 다음 색상, 색상 그라데이션, 비트맵 또는 일부 벡터 그래픽 등 소스를 정의해야 하며, 이 소스의 도장된 부분에서 위에서 정의한 마스크를 사용하여 다이컷을 만듭니다.
- 마지막으로 결과는 출력용 백엔드에 의해 제공되는 목적지 또는 서페이스로 전송됩니다.
이는 CSS(Cascading Style Sheet) 규칙으로 [citation needed]도형의 색상을 지정하는 SVG(Scalable Vector Graphics)와는 근본적으로 다른 접근 방식을 구성합니다.카이로가 형상의 마스크를 만들고, 그것을 위한 소스를 만들고, 그것들을 표면으로 전송하는 반면, SVG 파일은 단순히 형상과 함께 모양을 지정합니다.style
기여하다.그러나 모델은 양립할 수 없다.많은 SVG 렌더러는 무거운 [13]리프팅을 위해 카이로를 이용한다.
예
매우 복잡한 "Hello world" 그래픽은 몇 줄의 소스 코드만으로 카이로의 도움을 받아 그릴 수 있습니다.
#실패하다 <block-blockg> 입니다.h> #실패하다 <stdio.h> 인트 주된(인트 argc, 차 **argv) { 카이로_서피스_t *표면 = cairo_surface_create("Cairo_example.svg", 100.0, 100.0); 카이로 *cr = 카이로_작성(표면); /* 배경에 정사각형 그리기 */ 위해서 (인트 x = 0; x < > 10; ++x) 위해서 (인트 y = 0; y < > 10; ++y) 카이로_카이로(cr, x * 10.0, y * 10.0, 5, 5); 카이로_패턴_t *양식 = cairo_pattern_create_module(50, 50, 5, 50, 50, 50); cairo_pattern_add_color_stop_displays(양식, 0, 0.75, 0.15, 0.99); cairo_pattern_add_color_stop_displays(양식, 0.9, 1, 1, 1); cairo_set_source(cr, 양식); 카이로_필(cr); /* 포그라운드에 쓰기 cairo_set_size_size (cr, 15); cairo_select_face (cr, "조지아", 카이로_FONT_SLANT_NORMAL, 카이로_FONT_WEATE_BOLD); cairo_set_source_displays (cr, 0, 0, 0); 카이로_이동처(cr, 10, 25); 카이로_쇼_텍스트(cr, "안녕하세요"); 카이로_이동처(cr, 10, 75); 카이로_쇼_텍스트(cr, "위키피디아!"); 카이로_카이로(cr); 카이로_서피스_카이로(표면); }
주목할 만한 사용법
카이로에서는 오픈 소스 커뮤니티에서 고급 2D 도면을 위한 크로스 플랫폼 지원을 제공하는 것으로 인기가 있습니다.
- 2005년 버전 2.8부터 시작된 GTK는 대부분의 그래픽 제어 요소를 [14]렌더링하기 위해 카이로를 사용합니다.GTK 버전 3부터 모든 렌더링은 카이로를 사용하여 이루어집니다.
- Moon Project([16][17]Moon Project)는 GDI+(libgdiplus)와 System의 백엔드에 전력을 공급하기 위해 초기부터 카이로를 사용해 왔습니다.네임스페이스 그리기
- Mozilla 프로젝트는 Gako 레이아웃 엔진에서 카이로를 사용하여 Mozilla 제품의 그래픽 출력을 렌더링합니다.Mozilla Firefox 2.0 및 SeaMonkey 1.0의 레이아웃 엔진인 Gecko 1.8은 카이로를 사용하여 SVG 및 <canvas> 콘텐츠를 렌더링했습니다.파이어폭스3의 기반이 되는 Gecko의 릴리스인 Gecko 1.[18]9는 웹 페이지 컨텐츠와 사용자 인터페이스(또는 "크롬")를 렌더링하기 위한 그래픽 백엔드로 카이로를 사용합니다.
- WebKit 프레임워크는 GTK 및 EFL 포트의 모든 렌더링에 카이로를 사용합니다.카이로를 사용한 SVG 및 <캔버스> 콘텐츠에 대한 지원도 추가되었습니다.
- Poppler 라이브러리는 카이로를 사용하여 PDF 문서를 렌더링합니다.카이로에서는 안티에이리어스 벡터 그래픽과 투명 객체를 그릴 수 있습니다.
- 벡터 그래픽스 애플리케이션 Inkscape는 개요 모드 표시 및 릴리스 0.46 이후 [19]PDF 및 PostScript 내보내기에 카이로 라이브러리를 사용합니다.
- 3Blue1Brown의 YouTube Videos 애니메이션에 사용되는 수학 애니메이션 엔진인 Manim.
- MorphOS 2.5는 이전 MorphOS 버전에서 독립형 릴리스로 사용 가능했던 카이로의 공유 라이브러리 구현을 특징으로 한다.
- AmigaOS 4.1은 기본 설치로 카이로(libcairo.so)의 공유 객체 라이브러리를 지원합니다.
- FontForge는 디폴트로 2008년 10월 중순에 렌더링용으로 카이로를 유효하게 했습니다.
- R은 가능한 경우 카이로를 사용하여 PDF, PostScript 및 SVG 형식으로 플롯을 출력할 수 있습니다.
- Gnuplot 4.4는 이제 PDF 및 PNG 출력을 [20]렌더링하기 위해 카이로를 사용합니다.
- PlayStation 3용 인터넷 브라우저는 시스템 소프트웨어 업데이트 4.10 이후 카이로를 사용합니다.
- Synfig 0.64는 이제 옵션인 카이로 렌더링을 지원합니다.
- 그래파이트에서 시계열 데이터를 온디맨드 그래프로 표시합니다.
- Konfabulator/Yahoo 위젯 엔진은 Mac OS/X에서 Win32 및 Quartz와 동일한 출력에 카이로를 사용합니다.
- SolveSpace, 무료 오픈 소스 2D 및 3D CAD 소프트웨어.
역사
Keith Packard와 Carl Worth는 X Window [2]System에서 사용하기 위해 카이로 프로젝트를 설립했습니다.원래는 (최소 2003년까지) Xr 또는 Xr/Xc라고 불렸습니다.X Window System에 [21]얽매이지 않고 디스플레이 서버에 접근할 수 있는 크로스 플랫폼 라이브러리의 개념을 강조하기 위해 이름이 변경되었습니다.카이로라는 이름은 원래 이름 Xr에서 유래했으며, 그리스 문자 ki와 [22]rho로 해석됩니다.
복잡한 텍스트 레이아웃
카이로에서는 라틴 및 CJK 기반 글꼴을 취급하지만,[23] 복잡한 텍스트 레이아웃 글꼴은 지원하지 않으므로 글리프를 쉐이핑해야 합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Carl's boring web pages". cworth.org. 2013. Retrieved 11 July 2014.
- ^ a b "Xr: Cross-device Rendering for Vector Graphics". Retrieved 2009-06-08.
- ^ "Latest cairo news". Retrieved 8 June 2021.
- ^ "Cairo homepage". Retrieved 2010-10-30.
- ^ "Cairo Language Bindings". Retrieved 2014-04-16.
- ^ "SDL". Cairo. 2009-02-17. Retrieved 2014-11-03.
- ^ Chris Wilson (2009-07-22). "New OpenGL backend merged". Retrieved 2010-02-12.
- ^ Øyvind Kolås (2008-01-24). "Announcing OpenVG backend". Retrieved 2010-02-12.
- ^ Vladimir Vukićević (2008-05-06). "Well Isn't That Qt". Archived from the original on 2010-04-09. Retrieved 2010-02-12.
- ^ Chris Wilson (2009-08-31). "Cool Stuff". Retrieved 2010-02-12.
- ^ Bas Schouten (2009-11-22). "Direct2D: Hardware Rendering a Browser". Retrieved 2010-02-12.
- ^ Larabel, Michael (2022-02-27). "Cairo graphics library drops many old backends". Phoronix. Retrieved 2022-06-05.
- ^ "GNOME/librsvg". GitHub.
- ^ "GTK+ to Use Cairo Vector Engine". Retrieved 2009-12-27.
- ^ "Details of package gtk-vector-screenshot in stretch". Debian. 깃헙
- ^ "Mono - Drawing". Retrieved 2009-12-27.
- ^ "Moonlight Notes". Retrieved 2009-12-27.
- ^ "Gecko 1.9 Roadmap". Retrieved 2009-12-27.
- ^ "ReleaseNotes046". Inkscape Wiki. Retrieved 2008-03-31.
- ^ "Gnuplot version 4.4.0 announcement". Gnuplot homepage. Archived from the original on 2011-05-14. Retrieved 2011-02-22.
- ^ "Mailing list thread about the Cairo name change". Retrieved 2009-06-08.
- ^ "Mailing list thread about the Cairo name change". Retrieved 2006-12-02.
- ^ "Text". Readthedocs. Retrieved 2022-03-11.
외부 링크
- 공식 웹사이트
- GitHub의 cairocffi – Python용 CFFI 기반 카이로 바인딩
- "Cairo API reference manual".
- "Cairo here, there and everywhere". Linux.Ars. Ars Technica.
- "Cross-platform graphics with cairo".
- "Comparison of PHP image libraries".
- "The Cairo graphics tutorial".