Quiero analizar archivos SVG en C++ en OS X y necesito una biblioteca. Debe ser simple, ligero y no debe tener muchas dependencias. Mis archivos SVG también son simples: solo contienen formas y rutas simples como rectángulos e información de transformación. ¿Conoces algún analizador?
Nota: quiero ir más allá de la información de forma analizada de la estructura XML, como el ancho del rectángulo, la altura y los puntos de ruta, en flotadores, etc. Ya probé libtinysvg , y no analiza la mayoría de las muestras de w3c y tiene algunas dependencias propias.
La nueva biblioteca SVG++ es una buena opción para la lectura de SVG en C++, excepto que no es liviana y requiere la biblioteca Boost. Pero como es una biblioteca de solo encabezados y usa solo bibliotecas de solo encabezados de Boost, solo necesita buscar SVG++ y Boost y agregarlos para incluir rutas, no se requiere construcción.
Tienes pocas opciones:
Nota sobre libsvgtiny: está desarrollado por el proyecto Netsurf Browser y tiene dependencias mínimas que muchos otros proyectos probablemente habrían incluido, pero intencionalmente separan diferentes funcionalidades (también analizan html, xml y css, por lo que los bits de análisis comunes son una biblioteca separada). He creado un visor de svg básico a partir de su código de ejemplo en nsfb que está compilado estáticamente hasta menos de 300 kb con el backend libxcb usando musl-libc (glibc + libx11 + librsvg + todas sus dependencias son más de 10 veces eso)
Nota sobre librsvg: es el más utilizado, pero tiene muchas más dependencias.
Nota sobre Amaya: no está en desarrollo activo, solo se menciona en caso de que esté cerca de lo que está tratando de hacer para empezar. Las versiones anteriores a la 9.x solo requerían gtk+-1.X (ahora Wx, que es multiplataforma)
Nota sobre QT: si está utilizando C ++ y desea una interfaz gráfica de usuario multiplataforma, entonces esta es probablemente una buena opción, ya que muchos kits de herramientas de interfaz gráfica de usuario de C ++ (fltk, FOX, etc.) no tienen capacidad incorporada de svg
webkit o chromium incrustado: estos son multiplataforma y ofrecen muchos excesos. No solo obtendrá SVG, sino también muchas cosas que quizás no necesite... pero dado que todos los programas evolucionan hasta que pueden enviar correo, esto lo pondrá adelante en el juego más adelante.
Analizadores XML: Demasiados para mencionarlos, pero es posible que pueda extraer un poco de código de tinysvg para obtener propiedades adicionales
Mi recomendación: comience con svgtiny y agregue las capacidades que necesite. Los desarrolladores de Netsurf son extremadamente abiertos y serviciales.
SVG es un tipo especial de XML ( fuente ). Entonces, cualquier biblioteca C/C++ que le permita analizar XML también le permitirá analizar SVG.
Muchas bibliotecas se publican como respuestas a la pregunta Mejor analizador XML abierto para C++ . Algunos de ellos son
Jan Hudec
Mawg dice que reincorpore a Monica