Cairo 종속 라이브러리

1909 단어 cairoZRouterFreeBSD
소형 액정 의 표시를 제어하기 위해 2D 그래픽 라이브러리의 cairo을 Onion Omega(mipeb)용으로 FreeBSD/ZRouter로 최소한의 구성으로 빌드해 보았습니다.

시도한 버전은 cairo 1.14.6입니다.

configure가 pkgconf에 의존하기 때문에 이것을 넣어야했습니다. 또 configure 안에서 pixman, fontconfig, freetype, png를 pkgconf로 참조하고 있으므로 이것도 실제로는 사용하지 않지만 설치가 필요합니다.

cairo는 pixman 이라는 x11에서 파생된 라이브러리를 사용하고 있으며, 최소한 이것이 있으면 빌드할 수 있습니다. 이것만으로도 선이나 사각형이나 원의 메모리 버퍼에의 draw를 할 수 있습니다. 또 ASCII의 폰트를 내장하고 있으므로, 영문자도 그릴 수 있습니다. 여담입니다만 이 메모리 버퍼의 일을 옛의 Mac에서는 offscreen라든지 말하고 있었습니다.

pixman에는 아키텍처별 최적화 코드가 있으며, 크로스로 빌드할 때는 주의가 필요합니다. 또한 cairo, pixman 모두 엔디안 설정을 가지고 있기 때문에 이것도 요주의였습니다.

png를 읽거나 쓰려면 png 라이브러리가 필요합니다. PNG 라이브러리는 libz를 사용하기 때문에 이것도 필요합니다.

글꼴을 읽으려면 freetype과 fontconfig가 필요합니다. fontconfig는 expat2도 사용하므로 이것도 필요합니다.

freetype은 png를 사용하는 옵션도 있지만, 없어도 괜찮은 것 같습니다.



모두 FreeBSD의 ports에 있고, 그것을 ZRouter에 복사하고 Makefile을 필요에 따라 적절히 수정하고, do-install로 이미지 작성용 디렉토리에 복사하도록 했습니다. 복사는 원본 라이브러리 바이너리를 한 자리 버전의 파일로 복사하고 so 파일을 심볼릭 링크로 만듭니다.

물론 의존의 순서로 빌드해, 링크시에 참조할 수 있도록 하지 않으면 안됩니다.

묘화한 데이터는 cairo_image_surface_get_data()로 버퍼의 포인터를 취득해 픽업할 수 있습니다.

이것으로 만든 라이브러리로 mruby 바인딩을 만들어 보았습니다.

좋은 웹페이지 즐겨찾기