카이로 (그래픽스)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
카이로(Cairo)는 키스 패커드와 칼 워스가 X 윈도 시스템에서 사용하기 위해 개발한 2D 그래픽 라이브러리이다. C 언어를 기반으로 하며, C++, C#, 파이썬, 자바 등 다양한 언어 바인딩을 지원한다. FLTK, GTK, SDL 등 그래픽 사용자 인터페이스 툴킷과 통합되어 사용되며, X 윈도 시스템, Win32 GDI, macOS 쿼츠 컴포지터, PNG, PDF, SVG 등 다양한 백엔드 출력을 지원한다. 드로잉 모델은 마스크 생성, 소스 정의, 표면 전송의 세 단계로 이루어지며, GTK, 모노 프로젝트, 모질라, 웹킷, 잉크스케이프 등 오픈 소스 프로젝트에서 널리 사용된다. 복잡한 텍스트 레이아웃을 위해서는 팡고를 함께 사용할 것을 권장한다.
더 읽어볼만한 페이지
- GTK - Pango
Pango는 텍스트 렌더링 라이브러리로, OpenType 기능을 지원하여 텍스트 렌더링의 유연성을 높였으며, 리눅스, GTK 툴킷, 모질라 제품군 등 다양한 소프트웨어에서 사용되고 2006년 Cairo에 통합되어 다양한 플랫폼에서 텍스트와 그래픽 렌더링을 지원한다. - GTK - GObject
GObject는 GNOME 프로젝트의 핵심 객체 지향 시스템으로, GType을 통한 런타임 정보 관리, 클로저와 시그널 기반 메시징 시스템을 갖추고 있으며, 다양한 언어 바인딩을 지원하여 CUI, 서버 애플리케이션 및 자유 소프트웨어 프로젝트에서 활용된다. - Freedesktop.org - D-Bus
D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다. - Freedesktop.org - 메사 (컴퓨터 그래픽스)
메사는 다양한 운영체제에서 3D 그래픽 하드웨어 가속을 지원하는 자유-오픈 소스 그래픽 라이브러리로, OpenGL, Vulkan, OpenCL 등 다양한 그래픽 API를 지원하며 소프트웨어 렌더링 기능도 제공한다. - 모질라 라이선스 소프트웨어 - 모질라 파이어폭스
모질라 파이어폭스는 모질라 재단에서 개발한 무료 오픈 소스 웹 브라우저로, 탭 브라우징, 팝업 차단, 확장 기능 등을 지원하며 웹 표준 준수 및 개인 정보 보호 기능을 강화했다. - 모질라 라이선스 소프트웨어 - 시몽키
시몽키는 웹 브라우저, 이메일 클라이언트, HTML 편집기, IRC 클라이언트를 통합한 오픈 소스 인터넷 스위트이며, 모질라 애플리케이션 스위트의 개발 중단 후 시몽키 위원회가 이어받아 개발하고 파이어폭스와 동일한 게코 엔진을 사용한다.
카이로 (그래픽스) - [IT 관련 정보]에 관한 문서 | |
---|---|
일반 정보 | |
종류 | 그래픽 라이브러리 |
개발자 | 키스 패커드, 칼 워스 |
개발 | 칼 워스, 베흐다드 에스파흐보드 |
초기 릴리스 | 2003년 이전 |
프로그래밍 언어 | C 언어 |
라이선스 | GNU LGPL 버전 2.1 (단독) 또는 MPL 1.1 |
웹사이트 | 카이로 그래픽스 공식 웹사이트 |
저장소 | 카이로 저장소 |
2. 역사
키스 패커드와 칼 워스는 X 윈도 시스템에서 사용하기 위해 카이로 프로젝트를 설립했다.[2] 초기에는(최소 2003년까지) '''Xr''' 또는 '''Xr/Xc'''라고 불렸으나, 디스플레이 서버에 접근하기 위한 X 윈도 시스템에 얽매이지 않는 크로스 플랫폼 라이브러리라는 점을 강조하기 위해 이름이 변경되었다.[21] ''카이로''라는 이름은 원래 이름 ''Xr''에서 유래되었으며, 그리스 문자 키와 로로 해석된다.[22]
카이로는 다양한 언어 바인딩을 제공하여 여러 프로그래밍 언어에서 사용할 수 있으며, 그래픽 사용자 인터페이스 툴킷과의 통합을 통해 활용도를 높이고 있다.
3. 소프트웨어 아키텍처
3. 1. 언어 바인딩
C 언어가 기본 API이지만, C++, C# 및 기타 CLI 언어, 델파이, 에펠, 포트란, 팩터, 하버, 하스켈, 줄리아, 루아, 펄, PHP, 파이썬, 루비, 러스트, Scheme, 스몰토크, Gambas (Visual Basic과 유사) 등 여러 언어에 대한 바인딩을 제공한다.[4] Ada, C++, Common Lisp, Factor, Haskell, Java, Lua, Mono와 .NET, Perl, PHP, Python, Ruby, Scheme, Smalltalk 등의 바인딩도 존재한다.[24]
3. 2. 툴킷 바인딩
카이로는 드로잉 라이브러리이므로, 그래픽 사용자 인터페이스 툴킷과 통합하면 매우 유용할 수 있다.3. 3. 백엔드
카이로는 코드 내에서 "표면"이라고 하는 다양한 래스터화를 포함한 여러 가지 백 엔드로의 출력을 지원한다. 지원되는 백 엔드에는 Xlib와 XCB를 통한 X 윈도우 시스템, Win32 GDI(마이크로소프트 윈도우), OS X 쿼츠 컴포지터, BeOS API, OS/2, OpenGL 컨텍스트(직접[6] 및 글리츠를 통해), 로컬 이미지 버퍼, PNG 파일, PDF, 포스트스크립트, DirectFB 및 SVG 파일 출력이 포함된다.
OpenVG[7], Qt[8], Skia[9] 및 마이크로소프트의 Direct2D[10] 그래픽 API를 대상으로 하는 다른 백 엔드도 개발 중이다. BeOS, OS/2 및 DirectFB 백 엔드는 2022년에 중단되었다.[11]
4. 드로잉 모델
카이로 드로잉 모델은 3계층 모델에 의존한다.
모든 드로잉 프로세스는 다음 세 단계로 진행된다.
# 먼저 원, 사각형, 트루타입 글꼴, 베지어 곡선 등 하나 이상의 벡터 기본 요소 또는 형태를 포함하는 마스크가 생성된다.
# 그런 다음 색상, 색상 그라데이션, 비트맵 또는 일부 벡터 그래픽일 수 있는 소스를 정의하고, 이 소스의 칠해진 부분에서 위에서 정의된 마스크를 사용하여 다이 컷을 만든다.
# 마지막으로 결과는 출력용 백엔드에서 제공하는 대상 또는 표면으로 전송된다.
이것은 CSS(Cascading Style Sheets) 규칙으로 도형의 색상을 지정하는 SVG(Scalable Vector Graphics)와 근본적으로 다른 접근 방식이다.[12] 카이로는 도형의 마스크를 만들고, 소스를 만든 다음 표면으로 전송하는 반면, SVG 파일은 `style` 속성으로 도형을 간단히 지정한다. 즉, 모델이 호환되지 않는 것은 아니며, 많은 SVG 렌더러가 카이로를 사용하여 복잡한 작업을 처리한다.[12]
카이로를 사용하면 단 몇 줄의 소스 코드로 매우 복잡한 "Hello world" 그래픽을 그릴 수 있다.
5. 주요 사용처
- GTK는 2005년 버전 2.8부터 그래픽 컨트롤 요소의 대부분을 렌더링하기 위해 카이로를 사용한다.[13] GTK 버전 3부터는 모든 렌더링이 카이로를 사용하여 수행된다.
- 모질라 프로젝트는 게코 레이아웃 엔진에서 카이로를 사용해 왔다. 게코는 모질라 제품의 그래픽 출력을 렌더링하는 데 사용된다. 파이어폭스 3의 기반이 되는 게코 1.9[17] 릴리스는 웹 페이지 콘텐츠와 사용자 인터페이스를 모두 렌더링하기 위한 그래픽 백엔드로 카이로를 사용한다.
- WebKit 프레임워크는 GTK 및 EFL 포트에서 모든 렌더링에 카이로를 사용한다.
- Poppler 라이브러리는 PDF 문서를 렌더링하기 위해 카이로를 사용하며, 안티앨리어싱된 벡터 그래픽과 투명 객체의 그리기를 가능하게 한다.
- 벡터 그래픽 응용 프로그램인 잉크스케이프는 0.46 릴리스부터 PDF 및 PostScript 내보내기를 위해 카이로 라이브러리를 사용한다.[18]
- Manim의 원래 버전은 ManimCairo라고 불렸다. 이후 OpenGL을 사용하도록 변경되었으며, 이 버전은 ManimGL이라고 한다.[19]
- FontForge는 2008년 10월 중순부터 렌더링에 카이로를 기본적으로 활성화했다.
- R은 카이로를 사용할 수 있는 경우 PDF, PostScript 및 SVG 형식으로 플롯을 출력할 수 있다.
- Gnuplot 4.4는 이제 PDF 및 PNG 출력을 렌더링하기 위해 카이로를 사용한다.[20]
- Synfig 0.64는 이제 선택적으로 카이로 렌더링을 지원한다.
- Graphite에서 시계열 데이터의 온디맨드 그래프를 지원한다.
- SolveSpace는 무료 오픈 소스 2D 및 3D CAD 소프트웨어이다.
- GIMP에서 사용된다.
- GNU Emacs는 버전 28.1에서 카이로를 채용했다.[25]
6. 복잡한 텍스트 레이아웃
카이로는 라틴어 및 CJK 기반 글꼴을 처리하지만, 글리프 셰이핑이 필요한 복잡한 텍스트 레이아웃 글꼴은 직접 지원하지 않는다. 카이로 개발자는 복잡한 텍스트 레이아웃을 제공하고 카이로와 통합될 수 있는 팡고를 사용할 것을 권장한다.[23]
참조
[1]
웹사이트
Carl's boring web pages
http://cworth.org/
2014-07-11
[2]
웹사이트
Xr: Cross-device Rendering for Vector Graphics
http://cworth.org/~c[...]
2009-06-08
[3]
웹사이트
Cairo homepage
http://cairographics[...]
2010-10-30
[4]
웹사이트
Cairo Language Bindings
http://cairographics[...]
2014-04-16
[5]
웹사이트
SDL
http://cairographics[...]
2014-11-03
[6]
웹사이트
New OpenGL backend merged
http://lists.cairogr[...]
2010-02-12
[7]
웹사이트
Announcing OpenVG backend
http://lists.freedes[...]
2010-02-12
[8]
웹사이트
Well Isn't That Qt
http://blog.vlad1.co[...]
2010-02-12
[9]
웹사이트
Cool Stuff
http://lists.cairogr[...]
2010-02-12
[10]
웹사이트
Direct2D: Hardware Rendering a Browser
http://www.basschout[...]
2010-02-12
[11]
웹사이트
Cairo graphics library drops many old backends
https://www.phoronix[...]
Phoronix
2022-06-05
[12]
웹사이트
GNOME/librsvg
https://github.com/G[...]
[13]
웹사이트
GTK+ to Use Cairo Vector Engine
http://developers.sl[...]
2009-12-27
[14]
웹사이트
Details of package gtk-vector-screenshot in stretch
https://packages.deb[...]
[15]
웹사이트
Mono - Drawing
http://www.mono-proj[...]
2009-12-27
[16]
웹사이트
Moonlight Notes
http://www.mono-proj[...]
2009-12-27
[17]
웹사이트
Gecko 1.9 Roadmap
https://wiki.mozilla[...]
2009-12-27
[18]
웹사이트
ReleaseNotes046
http://wiki.inkscape[...]
2008-03-31
[19]
웹사이트
ManimCE tutorial by TheoremOfBeethoven — ManimCE tutorial by TB documentation
https://zavden.githu[...]
2023-01-29
[20]
웹사이트
Gnuplot version 4.4.0 announcement
http://www.gnuplot.i[...]
2011-02-22
[21]
웹사이트
Mailing list thread about the Cairo name change
http://lists.cairogr[...]
2009-06-08
[22]
웹사이트
Mailing list thread about the Cairo name change
http://lists.freedes[...]
2006-12-02
[23]
웹사이트
How do I use Pango instead of Cairo's "toy" text API?
https://www.cairogra[...]
2024-03-20
[24]
웹사이트
Language bindings
http://cairographics[...]
[25]
웹사이트
テキストエディター「GNU Emacs 28.1」がリリース - 窓の杜
https://forest.watch[...]
2022-05-11
[26]
웹인용
Carl's boring web pages
http://cworth.org/
2014-07-11
[27]
웹인용
Xr: Cross-device Rendering for Vector Graphics
http://cworth.org/~c[...]
2009-06-08
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com