{"id":25806008,"url":"https://github.com/alipsa/gsvg","last_synced_at":"2026-01-18T02:46:03.516Z","repository":{"id":222002682,"uuid":"755896219","full_name":"Alipsa/gsvg","owner":"Alipsa","description":"A Groovy object model for SVG (Scalar Vector Graphics)","archived":false,"fork":false,"pushed_at":"2025-02-16T16:06:40.000Z","size":356,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T16:37:53.507Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alipsa.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-11T12:16:49.000Z","updated_at":"2025-02-16T16:06:44.000Z","dependencies_parsed_at":"2024-02-11T18:28:55.525Z","dependency_job_id":"cc56db2c-59dd-45a1-9107-f9cf1a1b9eb6","html_url":"https://github.com/Alipsa/gsvg","commit_stats":null,"previous_names":["alipsa/svg-model","alipsa/gsvg"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Fgsvg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Fgsvg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Fgsvg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alipsa%2Fgsvg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alipsa","download_url":"https://codeload.github.com/Alipsa/gsvg/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241052529,"owners_count":19901043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-27T19:52:36.806Z","updated_at":"2026-01-18T02:46:03.507Z","avatar_url":"https://github.com/Alipsa.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Groovy](https://img.shields.io/badge/groovy-4298B8.svg?style=for-the-badge\u0026logo=apachegroovy\u0026logoColor=white)\n[![Maven Central](https://img.shields.io/maven-central/v/se.alipsa.groovy/gsvg.svg?style=for-the-badge)](https://search.maven.org/artifact/se.alipsa.groovy/gsvg)\n[![Javadoc](https://javadoc.io/badge2/se.alipsa.groovy/gsvg/javadoc.svg?style=for-the-badge)](https://javadoc.io/doc/se.alipsa.groovy/gsvg)\n# Groovy Scalar Vector Graphics (gsvg)\n\nThis is an object model to create, parse and manipulate SVG documents for groovy.\nIf you have groovy in your classpath, you can use it in any JVM language (Java, Scala, etc.).\n\nThe goal is to have a simple to use and lightweight library to create SVG documents programmatically or parse existing ones for modification. It supports the SVG 1.1 specification and the SVG 2 draft.\n\nThe jvm used should be java 17 or later.\n\nSee the test for various ways to create, parse and write SVG\n\nto use it add the following to your Gradle build script\n```groovy\nimplementation(\"org.apache.groovy:groovy:5.0.3\")\nimplementation(\"se.alipsa.groovy:gsvg:0.9.0\")\n```\nor if you prefer maven:\n```xml\n\u003cdependencies\u003e\n  \u003cdependency\u003e\n      \u003cgroupId\u003eorg.apache.groovy\u003c/groupId\u003e\n      \u003cartifactId\u003egroovy\u003c/artifactId\u003e\n      \u003cversion\u003e5.0.3\u003c/version\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n      \u003cgroupId\u003ese.alipsa.groovy\u003c/groupId\u003e\n      \u003cartifactId\u003egsvg\u003c/artifactId\u003e\n      \u003cversion\u003e0.9.0\u003c/version\u003e\n  \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n## Quick start\n\nCreate an SVG in code:\n```groovy\nimport se.alipsa.groovy.svg.Svg\nimport se.alipsa.groovy.svg.io.SvgWriter\n\ndef svg = new Svg(200, 120)\nsvg.addRect(180, 100).x(10).y(10).rx(12).ry(12).fill('#1976d2')\nsvg.addText('Hello SVG')\n   .x(30).y(70)\n   .fill('white')\n   .fontSize(24)\n\nprintln SvgWriter.toXmlPretty(svg)\n```\n\nRead/parse an existing SVG file and change it:\n```groovy\nimport se.alipsa.groovy.svg.io.SvgReader\nimport se.alipsa.groovy.svg.io.SvgWriter\nimport se.alipsa.groovy.svg.Rect\n\ndef svg = SvgReader.parse(new File('logo.svg'))\ndef rects = svg[Rect]\nrects.each { it.stroke('red').strokeWidth(2) }\n\nnew File('logo-out.svg').text = SvgWriter.toXmlPretty(svg)\n```\n## Documentation\n- [doc](doc/overview.md) for a simple overview of the library structure and usage examples.\n- [javadoc](https://javadoc.io/doc/se.alipsa.groovy/gsvg) for full API documentation.\n- [benchmarks](doc/benchmarks.md) for performance benchmarks and optimization tips.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falipsa%2Fgsvg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falipsa%2Fgsvg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falipsa%2Fgsvg/lists"}