From 3d7a9287e78e23c48c9d37c59c7a2e3eb401077b Mon Sep 17 00:00:00 2001 From: Samuel Ugochukwu Date: Sat, 21 Dec 2024 14:34:00 +0100 Subject: [PATCH] Update README.md --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/README.md b/README.md index 7ff1e00..ff4eed5 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,72 @@ int main() ![tiger.png](https://github.com/user-attachments/assets/b87bbf92-6dd1-4b29-a890-99cfffce66b8) +--- + +### Dynamic Styling Example + +```cpp +#include + +using namespace lunasvg; + +static const char kLandspaceContent[] = R"SVG( + + + + + + + + + + + + + + + + + + + + + +)SVG"; + +static const char kSummerStyle[] = R"CSS( +.sky { fill: #4A90E2; } +.sun { fill: #FF7F00; } +.mountain { fill: #2E3A59; } +.cloud { fill: #FFFFFF; opacity: 0.8; } +.ground { fill: #2E8B57; } +)CSS"; + +static const char kWinterStyle[] = R"CSS( +.sky { fill: #87CEEB; } +.sun { fill: #ADD8E6; } +.mountain { fill: #2F4F4F; } +.cloud { fill: #FFFFFF; opacity: 0.8; } +.ground { fill: #FFFAFA; } +)CSS"; + +int main() +{ + auto document = Document::loadFromData(kLandspaceContent); + + document->applyStyleSheet(kSummerStyle); + document->renderToBitmap().writeToPng("summer.png"); + + document->applyStyleSheet(kWinterStyle); + document->renderToBitmap().writeToPng("winter.png"); + return 0; +} +``` + +| `summer.png` | `winter.png` | +| --- | --- | +| ![summer](https://github.com/user-attachments/assets/c7f16780-23f8-4acd-906a-2242f2d0d33b) | ![winter](https://github.com/user-attachments/assets/fdd65288-11c7-4e16-bb5a-2bf28de57145) | + ## Features LunaSVG supports nearly all graphical features outlined in the SVG 1.1 and SVG 1.2 Tiny specifications. The primary exceptions are animation, filters, and scripts. As LunaSVG is designed for static rendering, animation is unlikely to be supported in the future. However, support for filters may be added. It currently handles a wide variety of elements, including: