프로젝트 소개
LunaSVG는 확장 가능한 벡터 그래픽(SVG) 파일을 렌더링하고 조작하기 위한 C++ 라이브러리로, 경량성과 이식성을 목표로 설계되었습니다. 정적 렌더링을 대상으로 하며, 애니메이션, 필터, 스크립트를 제외하고 SVG 1.1 및 SVG 1.2 Tiny 명세의 거의 모든 그래픽 기능을 지원합니다. 이 라이브러리는 정적 출력에 초점을 맞추고 있기 때문에 애니메이션이 추가될 가능성은 낮지만, 필터 지원은 나중에 추가될 수 있습니다.
핵심 기능:
- 파일 또는 메모리 내 데이터에서 SVG 문서를 로드하고 비트맵으로 렌더링하며, PNG로 내보낼 수 있습니다.
- 렌더링 전에 런타임에 외부 CSS 스타일시트를 적용하여 문서의 스타일을 다시 지정할 수 있어, 하나의 SVG 소스에서 계절별 테마와 같은 변형을 만들 수 있습니다.
- elementFromPoint(x, y)를 통한 히트 테스트로, 좌표 아래의 요소를 반환합니다. 이후 stroke, stroke-width, transform과 같은 속성을 수정하고 다시 렌더링할 수 있습니다.
- a, circle, clipPath, defs, ellipse, g, image, line, linearGradient, marker, mask, path, pattern, polygon, polyline, radialGradient, rect, stop, style, svg, symbol, text, tspan, use를 포함한 폭넓은 요소 지원.
설치 및 통합:
- CMake 또는 Meson으로 빌드합니다. CMake 사용자는 find_package(lunasvg)를 통해 설치 및 사용하고 lunasvg::lunasvg를 링크하거나, FetchContent로 가져올 수 있습니다. Meson 사용자는 dependency('lunasvg') 또는 wrap 파일을 사용할 수 있습니다.
- 빌드 옵션 USE_SYSTEM_PLUTOVG(기본값 OFF)를 사용하면 번들된 서브모듈 대신 시스템 plutovg 1.0.0+에 링크할 수 있으며, 찾지 못하면 서브모듈로 대체됩니다.
도구:
- 명령줄 유틸리티 svg2png는 SVG 파일을 PNG로 변환하며, 선택적 해상도(예: 512x512)와 배경색(예: 0xff00ffff)을 받을 수 있습니다.
채택:
README에는 LunaSVG를 사용하는 프로젝트가 나열되어 있으며, OpenSiv3D, PICsimLab, MoneyManagerEx, RmlUi, EKA2L1, ObEngine, OTTO, EmulationStation-DE, Dear ImGui, Multi Theft Auto: San Andreas, CARLA Simulator, AUI Framework, node-canvas, pillow-lunasvg가 포함됩니다.
라이선스: MIT.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.