From b948a63c61c422a735fe51d1ff70e7298779b9b9 Mon Sep 17 00:00:00 2001 From: nkwn <148709510+phthtgvi@users.noreply.github.com> Date: Fri, 5 Jan 2024 18:38:28 +0700 Subject: [PATCH 1/5] Add docs to Github Page --- .gitignore | 5 +- Doxyfile | 2 +- docs/html/Parser_8cpp_source.html | 723 ------ docs/html/Parser_8hpp_source.html | 240 -- docs/html/Renderer_8cpp_source.html | 561 ----- docs/html/classCircle__coll__graph.map | 7 - docs/html/classCircle__coll__graph.md5 | 1 - docs/html/classCircle__coll__graph.svg | 113 - docs/html/classEll__coll__graph.map | 6 - docs/html/classEll__coll__graph.md5 | 1 - docs/html/classEll__coll__graph.svg | 98 - docs/html/classGroup__coll__graph.map | 6 - docs/html/classGroup__coll__graph.md5 | 1 - docs/html/classGroup__coll__graph.svg | 91 - docs/html/classLine__coll__graph.map | 6 - docs/html/classLine__coll__graph.md5 | 1 - docs/html/classParser.html | 1540 ------------ docs/html/classParser.js | 27 - docs/html/classParser__coll__graph.map | 6 - docs/html/classParser__coll__graph.md5 | 1 - docs/html/classParser__coll__graph.svg | 99 - docs/html/classPath__coll__graph.map | 6 - docs/html/classPath__coll__graph.md5 | 1 - docs/html/classPath__coll__graph.svg | 91 - docs/html/classPlygon.js | 8 - docs/html/classPlygon__coll__graph.map | 7 - docs/html/classPlygon__coll__graph.md5 | 1 - docs/html/classPlygon__coll__graph.svg | 106 - docs/html/classPlyline.js | 8 - docs/html/classPlyline__coll__graph.map | 7 - docs/html/classPlyline__coll__graph.md5 | 1 - docs/html/classPlyline__coll__graph.svg | 106 - docs/html/classPolyShape__coll__graph.map | 6 - docs/html/classPolyShape__coll__graph.md5 | 1 - docs/html/classPolyShape__coll__graph.svg | 91 - docs/html/classPolyShape__inherit__graph.md5 | 1 - docs/html/classRect__coll__graph.map | 7 - docs/html/classRect__coll__graph.md5 | 1 - docs/html/classRect__coll__graph.svg | 113 - docs/html/classRect__inherit__graph.map | 5 - docs/html/classRect__inherit__graph.md5 | 1 - docs/html/classRenderer.html | 1086 --------- docs/html/classSVGElement__coll__graph.map | 5 - docs/html/classSVGElement__coll__graph.md5 | 1 - docs/html/classSVGElement__coll__graph.svg | 76 - docs/html/classSVGElement__inherit__graph.md5 | 1 - docs/html/classText__coll__graph.map | 6 - docs/html/classText__coll__graph.md5 | 1 - docs/html/classText__coll__graph.svg | 91 - docs/html/classViewer__coll__graph.map | 3 - docs/html/classViewer__coll__graph.md5 | 1 - docs/html/classViewer__coll__graph.svg | 28 - docs/html/functions.html | 662 ------ docs/html/inherit_graph_4.md5 | 1 - docs/html/navtreeindex0.js | 248 -- docs/html/search/all_0.js | 9 - docs/html/search/all_1.js | 6 - docs/html/search/all_10.js | 6 - docs/html/search/all_12.js | 5 - docs/html/search/all_13.js | 4 - docs/html/search/all_14.js | 5 - docs/html/search/all_16.js | 6 - docs/html/search/all_2.js | 6 - docs/html/search/all_3.js | 13 - docs/html/search/all_5.js | 6 - docs/html/search/all_6.js | 31 - docs/html/search/all_7.js | 11 - docs/html/search/all_9.js | 5 - docs/html/search/all_b.js | 4 - docs/html/search/all_c.js | 7 - docs/html/search/all_d.js | 27 - docs/html/search/all_e.js | 10 - docs/html/search/all_f.js | 23 - docs/html/search/classes_0.js | 4 - docs/html/search/classes_1.js | 4 - docs/html/search/classes_2.js | 4 - docs/html/search/classes_3.js | 4 - docs/html/search/classes_4.js | 4 - docs/html/search/classes_5.js | 9 - docs/html/search/classes_6.js | 5 - docs/html/search/classes_7.js | 4 - docs/html/search/classes_8.js | 4 - docs/html/search/classes_9.js | 6 - docs/html/search/functions_0.js | 6 - docs/html/search/functions_2.js | 12 - docs/html/search/functions_3.js | 4 - docs/html/search/functions_4.js | 28 - docs/html/search/functions_5.js | 10 - docs/html/search/functions_6.js | 4 - docs/html/search/functions_9.js | 23 - docs/html/search/functions_a.js | 5 - docs/html/search/functions_b.js | 19 - docs/html/search/functions_c.js | 4 - docs/html/search/functions_e.js | 6 - docs/html/search/variables_0.js | 6 - docs/html/search/variables_1.js | 6 - docs/html/search/variables_10.js | 5 - docs/html/search/variables_11.js | 4 - docs/html/search/variables_12.js | 5 - docs/html/search/variables_2.js | 5 - docs/html/search/variables_3.js | 4 - docs/html/search/variables_4.js | 6 - docs/html/search/variables_5.js | 5 - docs/html/search/variables_6.js | 4 - docs/html/search/variables_9.js | 4 - docs/html/search/variables_b.js | 5 - docs/html/search/variables_c.js | 6 - docs/html/search/variables_d.js | 8 - docs/html/search/variables_e.js | 7 - docs/html/search/variables_f.js | 5 - docs/html/structPathPoint.js | 5 - docs/html/structPathPoint__coll__graph.md5 | 1 - docs/latex/code_documentation.pdf | Bin 596536 -> 0 bytes docs/latex/refman.pdf | Bin 0 -> 715424 bytes {docs/html => html}/Circle_8cpp_source.html | 2 +- {docs/html => html}/Circle_8hpp_source.html | 8 +- {docs/html => html}/Color_8cpp_source.html | 2 +- {docs/html => html}/Color_8hpp_source.html | 2 +- {docs/html => html}/Ellipse_8cpp_source.html | 61 +- {docs/html => html}/Ellipse_8hpp_source.html | 32 +- html/Gradient_8cpp_source.html | 168 ++ html/Gradient_8hpp_source.html | 189 ++ {docs/html => html}/Graphics_8hpp_source.html | 18 +- {docs/html => html}/Group_8cpp_source.html | 18 +- {docs/html => html}/Group_8hpp_source.html | 54 +- {docs/html => html}/Line_8cpp_source.html | 47 +- {docs/html => html}/Line_8hpp_source.html | 16 +- html/LinearGradient_8cpp_source.html | 143 ++ html/LinearGradient_8hpp_source.html | 153 ++ html/Parser_8cpp_source.html | 1032 ++++++++ html/Parser_8hpp_source.html | 275 +++ {docs/html => html}/Path_8cpp_source.html | 72 +- {docs/html => html}/Path_8hpp_source.html | 84 +- .../html => html}/PolyShape_8cpp_source.html | 81 +- .../html => html}/PolyShape_8hpp_source.html | 56 +- {docs/html => html}/Polygon_8cpp_source.html | 9 +- {docs/html => html}/Polygon_8hpp_source.html | 24 +- {docs/html => html}/Polyline_8cpp_source.html | 11 +- {docs/html => html}/Polyline_8hpp_source.html | 24 +- html/RadialGradient_8cpp_source.html | 150 ++ html/RadialGradient_8hpp_source.html | 162 ++ {docs/html => html}/Rect_8cpp_source.html | 80 +- {docs/html => html}/Rect_8hpp_source.html | 32 +- html/Renderer_8cpp_source.html | 936 ++++++++ {docs/html => html}/Renderer_8hpp_source.html | 53 +- .../html => html}/SVGElement_8cpp_source.html | 178 +- .../html => html}/SVGElement_8hpp_source.html | 167 +- {docs/html => html}/Shape_8cpp_source.html | 0 {docs/html => html}/Shape_8hpp_source.html | 0 html/Stop_8cpp_source.html | 145 ++ html/Stop_8hpp_source.html | 158 ++ {docs/html => html}/Text_8cpp_source.html | 72 +- {docs/html => html}/Text_8hpp_source.html | 61 +- {docs/html => html}/Vector2D_8hpp_source.html | 2 +- {docs/html => html}/Viewer_8cpp_source.html | 19 +- {docs/html => html}/Viewer_8hpp_source.html | 86 +- {docs/html => html}/annotated.html | 36 +- {docs/html => html}/annotated_dup.js | 4 + {docs/html => html}/bc_s.png | Bin {docs/html => html}/bdwn.png | Bin .../classCircle-members.html | 34 +- {docs/html => html}/classCircle.html | 29 +- {docs/html => html}/classCircle.js | 0 html/classCircle__coll__graph.map | 8 + html/classCircle__coll__graph.md5 | 1 + .../classCircle__coll__graph.png | Bin html/classCircle__coll__graph.svg | 129 + .../classCircle__inherit__graph.map | 0 .../classCircle__inherit__graph.md5 | 0 .../classCircle__inherit__graph.png | Bin .../classCircle__inherit__graph.svg | 0 .../classEll-members.html | 34 +- {docs/html => html}/classEll.html | 141 +- {docs/html => html}/classEll.js | 2 + html/classEll__coll__graph.map | 7 + html/classEll__coll__graph.md5 | 1 + html/classEll__coll__graph.svg | 114 + .../classEll__inherit__graph.map | 0 .../classEll__inherit__graph.md5 | 0 .../classEll__inherit__graph.svg | 0 {docs/html => html}/classEllipse-members.html | 0 {docs/html => html}/classEllipse.html | 0 {docs/html => html}/classEllipse.js | 0 .../classEllipse__coll__graph.map | 0 .../classEllipse__coll__graph.md5 | 0 .../classEllipse__coll__graph.png | Bin .../classEllipse__coll__graph.svg | 0 .../classEllipse__inherit__graph.map | 0 .../classEllipse__inherit__graph.md5 | 0 .../classEllipse__inherit__graph.png | Bin .../classEllipse__inherit__graph.svg | 0 html/classGradient-members.html | 149 ++ html/classGradient.html | 466 ++++ html/classGradient.js | 17 + html/classGradient__inherit__graph.map | 5 + html/classGradient__inherit__graph.md5 | 1 + html/classGradient__inherit__graph.svg | 51 + {docs/html => html}/classGroup-members.html | 49 +- {docs/html => html}/classGroup.html | 73 +- {docs/html => html}/classGroup.js | 0 html/classGroup__coll__graph.map | 7 + html/classGroup__coll__graph.md5 | 1 + html/classGroup__coll__graph.svg | 107 + .../classGroup__inherit__graph.map | 0 .../classGroup__inherit__graph.md5 | 0 .../classGroup__inherit__graph.svg | 0 .../classLine-members.html | 26 +- {docs/html => html}/classLine.html | 63 +- {docs/html => html}/classLine.js | 0 html/classLine__coll__graph.map | 7 + html/classLine__coll__graph.md5 | 1 + .../html => html}/classLine__coll__graph.png | Bin html/classLine__coll__graph.svg | 114 + .../classLine__inherit__graph.map | 0 .../classLine__inherit__graph.md5 | 0 .../classLine__inherit__graph.png | Bin .../classLine__inherit__graph.svg | 0 html/classLinearGradient-members.html | 150 ++ html/classLinearGradient.html | 287 +++ html/classLinearGradient.js | 5 + html/classLinearGradient__coll__graph.map | 4 + html/classLinearGradient__coll__graph.md5 | 1 + html/classLinearGradient__coll__graph.svg | 36 + html/classLinearGradient__inherit__graph.map | 4 + html/classLinearGradient__inherit__graph.md5 | 1 + html/classLinearGradient__inherit__graph.svg | 36 + {docs/html => html}/classParser-members.html | 44 +- html/classParser.html | 2082 +++++++++++++++++ html/classParser.js | 35 + html/classParser__coll__graph.map | 7 + html/classParser__coll__graph.md5 | 1 + .../classParser__coll__graph.png | Bin html/classParser__coll__graph.svg | 122 + {docs/html => html}/classPath-members.html | 43 +- {docs/html => html}/classPath.html | 85 +- {docs/html => html}/classPath.js | 0 html/classPath__coll__graph.map | 7 + html/classPath__coll__graph.md5 | 1 + html/classPath__coll__graph.svg | 107 + .../classPath__inherit__graph.map | 0 .../classPath__inherit__graph.md5 | 0 .../classPath__inherit__graph.svg | 0 .../classPlygon-members.html | 49 +- {docs/html => html}/classPlygon.html | 106 +- html/classPlygon.js | 5 + html/classPlygon__coll__graph.map | 8 + html/classPlygon__coll__graph.md5 | 1 + html/classPlygon__coll__graph.svg | 122 + .../classPlygon__inherit__graph.map | 0 .../classPlygon__inherit__graph.md5 | 0 .../classPlygon__inherit__graph.svg | 0 {docs/html => html}/classPlyline-members.html | 49 +- {docs/html => html}/classPlyline.html | 108 +- html/classPlyline.js | 5 + html/classPlyline__coll__graph.map | 8 + html/classPlyline__coll__graph.md5 | 1 + html/classPlyline__coll__graph.svg | 122 + .../classPlyline__inherit__graph.map | 0 .../classPlyline__inherit__graph.md5 | 0 .../classPlyline__inherit__graph.svg | 0 .../html => html}/classPolyShape-members.html | 28 +- {docs/html => html}/classPolyShape.html | 224 +- {docs/html => html}/classPolyShape.js | 5 + html/classPolyShape__coll__graph.map | 7 + html/classPolyShape__coll__graph.md5 | 1 + html/classPolyShape__coll__graph.svg | 107 + .../classPolyShape__inherit__graph.map | 5 +- html/classPolyShape__inherit__graph.md5 | 1 + .../classPolyShape__inherit__graph.svg | 39 +- {docs/html => html}/classPolygon-members.html | 0 {docs/html => html}/classPolygon.html | 0 {docs/html => html}/classPolygon.js | 0 .../classPolygon__coll__graph.map | 0 .../classPolygon__coll__graph.md5 | 0 .../classPolygon__coll__graph.png | Bin .../classPolygon__coll__graph.svg | 0 .../classPolygon__inherit__graph.map | 0 .../classPolygon__inherit__graph.md5 | 0 .../classPolygon__inherit__graph.png | Bin .../classPolygon__inherit__graph.svg | 0 .../html => html}/classPolyline-members.html | 0 {docs/html => html}/classPolyline.html | 0 {docs/html => html}/classPolyline.js | 0 .../classPolyline__coll__graph.map | 0 .../classPolyline__coll__graph.md5 | 0 .../classPolyline__coll__graph.png | Bin .../classPolyline__coll__graph.svg | 0 .../classPolyline__inherit__graph.map | 0 .../classPolyline__inherit__graph.md5 | 0 .../classPolyline__inherit__graph.png | Bin .../classPolyline__inherit__graph.svg | 0 html/classRadialGradient-members.html | 152 ++ html/classRadialGradient.html | 331 +++ html/classRadialGradient.js | 7 + html/classRadialGradient__coll__graph.map | 5 + html/classRadialGradient__coll__graph.md5 | 1 + html/classRadialGradient__coll__graph.svg | 52 + html/classRadialGradient__inherit__graph.map | 4 + html/classRadialGradient__inherit__graph.md5 | 1 + html/classRadialGradient__inherit__graph.svg | 36 + .../classRect-members.html | 55 +- {docs/html => html}/classRect.html | 134 +- {docs/html => html}/classRect.js | 0 html/classRect__coll__graph.map | 7 + html/classRect__coll__graph.md5 | 1 + .../html => html}/classRect__coll__graph.png | Bin html/classRect__coll__graph.svg | 114 + html/classRect__inherit__graph.map | 4 + html/classRect__inherit__graph.md5 | 1 + .../classRect__inherit__graph.png | Bin .../classRect__inherit__graph.svg | 27 +- .../html => html}/classRenderer-members.html | 15 +- html/classRenderer.html | 1601 +++++++++++++ {docs/html => html}/classRenderer.js | 3 + .../classRenderer__coll__graph.map | 0 .../classRenderer__coll__graph.md5 | 0 .../classRenderer__coll__graph.svg | 0 .../classSVGElement-members.html | 26 +- {docs/html => html}/classSVGElement.html | 415 +++- {docs/html => html}/classSVGElement.js | 7 + html/classSVGElement__coll__graph.map | 6 + html/classSVGElement__coll__graph.md5 | 1 + html/classSVGElement__coll__graph.svg | 92 + .../classSVGElement__inherit__graph.map | 10 +- html/classSVGElement__inherit__graph.md5 | 1 + .../classSVGElement__inherit__graph.svg | 82 +- {docs/html => html}/classShape-members.html | 0 {docs/html => html}/classShape.html | 0 {docs/html => html}/classShape.js | 0 .../classShape__inherit__graph.map | 0 .../classShape__inherit__graph.md5 | 0 .../classShape__inherit__graph.png | Bin .../classShape__inherit__graph.svg | 0 html/classStop-members.html | 140 ++ html/classStop.html | 270 +++ html/classStop.js | 8 + html/classStop__coll__graph.map | 4 + html/classStop__coll__graph.md5 | 1 + html/classStop__coll__graph.svg | 52 + {docs/html => html}/classText-members.html | 45 +- {docs/html => html}/classText.html | 80 +- {docs/html => html}/classText.js | 0 html/classText__coll__graph.map | 7 + html/classText__coll__graph.md5 | 1 + .../html => html}/classText__coll__graph.png | Bin .../classText__coll__graph.svg | 81 +- .../classText__inherit__graph.map | 0 .../classText__inherit__graph.md5 | 0 .../classText__inherit__graph.png | Bin .../classText__inherit__graph.svg | 0 .../html => html}/classVector2D-members.html | 2 +- {docs/html => html}/classVector2D.html | 2 +- {docs/html => html}/classVector2D.js | 0 {docs/html => html}/classViewer-members.html | 38 +- {docs/html => html}/classViewer.html | 55 +- {docs/html => html}/classViewer.js | 2 + html/classViewer__coll__graph.map | 4 + html/classViewer__coll__graph.md5 | 1 + .../classViewer__coll__graph.png | Bin html/classViewer__coll__graph.svg | 44 + {docs/html => html}/classes.html | 10 +- {docs/html => html}/classmColor-members.html | 2 +- {docs/html => html}/classmColor.html | 2 +- {docs/html => html}/classmColor.js | 0 .../classmColor__coll__graph.map | 0 .../classmColor__coll__graph.md5 | 0 .../classmColor__coll__graph.svg | 0 {docs/html => html}/closed.png | Bin {docs/html => html}/custom-alternative.css | 0 {docs/html => html}/custom.css | 0 .../dir_560415a5d2bc4999842279f4fc1debef.html | 2 +- .../dir_560415a5d2bc4999842279f4fc1debef.js | 8 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 2 +- .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 0 {docs/html => html}/doc.png | Bin .../doxygen-awesome-darkmode-toggle.js | 0 .../doxygen-awesome-fragment-copy-button.js | 0 .../doxygen-awesome-interactive-toc.js | 0 .../doxygen-awesome-paragraph-link.js | 0 ...n-awesome-sidebar-only-darkmode-toggle.css | 0 .../doxygen-awesome-sidebar-only.css | 0 {docs/html => html}/doxygen-awesome-tabs.js | 0 {docs/html => html}/doxygen-awesome.css | 0 {docs/html => html}/doxygen.css | 0 {docs/html => html}/doxygen.svg | 0 {docs/html => html}/dynsections.js | 0 {docs/html => html}/files.html | 48 +- {docs/html => html}/files_dup.js | 0 {docs/html => html}/folderclosed.png | Bin {docs/html => html}/folderopen.png | Bin html/functions.html | 158 ++ html/functions_b.html | 141 ++ html/functions_c.html | 144 ++ html/functions_d.html | 162 ++ html/functions_dup.js | 27 + html/functions_e.html | 135 ++ html/functions_f.html | 142 ++ {docs/html => html}/functions_func.html | 130 +- html/functions_g.html | 289 +++ html/functions_h.html | 156 ++ html/functions_i.html | 140 ++ html/functions_l.html | 141 ++ html/functions_m.html | 138 ++ html/functions_n.html | 135 ++ html/functions_o.html | 148 ++ html/functions_p.html | 212 ++ html/functions_r.html | 158 ++ {docs/html => html}/functions_rela.html | 2 +- html/functions_s.html | 207 ++ html/functions_t.html | 142 ++ html/functions_u.html | 135 ++ html/functions_v.html | 144 ++ {docs/html => html}/functions_vars.html | 47 +- html/functions_w.html | 141 ++ html/functions_x.html | 135 ++ html/functions_y.html | 138 ++ html/functions_z.html | 135 ++ html/functions_~.html | 147 ++ {docs/html => html}/graph_legend.html | 2 +- {docs/html => html}/graph_legend.md5 | 0 {docs/html => html}/graph_legend.png | Bin {docs/html => html}/graph_legend.svg | 0 {docs/html => html}/hierarchy.html | 42 +- {docs/html => html}/hierarchy.js | 9 +- {docs/html => html}/index.html | 2 +- html/inherit_graph_0.map | 5 + html/inherit_graph_0.md5 | 1 + {docs/html => html}/inherit_graph_0.png | Bin html/inherit_graph_0.svg | 51 + .../inherit_graph_1.map | 0 .../inherit_graph_1.md5 | 0 {docs/html => html}/inherit_graph_1.png | Bin .../inherit_graph_1.svg | 0 .../inherit_graph_2.map | 0 .../inherit_graph_2.md5 | 0 {docs/html => html}/inherit_graph_2.png | Bin .../inherit_graph_2.svg | 0 .../inherit_graph_3.map | 0 .../inherit_graph_3.md5 | 0 .../inherit_graph_3.svg | 0 .../inherit_graph_4.map | 0 .../inherit_graph_4.md5 | 0 .../inherit_graph_4.svg | 0 html/inherit_graph_5.map | 3 + html/inherit_graph_5.md5 | 1 + html/inherit_graph_5.svg | 21 + .../inherit_graph_6.map | 10 +- html/inherit_graph_6.md5 | 1 + .../inherit_graph_6.svg | 108 +- .../inherit_graph_7.map | 0 .../inherit_graph_7.md5 | 0 .../inherit_graph_7.svg | 0 .../inherit_graph_8.map | 0 .../inherit_graph_8.md5 | 0 .../inherit_graph_8.svg | 0 .../inherit_graph_9.map | 0 .../inherit_graph_9.md5 | 0 .../inherit_graph_9.svg | 0 {docs/html => html}/inherits.html | 30 +- {docs/html => html}/jquery.js | 0 {docs/html => html}/main_8cpp_source.html | 250 +- {docs/html => html}/menu.js | 0 {docs/html => html}/menudata.js | 47 +- {docs/html => html}/nav_f.png | Bin {docs/html => html}/nav_g.png | Bin {docs/html => html}/nav_h.png | Bin {docs/html => html}/navtree.css | 0 {docs/html => html}/navtree.js | 0 {docs/html => html}/navtreedata.js | 5 +- html/navtreeindex0.js | 253 ++ html/navtreeindex1.js | 84 + {docs/html => html}/open.png | Bin {docs/html => html}/resize.js | 0 {docs/html => html}/search/all_0.html | 0 html/search/all_0.js | 11 + {docs/html => html}/search/all_1.html | 0 html/search/all_1.js | 6 + {docs/html => html}/search/all_10.html | 0 html/search/all_10.js | 6 + {docs/html => html}/search/all_11.html | 0 html/search/all_11.js | 4 + {docs/html => html}/search/all_12.html | 0 .../search/all_11.js => html/search/all_12.js | 8 +- {docs/html => html}/search/all_13.html | 0 html/search/all_13.js | 6 + {docs/html => html}/search/all_14.html | 0 html/search/all_14.js | 4 + {docs/html => html}/search/all_15.html | 0 html/search/all_15.js | 5 + {docs/html => html}/search/all_16.html | 0 .../variables_13.js => html/search/all_16.js | 2 +- html/search/all_17.html | 37 + html/search/all_17.js | 8 + {docs/html => html}/search/all_2.html | 0 html/search/all_2.js | 7 + {docs/html => html}/search/all_3.html | 0 html/search/all_3.js | 13 + {docs/html => html}/search/all_4.html | 0 {docs/html => html}/search/all_4.js | 2 +- {docs/html => html}/search/all_5.html | 0 html/search/all_5.js | 6 + {docs/html => html}/search/all_6.html | 0 html/search/all_6.js | 47 + {docs/html => html}/search/all_7.html | 0 html/search/all_7.js | 11 + {docs/html => html}/search/all_8.html | 0 {docs/html => html}/search/all_8.js | 4 +- {docs/html => html}/search/all_9.html | 0 html/search/all_9.js | 6 + {docs/html => html}/search/all_a.html | 0 {docs/html => html}/search/all_a.js | 4 +- {docs/html => html}/search/all_b.html | 0 .../functions_1.js => html/search/all_b.js | 2 +- {docs/html => html}/search/all_c.html | 0 html/search/all_c.js | 8 + {docs/html => html}/search/all_d.html | 0 html/search/all_d.js | 28 + {docs/html => html}/search/all_e.html | 0 html/search/all_e.js | 11 + {docs/html => html}/search/all_f.html | 0 html/search/all_f.js | 27 + {docs/html => html}/search/classes_0.html | 0 html/search/classes_0.js | 4 + {docs/html => html}/search/classes_1.html | 0 html/search/classes_1.js | 4 + {docs/html => html}/search/classes_2.html | 0 html/search/classes_2.js | 5 + {docs/html => html}/search/classes_3.html | 0 html/search/classes_3.js | 5 + {docs/html => html}/search/classes_4.html | 0 html/search/classes_4.js | 4 + {docs/html => html}/search/classes_5.html | 0 html/search/classes_5.js | 9 + {docs/html => html}/search/classes_6.html | 0 html/search/classes_6.js | 6 + {docs/html => html}/search/classes_7.html | 0 html/search/classes_7.js | 5 + {docs/html => html}/search/classes_8.html | 0 html/search/classes_8.js | 4 + {docs/html => html}/search/classes_9.html | 0 html/search/classes_9.js | 6 + {docs/html => html}/search/close.svg | 0 {docs/html => html}/search/functions_0.html | 0 html/search/functions_0.js | 8 + {docs/html => html}/search/functions_1.html | 0 html/search/functions_1.js | 4 + {docs/html => html}/search/functions_10.html | 0 {docs/html => html}/search/functions_10.js | 0 {docs/html => html}/search/functions_2.html | 0 html/search/functions_2.js | 12 + {docs/html => html}/search/functions_3.html | 0 html/search/functions_3.js | 4 + {docs/html => html}/search/functions_4.html | 0 html/search/functions_4.js | 43 + {docs/html => html}/search/functions_5.html | 0 html/search/functions_5.js | 10 + {docs/html => html}/search/functions_6.html | 0 html/search/functions_6.js | 5 + {docs/html => html}/search/functions_7.html | 0 {docs/html => html}/search/functions_7.js | 2 +- {docs/html => html}/search/functions_8.html | 0 {docs/html => html}/search/functions_8.js | 2 +- {docs/html => html}/search/functions_9.html | 0 html/search/functions_9.js | 24 + {docs/html => html}/search/functions_a.html | 0 html/search/functions_a.js | 6 + {docs/html => html}/search/functions_b.html | 0 html/search/functions_b.js | 22 + {docs/html => html}/search/functions_c.html | 0 html/search/functions_c.js | 4 + {docs/html => html}/search/functions_d.html | 0 {docs/html => html}/search/functions_d.js | 4 +- {docs/html => html}/search/functions_e.html | 0 html/search/functions_e.js | 8 + {docs/html => html}/search/functions_f.html | 0 {docs/html => html}/search/functions_f.js | 0 {docs/html => html}/search/mag_sel.svg | 0 {docs/html => html}/search/nomatches.html | 0 {docs/html => html}/search/related_0.html | 0 {docs/html => html}/search/related_0.js | 2 +- {docs/html => html}/search/search.css | 0 {docs/html => html}/search/search.js | 0 {docs/html => html}/search/search_l.png | Bin {docs/html => html}/search/search_m.png | Bin {docs/html => html}/search/search_r.png | Bin {docs/html => html}/search/searchdata.js | 4 +- {docs/html => html}/search/variables_0.html | 0 html/search/variables_0.js | 6 + {docs/html => html}/search/variables_1.html | 0 html/search/variables_1.js | 6 + {docs/html => html}/search/variables_10.html | 0 html/search/variables_10.js | 4 + {docs/html => html}/search/variables_11.html | 0 html/search/variables_11.js | 5 + {docs/html => html}/search/variables_12.html | 0 html/search/variables_12.js | 6 + {docs/html => html}/search/variables_13.html | 0 html/search/variables_13.js | 4 + html/search/variables_14.html | 37 + html/search/variables_14.js | 5 + html/search/variables_15.html | 37 + .../all_15.js => html/search/variables_15.js | 2 +- {docs/html => html}/search/variables_2.html | 0 html/search/variables_2.js | 6 + {docs/html => html}/search/variables_3.html | 0 html/search/variables_3.js | 4 + {docs/html => html}/search/variables_4.html | 0 html/search/variables_4.js | 6 + {docs/html => html}/search/variables_5.html | 0 html/search/variables_5.js | 7 + {docs/html => html}/search/variables_6.html | 0 html/search/variables_6.js | 4 + {docs/html => html}/search/variables_7.html | 0 {docs/html => html}/search/variables_7.js | 4 +- {docs/html => html}/search/variables_8.html | 0 {docs/html => html}/search/variables_8.js | 2 +- {docs/html => html}/search/variables_9.html | 0 html/search/variables_9.js | 4 + {docs/html => html}/search/variables_a.html | 0 {docs/html => html}/search/variables_a.js | 2 +- {docs/html => html}/search/variables_b.html | 0 html/search/variables_b.js | 6 + {docs/html => html}/search/variables_c.html | 0 html/search/variables_c.js | 6 + {docs/html => html}/search/variables_d.html | 0 html/search/variables_d.js | 8 + {docs/html => html}/search/variables_e.html | 0 html/search/variables_e.js | 8 + {docs/html => html}/search/variables_f.html | 0 html/search/variables_f.js | 5 + {docs/html => html}/splitbar.png | Bin .../structPathPoint-members.html | 10 +- {docs/html => html}/structPathPoint.html | 29 +- html/structPathPoint.js | 9 + .../structPathPoint__coll__graph.map | 2 +- html/structPathPoint__coll__graph.md5 | 1 + .../structPathPoint__coll__graph.svg | 17 +- {docs/html => html}/svgpan.js | 0 {docs/html => html}/sync_off.png | Bin {docs/html => html}/sync_on.png | Bin {docs/html => html}/tab_a.png | Bin {docs/html => html}/tab_b.png | Bin {docs/html => html}/tab_h.png | Bin {docs/html => html}/tab_s.png | Bin {docs/html => html}/tabs.css | 0 .../html => html}/toggle-alternative-theme.js | 0 646 files changed, 18504 insertions(+), 8568 deletions(-) delete mode 100644 docs/html/Parser_8cpp_source.html delete mode 100644 docs/html/Parser_8hpp_source.html delete mode 100644 docs/html/Renderer_8cpp_source.html delete mode 100644 docs/html/classCircle__coll__graph.map delete mode 100644 docs/html/classCircle__coll__graph.md5 delete mode 100644 docs/html/classCircle__coll__graph.svg delete mode 100644 docs/html/classEll__coll__graph.map delete mode 100644 docs/html/classEll__coll__graph.md5 delete mode 100644 docs/html/classEll__coll__graph.svg delete mode 100644 docs/html/classGroup__coll__graph.map delete mode 100644 docs/html/classGroup__coll__graph.md5 delete mode 100644 docs/html/classGroup__coll__graph.svg delete mode 100644 docs/html/classLine__coll__graph.map delete mode 100644 docs/html/classLine__coll__graph.md5 delete mode 100644 docs/html/classParser.html delete mode 100644 docs/html/classParser.js delete mode 100644 docs/html/classParser__coll__graph.map delete mode 100644 docs/html/classParser__coll__graph.md5 delete mode 100644 docs/html/classParser__coll__graph.svg delete mode 100644 docs/html/classPath__coll__graph.map delete mode 100644 docs/html/classPath__coll__graph.md5 delete mode 100644 docs/html/classPath__coll__graph.svg delete mode 100644 docs/html/classPlygon.js delete mode 100644 docs/html/classPlygon__coll__graph.map delete mode 100644 docs/html/classPlygon__coll__graph.md5 delete mode 100644 docs/html/classPlygon__coll__graph.svg delete mode 100644 docs/html/classPlyline.js delete mode 100644 docs/html/classPlyline__coll__graph.map delete mode 100644 docs/html/classPlyline__coll__graph.md5 delete mode 100644 docs/html/classPlyline__coll__graph.svg delete mode 100644 docs/html/classPolyShape__coll__graph.map delete mode 100644 docs/html/classPolyShape__coll__graph.md5 delete mode 100644 docs/html/classPolyShape__coll__graph.svg delete mode 100644 docs/html/classPolyShape__inherit__graph.md5 delete mode 100644 docs/html/classRect__coll__graph.map delete mode 100644 docs/html/classRect__coll__graph.md5 delete mode 100644 docs/html/classRect__coll__graph.svg delete mode 100644 docs/html/classRect__inherit__graph.map delete mode 100644 docs/html/classRect__inherit__graph.md5 delete mode 100644 docs/html/classRenderer.html delete mode 100644 docs/html/classSVGElement__coll__graph.map delete mode 100644 docs/html/classSVGElement__coll__graph.md5 delete mode 100644 docs/html/classSVGElement__coll__graph.svg delete mode 100644 docs/html/classSVGElement__inherit__graph.md5 delete mode 100644 docs/html/classText__coll__graph.map delete mode 100644 docs/html/classText__coll__graph.md5 delete mode 100644 docs/html/classText__coll__graph.svg delete mode 100644 docs/html/classViewer__coll__graph.map delete mode 100644 docs/html/classViewer__coll__graph.md5 delete mode 100644 docs/html/classViewer__coll__graph.svg delete mode 100644 docs/html/functions.html delete mode 100644 docs/html/inherit_graph_4.md5 delete mode 100644 docs/html/navtreeindex0.js delete mode 100644 docs/html/search/all_0.js delete mode 100644 docs/html/search/all_1.js delete mode 100644 docs/html/search/all_10.js delete mode 100644 docs/html/search/all_12.js delete mode 100644 docs/html/search/all_13.js delete mode 100644 docs/html/search/all_14.js delete mode 100644 docs/html/search/all_16.js delete mode 100644 docs/html/search/all_2.js delete mode 100644 docs/html/search/all_3.js delete mode 100644 docs/html/search/all_5.js delete mode 100644 docs/html/search/all_6.js delete mode 100644 docs/html/search/all_7.js delete mode 100644 docs/html/search/all_9.js delete mode 100644 docs/html/search/all_b.js delete mode 100644 docs/html/search/all_c.js delete mode 100644 docs/html/search/all_d.js delete mode 100644 docs/html/search/all_e.js delete mode 100644 docs/html/search/all_f.js delete mode 100644 docs/html/search/classes_0.js delete mode 100644 docs/html/search/classes_1.js delete mode 100644 docs/html/search/classes_2.js delete mode 100644 docs/html/search/classes_3.js delete mode 100644 docs/html/search/classes_4.js delete mode 100644 docs/html/search/classes_5.js delete mode 100644 docs/html/search/classes_6.js delete mode 100644 docs/html/search/classes_7.js delete mode 100644 docs/html/search/classes_8.js delete mode 100644 docs/html/search/classes_9.js delete mode 100644 docs/html/search/functions_0.js delete mode 100644 docs/html/search/functions_2.js delete mode 100644 docs/html/search/functions_3.js delete mode 100644 docs/html/search/functions_4.js delete mode 100644 docs/html/search/functions_5.js delete mode 100644 docs/html/search/functions_6.js delete mode 100644 docs/html/search/functions_9.js delete mode 100644 docs/html/search/functions_a.js delete mode 100644 docs/html/search/functions_b.js delete mode 100644 docs/html/search/functions_c.js delete mode 100644 docs/html/search/functions_e.js delete mode 100644 docs/html/search/variables_0.js delete mode 100644 docs/html/search/variables_1.js delete mode 100644 docs/html/search/variables_10.js delete mode 100644 docs/html/search/variables_11.js delete mode 100644 docs/html/search/variables_12.js delete mode 100644 docs/html/search/variables_2.js delete mode 100644 docs/html/search/variables_3.js delete mode 100644 docs/html/search/variables_4.js delete mode 100644 docs/html/search/variables_5.js delete mode 100644 docs/html/search/variables_6.js delete mode 100644 docs/html/search/variables_9.js delete mode 100644 docs/html/search/variables_b.js delete mode 100644 docs/html/search/variables_c.js delete mode 100644 docs/html/search/variables_d.js delete mode 100644 docs/html/search/variables_e.js delete mode 100644 docs/html/search/variables_f.js delete mode 100644 docs/html/structPathPoint.js delete mode 100644 docs/html/structPathPoint__coll__graph.md5 delete mode 100644 docs/latex/code_documentation.pdf create mode 100644 docs/latex/refman.pdf rename {docs/html => html}/Circle_8cpp_source.html (99%) rename {docs/html => html}/Circle_8hpp_source.html (98%) rename {docs/html => html}/Color_8cpp_source.html (99%) rename {docs/html => html}/Color_8hpp_source.html (99%) rename {docs/html => html}/Ellipse_8cpp_source.html (73%) rename {docs/html => html}/Ellipse_8hpp_source.html (86%) create mode 100644 html/Gradient_8cpp_source.html create mode 100644 html/Gradient_8hpp_source.html rename {docs/html => html}/Graphics_8hpp_source.html (95%) rename {docs/html => html}/Group_8cpp_source.html (89%) rename {docs/html => html}/Group_8hpp_source.html (81%) rename {docs/html => html}/Line_8cpp_source.html (75%) rename {docs/html => html}/Line_8hpp_source.html (97%) create mode 100644 html/LinearGradient_8cpp_source.html create mode 100644 html/LinearGradient_8hpp_source.html create mode 100644 html/Parser_8cpp_source.html create mode 100644 html/Parser_8hpp_source.html rename {docs/html => html}/Path_8cpp_source.html (71%) rename {docs/html => html}/Path_8hpp_source.html (80%) rename {docs/html => html}/PolyShape_8cpp_source.html (59%) rename {docs/html => html}/PolyShape_8hpp_source.html (72%) rename {docs/html => html}/Polygon_8cpp_source.html (81%) rename {docs/html => html}/Polygon_8hpp_source.html (80%) rename {docs/html => html}/Polyline_8cpp_source.html (80%) rename {docs/html => html}/Polyline_8hpp_source.html (80%) create mode 100644 html/RadialGradient_8cpp_source.html create mode 100644 html/RadialGradient_8hpp_source.html rename {docs/html => html}/Rect_8cpp_source.html (71%) rename {docs/html => html}/Rect_8hpp_source.html (93%) create mode 100644 html/Renderer_8cpp_source.html rename {docs/html => html}/Renderer_8hpp_source.html (84%) rename {docs/html => html}/SVGElement_8cpp_source.html (66%) rename {docs/html => html}/SVGElement_8hpp_source.html (66%) rename {docs/html => html}/Shape_8cpp_source.html (100%) rename {docs/html => html}/Shape_8hpp_source.html (100%) create mode 100644 html/Stop_8cpp_source.html create mode 100644 html/Stop_8hpp_source.html rename {docs/html => html}/Text_8cpp_source.html (76%) rename {docs/html => html}/Text_8hpp_source.html (88%) rename {docs/html => html}/Vector2D_8hpp_source.html (99%) rename {docs/html => html}/Viewer_8cpp_source.html (90%) rename {docs/html => html}/Viewer_8hpp_source.html (81%) rename {docs/html => html}/annotated.html (83%) rename {docs/html => html}/annotated_dup.js (78%) rename {docs/html => html}/bc_s.png (100%) rename {docs/html => html}/bdwn.png (100%) rename docs/html/classEll-members.html => html/classCircle-members.html (73%) rename {docs/html => html}/classCircle.html (86%) rename {docs/html => html}/classCircle.js (100%) create mode 100644 html/classCircle__coll__graph.map create mode 100644 html/classCircle__coll__graph.md5 rename {docs/html => html}/classCircle__coll__graph.png (100%) create mode 100644 html/classCircle__coll__graph.svg rename {docs/html => html}/classCircle__inherit__graph.map (100%) rename {docs/html => html}/classCircle__inherit__graph.md5 (100%) rename {docs/html => html}/classCircle__inherit__graph.png (100%) rename {docs/html => html}/classCircle__inherit__graph.svg (100%) rename docs/html/classCircle-members.html => html/classEll-members.html (75%) rename {docs/html => html}/classEll.html (75%) rename {docs/html => html}/classEll.js (74%) create mode 100644 html/classEll__coll__graph.map create mode 100644 html/classEll__coll__graph.md5 create mode 100644 html/classEll__coll__graph.svg rename {docs/html => html}/classEll__inherit__graph.map (100%) rename {docs/html => html}/classEll__inherit__graph.md5 (100%) rename {docs/html => html}/classEll__inherit__graph.svg (100%) rename {docs/html => html}/classEllipse-members.html (100%) rename {docs/html => html}/classEllipse.html (100%) rename {docs/html => html}/classEllipse.js (100%) rename {docs/html => html}/classEllipse__coll__graph.map (100%) rename {docs/html => html}/classEllipse__coll__graph.md5 (100%) rename {docs/html => html}/classEllipse__coll__graph.png (100%) rename {docs/html => html}/classEllipse__coll__graph.svg (100%) rename {docs/html => html}/classEllipse__inherit__graph.map (100%) rename {docs/html => html}/classEllipse__inherit__graph.md5 (100%) rename {docs/html => html}/classEllipse__inherit__graph.png (100%) rename {docs/html => html}/classEllipse__inherit__graph.svg (100%) create mode 100644 html/classGradient-members.html create mode 100644 html/classGradient.html create mode 100644 html/classGradient.js create mode 100644 html/classGradient__inherit__graph.map create mode 100644 html/classGradient__inherit__graph.md5 create mode 100644 html/classGradient__inherit__graph.svg rename {docs/html => html}/classGroup-members.html (68%) rename {docs/html => html}/classGroup.html (79%) rename {docs/html => html}/classGroup.js (100%) create mode 100644 html/classGroup__coll__graph.map create mode 100644 html/classGroup__coll__graph.md5 create mode 100644 html/classGroup__coll__graph.svg rename {docs/html => html}/classGroup__inherit__graph.map (100%) rename {docs/html => html}/classGroup__inherit__graph.md5 (100%) rename {docs/html => html}/classGroup__inherit__graph.svg (100%) rename docs/html/classSVGElement-members.html => html/classLine-members.html (76%) rename {docs/html => html}/classLine.html (80%) rename {docs/html => html}/classLine.js (100%) create mode 100644 html/classLine__coll__graph.map create mode 100644 html/classLine__coll__graph.md5 rename {docs/html => html}/classLine__coll__graph.png (100%) create mode 100644 html/classLine__coll__graph.svg rename {docs/html => html}/classLine__inherit__graph.map (100%) rename {docs/html => html}/classLine__inherit__graph.md5 (100%) rename {docs/html => html}/classLine__inherit__graph.png (100%) rename {docs/html => html}/classLine__inherit__graph.svg (100%) create mode 100644 html/classLinearGradient-members.html create mode 100644 html/classLinearGradient.html create mode 100644 html/classLinearGradient.js create mode 100644 html/classLinearGradient__coll__graph.map create mode 100644 html/classLinearGradient__coll__graph.md5 create mode 100644 html/classLinearGradient__coll__graph.svg create mode 100644 html/classLinearGradient__inherit__graph.map create mode 100644 html/classLinearGradient__inherit__graph.md5 create mode 100644 html/classLinearGradient__inherit__graph.svg rename {docs/html => html}/classParser-members.html (59%) create mode 100644 html/classParser.html create mode 100644 html/classParser.js create mode 100644 html/classParser__coll__graph.map create mode 100644 html/classParser__coll__graph.md5 rename {docs/html => html}/classParser__coll__graph.png (100%) create mode 100644 html/classParser__coll__graph.svg rename {docs/html => html}/classPath-members.html (72%) rename {docs/html => html}/classPath.html (82%) rename {docs/html => html}/classPath.js (100%) create mode 100644 html/classPath__coll__graph.map create mode 100644 html/classPath__coll__graph.md5 create mode 100644 html/classPath__coll__graph.svg rename {docs/html => html}/classPath__inherit__graph.map (100%) rename {docs/html => html}/classPath__inherit__graph.md5 (100%) rename {docs/html => html}/classPath__inherit__graph.svg (100%) rename docs/html/classRect-members.html => html/classPlygon-members.html (69%) rename {docs/html => html}/classPlygon.html (81%) create mode 100644 html/classPlygon.js create mode 100644 html/classPlygon__coll__graph.map create mode 100644 html/classPlygon__coll__graph.md5 create mode 100644 html/classPlygon__coll__graph.svg rename {docs/html => html}/classPlygon__inherit__graph.map (100%) rename {docs/html => html}/classPlygon__inherit__graph.md5 (100%) rename {docs/html => html}/classPlygon__inherit__graph.svg (100%) rename {docs/html => html}/classPlyline-members.html (67%) rename {docs/html => html}/classPlyline.html (81%) create mode 100644 html/classPlyline.js create mode 100644 html/classPlyline__coll__graph.map create mode 100644 html/classPlyline__coll__graph.md5 create mode 100644 html/classPlyline__coll__graph.svg rename {docs/html => html}/classPlyline__inherit__graph.map (100%) rename {docs/html => html}/classPlyline__inherit__graph.md5 (100%) rename {docs/html => html}/classPlyline__inherit__graph.svg (100%) rename {docs/html => html}/classPolyShape-members.html (76%) rename {docs/html => html}/classPolyShape.html (66%) rename {docs/html => html}/classPolyShape.js (54%) create mode 100644 html/classPolyShape__coll__graph.map create mode 100644 html/classPolyShape__coll__graph.md5 create mode 100644 html/classPolyShape__coll__graph.svg rename {docs/html => html}/classPolyShape__inherit__graph.map (63%) create mode 100644 html/classPolyShape__inherit__graph.md5 rename {docs/html => html}/classPolyShape__inherit__graph.svg (52%) rename {docs/html => html}/classPolygon-members.html (100%) rename {docs/html => html}/classPolygon.html (100%) rename {docs/html => html}/classPolygon.js (100%) rename {docs/html => html}/classPolygon__coll__graph.map (100%) rename {docs/html => html}/classPolygon__coll__graph.md5 (100%) rename {docs/html => html}/classPolygon__coll__graph.png (100%) rename {docs/html => html}/classPolygon__coll__graph.svg (100%) rename {docs/html => html}/classPolygon__inherit__graph.map (100%) rename {docs/html => html}/classPolygon__inherit__graph.md5 (100%) rename {docs/html => html}/classPolygon__inherit__graph.png (100%) rename {docs/html => html}/classPolygon__inherit__graph.svg (100%) rename {docs/html => html}/classPolyline-members.html (100%) rename {docs/html => html}/classPolyline.html (100%) rename {docs/html => html}/classPolyline.js (100%) rename {docs/html => html}/classPolyline__coll__graph.map (100%) rename {docs/html => html}/classPolyline__coll__graph.md5 (100%) rename {docs/html => html}/classPolyline__coll__graph.png (100%) rename {docs/html => html}/classPolyline__coll__graph.svg (100%) rename {docs/html => html}/classPolyline__inherit__graph.map (100%) rename {docs/html => html}/classPolyline__inherit__graph.md5 (100%) rename {docs/html => html}/classPolyline__inherit__graph.png (100%) rename {docs/html => html}/classPolyline__inherit__graph.svg (100%) create mode 100644 html/classRadialGradient-members.html create mode 100644 html/classRadialGradient.html create mode 100644 html/classRadialGradient.js create mode 100644 html/classRadialGradient__coll__graph.map create mode 100644 html/classRadialGradient__coll__graph.md5 create mode 100644 html/classRadialGradient__coll__graph.svg create mode 100644 html/classRadialGradient__inherit__graph.map create mode 100644 html/classRadialGradient__inherit__graph.md5 create mode 100644 html/classRadialGradient__inherit__graph.svg rename docs/html/classPlygon-members.html => html/classRect-members.html (62%) rename {docs/html => html}/classRect.html (78%) rename {docs/html => html}/classRect.js (100%) create mode 100644 html/classRect__coll__graph.map create mode 100644 html/classRect__coll__graph.md5 rename {docs/html => html}/classRect__coll__graph.png (100%) create mode 100644 html/classRect__coll__graph.svg create mode 100644 html/classRect__inherit__graph.map create mode 100644 html/classRect__inherit__graph.md5 rename {docs/html => html}/classRect__inherit__graph.png (100%) rename {docs/html => html}/classRect__inherit__graph.svg (51%) rename {docs/html => html}/classRenderer-members.html (83%) create mode 100644 html/classRenderer.html rename {docs/html => html}/classRenderer.js (82%) rename {docs/html => html}/classRenderer__coll__graph.map (100%) rename {docs/html => html}/classRenderer__coll__graph.md5 (100%) rename {docs/html => html}/classRenderer__coll__graph.svg (100%) rename docs/html/classLine-members.html => html/classSVGElement-members.html (81%) rename {docs/html => html}/classSVGElement.html (68%) rename {docs/html => html}/classSVGElement.js (77%) create mode 100644 html/classSVGElement__coll__graph.map create mode 100644 html/classSVGElement__coll__graph.md5 create mode 100644 html/classSVGElement__coll__graph.svg rename {docs/html => html}/classSVGElement__inherit__graph.map (80%) create mode 100644 html/classSVGElement__inherit__graph.md5 rename {docs/html => html}/classSVGElement__inherit__graph.svg (63%) rename {docs/html => html}/classShape-members.html (100%) rename {docs/html => html}/classShape.html (100%) rename {docs/html => html}/classShape.js (100%) rename {docs/html => html}/classShape__inherit__graph.map (100%) rename {docs/html => html}/classShape__inherit__graph.md5 (100%) rename {docs/html => html}/classShape__inherit__graph.png (100%) rename {docs/html => html}/classShape__inherit__graph.svg (100%) create mode 100644 html/classStop-members.html create mode 100644 html/classStop.html create mode 100644 html/classStop.js create mode 100644 html/classStop__coll__graph.map create mode 100644 html/classStop__coll__graph.md5 create mode 100644 html/classStop__coll__graph.svg rename {docs/html => html}/classText-members.html (72%) rename {docs/html => html}/classText.html (86%) rename {docs/html => html}/classText.js (100%) create mode 100644 html/classText__coll__graph.map create mode 100644 html/classText__coll__graph.md5 rename {docs/html => html}/classText__coll__graph.png (100%) rename docs/html/classLine__coll__graph.svg => html/classText__coll__graph.svg (55%) rename {docs/html => html}/classText__inherit__graph.map (100%) rename {docs/html => html}/classText__inherit__graph.md5 (100%) rename {docs/html => html}/classText__inherit__graph.png (100%) rename {docs/html => html}/classText__inherit__graph.svg (100%) rename {docs/html => html}/classVector2D-members.html (99%) rename {docs/html => html}/classVector2D.html (99%) rename {docs/html => html}/classVector2D.js (100%) rename {docs/html => html}/classViewer-members.html (68%) rename {docs/html => html}/classViewer.html (90%) rename {docs/html => html}/classViewer.js (90%) create mode 100644 html/classViewer__coll__graph.map create mode 100644 html/classViewer__coll__graph.md5 rename {docs/html => html}/classViewer__coll__graph.png (100%) create mode 100644 html/classViewer__coll__graph.svg rename {docs/html => html}/classes.html (93%) rename {docs/html => html}/classmColor-members.html (99%) rename {docs/html => html}/classmColor.html (99%) rename {docs/html => html}/classmColor.js (100%) rename {docs/html => html}/classmColor__coll__graph.map (100%) rename {docs/html => html}/classmColor__coll__graph.md5 (100%) rename {docs/html => html}/classmColor__coll__graph.svg (100%) rename {docs/html => html}/closed.png (100%) rename {docs/html => html}/custom-alternative.css (100%) rename {docs/html => html}/custom.css (100%) rename {docs/html => html}/dir_560415a5d2bc4999842279f4fc1debef.html (99%) rename {docs/html => html}/dir_560415a5d2bc4999842279f4fc1debef.js (73%) rename {docs/html => html}/dir_68267d1309a1af8e8297ef4c3efbcdba.html (99%) rename {docs/html => html}/dir_68267d1309a1af8e8297ef4c3efbcdba.js (100%) rename {docs/html => html}/doc.png (100%) rename {docs/html => html}/doxygen-awesome-darkmode-toggle.js (100%) rename {docs/html => html}/doxygen-awesome-fragment-copy-button.js (100%) rename {docs/html => html}/doxygen-awesome-interactive-toc.js (100%) rename {docs/html => html}/doxygen-awesome-paragraph-link.js (100%) rename {docs/html => html}/doxygen-awesome-sidebar-only-darkmode-toggle.css (100%) rename {docs/html => html}/doxygen-awesome-sidebar-only.css (100%) rename {docs/html => html}/doxygen-awesome-tabs.js (100%) rename {docs/html => html}/doxygen-awesome.css (100%) rename {docs/html => html}/doxygen.css (100%) rename {docs/html => html}/doxygen.svg (100%) rename {docs/html => html}/dynsections.js (100%) rename {docs/html => html}/files.html (87%) rename {docs/html => html}/files_dup.js (100%) rename {docs/html => html}/folderclosed.png (100%) rename {docs/html => html}/folderopen.png (100%) create mode 100644 html/functions.html create mode 100644 html/functions_b.html create mode 100644 html/functions_c.html create mode 100644 html/functions_d.html create mode 100644 html/functions_dup.js create mode 100644 html/functions_e.html create mode 100644 html/functions_f.html rename {docs/html => html}/functions_func.html (77%) create mode 100644 html/functions_g.html create mode 100644 html/functions_h.html create mode 100644 html/functions_i.html create mode 100644 html/functions_l.html create mode 100644 html/functions_m.html create mode 100644 html/functions_n.html create mode 100644 html/functions_o.html create mode 100644 html/functions_p.html create mode 100644 html/functions_r.html rename {docs/html => html}/functions_rela.html (99%) create mode 100644 html/functions_s.html create mode 100644 html/functions_t.html create mode 100644 html/functions_u.html create mode 100644 html/functions_v.html rename {docs/html => html}/functions_vars.html (88%) create mode 100644 html/functions_w.html create mode 100644 html/functions_x.html create mode 100644 html/functions_y.html create mode 100644 html/functions_z.html create mode 100644 html/functions_~.html rename {docs/html => html}/graph_legend.html (99%) rename {docs/html => html}/graph_legend.md5 (100%) rename {docs/html => html}/graph_legend.png (100%) rename {docs/html => html}/graph_legend.svg (100%) rename {docs/html => html}/hierarchy.html (77%) rename {docs/html => html}/hierarchy.js (71%) rename {docs/html => html}/index.html (99%) create mode 100644 html/inherit_graph_0.map create mode 100644 html/inherit_graph_0.md5 rename {docs/html => html}/inherit_graph_0.png (100%) create mode 100644 html/inherit_graph_0.svg rename docs/html/inherit_graph_0.map => html/inherit_graph_1.map (100%) rename docs/html/inherit_graph_0.md5 => html/inherit_graph_1.md5 (100%) rename {docs/html => html}/inherit_graph_1.png (100%) rename docs/html/inherit_graph_0.svg => html/inherit_graph_1.svg (100%) rename docs/html/inherit_graph_1.map => html/inherit_graph_2.map (100%) rename docs/html/inherit_graph_1.md5 => html/inherit_graph_2.md5 (100%) rename {docs/html => html}/inherit_graph_2.png (100%) rename docs/html/inherit_graph_1.svg => html/inherit_graph_2.svg (100%) rename docs/html/inherit_graph_2.map => html/inherit_graph_3.map (100%) rename docs/html/inherit_graph_2.md5 => html/inherit_graph_3.md5 (100%) rename docs/html/inherit_graph_2.svg => html/inherit_graph_3.svg (100%) rename docs/html/inherit_graph_3.map => html/inherit_graph_4.map (100%) rename docs/html/inherit_graph_3.md5 => html/inherit_graph_4.md5 (100%) rename docs/html/inherit_graph_3.svg => html/inherit_graph_4.svg (100%) create mode 100644 html/inherit_graph_5.map create mode 100644 html/inherit_graph_5.md5 create mode 100644 html/inherit_graph_5.svg rename docs/html/inherit_graph_4.map => html/inherit_graph_6.map (79%) create mode 100644 html/inherit_graph_6.md5 rename docs/html/inherit_graph_4.svg => html/inherit_graph_6.svg (53%) rename docs/html/inherit_graph_5.map => html/inherit_graph_7.map (100%) rename docs/html/inherit_graph_5.md5 => html/inherit_graph_7.md5 (100%) rename docs/html/inherit_graph_5.svg => html/inherit_graph_7.svg (100%) rename docs/html/inherit_graph_6.map => html/inherit_graph_8.map (100%) rename docs/html/inherit_graph_6.md5 => html/inherit_graph_8.md5 (100%) rename docs/html/inherit_graph_6.svg => html/inherit_graph_8.svg (100%) rename docs/html/inherit_graph_7.map => html/inherit_graph_9.map (100%) rename docs/html/inherit_graph_7.md5 => html/inherit_graph_9.md5 (100%) rename docs/html/inherit_graph_7.svg => html/inherit_graph_9.svg (100%) rename {docs/html => html}/inherits.html (87%) rename {docs/html => html}/jquery.js (100%) rename {docs/html => html}/main_8cpp_source.html (64%) rename {docs/html => html}/menu.js (100%) rename {docs/html => html}/menudata.js (76%) rename {docs/html => html}/nav_f.png (100%) rename {docs/html => html}/nav_g.png (100%) rename {docs/html => html}/nav_h.png (100%) rename {docs/html => html}/navtree.css (100%) rename {docs/html => html}/navtree.js (100%) rename {docs/html => html}/navtreedata.js (93%) create mode 100644 html/navtreeindex0.js create mode 100644 html/navtreeindex1.js rename {docs/html => html}/open.png (100%) rename {docs/html => html}/resize.js (100%) rename {docs/html => html}/search/all_0.html (100%) create mode 100644 html/search/all_0.js rename {docs/html => html}/search/all_1.html (100%) create mode 100644 html/search/all_1.js rename {docs/html => html}/search/all_10.html (100%) create mode 100644 html/search/all_10.js rename {docs/html => html}/search/all_11.html (100%) create mode 100644 html/search/all_11.js rename {docs/html => html}/search/all_12.html (100%) rename docs/html/search/all_11.js => html/search/all_12.js (52%) rename {docs/html => html}/search/all_13.html (100%) create mode 100644 html/search/all_13.js rename {docs/html => html}/search/all_14.html (100%) create mode 100644 html/search/all_14.js rename {docs/html => html}/search/all_15.html (100%) create mode 100644 html/search/all_15.js rename {docs/html => html}/search/all_16.html (100%) rename docs/html/search/variables_13.js => html/search/all_16.js (50%) create mode 100644 html/search/all_17.html create mode 100644 html/search/all_17.js rename {docs/html => html}/search/all_2.html (100%) create mode 100644 html/search/all_2.js rename {docs/html => html}/search/all_3.html (100%) create mode 100644 html/search/all_3.js rename {docs/html => html}/search/all_4.html (100%) rename {docs/html => html}/search/all_4.js (54%) rename {docs/html => html}/search/all_5.html (100%) create mode 100644 html/search/all_5.js rename {docs/html => html}/search/all_6.html (100%) create mode 100644 html/search/all_6.js rename {docs/html => html}/search/all_7.html (100%) create mode 100644 html/search/all_7.js rename {docs/html => html}/search/all_8.html (100%) rename {docs/html => html}/search/all_8.js (68%) rename {docs/html => html}/search/all_9.html (100%) create mode 100644 html/search/all_9.js rename {docs/html => html}/search/all_a.html (100%) rename {docs/html => html}/search/all_a.js (72%) rename {docs/html => html}/search/all_b.html (100%) rename docs/html/search/functions_1.js => html/search/all_b.js (63%) rename {docs/html => html}/search/all_c.html (100%) create mode 100644 html/search/all_c.js rename {docs/html => html}/search/all_d.html (100%) create mode 100644 html/search/all_d.js rename {docs/html => html}/search/all_e.html (100%) create mode 100644 html/search/all_e.js rename {docs/html => html}/search/all_f.html (100%) create mode 100644 html/search/all_f.js rename {docs/html => html}/search/classes_0.html (100%) create mode 100644 html/search/classes_0.js rename {docs/html => html}/search/classes_1.html (100%) create mode 100644 html/search/classes_1.js rename {docs/html => html}/search/classes_2.html (100%) create mode 100644 html/search/classes_2.js rename {docs/html => html}/search/classes_3.html (100%) create mode 100644 html/search/classes_3.js rename {docs/html => html}/search/classes_4.html (100%) create mode 100644 html/search/classes_4.js rename {docs/html => html}/search/classes_5.html (100%) create mode 100644 html/search/classes_5.js rename {docs/html => html}/search/classes_6.html (100%) create mode 100644 html/search/classes_6.js rename {docs/html => html}/search/classes_7.html (100%) create mode 100644 html/search/classes_7.js rename {docs/html => html}/search/classes_8.html (100%) create mode 100644 html/search/classes_8.js rename {docs/html => html}/search/classes_9.html (100%) create mode 100644 html/search/classes_9.js rename {docs/html => html}/search/close.svg (100%) rename {docs/html => html}/search/functions_0.html (100%) create mode 100644 html/search/functions_0.js rename {docs/html => html}/search/functions_1.html (100%) create mode 100644 html/search/functions_1.js rename {docs/html => html}/search/functions_10.html (100%) rename {docs/html => html}/search/functions_10.js (100%) rename {docs/html => html}/search/functions_2.html (100%) create mode 100644 html/search/functions_2.js rename {docs/html => html}/search/functions_3.html (100%) create mode 100644 html/search/functions_3.js rename {docs/html => html}/search/functions_4.html (100%) create mode 100644 html/search/functions_4.js rename {docs/html => html}/search/functions_5.html (100%) create mode 100644 html/search/functions_5.js rename {docs/html => html}/search/functions_6.html (100%) create mode 100644 html/search/functions_6.js rename {docs/html => html}/search/functions_7.html (100%) rename {docs/html => html}/search/functions_7.js (81%) rename {docs/html => html}/search/functions_8.html (100%) rename {docs/html => html}/search/functions_8.js (71%) rename {docs/html => html}/search/functions_9.html (100%) create mode 100644 html/search/functions_9.js rename {docs/html => html}/search/functions_a.html (100%) create mode 100644 html/search/functions_a.js rename {docs/html => html}/search/functions_b.html (100%) create mode 100644 html/search/functions_b.js rename {docs/html => html}/search/functions_c.html (100%) create mode 100644 html/search/functions_c.js rename {docs/html => html}/search/functions_d.html (100%) rename {docs/html => html}/search/functions_d.js (77%) rename {docs/html => html}/search/functions_e.html (100%) create mode 100644 html/search/functions_e.js rename {docs/html => html}/search/functions_f.html (100%) rename {docs/html => html}/search/functions_f.js (100%) rename {docs/html => html}/search/mag_sel.svg (100%) rename {docs/html => html}/search/nomatches.html (100%) rename {docs/html => html}/search/related_0.html (100%) rename {docs/html => html}/search/related_0.js (52%) rename {docs/html => html}/search/search.css (100%) rename {docs/html => html}/search/search.js (100%) rename {docs/html => html}/search/search_l.png (100%) rename {docs/html => html}/search/search_m.png (100%) rename {docs/html => html}/search/search_r.png (100%) rename {docs/html => html}/search/searchdata.js (82%) rename {docs/html => html}/search/variables_0.html (100%) create mode 100644 html/search/variables_0.js rename {docs/html => html}/search/variables_1.html (100%) create mode 100644 html/search/variables_1.js rename {docs/html => html}/search/variables_10.html (100%) create mode 100644 html/search/variables_10.js rename {docs/html => html}/search/variables_11.html (100%) create mode 100644 html/search/variables_11.js rename {docs/html => html}/search/variables_12.html (100%) create mode 100644 html/search/variables_12.js rename {docs/html => html}/search/variables_13.html (100%) create mode 100644 html/search/variables_13.js create mode 100644 html/search/variables_14.html create mode 100644 html/search/variables_14.js create mode 100644 html/search/variables_15.html rename docs/html/search/all_15.js => html/search/variables_15.js (50%) rename {docs/html => html}/search/variables_2.html (100%) create mode 100644 html/search/variables_2.js rename {docs/html => html}/search/variables_3.html (100%) create mode 100644 html/search/variables_3.js rename {docs/html => html}/search/variables_4.html (100%) create mode 100644 html/search/variables_4.js rename {docs/html => html}/search/variables_5.html (100%) create mode 100644 html/search/variables_5.js rename {docs/html => html}/search/variables_6.html (100%) create mode 100644 html/search/variables_6.js rename {docs/html => html}/search/variables_7.html (100%) rename {docs/html => html}/search/variables_7.js (68%) rename {docs/html => html}/search/variables_8.html (100%) rename {docs/html => html}/search/variables_8.js (53%) rename {docs/html => html}/search/variables_9.html (100%) create mode 100644 html/search/variables_9.js rename {docs/html => html}/search/variables_a.html (100%) rename {docs/html => html}/search/variables_a.js (52%) rename {docs/html => html}/search/variables_b.html (100%) create mode 100644 html/search/variables_b.js rename {docs/html => html}/search/variables_c.html (100%) create mode 100644 html/search/variables_c.js rename {docs/html => html}/search/variables_d.html (100%) create mode 100644 html/search/variables_d.js rename {docs/html => html}/search/variables_e.html (100%) create mode 100644 html/search/variables_e.js rename {docs/html => html}/search/variables_f.html (100%) create mode 100644 html/search/variables_f.js rename {docs/html => html}/splitbar.png (100%) rename {docs/html => html}/structPathPoint-members.html (83%) rename {docs/html => html}/structPathPoint.html (80%) create mode 100644 html/structPathPoint.js rename {docs/html => html}/structPathPoint__coll__graph.map (77%) create mode 100644 html/structPathPoint__coll__graph.md5 rename {docs/html => html}/structPathPoint__coll__graph.svg (62%) rename {docs/html => html}/svgpan.js (100%) rename {docs/html => html}/sync_off.png (100%) rename {docs/html => html}/sync_on.png (100%) rename {docs/html => html}/tab_a.png (100%) rename {docs/html => html}/tab_b.png (100%) rename {docs/html => html}/tab_h.png (100%) rename {docs/html => html}/tab_s.png (100%) rename {docs/html => html}/tabs.css (100%) rename {docs/html => html}/toggle-alternative-theme.js (100%) diff --git a/.gitignore b/.gitignore index 6faf2c73..84e59790 100644 --- a/.gitignore +++ b/.gitignore @@ -30,9 +30,12 @@ *.out *.app *.bat +*.bak + build svg-reader external/samples/gradient -!docs/latex/code_documentation.pdf +docs/latex/* +!docs/latex/refman.pdf *.json *.jar diff --git a/Doxyfile b/Doxyfile index 29fde6a6..24dedce9 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "svg-reader" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.2 +PROJECT_NUMBER = 0.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/docs/html/Parser_8cpp_source.html b/docs/html/Parser_8cpp_source.html deleted file mode 100644 index 14c6e5c8..00000000 --- a/docs/html/Parser_8cpp_source.html +++ /dev/null @@ -1,723 +0,0 @@ - - - - - - - - - - - - - - - - - - -svg-reader: src/Parser.cpp Source File - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
svg-reader -  0.2 -
-
Parse and render SVG files, handle user interactions.
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Parser.cpp
-
-
-
1 #include "Parser.hpp"
-
2 
-
3 #include <algorithm>
-
4 #include <cstring>
-
5 #include <fstream>
-
6 #include <iostream>
-
7 #include <sstream>
-
8 
-
9 Parser *Parser::instance = nullptr;
-
10 
-
11 namespace {
-
12  auto getHexColor = [](std::string color) -> mColor {
-
13  std::stringstream ss;
-
14  int pos = color.find("#");
-
15  // handle 3 digit hex color
-
16  if (color.size() < 5 || color[pos + 4] == ' ') {
-
17  ss << std::hex << color.substr(pos + 1, 1) << " "
-
18  << color.substr(pos + 2, 1) << " " << color.substr(pos + 3, 1);
-
19  int r, g, b;
-
20  ss >> r >> g >> b;
-
21  r = r * 16 + r;
-
22  g = g * 16 + g;
-
23  b = b * 16 + b;
-
24  return mColor(r, g, b, 255);
-
25  } else if (color.size() < 6 || color[pos + 5] == ' ') {
-
26  ss << std::hex << color.substr(pos + 1, 1) << " "
-
27  << color.substr(pos + 2, 1) << " " << color.substr(pos + 3, 1)
-
28  << color.substr(pos + 4, 1);
-
29  int r, g, b, a;
-
30  ss >> r >> g >> b >> a;
-
31  r = r * 16 + r;
-
32  g = g * 16 + g;
-
33  b = b * 16 + b;
-
34  a = a * 16 + a;
-
35  return mColor(r, g, b, a);
-
36  } else {
-
37  ss << std::hex << color.substr(pos + 1, 2) << " "
-
38  << color.substr(pos + 3, 2) << " " << color.substr(pos + 5, 2);
-
39  int r, g, b;
-
40  ss >> r >> g >> b;
-
41  if (color[pos + 7] != '\0' && color[pos + 7] != ' ') {
-
42  std::stringstream ss;
-
43  ss << std::hex << color.substr(pos + 7, 2);
-
44  int a;
-
45  ss >> a;
-
46  return mColor(r, g, b, a);
-
47  }
-
48  return mColor(r, g, b, 255);
-
49  }
-
50  };
-
51 
-
52  auto getRgbColor = [](std::string color) -> mColor {
-
53  int r, g, b;
-
54  float a = 1;
-
55  sscanf(color.c_str(), "rgb(%d,%d,%d,%f)", &r, &g, &b, &a);
-
56  return mColor(r, g, b, 255 * a);
-
57  };
-
58 
-
59  std::string removeExtraSpaces(std::string input) {
-
60  input.erase(std::remove(input.begin(), input.end(), '\t'), input.end());
-
61  input.erase(std::remove(input.begin(), input.end(), '\n'), input.end());
-
62  std::string result;
-
63  bool spaceDetected = false;
-
64  bool firstSpace = true;
-
65  for (int i = 0; i < input.size(); i++) {
-
66  if (input[i] == ' ') {
-
67  if (!spaceDetected) {
-
68  if (!firstSpace)
-
69  result.push_back(input[i]);
-
70  else
-
71  firstSpace = false;
-
72  spaceDetected = true;
-
73  }
-
74  } else {
-
75  result.push_back(input[i]);
-
76  firstSpace = false;
-
77  spaceDetected = false;
-
78  }
-
79  }
-
80 
-
81  if (!result.empty() && result.back() == ' ') {
-
82  result.pop_back();
-
83  }
-
84 
-
85  return result;
-
86  }
-
87 
-
88  void removeRedundantSpaces(std::string &svgPathString) {
-
89  int index = 0;
-
90  while (index < svgPathString.size()) {
-
91  if ((index == 0 || index == svgPathString.size() - 1) &&
-
92  svgPathString[index] == ' ') {
-
93  svgPathString.erase(index, 1);
-
94  } else if (svgPathString[index] == ' ' &&
-
95  svgPathString[index - 1] == ' ') {
-
96  svgPathString.erase(index, 1);
-
97  } else {
-
98  index++;
-
99  }
-
100  }
-
101  }
-
102 
-
103  void insertSpaceBeforeEachLetter(std::string &svgPathString) {
-
104  std::string result;
-
105  for (int index = 0; index < svgPathString.size(); index++) {
-
106  if (std::isalpha(svgPathString[index])) {
-
107  result += " ";
-
108  result += svgPathString[index];
-
109  result += " ";
-
110  } else if (svgPathString[index] == '-') {
-
111  result += " ";
-
112  result += svgPathString[index];
-
113  } else {
-
114  result += svgPathString[index];
-
115  }
-
116  }
-
117  svgPathString = result;
-
118  }
-
119 
-
120  void formatSvgPathString(std::string &svgPathString) {
-
121  std::replace(svgPathString.begin(), svgPathString.end(), '\t', ' ');
-
122  std::replace(svgPathString.begin(), svgPathString.end(), '\n', ' ');
-
123  insertSpaceBeforeEachLetter(svgPathString);
-
124  std::replace(svgPathString.begin(), svgPathString.end(), ',', ' ');
-
125  removeRedundantSpaces(svgPathString);
-
126  }
-
127 } // namespace
-
128 
-
129 Parser *Parser::getInstance(const std::string &file_name) {
-
130  if (instance == nullptr) {
-
131  instance = new Parser(file_name);
-
132  }
-
133  return instance;
-
134 }
-
135 
-
136 Parser::Parser(const std::string &file_name) {
-
137  root = parseElements(file_name);
-
138 }
-
139 
-
140 Group *Parser::getRoot() { return dynamic_cast< Group * >(root); }
-
141 
-
142 Attributes xmlToString(xml_attribute<> *attribute) {
-
143  Attributes attributes;
-
144  while (attribute) {
-
145  attributes.push_back(
-
146  std::make_pair(attribute->name(), attribute->value()));
-
147  attribute = attribute->next_attribute();
-
148  }
-
149  return attributes;
-
150 }
-
151 
-
152 SVGElement *Parser::parseElements(std::string file_name) {
-
153  xml_document<> doc;
-
154  std::ifstream file(file_name);
-
155  std::vector< char > buffer((std::istreambuf_iterator< char >(file)),
-
156  std::istreambuf_iterator< char >());
-
157  buffer.push_back('\0');
-
158  doc.parse< 0 >(&buffer[0]);
-
159 
-
160  xml_node<> *svg = doc.first_node();
-
161  xml_node<> *node = svg->first_node();
-
162  xml_node<> *prev = NULL;
-
163 
-
164  SVGElement *root = new Group();
-
165  SVGElement *current = root;
-
166 
-
167  while (node) {
-
168  if (std::string(node->name()) == "g") {
-
169  Group *group = dynamic_cast< Group * >(current);
-
170  for (auto group_attribute : group->getAttributes()) {
-
171  bool found = false;
-
172  for (auto attribute = node->first_attribute(); attribute;
-
173  attribute = attribute->next_attribute()) {
-
174  if (std::string(attribute->name()) ==
-
175  group_attribute.first) {
-
176  if (group_attribute.first == "opacity") {
-
177  std::string opacity = std::to_string(
-
178  std::stof(attribute->value()) *
-
179  std::stof(group_attribute.second));
-
180  char *value = doc.allocate_string(opacity.c_str());
-
181  attribute->value(value);
-
182  }
-
183  found = true;
-
184  break;
-
185  }
-
186  }
-
187  if (!found && group_attribute.first != "transform") {
-
188  char *name =
-
189  doc.allocate_string(group_attribute.first.c_str());
-
190  char *value =
-
191  doc.allocate_string(group_attribute.second.c_str());
-
192  xml_attribute<> *new_attribute =
-
193  doc.allocate_attribute(name, value);
-
194  node->append_attribute(new_attribute);
-
195  }
-
196  }
-
197  Group *new_group = new Group(xmlToString(node->first_attribute()));
-
198  new_group->setTransforms(getTransformOrder(node));
-
199  current->addElement(new_group);
-
200  current = new_group;
-
201  prev = node;
-
202  node = node->first_node();
-
203  } else {
-
204  Group *group = dynamic_cast< Group * >(current);
-
205  for (auto group_attribute : group->getAttributes()) {
-
206  bool found = false;
-
207  for (auto attribute = node->first_attribute(); attribute;
-
208  attribute = attribute->next_attribute()) {
-
209  if (std::string(attribute->name()) ==
-
210  group_attribute.first) {
-
211  if (group_attribute.first == "opacity") {
-
212  std::string opacity = std::to_string(
-
213  std::stof(attribute->value()) *
-
214  std::stof(group_attribute.second));
-
215  char *value = doc.allocate_string(opacity.c_str());
-
216  attribute->value(value);
-
217  }
-
218  found = true;
-
219  break;
-
220  }
-
221  }
-
222  if (!found && group_attribute.first != "transform") {
-
223  char *name =
-
224  doc.allocate_string(group_attribute.first.c_str());
-
225  char *value =
-
226  doc.allocate_string(group_attribute.second.c_str());
-
227  xml_attribute<> *new_attribute =
-
228  doc.allocate_attribute(name, value);
-
229  node->append_attribute(new_attribute);
-
230  }
-
231  }
-
232  SVGElement *shape = parseShape(node);
-
233  if (shape != NULL) current->addElement(shape);
-
234  prev = node;
-
235  node = node->next_sibling();
-
236  }
-
237  if (node == NULL && current != root) {
-
238  while (prev->parent()->next_sibling() == NULL) {
-
239  current = current->getParent();
-
240  prev = prev->parent();
-
241  if (prev == svg) {
-
242  break;
-
243  }
-
244  }
-
245  if (prev == svg) {
-
246  break;
-
247  }
-
248  current = current->getParent();
-
249  node = prev->parent()->next_sibling();
-
250  }
-
251  }
-
252  return root;
-
253 }
-
254 
-
255 std::string Parser::getAttribute(xml_node<> *node, std::string name) {
-
256  if (name == "text") return removeExtraSpaces(node->value());
-
257  std::string result;
-
258  if (node->first_attribute(name.c_str()) == NULL) {
-
259  if (name == "fill")
-
260  result = "black";
-
261  else if (name == "stroke" || name == "transform" || name == "rotate" ||
-
262  name == "font-style")
-
263  result = "none";
-
264  else if (name == "text-anchor")
-
265  result = "start";
-
266  else if (name == "fill-rule")
-
267  result = "nonzero";
-
268  } else {
-
269  result = node->first_attribute(name.c_str())->value();
-
270  }
-
271  return result;
-
272 }
-
273 
-
274 float Parser::getFloatAttribute(xml_node<> *node, std::string name) {
-
275  float result;
-
276  if (node->first_attribute(name.c_str()) == NULL) {
-
277  if (name == "stroke-width" || name == "stroke-opacity" ||
-
278  name == "fill-opacity" || name == "opacity")
-
279  result = 1;
-
280  else
-
281  result = 0;
-
282  } else {
-
283  result = std::stof(node->first_attribute(name.c_str())->value());
-
284  }
-
285  return result;
-
286 }
-
287 
-
288 mColor Parser::parseColor(xml_node<> *node, std::string name) {
-
289  std::string color = getAttribute(node, name);
-
290  color.erase(std::remove(color.begin(), color.end(), ' '), color.end());
-
291  for (auto &c : color) c = tolower(c);
-
292  if (color == "none")
-
293  return mColor::Transparent;
-
294  else {
-
295  mColor result;
-
296  if (color.find("#") != std::string::npos) {
-
297  result = getHexColor(color);
-
298  } else if (color.find("rgb") != std::string::npos) {
-
299  result = getRgbColor(color);
-
300  } else {
-
301  auto color_code = color_map.find(color);
-
302  if (color_code == color_map.end()) {
-
303  std::cout << "Color " << color << " not found" << std::endl;
-
304  exit(-1);
-
305  }
-
306  result = color_code->second;
-
307  }
-
308 
-
309  result.a = result.a * getFloatAttribute(node, name + "-opacity") *
-
310  getFloatAttribute(node, "opacity");
-
311  return result;
-
312  }
-
313 }
-
314 
-
315 std::vector< Vector2Df > Parser::parsePoints(xml_node<> *node) {
-
316  std::vector< Vector2Df > points;
-
317  std::string points_string = getAttribute(node, "points");
-
318 
-
319  std::stringstream ss(points_string);
-
320  float x, y;
-
321 
-
322  while (ss >> x) {
-
323  if (ss.peek() == ',') ss.ignore();
-
324  ss >> y;
-
325  points.push_back(Vector2Df(x, y));
-
326  }
-
327 
-
328  return points;
-
329 }
-
330 
-
331 std::vector< PathPoint > Parser::parsePathPoints(xml_node<> *node) {
-
332  std::vector< PathPoint > points;
-
333  std::string path_string = getAttribute(node, "d");
-
334 
-
335  formatSvgPathString(path_string);
-
336  std::stringstream ss(path_string);
-
337  std::string element;
-
338  PathPoint pPoint{{0, 0}, 'M'};
-
339 
-
340  while (ss >> element) {
-
341  if (std::isalpha(element[0])) {
-
342  pPoint.TC = element[0];
-
343  if (tolower(pPoint.TC) == 'm' || tolower(pPoint.TC) == 'l' ||
-
344  tolower(pPoint.TC) == 'c')
-
345  ss >> pPoint.Point.x >> pPoint.Point.y;
-
346  else if (tolower(pPoint.TC) == 'h') {
-
347  ss >> pPoint.Point.x;
-
348  pPoint.Point.y = 0;
-
349  } else if (tolower(pPoint.TC) == 'v') {
-
350  ss >> pPoint.Point.y;
-
351  pPoint.Point.x = 0;
-
352  }
-
353  } else {
-
354  if (tolower(pPoint.TC) == 'm' || tolower(pPoint.TC) == 'l' ||
-
355  tolower(pPoint.TC) == 'c') {
-
356  if (tolower(pPoint.TC) == 'm') pPoint.TC = 'L';
-
357  pPoint.Point.x = std::stof(element);
-
358  ss >> pPoint.Point.y;
-
359  } else if (tolower(pPoint.TC) == 'h') {
-
360  pPoint.Point.x = std::stof(element);
-
361  pPoint.Point.y = 0;
-
362  } else if (tolower(pPoint.TC) == 'v') {
-
363  pPoint.Point.y = std::stof(element);
-
364  pPoint.Point.x = 0;
-
365  }
-
366  }
-
367  points.push_back(pPoint);
-
368  }
-
369 
-
370  return points;
-
371 }
-
372 
-
373 std::vector< std::string > Parser::getTransformOrder(xml_node<> *node) {
-
374  std::string transform_tag = getAttribute(node, "transform");
-
375  std::vector< std::string > order;
-
376  std::stringstream ss(transform_tag);
-
377  std::string type;
-
378  while (ss >> type) {
-
379  if (type.find("translate") != std::string::npos ||
-
380  type.find("scale") != std::string::npos ||
-
381  type.find("rotate") != std::string::npos) {
-
382  while (type.find(")") == std::string::npos) {
-
383  std::string temp;
-
384  ss >> temp;
-
385  type += " " + temp;
-
386  }
-
387  std::string temp = type.substr(0, type.find("(") + 1);
-
388  temp.erase(std::remove(temp.begin(), temp.end(), ' '), temp.end());
-
389  type.erase(0, type.find("(") + 1);
-
390  type = temp + type;
-
391  order.push_back(type);
-
392  }
-
393  }
-
394  return order;
-
395 }
-
396 
-
397 SVGElement *Parser::parseShape(xml_node<> *node) {
-
398  SVGElement *shape = NULL;
-
399  std::string type = node->name();
-
400  mColor stroke_color = parseColor(node, "stroke");
-
401  mColor fill_color = parseColor(node, "fill");
-
402  float stroke_width = getFloatAttribute(node, "stroke-width");
-
403  if (type == "line") {
-
404  shape = parseLine(node, stroke_color, stroke_width);
-
405  } else if (type == "rect") {
-
406  shape = parseRect(node, fill_color, stroke_color, stroke_width);
-
407  } else if (type == "circle") {
-
408  shape = parseCircle(node, fill_color, stroke_color, stroke_width);
-
409  } else if (type == "ellipse") {
-
410  shape = parseEllipse(node, fill_color, stroke_color, stroke_width);
-
411  } else if (type == "polygon") {
-
412  shape = parsePolygon(node, fill_color, stroke_color, stroke_width);
-
413  } else if (type == "polyline") {
-
414  shape = parsePolyline(node, fill_color, stroke_color, stroke_width);
-
415  } else if (type == "path") {
-
416  shape = parsePath(node, fill_color, stroke_color, stroke_width);
-
417  } else if (type == "text") {
-
418  return parseText(node, fill_color, stroke_color, stroke_width);
-
419  }
-
420  if (shape != NULL) shape->setTransforms(getTransformOrder(node));
-
421  return shape;
-
422 }
-
423 
-
424 Line *Parser::parseLine(xml_node<> *node, const mColor &stroke_color,
-
425  float stroke_width) {
-
426  Line *shape = new Line(
-
427  Vector2Df(getFloatAttribute(node, "x1"), getFloatAttribute(node, "y1")),
-
428  Vector2Df(getFloatAttribute(node, "x2"), getFloatAttribute(node, "y2")),
-
429  stroke_color, stroke_width);
-
430  return shape;
-
431 }
-
432 
-
433 Rect *Parser::parseRect(xml_node<> *node, const mColor &fill_color,
-
434  const mColor &stroke_color, float stroke_width) {
-
435  float x = getFloatAttribute(node, "x");
-
436  float y = getFloatAttribute(node, "y");
-
437  float rx = getFloatAttribute(node, "rx");
-
438  float ry = getFloatAttribute(node, "ry");
-
439  Rect *shape =
-
440  new Rect(getFloatAttribute(node, "width"),
-
441  getFloatAttribute(node, "height"), Vector2Df(x, y),
-
442  Vector2Df(rx, ry), fill_color, stroke_color, stroke_width);
-
443  return shape;
-
444 }
-
445 
-
446 Circle *Parser::parseCircle(xml_node<> *node, const mColor &fill_color,
-
447  const mColor &stroke_color, float stroke_width) {
-
448  float cx = getFloatAttribute(node, "cx");
-
449  float cy = getFloatAttribute(node, "cy");
-
450  float radius = getFloatAttribute(node, "r");
-
451  Circle *shape = new Circle(radius, Vector2Df(cx, cy), fill_color,
-
452  stroke_color, stroke_width);
-
453  return shape;
-
454 }
-
455 
-
456 Ell *Parser::parseEllipse(xml_node<> *node, const mColor &fill_color,
-
457  const mColor &stroke_color, float stroke_width) {
-
458  float radius_x = getFloatAttribute(node, "rx");
-
459  float radius_y = getFloatAttribute(node, "ry");
-
460  float cx = getFloatAttribute(node, "cx");
-
461  float cy = getFloatAttribute(node, "cy");
-
462  Ell *shape = new Ell(Vector2Df(radius_x, radius_y), Vector2Df(cx, cy),
-
463  fill_color, stroke_color, stroke_width);
-
464  return shape;
-
465 }
-
466 
-
467 Plygon *Parser::parsePolygon(xml_node<> *node, const mColor &fill_color,
-
468  const mColor &stroke_color, float stroke_width) {
-
469  Plygon *shape = new Plygon(fill_color, stroke_color, stroke_width);
-
470  std::vector< Vector2Df > points = parsePoints(node);
-
471  for (auto point : points) {
-
472  shape->addPoint(point);
-
473  }
-
474  std::string fill_rule = getAttribute(node, "fill-rule");
-
475  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
-
476  fill_rule.end());
-
477  shape->setFillRule(fill_rule);
-
478  return shape;
-
479 }
-
480 
-
481 Plyline *Parser::parsePolyline(xml_node<> *node, const mColor &fill_color,
-
482  const mColor &stroke_color, float stroke_width) {
-
483  Plyline *shape = new Plyline(fill_color, stroke_color, stroke_width);
-
484  std::vector< Vector2Df > points = parsePoints(node);
-
485  for (auto point : points) {
-
486  shape->addPoint(point);
-
487  }
-
488  std::string fill_rule = getAttribute(node, "fill-rule");
-
489  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
-
490  fill_rule.end());
-
491  shape->setFillRule(fill_rule);
-
492  return shape;
-
493 }
-
494 
-
495 Text *Parser::parseText(xml_node<> *node, const mColor &fill_color,
-
496  const mColor &stroke_color, float stroke_width) {
-
497  float x = getFloatAttribute(node, "x");
-
498  float y = getFloatAttribute(node, "y");
-
499  float font_size = getFloatAttribute(node, "font-size");
-
500  std::string text = getAttribute(node, "text");
-
501 
-
502  Text *shape = new Text(Vector2Df(x - 7, y - font_size + 5), text, font_size,
-
503  fill_color, stroke_color, stroke_width);
-
504 
-
505  std::string anchor = getAttribute(node, "text-anchor");
-
506  anchor.erase(std::remove(anchor.begin(), anchor.end(), ' '), anchor.end());
-
507  shape->setAnchor(anchor);
-
508 
-
509  std::string style = getAttribute(node, "font-style");
-
510  style.erase(std::remove(style.begin(), style.end(), ' '), style.end());
-
511  shape->setFontStyle(style);
-
512 
-
513  float dx = getFloatAttribute(node, "dx");
-
514  float dy = getFloatAttribute(node, "dy");
-
515  std::string transform =
-
516  "translate(" + std::to_string(dx) + " " + std::to_string(dy) + ")";
-
517  std::vector< std::string > transform_order = getTransformOrder(node);
-
518  transform_order.push_back(transform);
-
519  shape->setTransforms(transform_order);
-
520  return shape;
-
521 }
-
522 
-
523 Path *Parser::parsePath(xml_node<> *node, const mColor &fill_color,
-
524  const mColor &stroke_color, float stroke_width) {
-
525  Path *shape = new Path(fill_color, stroke_color, stroke_width);
-
526  std::vector< PathPoint > points = parsePathPoints(node);
-
527  for (auto point : points) {
-
528  shape->addPoint(point);
-
529  }
-
530  std::string fill_rule = getAttribute(node, "fill-rule");
-
531  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
-
532  fill_rule.end());
-
533  shape->setFillRule(fill_rule);
-
534  return shape;
-
535 }
-
536 
-
537 Parser::~Parser() { delete root; }
-
538 
- -
Represents a circle in 2D space.
Definition: Circle.hpp:13
-
Represents an ellipse in 2D space.
Definition: Ellipse.hpp:12
-
A composite class that contains a vector of shape pointers (polymorphic).
Definition: Group.hpp:19
-
Attributes getAttributes() const
Gets the attributes of the shape.
Definition: Group.cpp:15
-
Represents a line in 2D space.
Definition: Line.hpp:12
-
To manipulate and parse an SVG file.
Definition: Parser.hpp:34
-
static Parser * getInstance(const std::string &file_name)
Gets the singleton instance of the Parser class.
Definition: Parser.cpp:129
-
Path * parsePath(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the path element.
Definition: Parser.cpp:523
-
SVGElement * root
The root of the SVG file.
Definition: Parser.hpp:230
-
float getFloatAttribute(xml_node<> *node, std::string name)
Gets the floating point attributes of a node.
Definition: Parser.cpp:274
-
void printShapesData()
Prints the data of the shapes.
Definition: Parser.cpp:539
-
~Parser()
Destructor.
Definition: Parser.cpp:537
-
Parser(const Parser &)=delete
Deleted copy constructor to enforce the singleton pattern.
-
Group * getRoot()
Gets the root of the SVG file.
Definition: Parser.cpp:140
-
SVGElement * parseShape(xml_node<> *node)
Parses the group of elements.
Definition: Parser.cpp:397
-
class Plyline * parsePolyline(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the polyline element.
Definition: Parser.cpp:481
-
std::vector< PathPoint > parsePathPoints(xml_node<> *node)
Gets the points of the path element.
Definition: Parser.cpp:331
-
Text * parseText(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the text element.
Definition: Parser.cpp:495
-
class Plygon * parsePolygon(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the polygon element.
Definition: Parser.cpp:467
-
std::string getAttribute(xml_node<> *node, std::string name)
Gets the attributes of a node.
Definition: Parser.cpp:255
-
SVGElement * parseElements(std::string file_name)
Parses the SVG file and creates a tree of SVGElements.
Definition: Parser.cpp:152
-
Circle * parseCircle(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the circle element.
Definition: Parser.cpp:446
-
std::vector< std::string > getTransformOrder(xml_node<> *node)
Gets the transform order of the element.
Definition: Parser.cpp:373
-
Rect * parseRect(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the rect element.
Definition: Parser.cpp:433
-
static Parser * instance
The instance of the Parser.
Definition: Parser.hpp:229
-
Line * parseLine(xml_node<> *node, const mColor &stroke_color, float stroke_width)
Parses the line element.
Definition: Parser.cpp:424
-
mColor parseColor(xml_node<> *node, std::string color)
Gets the color attributes of a node.
Definition: Parser.cpp:288
-
std::vector< Vector2Df > parsePoints(xml_node<> *node)
Gets the points of the element.
Definition: Parser.cpp:315
-
class Ell * parseEllipse(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the ellipse element.
Definition: Parser.cpp:456
-
Represents a path element in 2D space.
Definition: Path.hpp:24
-
void setFillRule(std::string fill_rule)
Sets the fill rule of the path.
Definition: Path.cpp:15
-
void addPoint(PathPoint point)
Adds a point to the path.
Definition: Path.cpp:11
-
Represents a polygon in 2D space.
Definition: Polygon.hpp:12
-
void setFillRule(std::string fill_rule)
Sets the fill rule of the polygon.
Definition: Polygon.cpp:8
-
Represents a polyline in 2D space.
Definition: Polyline.hpp:12
-
void setFillRule(std::string fill_rule)
Sets the fill rule of the polyline.
Definition: Polyline.cpp:8
-
virtual void addPoint(const Vector2Df &point)
Adds a vertex to the shape.
Definition: PolyShape.cpp:10
-
Represents a rectangle in 2D space.
Definition: Rect.hpp:13
-
Represents an element in an SVG file.
Definition: SVGElement.hpp:17
-
void setTransforms(const std::vector< std::string > &transforms)
Sets the transformations of the shape.
Definition: SVGElement.cpp:47
-
SVGElement * getParent() const
Parent pointer getter.
Definition: SVGElement.cpp:57
-
virtual void printData() const
Prints the data of the shape.
Definition: SVGElement.cpp:33
-
SVGElement * parent
Pointer to the group that contains the shape.
Definition: SVGElement.hpp:166
-
virtual void addElement(SVGElement *element)
Adds a shape to the composite group.
Definition: SVGElement.cpp:59
-
Represents text in 2D space.
Definition: Text.hpp:12
-
void setFontStyle(std::string style)
Sets the style of the text.
Definition: Text.cpp:26
-
void setAnchor(std::string anchor)
Sets the anchor of the text.
Definition: Text.cpp:22
- -
Utility class for manipulating RGBA mColors.
Definition: Color.hpp:11
-
int a
Alpha (opacity) component.
Definition: Color.hpp:63
-
static const mColor Transparent
Transparent (black) predefined color.
Definition: Color.hpp:58
-
A struct that contains a point and a type of point.
Definition: Path.hpp:10
-
-
- - - \ No newline at end of file diff --git a/docs/html/Parser_8hpp_source.html b/docs/html/Parser_8hpp_source.html deleted file mode 100644 index 0543c357..00000000 --- a/docs/html/Parser_8hpp_source.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - - - - - - - - - - - - -svg-reader: src/Parser.hpp Source File - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
svg-reader -  0.2 -
-
Parse and render SVG files, handle user interactions.
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Parser.hpp
-
-
-
1 #ifndef PARSER_HPP_
-
2 #define PARSER_HPP_
-
3 
-
4 #include <algorithm>
-
5 #include <cstring>
-
6 #include <fstream>
-
7 #include <iostream>
-
8 #include <sstream>
-
9 #include <string>
-
10 #include <vector>
-
11 
-
12 #include "../external/rapidxml/rapidxml.hpp"
-
13 #include "graphics/Circle.hpp"
-
14 #include "graphics/Color.hpp"
-
15 #include "graphics/Ellipse.hpp"
-
16 #include "graphics/Group.hpp"
-
17 #include "graphics/Line.hpp"
-
18 #include "graphics/Path.hpp"
-
19 #include "graphics/Polygon.hpp"
-
20 #include "graphics/Polyline.hpp"
-
21 #include "graphics/Rect.hpp"
-
22 #include "graphics/Text.hpp"
-
23 
-
24 using namespace rapidxml;
-
25 
-
26 typedef std::vector< std::pair< std::string, std::string > > Attributes;
-
27 
-
34 class Parser {
-
35 public:
-
36  static Parser* getInstance(
-
37  const std::string&
-
38  file_name);
-
39 
-
40  Parser(const Parser&) =
-
41  delete;
-
42 
-
43  ~Parser();
-
44 
-
45  Group* getRoot();
-
46 
-
52  void printShapesData();
-
53 
-
54 private:
-
60  Parser(const std::string& file_name);
-
61 
-
69  SVGElement* parseElements(std::string file_name);
-
70 
-
79  std::string getAttribute(xml_node<>* node, std::string name);
-
80 
-
89  float getFloatAttribute(xml_node<>* node, std::string name);
-
90 
-
99  mColor parseColor(xml_node<>* node, std::string color);
-
100 
-
107  std::vector< Vector2Df > parsePoints(xml_node<>* node);
-
108 
-
115  std::vector< PathPoint > parsePathPoints(xml_node<>* node);
-
116 
-
123  std::vector< std::string > getTransformOrder(xml_node<>* node);
-
124 
-
133  Line* parseLine(xml_node<>* node, const mColor& stroke_color,
-
134  float stroke_width);
-
135 
-
145  Rect* parseRect(xml_node<>* node, const mColor& fill_color,
-
146  const mColor& stroke_color, float stroke_width);
-
147 
-
157  class Plyline* parsePolyline(xml_node<>* node, const mColor& fill_color,
-
158  const mColor& stroke_color,
-
159  float stroke_width);
-
160 
-
170  class Plygon* parsePolygon(xml_node<>* node, const mColor& fill_color,
-
171  const mColor& stroke_color, float stroke_width);
-
172 
-
182  Circle* parseCircle(xml_node<>* node, const mColor& fill_color,
-
183  const mColor& stroke_color, float stroke_width);
-
184 
-
194  class Ell* parseEllipse(xml_node<>* node, const mColor& fill_color,
-
195  const mColor& stroke_color, float stroke_width);
-
196 
-
206  Path* parsePath(xml_node<>* node, const mColor& fill_color,
-
207  const mColor& stroke_color, float stroke_width);
-
208 
-
217  Text* parseText(xml_node<>* node, const mColor& fill_color,
-
218  const mColor& stroke_color, float stroke_width);
-
219 
-
226  SVGElement* parseShape(xml_node<>* node);
-
227 
-
228 private:
-
229  static Parser* instance;
- -
231 };
-
232 
-
233 #endif // PARSER_HPP_
-
Represents a circle in 2D space.
Definition: Circle.hpp:13
-
Represents an ellipse in 2D space.
Definition: Ellipse.hpp:12
-
A composite class that contains a vector of shape pointers (polymorphic).
Definition: Group.hpp:19
-
Represents a line in 2D space.
Definition: Line.hpp:12
-
To manipulate and parse an SVG file.
Definition: Parser.hpp:34
-
SVGElement * root
The root of the SVG file.
Definition: Parser.hpp:230
-
Parser(const Parser &)=delete
Deleted copy constructor to enforce the singleton pattern.
-
static Parser * instance
The instance of the Parser.
Definition: Parser.hpp:229
-
Represents a path element in 2D space.
Definition: Path.hpp:24
-
Represents a polygon in 2D space.
Definition: Polygon.hpp:12
-
Represents a polyline in 2D space.
Definition: Polyline.hpp:12
-
Represents a rectangle in 2D space.
Definition: Rect.hpp:13
-
Represents an element in an SVG file.
Definition: SVGElement.hpp:17
-
float stroke_width
Thickness of the shape's outline.
Definition: SVGElement.hpp:171
-
Represents text in 2D space.
Definition: Text.hpp:12
-
Utility class for manipulating RGBA mColors.
Definition: Color.hpp:11
-
-
- - - \ No newline at end of file diff --git a/docs/html/Renderer_8cpp_source.html b/docs/html/Renderer_8cpp_source.html deleted file mode 100644 index a15fcd05..00000000 --- a/docs/html/Renderer_8cpp_source.html +++ /dev/null @@ -1,561 +0,0 @@ - - - - - - - - - - - - - - - - - - -svg-reader: src/Renderer.cpp Source File - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
svg-reader -  0.2 -
-
Parse and render SVG files, handle user interactions.
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Renderer.cpp
-
-
-
1 #include "Renderer.hpp"
-
2 
- -
4 
- -
6 
- -
8  if (instance == nullptr) {
-
9  instance = new Renderer();
-
10  }
-
11  return instance;
-
12 }
-
13 
-
14 std::pair< float, float > getTranslate(std::string transform_value) {
-
15  float trans_x = 0, trans_y = 0;
-
16  if (transform_value.find(",") != std::string::npos) {
-
17  sscanf(transform_value.c_str(), "translate(%f, %f)", &trans_x,
-
18  &trans_y);
-
19  } else {
-
20  sscanf(transform_value.c_str(), "translate(%f %f)", &trans_x, &trans_y);
-
21  }
-
22  return std::pair< float, float >(trans_x, trans_y);
-
23 }
-
24 
-
25 float getRotate(std::string transform_value) {
-
26  float degree = 0;
-
27  sscanf(transform_value.c_str(), "rotate(%f)", &degree);
-
28  return degree;
-
29 }
-
30 
-
31 float getScale(std::string transform_value) {
-
32  float scale = 0;
-
33  sscanf(transform_value.c_str(), "scale(%f)", &scale);
-
34  return scale;
-
35 }
-
36 
-
37 std::pair< float, float > getScaleXY(std::string transform_value) {
-
38  float scale_x = 0, scale_y = 0;
-
39  if (transform_value.find(",") != std::string::npos)
-
40  sscanf(transform_value.c_str(), "scale(%f, %f)", &scale_x, &scale_y);
-
41  else
-
42  sscanf(transform_value.c_str(), "scale(%f %f)", &scale_x, &scale_y);
-
43  return std::pair< float, float >(scale_x, scale_y);
-
44 }
-
45 
-
46 void Renderer::applyTransform(std::vector< std::string > transform_order,
-
47  Gdiplus::Graphics& graphics) const {
-
48  for (auto type : transform_order) {
-
49  if (type.find("translate") != std::string::npos) {
-
50  float trans_x = getTranslate(type).first,
-
51  trans_y = getTranslate(type).second;
-
52  graphics.TranslateTransform(trans_x, trans_y);
-
53  } else if (type.find("rotate") != std::string::npos) {
-
54  float degree = getRotate(type);
-
55  graphics.RotateTransform(degree);
-
56  } else if (type.find("scale") != std::string::npos) {
-
57  if (type.find(",") != std::string::npos) {
-
58  float scale_x = getScaleXY(type).first,
-
59  scale_y = getScaleXY(type).second;
-
60  graphics.ScaleTransform(scale_x, scale_y);
-
61  } else {
-
62  float scale = getScale(type);
-
63  graphics.ScaleTransform(scale, scale);
-
64  }
-
65  }
-
66  }
-
67 }
-
68 
-
69 void Renderer::draw(Gdiplus::Graphics& graphics, Group* group) const {
-
70  for (auto shape : group->getElements()) {
-
71  Gdiplus::Matrix original;
-
72  graphics.GetTransform(&original);
-
73  applyTransform(shape->getTransforms(), graphics);
-
74  if (shape->getClass() == "Group") {
-
75  Group* group = dynamic_cast< Group* >(shape);
-
76  draw(graphics, group);
-
77  } else if (shape->getClass() == "Polyline") {
-
78  Plyline* polyline = dynamic_cast< Plyline* >(shape);
-
79  drawPolyline(graphics, polyline);
-
80  } else if (shape->getClass() == "Text") {
-
81  Text* text = dynamic_cast< Text* >(shape);
-
82  drawText(graphics, text);
-
83  } else if (shape->getClass() == "Rect") {
-
84  Rect* rectangle = dynamic_cast< Rect* >(shape);
-
85  drawRectangle(graphics, rectangle);
-
86  } else if (shape->getClass() == "Circle") {
-
87  Circle* circle = dynamic_cast< Circle* >(shape);
-
88  drawCircle(graphics, circle);
-
89  } else if (shape->getClass() == "Ellipse") {
-
90  Ell* ellipse = dynamic_cast< Ell* >(shape);
-
91  drawEllipse(graphics, ellipse);
-
92  } else if (shape->getClass() == "Line") {
-
93  Line* line = dynamic_cast< Line* >(shape);
-
94  drawLine(graphics, line);
-
95  } else if (shape->getClass() == "Polygon") {
-
96  Plygon* polygon = dynamic_cast< Plygon* >(shape);
-
97  drawPolygon(graphics, polygon);
-
98  } else if (shape->getClass() == "Path") {
-
99  Path* path = dynamic_cast< Path* >(shape);
-
100  drawPath(graphics, path);
-
101  }
-
102  graphics.SetTransform(&original);
-
103  }
-
104 }
-
105 
-
106 void Renderer::drawLine(Gdiplus::Graphics& graphics, Line* line) const {
-
107  mColor color = line->getOutlineColor();
-
108  Gdiplus::Pen linePen(Gdiplus::Color(color.a, color.r, color.g, color.b),
-
109  line->getOutlineThickness());
-
110  Gdiplus::PointF startPoint(line->getPosition().x, line->getPosition().y);
-
111  Gdiplus::PointF endPoint(line->getDirection().x, line->getDirection().y);
-
112  graphics.DrawLine(&linePen, startPoint, endPoint);
-
113 }
-
114 
-
115 void Renderer::drawRectangle(Gdiplus::Graphics& graphics,
-
116  Rect* rectangle) const {
-
117  float x = rectangle->getPosition().x;
-
118  float y = rectangle->getPosition().y;
-
119  float width = rectangle->getWidth();
-
120  float height = rectangle->getHeight();
-
121  mColor fill_color = rectangle->getFillColor();
-
122  mColor outline_color = rectangle->getOutlineColor();
-
123  Gdiplus::Pen RectOutline(Gdiplus::Color(outline_color.a, outline_color.r,
-
124  outline_color.g, outline_color.b),
-
125  rectangle->getOutlineThickness());
-
126  Gdiplus::SolidBrush RectFill(
-
127  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
128  if (rectangle->getRadius().x != 0 || rectangle->getRadius().y != 0) {
-
129  float dx = rectangle->getRadius().x * 2;
-
130  float dy = rectangle->getRadius().y * 2;
-
131  Gdiplus::GraphicsPath path;
-
132  path.AddArc(x, y, dx, dy, 180, 90);
-
133  path.AddArc(x + width - dx, y, dx, dy, 270, 90);
-
134  path.AddArc(x + width - dx, y + height - dy, dx, dy, 0, 90);
-
135  path.AddArc(x, y + height - dy, dx, dy, 90, 90);
-
136  path.CloseFigure();
-
137  graphics.FillPath(&RectFill, &path);
-
138  graphics.DrawPath(&RectOutline, &path);
-
139  } else {
-
140  graphics.FillRectangle(&RectFill, x, y, width, height);
-
141  graphics.DrawRectangle(&RectOutline, x, y, width, height);
-
142  }
-
143 }
-
144 
-
145 void Renderer::drawCircle(Gdiplus::Graphics& graphics, Circle* circle) const {
-
146  mColor fill_color = circle->getFillColor();
-
147  mColor outline_color = circle->getOutlineColor();
-
148  Gdiplus::Pen circleOutline(Gdiplus::Color(outline_color.a, outline_color.r,
-
149  outline_color.g, outline_color.b),
-
150  circle->getOutlineThickness());
-
151  Gdiplus::SolidBrush circleFill(
-
152  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
153  graphics.FillEllipse(&circleFill,
-
154  circle->getPosition().x - circle->getRadius().x,
-
155  circle->getPosition().y - circle->getRadius().y,
-
156  circle->getRadius().x * 2, circle->getRadius().y * 2);
-
157  graphics.DrawEllipse(&circleOutline,
-
158  circle->getPosition().x - circle->getRadius().x,
-
159  circle->getPosition().y - circle->getRadius().y,
-
160  circle->getRadius().x * 2, circle->getRadius().x * 2);
-
161 }
-
162 
-
163 void Renderer::drawEllipse(Gdiplus::Graphics& graphics, Ell* ellipse) const {
-
164  mColor fill_color = ellipse->getFillColor();
-
165  mColor outline_color = ellipse->getOutlineColor();
-
166  Gdiplus::Pen ellipseOutline(
-
167  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
-
168  outline_color.b),
-
169  ellipse->getOutlineThickness());
-
170  Gdiplus::SolidBrush ellipseFill(
-
171  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
172  graphics.FillEllipse(
-
173  &ellipseFill, ellipse->getPosition().x - ellipse->getRadius().x,
-
174  ellipse->getPosition().y - ellipse->getRadius().y,
-
175  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
-
176  graphics.DrawEllipse(
-
177  &ellipseOutline, ellipse->getPosition().x - ellipse->getRadius().x,
-
178  ellipse->getPosition().y - ellipse->getRadius().y,
-
179  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
-
180 }
-
181 
-
182 void Renderer::drawPolygon(Gdiplus::Graphics& graphics, Plygon* polygon) const {
-
183  mColor fill_color = polygon->getFillColor();
-
184  mColor outline_color = polygon->getOutlineColor();
-
185  Gdiplus::Pen polygonOutline(
-
186  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
-
187  outline_color.b),
-
188  polygon->getOutlineThickness());
-
189  Gdiplus::SolidBrush polygonFill(
-
190  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
191 
-
192  Gdiplus::PointF* points = new Gdiplus::PointF[polygon->getPoints().size()];
-
193  int idx = 0;
-
194  const std::vector< Vector2Df >& vertices = polygon->getPoints();
-
195  for (const Vector2Df vertex : vertices) {
-
196  points[idx++] = Gdiplus::PointF(vertex.x, vertex.y);
-
197  }
-
198 
-
199  Gdiplus::FillMode fillMode;
-
200  if (polygon->getFillRule() == "evenodd") {
-
201  fillMode = Gdiplus::FillModeAlternate;
-
202  } else if (polygon->getFillRule() == "nonzero") {
-
203  fillMode = Gdiplus::FillModeWinding;
-
204  }
-
205  graphics.FillPolygon(&polygonFill, points, idx, fillMode);
-
206  graphics.DrawPolygon(&polygonOutline, points, idx);
-
207  delete[] points;
-
208 }
-
209 
-
210 #include <codecvt>
-
211 #include <locale>
-
212 void Renderer::drawText(Gdiplus::Graphics& graphics, Text* text) const {
-
213  mColor outline_color = text->getOutlineColor();
-
214  mColor fill_color = text->getFillColor();
-
215 
-
216  graphics.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAliasGridFit);
-
217 
-
218  Gdiplus::SolidBrush textFill(
-
219  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
220 
-
221  Gdiplus::Pen textOutline(Gdiplus::Color(outline_color.a, outline_color.r,
-
222  outline_color.g, outline_color.b),
-
223  text->getOutlineThickness());
-
224 
-
225  Gdiplus::FontFamily fontFamily(L"Times New Roman");
-
226 
-
227  Gdiplus::PointF position(text->getPosition().x, text->getPosition().y);
-
228  Gdiplus::GraphicsPath path;
-
229 
-
230  std::wstring_convert< std::codecvt_utf8_utf16< wchar_t > > converter;
-
231  std::wstring wideContent = converter.from_bytes(text->getContent());
-
232  Gdiplus::StringFormat stringFormat;
-
233  if (text->getAnchor() == "middle") {
-
234  stringFormat.SetAlignment(Gdiplus::StringAlignmentCenter);
-
235  position.X += 7;
-
236  } else if (text->getAnchor() == "end") {
-
237  stringFormat.SetAlignment(Gdiplus::StringAlignmentFar);
-
238  position.X += 14;
-
239  } else {
-
240  stringFormat.SetAlignment(Gdiplus::StringAlignmentNear);
-
241  }
-
242  Gdiplus::FontStyle fontStyle = Gdiplus::FontStyleRegular;
-
243  if (text->getFontStyle() == "italic" || text->getFontStyle() == "oblique") {
-
244  fontStyle = Gdiplus::FontStyleItalic;
-
245  position.Y -= 1;
-
246  }
-
247 
-
248  path.AddString(wideContent.c_str(), wideContent.size(), &fontFamily,
-
249  fontStyle, text->getFontSize(), position, &stringFormat);
-
250  graphics.FillPath(&textFill, &path);
-
251  graphics.DrawPath(&textOutline, &path);
-
252 }
-
253 
-
254 void Renderer::drawPolyline(Gdiplus::Graphics& graphics,
-
255  Plyline* polyline) const {
-
256  mColor outline_color = polyline->getOutlineColor();
-
257  mColor fill_color = polyline->getFillColor();
-
258  Gdiplus::Pen polylinePen(Gdiplus::Color(outline_color.a, outline_color.r,
-
259  outline_color.g, outline_color.b),
-
260  polyline->getOutlineThickness());
-
261  Gdiplus::SolidBrush polylineFill(
-
262  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
263 
-
264  Gdiplus::FillMode fillMode;
-
265  if (polyline->getFillRule() == "evenodd") {
-
266  fillMode = Gdiplus::FillModeAlternate;
-
267  } else if (polyline->getFillRule() == "nonzero") {
-
268  fillMode = Gdiplus::FillModeWinding;
-
269  }
-
270  Gdiplus::GraphicsPath path(fillMode);
-
271  const std::vector< Vector2Df >& points = polyline->getPoints();
-
272  if (points.size() < 2) {
-
273  return;
-
274  }
-
275 
-
276  path.StartFigure();
-
277  path.AddLine(points[0].x, points[0].y, points[1].x, points[1].y);
-
278  for (size_t i = 2; i < points.size(); ++i) {
-
279  path.AddLine(points[i - 1].x, points[i - 1].y, points[i].x,
-
280  points[i].y);
-
281  }
-
282  graphics.FillPath(&polylineFill, &path);
-
283  graphics.DrawPath(&polylinePen, &path);
-
284 }
-
285 
-
286 void Renderer::drawPath(Gdiplus::Graphics& graphics, Path* path) const {
-
287  mColor outline_color = path->getOutlineColor();
-
288  mColor fill_color = path->getFillColor();
-
289  Gdiplus::Pen pathPen(Gdiplus::Color(outline_color.a, outline_color.r,
-
290  outline_color.g, outline_color.b),
-
291  path->getOutlineThickness());
-
292  Gdiplus::SolidBrush pathFill(
-
293  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
294 
-
295  Gdiplus::FillMode fillMode;
-
296  if (path->getFillRule() == "evenodd") {
-
297  fillMode = Gdiplus::FillModeAlternate;
-
298  } else if (path->getFillRule() == "nonzero") {
-
299  fillMode = Gdiplus::FillModeWinding;
-
300  }
-
301  Gdiplus::GraphicsPath gdiPath(fillMode);
-
302 
-
303  const std::vector< PathPoint >& points = path->getPoints();
-
304  int n = points.size();
-
305  Vector2Df firstPoint{0, 0}, curPoint{0, 0};
-
306 
-
307  for (int i = 0; i < n; ++i) {
-
308  if (points[i].TC == 'M') {
-
309  firstPoint = points[i].Point;
-
310  gdiPath.StartFigure();
-
311  curPoint = firstPoint;
-
312  } else if (points[i].TC == 'm') {
-
313  firstPoint.x = curPoint.x + points[i].Point.x;
-
314  firstPoint.y = curPoint.y + points[i].Point.y;
-
315  gdiPath.StartFigure();
-
316  curPoint = firstPoint;
-
317  } else if (points[i].TC == 'L') {
-
318  gdiPath.AddLine(curPoint.x, curPoint.y, points[i].Point.x,
-
319  points[i].Point.y);
-
320  curPoint = points[i].Point;
-
321  } else if (points[i].TC == 'l') {
-
322  Vector2Df endPoint{curPoint.x + points[i].Point.x,
-
323  curPoint.y + points[i].Point.y};
-
324  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
325  curPoint = endPoint;
-
326  } else if (points[i].TC == 'H') {
-
327  Vector2Df endPoint{points[i].Point.x, curPoint.y};
-
328  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
329  curPoint = endPoint;
-
330  } else if (points[i].TC == 'h') {
-
331  Vector2Df endPoint{curPoint.x + points[i].Point.x, curPoint.y};
-
332  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
333  curPoint = endPoint;
-
334  } else if (points[i].TC == 'V') {
-
335  Vector2Df endPoint{curPoint.x, points[i].Point.y};
-
336  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
337  curPoint = endPoint;
-
338  } else if (points[i].TC == 'v') {
-
339  Vector2Df endPoint{curPoint.x, curPoint.y + points[i].Point.y};
-
340  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
341  curPoint = endPoint;
-
342  } else if (points[i].TC == 'C') {
-
343  if (i + 2 < n) {
-
344  Vector2Df controlPoint1 = points[i].Point;
-
345  Vector2Df controlPoint2 = points[i + 1].Point;
-
346  Vector2Df controlPoint3 = points[i + 2].Point;
-
347  gdiPath.AddBezier(curPoint.x, curPoint.y, controlPoint1.x,
-
348  controlPoint1.y, controlPoint2.x,
-
349  controlPoint2.y, controlPoint3.x,
-
350  controlPoint3.y);
-
351  i += 2;
-
352  curPoint = controlPoint3;
-
353  }
-
354  } else if (points[i].TC == 'c') {
-
355  if (i + 2 < n) {
-
356  Vector2Df controlPoint1 =
-
357  Vector2Df{curPoint.x + points[i].Point.x,
-
358  curPoint.y + points[i].Point.y};
-
359  Vector2Df controlPoint2 =
-
360  Vector2Df{curPoint.x + points[i + 1].Point.x,
-
361  curPoint.y + points[i + 1].Point.y};
-
362  Vector2Df controlPoint3 =
-
363  Vector2Df{curPoint.x + points[i + 2].Point.x,
-
364  curPoint.y + points[i + 2].Point.y};
-
365  gdiPath.AddBezier(curPoint.x, curPoint.y, controlPoint1.x,
-
366  controlPoint1.y, controlPoint2.x,
-
367  controlPoint2.y, controlPoint3.x,
-
368  controlPoint3.y);
-
369  i += 2;
-
370  curPoint = controlPoint3;
-
371  }
-
372  } else if (points[i].TC == 'Z' || points[i].TC == 'z') {
-
373  gdiPath.CloseFigure();
-
374  curPoint = firstPoint;
-
375  }
-
376  }
-
377  graphics.FillPath(&pathFill, &gdiPath);
-
378  graphics.DrawPath(&pathPen, &gdiPath);
-
379 }
-
Represents a circle in 2D space.
Definition: Circle.hpp:13
-
Represents an ellipse in 2D space.
Definition: Ellipse.hpp:12
-
Vector2Df getRadius() const
Gets the radius of the ellipse.
Definition: Ellipse.cpp:18
-
A composite class that contains a vector of shape pointers (polymorphic).
Definition: Group.hpp:19
-
std::vector< SVGElement * > getElements() const
Gets the vector of shapes in the composite group.
Definition: Group.cpp:22
-
Represents a line in 2D space.
Definition: Line.hpp:12
-
Vector2Df getDirection() const
Gets the direction of the line.
Definition: Line.cpp:19
-
Represents a path element in 2D space.
Definition: Path.hpp:24
-
std::string getFillRule() const
Gets the current fill rule of the path.
Definition: Path.cpp:17
-
std::vector< PathPoint > getPoints() const
Gets the vector of points in the path.
Definition: Path.cpp:13
-
Represents a polygon in 2D space.
Definition: Polygon.hpp:12
-
std::string getFillRule() const
Gets the fill rule of the polygon.
Definition: Polygon.cpp:10
-
Represents a polyline in 2D space.
Definition: Polyline.hpp:12
-
std::string getFillRule() const
Gets the fill rule of the polyline.
Definition: Polyline.cpp:12
-
const std::vector< Vector2Df > & getPoints() const
Gets the total number of vertices representing the shape.
Definition: PolyShape.cpp:12
-
Represents a rectangle in 2D space.
Definition: Rect.hpp:13
-
Vector2Df getRadius() const
Gets the radii of the rectangle.
Definition: Rect.cpp:34
-
float getHeight() const
Gets the height of the rectangle.
Definition: Rect.cpp:30
-
float getWidth() const
Gets the width of the rectangle.
Definition: Rect.cpp:22
-
Singleton class responsible for rendering shapes using GDI+.
Definition: Renderer.hpp:24
-
void draw(Gdiplus::Graphics &graphics, Group *group) const
Draws a shape using Gdiplus::Graphics based on its type.
Definition: Renderer.cpp:69
-
void drawPolygon(Gdiplus::Graphics &graphics, Plygon *polygon) const
Draws a polygon shape using Gdiplus::Graphics.
Definition: Renderer.cpp:182
-
void drawPolyline(Gdiplus::Graphics &graphics, Plyline *polyline) const
Draws a polyline shape using Gdiplus::Graphics.
Definition: Renderer.cpp:254
-
void drawPath(Gdiplus::Graphics &graphics, Path *path) const
Draws a path shape using Gdiplus::Graphics.
Definition: Renderer.cpp:286
-
static Renderer * instance
Singleton instance of the Renderer class.
Definition: Renderer.hpp:133
-
Renderer()
Private constructor for the Renderer class.
Definition: Renderer.cpp:5
-
void drawText(Gdiplus::Graphics &graphics, Text *text) const
Draws text using Gdiplus::Graphics.
Definition: Renderer.cpp:212
-
void applyTransform(std::vector< std::string > transform_order, Gdiplus::Graphics &graphics) const
Utility function to apply a series of transformations to the graphics context.
Definition: Renderer.cpp:46
-
void drawCircle(Gdiplus::Graphics &graphics, Circle *circle) const
Draws a circle shape using Gdiplus::Graphics.
Definition: Renderer.cpp:145
-
void drawLine(Gdiplus::Graphics &graphics, Line *line) const
Draws a line shape using Gdiplus::Graphics.
Definition: Renderer.cpp:106
-
void drawRectangle(Gdiplus::Graphics &graphics, Rect *rectangle) const
Draws a rectangle shape using Gdiplus::Graphics.
Definition: Renderer.cpp:115
-
static Renderer * getInstance()
Gets the singleton instance of the Renderer class.
Definition: Renderer.cpp:7
-
void drawEllipse(Gdiplus::Graphics &graphics, Ell *ellipse) const
Draws an ellipse shape using Gdiplus::Graphics.
Definition: Renderer.cpp:163
-
float getOutlineThickness() const
Gets the outline thickness of the shape.
Definition: SVGElement.cpp:20
-
Vector2Df getPosition() const
Get the current position of the shape.
Definition: SVGElement.cpp:31
-
const mColor & getOutlineColor() const
Gets the outline color of the shape.
Definition: SVGElement.cpp:14
-
const mColor & getFillColor() const
Gets the fill color of the shape.
Definition: SVGElement.cpp:10
-
Represents text in 2D space.
Definition: Text.hpp:12
-
std::string getAnchor() const
Gets the anchor of the text.
Definition: Text.cpp:24
-
float getFontSize() const
Gets the font size of the text.
Definition: Text.cpp:16
-
std::string getFontStyle() const
Gets the style of the text.
Definition: Text.cpp:28
-
std::string getContent() const
Gets the string of the text.
Definition: Text.cpp:20
- -
T x
X coordinate of the vector.
Definition: Vector2D.hpp:45
-
T y
Y coordinate of the vector.
Definition: Vector2D.hpp:46
-
Utility class for manipulating RGBA mColors.
Definition: Color.hpp:11
-
int g
Green component.
Definition: Color.hpp:61
-
int r
Red component.
Definition: Color.hpp:60
-
int a
Alpha (opacity) component.
Definition: Color.hpp:63
-
int b
Blue component.
Definition: Color.hpp:62
-
-
- - - \ No newline at end of file diff --git a/docs/html/classCircle__coll__graph.map b/docs/html/classCircle__coll__graph.map deleted file mode 100644 index e75d38e0..00000000 --- a/docs/html/classCircle__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/classCircle__coll__graph.md5 b/docs/html/classCircle__coll__graph.md5 deleted file mode 100644 index bbd75839..00000000 --- a/docs/html/classCircle__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1f63ecca615622bef2dad2e31b878736 \ No newline at end of file diff --git a/docs/html/classCircle__coll__graph.svg b/docs/html/classCircle__coll__graph.svg deleted file mode 100644 index 01b03c1b..00000000 --- a/docs/html/classCircle__coll__graph.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - -Circle - - -Node1 - - -Circle - - - - - -Node2 - - -Ell - - - - - -Node2->Node1 - - - - - -Node3 - - -SVGElement - - - - - -Node3->Node2 - - - - - -Node3->Node3 - - - parent - - - -Node4 - - -Vector2D< float > - - - - - -Node4->Node2 - - - radius - - - -Node4->Node3 - - - position - - - -Node5 - - -mColor - - - - - -Node5->Node3 - - - fill -stroke - - - -Node5->Node5 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classEll__coll__graph.map b/docs/html/classEll__coll__graph.map deleted file mode 100644 index c0d83c52..00000000 --- a/docs/html/classEll__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classEll__coll__graph.md5 b/docs/html/classEll__coll__graph.md5 deleted file mode 100644 index 3226273d..00000000 --- a/docs/html/classEll__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -95bbcc2f6d1000f46a2cb11750ce88f9 \ No newline at end of file diff --git a/docs/html/classEll__coll__graph.svg b/docs/html/classEll__coll__graph.svg deleted file mode 100644 index 2dcd76f4..00000000 --- a/docs/html/classEll__coll__graph.svg +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - -Ell - - -Node1 - - -Ell - - - - - -Node2 - - -SVGElement - - - - - -Node2->Node1 - - - - - -Node2->Node2 - - - parent - - - -Node3 - - -Vector2D< float > - - - - - -Node3->Node1 - - - radius - - - -Node3->Node2 - - - position - - - -Node4 - - -mColor - - - - - -Node4->Node2 - - - fill -stroke - - - -Node4->Node4 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classGroup__coll__graph.map b/docs/html/classGroup__coll__graph.map deleted file mode 100644 index 469b11f2..00000000 --- a/docs/html/classGroup__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classGroup__coll__graph.md5 b/docs/html/classGroup__coll__graph.md5 deleted file mode 100644 index e65adfd5..00000000 --- a/docs/html/classGroup__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -db36661001c960688177da21e0f7282b \ No newline at end of file diff --git a/docs/html/classGroup__coll__graph.svg b/docs/html/classGroup__coll__graph.svg deleted file mode 100644 index 86244b2f..00000000 --- a/docs/html/classGroup__coll__graph.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - -Group - - -Node1 - - -Group - - - - - -Node2 - - -SVGElement - - - - - -Node2->Node1 - - - - - -Node2->Node2 - - - parent - - - -Node3 - - -Vector2D< float > - - - - - -Node3->Node2 - - - position - - - -Node4 - - -mColor - - - - - -Node4->Node2 - - - fill -stroke - - - -Node4->Node4 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classLine__coll__graph.map b/docs/html/classLine__coll__graph.map deleted file mode 100644 index 80575a8c..00000000 --- a/docs/html/classLine__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classLine__coll__graph.md5 b/docs/html/classLine__coll__graph.md5 deleted file mode 100644 index fb441883..00000000 --- a/docs/html/classLine__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8a98e4e085646adfb9f5e94e92eb2c7c \ No newline at end of file diff --git a/docs/html/classParser.html b/docs/html/classParser.html deleted file mode 100644 index 35dc8321..00000000 --- a/docs/html/classParser.html +++ /dev/null @@ -1,1540 +0,0 @@ - - - - - - - - - - - - - - - - - - -svg-reader: Parser Class Reference - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
svg-reader -  0.2 -
-
Parse and render SVG files, handle user interactions.
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
Parser Class Reference
-
-
- -

To manipulate and parse an SVG file. - More...

- -

#include <Parser.hpp>

-
-Collaboration diagram for Parser:
-
-
-
[legend]
- - - - - - - - - - - - - - -

-Public Member Functions

Parser (const Parser &)=delete
 Deleted copy constructor to enforce the singleton pattern.
 
~Parser ()
 Destructor.
 
-GroupgetRoot ()
 Gets the root of the SVG file.
 
void printShapesData ()
 Prints the data of the shapes. More...
 
- - - - -

-Static Public Member Functions

-static ParsergetInstance (const std::string &file_name)
 Gets the singleton instance of the Parser class.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

 Parser (const std::string &file_name)
 Construct a new Parser object. More...
 
SVGElementparseElements (std::string file_name)
 Parses the SVG file and creates a tree of SVGElements. More...
 
std::string getAttribute (xml_node<> *node, std::string name)
 Gets the attributes of a node. More...
 
float getFloatAttribute (xml_node<> *node, std::string name)
 Gets the floating point attributes of a node. More...
 
mColor parseColor (xml_node<> *node, std::string color)
 Gets the color attributes of a node. More...
 
std::vector< Vector2DfparsePoints (xml_node<> *node)
 Gets the points of the element. More...
 
std::vector< PathPointparsePathPoints (xml_node<> *node)
 Gets the points of the path element. More...
 
std::vector< std::string > getTransformOrder (xml_node<> *node)
 Gets the transform order of the element. More...
 
LineparseLine (xml_node<> *node, const mColor &stroke_color, float stroke_width)
 Parses the line element. More...
 
RectparseRect (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the rect element. More...
 
class PlylineparsePolyline (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the polyline element. More...
 
class PlygonparsePolygon (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the polygon element. More...
 
CircleparseCircle (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the circle element. More...
 
class EllparseEllipse (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the ellipse element. More...
 
PathparsePath (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the path element. More...
 
TextparseText (xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
 Parses the text element. More...
 
SVGElementparseShape (xml_node<> *node)
 Parses the group of elements. More...
 
- - - - -

-Private Attributes

-SVGElementroot
 The root of the SVG file.
 
- - - - -

-Static Private Attributes

-static Parserinstance = nullptr
 The instance of the Parser.
 
-

Detailed Description

-

To manipulate and parse an SVG file.

-

The Parser class is a singleton class that is used to parse an SVG file and create a tree of SVGElements.

- -

Definition at line 34 of file Parser.hpp.

-

Constructor & Destructor Documentation

- -

◆ Parser()

- -
-
- - - - - -
- - - - - - - - -
Parser::Parser (const std::string & file_name)
-
-private
-
- -

Construct a new Parser object.

-
Parameters
- - -
file_nameThe name of the file to be parsed.
-
-
- -

Definition at line 136 of file Parser.cpp.

-
136  {
-
137  root = parseElements(file_name);
-
138 }
-
SVGElement * root
The root of the SVG file.
Definition: Parser.hpp:230
-
SVGElement * parseElements(std::string file_name)
Parses the SVG file and creates a tree of SVGElements.
Definition: Parser.cpp:152
-
-
-
-

Member Function Documentation

- -

◆ getAttribute()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::string Parser::getAttribute (xml_node<> * node,
std::string name 
)
-
-private
-
- -

Gets the attributes of a node.

-
Parameters
- - - -
nodeThe node to be parsed.
nameThe name of tag to be parsed.
-
-
-
Returns
The attributes of the node.
- -

Definition at line 255 of file Parser.cpp.

-
255  {
-
256  if (name == "text") return removeExtraSpaces(node->value());
-
257  std::string result;
-
258  if (node->first_attribute(name.c_str()) == NULL) {
-
259  if (name == "fill")
-
260  result = "black";
-
261  else if (name == "stroke" || name == "transform" || name == "rotate" ||
-
262  name == "font-style")
-
263  result = "none";
-
264  else if (name == "text-anchor")
-
265  result = "start";
-
266  else if (name == "fill-rule")
-
267  result = "nonzero";
-
268  } else {
-
269  result = node->first_attribute(name.c_str())->value();
-
270  }
-
271  return result;
-
272 }
-
-
-
- -

◆ getFloatAttribute()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
float Parser::getFloatAttribute (xml_node<> * node,
std::string name 
)
-
-private
-
- -

Gets the floating point attributes of a node.

-
Parameters
- - - -
nodeThe node to be parsed.
nameThe name of tag to be parsed.
-
-
-
Returns
The floating point attributes of the node.
- -

Definition at line 274 of file Parser.cpp.

-
274  {
-
275  float result;
-
276  if (node->first_attribute(name.c_str()) == NULL) {
-
277  if (name == "stroke-width" || name == "stroke-opacity" ||
-
278  name == "fill-opacity" || name == "opacity")
-
279  result = 1;
-
280  else
-
281  result = 0;
-
282  } else {
-
283  result = std::stof(node->first_attribute(name.c_str())->value());
-
284  }
-
285  return result;
-
286 }
-
-
-
- -

◆ getTransformOrder()

- -
-
- - - - - -
- - - - - - - - -
std::vector< std::string > Parser::getTransformOrder (xml_node<> * node)
-
-private
-
- -

Gets the transform order of the element.

-
Parameters
- - -
nodeThe node to be parsed.
-
-
-
Returns
The transform order of the element
- -

Definition at line 373 of file Parser.cpp.

-
373  {
-
374  std::string transform_tag = getAttribute(node, "transform");
-
375  std::vector< std::string > order;
-
376  std::stringstream ss(transform_tag);
-
377  std::string type;
-
378  while (ss >> type) {
-
379  if (type.find("translate") != std::string::npos ||
-
380  type.find("scale") != std::string::npos ||
-
381  type.find("rotate") != std::string::npos) {
-
382  while (type.find(")") == std::string::npos) {
-
383  std::string temp;
-
384  ss >> temp;
-
385  type += " " + temp;
-
386  }
-
387  std::string temp = type.substr(0, type.find("(") + 1);
-
388  temp.erase(std::remove(temp.begin(), temp.end(), ' '), temp.end());
-
389  type.erase(0, type.find("(") + 1);
-
390  type = temp + type;
-
391  order.push_back(type);
-
392  }
-
393  }
-
394  return order;
-
395 }
-
std::string getAttribute(xml_node<> *node, std::string name)
Gets the attributes of a node.
Definition: Parser.cpp:255
-
-
-
- -

◆ parseCircle()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Circle * Parser::parseCircle (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the circle element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The circle element
- -

Definition at line 446 of file Parser.cpp.

-
447  {
-
448  float cx = getFloatAttribute(node, "cx");
-
449  float cy = getFloatAttribute(node, "cy");
-
450  float radius = getFloatAttribute(node, "r");
-
451  Circle *shape = new Circle(radius, Vector2Df(cx, cy), fill_color,
-
452  stroke_color, stroke_width);
-
453  return shape;
-
454 }
-
Represents a circle in 2D space.
Definition: Circle.hpp:13
-
float getFloatAttribute(xml_node<> *node, std::string name)
Gets the floating point attributes of a node.
Definition: Parser.cpp:274
- -
-
-
- -

◆ parseColor()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
mColor Parser::parseColor (xml_node<> * node,
std::string color 
)
-
-private
-
- -

Gets the color attributes of a node.

-
Parameters
- - - -
nodeThe node to be parsed.
colorThe name of the color tag to be parsed.
-
-
-
Returns
The color attributes of the node.
- -

Definition at line 288 of file Parser.cpp.

-
288  {
-
289  std::string color = getAttribute(node, name);
-
290  color.erase(std::remove(color.begin(), color.end(), ' '), color.end());
-
291  for (auto &c : color) c = tolower(c);
-
292  if (color == "none")
-
293  return mColor::Transparent;
-
294  else {
-
295  mColor result;
-
296  if (color.find("#") != std::string::npos) {
-
297  result = getHexColor(color);
-
298  } else if (color.find("rgb") != std::string::npos) {
-
299  result = getRgbColor(color);
-
300  } else {
-
301  auto color_code = color_map.find(color);
-
302  if (color_code == color_map.end()) {
-
303  std::cout << "Color " << color << " not found" << std::endl;
-
304  exit(-1);
-
305  }
-
306  result = color_code->second;
-
307  }
-
308 
-
309  result.a = result.a * getFloatAttribute(node, name + "-opacity") *
-
310  getFloatAttribute(node, "opacity");
-
311  return result;
-
312  }
-
313 }
-
Utility class for manipulating RGBA mColors.
Definition: Color.hpp:11
-
int a
Alpha (opacity) component.
Definition: Color.hpp:63
-
static const mColor Transparent
Transparent (black) predefined color.
Definition: Color.hpp:58
-
-
-
- -

◆ parseElements()

- -
-
- - - - - -
- - - - - - - - -
SVGElement * Parser::parseElements (std::string file_name)
-
-private
-
- -

Parses the SVG file and creates a tree of SVGElements.

-
Parameters
- - -
file_nameThe name of the file to be parsed.
-
-
-
Returns
The root of the tree of SVGElements.
- -

Definition at line 152 of file Parser.cpp.

-
152  {
-
153  xml_document<> doc;
-
154  std::ifstream file(file_name);
-
155  std::vector< char > buffer((std::istreambuf_iterator< char >(file)),
-
156  std::istreambuf_iterator< char >());
-
157  buffer.push_back('\0');
-
158  doc.parse< 0 >(&buffer[0]);
-
159 
-
160  xml_node<> *svg = doc.first_node();
-
161  xml_node<> *node = svg->first_node();
-
162  xml_node<> *prev = NULL;
-
163 
-
164  SVGElement *root = new Group();
-
165  SVGElement *current = root;
-
166 
-
167  while (node) {
-
168  if (std::string(node->name()) == "g") {
-
169  Group *group = dynamic_cast< Group * >(current);
-
170  for (auto group_attribute : group->getAttributes()) {
-
171  bool found = false;
-
172  for (auto attribute = node->first_attribute(); attribute;
-
173  attribute = attribute->next_attribute()) {
-
174  if (std::string(attribute->name()) ==
-
175  group_attribute.first) {
-
176  if (group_attribute.first == "opacity") {
-
177  std::string opacity = std::to_string(
-
178  std::stof(attribute->value()) *
-
179  std::stof(group_attribute.second));
-
180  char *value = doc.allocate_string(opacity.c_str());
-
181  attribute->value(value);
-
182  }
-
183  found = true;
-
184  break;
-
185  }
-
186  }
-
187  if (!found && group_attribute.first != "transform") {
-
188  char *name =
-
189  doc.allocate_string(group_attribute.first.c_str());
-
190  char *value =
-
191  doc.allocate_string(group_attribute.second.c_str());
-
192  xml_attribute<> *new_attribute =
-
193  doc.allocate_attribute(name, value);
-
194  node->append_attribute(new_attribute);
-
195  }
-
196  }
-
197  Group *new_group = new Group(xmlToString(node->first_attribute()));
-
198  new_group->setTransforms(getTransformOrder(node));
-
199  current->addElement(new_group);
-
200  current = new_group;
-
201  prev = node;
-
202  node = node->first_node();
-
203  } else {
-
204  Group *group = dynamic_cast< Group * >(current);
-
205  for (auto group_attribute : group->getAttributes()) {
-
206  bool found = false;
-
207  for (auto attribute = node->first_attribute(); attribute;
-
208  attribute = attribute->next_attribute()) {
-
209  if (std::string(attribute->name()) ==
-
210  group_attribute.first) {
-
211  if (group_attribute.first == "opacity") {
-
212  std::string opacity = std::to_string(
-
213  std::stof(attribute->value()) *
-
214  std::stof(group_attribute.second));
-
215  char *value = doc.allocate_string(opacity.c_str());
-
216  attribute->value(value);
-
217  }
-
218  found = true;
-
219  break;
-
220  }
-
221  }
-
222  if (!found && group_attribute.first != "transform") {
-
223  char *name =
-
224  doc.allocate_string(group_attribute.first.c_str());
-
225  char *value =
-
226  doc.allocate_string(group_attribute.second.c_str());
-
227  xml_attribute<> *new_attribute =
-
228  doc.allocate_attribute(name, value);
-
229  node->append_attribute(new_attribute);
-
230  }
-
231  }
-
232  SVGElement *shape = parseShape(node);
-
233  if (shape != NULL) current->addElement(shape);
-
234  prev = node;
-
235  node = node->next_sibling();
-
236  }
-
237  if (node == NULL && current != root) {
-
238  while (prev->parent()->next_sibling() == NULL) {
-
239  current = current->getParent();
-
240  prev = prev->parent();
-
241  if (prev == svg) {
-
242  break;
-
243  }
-
244  }
-
245  if (prev == svg) {
-
246  break;
-
247  }
-
248  current = current->getParent();
-
249  node = prev->parent()->next_sibling();
-
250  }
-
251  }
-
252  return root;
-
253 }
-
A composite class that contains a vector of shape pointers (polymorphic).
Definition: Group.hpp:19
-
Attributes getAttributes() const
Gets the attributes of the shape.
Definition: Group.cpp:15
-
SVGElement * parseShape(xml_node<> *node)
Parses the group of elements.
Definition: Parser.cpp:397
-
std::vector< std::string > getTransformOrder(xml_node<> *node)
Gets the transform order of the element.
Definition: Parser.cpp:373
-
Represents an element in an SVG file.
Definition: SVGElement.hpp:17
-
void setTransforms(const std::vector< std::string > &transforms)
Sets the transformations of the shape.
Definition: SVGElement.cpp:47
-
SVGElement * getParent() const
Parent pointer getter.
Definition: SVGElement.cpp:57
-
SVGElement * parent
Pointer to the group that contains the shape.
Definition: SVGElement.hpp:166
-
virtual void addElement(SVGElement *element)
Adds a shape to the composite group.
Definition: SVGElement.cpp:59
-
-
-
- -

◆ parseEllipse()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ell * Parser::parseEllipse (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the ellipse element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The ellipse element
- -

Definition at line 456 of file Parser.cpp.

-
457  {
-
458  float radius_x = getFloatAttribute(node, "rx");
-
459  float radius_y = getFloatAttribute(node, "ry");
-
460  float cx = getFloatAttribute(node, "cx");
-
461  float cy = getFloatAttribute(node, "cy");
-
462  Ell *shape = new Ell(Vector2Df(radius_x, radius_y), Vector2Df(cx, cy),
-
463  fill_color, stroke_color, stroke_width);
-
464  return shape;
-
465 }
-
Represents an ellipse in 2D space.
Definition: Ellipse.hpp:12
-
-
-
- -

◆ parseLine()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
Line * Parser::parseLine (xml_node<> * node,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the line element.

-
Parameters
- - - - -
nodeThe node to be parsed.
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The line element
- -

Definition at line 424 of file Parser.cpp.

-
425  {
-
426  Line *shape = new Line(
-
427  Vector2Df(getFloatAttribute(node, "x1"), getFloatAttribute(node, "y1")),
-
428  Vector2Df(getFloatAttribute(node, "x2"), getFloatAttribute(node, "y2")),
-
429  stroke_color, stroke_width);
-
430  return shape;
-
431 }
-
Represents a line in 2D space.
Definition: Line.hpp:12
-
-
-
- -

◆ parsePath()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Path * Parser::parsePath (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the path element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The path element
- -

Definition at line 523 of file Parser.cpp.

-
524  {
-
525  Path *shape = new Path(fill_color, stroke_color, stroke_width);
-
526  std::vector< PathPoint > points = parsePathPoints(node);
-
527  for (auto point : points) {
-
528  shape->addPoint(point);
-
529  }
-
530  std::string fill_rule = getAttribute(node, "fill-rule");
-
531  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
-
532  fill_rule.end());
-
533  shape->setFillRule(fill_rule);
-
534  return shape;
-
535 }
-
std::vector< PathPoint > parsePathPoints(xml_node<> *node)
Gets the points of the path element.
Definition: Parser.cpp:331
-
Represents a path element in 2D space.
Definition: Path.hpp:24
-
void setFillRule(std::string fill_rule)
Sets the fill rule of the path.
Definition: Path.cpp:15
-
void addPoint(PathPoint point)
Adds a point to the path.
Definition: Path.cpp:11
-
-
-
- -

◆ parsePathPoints()

- -
-
- - - - - -
- - - - - - - - -
std::vector< PathPoint > Parser::parsePathPoints (xml_node<> * node)
-
-private
-
- -

Gets the points of the path element.

-
Parameters
- - -
nodeThe node to be parsed.
-
-
-
Returns
The points of the path element
- -

Definition at line 331 of file Parser.cpp.

-
331  {
-
332  std::vector< PathPoint > points;
-
333  std::string path_string = getAttribute(node, "d");
-
334 
-
335  formatSvgPathString(path_string);
-
336  std::stringstream ss(path_string);
-
337  std::string element;
-
338  PathPoint pPoint{{0, 0}, 'M'};
-
339 
-
340  while (ss >> element) {
-
341  if (std::isalpha(element[0])) {
-
342  pPoint.TC = element[0];
-
343  if (tolower(pPoint.TC) == 'm' || tolower(pPoint.TC) == 'l' ||
-
344  tolower(pPoint.TC) == 'c')
-
345  ss >> pPoint.Point.x >> pPoint.Point.y;
-
346  else if (tolower(pPoint.TC) == 'h') {
-
347  ss >> pPoint.Point.x;
-
348  pPoint.Point.y = 0;
-
349  } else if (tolower(pPoint.TC) == 'v') {
-
350  ss >> pPoint.Point.y;
-
351  pPoint.Point.x = 0;
-
352  }
-
353  } else {
-
354  if (tolower(pPoint.TC) == 'm' || tolower(pPoint.TC) == 'l' ||
-
355  tolower(pPoint.TC) == 'c') {
-
356  if (tolower(pPoint.TC) == 'm') pPoint.TC = 'L';
-
357  pPoint.Point.x = std::stof(element);
-
358  ss >> pPoint.Point.y;
-
359  } else if (tolower(pPoint.TC) == 'h') {
-
360  pPoint.Point.x = std::stof(element);
-
361  pPoint.Point.y = 0;
-
362  } else if (tolower(pPoint.TC) == 'v') {
-
363  pPoint.Point.y = std::stof(element);
-
364  pPoint.Point.x = 0;
-
365  }
-
366  }
-
367  points.push_back(pPoint);
-
368  }
-
369 
-
370  return points;
-
371 }
-
A struct that contains a point and a type of point.
Definition: Path.hpp:10
-
-
-
- -

◆ parsePoints()

- -
-
- - - - - -
- - - - - - - - -
std::vector< Vector2Df > Parser::parsePoints (xml_node<> * node)
-
-private
-
- -

Gets the points of the element.

-
Parameters
- - -
nodeThe node to be parsed.
-
-
-
Returns
The points of the element
- -

Definition at line 315 of file Parser.cpp.

-
315  {
-
316  std::vector< Vector2Df > points;
-
317  std::string points_string = getAttribute(node, "points");
-
318 
-
319  std::stringstream ss(points_string);
-
320  float x, y;
-
321 
-
322  while (ss >> x) {
-
323  if (ss.peek() == ',') ss.ignore();
-
324  ss >> y;
-
325  points.push_back(Vector2Df(x, y));
-
326  }
-
327 
-
328  return points;
-
329 }
-
-
-
- -

◆ parsePolygon()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plygon * Parser::parsePolygon (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the polygon element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The polygon element
- -

Definition at line 467 of file Parser.cpp.

-
468  {
-
469  Plygon *shape = new Plygon(fill_color, stroke_color, stroke_width);
-
470  std::vector< Vector2Df > points = parsePoints(node);
-
471  for (auto point : points) {
-
472  shape->addPoint(point);
-
473  }
-
474  std::string fill_rule = getAttribute(node, "fill-rule");
-
475  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
-
476  fill_rule.end());
-
477  shape->setFillRule(fill_rule);
-
478  return shape;
-
479 }
-
std::vector< Vector2Df > parsePoints(xml_node<> *node)
Gets the points of the element.
Definition: Parser.cpp:315
-
Represents a polygon in 2D space.
Definition: Polygon.hpp:12
-
void setFillRule(std::string fill_rule)
Sets the fill rule of the polygon.
Definition: Polygon.cpp:8
-
virtual void addPoint(const Vector2Df &point)
Adds a vertex to the shape.
Definition: PolyShape.cpp:10
-
-
-
- -

◆ parsePolyline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plyline * Parser::parsePolyline (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the polyline element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The polyline element
- -

Definition at line 481 of file Parser.cpp.

-
482  {
-
483  Plyline *shape = new Plyline(fill_color, stroke_color, stroke_width);
-
484  std::vector< Vector2Df > points = parsePoints(node);
-
485  for (auto point : points) {
-
486  shape->addPoint(point);
-
487  }
-
488  std::string fill_rule = getAttribute(node, "fill-rule");
-
489  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
-
490  fill_rule.end());
-
491  shape->setFillRule(fill_rule);
-
492  return shape;
-
493 }
-
Represents a polyline in 2D space.
Definition: Polyline.hpp:12
-
void setFillRule(std::string fill_rule)
Sets the fill rule of the polyline.
Definition: Polyline.cpp:8
-
-
-
- -

◆ parseRect()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rect * Parser::parseRect (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the rect element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The rect element
- -

Definition at line 433 of file Parser.cpp.

-
434  {
-
435  float x = getFloatAttribute(node, "x");
-
436  float y = getFloatAttribute(node, "y");
-
437  float rx = getFloatAttribute(node, "rx");
-
438  float ry = getFloatAttribute(node, "ry");
-
439  Rect *shape =
-
440  new Rect(getFloatAttribute(node, "width"),
-
441  getFloatAttribute(node, "height"), Vector2Df(x, y),
-
442  Vector2Df(rx, ry), fill_color, stroke_color, stroke_width);
-
443  return shape;
-
444 }
-
Represents a rectangle in 2D space.
Definition: Rect.hpp:13
-
-
-
- -

◆ parseShape()

- -
-
- - - - - -
- - - - - - - - -
SVGElement * Parser::parseShape (xml_node<> * node)
-
-private
-
- -

Parses the group of elements.

-
Parameters
- - -
nodeThe node to be parsed.
-
-
-
Returns
The group of elements
- -

Definition at line 397 of file Parser.cpp.

-
397  {
-
398  SVGElement *shape = NULL;
-
399  std::string type = node->name();
-
400  mColor stroke_color = parseColor(node, "stroke");
-
401  mColor fill_color = parseColor(node, "fill");
-
402  float stroke_width = getFloatAttribute(node, "stroke-width");
-
403  if (type == "line") {
-
404  shape = parseLine(node, stroke_color, stroke_width);
-
405  } else if (type == "rect") {
-
406  shape = parseRect(node, fill_color, stroke_color, stroke_width);
-
407  } else if (type == "circle") {
-
408  shape = parseCircle(node, fill_color, stroke_color, stroke_width);
-
409  } else if (type == "ellipse") {
-
410  shape = parseEllipse(node, fill_color, stroke_color, stroke_width);
-
411  } else if (type == "polygon") {
-
412  shape = parsePolygon(node, fill_color, stroke_color, stroke_width);
-
413  } else if (type == "polyline") {
-
414  shape = parsePolyline(node, fill_color, stroke_color, stroke_width);
-
415  } else if (type == "path") {
-
416  shape = parsePath(node, fill_color, stroke_color, stroke_width);
-
417  } else if (type == "text") {
-
418  return parseText(node, fill_color, stroke_color, stroke_width);
-
419  }
-
420  if (shape != NULL) shape->setTransforms(getTransformOrder(node));
-
421  return shape;
-
422 }
-
Path * parsePath(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the path element.
Definition: Parser.cpp:523
-
class Plyline * parsePolyline(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the polyline element.
Definition: Parser.cpp:481
-
Text * parseText(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the text element.
Definition: Parser.cpp:495
-
class Plygon * parsePolygon(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the polygon element.
Definition: Parser.cpp:467
-
Circle * parseCircle(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the circle element.
Definition: Parser.cpp:446
-
Rect * parseRect(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the rect element.
Definition: Parser.cpp:433
-
Line * parseLine(xml_node<> *node, const mColor &stroke_color, float stroke_width)
Parses the line element.
Definition: Parser.cpp:424
-
mColor parseColor(xml_node<> *node, std::string color)
Gets the color attributes of a node.
Definition: Parser.cpp:288
-
class Ell * parseEllipse(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
Parses the ellipse element.
Definition: Parser.cpp:456
-
-
-
- -

◆ parseText()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Text * Parser::parseText (xml_node<> * node,
const mColorfill_color,
const mColorstroke_color,
float stroke_width 
)
-
-private
-
- -

Parses the text element.

-
Parameters
- - - - - -
nodeThe node to be parsed.
fill_colorThe color of the fill
stroke_colorThe color of the stroke
stroke_widthThe width of the stroke
-
-
-
Returns
The text element
- -

Definition at line 495 of file Parser.cpp.

-
496  {
-
497  float x = getFloatAttribute(node, "x");
-
498  float y = getFloatAttribute(node, "y");
-
499  float font_size = getFloatAttribute(node, "font-size");
-
500  std::string text = getAttribute(node, "text");
-
501 
-
502  Text *shape = new Text(Vector2Df(x - 7, y - font_size + 5), text, font_size,
-
503  fill_color, stroke_color, stroke_width);
-
504 
-
505  std::string anchor = getAttribute(node, "text-anchor");
-
506  anchor.erase(std::remove(anchor.begin(), anchor.end(), ' '), anchor.end());
-
507  shape->setAnchor(anchor);
-
508 
-
509  std::string style = getAttribute(node, "font-style");
-
510  style.erase(std::remove(style.begin(), style.end(), ' '), style.end());
-
511  shape->setFontStyle(style);
-
512 
-
513  float dx = getFloatAttribute(node, "dx");
-
514  float dy = getFloatAttribute(node, "dy");
-
515  std::string transform =
-
516  "translate(" + std::to_string(dx) + " " + std::to_string(dy) + ")";
-
517  std::vector< std::string > transform_order = getTransformOrder(node);
-
518  transform_order.push_back(transform);
-
519  shape->setTransforms(transform_order);
-
520  return shape;
-
521 }
-
Represents text in 2D space.
Definition: Text.hpp:12
-
void setFontStyle(std::string style)
Sets the style of the text.
Definition: Text.cpp:26
-
void setAnchor(std::string anchor)
Sets the anchor of the text.
Definition: Text.cpp:22
-
-
-
- -

◆ printShapesData()

- -
-
- - - - - - - -
void Parser::printShapesData ()
-
- -

Prints the data of the shapes.

-
Note
This function is used for debugging.
- -

Definition at line 539 of file Parser.cpp.

-
539 { root->printData(); }
-
virtual void printData() const
Prints the data of the shape.
Definition: SVGElement.cpp:33
-
-
-
-
The documentation for this class was generated from the following files: -
-
- - - \ No newline at end of file diff --git a/docs/html/classParser.js b/docs/html/classParser.js deleted file mode 100644 index 56175796..00000000 --- a/docs/html/classParser.js +++ /dev/null @@ -1,27 +0,0 @@ -var classParser = -[ - [ "Parser", "classParser.html#a48044a8caa14a251cb4dad9fb363658e", null ], - [ "~Parser", "classParser.html#a3e658b5917a93a3ef648050d060e3a93", null ], - [ "Parser", "classParser.html#a350fc3e35535c5891cd9e36e79ee546a", null ], - [ "getAttribute", "classParser.html#aa1c81b338cab55b128d0c2b6f48843a5", null ], - [ "getFloatAttribute", "classParser.html#a23d95ecfeae834319e3ac55fbb213bb1", null ], - [ "getInstance", "classParser.html#a06952fa44f19fdb573c1355ac26454c5", null ], - [ "getRoot", "classParser.html#a59ed4455eaec306cde11939785c4e71a", null ], - [ "getTransformOrder", "classParser.html#abd879ea781803a60e89675479e1d75f6", null ], - [ "parseCircle", "classParser.html#ab48a0797fe7ab0b7d4d00d4309a1b49f", null ], - [ "parseColor", "classParser.html#af3820c3ea6da58ce2e7d897d5d0b59cb", null ], - [ "parseElements", "classParser.html#aaf9f19591ff93f0c0c2fd68955e4a4af", null ], - [ "parseEllipse", "classParser.html#af7bd35de9ae9990807b8d63fc8433384", null ], - [ "parseLine", "classParser.html#ae4f868faab1653fc9bb53902c3284dc3", null ], - [ "parsePath", "classParser.html#a118d55f338510ccaf3b9352e88237759", null ], - [ "parsePathPoints", "classParser.html#a84d781820ab7c167496def7ae93fa3df", null ], - [ "parsePoints", "classParser.html#af42401b34e756cf3d19940d795e9be37", null ], - [ "parsePolygon", "classParser.html#a95b6a4c1e523ac49e891c4abc1cb664b", null ], - [ "parsePolyline", "classParser.html#a7556a6ba41ab1a14aaa77ef4734e0f12", null ], - [ "parseRect", "classParser.html#ade5b3a22b5aa10f986ae56218701a312", null ], - [ "parseShape", "classParser.html#a6835a56be443bac2712300d85f08a1f0", null ], - [ "parseText", "classParser.html#a9063a336c4ab03d9476990aedaa76ff5", null ], - [ "printShapesData", "classParser.html#a3d8927f2e26abf6a63bd850c154b23c6", null ], - [ "instance", "classParser.html#ae3a28c02c18171f4e83fae54b9f21a90", null ], - [ "root", "classParser.html#a13a5e2fdac62670c1584de1edbba77f2", null ] -]; \ No newline at end of file diff --git a/docs/html/classParser__coll__graph.map b/docs/html/classParser__coll__graph.map deleted file mode 100644 index b70b6400..00000000 --- a/docs/html/classParser__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classParser__coll__graph.md5 b/docs/html/classParser__coll__graph.md5 deleted file mode 100644 index 8d585233..00000000 --- a/docs/html/classParser__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0a420845e7168b84b0ce9ddb22a28294 \ No newline at end of file diff --git a/docs/html/classParser__coll__graph.svg b/docs/html/classParser__coll__graph.svg deleted file mode 100644 index 847c9ff2..00000000 --- a/docs/html/classParser__coll__graph.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - -Parser - - -Node1 - - -Parser - - - - - -Node1->Node1 - - - instance - - - -Node2 - - -SVGElement - - - - - -Node2->Node1 - - - root - - - -Node2->Node2 - - - parent - - - -Node3 - - -Vector2D< float > - - - - - -Node3->Node2 - - - position - - - -Node4 - - -mColor - - - - - -Node4->Node2 - - - fill -stroke - - - -Node4->Node4 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classPath__coll__graph.map b/docs/html/classPath__coll__graph.map deleted file mode 100644 index 06d33846..00000000 --- a/docs/html/classPath__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classPath__coll__graph.md5 b/docs/html/classPath__coll__graph.md5 deleted file mode 100644 index 324468fc..00000000 --- a/docs/html/classPath__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fe1183df5f26cdcc7a75e96a1a5a3f5f \ No newline at end of file diff --git a/docs/html/classPath__coll__graph.svg b/docs/html/classPath__coll__graph.svg deleted file mode 100644 index 97fb1493..00000000 --- a/docs/html/classPath__coll__graph.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - -Path - - -Node1 - - -Path - - - - - -Node2 - - -SVGElement - - - - - -Node2->Node1 - - - - - -Node2->Node2 - - - parent - - - -Node3 - - -Vector2D< float > - - - - - -Node3->Node2 - - - position - - - -Node4 - - -mColor - - - - - -Node4->Node2 - - - fill -stroke - - - -Node4->Node4 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classPlygon.js b/docs/html/classPlygon.js deleted file mode 100644 index 4a5c4678..00000000 --- a/docs/html/classPlygon.js +++ /dev/null @@ -1,8 +0,0 @@ -var classPlygon = -[ - [ "Plygon", "classPlygon.html#ac3f4fb224f4f84c3bd6e41093cd847cd", null ], - [ "getClass", "classPlygon.html#aab00a0d0230ea320271e96c326c6b919", null ], - [ "getFillRule", "classPlygon.html#a97b4c008055f2b2514e7a101fcbdb9b3", null ], - [ "setFillRule", "classPlygon.html#ac18faac47e1fa6bce3c7167f1e87bef4", null ], - [ "fill_rule", "classPlygon.html#a91c207c3142183a6714a700ee468a359", null ] -]; \ No newline at end of file diff --git a/docs/html/classPlygon__coll__graph.map b/docs/html/classPlygon__coll__graph.map deleted file mode 100644 index 33bca63c..00000000 --- a/docs/html/classPlygon__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/classPlygon__coll__graph.md5 b/docs/html/classPlygon__coll__graph.md5 deleted file mode 100644 index b1e272e1..00000000 --- a/docs/html/classPlygon__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -215ad64170b2449f8e7a05a34b58baf3 \ No newline at end of file diff --git a/docs/html/classPlygon__coll__graph.svg b/docs/html/classPlygon__coll__graph.svg deleted file mode 100644 index c79b8399..00000000 --- a/docs/html/classPlygon__coll__graph.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -Plygon - - -Node1 - - -Plygon - - - - - -Node2 - - -PolyShape - - - - - -Node2->Node1 - - - - - -Node3 - - -SVGElement - - - - - -Node3->Node2 - - - - - -Node3->Node3 - - - parent - - - -Node4 - - -Vector2D< float > - - - - - -Node4->Node3 - - - position - - - -Node5 - - -mColor - - - - - -Node5->Node3 - - - fill -stroke - - - -Node5->Node5 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classPlyline.js b/docs/html/classPlyline.js deleted file mode 100644 index 88f7f17f..00000000 --- a/docs/html/classPlyline.js +++ /dev/null @@ -1,8 +0,0 @@ -var classPlyline = -[ - [ "Plyline", "classPlyline.html#a8bf7677d7adb76f146607ef1aaa49bd3", null ], - [ "getClass", "classPlyline.html#a5b9d86c75604d329037cd47e8ba3d5b9", null ], - [ "getFillRule", "classPlyline.html#ad386f98aea56800553a8268ab78ce374", null ], - [ "setFillRule", "classPlyline.html#ab6d84eb184e27476516fb6d9aa9e9cf4", null ], - [ "fill_rule", "classPlyline.html#a71e8a6587d4656f6381e06925ad305d6", null ] -]; \ No newline at end of file diff --git a/docs/html/classPlyline__coll__graph.map b/docs/html/classPlyline__coll__graph.map deleted file mode 100644 index d92f71d9..00000000 --- a/docs/html/classPlyline__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/classPlyline__coll__graph.md5 b/docs/html/classPlyline__coll__graph.md5 deleted file mode 100644 index 36bbbdfa..00000000 --- a/docs/html/classPlyline__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -423ffae4b7e65c9c7bde294ff4aa995b \ No newline at end of file diff --git a/docs/html/classPlyline__coll__graph.svg b/docs/html/classPlyline__coll__graph.svg deleted file mode 100644 index a249b952..00000000 --- a/docs/html/classPlyline__coll__graph.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -Plyline - - -Node1 - - -Plyline - - - - - -Node2 - - -PolyShape - - - - - -Node2->Node1 - - - - - -Node3 - - -SVGElement - - - - - -Node3->Node2 - - - - - -Node3->Node3 - - - parent - - - -Node4 - - -Vector2D< float > - - - - - -Node4->Node3 - - - position - - - -Node5 - - -mColor - - - - - -Node5->Node3 - - - fill -stroke - - - -Node5->Node5 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classPolyShape__coll__graph.map b/docs/html/classPolyShape__coll__graph.map deleted file mode 100644 index 3509526a..00000000 --- a/docs/html/classPolyShape__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classPolyShape__coll__graph.md5 b/docs/html/classPolyShape__coll__graph.md5 deleted file mode 100644 index 8238f663..00000000 --- a/docs/html/classPolyShape__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -4031ffa6a59b9c41b807b3c13d3f1db8 \ No newline at end of file diff --git a/docs/html/classPolyShape__coll__graph.svg b/docs/html/classPolyShape__coll__graph.svg deleted file mode 100644 index 9e781e65..00000000 --- a/docs/html/classPolyShape__coll__graph.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - -PolyShape - - -Node1 - - -PolyShape - - - - - -Node2 - - -SVGElement - - - - - -Node2->Node1 - - - - - -Node2->Node2 - - - parent - - - -Node3 - - -Vector2D< float > - - - - - -Node3->Node2 - - - position - - - -Node4 - - -mColor - - - - - -Node4->Node2 - - - fill -stroke - - - -Node4->Node4 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classPolyShape__inherit__graph.md5 b/docs/html/classPolyShape__inherit__graph.md5 deleted file mode 100644 index a18a9aaf..00000000 --- a/docs/html/classPolyShape__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fa728a9e0115904419bad92b05fd8fc7 \ No newline at end of file diff --git a/docs/html/classRect__coll__graph.map b/docs/html/classRect__coll__graph.map deleted file mode 100644 index f37c6dcd..00000000 --- a/docs/html/classRect__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/classRect__coll__graph.md5 b/docs/html/classRect__coll__graph.md5 deleted file mode 100644 index c1a4b965..00000000 --- a/docs/html/classRect__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e07f59b9992f65d809f23da229df32e7 \ No newline at end of file diff --git a/docs/html/classRect__coll__graph.svg b/docs/html/classRect__coll__graph.svg deleted file mode 100644 index 8b6e7297..00000000 --- a/docs/html/classRect__coll__graph.svg +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - -Rect - - -Node1 - - -Rect - - - - - -Node2 - - -PolyShape - - - - - -Node2->Node1 - - - - - -Node3 - - -SVGElement - - - - - -Node3->Node2 - - - - - -Node3->Node3 - - - parent - - - -Node4 - - -Vector2D< float > - - - - - -Node4->Node1 - - - radius - - - -Node4->Node3 - - - position - - - -Node5 - - -mColor - - - - - -Node5->Node3 - - - fill -stroke - - - -Node5->Node5 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classRect__inherit__graph.map b/docs/html/classRect__inherit__graph.map deleted file mode 100644 index 8aadc8fc..00000000 --- a/docs/html/classRect__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/classRect__inherit__graph.md5 b/docs/html/classRect__inherit__graph.md5 deleted file mode 100644 index 87865cf5..00000000 --- a/docs/html/classRect__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fb3ec957207ddefd0c0a784b858b3c61 \ No newline at end of file diff --git a/docs/html/classRenderer.html b/docs/html/classRenderer.html deleted file mode 100644 index b05c4392..00000000 --- a/docs/html/classRenderer.html +++ /dev/null @@ -1,1086 +0,0 @@ - - - - - - - - - - - - - - - - - - -svg-reader: Renderer Class Reference - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
svg-reader -  0.2 -
-
Parse and render SVG files, handle user interactions.
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
Renderer Class Reference
-
-
- -

Singleton class responsible for rendering shapes using GDI+. - More...

- -

#include <Renderer.hpp>

-
-Collaboration diagram for Renderer:
-
-
-
[legend]
- - - - - - - - - - - -

-Public Member Functions

Renderer (const Renderer &)=delete
 Deleted copy constructor to enforce the singleton pattern.
 
-void operator= (const Renderer &)=delete
 Deleted copy assignment operator to enforce the singleton pattern.
 
void draw (Gdiplus::Graphics &graphics, Group *group) const
 Draws a shape using Gdiplus::Graphics based on its type. More...
 
- - - - -

-Static Public Member Functions

static RenderergetInstance ()
 Gets the singleton instance of the Renderer class. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

void applyTransform (std::vector< std::string > transform_order, Gdiplus::Graphics &graphics) const
 Utility function to apply a series of transformations to the graphics context. More...
 
void drawLine (Gdiplus::Graphics &graphics, Line *line) const
 Draws a line shape using Gdiplus::Graphics. More...
 
void drawRectangle (Gdiplus::Graphics &graphics, Rect *rectangle) const
 Draws a rectangle shape using Gdiplus::Graphics. More...
 
void drawCircle (Gdiplus::Graphics &graphics, Circle *circle) const
 Draws a circle shape using Gdiplus::Graphics. More...
 
void drawEllipse (Gdiplus::Graphics &graphics, Ell *ellipse) const
 Draws an ellipse shape using Gdiplus::Graphics. More...
 
void drawPolygon (Gdiplus::Graphics &graphics, Plygon *polygon) const
 Draws a polygon shape using Gdiplus::Graphics. More...
 
void drawText (Gdiplus::Graphics &graphics, Text *text) const
 Draws text using Gdiplus::Graphics. More...
 
void drawPolyline (Gdiplus::Graphics &graphics, Plyline *polyline) const
 Draws a polyline shape using Gdiplus::Graphics. More...
 
void drawPath (Gdiplus::Graphics &graphics, Path *path) const
 Draws a path shape using Gdiplus::Graphics. More...
 
Renderer ()
 Private constructor for the Renderer class.
 
- - - - -

-Static Private Attributes

-static Rendererinstance = nullptr
 Singleton instance of the Renderer class.
 
-

Detailed Description

-

Singleton class responsible for rendering shapes using GDI+.

-

The Renderer class provides a singleton instance for drawing SVGElement-based shapes using Gdiplus::Graphics. It supports various shapes such as lines, rectangles, circles, ellipses, text, polygons, polylines, and paths. The shapes are drawn in a polymorphic manner using the draw function, which takes a Gdiplus::Graphics context and an SVGElement. The draw function dynamically determines the type of the shape and invokes the corresponding draw method to render the shape with all necessary details. The detailed information for each shape is obtained from an SVG file and processed through the draw function in a polymorphic way.

- -

Definition at line 24 of file Renderer.hpp.

-

Member Function Documentation

- -

◆ applyTransform()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::applyTransform (std::vector< std::string > transform_order,
Gdiplus::Graphics & graphics 
) const
-
-private
-
- -

Utility function to apply a series of transformations to the graphics context.

-
Parameters
- - - -
transform_orderThe order in which transformations should be applied.
graphicsThe Gdiplus::Graphics context to apply transformations to.
-
-
- -

Definition at line 46 of file Renderer.cpp.

-
47  {
-
48  for (auto type : transform_order) {
-
49  if (type.find("translate") != std::string::npos) {
-
50  float trans_x = getTranslate(type).first,
-
51  trans_y = getTranslate(type).second;
-
52  graphics.TranslateTransform(trans_x, trans_y);
-
53  } else if (type.find("rotate") != std::string::npos) {
-
54  float degree = getRotate(type);
-
55  graphics.RotateTransform(degree);
-
56  } else if (type.find("scale") != std::string::npos) {
-
57  if (type.find(",") != std::string::npos) {
-
58  float scale_x = getScaleXY(type).first,
-
59  scale_y = getScaleXY(type).second;
-
60  graphics.ScaleTransform(scale_x, scale_y);
-
61  } else {
-
62  float scale = getScale(type);
-
63  graphics.ScaleTransform(scale, scale);
-
64  }
-
65  }
-
66  }
-
67 }
-
-
-
- -

◆ draw()

- -
-
- - - - - - - - - - - - - - - - - - -
void Renderer::draw (Gdiplus::Graphics & graphics,
Groupgroup 
) const
-
- -

Draws a shape using Gdiplus::Graphics based on its type.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
shapeThe SVGElement representing the shape to be drawn.
-
-
- -

Definition at line 69 of file Renderer.cpp.

-
69  {
-
70  for (auto shape : group->getElements()) {
-
71  Gdiplus::Matrix original;
-
72  graphics.GetTransform(&original);
-
73  applyTransform(shape->getTransforms(), graphics);
-
74  if (shape->getClass() == "Group") {
-
75  Group* group = dynamic_cast< Group* >(shape);
-
76  draw(graphics, group);
-
77  } else if (shape->getClass() == "Polyline") {
-
78  Plyline* polyline = dynamic_cast< Plyline* >(shape);
-
79  drawPolyline(graphics, polyline);
-
80  } else if (shape->getClass() == "Text") {
-
81  Text* text = dynamic_cast< Text* >(shape);
-
82  drawText(graphics, text);
-
83  } else if (shape->getClass() == "Rect") {
-
84  Rect* rectangle = dynamic_cast< Rect* >(shape);
-
85  drawRectangle(graphics, rectangle);
-
86  } else if (shape->getClass() == "Circle") {
-
87  Circle* circle = dynamic_cast< Circle* >(shape);
-
88  drawCircle(graphics, circle);
-
89  } else if (shape->getClass() == "Ellipse") {
-
90  Ell* ellipse = dynamic_cast< Ell* >(shape);
-
91  drawEllipse(graphics, ellipse);
-
92  } else if (shape->getClass() == "Line") {
-
93  Line* line = dynamic_cast< Line* >(shape);
-
94  drawLine(graphics, line);
-
95  } else if (shape->getClass() == "Polygon") {
-
96  Plygon* polygon = dynamic_cast< Plygon* >(shape);
-
97  drawPolygon(graphics, polygon);
-
98  } else if (shape->getClass() == "Path") {
-
99  Path* path = dynamic_cast< Path* >(shape);
-
100  drawPath(graphics, path);
-
101  }
-
102  graphics.SetTransform(&original);
-
103  }
-
104 }
-
Represents a circle in 2D space.
Definition: Circle.hpp:13
-
Represents an ellipse in 2D space.
Definition: Ellipse.hpp:12
-
A composite class that contains a vector of shape pointers (polymorphic).
Definition: Group.hpp:19
-
std::vector< SVGElement * > getElements() const
Gets the vector of shapes in the composite group.
Definition: Group.cpp:22
-
Represents a line in 2D space.
Definition: Line.hpp:12
-
Represents a path element in 2D space.
Definition: Path.hpp:24
-
Represents a polygon in 2D space.
Definition: Polygon.hpp:12
-
Represents a polyline in 2D space.
Definition: Polyline.hpp:12
-
Represents a rectangle in 2D space.
Definition: Rect.hpp:13
-
void draw(Gdiplus::Graphics &graphics, Group *group) const
Draws a shape using Gdiplus::Graphics based on its type.
Definition: Renderer.cpp:69
-
void drawPolygon(Gdiplus::Graphics &graphics, Plygon *polygon) const
Draws a polygon shape using Gdiplus::Graphics.
Definition: Renderer.cpp:182
-
void drawPolyline(Gdiplus::Graphics &graphics, Plyline *polyline) const
Draws a polyline shape using Gdiplus::Graphics.
Definition: Renderer.cpp:254
-
void drawPath(Gdiplus::Graphics &graphics, Path *path) const
Draws a path shape using Gdiplus::Graphics.
Definition: Renderer.cpp:286
-
void drawText(Gdiplus::Graphics &graphics, Text *text) const
Draws text using Gdiplus::Graphics.
Definition: Renderer.cpp:212
-
void applyTransform(std::vector< std::string > transform_order, Gdiplus::Graphics &graphics) const
Utility function to apply a series of transformations to the graphics context.
Definition: Renderer.cpp:46
-
void drawCircle(Gdiplus::Graphics &graphics, Circle *circle) const
Draws a circle shape using Gdiplus::Graphics.
Definition: Renderer.cpp:145
-
void drawLine(Gdiplus::Graphics &graphics, Line *line) const
Draws a line shape using Gdiplus::Graphics.
Definition: Renderer.cpp:106
-
void drawRectangle(Gdiplus::Graphics &graphics, Rect *rectangle) const
Draws a rectangle shape using Gdiplus::Graphics.
Definition: Renderer.cpp:115
-
void drawEllipse(Gdiplus::Graphics &graphics, Ell *ellipse) const
Draws an ellipse shape using Gdiplus::Graphics.
Definition: Renderer.cpp:163
-
Represents text in 2D space.
Definition: Text.hpp:12
-
-
-
- -

◆ drawCircle()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawCircle (Gdiplus::Graphics & graphics,
Circlecircle 
) const
-
-private
-
- -

Draws a circle shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
circleThe Circle object representing the circle to be drawn.
-
-
- -

Definition at line 145 of file Renderer.cpp.

-
145  {
-
146  mColor fill_color = circle->getFillColor();
-
147  mColor outline_color = circle->getOutlineColor();
-
148  Gdiplus::Pen circleOutline(Gdiplus::Color(outline_color.a, outline_color.r,
-
149  outline_color.g, outline_color.b),
-
150  circle->getOutlineThickness());
-
151  Gdiplus::SolidBrush circleFill(
-
152  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
153  graphics.FillEllipse(&circleFill,
-
154  circle->getPosition().x - circle->getRadius().x,
-
155  circle->getPosition().y - circle->getRadius().y,
-
156  circle->getRadius().x * 2, circle->getRadius().y * 2);
-
157  graphics.DrawEllipse(&circleOutline,
-
158  circle->getPosition().x - circle->getRadius().x,
-
159  circle->getPosition().y - circle->getRadius().y,
-
160  circle->getRadius().x * 2, circle->getRadius().x * 2);
-
161 }
-
Vector2Df getRadius() const
Gets the radius of the ellipse.
Definition: Ellipse.cpp:18
-
float getOutlineThickness() const
Gets the outline thickness of the shape.
Definition: SVGElement.cpp:20
-
Vector2Df getPosition() const
Get the current position of the shape.
Definition: SVGElement.cpp:31
-
const mColor & getOutlineColor() const
Gets the outline color of the shape.
Definition: SVGElement.cpp:14
-
const mColor & getFillColor() const
Gets the fill color of the shape.
Definition: SVGElement.cpp:10
-
T x
X coordinate of the vector.
Definition: Vector2D.hpp:45
-
T y
Y coordinate of the vector.
Definition: Vector2D.hpp:46
-
Utility class for manipulating RGBA mColors.
Definition: Color.hpp:11
-
int g
Green component.
Definition: Color.hpp:61
-
int r
Red component.
Definition: Color.hpp:60
-
int a
Alpha (opacity) component.
Definition: Color.hpp:63
-
int b
Blue component.
Definition: Color.hpp:62
-
-
-
- -

◆ drawEllipse()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawEllipse (Gdiplus::Graphics & graphics,
Ellellipse 
) const
-
-private
-
- -

Draws an ellipse shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
ellipseThe Ell object representing the ellipse to be drawn.
-
-
- -

Definition at line 163 of file Renderer.cpp.

-
163  {
-
164  mColor fill_color = ellipse->getFillColor();
-
165  mColor outline_color = ellipse->getOutlineColor();
-
166  Gdiplus::Pen ellipseOutline(
-
167  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
-
168  outline_color.b),
-
169  ellipse->getOutlineThickness());
-
170  Gdiplus::SolidBrush ellipseFill(
-
171  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
172  graphics.FillEllipse(
-
173  &ellipseFill, ellipse->getPosition().x - ellipse->getRadius().x,
-
174  ellipse->getPosition().y - ellipse->getRadius().y,
-
175  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
-
176  graphics.DrawEllipse(
-
177  &ellipseOutline, ellipse->getPosition().x - ellipse->getRadius().x,
-
178  ellipse->getPosition().y - ellipse->getRadius().y,
-
179  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
-
180 }
-
-
-
- -

◆ drawLine()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawLine (Gdiplus::Graphics & graphics,
Lineline 
) const
-
-private
-
- -

Draws a line shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
lineThe Line object representing the line to be drawn.
-
-
- -

Definition at line 106 of file Renderer.cpp.

-
106  {
-
107  mColor color = line->getOutlineColor();
-
108  Gdiplus::Pen linePen(Gdiplus::Color(color.a, color.r, color.g, color.b),
-
109  line->getOutlineThickness());
-
110  Gdiplus::PointF startPoint(line->getPosition().x, line->getPosition().y);
-
111  Gdiplus::PointF endPoint(line->getDirection().x, line->getDirection().y);
-
112  graphics.DrawLine(&linePen, startPoint, endPoint);
-
113 }
-
Vector2Df getDirection() const
Gets the direction of the line.
Definition: Line.cpp:19
-
-
-
- -

◆ drawPath()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawPath (Gdiplus::Graphics & graphics,
Pathpath 
) const
-
-private
-
- -

Draws a path shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
pathThe Path object representing the path to be drawn.
-
-
- -

Definition at line 286 of file Renderer.cpp.

-
286  {
-
287  mColor outline_color = path->getOutlineColor();
-
288  mColor fill_color = path->getFillColor();
-
289  Gdiplus::Pen pathPen(Gdiplus::Color(outline_color.a, outline_color.r,
-
290  outline_color.g, outline_color.b),
-
291  path->getOutlineThickness());
-
292  Gdiplus::SolidBrush pathFill(
-
293  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
294 
-
295  Gdiplus::FillMode fillMode;
-
296  if (path->getFillRule() == "evenodd") {
-
297  fillMode = Gdiplus::FillModeAlternate;
-
298  } else if (path->getFillRule() == "nonzero") {
-
299  fillMode = Gdiplus::FillModeWinding;
-
300  }
-
301  Gdiplus::GraphicsPath gdiPath(fillMode);
-
302 
-
303  const std::vector< PathPoint >& points = path->getPoints();
-
304  int n = points.size();
-
305  Vector2Df firstPoint{0, 0}, curPoint{0, 0};
-
306 
-
307  for (int i = 0; i < n; ++i) {
-
308  if (points[i].TC == 'M') {
-
309  firstPoint = points[i].Point;
-
310  gdiPath.StartFigure();
-
311  curPoint = firstPoint;
-
312  } else if (points[i].TC == 'm') {
-
313  firstPoint.x = curPoint.x + points[i].Point.x;
-
314  firstPoint.y = curPoint.y + points[i].Point.y;
-
315  gdiPath.StartFigure();
-
316  curPoint = firstPoint;
-
317  } else if (points[i].TC == 'L') {
-
318  gdiPath.AddLine(curPoint.x, curPoint.y, points[i].Point.x,
-
319  points[i].Point.y);
-
320  curPoint = points[i].Point;
-
321  } else if (points[i].TC == 'l') {
-
322  Vector2Df endPoint{curPoint.x + points[i].Point.x,
-
323  curPoint.y + points[i].Point.y};
-
324  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
325  curPoint = endPoint;
-
326  } else if (points[i].TC == 'H') {
-
327  Vector2Df endPoint{points[i].Point.x, curPoint.y};
-
328  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
329  curPoint = endPoint;
-
330  } else if (points[i].TC == 'h') {
-
331  Vector2Df endPoint{curPoint.x + points[i].Point.x, curPoint.y};
-
332  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
333  curPoint = endPoint;
-
334  } else if (points[i].TC == 'V') {
-
335  Vector2Df endPoint{curPoint.x, points[i].Point.y};
-
336  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
337  curPoint = endPoint;
-
338  } else if (points[i].TC == 'v') {
-
339  Vector2Df endPoint{curPoint.x, curPoint.y + points[i].Point.y};
-
340  gdiPath.AddLine(curPoint.x, curPoint.y, endPoint.x, endPoint.y);
-
341  curPoint = endPoint;
-
342  } else if (points[i].TC == 'C') {
-
343  if (i + 2 < n) {
-
344  Vector2Df controlPoint1 = points[i].Point;
-
345  Vector2Df controlPoint2 = points[i + 1].Point;
-
346  Vector2Df controlPoint3 = points[i + 2].Point;
-
347  gdiPath.AddBezier(curPoint.x, curPoint.y, controlPoint1.x,
-
348  controlPoint1.y, controlPoint2.x,
-
349  controlPoint2.y, controlPoint3.x,
-
350  controlPoint3.y);
-
351  i += 2;
-
352  curPoint = controlPoint3;
-
353  }
-
354  } else if (points[i].TC == 'c') {
-
355  if (i + 2 < n) {
-
356  Vector2Df controlPoint1 =
-
357  Vector2Df{curPoint.x + points[i].Point.x,
-
358  curPoint.y + points[i].Point.y};
-
359  Vector2Df controlPoint2 =
-
360  Vector2Df{curPoint.x + points[i + 1].Point.x,
-
361  curPoint.y + points[i + 1].Point.y};
-
362  Vector2Df controlPoint3 =
-
363  Vector2Df{curPoint.x + points[i + 2].Point.x,
-
364  curPoint.y + points[i + 2].Point.y};
-
365  gdiPath.AddBezier(curPoint.x, curPoint.y, controlPoint1.x,
-
366  controlPoint1.y, controlPoint2.x,
-
367  controlPoint2.y, controlPoint3.x,
-
368  controlPoint3.y);
-
369  i += 2;
-
370  curPoint = controlPoint3;
-
371  }
-
372  } else if (points[i].TC == 'Z' || points[i].TC == 'z') {
-
373  gdiPath.CloseFigure();
-
374  curPoint = firstPoint;
-
375  }
-
376  }
-
377  graphics.FillPath(&pathFill, &gdiPath);
-
378  graphics.DrawPath(&pathPen, &gdiPath);
-
379 }
-
std::string getFillRule() const
Gets the current fill rule of the path.
Definition: Path.cpp:17
-
std::vector< PathPoint > getPoints() const
Gets the vector of points in the path.
Definition: Path.cpp:13
- -
-
-
- -

◆ drawPolygon()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawPolygon (Gdiplus::Graphics & graphics,
Plygonpolygon 
) const
-
-private
-
- -

Draws a polygon shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
polygonThe Plygon object representing the polygon to be drawn.
-
-
- -

Definition at line 182 of file Renderer.cpp.

-
182  {
-
183  mColor fill_color = polygon->getFillColor();
-
184  mColor outline_color = polygon->getOutlineColor();
-
185  Gdiplus::Pen polygonOutline(
-
186  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
-
187  outline_color.b),
-
188  polygon->getOutlineThickness());
-
189  Gdiplus::SolidBrush polygonFill(
-
190  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
191 
-
192  Gdiplus::PointF* points = new Gdiplus::PointF[polygon->getPoints().size()];
-
193  int idx = 0;
-
194  const std::vector< Vector2Df >& vertices = polygon->getPoints();
-
195  for (const Vector2Df vertex : vertices) {
-
196  points[idx++] = Gdiplus::PointF(vertex.x, vertex.y);
-
197  }
-
198 
-
199  Gdiplus::FillMode fillMode;
-
200  if (polygon->getFillRule() == "evenodd") {
-
201  fillMode = Gdiplus::FillModeAlternate;
-
202  } else if (polygon->getFillRule() == "nonzero") {
-
203  fillMode = Gdiplus::FillModeWinding;
-
204  }
-
205  graphics.FillPolygon(&polygonFill, points, idx, fillMode);
-
206  graphics.DrawPolygon(&polygonOutline, points, idx);
-
207  delete[] points;
-
208 }
-
std::string getFillRule() const
Gets the fill rule of the polygon.
Definition: Polygon.cpp:10
-
const std::vector< Vector2Df > & getPoints() const
Gets the total number of vertices representing the shape.
Definition: PolyShape.cpp:12
-
-
-
- -

◆ drawPolyline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawPolyline (Gdiplus::Graphics & graphics,
Plylinepolyline 
) const
-
-private
-
- -

Draws a polyline shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
polylineThe Plyline object representing the polyline to be drawn.
-
-
- -

Definition at line 254 of file Renderer.cpp.

-
255  {
-
256  mColor outline_color = polyline->getOutlineColor();
-
257  mColor fill_color = polyline->getFillColor();
-
258  Gdiplus::Pen polylinePen(Gdiplus::Color(outline_color.a, outline_color.r,
-
259  outline_color.g, outline_color.b),
-
260  polyline->getOutlineThickness());
-
261  Gdiplus::SolidBrush polylineFill(
-
262  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
263 
-
264  Gdiplus::FillMode fillMode;
-
265  if (polyline->getFillRule() == "evenodd") {
-
266  fillMode = Gdiplus::FillModeAlternate;
-
267  } else if (polyline->getFillRule() == "nonzero") {
-
268  fillMode = Gdiplus::FillModeWinding;
-
269  }
-
270  Gdiplus::GraphicsPath path(fillMode);
-
271  const std::vector< Vector2Df >& points = polyline->getPoints();
-
272  if (points.size() < 2) {
-
273  return;
-
274  }
-
275 
-
276  path.StartFigure();
-
277  path.AddLine(points[0].x, points[0].y, points[1].x, points[1].y);
-
278  for (size_t i = 2; i < points.size(); ++i) {
-
279  path.AddLine(points[i - 1].x, points[i - 1].y, points[i].x,
-
280  points[i].y);
-
281  }
-
282  graphics.FillPath(&polylineFill, &path);
-
283  graphics.DrawPath(&polylinePen, &path);
-
284 }
-
std::string getFillRule() const
Gets the fill rule of the polyline.
Definition: Polyline.cpp:12
-
-
-
- -

◆ drawRectangle()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawRectangle (Gdiplus::Graphics & graphics,
Rectrectangle 
) const
-
-private
-
- -

Draws a rectangle shape using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
rectangleThe Rect object representing the rectangle to be drawn.
-
-
- -

Definition at line 115 of file Renderer.cpp.

-
116  {
-
117  float x = rectangle->getPosition().x;
-
118  float y = rectangle->getPosition().y;
-
119  float width = rectangle->getWidth();
-
120  float height = rectangle->getHeight();
-
121  mColor fill_color = rectangle->getFillColor();
-
122  mColor outline_color = rectangle->getOutlineColor();
-
123  Gdiplus::Pen RectOutline(Gdiplus::Color(outline_color.a, outline_color.r,
-
124  outline_color.g, outline_color.b),
-
125  rectangle->getOutlineThickness());
-
126  Gdiplus::SolidBrush RectFill(
-
127  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
128  if (rectangle->getRadius().x != 0 || rectangle->getRadius().y != 0) {
-
129  float dx = rectangle->getRadius().x * 2;
-
130  float dy = rectangle->getRadius().y * 2;
-
131  Gdiplus::GraphicsPath path;
-
132  path.AddArc(x, y, dx, dy, 180, 90);
-
133  path.AddArc(x + width - dx, y, dx, dy, 270, 90);
-
134  path.AddArc(x + width - dx, y + height - dy, dx, dy, 0, 90);
-
135  path.AddArc(x, y + height - dy, dx, dy, 90, 90);
-
136  path.CloseFigure();
-
137  graphics.FillPath(&RectFill, &path);
-
138  graphics.DrawPath(&RectOutline, &path);
-
139  } else {
-
140  graphics.FillRectangle(&RectFill, x, y, width, height);
-
141  graphics.DrawRectangle(&RectOutline, x, y, width, height);
-
142  }
-
143 }
-
Vector2Df getRadius() const
Gets the radii of the rectangle.
Definition: Rect.cpp:34
-
float getHeight() const
Gets the height of the rectangle.
Definition: Rect.cpp:30
-
float getWidth() const
Gets the width of the rectangle.
Definition: Rect.cpp:22
-
-
-
- -

◆ drawText()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void Renderer::drawText (Gdiplus::Graphics & graphics,
Texttext 
) const
-
-private
-
- -

Draws text using Gdiplus::Graphics.

-
Parameters
- - - -
graphicsThe Gdiplus::Graphics context for drawing.
textThe Text object representing the text to be drawn.
-
-
- -

Definition at line 212 of file Renderer.cpp.

-
212  {
-
213  mColor outline_color = text->getOutlineColor();
-
214  mColor fill_color = text->getFillColor();
-
215 
-
216  graphics.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAliasGridFit);
-
217 
-
218  Gdiplus::SolidBrush textFill(
-
219  Gdiplus::Color(fill_color.a, fill_color.r, fill_color.g, fill_color.b));
-
220 
-
221  Gdiplus::Pen textOutline(Gdiplus::Color(outline_color.a, outline_color.r,
-
222  outline_color.g, outline_color.b),
-
223  text->getOutlineThickness());
-
224 
-
225  Gdiplus::FontFamily fontFamily(L"Times New Roman");
-
226 
-
227  Gdiplus::PointF position(text->getPosition().x, text->getPosition().y);
-
228  Gdiplus::GraphicsPath path;
-
229 
-
230  std::wstring_convert< std::codecvt_utf8_utf16< wchar_t > > converter;
-
231  std::wstring wideContent = converter.from_bytes(text->getContent());
-
232  Gdiplus::StringFormat stringFormat;
-
233  if (text->getAnchor() == "middle") {
-
234  stringFormat.SetAlignment(Gdiplus::StringAlignmentCenter);
-
235  position.X += 7;
-
236  } else if (text->getAnchor() == "end") {
-
237  stringFormat.SetAlignment(Gdiplus::StringAlignmentFar);
-
238  position.X += 14;
-
239  } else {
-
240  stringFormat.SetAlignment(Gdiplus::StringAlignmentNear);
-
241  }
-
242  Gdiplus::FontStyle fontStyle = Gdiplus::FontStyleRegular;
-
243  if (text->getFontStyle() == "italic" || text->getFontStyle() == "oblique") {
-
244  fontStyle = Gdiplus::FontStyleItalic;
-
245  position.Y -= 1;
-
246  }
-
247 
-
248  path.AddString(wideContent.c_str(), wideContent.size(), &fontFamily,
-
249  fontStyle, text->getFontSize(), position, &stringFormat);
-
250  graphics.FillPath(&textFill, &path);
-
251  graphics.DrawPath(&textOutline, &path);
-
252 }
-
std::string getAnchor() const
Gets the anchor of the text.
Definition: Text.cpp:24
-
float getFontSize() const
Gets the font size of the text.
Definition: Text.cpp:16
-
std::string getFontStyle() const
Gets the style of the text.
Definition: Text.cpp:28
-
std::string getContent() const
Gets the string of the text.
Definition: Text.cpp:20
-
-
-
- -

◆ getInstance()

- -
-
- - - - - -
- - - - - - - -
Renderer * Renderer::getInstance ()
-
-static
-
- -

Gets the singleton instance of the Renderer class.

-
Returns
The singleton instance of the Renderer class.
- -

Definition at line 7 of file Renderer.cpp.

-
7  {
-
8  if (instance == nullptr) {
-
9  instance = new Renderer();
-
10  }
-
11  return instance;
-
12 }
-
static Renderer * instance
Singleton instance of the Renderer class.
Definition: Renderer.hpp:133
-
Renderer()
Private constructor for the Renderer class.
Definition: Renderer.cpp:5
-
-
-
-
The documentation for this class was generated from the following files: -
-
- - - \ No newline at end of file diff --git a/docs/html/classSVGElement__coll__graph.map b/docs/html/classSVGElement__coll__graph.map deleted file mode 100644 index df2c247e..00000000 --- a/docs/html/classSVGElement__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/classSVGElement__coll__graph.md5 b/docs/html/classSVGElement__coll__graph.md5 deleted file mode 100644 index d7cead40..00000000 --- a/docs/html/classSVGElement__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8abe0fc579e274a181f60254fc7b22a2 \ No newline at end of file diff --git a/docs/html/classSVGElement__coll__graph.svg b/docs/html/classSVGElement__coll__graph.svg deleted file mode 100644 index 764a571a..00000000 --- a/docs/html/classSVGElement__coll__graph.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - -SVGElement - - -Node1 - - -SVGElement - - - - - -Node1->Node1 - - - parent - - - -Node2 - - -Vector2D< float > - - - - - -Node2->Node1 - - - position - - - -Node3 - - -mColor - - - - - -Node3->Node1 - - - fill -stroke - - - -Node3->Node3 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classSVGElement__inherit__graph.md5 b/docs/html/classSVGElement__inherit__graph.md5 deleted file mode 100644 index d1c8747d..00000000 --- a/docs/html/classSVGElement__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3c2571a504fb461f5a1d0458c9a52e64 \ No newline at end of file diff --git a/docs/html/classText__coll__graph.map b/docs/html/classText__coll__graph.map deleted file mode 100644 index 4bfa08c7..00000000 --- a/docs/html/classText__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/classText__coll__graph.md5 b/docs/html/classText__coll__graph.md5 deleted file mode 100644 index bab964e6..00000000 --- a/docs/html/classText__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d69915713521f83f3656fcaafadeb55a \ No newline at end of file diff --git a/docs/html/classText__coll__graph.svg b/docs/html/classText__coll__graph.svg deleted file mode 100644 index 74dd8207..00000000 --- a/docs/html/classText__coll__graph.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - -Text - - -Node1 - - -Text - - - - - -Node2 - - -SVGElement - - - - - -Node2->Node1 - - - - - -Node2->Node2 - - - parent - - - -Node3 - - -Vector2D< float > - - - - - -Node3->Node2 - - - position - - - -Node4 - - -mColor - - - - - -Node4->Node2 - - - fill -stroke - - - -Node4->Node4 - - - Black -Blue -Cyan -Green -Magenta -Red -Transparent -White -Yellow - - - diff --git a/docs/html/classViewer__coll__graph.map b/docs/html/classViewer__coll__graph.map deleted file mode 100644 index 0ac7d52a..00000000 --- a/docs/html/classViewer__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/html/classViewer__coll__graph.md5 b/docs/html/classViewer__coll__graph.md5 deleted file mode 100644 index fc695bef..00000000 --- a/docs/html/classViewer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d8d69b4027a68d18c51615110be12773 \ No newline at end of file diff --git a/docs/html/classViewer__coll__graph.svg b/docs/html/classViewer__coll__graph.svg deleted file mode 100644 index 2b9bd98b..00000000 --- a/docs/html/classViewer__coll__graph.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -Viewer - - -Node1 - - -Viewer - - - - - -Node1->Node1 - - - instance - - - diff --git a/docs/html/functions.html b/docs/html/functions.html deleted file mode 100644 index 3cb81e8f..00000000 --- a/docs/html/functions.html +++ /dev/null @@ -1,662 +0,0 @@ - - - - - - - - - - - - - - - - - - -svg-reader: Class Members - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
-
svg-reader -  0.2 -
-
Parse and render SVG files, handle user interactions.
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- v -

- - -

- w -

- - -

- x -

- - -

- y -

- - -

- z -

- - -

- ~ -

-
-
- - - \ No newline at end of file diff --git a/docs/html/inherit_graph_4.md5 b/docs/html/inherit_graph_4.md5 deleted file mode 100644 index 991e1b30..00000000 --- a/docs/html/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -327ed9ca1ca02d174ae42d852c6bf1c6 \ No newline at end of file diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js deleted file mode 100644 index 824dd06d..00000000 --- a/docs/html/navtreeindex0.js +++ /dev/null @@ -1,248 +0,0 @@ -var NAVTREEINDEX0 = -{ -"Circle_8cpp_source.html":[1,0,0,0,0], -"Circle_8hpp_source.html":[1,0,0,0,1], -"Color_8cpp_source.html":[1,0,0,0,2], -"Color_8hpp_source.html":[1,0,0,0,3], -"Ellipse_8cpp_source.html":[1,0,0,0,4], -"Ellipse_8hpp_source.html":[1,0,0,0,5], -"Graphics_8hpp_source.html":[1,0,0,1], -"Group_8cpp_source.html":[1,0,0,0,6], -"Group_8hpp_source.html":[1,0,0,0,7], -"Line_8cpp_source.html":[1,0,0,0,8], -"Line_8hpp_source.html":[1,0,0,0,9], -"Parser_8cpp_source.html":[1,0,0,3], -"Parser_8hpp_source.html":[1,0,0,4], -"Path_8cpp_source.html":[1,0,0,0,10], -"Path_8hpp_source.html":[1,0,0,0,11], -"PolyShape_8cpp_source.html":[1,0,0,0,16], -"PolyShape_8hpp_source.html":[1,0,0,0,17], -"Polygon_8cpp_source.html":[1,0,0,0,12], -"Polygon_8hpp_source.html":[1,0,0,0,13], -"Polyline_8cpp_source.html":[1,0,0,0,14], -"Polyline_8hpp_source.html":[1,0,0,0,15], -"Rect_8cpp_source.html":[1,0,0,0,18], -"Rect_8hpp_source.html":[1,0,0,0,19], -"Renderer_8cpp_source.html":[1,0,0,5], -"Renderer_8hpp_source.html":[1,0,0,6], -"SVGElement_8cpp_source.html":[1,0,0,0,20], -"SVGElement_8hpp_source.html":[1,0,0,0,21], -"Text_8cpp_source.html":[1,0,0,0,22], -"Text_8hpp_source.html":[1,0,0,0,23], -"Vector2D_8hpp_source.html":[1,0,0,0,24], -"Viewer_8cpp_source.html":[1,0,0,7], -"Viewer_8hpp_source.html":[1,0,0,8], -"annotated.html":[0,0], -"classCircle.html":[0,0,0], -"classCircle.html#a09523e46318092d42a5969a1da5613bb":[0,0,0,1], -"classCircle.html#a5d018c51bfa1fa3d1081e3deef5eddc0":[0,0,0,0], -"classEll.html":[0,0,1], -"classEll.html#a00d607a5238705b552ec61b4409b76c1":[0,0,1,2], -"classEll.html#a0d0a2a70c06878c5769bd7d092277892":[0,0,1,1], -"classEll.html#a1d6d60039d2405f2b7aa117206d128fb":[0,0,1,3], -"classEll.html#a4a9956ca82cb9f957e993fa0c0faced6":[0,0,1,0], -"classEll.html#a9f67131ba02c02fccf42c52f5f04525e":[0,0,1,4], -"classEll.html#af57a48abe0e2bc8806e73dfa7762388f":[0,0,1,5], -"classGroup.html":[0,0,2], -"classGroup.html#a070e010084eaac6131e1bf814d10d234":[0,0,2,5], -"classGroup.html#a123cdaf1fb7cdf873740757d3864a4a6":[0,0,2,1], -"classGroup.html#a310fa83ccb20841373c11b6b4ac1d336":[0,0,2,6], -"classGroup.html#a317fcd42fd61b83c0d932bd1eb2c753f":[0,0,2,4], -"classGroup.html#a42fa18c4215ad3669db32b78e22303fa":[0,0,2,7], -"classGroup.html#a6ff10d6fceb2a78103db2d9783de6f41":[0,0,2,9], -"classGroup.html#a7b74f9ac68e0504ccf2e2854b7355ff1":[0,0,2,0], -"classGroup.html#a9308f587c63720ccbe2bfd1bad868547":[0,0,2,8], -"classGroup.html#aed00a22ff227ee2657ae44a5cbcedf7c":[0,0,2,2], -"classGroup.html#af4dafed0506ca5e9ea9e1028b1504919":[0,0,2,3], -"classLine.html":[0,0,3], -"classLine.html#a3fe45077492213ef490739c6137200d1":[0,0,3,5], -"classLine.html#a745f295541d412b49dac89423bd957a6":[0,0,3,1], -"classLine.html#ab46a879365e623e8b360c2db54d76782":[0,0,3,4], -"classLine.html#ab6e165ec2c3f412d5e5a860b28a52b4c":[0,0,3,0], -"classLine.html#adb348ce7ddf4b500c3593b7126aa4451":[0,0,3,2], -"classLine.html#afe6672bc7667cf45739c46f9fc8cb237":[0,0,3,3], -"classParser.html":[0,0,5], -"classParser.html#a06952fa44f19fdb573c1355ac26454c5":[0,0,5,5], -"classParser.html#a118d55f338510ccaf3b9352e88237759":[0,0,5,13], -"classParser.html#a13a5e2fdac62670c1584de1edbba77f2":[0,0,5,23], -"classParser.html#a23d95ecfeae834319e3ac55fbb213bb1":[0,0,5,4], -"classParser.html#a350fc3e35535c5891cd9e36e79ee546a":[0,0,5,2], -"classParser.html#a3d8927f2e26abf6a63bd850c154b23c6":[0,0,5,21], -"classParser.html#a3e658b5917a93a3ef648050d060e3a93":[0,0,5,1], -"classParser.html#a48044a8caa14a251cb4dad9fb363658e":[0,0,5,0], -"classParser.html#a59ed4455eaec306cde11939785c4e71a":[0,0,5,6], -"classParser.html#a6835a56be443bac2712300d85f08a1f0":[0,0,5,19], -"classParser.html#a7556a6ba41ab1a14aaa77ef4734e0f12":[0,0,5,17], -"classParser.html#a84d781820ab7c167496def7ae93fa3df":[0,0,5,14], -"classParser.html#a9063a336c4ab03d9476990aedaa76ff5":[0,0,5,20], -"classParser.html#a95b6a4c1e523ac49e891c4abc1cb664b":[0,0,5,16], -"classParser.html#aa1c81b338cab55b128d0c2b6f48843a5":[0,0,5,3], -"classParser.html#aaf9f19591ff93f0c0c2fd68955e4a4af":[0,0,5,10], -"classParser.html#ab48a0797fe7ab0b7d4d00d4309a1b49f":[0,0,5,8], -"classParser.html#abd879ea781803a60e89675479e1d75f6":[0,0,5,7], -"classParser.html#ade5b3a22b5aa10f986ae56218701a312":[0,0,5,18], -"classParser.html#ae3a28c02c18171f4e83fae54b9f21a90":[0,0,5,22], -"classParser.html#ae4f868faab1653fc9bb53902c3284dc3":[0,0,5,12], -"classParser.html#af3820c3ea6da58ce2e7d897d5d0b59cb":[0,0,5,9], -"classParser.html#af42401b34e756cf3d19940d795e9be37":[0,0,5,15], -"classParser.html#af7bd35de9ae9990807b8d63fc8433384":[0,0,5,11], -"classPath.html":[0,0,6], -"classPath.html#a089f2f59cc5574ce9e93826891044378":[0,0,6,0], -"classPath.html#a1880b844baafdeca91a7cf5d155cf9f1":[0,0,6,8], -"classPath.html#a3d2df8f3367db525772586065e16151e":[0,0,6,5], -"classPath.html#a9395325e65f86fd2a4be2dc24408753a":[0,0,6,3], -"classPath.html#a9d701e9231022249523970101bbc749c":[0,0,6,4], -"classPath.html#ac5abd8d5994a75cca56205c7e55a5b4f":[0,0,6,7], -"classPath.html#ac99ffb44f19586a10ee39aa70fd4a260":[0,0,6,2], -"classPath.html#ad2ba583a2dd567c3295ea62817b541e9":[0,0,6,6], -"classPath.html#ad4273c2a1b288fe43dd86375afc16f66":[0,0,6,1], -"classPlygon.html":[0,0,8], -"classPlygon.html#a91c207c3142183a6714a700ee468a359":[0,0,8,4], -"classPlygon.html#a97b4c008055f2b2514e7a101fcbdb9b3":[0,0,8,2], -"classPlygon.html#aab00a0d0230ea320271e96c326c6b919":[0,0,8,1], -"classPlygon.html#ac18faac47e1fa6bce3c7167f1e87bef4":[0,0,8,3], -"classPlygon.html#ac3f4fb224f4f84c3bd6e41093cd847cd":[0,0,8,0], -"classPlyline.html":[0,0,9], -"classPlyline.html#a5b9d86c75604d329037cd47e8ba3d5b9":[0,0,9,1], -"classPlyline.html#a71e8a6587d4656f6381e06925ad305d6":[0,0,9,4], -"classPlyline.html#a8bf7677d7adb76f146607ef1aaa49bd3":[0,0,9,0], -"classPlyline.html#ab6d84eb184e27476516fb6d9aa9e9cf4":[0,0,9,3], -"classPlyline.html#ad386f98aea56800553a8268ab78ce374":[0,0,9,2], -"classPolyShape.html":[0,0,10], -"classPolyShape.html#a27704ef9fd50c041d1d233e9d99a4fd4":[0,0,10,3], -"classPolyShape.html#a3a5e4952aff469f241ee1c9b92833f55":[0,0,10,1], -"classPolyShape.html#a40a83ac567156de6da65adb1a4380c7c":[0,0,10,4], -"classPolyShape.html#a6fd054647bea080272ed79bbea7080ac":[0,0,10,0], -"classPolyShape.html#acbd1d536ad25e34b160e849a0fc12697":[0,0,10,5], -"classPolyShape.html#afc263d5407ca7ea50e30d641d779b73b":[0,0,10,2], -"classRect.html":[0,0,11], -"classRect.html#a28b51c4f99cfa0208a2a5cef350c2a5e":[0,0,11,7], -"classRect.html#a31428cce67b56b6daf168131c7dbe1e8":[0,0,11,9], -"classRect.html#a31ca84cc8755233b5e61d22189f637b0":[0,0,11,3], -"classRect.html#a418fffe5bb9368f4e158b63e13faba16":[0,0,11,2], -"classRect.html#a4f6ba1c3eef4054847a89da472f392cd":[0,0,11,1], -"classRect.html#a66351fe7a171c2b3ed5f4bdf8d6661ba":[0,0,11,5], -"classRect.html#a7857e3568d2a2a35bf0c6b28028005b5":[0,0,11,10], -"classRect.html#a800053c390ccb818add47e627e535a5e":[0,0,11,11], -"classRect.html#a964a6107f787f612798bda5c0423fb5b":[0,0,11,6], -"classRect.html#a9c1dd853ea5df8e7c96a11bba72cc67a":[0,0,11,4], -"classRect.html#ad52d66e844d848d0e95f744b697e7beb":[0,0,11,0], -"classRect.html#ae11a39d12f7a766f773e662b0830848d":[0,0,11,8], -"classRenderer.html":[0,0,12], -"classRenderer.html#a1fac47f9b1c4c3fb1151f2b6ecb282f6":[0,0,12,3], -"classRenderer.html#a27b883787b8f38afd04924edc97b5a04":[0,0,12,8], -"classRenderer.html#a4e73148b7da0f585084520d12c514344":[0,0,12,9], -"classRenderer.html#a6cbcbb11e386c26eacef0b97342fee77":[0,0,12,7], -"classRenderer.html#a7431a2f9b03f35752e034410ffebfbe1":[0,0,12,14], -"classRenderer.html#a7ebf46f54dab9905f79b80f7fddb76a6":[0,0,12,1], -"classRenderer.html#a87ce996c3ed0f963de9ef6c293ee3aec":[0,0,12,11], -"classRenderer.html#a8c6e15f666cb188a936004add75e6c6b":[0,0,12,0], -"classRenderer.html#a8d159bc1ea8f4152339d6c5eead27e45":[0,0,12,2], -"classRenderer.html#a9b5ca422ec7f1328d854cc4bff269858":[0,0,12,4], -"classRenderer.html#aa42607899757d0a1c5e8fe0aa4cb5a7f":[0,0,12,13], -"classRenderer.html#ab68c9e02c7eadf1f18286c9ecf0d90ca":[0,0,12,6], -"classRenderer.html#abf163a7895594e0a4ee5662805b1b572":[0,0,12,10], -"classRenderer.html#ac1bf10ff8b4f967f0d416a26d482abd6":[0,0,12,12], -"classRenderer.html#af4d92e92abb79e4431f7331f792194d9":[0,0,12,5], -"classSVGElement.html":[0,0,13], -"classSVGElement.html#a00fef2ebc5df4838b3f9bd7111b117c5":[0,0,13,17], -"classSVGElement.html#a1b075314d4cda4fa895688979fe462fd":[0,0,13,7], -"classSVGElement.html#a2e4b1a48bfbc34a6a9f17bfd4b89eb51":[0,0,13,6], -"classSVGElement.html#a43b3bf06fae88a1634a189272088d11d":[0,0,13,14], -"classSVGElement.html#a4e1ed8bb29fd4dbeb35471315976b3a2":[0,0,13,8], -"classSVGElement.html#a5087280fd4bbb637c3cde64e44e974f1":[0,0,13,0], -"classSVGElement.html#a5f111964efd20e98eafafb3d168a1e87":[0,0,13,9], -"classSVGElement.html#a6d3a39e763d3273715ea11f8959f81b1":[0,0,13,18], -"classSVGElement.html#a77aefe4b7e9dbf180cc531c969d0116d":[0,0,13,16], -"classSVGElement.html#a88449b487a890e3765ae20e96ee95c06":[0,0,13,22], -"classSVGElement.html#a88653ebe8b92ec881ab436ea968375a8":[0,0,13,13], -"classSVGElement.html#a9a243b2b8464d57df28f3f3e8c52511e":[0,0,13,5], -"classSVGElement.html#aab937dcb566cd83d94d00d69b4083f13":[0,0,13,21], -"classSVGElement.html#abb012cad5d6e9ee7a413f46042f99429":[0,0,13,4], -"classSVGElement.html#abf7eef6d09fedba0d0f50a0f1a4be2fb":[0,0,13,11], -"classSVGElement.html#ac0cc2f6d2e01d364a695bebaa7db18d2":[0,0,13,12], -"classSVGElement.html#acf9b9906b6d0cba8bb5c0b38b032e40f":[0,0,13,20], -"classSVGElement.html#ad30205005009d2ba4820d3ce372e81ea":[0,0,13,1], -"classSVGElement.html#ad4bcd981ae7431161013811024b452e1":[0,0,13,10], -"classSVGElement.html#adc98ebac66965dd303283cbf7ff28f38":[0,0,13,3], -"classSVGElement.html#adee748c3014de1c1ebd20411a52e824a":[0,0,13,19], -"classSVGElement.html#aec8a2f582f21a559c05d791e017efbd5":[0,0,13,15], -"classSVGElement.html#aefeee5c1de3e802d9f5f0a54078170e6":[0,0,13,23], -"classSVGElement.html#af699f9aa795572c2873e520849579881":[0,0,13,2], -"classText.html":[0,0,14], -"classText.html#a12e8ae19a8e677eb6f1c2dc2716dcab0":[0,0,14,8], -"classText.html#a12ee81ccf865a414867d4101c8dbbdb2":[0,0,14,14], -"classText.html#a33f5c94508241a960c139923c284491e":[0,0,14,11], -"classText.html#a405fac6f66711e0063e18e9e211e3a62":[0,0,14,2], -"classText.html#a40e38d59ba9b34df9900375409f6f03f":[0,0,14,6], -"classText.html#a445117756f52b37ae8bce225e254bea6":[0,0,14,1], -"classText.html#a4f24f78f8a962e758b70c5d9fd85b7cb":[0,0,14,10], -"classText.html#a6a04680d93c625645278b1d1111420bb":[0,0,14,9], -"classText.html#a6e799a9b0ba6f88e704eea12599d3d5c":[0,0,14,4], -"classText.html#a71158226b190f16477820e45b549133f":[0,0,14,13], -"classText.html#a86fd1927b692d6691c8dd3901b6f6e48":[0,0,14,5], -"classText.html#a92c5df61031c3a9af813f9cc6978f34a":[0,0,14,0], -"classText.html#a9336f13d0d4a26d41c2fd2e103ac5dde":[0,0,14,12], -"classText.html#aa503905beb9dddf11c9c579424d0a84f":[0,0,14,7], -"classText.html#ac593599637e5e7f0f929c59b440f1b94":[0,0,14,3], -"classVector2D.html":[0,0,15], -"classVector2D.html#a4f1bca1b63cd8b1323c85c9a5c597df4":[0,0,15,1], -"classVector2D.html#a65e391ec61c185092a02cf6301d0fff7":[0,0,15,3], -"classVector2D.html#a6a91fccbbd37162d28fa54aeeb88f9d2":[0,0,15,4], -"classVector2D.html#a96580267fed7cd6686cbbf8e11048023":[0,0,15,0], -"classVector2D.html#af9cb4a6f06903844162f4c9d80d16b85":[0,0,15,2], -"classViewer.html":[0,0,16], -"classViewer.html#a2b889c5d09c8577ad1580dd610ac5678":[0,0,16,6], -"classViewer.html#a30b0f57907c82de620339e105f9a3c5b":[0,0,16,17], -"classViewer.html#a324e5a6a1532fe5eac3f3b0e4792b2da":[0,0,16,0], -"classViewer.html#a3d14cceacd94622e6b9d5d71bfb5b64f":[0,0,16,11], -"classViewer.html#a3e16ebbf5c0ed98dc75fe2c4d46fe0d5":[0,0,16,16], -"classViewer.html#a452e9dd05638bf3da01d8f51dba009a5":[0,0,16,13], -"classViewer.html#a46377febc22fd7f2cc38a73ddb66b8ad":[0,0,16,19], -"classViewer.html#a53c3dca921442983d13f335d0e8a7e20":[0,0,16,12], -"classViewer.html#a59a507a835919e78114601d5bd1784e6":[0,0,16,15], -"classViewer.html#a643c2fc659f06f4d4bfcefbad22ebd75":[0,0,16,5], -"classViewer.html#a77bc329e7ae0aecaf60a4de4f8dcc037":[0,0,16,14], -"classViewer.html#a81a24ea13ee1e7e8c83be60672a7a11e":[0,0,16,9], -"classViewer.html#a8235c9da7e144d7139c91901c0051cd8":[0,0,16,3], -"classViewer.html#a82dfd34668f986b72e51ee86d4029fc6":[0,0,16,18], -"classViewer.html#a8bcd4fdeb5c26092d65fc14474afeb38":[0,0,16,4], -"classViewer.html#a940c6147b33b273afdff6eef7309d500":[0,0,16,10], -"classViewer.html#aaedebacb31cba87de6e7d448ed8d6586":[0,0,16,1], -"classViewer.html#abb8e49e83e5c574411bb9995665fd7eb":[0,0,16,2], -"classViewer.html#acb15ba2e5d3bab2ba58da0db724b3bd1":[0,0,16,8], -"classViewer.html#ae0c94514f0897aa84732024855520e28":[0,0,16,7], -"classes.html":[0,1], -"classmColor.html":[0,0,4], -"classmColor.html#a04a0d2485c1106ccc94d065a0e62ecfb":[0,0,4,8], -"classmColor.html#a0cd1254821d108bb8c5be8ec5536f8ec":[0,0,4,9], -"classmColor.html#a1887c93301ffe92701baf17d6af3418e":[0,0,4,3], -"classmColor.html#a427453d377b30c62f7d25f47120959d6":[0,0,4,12], -"classmColor.html#a4376ef67b23a45be81daeecbfef1b2c3":[0,0,4,1], -"classmColor.html#a59dc727125e9f3d4ed0c59433dfa0780":[0,0,4,7], -"classmColor.html#a68265f053324eea11265c7f8d7fdb5ff":[0,0,4,16], -"classmColor.html#a73b9b91ca8c79e6e3876e5d83980ebec":[0,0,4,15], -"classmColor.html#a777df695011fdb21f6b5d3e6745389c4":[0,0,4,11], -"classmColor.html#a8df59e284c6211d66b05fab14d726a5e":[0,0,4,2], -"classmColor.html#a9b1702a679c1c5f649787fe15d8b016a":[0,0,4,0], -"classmColor.html#aa0fc6fe3033f7ff2806c59e39c072dbc":[0,0,4,13], -"classmColor.html#aa3910d2b82d32c8aa4e50127874a6d03":[0,0,4,6], -"classmColor.html#aa69dc1cb58cec64672952d1e84744f8c":[0,0,4,10], -"classmColor.html#ac086aa72806b8ce55fed3df9ba976f6c":[0,0,4,4], -"classmColor.html#ac4f0afaa513bbe9e68c16156136d4ada":[0,0,4,14], -"classmColor.html#ad56f2424fa451364becdc4d1c4df657c":[0,0,4,5], -"dir_560415a5d2bc4999842279f4fc1debef.html":[1,0,0,0], -"dir_68267d1309a1af8e8297ef4c3efbcdba.html":[1,0,0], -"files.html":[1,0], -"functions.html":[0,3,0], -"functions_func.html":[0,3,1], -"functions_rela.html":[0,3,3], -"functions_vars.html":[0,3,2], -"hierarchy.html":[0,2], -"index.html":[], -"main_8cpp_source.html":[1,0,0,2], -"pages.html":[], -"structPathPoint.html":[0,0,7], -"structPathPoint.html#a7af911b1e9c6b451f8e869b12ac7ef0c":[0,0,7,0], -"structPathPoint.html#ab87850db87370b39084e97ba96c4aca3":[0,0,7,1] -}; diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js deleted file mode 100644 index 3f1b42a1..00000000 --- a/docs/html/search/all_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['a_0',['a',['../classmColor.html#ac086aa72806b8ce55fed3df9ba976f6c',1,'mColor']]], - ['addelement_1',['addElement',['../classGroup.html#af4dafed0506ca5e9ea9e1028b1504919',1,'Group::addElement()'],['../classSVGElement.html#af699f9aa795572c2873e520849579881',1,'SVGElement::addElement()']]], - ['addpoint_2',['addPoint',['../classPath.html#ad4273c2a1b288fe43dd86375afc16f66',1,'Path::addPoint()'],['../classPolyShape.html#a3a5e4952aff469f241ee1c9b92833f55',1,'PolyShape::addPoint()']]], - ['anchor_3',['anchor',['../classText.html#a33f5c94508241a960c139923c284491e',1,'Text']]], - ['applytransform_4',['applyTransform',['../classRenderer.html#a8d159bc1ea8f4152339d6c5eead27e45',1,'Renderer']]], - ['attributes_5',['attributes',['../classGroup.html#a9308f587c63720ccbe2bfd1bad868547',1,'Group']]] -]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js deleted file mode 100644 index 8a79da28..00000000 --- a/docs/html/search/all_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['b_6',['b',['../classmColor.html#ad56f2424fa451364becdc4d1c4df657c',1,'mColor']]], - ['black_7',['Black',['../classmColor.html#aa3910d2b82d32c8aa4e50127874a6d03',1,'mColor']]], - ['blue_8',['Blue',['../classmColor.html#a59dc727125e9f3d4ed0c59433dfa0780',1,'mColor']]] -]; diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js deleted file mode 100644 index 407c2b63..00000000 --- a/docs/html/search/all_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['text_124',['Text',['../classText.html',1,'Text'],['../classText.html#a92c5df61031c3a9af813f9cc6978f34a',1,'Text::Text()']]], - ['transforms_125',['transforms',['../classSVGElement.html#aefeee5c1de3e802d9f5f0a54078170e6',1,'SVGElement']]], - ['transparent_126',['Transparent',['../classmColor.html#ac4f0afaa513bbe9e68c16156136d4ada',1,'mColor']]] -]; diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js deleted file mode 100644 index 4f927d38..00000000 --- a/docs/html/search/all_12.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['white_130',['White',['../classmColor.html#a73b9b91ca8c79e6e3876e5d83980ebec',1,'mColor']]], - ['width_131',['width',['../classRect.html#a800053c390ccb818add47e627e535a5e',1,'Rect']]] -]; diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js deleted file mode 100644 index 125ff6b0..00000000 --- a/docs/html/search/all_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x_132',['x',['../classVector2D.html#a65e391ec61c185092a02cf6301d0fff7',1,'Vector2D']]] -]; diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js deleted file mode 100644 index d54b7660..00000000 --- a/docs/html/search/all_14.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['y_133',['y',['../classVector2D.html#a6a91fccbbd37162d28fa54aeeb88f9d2',1,'Vector2D']]], - ['yellow_134',['Yellow',['../classmColor.html#a68265f053324eea11265c7f8d7fdb5ff',1,'mColor']]] -]; diff --git a/docs/html/search/all_16.js b/docs/html/search/all_16.js deleted file mode 100644 index 133dd11b..00000000 --- a/docs/html/search/all_16.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['_7eparser_136',['~Parser',['../classParser.html#a3e658b5917a93a3ef648050d060e3a93',1,'Parser']]], - ['_7esvgelement_137',['~SVGElement',['../classSVGElement.html#a5087280fd4bbb637c3cde64e44e974f1',1,'SVGElement']]], - ['_7eviewer_138',['~Viewer',['../classViewer.html#a324e5a6a1532fe5eac3f3b0e4792b2da',1,'Viewer']]] -]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js deleted file mode 100644 index 8fc6f854..00000000 --- a/docs/html/search/all_2.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['circle_9',['Circle',['../classCircle.html',1,'Circle'],['../classCircle.html#a5d018c51bfa1fa3d1081e3deef5eddc0',1,'Circle::Circle()']]], - ['content_10',['content',['../classText.html#a9336f13d0d4a26d41c2fd2e103ac5dde',1,'Text']]], - ['cyan_11',['Cyan',['../classmColor.html#a04a0d2485c1106ccc94d065a0e62ecfb',1,'mColor']]] -]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js deleted file mode 100644 index 6345cc1a..00000000 --- a/docs/html/search/all_3.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['direction_12',['direction',['../classLine.html#a3fe45077492213ef490739c6137200d1',1,'Line']]], - ['draw_13',['draw',['../classRenderer.html#a1fac47f9b1c4c3fb1151f2b6ecb282f6',1,'Renderer']]], - ['drawcircle_14',['drawCircle',['../classRenderer.html#a9b5ca422ec7f1328d854cc4bff269858',1,'Renderer']]], - ['drawellipse_15',['drawEllipse',['../classRenderer.html#af4d92e92abb79e4431f7331f792194d9',1,'Renderer']]], - ['drawline_16',['drawLine',['../classRenderer.html#ab68c9e02c7eadf1f18286c9ecf0d90ca',1,'Renderer']]], - ['drawpath_17',['drawPath',['../classRenderer.html#a6cbcbb11e386c26eacef0b97342fee77',1,'Renderer']]], - ['drawpolygon_18',['drawPolygon',['../classRenderer.html#a27b883787b8f38afd04924edc97b5a04',1,'Renderer']]], - ['drawpolyline_19',['drawPolyline',['../classRenderer.html#a4e73148b7da0f585084520d12c514344',1,'Renderer']]], - ['drawrectangle_20',['drawRectangle',['../classRenderer.html#abf163a7895594e0a4ee5662805b1b572',1,'Renderer']]], - ['drawtext_21',['drawText',['../classRenderer.html#a87ce996c3ed0f963de9ef6c293ee3aec',1,'Renderer']]] -]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js deleted file mode 100644 index 69655a3f..00000000 --- a/docs/html/search/all_5.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fill_23',['fill',['../classSVGElement.html#a6d3a39e763d3273715ea11f8959f81b1',1,'SVGElement']]], - ['fill_5frule_24',['fill_rule',['../classPath.html#ac5abd8d5994a75cca56205c7e55a5b4f',1,'Path::fill_rule()'],['../classPlygon.html#a91c207c3142183a6714a700ee468a359',1,'Plygon::fill_rule()'],['../classPlyline.html#a71e8a6587d4656f6381e06925ad305d6',1,'Plyline::fill_rule()']]], - ['font_5fsize_25',['font_size',['../classText.html#a71158226b190f16477820e45b549133f',1,'Text']]] -]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js deleted file mode 100644 index 4dcb8e61..00000000 --- a/docs/html/search/all_6.js +++ /dev/null @@ -1,31 +0,0 @@ -var searchData= -[ - ['g_26',['g',['../classmColor.html#a0cd1254821d108bb8c5be8ec5536f8ec',1,'mColor']]], - ['getanchor_27',['getAnchor',['../classText.html#a445117756f52b37ae8bce225e254bea6',1,'Text']]], - ['getattribute_28',['getAttribute',['../classParser.html#aa1c81b338cab55b128d0c2b6f48843a5',1,'Parser']]], - ['getattributes_29',['getAttributes',['../classGroup.html#a317fcd42fd61b83c0d932bd1eb2c753f',1,'Group']]], - ['getclass_30',['getClass',['../classPlygon.html#aab00a0d0230ea320271e96c326c6b919',1,'Plygon::getClass()'],['../classText.html#a405fac6f66711e0063e18e9e211e3a62',1,'Text::getClass()'],['../classSVGElement.html#adc98ebac66965dd303283cbf7ff28f38',1,'SVGElement::getClass()'],['../classRect.html#a4f6ba1c3eef4054847a89da472f392cd',1,'Rect::getClass()'],['../classPolyShape.html#afc263d5407ca7ea50e30d641d779b73b',1,'PolyShape::getClass()'],['../classPlyline.html#a5b9d86c75604d329037cd47e8ba3d5b9',1,'Plyline::getClass()'],['../classPath.html#ac99ffb44f19586a10ee39aa70fd4a260',1,'Path::getClass()'],['../classLine.html#a745f295541d412b49dac89423bd957a6',1,'Line::getClass()'],['../classGroup.html#a070e010084eaac6131e1bf814d10d234',1,'Group::getClass()'],['../classEll.html#a0d0a2a70c06878c5769bd7d092277892',1,'Ell::getClass()'],['../classCircle.html#a09523e46318092d42a5969a1da5613bb',1,'Circle::getClass()']]], - ['getcontent_31',['getContent',['../classText.html#ac593599637e5e7f0f929c59b440f1b94',1,'Text']]], - ['getdirection_32',['getDirection',['../classLine.html#adb348ce7ddf4b500c3593b7126aa4451',1,'Line']]], - ['getelements_33',['getElements',['../classGroup.html#a310fa83ccb20841373c11b6b4ac1d336',1,'Group']]], - ['getfillcolor_34',['getFillColor',['../classSVGElement.html#abb012cad5d6e9ee7a413f46042f99429',1,'SVGElement']]], - ['getfillrule_35',['getFillRule',['../classPlyline.html#ad386f98aea56800553a8268ab78ce374',1,'Plyline::getFillRule()'],['../classPlygon.html#a97b4c008055f2b2514e7a101fcbdb9b3',1,'Plygon::getFillRule()'],['../classPath.html#a9395325e65f86fd2a4be2dc24408753a',1,'Path::getFillRule()']]], - ['getfloatattribute_36',['getFloatAttribute',['../classParser.html#a23d95ecfeae834319e3ac55fbb213bb1',1,'Parser']]], - ['getfontsize_37',['getFontSize',['../classText.html#a6e799a9b0ba6f88e704eea12599d3d5c',1,'Text']]], - ['getfontstyle_38',['getFontStyle',['../classText.html#a86fd1927b692d6691c8dd3901b6f6e48',1,'Text']]], - ['getheight_39',['getHeight',['../classRect.html#a418fffe5bb9368f4e158b63e13faba16',1,'Rect']]], - ['getinstance_40',['getInstance',['../classParser.html#a06952fa44f19fdb573c1355ac26454c5',1,'Parser::getInstance()'],['../classRenderer.html#ac1bf10ff8b4f967f0d416a26d482abd6',1,'Renderer::getInstance()'],['../classViewer.html#a8235c9da7e144d7139c91901c0051cd8',1,'Viewer::getInstance()']]], - ['getlength_41',['getLength',['../classLine.html#afe6672bc7667cf45739c46f9fc8cb237',1,'Line']]], - ['getoutlinecolor_42',['getOutlineColor',['../classSVGElement.html#a9a243b2b8464d57df28f3f3e8c52511e',1,'SVGElement']]], - ['getoutlinethickness_43',['getOutlineThickness',['../classSVGElement.html#a2e4b1a48bfbc34a6a9f17bfd4b89eb51',1,'SVGElement']]], - ['getparent_44',['getParent',['../classSVGElement.html#a1b075314d4cda4fa895688979fe462fd',1,'SVGElement']]], - ['getpoints_45',['getPoints',['../classPath.html#a9d701e9231022249523970101bbc749c',1,'Path::getPoints()'],['../classPolyShape.html#a27704ef9fd50c041d1d233e9d99a4fd4',1,'PolyShape::getPoints()']]], - ['getposition_46',['getPosition',['../classSVGElement.html#a4e1ed8bb29fd4dbeb35471315976b3a2',1,'SVGElement']]], - ['getradius_47',['getRadius',['../classEll.html#a00d607a5238705b552ec61b4409b76c1',1,'Ell::getRadius()'],['../classRect.html#a31ca84cc8755233b5e61d22189f637b0',1,'Rect::getRadius()']]], - ['getroot_48',['getRoot',['../classParser.html#a59ed4455eaec306cde11939785c4e71a',1,'Parser']]], - ['gettransformorder_49',['getTransformOrder',['../classParser.html#abd879ea781803a60e89675479e1d75f6',1,'Parser']]], - ['gettransforms_50',['getTransforms',['../classSVGElement.html#a5f111964efd20e98eafafb3d168a1e87',1,'SVGElement']]], - ['getwidth_51',['getWidth',['../classRect.html#a9c1dd853ea5df8e7c96a11bba72cc67a',1,'Rect']]], - ['green_52',['Green',['../classmColor.html#aa69dc1cb58cec64672952d1e84744f8c',1,'mColor']]], - ['group_53',['Group',['../classGroup.html',1,'']]] -]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js deleted file mode 100644 index c2f67ebb..00000000 --- a/docs/html/search/all_7.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['handlekeydown_54',['handleKeyDown',['../classViewer.html#a8bcd4fdeb5c26092d65fc14474afeb38',1,'Viewer']]], - ['handlekeyevent_55',['handleKeyEvent',['../classViewer.html#a643c2fc659f06f4d4bfcefbad22ebd75',1,'Viewer']]], - ['handleleftbuttondown_56',['handleLeftButtonDown',['../classViewer.html#a2b889c5d09c8577ad1580dd610ac5678',1,'Viewer']]], - ['handleleftbuttonup_57',['handleLeftButtonUp',['../classViewer.html#ae0c94514f0897aa84732024855520e28',1,'Viewer']]], - ['handlemouseevent_58',['handleMouseEvent',['../classViewer.html#acb15ba2e5d3bab2ba58da0db724b3bd1',1,'Viewer']]], - ['handlemousemove_59',['handleMouseMove',['../classViewer.html#a81a24ea13ee1e7e8c83be60672a7a11e',1,'Viewer']]], - ['handlemousewheel_60',['handleMouseWheel',['../classViewer.html#a940c6147b33b273afdff6eef7309d500',1,'Viewer']]], - ['height_61',['height',['../classRect.html#a31428cce67b56b6daf168131c7dbe1e8',1,'Rect']]] -]; diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js deleted file mode 100644 index 5dc30dc1..00000000 --- a/docs/html/search/all_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['last_5fmouse_5fpos_64',['last_mouse_pos',['../classViewer.html#a77bc329e7ae0aecaf60a4de4f8dcc037',1,'Viewer']]], - ['line_65',['Line',['../classLine.html',1,'Line'],['../classLine.html#ab6e165ec2c3f412d5e5a860b28a52b4c',1,'Line::Line()']]] -]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js deleted file mode 100644 index 50d3ca26..00000000 --- a/docs/html/search/all_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['needs_5frepaint_68',['needs_repaint',['../classViewer.html#a59a507a835919e78114601d5bd1784e6',1,'Viewer']]] -]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js deleted file mode 100644 index 1ead811b..00000000 --- a/docs/html/search/all_c.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['offset_5fx_69',['offset_x',['../classViewer.html#a3e16ebbf5c0ed98dc75fe2c4d46fe0d5',1,'Viewer']]], - ['offset_5fy_70',['offset_y',['../classViewer.html#a30b0f57907c82de620339e105f9a3c5b',1,'Viewer']]], - ['operator_3c_3c_71',['operator<<',['../classmColor.html#a1887c93301ffe92701baf17d6af3418e',1,'mColor']]], - ['operator_3d_72',['operator=',['../classRenderer.html#aa42607899757d0a1c5e8fe0aa4cb5a7f',1,'Renderer::operator=()'],['../classViewer.html#a3d14cceacd94622e6b9d5d71bfb5b64f',1,'Viewer::operator=()']]] -]; diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js deleted file mode 100644 index 2531a2c1..00000000 --- a/docs/html/search/all_d.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['parent_73',['parent',['../classSVGElement.html#adee748c3014de1c1ebd20411a52e824a',1,'SVGElement']]], - ['parsecircle_74',['parseCircle',['../classParser.html#ab48a0797fe7ab0b7d4d00d4309a1b49f',1,'Parser']]], - ['parsecolor_75',['parseColor',['../classParser.html#af3820c3ea6da58ce2e7d897d5d0b59cb',1,'Parser']]], - ['parseelements_76',['parseElements',['../classParser.html#aaf9f19591ff93f0c0c2fd68955e4a4af',1,'Parser']]], - ['parseellipse_77',['parseEllipse',['../classParser.html#af7bd35de9ae9990807b8d63fc8433384',1,'Parser']]], - ['parseline_78',['parseLine',['../classParser.html#ae4f868faab1653fc9bb53902c3284dc3',1,'Parser']]], - ['parsepath_79',['parsePath',['../classParser.html#a118d55f338510ccaf3b9352e88237759',1,'Parser']]], - ['parsepathpoints_80',['parsePathPoints',['../classParser.html#a84d781820ab7c167496def7ae93fa3df',1,'Parser']]], - ['parsepoints_81',['parsePoints',['../classParser.html#af42401b34e756cf3d19940d795e9be37',1,'Parser']]], - ['parsepolygon_82',['parsePolygon',['../classParser.html#a95b6a4c1e523ac49e891c4abc1cb664b',1,'Parser']]], - ['parsepolyline_83',['parsePolyline',['../classParser.html#a7556a6ba41ab1a14aaa77ef4734e0f12',1,'Parser']]], - ['parser_84',['Parser',['../classParser.html#a350fc3e35535c5891cd9e36e79ee546a',1,'Parser::Parser(const std::string &file_name)'],['../classParser.html#a48044a8caa14a251cb4dad9fb363658e',1,'Parser::Parser(const Parser &)=delete'],['../classParser.html',1,'Parser']]], - ['parserect_85',['parseRect',['../classParser.html#ade5b3a22b5aa10f986ae56218701a312',1,'Parser']]], - ['parseshape_86',['parseShape',['../classParser.html#a6835a56be443bac2712300d85f08a1f0',1,'Parser']]], - ['parsetext_87',['parseText',['../classParser.html#a9063a336c4ab03d9476990aedaa76ff5',1,'Parser']]], - ['path_88',['Path',['../classPath.html#a089f2f59cc5574ce9e93826891044378',1,'Path::Path()'],['../classPath.html',1,'Path']]], - ['pathpoint_89',['PathPoint',['../structPathPoint.html',1,'']]], - ['plygon_90',['Plygon',['../classPlygon.html',1,'Plygon'],['../classPlygon.html#ac3f4fb224f4f84c3bd6e41093cd847cd',1,'Plygon::Plygon()']]], - ['plyline_91',['Plyline',['../classPlyline.html',1,'Plyline'],['../classPlyline.html#a8bf7677d7adb76f146607ef1aaa49bd3',1,'Plyline::Plyline()']]], - ['points_92',['points',['../classPath.html#a1880b844baafdeca91a7cf5d155cf9f1',1,'Path::points()'],['../classPolyShape.html#acbd1d536ad25e34b160e849a0fc12697',1,'PolyShape::points()']]], - ['polyshape_93',['PolyShape',['../classPolyShape.html#a6fd054647bea080272ed79bbea7080ac',1,'PolyShape::PolyShape()'],['../classPolyShape.html',1,'PolyShape']]], - ['position_94',['position',['../classSVGElement.html#acf9b9906b6d0cba8bb5c0b38b032e40f',1,'SVGElement']]], - ['printdata_95',['printData',['../classEll.html#a1d6d60039d2405f2b7aa117206d128fb',1,'Ell::printData()'],['../classGroup.html#a42fa18c4215ad3669db32b78e22303fa',1,'Group::printData()'],['../classPath.html#a3d2df8f3367db525772586065e16151e',1,'Path::printData()'],['../classPolyShape.html#a40a83ac567156de6da65adb1a4380c7c',1,'PolyShape::printData()'],['../classRect.html#a66351fe7a171c2b3ed5f4bdf8d6661ba',1,'Rect::printData()'],['../classSVGElement.html#ad4bcd981ae7431161013811024b452e1',1,'SVGElement::printData()'],['../classText.html#a40e38d59ba9b34df9900375409f6f03f',1,'Text::printData()']]], - ['printshapesdata_96',['printShapesData',['../classParser.html#a3d8927f2e26abf6a63bd850c154b23c6',1,'Parser']]] -]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js deleted file mode 100644 index 2e361a54..00000000 --- a/docs/html/search/all_e.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['r_97',['r',['../classmColor.html#a427453d377b30c62f7d25f47120959d6',1,'mColor']]], - ['radius_98',['radius',['../classEll.html#af57a48abe0e2bc8806e73dfa7762388f',1,'Ell::radius()'],['../classRect.html#a7857e3568d2a2a35bf0c6b28028005b5',1,'Rect::radius()']]], - ['rect_99',['Rect',['../classRect.html',1,'Rect'],['../classRect.html#ad52d66e844d848d0e95f744b697e7beb',1,'Rect::Rect()']]], - ['red_100',['Red',['../classmColor.html#aa0fc6fe3033f7ff2806c59e39c072dbc',1,'mColor']]], - ['renderer_101',['Renderer',['../classRenderer.html',1,'Renderer'],['../classRenderer.html#a8c6e15f666cb188a936004add75e6c6b',1,'Renderer::Renderer(const Renderer &)=delete'],['../classRenderer.html#a7ebf46f54dab9905f79b80f7fddb76a6',1,'Renderer::Renderer()']]], - ['root_102',['root',['../classParser.html#a13a5e2fdac62670c1584de1edbba77f2',1,'Parser']]], - ['rotate_5fangle_103',['rotate_angle',['../classViewer.html#a82dfd34668f986b72e51ee86d4029fc6',1,'Viewer']]] -]; diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js deleted file mode 100644 index 802e4ecb..00000000 --- a/docs/html/search/all_f.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['setanchor_104',['setAnchor',['../classText.html#aa503905beb9dddf11c9c579424d0a84f',1,'Text']]], - ['setcontent_105',['setContent',['../classText.html#a12e8ae19a8e677eb6f1c2dc2716dcab0',1,'Text']]], - ['setdirection_106',['setDirection',['../classLine.html#ab46a879365e623e8b360c2db54d76782',1,'Line']]], - ['setfillcolor_107',['setFillColor',['../classSVGElement.html#abf7eef6d09fedba0d0f50a0f1a4be2fb',1,'SVGElement']]], - ['setfillrule_108',['setFillRule',['../classPath.html#ad2ba583a2dd567c3295ea62817b541e9',1,'Path::setFillRule()'],['../classPlygon.html#ac18faac47e1fa6bce3c7167f1e87bef4',1,'Plygon::setFillRule()'],['../classPlyline.html#ab6d84eb184e27476516fb6d9aa9e9cf4',1,'Plyline::setFillRule()']]], - ['setfontsize_109',['setFontSize',['../classText.html#a6a04680d93c625645278b1d1111420bb',1,'Text']]], - ['setfontstyle_110',['setFontStyle',['../classText.html#a4f24f78f8a962e758b70c5d9fd85b7cb',1,'Text']]], - ['setheight_111',['setHeight',['../classRect.html#a964a6107f787f612798bda5c0423fb5b',1,'Rect']]], - ['setoutlinecolor_112',['setOutlineColor',['../classSVGElement.html#ac0cc2f6d2e01d364a695bebaa7db18d2',1,'SVGElement']]], - ['setoutlinethickness_113',['setOutlineThickness',['../classSVGElement.html#a88653ebe8b92ec881ab436ea968375a8',1,'SVGElement']]], - ['setparent_114',['setParent',['../classSVGElement.html#a43b3bf06fae88a1634a189272088d11d',1,'SVGElement']]], - ['setposition_115',['setPosition',['../classSVGElement.html#a77aefe4b7e9dbf180cc531c969d0116d',1,'SVGElement::setPosition(float x, float y)'],['../classSVGElement.html#aec8a2f582f21a559c05d791e017efbd5',1,'SVGElement::setPosition(const Vector2Df &position)']]], - ['setradius_116',['setRadius',['../classEll.html#a9f67131ba02c02fccf42c52f5f04525e',1,'Ell::setRadius()'],['../classRect.html#a28b51c4f99cfa0208a2a5cef350c2a5e',1,'Rect::setRadius()']]], - ['settransforms_117',['setTransforms',['../classSVGElement.html#a00fef2ebc5df4838b3f9bd7111b117c5',1,'SVGElement']]], - ['setwidth_118',['setWidth',['../classRect.html#ae11a39d12f7a766f773e662b0830848d',1,'Rect']]], - ['shapes_119',['shapes',['../classGroup.html#a6ff10d6fceb2a78103db2d9783de6f41',1,'Group']]], - ['stroke_120',['stroke',['../classSVGElement.html#aab937dcb566cd83d94d00d69b4083f13',1,'SVGElement']]], - ['stroke_5fwidth_121',['stroke_width',['../classSVGElement.html#a88449b487a890e3765ae20e96ee95c06',1,'SVGElement']]], - ['style_122',['style',['../classText.html#a12ee81ccf865a414867d4101c8dbbdb2',1,'Text']]], - ['svgelement_123',['SVGElement',['../classSVGElement.html',1,'SVGElement'],['../classSVGElement.html#ad30205005009d2ba4820d3ce372e81ea',1,'SVGElement::SVGElement()']]] -]; diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js deleted file mode 100644 index 50c1ca37..00000000 --- a/docs/html/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['circle_139',['Circle',['../classCircle.html',1,'']]] -]; diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js deleted file mode 100644 index 1daf29c6..00000000 --- a/docs/html/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ell_140',['Ell',['../classEll.html',1,'']]] -]; diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js deleted file mode 100644 index 144d1d0a..00000000 --- a/docs/html/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['group_141',['Group',['../classGroup.html',1,'']]] -]; diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js deleted file mode 100644 index 71cd4a9b..00000000 --- a/docs/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['line_142',['Line',['../classLine.html',1,'']]] -]; diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js deleted file mode 100644 index 07ff012f..00000000 --- a/docs/html/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mcolor_143',['mColor',['../classmColor.html',1,'']]] -]; diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js deleted file mode 100644 index 6d31d2c5..00000000 --- a/docs/html/search/classes_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['parser_144',['Parser',['../classParser.html',1,'']]], - ['path_145',['Path',['../classPath.html',1,'']]], - ['pathpoint_146',['PathPoint',['../structPathPoint.html',1,'']]], - ['plygon_147',['Plygon',['../classPlygon.html',1,'']]], - ['plyline_148',['Plyline',['../classPlyline.html',1,'']]], - ['polyshape_149',['PolyShape',['../classPolyShape.html',1,'']]] -]; diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js deleted file mode 100644 index dc561fd9..00000000 --- a/docs/html/search/classes_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['rect_150',['Rect',['../classRect.html',1,'']]], - ['renderer_151',['Renderer',['../classRenderer.html',1,'']]] -]; diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js deleted file mode 100644 index 402a7a7e..00000000 --- a/docs/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['svgelement_152',['SVGElement',['../classSVGElement.html',1,'']]] -]; diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js deleted file mode 100644 index 05116491..00000000 --- a/docs/html/search/classes_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['text_153',['Text',['../classText.html',1,'']]] -]; diff --git a/docs/html/search/classes_9.js b/docs/html/search/classes_9.js deleted file mode 100644 index fa452178..00000000 --- a/docs/html/search/classes_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['vector2d_154',['Vector2D',['../classVector2D.html',1,'']]], - ['vector2d_3c_20float_20_3e_155',['Vector2D< float >',['../classVector2D.html',1,'']]], - ['viewer_156',['Viewer',['../classViewer.html',1,'']]] -]; diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js deleted file mode 100644 index 4e832c97..00000000 --- a/docs/html/search/functions_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['addelement_157',['addElement',['../classGroup.html#af4dafed0506ca5e9ea9e1028b1504919',1,'Group::addElement()'],['../classSVGElement.html#af699f9aa795572c2873e520849579881',1,'SVGElement::addElement()']]], - ['addpoint_158',['addPoint',['../classPath.html#ad4273c2a1b288fe43dd86375afc16f66',1,'Path::addPoint()'],['../classPolyShape.html#a3a5e4952aff469f241ee1c9b92833f55',1,'PolyShape::addPoint()']]], - ['applytransform_159',['applyTransform',['../classRenderer.html#a8d159bc1ea8f4152339d6c5eead27e45',1,'Renderer']]] -]; diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js deleted file mode 100644 index b324d451..00000000 --- a/docs/html/search/functions_2.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['draw_161',['draw',['../classRenderer.html#a1fac47f9b1c4c3fb1151f2b6ecb282f6',1,'Renderer']]], - ['drawcircle_162',['drawCircle',['../classRenderer.html#a9b5ca422ec7f1328d854cc4bff269858',1,'Renderer']]], - ['drawellipse_163',['drawEllipse',['../classRenderer.html#af4d92e92abb79e4431f7331f792194d9',1,'Renderer']]], - ['drawline_164',['drawLine',['../classRenderer.html#ab68c9e02c7eadf1f18286c9ecf0d90ca',1,'Renderer']]], - ['drawpath_165',['drawPath',['../classRenderer.html#a6cbcbb11e386c26eacef0b97342fee77',1,'Renderer']]], - ['drawpolygon_166',['drawPolygon',['../classRenderer.html#a27b883787b8f38afd04924edc97b5a04',1,'Renderer']]], - ['drawpolyline_167',['drawPolyline',['../classRenderer.html#a4e73148b7da0f585084520d12c514344',1,'Renderer']]], - ['drawrectangle_168',['drawRectangle',['../classRenderer.html#abf163a7895594e0a4ee5662805b1b572',1,'Renderer']]], - ['drawtext_169',['drawText',['../classRenderer.html#a87ce996c3ed0f963de9ef6c293ee3aec',1,'Renderer']]] -]; diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js deleted file mode 100644 index 36efbc28..00000000 --- a/docs/html/search/functions_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ell_170',['Ell',['../classEll.html#a4a9956ca82cb9f957e993fa0c0faced6',1,'Ell']]] -]; diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js deleted file mode 100644 index 30f4091d..00000000 --- a/docs/html/search/functions_4.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['getanchor_171',['getAnchor',['../classText.html#a445117756f52b37ae8bce225e254bea6',1,'Text']]], - ['getattribute_172',['getAttribute',['../classParser.html#aa1c81b338cab55b128d0c2b6f48843a5',1,'Parser']]], - ['getattributes_173',['getAttributes',['../classGroup.html#a317fcd42fd61b83c0d932bd1eb2c753f',1,'Group']]], - ['getclass_174',['getClass',['../classCircle.html#a09523e46318092d42a5969a1da5613bb',1,'Circle::getClass()'],['../classText.html#a405fac6f66711e0063e18e9e211e3a62',1,'Text::getClass()'],['../classSVGElement.html#adc98ebac66965dd303283cbf7ff28f38',1,'SVGElement::getClass()'],['../classRect.html#a4f6ba1c3eef4054847a89da472f392cd',1,'Rect::getClass()'],['../classPolyShape.html#afc263d5407ca7ea50e30d641d779b73b',1,'PolyShape::getClass()'],['../classPlyline.html#a5b9d86c75604d329037cd47e8ba3d5b9',1,'Plyline::getClass()'],['../classPlygon.html#aab00a0d0230ea320271e96c326c6b919',1,'Plygon::getClass()'],['../classPath.html#ac99ffb44f19586a10ee39aa70fd4a260',1,'Path::getClass()'],['../classLine.html#a745f295541d412b49dac89423bd957a6',1,'Line::getClass()'],['../classGroup.html#a070e010084eaac6131e1bf814d10d234',1,'Group::getClass()'],['../classEll.html#a0d0a2a70c06878c5769bd7d092277892',1,'Ell::getClass()']]], - ['getcontent_175',['getContent',['../classText.html#ac593599637e5e7f0f929c59b440f1b94',1,'Text']]], - ['getdirection_176',['getDirection',['../classLine.html#adb348ce7ddf4b500c3593b7126aa4451',1,'Line']]], - ['getelements_177',['getElements',['../classGroup.html#a310fa83ccb20841373c11b6b4ac1d336',1,'Group']]], - ['getfillcolor_178',['getFillColor',['../classSVGElement.html#abb012cad5d6e9ee7a413f46042f99429',1,'SVGElement']]], - ['getfillrule_179',['getFillRule',['../classPlyline.html#ad386f98aea56800553a8268ab78ce374',1,'Plyline::getFillRule()'],['../classPath.html#a9395325e65f86fd2a4be2dc24408753a',1,'Path::getFillRule()'],['../classPlygon.html#a97b4c008055f2b2514e7a101fcbdb9b3',1,'Plygon::getFillRule()']]], - ['getfloatattribute_180',['getFloatAttribute',['../classParser.html#a23d95ecfeae834319e3ac55fbb213bb1',1,'Parser']]], - ['getfontsize_181',['getFontSize',['../classText.html#a6e799a9b0ba6f88e704eea12599d3d5c',1,'Text']]], - ['getfontstyle_182',['getFontStyle',['../classText.html#a86fd1927b692d6691c8dd3901b6f6e48',1,'Text']]], - ['getheight_183',['getHeight',['../classRect.html#a418fffe5bb9368f4e158b63e13faba16',1,'Rect']]], - ['getinstance_184',['getInstance',['../classParser.html#a06952fa44f19fdb573c1355ac26454c5',1,'Parser::getInstance()'],['../classRenderer.html#ac1bf10ff8b4f967f0d416a26d482abd6',1,'Renderer::getInstance()'],['../classViewer.html#a8235c9da7e144d7139c91901c0051cd8',1,'Viewer::getInstance()']]], - ['getlength_185',['getLength',['../classLine.html#afe6672bc7667cf45739c46f9fc8cb237',1,'Line']]], - ['getoutlinecolor_186',['getOutlineColor',['../classSVGElement.html#a9a243b2b8464d57df28f3f3e8c52511e',1,'SVGElement']]], - ['getoutlinethickness_187',['getOutlineThickness',['../classSVGElement.html#a2e4b1a48bfbc34a6a9f17bfd4b89eb51',1,'SVGElement']]], - ['getparent_188',['getParent',['../classSVGElement.html#a1b075314d4cda4fa895688979fe462fd',1,'SVGElement']]], - ['getpoints_189',['getPoints',['../classPath.html#a9d701e9231022249523970101bbc749c',1,'Path::getPoints()'],['../classPolyShape.html#a27704ef9fd50c041d1d233e9d99a4fd4',1,'PolyShape::getPoints()']]], - ['getposition_190',['getPosition',['../classSVGElement.html#a4e1ed8bb29fd4dbeb35471315976b3a2',1,'SVGElement']]], - ['getradius_191',['getRadius',['../classEll.html#a00d607a5238705b552ec61b4409b76c1',1,'Ell::getRadius()'],['../classRect.html#a31ca84cc8755233b5e61d22189f637b0',1,'Rect::getRadius()']]], - ['getroot_192',['getRoot',['../classParser.html#a59ed4455eaec306cde11939785c4e71a',1,'Parser']]], - ['gettransformorder_193',['getTransformOrder',['../classParser.html#abd879ea781803a60e89675479e1d75f6',1,'Parser']]], - ['gettransforms_194',['getTransforms',['../classSVGElement.html#a5f111964efd20e98eafafb3d168a1e87',1,'SVGElement']]], - ['getwidth_195',['getWidth',['../classRect.html#a9c1dd853ea5df8e7c96a11bba72cc67a',1,'Rect']]] -]; diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js deleted file mode 100644 index b5a5ab41..00000000 --- a/docs/html/search/functions_5.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['handlekeydown_196',['handleKeyDown',['../classViewer.html#a8bcd4fdeb5c26092d65fc14474afeb38',1,'Viewer']]], - ['handlekeyevent_197',['handleKeyEvent',['../classViewer.html#a643c2fc659f06f4d4bfcefbad22ebd75',1,'Viewer']]], - ['handleleftbuttondown_198',['handleLeftButtonDown',['../classViewer.html#a2b889c5d09c8577ad1580dd610ac5678',1,'Viewer']]], - ['handleleftbuttonup_199',['handleLeftButtonUp',['../classViewer.html#ae0c94514f0897aa84732024855520e28',1,'Viewer']]], - ['handlemouseevent_200',['handleMouseEvent',['../classViewer.html#acb15ba2e5d3bab2ba58da0db724b3bd1',1,'Viewer']]], - ['handlemousemove_201',['handleMouseMove',['../classViewer.html#a81a24ea13ee1e7e8c83be60672a7a11e',1,'Viewer']]], - ['handlemousewheel_202',['handleMouseWheel',['../classViewer.html#a940c6147b33b273afdff6eef7309d500',1,'Viewer']]] -]; diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js deleted file mode 100644 index bc5db057..00000000 --- a/docs/html/search/functions_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['line_203',['Line',['../classLine.html#ab6e165ec2c3f412d5e5a860b28a52b4c',1,'Line']]] -]; diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js deleted file mode 100644 index 70614e62..00000000 --- a/docs/html/search/functions_9.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['parsecircle_206',['parseCircle',['../classParser.html#ab48a0797fe7ab0b7d4d00d4309a1b49f',1,'Parser']]], - ['parsecolor_207',['parseColor',['../classParser.html#af3820c3ea6da58ce2e7d897d5d0b59cb',1,'Parser']]], - ['parseelements_208',['parseElements',['../classParser.html#aaf9f19591ff93f0c0c2fd68955e4a4af',1,'Parser']]], - ['parseellipse_209',['parseEllipse',['../classParser.html#af7bd35de9ae9990807b8d63fc8433384',1,'Parser']]], - ['parseline_210',['parseLine',['../classParser.html#ae4f868faab1653fc9bb53902c3284dc3',1,'Parser']]], - ['parsepath_211',['parsePath',['../classParser.html#a118d55f338510ccaf3b9352e88237759',1,'Parser']]], - ['parsepathpoints_212',['parsePathPoints',['../classParser.html#a84d781820ab7c167496def7ae93fa3df',1,'Parser']]], - ['parsepoints_213',['parsePoints',['../classParser.html#af42401b34e756cf3d19940d795e9be37',1,'Parser']]], - ['parsepolygon_214',['parsePolygon',['../classParser.html#a95b6a4c1e523ac49e891c4abc1cb664b',1,'Parser']]], - ['parsepolyline_215',['parsePolyline',['../classParser.html#a7556a6ba41ab1a14aaa77ef4734e0f12',1,'Parser']]], - ['parser_216',['Parser',['../classParser.html#a48044a8caa14a251cb4dad9fb363658e',1,'Parser::Parser(const Parser &)=delete'],['../classParser.html#a350fc3e35535c5891cd9e36e79ee546a',1,'Parser::Parser(const std::string &file_name)']]], - ['parserect_217',['parseRect',['../classParser.html#ade5b3a22b5aa10f986ae56218701a312',1,'Parser']]], - ['parseshape_218',['parseShape',['../classParser.html#a6835a56be443bac2712300d85f08a1f0',1,'Parser']]], - ['parsetext_219',['parseText',['../classParser.html#a9063a336c4ab03d9476990aedaa76ff5',1,'Parser']]], - ['path_220',['Path',['../classPath.html#a089f2f59cc5574ce9e93826891044378',1,'Path']]], - ['plygon_221',['Plygon',['../classPlygon.html#ac3f4fb224f4f84c3bd6e41093cd847cd',1,'Plygon']]], - ['plyline_222',['Plyline',['../classPlyline.html#a8bf7677d7adb76f146607ef1aaa49bd3',1,'Plyline']]], - ['polyshape_223',['PolyShape',['../classPolyShape.html#a6fd054647bea080272ed79bbea7080ac',1,'PolyShape']]], - ['printdata_224',['printData',['../classEll.html#a1d6d60039d2405f2b7aa117206d128fb',1,'Ell::printData()'],['../classGroup.html#a42fa18c4215ad3669db32b78e22303fa',1,'Group::printData()'],['../classPath.html#a3d2df8f3367db525772586065e16151e',1,'Path::printData()'],['../classPolyShape.html#a40a83ac567156de6da65adb1a4380c7c',1,'PolyShape::printData()'],['../classRect.html#a66351fe7a171c2b3ed5f4bdf8d6661ba',1,'Rect::printData()'],['../classSVGElement.html#ad4bcd981ae7431161013811024b452e1',1,'SVGElement::printData()'],['../classText.html#a40e38d59ba9b34df9900375409f6f03f',1,'Text::printData()']]], - ['printshapesdata_225',['printShapesData',['../classParser.html#a3d8927f2e26abf6a63bd850c154b23c6',1,'Parser']]] -]; diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js deleted file mode 100644 index 7379f9b5..00000000 --- a/docs/html/search/functions_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['rect_226',['Rect',['../classRect.html#ad52d66e844d848d0e95f744b697e7beb',1,'Rect']]], - ['renderer_227',['Renderer',['../classRenderer.html#a8c6e15f666cb188a936004add75e6c6b',1,'Renderer::Renderer(const Renderer &)=delete'],['../classRenderer.html#a7ebf46f54dab9905f79b80f7fddb76a6',1,'Renderer::Renderer()']]] -]; diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js deleted file mode 100644 index 58e1b9f1..00000000 --- a/docs/html/search/functions_b.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['setanchor_228',['setAnchor',['../classText.html#aa503905beb9dddf11c9c579424d0a84f',1,'Text']]], - ['setcontent_229',['setContent',['../classText.html#a12e8ae19a8e677eb6f1c2dc2716dcab0',1,'Text']]], - ['setdirection_230',['setDirection',['../classLine.html#ab46a879365e623e8b360c2db54d76782',1,'Line']]], - ['setfillcolor_231',['setFillColor',['../classSVGElement.html#abf7eef6d09fedba0d0f50a0f1a4be2fb',1,'SVGElement']]], - ['setfillrule_232',['setFillRule',['../classPath.html#ad2ba583a2dd567c3295ea62817b541e9',1,'Path::setFillRule()'],['../classPlygon.html#ac18faac47e1fa6bce3c7167f1e87bef4',1,'Plygon::setFillRule()'],['../classPlyline.html#ab6d84eb184e27476516fb6d9aa9e9cf4',1,'Plyline::setFillRule()']]], - ['setfontsize_233',['setFontSize',['../classText.html#a6a04680d93c625645278b1d1111420bb',1,'Text']]], - ['setfontstyle_234',['setFontStyle',['../classText.html#a4f24f78f8a962e758b70c5d9fd85b7cb',1,'Text']]], - ['setheight_235',['setHeight',['../classRect.html#a964a6107f787f612798bda5c0423fb5b',1,'Rect']]], - ['setoutlinecolor_236',['setOutlineColor',['../classSVGElement.html#ac0cc2f6d2e01d364a695bebaa7db18d2',1,'SVGElement']]], - ['setoutlinethickness_237',['setOutlineThickness',['../classSVGElement.html#a88653ebe8b92ec881ab436ea968375a8',1,'SVGElement']]], - ['setparent_238',['setParent',['../classSVGElement.html#a43b3bf06fae88a1634a189272088d11d',1,'SVGElement']]], - ['setposition_239',['setPosition',['../classSVGElement.html#a77aefe4b7e9dbf180cc531c969d0116d',1,'SVGElement::setPosition(float x, float y)'],['../classSVGElement.html#aec8a2f582f21a559c05d791e017efbd5',1,'SVGElement::setPosition(const Vector2Df &position)']]], - ['setradius_240',['setRadius',['../classEll.html#a9f67131ba02c02fccf42c52f5f04525e',1,'Ell::setRadius()'],['../classRect.html#a28b51c4f99cfa0208a2a5cef350c2a5e',1,'Rect::setRadius()']]], - ['settransforms_241',['setTransforms',['../classSVGElement.html#a00fef2ebc5df4838b3f9bd7111b117c5',1,'SVGElement']]], - ['setwidth_242',['setWidth',['../classRect.html#ae11a39d12f7a766f773e662b0830848d',1,'Rect']]], - ['svgelement_243',['SVGElement',['../classSVGElement.html#ad30205005009d2ba4820d3ce372e81ea',1,'SVGElement']]] -]; diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js deleted file mode 100644 index 532c2b39..00000000 --- a/docs/html/search/functions_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['text_244',['Text',['../classText.html#a92c5df61031c3a9af813f9cc6978f34a',1,'Text']]] -]; diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js deleted file mode 100644 index df144e64..00000000 --- a/docs/html/search/functions_e.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['_7eparser_247',['~Parser',['../classParser.html#a3e658b5917a93a3ef648050d060e3a93',1,'Parser']]], - ['_7esvgelement_248',['~SVGElement',['../classSVGElement.html#a5087280fd4bbb637c3cde64e44e974f1',1,'SVGElement']]], - ['_7eviewer_249',['~Viewer',['../classViewer.html#a324e5a6a1532fe5eac3f3b0e4792b2da',1,'Viewer']]] -]; diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js deleted file mode 100644 index b860de2a..00000000 --- a/docs/html/search/variables_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['a_250',['a',['../classmColor.html#ac086aa72806b8ce55fed3df9ba976f6c',1,'mColor']]], - ['anchor_251',['anchor',['../classText.html#a33f5c94508241a960c139923c284491e',1,'Text']]], - ['attributes_252',['attributes',['../classGroup.html#a9308f587c63720ccbe2bfd1bad868547',1,'Group']]] -]; diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js deleted file mode 100644 index bb3803f8..00000000 --- a/docs/html/search/variables_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['b_253',['b',['../classmColor.html#ad56f2424fa451364becdc4d1c4df657c',1,'mColor']]], - ['black_254',['Black',['../classmColor.html#aa3910d2b82d32c8aa4e50127874a6d03',1,'mColor']]], - ['blue_255',['Blue',['../classmColor.html#a59dc727125e9f3d4ed0c59433dfa0780',1,'mColor']]] -]; diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js deleted file mode 100644 index a68fb460..00000000 --- a/docs/html/search/variables_10.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['white_286',['White',['../classmColor.html#a73b9b91ca8c79e6e3876e5d83980ebec',1,'mColor']]], - ['width_287',['width',['../classRect.html#a800053c390ccb818add47e627e535a5e',1,'Rect']]] -]; diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js deleted file mode 100644 index 0faf446a..00000000 --- a/docs/html/search/variables_11.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['x_288',['x',['../classVector2D.html#a65e391ec61c185092a02cf6301d0fff7',1,'Vector2D']]] -]; diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js deleted file mode 100644 index cb983606..00000000 --- a/docs/html/search/variables_12.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['y_289',['y',['../classVector2D.html#a6a91fccbbd37162d28fa54aeeb88f9d2',1,'Vector2D']]], - ['yellow_290',['Yellow',['../classmColor.html#a68265f053324eea11265c7f8d7fdb5ff',1,'mColor']]] -]; diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js deleted file mode 100644 index feef47a6..00000000 --- a/docs/html/search/variables_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['content_256',['content',['../classText.html#a9336f13d0d4a26d41c2fd2e103ac5dde',1,'Text']]], - ['cyan_257',['Cyan',['../classmColor.html#a04a0d2485c1106ccc94d065a0e62ecfb',1,'mColor']]] -]; diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js deleted file mode 100644 index 5bafb5f4..00000000 --- a/docs/html/search/variables_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['direction_258',['direction',['../classLine.html#a3fe45077492213ef490739c6137200d1',1,'Line']]] -]; diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js deleted file mode 100644 index 4064568b..00000000 --- a/docs/html/search/variables_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fill_259',['fill',['../classSVGElement.html#a6d3a39e763d3273715ea11f8959f81b1',1,'SVGElement']]], - ['fill_5frule_260',['fill_rule',['../classPath.html#ac5abd8d5994a75cca56205c7e55a5b4f',1,'Path::fill_rule()'],['../classPlygon.html#a91c207c3142183a6714a700ee468a359',1,'Plygon::fill_rule()'],['../classPlyline.html#a71e8a6587d4656f6381e06925ad305d6',1,'Plyline::fill_rule()']]], - ['font_5fsize_261',['font_size',['../classText.html#a71158226b190f16477820e45b549133f',1,'Text']]] -]; diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js deleted file mode 100644 index 0fa917f2..00000000 --- a/docs/html/search/variables_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['g_262',['g',['../classmColor.html#a0cd1254821d108bb8c5be8ec5536f8ec',1,'mColor']]], - ['green_263',['Green',['../classmColor.html#aa69dc1cb58cec64672952d1e84744f8c',1,'mColor']]] -]; diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js deleted file mode 100644 index 0b826dcf..00000000 --- a/docs/html/search/variables_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['height_264',['height',['../classRect.html#a31428cce67b56b6daf168131c7dbe1e8',1,'Rect']]] -]; diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js deleted file mode 100644 index 1c95063d..00000000 --- a/docs/html/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['magenta_268',['Magenta',['../classmColor.html#a777df695011fdb21f6b5d3e6745389c4',1,'mColor']]] -]; diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js deleted file mode 100644 index 81b9d1d7..00000000 --- a/docs/html/search/variables_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['offset_5fx_270',['offset_x',['../classViewer.html#a3e16ebbf5c0ed98dc75fe2c4d46fe0d5',1,'Viewer']]], - ['offset_5fy_271',['offset_y',['../classViewer.html#a30b0f57907c82de620339e105f9a3c5b',1,'Viewer']]] -]; diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js deleted file mode 100644 index 97f58e77..00000000 --- a/docs/html/search/variables_c.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['parent_272',['parent',['../classSVGElement.html#adee748c3014de1c1ebd20411a52e824a',1,'SVGElement']]], - ['points_273',['points',['../classPath.html#a1880b844baafdeca91a7cf5d155cf9f1',1,'Path::points()'],['../classPolyShape.html#acbd1d536ad25e34b160e849a0fc12697',1,'PolyShape::points()']]], - ['position_274',['position',['../classSVGElement.html#acf9b9906b6d0cba8bb5c0b38b032e40f',1,'SVGElement']]] -]; diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js deleted file mode 100644 index a8d77c3f..00000000 --- a/docs/html/search/variables_d.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['r_275',['r',['../classmColor.html#a427453d377b30c62f7d25f47120959d6',1,'mColor']]], - ['radius_276',['radius',['../classEll.html#af57a48abe0e2bc8806e73dfa7762388f',1,'Ell::radius()'],['../classRect.html#a7857e3568d2a2a35bf0c6b28028005b5',1,'Rect::radius()']]], - ['red_277',['Red',['../classmColor.html#aa0fc6fe3033f7ff2806c59e39c072dbc',1,'mColor']]], - ['root_278',['root',['../classParser.html#a13a5e2fdac62670c1584de1edbba77f2',1,'Parser']]], - ['rotate_5fangle_279',['rotate_angle',['../classViewer.html#a82dfd34668f986b72e51ee86d4029fc6',1,'Viewer']]] -]; diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js deleted file mode 100644 index e969f6db..00000000 --- a/docs/html/search/variables_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['shapes_280',['shapes',['../classGroup.html#a6ff10d6fceb2a78103db2d9783de6f41',1,'Group']]], - ['stroke_281',['stroke',['../classSVGElement.html#aab937dcb566cd83d94d00d69b4083f13',1,'SVGElement']]], - ['stroke_5fwidth_282',['stroke_width',['../classSVGElement.html#a88449b487a890e3765ae20e96ee95c06',1,'SVGElement']]], - ['style_283',['style',['../classText.html#a12ee81ccf865a414867d4101c8dbbdb2',1,'Text']]] -]; diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js deleted file mode 100644 index 763ac272..00000000 --- a/docs/html/search/variables_f.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['transforms_284',['transforms',['../classSVGElement.html#aefeee5c1de3e802d9f5f0a54078170e6',1,'SVGElement']]], - ['transparent_285',['Transparent',['../classmColor.html#ac4f0afaa513bbe9e68c16156136d4ada',1,'mColor']]] -]; diff --git a/docs/html/structPathPoint.js b/docs/html/structPathPoint.js deleted file mode 100644 index 435c168c..00000000 --- a/docs/html/structPathPoint.js +++ /dev/null @@ -1,5 +0,0 @@ -var structPathPoint = -[ - [ "Point", "structPathPoint.html#a7af911b1e9c6b451f8e869b12ac7ef0c", null ], - [ "TC", "structPathPoint.html#ab87850db87370b39084e97ba96c4aca3", null ] -]; \ No newline at end of file diff --git a/docs/html/structPathPoint__coll__graph.md5 b/docs/html/structPathPoint__coll__graph.md5 deleted file mode 100644 index c5335de7..00000000 --- a/docs/html/structPathPoint__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -44cfe3d5c47850d8ec2bc990445752bd \ No newline at end of file diff --git a/docs/latex/code_documentation.pdf b/docs/latex/code_documentation.pdf deleted file mode 100644 index 941c5504dc6649387c8b9ee235f810ac71f1f03f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596536 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
  • (NI^ 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Ξ6unie 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

    n|?iq2wS!)~chn2|NyXg%V8ZMJ*h1xvP5-Nt>`6 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%0Ao>80vusY=7Gvwj`S}KA>qq~Wc?X8hpQhTL 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

    rACBA)+X`BHRA|xZMC!Hc7~F28=Zld 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


    @w|m^&p#A@*^j2><7!~RNA-$y$jdWvpjfIR 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 z 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

    &JCe`&qVu$os|9f;TKG-cIfycTX3Hmd| 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%0AgI#kO3b9#lRIRG8NK= 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 h-1y&z{lg>9V
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    diff --git a/docs/html/Circle_8hpp_source.html b/html/Circle_8hpp_source.html similarity index 98% rename from docs/html/Circle_8hpp_source.html rename to html/Circle_8hpp_source.html index b01c7e02..30c1db8b 100644 --- a/docs/html/Circle_8hpp_source.html +++ b/html/Circle_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -140,9 +140,9 @@
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    Vector2Df radius
    Radii of the ellipse in the x and y directions.
    Definition: Ellipse.hpp:14
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Color_8cpp_source.html b/html/Color_8cpp_source.html similarity index 99% rename from docs/html/Color_8cpp_source.html rename to html/Color_8cpp_source.html index 627d5610..1f081182 100644 --- a/docs/html/Color_8cpp_source.html +++ b/html/Color_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    diff --git a/docs/html/Color_8hpp_source.html b/html/Color_8hpp_source.html similarity index 99% rename from docs/html/Color_8hpp_source.html rename to html/Color_8hpp_source.html index 1df9b01e..6a7eec22 100644 --- a/docs/html/Color_8hpp_source.html +++ b/html/Color_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    diff --git a/docs/html/Ellipse_8cpp_source.html b/html/Ellipse_8cpp_source.html similarity index 73% rename from docs/html/Ellipse_8cpp_source.html rename to html/Ellipse_8cpp_source.html index 4215a146..0325ca86 100644 --- a/docs/html/Ellipse_8cpp_source.html +++ b/html/Ellipse_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -127,37 +127,40 @@
    4 
    5 Ell::Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill,
    6  mColor stroke, float stroke_thickness)
    -
    7  : radius(radius) {
    -
    8  setPosition(center);
    - - -
    11  setOutlineThickness(stroke_thickness);
    -
    12 }
    -
    13 
    -
    14 std::string Ell::getClass() const { return "Ellipse"; }
    -
    15 
    -
    16 void Ell::setRadius(const Vector2Df &radius) { this->radius = radius; }
    -
    17 
    -
    18 Vector2Df Ell::getRadius() const { return radius; }
    +
    7  : SVGElement(fill, stroke, stroke_thickness, center), radius(radius) {}
    +
    8 
    +
    9 std::string Ell::getClass() const { return "Ellipse"; }
    +
    10 
    +
    11 void Ell::setRadius(const Vector2Df &radius) { this->radius = radius; }
    +
    12 
    +
    13 Vector2Df Ell::getRadius() const { return radius; }
    +
    14 
    + +
    16  return Vector2Df(getPosition().x - getRadius().x,
    +
    17  getPosition().y - getRadius().y);
    +
    18 }
    19 
    -
    20 void Ell::printData() const {
    - -
    22  std::cout << "Radius: " << getRadius().x << " " << getRadius().y
    -
    23  << std::endl;
    -
    24 }
    -
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:18
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Ellipse.cpp:14
    -
    void printData() const override
    Prints the data of the shape.
    Definition: Ellipse.cpp:20
    + +
    21  return Vector2Df(getPosition().x + getRadius().x,
    +
    22  getPosition().y + getRadius().y);
    +
    23 }
    +
    24 
    +
    25 void Ell::printData() const {
    + +
    27  std::cout << "Radius: " << getRadius().x << " " << getRadius().y
    +
    28  << std::endl;
    +
    29 }
    +
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:13
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Ellipse.cpp:9
    +
    void printData() const override
    Prints the data of the shape.
    Definition: Ellipse.cpp:25
    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)
    Constructs an Ellipse object.
    Definition: Ellipse.cpp:5
    -
    void setRadius(const Vector2Df &radius)
    Sets the radius of the ellipse.
    Definition: Ellipse.cpp:16
    +
    Vector2Df getMaxBound() const override
    Gets the maximum bounding box of the shape.
    Definition: Ellipse.cpp:20
    +
    void setRadius(const Vector2Df &radius)
    Sets the radius of the ellipse.
    Definition: Ellipse.cpp:11
    +
    Vector2Df getMinBound() const override
    Gets the minimum bounding box of the shape.
    Definition: Ellipse.cpp:15
    Vector2Df radius
    Radii of the ellipse in the x and y directions.
    Definition: Ellipse.hpp:14
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:41
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    diff --git a/docs/html/Ellipse_8hpp_source.html b/html/Ellipse_8hpp_source.html similarity index 86% rename from docs/html/Ellipse_8hpp_source.html rename to html/Ellipse_8hpp_source.html index ae1e0db2..b3b25701 100644 --- a/docs/html/Ellipse_8hpp_source.html +++ b/html/Ellipse_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -140,21 +140,27 @@
    44 
    50  Vector2Df getRadius() const;
    51 
    -
    57  void printData() const override;
    -
    58 };
    -
    59 
    -
    60 #endif // ELLIPSE_HPP_
    +
    57  Vector2Df getMinBound() const override;
    +
    58 
    +
    64  Vector2Df getMaxBound() const override;
    +
    65 
    +
    71  void printData() const override;
    +
    72 };
    +
    73 
    +
    74 #endif // ELLIPSE_HPP_
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    -
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:18
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Ellipse.cpp:14
    -
    void printData() const override
    Prints the data of the shape.
    Definition: Ellipse.cpp:20
    +
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:13
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Ellipse.cpp:9
    +
    void printData() const override
    Prints the data of the shape.
    Definition: Ellipse.cpp:25
    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)
    Constructs an Ellipse object.
    Definition: Ellipse.cpp:5
    -
    void setRadius(const Vector2Df &radius)
    Sets the radius of the ellipse.
    Definition: Ellipse.cpp:16
    +
    Vector2Df getMaxBound() const override
    Gets the maximum bounding box of the shape.
    Definition: Ellipse.cpp:20
    +
    void setRadius(const Vector2Df &radius)
    Sets the radius of the ellipse.
    Definition: Ellipse.cpp:11
    +
    Vector2Df getMinBound() const override
    Gets the minimum bounding box of the shape.
    Definition: Ellipse.cpp:15
    Vector2Df radius
    Radii of the ellipse in the x and y directions.
    Definition: Ellipse.hpp:14
    -
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:17
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/html/Gradient_8cpp_source.html b/html/Gradient_8cpp_source.html new file mode 100644 index 00000000..30b3d43f --- /dev/null +++ b/html/Gradient_8cpp_source.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/Gradient.cpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Gradient.cpp
    +
    +
    +
    1 #include "Gradient.hpp"
    +
    2 
    +
    3 Gradient::Gradient(std::vector< Stop > stops,
    +
    4  std::pair< Vector2Df, Vector2Df > points, std::string units)
    +
    5  : stops(stops), points(points), units(units) {}
    +
    6 
    +
    7 std::vector< Stop > Gradient::getStops() const { return stops; }
    +
    8 
    +
    9 std::pair< Vector2Df, Vector2Df > Gradient::getPoints() const { return points; }
    +
    10 
    +
    11 void Gradient::setUnits(std::string units) { this->units = units; }
    +
    12 
    +
    13 std::string Gradient::getUnits() const { return units; }
    +
    14 
    +
    15 void Gradient::setTransforms(std::vector< std::string > transforms) {
    +
    16  this->transforms = transforms;
    +
    17 }
    +
    18 
    +
    19 std::vector< std::string > Gradient::getTransforms() const {
    +
    20  return transforms;
    +
    21 }
    +
    22 
    +
    23 void Gradient::addStop(Stop stop) { stops.push_back(stop); }
    +
    std::vector< Stop > getStops() const
    Gets the stops of the gradient.
    Definition: Gradient.cpp:7
    +
    std::vector< std::string > transforms
    Transforms of the gradient.
    Definition: Gradient.hpp:96
    +
    void addStop(Stop stop)
    Adds a stop to the gradient.
    Definition: Gradient.cpp:23
    +
    std::string getUnits() const
    Gets the units of the gradient.
    Definition: Gradient.cpp:13
    +
    std::string units
    Units of the gradient.
    Definition: Gradient.hpp:95
    +
    void setUnits(std::string units)
    Gets the units of the gradient.
    Definition: Gradient.cpp:11
    +
    std::vector< Stop > stops
    Stops of the gradient.
    Definition: Gradient.hpp:92
    +
    std::pair< Vector2Df, Vector2Df > points
    Start and end points of the gradient.
    Definition: Gradient.hpp:94
    +
    Gradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
    Constructs a Gradient object.
    Definition: Gradient.cpp:3
    +
    std::pair< Vector2Df, Vector2Df > getPoints() const
    Gets the start and end points of the gradient.
    Definition: Gradient.cpp:9
    +
    std::vector< std::string > getTransforms() const
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:19
    +
    void setTransforms(std::vector< std::string > transforms)
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:15
    +
    A class that represents a stop.
    Definition: Stop.hpp:11
    +
    +
    + + + \ No newline at end of file diff --git a/html/Gradient_8hpp_source.html b/html/Gradient_8hpp_source.html new file mode 100644 index 00000000..644b1431 --- /dev/null +++ b/html/Gradient_8hpp_source.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/Gradient.hpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Gradient.hpp
    +
    +
    +
    1 #ifndef GRADIENT_HPP_
    +
    2 #define GRADIENT_HPP_
    +
    3 
    +
    4 #include <string>
    +
    5 #include <vector>
    +
    6 
    +
    7 #include "Stop.hpp"
    +
    8 #include "Vector2D.hpp"
    +
    9 
    +
    18 class Gradient {
    +
    19 public:
    +
    27  Gradient(std::vector< Stop > stops,
    +
    28  std::pair< Vector2Df, Vector2Df > points, std::string units);
    +
    29 
    +
    33  virtual ~Gradient() = default;
    +
    34 
    +
    40  virtual std::string getClass() const = 0;
    +
    41 
    +
    47  std::vector< Stop > getStops() const;
    +
    48 
    +
    54  std::pair< Vector2Df, Vector2Df > getPoints() const;
    +
    55 
    +
    61  void setUnits(std::string units);
    +
    62 
    +
    68  std::string getUnits() const;
    +
    69 
    +
    75  void setTransforms(std::vector< std::string > transforms);
    +
    76 
    +
    82  std::vector< std::string > getTransforms() const;
    +
    83 
    +
    89  void addStop(Stop stop);
    +
    90 
    +
    91 private:
    +
    92  std::vector< Stop > stops;
    +
    93  std::pair< Vector2Df, Vector2Df >
    + +
    95  std::string units;
    +
    96  std::vector< std::string > transforms;
    +
    97 };
    +
    98 
    +
    99 #endif
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::vector< Stop > getStops() const
    Gets the stops of the gradient.
    Definition: Gradient.cpp:7
    +
    std::vector< std::string > transforms
    Transforms of the gradient.
    Definition: Gradient.hpp:96
    +
    void addStop(Stop stop)
    Adds a stop to the gradient.
    Definition: Gradient.cpp:23
    +
    std::string getUnits() const
    Gets the units of the gradient.
    Definition: Gradient.cpp:13
    +
    std::string units
    Units of the gradient.
    Definition: Gradient.hpp:95
    +
    void setUnits(std::string units)
    Gets the units of the gradient.
    Definition: Gradient.cpp:11
    +
    std::vector< Stop > stops
    Stops of the gradient.
    Definition: Gradient.hpp:92
    +
    std::pair< Vector2Df, Vector2Df > points
    Start and end points of the gradient.
    Definition: Gradient.hpp:94
    +
    virtual ~Gradient()=default
    Destructs a Gradient object.
    +
    Gradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
    Constructs a Gradient object.
    Definition: Gradient.cpp:3
    +
    std::pair< Vector2Df, Vector2Df > getPoints() const
    Gets the start and end points of the gradient.
    Definition: Gradient.cpp:9
    +
    virtual std::string getClass() const =0
    Gets the type of the gradient.
    +
    std::vector< std::string > getTransforms() const
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:19
    +
    void setTransforms(std::vector< std::string > transforms)
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:15
    +
    A class that represents a stop.
    Definition: Stop.hpp:11
    +
    +
    + + + \ No newline at end of file diff --git a/docs/html/Graphics_8hpp_source.html b/html/Graphics_8hpp_source.html similarity index 95% rename from docs/html/Graphics_8hpp_source.html rename to html/Graphics_8hpp_source.html index ab62e013..98cc7a84 100644 --- a/docs/html/Graphics_8hpp_source.html +++ b/html/Graphics_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -129,13 +129,15 @@
    6 #include "graphics/Ellipse.hpp"
    7 #include "graphics/Group.hpp"
    8 #include "graphics/Line.hpp"
    -
    9 #include "graphics/Path.hpp"
    -
    10 #include "graphics/Polygon.hpp"
    -
    11 #include "graphics/Polyline.hpp"
    -
    12 #include "graphics/Rect.hpp"
    -
    13 #include "graphics/Text.hpp"
    -
    14 
    -
    15 #endif // GRAPHICS_HPP_
    +
    9 #include "graphics/LinearGradient.hpp"
    +
    10 #include "graphics/Path.hpp"
    +
    11 #include "graphics/Polygon.hpp"
    +
    12 #include "graphics/Polyline.hpp"
    +
    13 #include "graphics/RadialGradient.hpp"
    +
    14 #include "graphics/Rect.hpp"
    +
    15 #include "graphics/Text.hpp"
    +
    16 
    +
    17 #endif // GRAPHICS_HPP_
    diff --git a/html/LinearGradient_8cpp_source.html b/html/LinearGradient_8cpp_source.html new file mode 100644 index 00000000..f2084673 --- /dev/null +++ b/html/LinearGradient_8cpp_source.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/LinearGradient.cpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    LinearGradient.cpp
    +
    +
    +
    1 #include "LinearGradient.hpp"
    +
    2 
    +
    3 LinearGradient::LinearGradient(std::vector< Stop > stops,
    +
    4  std::pair< Vector2Df, Vector2Df > points,
    +
    5  std::string units)
    +
    6  : Gradient(stops, points, units) {}
    +
    7 
    +
    8 std::string LinearGradient::getClass() const { return "LinearGradient"; }
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::string getClass() const override
    Gets the type of the gradient.
    +
    LinearGradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
    Constructs a LinearGradient object.
    +
    +
    + + + \ No newline at end of file diff --git a/html/LinearGradient_8hpp_source.html b/html/LinearGradient_8hpp_source.html new file mode 100644 index 00000000..25e89254 --- /dev/null +++ b/html/LinearGradient_8hpp_source.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/LinearGradient.hpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    LinearGradient.hpp
    +
    +
    +
    1 #ifndef LINEAR_GRADIENT_HPP_
    +
    2 #define LINEAR_GRADIENT_HPP_
    +
    3 
    +
    4 #include "Gradient.hpp"
    +
    5 
    +
    14 class LinearGradient : public Gradient {
    +
    15 public:
    +
    23  LinearGradient(std::vector< Stop > stops,
    +
    24  std::pair< Vector2Df, Vector2Df > points, std::string units);
    +
    25 
    +
    32  std::string getClass() const override;
    +
    33 };
    +
    34 
    +
    35 #endif
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::string units
    Units of the gradient.
    Definition: Gradient.hpp:95
    +
    std::vector< Stop > stops
    Stops of the gradient.
    Definition: Gradient.hpp:92
    +
    std::pair< Vector2Df, Vector2Df > points
    Start and end points of the gradient.
    Definition: Gradient.hpp:94
    +
    A class that represents a linear gradient.
    +
    std::string getClass() const override
    Gets the type of the gradient.
    +
    LinearGradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
    Constructs a LinearGradient object.
    +
    +
    + + + \ No newline at end of file diff --git a/html/Parser_8cpp_source.html b/html/Parser_8cpp_source.html new file mode 100644 index 00000000..b640f6f9 --- /dev/null +++ b/html/Parser_8cpp_source.html @@ -0,0 +1,1032 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/Parser.cpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Parser.cpp
    +
    +
    +
    1 #include "Parser.hpp"
    +
    2 
    +
    3 Parser *Parser::instance = nullptr;
    +
    4 
    +
    5 namespace {
    +
    6  auto getHexColor = [](std::string color) -> mColor {
    +
    7  std::stringstream ss;
    +
    8  int pos = color.find("#");
    +
    9  if (color.size() < 5 || color[pos + 4] == ' ') {
    +
    10  ss << std::hex << color.substr(pos + 1, 1) << " "
    +
    11  << color.substr(pos + 2, 1) << " " << color.substr(pos + 3, 1);
    +
    12  int r, g, b;
    +
    13  ss >> r >> g >> b;
    +
    14  r = r * 16 + r;
    +
    15  g = g * 16 + g;
    +
    16  b = b * 16 + b;
    +
    17  return mColor(r, g, b, 255);
    +
    18  } else if (color.size() < 6 || color[pos + 5] == ' ') {
    +
    19  ss << std::hex << color.substr(pos + 1, 1) << " "
    +
    20  << color.substr(pos + 2, 1) << " " << color.substr(pos + 3, 1)
    +
    21  << color.substr(pos + 4, 1);
    +
    22  int r, g, b, a;
    +
    23  ss >> r >> g >> b >> a;
    +
    24  r = r * 16 + r;
    +
    25  g = g * 16 + g;
    +
    26  b = b * 16 + b;
    +
    27  a = a * 16 + a;
    +
    28  return mColor(r, g, b, a);
    +
    29  } else {
    +
    30  ss << std::hex << color.substr(pos + 1, 2) << " "
    +
    31  << color.substr(pos + 3, 2) << " " << color.substr(pos + 5, 2);
    +
    32  int r, g, b;
    +
    33  ss >> r >> g >> b;
    +
    34  if (color[pos + 7] != '\0' && color[pos + 7] != ' ') {
    +
    35  std::stringstream ss;
    +
    36  ss << std::hex << color.substr(pos + 7, 2);
    +
    37  int a;
    +
    38  ss >> a;
    +
    39  return mColor(r, g, b, a);
    +
    40  }
    +
    41  return mColor(r, g, b, 255);
    +
    42  }
    +
    43  };
    +
    44 
    +
    45  auto getRgbColor = [](std::string color) -> mColor {
    +
    46  int r, g, b;
    +
    47  float a = 1;
    +
    48  sscanf(color.c_str(), "rgb(%d,%d,%d,%f)", &r, &g, &b, &a);
    +
    49  return mColor(r, g, b, 255 * a);
    +
    50  };
    +
    51 
    +
    52  std::string removeExtraSpaces(std::string input) {
    +
    53  input.erase(std::remove(input.begin(), input.end(), '\t'), input.end());
    +
    54  input.erase(std::remove(input.begin(), input.end(), '\n'), input.end());
    +
    55  std::string result;
    +
    56  bool spaceDetected = false;
    +
    57  bool firstSpace = true;
    +
    58  for (int i = 0; i < input.size(); i++) {
    +
    59  if (input[i] == ' ') {
    +
    60  if (!spaceDetected) {
    +
    61  if (!firstSpace)
    +
    62  result.push_back(input[i]);
    +
    63  else
    +
    64  firstSpace = false;
    +
    65  spaceDetected = true;
    +
    66  }
    +
    67  } else {
    +
    68  result.push_back(input[i]);
    +
    69  firstSpace = false;
    +
    70  spaceDetected = false;
    +
    71  }
    +
    72  }
    +
    73 
    +
    74  if (!result.empty() && result.back() == ' ') {
    +
    75  result.pop_back();
    +
    76  }
    +
    77 
    +
    78  return result;
    +
    79  }
    +
    80 
    +
    81  void removeRedundantSpaces(std::string &path_string) {
    +
    82  int index = 0;
    +
    83  while (index < path_string.size()) {
    +
    84  if ((index == 0 || index == path_string.size() - 1) &&
    +
    85  path_string[index] == ' ') {
    +
    86  path_string.erase(index, 1);
    +
    87  } else if (path_string[index] == ' ' &&
    +
    88  path_string[index - 1] == ' ') {
    +
    89  path_string.erase(index, 1);
    +
    90  } else {
    +
    91  index++;
    +
    92  }
    +
    93  }
    +
    94  }
    +
    95 
    +
    96  void insertSpaceBeforeEachLetter(std::string &path_string) {
    +
    97  std::string result;
    +
    98  for (int index = 0; index < path_string.size(); index++) {
    +
    99  if (std::isalpha(path_string[index]) &&
    +
    100  tolower(path_string[index]) != 'e') {
    +
    101  result += " ";
    +
    102  result += path_string[index];
    +
    103  result += " ";
    +
    104  } else if (path_string[index] == '-' && index - 1 >= 0 &&
    +
    105  tolower(path_string[index - 1]) != 'e') {
    +
    106  result += " ";
    +
    107  result += path_string[index];
    +
    108  } else if (path_string[index] == '.') {
    +
    109  if (index > 0 && path_string[index - 1] == '-')
    +
    110  result += "0";
    +
    111  else if (index > 0 && isalpha(path_string[index - 1]))
    +
    112  result += " 0";
    +
    113  result += path_string[index];
    +
    114  } else {
    +
    115  result += path_string[index];
    +
    116  }
    +
    117  }
    +
    118  path_string = result;
    +
    119  }
    +
    120 
    +
    121  void formatSvgPathString(std::string &path_string) {
    +
    122  std::replace(path_string.begin(), path_string.end(), '\t', ' ');
    +
    123  std::replace(path_string.begin(), path_string.end(), '\n', ' ');
    +
    124  insertSpaceBeforeEachLetter(path_string);
    +
    125  std::replace(path_string.begin(), path_string.end(), ',', ' ');
    +
    126  removeRedundantSpaces(path_string);
    +
    127 
    +
    128  auto checkAbbreviation = [](const std::string &s) {
    +
    129  int cnt = 0;
    +
    130  for (auto c : s)
    +
    131  if (c == '.') ++cnt;
    +
    132  if (cnt == 2) return true;
    +
    133  return false;
    +
    134  };
    +
    135 
    +
    136  std::stringstream ss(path_string);
    +
    137  std::string element;
    +
    138  std::string result;
    +
    139  while (ss >> element) {
    +
    140  std::string point_x = "";
    +
    141  std::string point_y = "";
    +
    142  if (checkAbbreviation(element)) {
    +
    143  for (int i = (int)element.size() - 1; i >= 0; --i) {
    +
    144  if (element[i] == '.') {
    +
    145  point_y = "0." + element.substr(i + 1);
    +
    146  point_x = element.substr(0, i);
    +
    147  break;
    +
    148  }
    +
    149  }
    +
    150  result += point_x + ' ' + point_y + ' ';
    +
    151  } else
    +
    152  result += element + ' ';
    +
    153  }
    +
    154  path_string = result;
    +
    155  }
    +
    156 } // namespace
    +
    157 
    +
    158 Parser *Parser::getInstance(const std::string &file_name) {
    +
    159  if (instance == nullptr) {
    +
    160  instance = new Parser(file_name);
    +
    161  }
    +
    162  return instance;
    +
    163 }
    +
    164 
    +
    165 Parser::Parser(const std::string &file_name) {
    +
    166  root = parseElements(file_name);
    +
    167 }
    +
    168 
    +
    169 Group *Parser::getRoot() { return dynamic_cast< Group * >(root); }
    +
    170 
    +
    171 Attributes xmlToString(rapidxml::xml_attribute<> *attribute) {
    +
    172  Attributes attributes;
    +
    173  while (attribute) {
    +
    174  attributes.push_back(
    +
    175  std::make_pair(attribute->name(), attribute->value()));
    +
    176  attribute = attribute->next_attribute();
    +
    177  }
    +
    178  return attributes;
    +
    179 }
    +
    180 
    +
    181 SVGElement *Parser::parseElements(std::string file_name) {
    +
    182  rapidxml::xml_document<> doc;
    +
    183  std::ifstream file(file_name);
    +
    184  std::vector< char > buffer((std::istreambuf_iterator< char >(file)),
    +
    185  std::istreambuf_iterator< char >());
    +
    186  buffer.push_back('\0');
    +
    187  doc.parse< 0 >(&buffer[0]);
    +
    188 
    +
    189  rapidxml::xml_node<> *svg = doc.first_node();
    +
    190  viewport.x = getFloatAttribute(svg, "width");
    +
    191  viewport.y = getFloatAttribute(svg, "height");
    +
    192  std::string viewbox = getAttribute(svg, "viewBox");
    +
    193  if (viewbox != "") {
    +
    194  std::stringstream ss(viewbox);
    +
    195  ss >> this->viewbox.first.x >> this->viewbox.first.y >>
    +
    196  this->viewbox.second.x >> this->viewbox.second.y;
    +
    197  }
    +
    198  rapidxml::xml_node<> *node = svg->first_node();
    +
    199  rapidxml::xml_node<> *prev = NULL;
    +
    200 
    +
    201  SVGElement *root = new Group();
    +
    202  SVGElement *current = root;
    +
    203 
    +
    204  while (node) {
    +
    205  if (std::string(node->name()) == "defs") {
    +
    206  GetGradients(node);
    +
    207  prev = node;
    +
    208  node = node->next_sibling();
    +
    209  } else if (std::string(node->name()) == "g") {
    +
    210  Group *group = dynamic_cast< Group * >(current);
    +
    211  for (auto group_attribute : group->getAttributes()) {
    +
    212  bool found = false;
    +
    213  for (auto attribute = node->first_attribute(); attribute;
    +
    214  attribute = attribute->next_attribute()) {
    +
    215  if (std::string(attribute->name()) ==
    +
    216  group_attribute.first) {
    +
    217  if (group_attribute.first == "opacity") {
    +
    218  std::string opacity = std::to_string(
    +
    219  std::stof(attribute->value()) *
    +
    220  std::stof(group_attribute.second));
    +
    221  char *value = doc.allocate_string(opacity.c_str());
    +
    222  attribute->value(value);
    +
    223  }
    +
    224  found = true;
    +
    225  break;
    +
    226  }
    +
    227  }
    +
    228  if (!found && group_attribute.first != "transform") {
    +
    229  char *name =
    +
    230  doc.allocate_string(group_attribute.first.c_str());
    +
    231  char *value =
    +
    232  doc.allocate_string(group_attribute.second.c_str());
    +
    233  rapidxml::xml_attribute<> *new_attribute =
    +
    234  doc.allocate_attribute(name, value);
    +
    235  node->append_attribute(new_attribute);
    +
    236  }
    +
    237  }
    +
    238  Group *new_group = new Group(xmlToString(node->first_attribute()));
    +
    239  new_group->setTransforms(getTransformOrder(node));
    +
    240  current->addElement(new_group);
    +
    241  current = new_group;
    +
    242  prev = node;
    +
    243  node = node->first_node();
    +
    244  } else {
    +
    245  Group *group = dynamic_cast< Group * >(current);
    +
    246  for (auto group_attribute : group->getAttributes()) {
    +
    247  bool found = false;
    +
    248  for (auto attribute = node->first_attribute(); attribute;
    +
    249  attribute = attribute->next_attribute()) {
    +
    250  if (std::string(attribute->name()) ==
    +
    251  group_attribute.first) {
    +
    252  if (group_attribute.first == "opacity") {
    +
    253  std::string opacity = std::to_string(
    +
    254  std::stof(attribute->value()) *
    +
    255  std::stof(group_attribute.second));
    +
    256  char *value = doc.allocate_string(opacity.c_str());
    +
    257  attribute->value(value);
    +
    258  }
    +
    259  found = true;
    +
    260  break;
    +
    261  }
    +
    262  }
    +
    263  if (!found && group_attribute.first != "transform") {
    +
    264  char *name =
    +
    265  doc.allocate_string(group_attribute.first.c_str());
    +
    266  char *value =
    +
    267  doc.allocate_string(group_attribute.second.c_str());
    +
    268  rapidxml::xml_attribute<> *new_attribute =
    +
    269  doc.allocate_attribute(name, value);
    +
    270  node->append_attribute(new_attribute);
    +
    271  }
    +
    272  }
    +
    273  SVGElement *shape = parseShape(node);
    +
    274  if (shape != NULL) current->addElement(shape);
    +
    275  prev = node;
    +
    276  node = node->next_sibling();
    +
    277  }
    +
    278  if (node == NULL && current != root) {
    +
    279  while (prev->parent()->next_sibling() == NULL) {
    +
    280  current = current->getParent();
    +
    281  prev = prev->parent();
    +
    282  if (prev == svg) {
    +
    283  break;
    +
    284  }
    +
    285  }
    +
    286  if (prev == svg) {
    +
    287  break;
    +
    288  }
    +
    289  current = current->getParent();
    +
    290  node = prev->parent()->next_sibling();
    +
    291  }
    +
    292  }
    +
    293  return root;
    +
    294 }
    +
    295 
    +
    296 std::string Parser::getAttribute(rapidxml::xml_node<> *node, std::string name) {
    +
    297  if (name == "text") return removeExtraSpaces(node->value());
    +
    298  std::string result;
    +
    299  if (node->first_attribute(name.c_str()) == NULL) {
    +
    300  if (name == "fill" || name == "stop-color")
    +
    301  result = "black";
    +
    302  else if (name == "stroke" || name == "transform" || name == "rotate" ||
    +
    303  name == "font-style")
    +
    304  result = "none";
    +
    305  else if (name == "text-anchor")
    +
    306  result = "start";
    +
    307  else if (name == "fill-rule")
    +
    308  result = "nonzero";
    +
    309  else if (name == "gradientUnits")
    +
    310  result = "objectBoundingBox";
    +
    311  } else {
    +
    312  result = node->first_attribute(name.c_str())->value();
    +
    313  }
    +
    314  return result;
    +
    315 }
    +
    316 
    +
    317 float Parser::getFloatAttribute(rapidxml::xml_node<> *node, std::string name) {
    +
    318  float result;
    +
    319  if (node->first_attribute(name.c_str()) == NULL) {
    +
    320  if (std::string(node->name()).find("Gradient") != std::string::npos) {
    +
    321  if (name == "x1" || name == "y1" || name == "fr")
    +
    322  result = 0;
    +
    323  else if (name == "cx" || name == "cy")
    +
    324  result = name == "cx" ? 0.5 * this->viewbox.second.x
    +
    325  : 0.5 * this->viewbox.second.y;
    +
    326  else if (name == "r") {
    +
    327  result = sqrt((pow(this->viewbox.second.x, 2) +
    +
    328  pow(this->viewbox.second.y, 2)) /
    +
    329  2) /
    +
    330  2;
    +
    331  } else if (name == "fx" || name == "fy")
    +
    332  result = name == "fx" ? getFloatAttribute(node, "cx")
    +
    333  : getFloatAttribute(node, "cy");
    +
    334  else
    +
    335  result = name == "x2" ? this->viewbox.second.x
    +
    336  : this->viewbox.second.y;
    +
    337  } else {
    +
    338  if (name == "stroke-width" || name == "stroke-opacity" ||
    +
    339  name == "fill-opacity" || name == "opacity" ||
    +
    340  name == "stop-opacity")
    +
    341  result = 1;
    +
    342  else
    +
    343  result = 0;
    +
    344  }
    +
    345  } else {
    +
    346  if (name == "width" || name == "height") {
    +
    347  std::string value = node->first_attribute(name.c_str())->value();
    +
    348  if (value.find("%") != std::string::npos) {
    +
    349  result = std::stof(value.substr(0, value.find("%"))) *
    +
    350  this->viewbox.second.x / 100;
    +
    351  } else if (value.find("pt") != std::string::npos) {
    +
    352  result = std::stof(value.substr(0, value.find("pt"))) * 1.33;
    +
    353  } else {
    +
    354  result = std::stof(value);
    +
    355  }
    +
    356  } else
    +
    357  result = std::stof(node->first_attribute(name.c_str())->value());
    +
    358  }
    +
    359  return result;
    +
    360 }
    +
    361 
    +
    362 mColor Parser::parseColor(rapidxml::xml_node<> *node, std::string name,
    +
    363  std::string &id) {
    +
    364  std::string color = getAttribute(node, name);
    +
    365  color.erase(std::remove(color.begin(), color.end(), ' '), color.end());
    +
    366  if (color.find("url") == std::string::npos) {
    +
    367  for (auto &c : color) c = tolower(c);
    +
    368  }
    +
    369  if (color == "none")
    +
    370  return mColor::Transparent;
    +
    371  else {
    +
    372  mColor result;
    +
    373  if (color.find("url") != std::string::npos) {
    +
    374  if (color.find("'") != std::string::npos) {
    +
    375  id = color.substr(color.find("'") + 1);
    +
    376  id.erase(id.find("'"));
    +
    377  id.erase(id.find("#"), 1);
    +
    378  } else {
    +
    379  id = color.substr(color.find("#") + 1);
    +
    380  id.erase(id.find(")"));
    +
    381  }
    +
    382  result = mColor::Transparent;
    +
    383  } else if (color.find("#") != std::string::npos) {
    +
    384  result = getHexColor(color);
    +
    385  } else if (color.find("rgb") != std::string::npos) {
    +
    386  result = getRgbColor(color);
    +
    387  } else {
    +
    388  auto color_code = color_map.find(color);
    +
    389  if (color_code == color_map.end()) {
    +
    390  std::cout << "Color " << color << " not found" << std::endl;
    +
    391  exit(-1);
    +
    392  }
    +
    393  result = color_code->second;
    +
    394  }
    +
    395  if (name == "stop-color")
    +
    396  result.a = result.a * getFloatAttribute(node, "stop-opacity");
    +
    397  else
    +
    398  result.a = result.a * getFloatAttribute(node, name + "-opacity") *
    +
    399  getFloatAttribute(node, "opacity");
    +
    400  return result;
    +
    401  }
    +
    402 }
    +
    403 
    +
    404 Gradient *Parser::parseGradient(std::string id) {
    +
    405  if (gradients.find(id) == gradients.end()) {
    +
    406  std::cout << "Gradient " << id << " not found" << std::endl;
    +
    407  exit(-1);
    +
    408  }
    +
    409  return gradients.at(id);
    +
    410 }
    +
    411 
    +
    412 std::vector< Stop > Parser::getGradientStops(rapidxml::xml_node<> *node) {
    +
    413  std::vector< Stop > stops;
    +
    414  rapidxml::xml_node<> *stop_node = node->first_node();
    +
    415  while (stop_node) {
    +
    416  if (std::string(stop_node->name()) == "stop") {
    +
    417  std::string id = "";
    +
    418  mColor color = parseColor(stop_node, "stop-color", id);
    +
    419  float offset = getFloatAttribute(stop_node, "offset");
    +
    420  if (offset > 1) offset /= 100;
    +
    421  stops.push_back(Stop(color, offset));
    +
    422  }
    +
    423  stop_node = stop_node->next_sibling();
    +
    424  }
    +
    425  return stops;
    +
    426 }
    +
    427 
    +
    428 void Parser::GetGradients(rapidxml::xml_node<> *node) {
    +
    429  rapidxml::xml_node<> *gradient_node = node->first_node();
    +
    430  while (gradient_node) {
    +
    431  if (std::string(gradient_node->name()).find("Gradient") !=
    +
    432  std::string::npos) {
    +
    433  Gradient *gradient;
    +
    434  std::string id = getAttribute(gradient_node, "id");
    +
    435  std::string units = getAttribute(gradient_node, "gradientUnits");
    +
    436  std::vector< Stop > stops = getGradientStops(gradient_node);
    +
    437  std::string href = getAttribute(gradient_node, "xlink:href");
    +
    438  int pos = href.find("#");
    +
    439  if (pos != std::string::npos) {
    +
    440  href = href.substr(pos + 1);
    +
    441  }
    +
    442  if (std::string(gradient_node->name()).find("linear") !=
    +
    443  std::string::npos) {
    +
    444  float x1 = getFloatAttribute(gradient_node, "x1");
    +
    445  float y1 = getFloatAttribute(gradient_node, "y1");
    +
    446  float x2 = getFloatAttribute(gradient_node, "x2");
    +
    447  float y2 = getFloatAttribute(gradient_node, "y2");
    +
    448  std::pair< Vector2Df, Vector2Df > points = {{x1, y1}, {x2, y2}};
    +
    449  gradient = new LinearGradient(stops, points, units);
    +
    450  if (this->gradients.find(id) == this->gradients.end())
    +
    451  this->gradients[id] = gradient;
    +
    452  } else if (std::string(gradient_node->name()).find("radial") !=
    +
    453  std::string::npos) {
    +
    454  float cx = getFloatAttribute(gradient_node, "cx");
    +
    455  float cy = getFloatAttribute(gradient_node, "cy");
    +
    456  float fx = getFloatAttribute(gradient_node, "fx");
    +
    457  float fy = getFloatAttribute(gradient_node, "fy");
    +
    458  float r = getFloatAttribute(gradient_node, "r");
    +
    459  float fr = getFloatAttribute(gradient_node, "fr");
    +
    460  std::pair< Vector2Df, Vector2Df > points = {{cx, cy}, {fx, fy}};
    +
    461  Vector2Df radius(r, fr);
    +
    462  gradient = new RadialGradient(stops, points, radius, units);
    +
    463  if (this->gradients.find(id) == this->gradients.end())
    +
    464  this->gradients[id] = gradient;
    +
    465  }
    +
    466  if (href != "") {
    +
    467  for (auto stop : parseGradient(href)->getStops()) {
    +
    468  gradient->addStop(stop);
    +
    469  }
    +
    470  }
    +
    471  if (gradient != NULL)
    +
    472  gradient->setTransforms(getTransformOrder(gradient_node));
    +
    473  }
    +
    474  gradient_node = gradient_node->next_sibling();
    +
    475  }
    +
    476 }
    +
    477 
    +
    478 std::vector< Vector2Df > Parser::parsePoints(rapidxml::xml_node<> *node) {
    +
    479  std::vector< Vector2Df > points;
    +
    480  std::string points_string = getAttribute(node, "points");
    +
    481 
    +
    482  std::stringstream ss(points_string);
    +
    483  float x, y;
    +
    484 
    +
    485  while (ss >> x) {
    +
    486  if (ss.peek() == ',') ss.ignore();
    +
    487  ss >> y;
    +
    488  points.push_back(Vector2Df(x, y));
    +
    489  }
    +
    490 
    +
    491  return points;
    +
    492 }
    +
    493 
    +
    494 std::vector< PathPoint > Parser::parsePathPoints(rapidxml::xml_node<> *node) {
    +
    495  std::vector< PathPoint > points;
    +
    496  std::string path_string = getAttribute(node, "d");
    +
    497 
    +
    498  formatSvgPathString(path_string);
    +
    499 
    +
    500  std::stringstream ss(path_string);
    +
    501  std::string element;
    +
    502  PathPoint pPoint{{0, 0}, 'M'};
    +
    503  while (ss >> element) {
    +
    504  if (std::isalpha(element[0])) {
    +
    505  pPoint.tc = element[0];
    +
    506  if (tolower(pPoint.tc) == 'm' || tolower(pPoint.tc) == 'l' ||
    +
    507  tolower(pPoint.tc) == 'c' || tolower(pPoint.tc) == 's' ||
    +
    508  tolower(pPoint.tc) == 'q' || tolower(pPoint.tc) == 't')
    +
    509  ss >> pPoint.point.x >> pPoint.point.y;
    +
    510  else if (tolower(pPoint.tc) == 'h') {
    +
    511  ss >> pPoint.point.x;
    +
    512  pPoint.point.y = 0;
    +
    513  } else if (tolower(pPoint.tc) == 'v') {
    +
    514  ss >> pPoint.point.y;
    +
    515  pPoint.point.x = 0;
    +
    516  } else if (tolower(pPoint.tc) == 'a') {
    +
    517  ss >> pPoint.radius.x >> pPoint.radius.y;
    +
    518  ss >> pPoint.x_axis_rotation;
    +
    519  ss >> pPoint.large_arc_flag >> pPoint.sweep_flag;
    +
    520  ss >> pPoint.point.x >> pPoint.point.y;
    +
    521  }
    +
    522  } else {
    +
    523  if (tolower(pPoint.tc) == 'm' || tolower(pPoint.tc) == 'l' ||
    +
    524  tolower(pPoint.tc) == 'c' || tolower(pPoint.tc) == 's' ||
    +
    525  tolower(pPoint.tc) == 'q' || tolower(pPoint.tc) == 't') {
    +
    526  if (tolower(pPoint.tc) == 'm') pPoint.tc = 'L';
    +
    527  pPoint.point.x = std::stof(element);
    +
    528  ss >> pPoint.point.y;
    +
    529  } else if (tolower(pPoint.tc) == 'h') {
    +
    530  pPoint.point.x = std::stof(element);
    +
    531  pPoint.point.y = 0;
    +
    532  } else if (tolower(pPoint.tc) == 'v') {
    +
    533  pPoint.point.y = std::stof(element);
    +
    534  pPoint.point.x = 0;
    +
    535  } else if (tolower(pPoint.tc) == 'a') {
    +
    536  pPoint.radius.x = std::stof(element);
    +
    537  ss >> pPoint.radius.y;
    +
    538  ss >> pPoint.x_axis_rotation;
    +
    539  ss >> pPoint.large_arc_flag >> pPoint.sweep_flag;
    +
    540  ss >> pPoint.point.x >> pPoint.point.y;
    +
    541  }
    +
    542  }
    +
    543  points.push_back(pPoint);
    +
    544  }
    +
    545 
    +
    546  std::vector< PathPoint > handle_points;
    +
    547 
    +
    548  Vector2Df first_point{0, 0}, cur_point{0, 0};
    +
    549  int n = points.size();
    +
    550  for (int i = 0; i < n; i++) {
    +
    551  if (tolower(points[i].tc) == 'm') {
    +
    552  first_point = points[i].point;
    +
    553  if (points[i].tc == 'm') {
    +
    554  first_point.x = cur_point.x + points[i].point.x;
    +
    555  first_point.y = cur_point.y + points[i].point.y;
    +
    556  }
    +
    557  cur_point = first_point;
    +
    558  handle_points.push_back({first_point, 'm'});
    +
    559  } else if (tolower(points[i].tc) == 'l' ||
    +
    560  tolower(points[i].tc) == 't') {
    +
    561  Vector2Df end_point{cur_point.x + points[i].point.x,
    +
    562  cur_point.y + points[i].point.y};
    +
    563  if (points[i].tc == 'L' || points[i].tc == 'T')
    +
    564  end_point = points[i].point;
    +
    565  cur_point = end_point;
    +
    566  char TC = tolower(points[i].tc);
    +
    567  handle_points.push_back({end_point, TC});
    +
    568  } else if (tolower(points[i].tc) == 'h') {
    +
    569  Vector2Df end_point{cur_point.x + points[i].point.x, cur_point.y};
    +
    570  if (points[i].tc == 'H')
    +
    571  end_point = Vector2Df{points[i].point.x, cur_point.y};
    +
    572  cur_point = end_point;
    +
    573  handle_points.push_back({end_point, 'h'});
    +
    574  } else if (tolower(points[i].tc) == 'v') {
    +
    575  Vector2Df end_point{cur_point.x, cur_point.y + points[i].point.y};
    +
    576  if (points[i].tc == 'V')
    +
    577  end_point = Vector2Df{cur_point.x, points[i].point.y};
    +
    578  cur_point = end_point;
    +
    579  handle_points.push_back({end_point, 'v'});
    +
    580  } else if (tolower(points[i].tc) == 'c') {
    +
    581  if (i + 2 < n) {
    +
    582  Vector2Df control_point1 =
    +
    583  Vector2Df{cur_point.x + points[i].point.x,
    +
    584  cur_point.y + points[i].point.y};
    +
    585  Vector2Df control_point2 =
    +
    586  Vector2Df{cur_point.x + points[i + 1].point.x,
    +
    587  cur_point.y + points[i + 1].point.y};
    +
    588  Vector2Df control_point3 =
    +
    589  Vector2Df{cur_point.x + points[i + 2].point.x,
    +
    590  cur_point.y + points[i + 2].point.y};
    +
    591  if (points[i].tc == 'C') {
    +
    592  control_point1 = points[i].point;
    +
    593  control_point2 = points[i + 1].point;
    +
    594  control_point3 = points[i + 2].point;
    +
    595  }
    +
    596  i += 2;
    +
    597  cur_point = control_point3;
    +
    598  handle_points.push_back({control_point1, 'c'});
    +
    599  handle_points.push_back({control_point2, 'c'});
    +
    600  handle_points.push_back({control_point3, 'c'});
    +
    601  }
    +
    602  } else if (tolower(points[i].tc) == 'z') {
    +
    603  cur_point = first_point;
    +
    604  handle_points.push_back({first_point, 'z'});
    +
    605  } else if (tolower(points[i].tc) == 's' ||
    +
    606  tolower(points[i].tc) == 'q') {
    +
    607  if (i + 1 < n) {
    +
    608  Vector2Df control_point1 =
    +
    609  Vector2Df{cur_point.x + points[i].point.x,
    +
    610  cur_point.y + points[i].point.y};
    +
    611  Vector2Df control_point2 =
    +
    612  Vector2Df{cur_point.x + points[i + 1].point.x,
    +
    613  cur_point.y + points[i + 1].point.y};
    +
    614  if (points[i].tc == 'S' || points[i].tc == 'Q') {
    +
    615  control_point1 = points[i].point;
    +
    616  control_point2 = points[i + 1].point;
    +
    617  }
    +
    618  i += 1;
    +
    619  cur_point = control_point2;
    +
    620  char TC = tolower(points[i].tc);
    +
    621  handle_points.push_back({control_point1, TC});
    +
    622  handle_points.push_back({control_point2, TC});
    +
    623  }
    +
    624  } else if (tolower(points[i].tc) == 'a') {
    +
    625  Vector2Df end_point{cur_point.x + points[i].point.x,
    +
    626  cur_point.y + points[i].point.y};
    +
    627  if (points[i].tc == 'A') end_point = points[i].point;
    +
    628  handle_points.push_back(
    +
    629  {end_point, 'a', points[i].radius, points[i].x_axis_rotation,
    +
    630  points[i].large_arc_flag, points[i].sweep_flag});
    +
    631  cur_point = end_point;
    +
    632  }
    +
    633  }
    +
    634  return handle_points;
    +
    635 }
    +
    636 
    +
    637 std::vector< std::string > Parser::getTransformOrder(
    +
    638  rapidxml::xml_node<> *node) {
    +
    639  std::string transform_tag;
    +
    640  if (std::string(node->name()).find("Gradient") != std::string::npos)
    +
    641  transform_tag = getAttribute(node, "gradientTransform");
    +
    642  else
    +
    643  transform_tag = getAttribute(node, "transform");
    +
    644  std::vector< std::string > order;
    +
    645  std::stringstream ss(transform_tag);
    +
    646  std::string type;
    +
    647  while (ss >> type) {
    +
    648  if (type.find("translate") != std::string::npos ||
    +
    649  type.find("scale") != std::string::npos ||
    +
    650  type.find("rotate") != std::string::npos ||
    +
    651  type.find("matrix") != std::string::npos) {
    +
    652  while (type.find(")") == std::string::npos) {
    +
    653  std::string temp;
    +
    654  ss >> temp;
    +
    655  type += " " + temp;
    +
    656  }
    +
    657  std::string temp = type.substr(0, type.find("(") + 1);
    +
    658  temp.erase(std::remove(temp.begin(), temp.end(), ' '), temp.end());
    +
    659  type.erase(0, type.find("(") + 1);
    +
    660  type = temp + type;
    +
    661  order.push_back(type);
    +
    662  }
    +
    663  }
    +
    664  return order;
    +
    665 }
    +
    666 
    +
    667 SVGElement *Parser::parseShape(rapidxml::xml_node<> *node) {
    +
    668  SVGElement *shape = NULL;
    +
    669  std::string type = node->name();
    +
    670  std::string id = "";
    +
    671  mColor stroke_color = parseColor(node, "stroke", id);
    +
    672  mColor fill_color = parseColor(node, "fill", id);
    +
    673  float stroke_width = getFloatAttribute(node, "stroke-width");
    +
    674  if (type == "line") {
    +
    675  shape = parseLine(node, stroke_color, stroke_width);
    +
    676  } else if (type == "rect") {
    +
    677  shape = parseRect(node, fill_color, stroke_color, stroke_width);
    +
    678  } else if (type == "circle") {
    +
    679  shape = parseCircle(node, fill_color, stroke_color, stroke_width);
    +
    680  } else if (type == "ellipse") {
    +
    681  shape = parseEllipse(node, fill_color, stroke_color, stroke_width);
    +
    682  } else if (type == "polygon") {
    +
    683  shape = parsePolygon(node, fill_color, stroke_color, stroke_width);
    +
    684  } else if (type == "polyline") {
    +
    685  shape = parsePolyline(node, fill_color, stroke_color, stroke_width);
    +
    686  } else if (type == "path") {
    +
    687  shape = parsePath(node, fill_color, stroke_color, stroke_width);
    +
    688  } else if (type == "text") {
    +
    689  shape = parseText(node, fill_color, stroke_color, stroke_width);
    +
    690  }
    +
    691  if (shape != NULL) {
    +
    692  if (type == "text") {
    +
    693  float dx = getFloatAttribute(node, "dx");
    +
    694  float dy = getFloatAttribute(node, "dy");
    +
    695  std::string transform = "translate(" + std::to_string(dx) + " " +
    +
    696  std::to_string(dy) + ")";
    +
    697  std::vector< std::string > transform_order =
    +
    698  getTransformOrder(node);
    +
    699  transform_order.push_back(transform);
    +
    700  shape->setTransforms(transform_order);
    +
    701  } else
    +
    702  shape->setTransforms(getTransformOrder(node));
    +
    703  if (id != "") {
    +
    704  shape->setGradient(parseGradient(id));
    +
    705  }
    +
    706  }
    +
    707  return shape;
    +
    708 }
    +
    709 
    +
    710 Line *Parser::parseLine(rapidxml::xml_node<> *node, const mColor &stroke_color,
    +
    711  float stroke_width) {
    +
    712  Line *shape = new Line(
    +
    713  Vector2Df(getFloatAttribute(node, "x1"), getFloatAttribute(node, "y1")),
    +
    714  Vector2Df(getFloatAttribute(node, "x2"), getFloatAttribute(node, "y2")),
    +
    715  stroke_color, stroke_width);
    +
    716  return shape;
    +
    717 }
    +
    718 
    +
    719 Rect *Parser::parseRect(rapidxml::xml_node<> *node, const mColor &fill_color,
    +
    720  const mColor &stroke_color, float stroke_width) {
    +
    721  float x = getFloatAttribute(node, "x");
    +
    722  float y = getFloatAttribute(node, "y");
    +
    723  float rx = getFloatAttribute(node, "rx");
    +
    724  float ry = getFloatAttribute(node, "ry");
    +
    725  Rect *shape =
    +
    726  new Rect(getFloatAttribute(node, "width"),
    +
    727  getFloatAttribute(node, "height"), Vector2Df(x, y),
    +
    728  Vector2Df(rx, ry), fill_color, stroke_color, stroke_width);
    +
    729  return shape;
    +
    730 }
    +
    731 
    +
    732 Circle *Parser::parseCircle(rapidxml::xml_node<> *node,
    +
    733  const mColor &fill_color,
    +
    734  const mColor &stroke_color, float stroke_width) {
    +
    735  float cx = getFloatAttribute(node, "cx");
    +
    736  float cy = getFloatAttribute(node, "cy");
    +
    737  float radius = getFloatAttribute(node, "r");
    +
    738  Circle *shape = new Circle(radius, Vector2Df(cx, cy), fill_color,
    +
    739  stroke_color, stroke_width);
    +
    740  return shape;
    +
    741 }
    +
    742 
    +
    743 Ell *Parser::parseEllipse(rapidxml::xml_node<> *node, const mColor &fill_color,
    +
    744  const mColor &stroke_color, float stroke_width) {
    +
    745  float radius_x = getFloatAttribute(node, "rx");
    +
    746  float radius_y = getFloatAttribute(node, "ry");
    +
    747  float cx = getFloatAttribute(node, "cx");
    +
    748  float cy = getFloatAttribute(node, "cy");
    +
    749  Ell *shape = new Ell(Vector2Df(radius_x, radius_y), Vector2Df(cx, cy),
    +
    750  fill_color, stroke_color, stroke_width);
    +
    751  return shape;
    +
    752 }
    +
    753 
    +
    754 Plygon *Parser::parsePolygon(rapidxml::xml_node<> *node,
    +
    755  const mColor &fill_color,
    +
    756  const mColor &stroke_color, float stroke_width) {
    +
    757  Plygon *shape = new Plygon(fill_color, stroke_color, stroke_width);
    +
    758  std::vector< Vector2Df > points = parsePoints(node);
    +
    759  for (auto point : points) {
    +
    760  shape->addPoint(point);
    +
    761  }
    +
    762  std::string fill_rule = getAttribute(node, "fill-rule");
    +
    763  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
    +
    764  fill_rule.end());
    +
    765  shape->setFillRule(fill_rule);
    +
    766  return shape;
    +
    767 }
    +
    768 
    +
    769 Plyline *Parser::parsePolyline(rapidxml::xml_node<> *node,
    +
    770  const mColor &fill_color,
    +
    771  const mColor &stroke_color, float stroke_width) {
    +
    772  Plyline *shape = new Plyline(fill_color, stroke_color, stroke_width);
    +
    773  std::vector< Vector2Df > points = parsePoints(node);
    +
    774  for (auto point : points) {
    +
    775  shape->addPoint(point);
    +
    776  }
    +
    777  std::string fill_rule = getAttribute(node, "fill-rule");
    +
    778  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
    +
    779  fill_rule.end());
    +
    780  shape->setFillRule(fill_rule);
    +
    781  return shape;
    +
    782 }
    +
    783 
    +
    784 Text *Parser::parseText(rapidxml::xml_node<> *node, const mColor &fill_color,
    +
    785  const mColor &stroke_color, float stroke_width) {
    +
    786  float x = getFloatAttribute(node, "x");
    +
    787  float y = getFloatAttribute(node, "y");
    +
    788  float font_size = getFloatAttribute(node, "font-size");
    +
    789  std::string text = getAttribute(node, "text");
    +
    790 
    +
    791  Text *shape =
    +
    792  new Text(Vector2Df(x - (font_size * 6.6 / 40),
    +
    793  y - font_size + (font_size * 4.4 / 40)),
    +
    794  text, font_size, fill_color, stroke_color, stroke_width);
    +
    795 
    +
    796  std::string anchor = getAttribute(node, "text-anchor");
    +
    797  anchor.erase(std::remove(anchor.begin(), anchor.end(), ' '), anchor.end());
    +
    798  shape->setAnchor(anchor);
    +
    799 
    +
    800  std::string style = getAttribute(node, "font-style");
    +
    801  style.erase(std::remove(style.begin(), style.end(), ' '), style.end());
    +
    802  shape->setFontStyle(style);
    +
    803 
    +
    804  return shape;
    +
    805 }
    +
    806 
    +
    807 Path *Parser::parsePath(rapidxml::xml_node<> *node, const mColor &fill_color,
    +
    808  const mColor &stroke_color, float stroke_width) {
    +
    809  Path *shape = new Path(fill_color, stroke_color, stroke_width);
    +
    810  std::vector< PathPoint > points = parsePathPoints(node);
    +
    811  for (auto point : points) {
    +
    812  shape->addPoint(point);
    +
    813  }
    +
    814  std::string fill_rule = getAttribute(node, "fill-rule");
    +
    815  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
    +
    816  fill_rule.end());
    +
    817  shape->setFillRule(fill_rule);
    +
    818  return shape;
    +
    819 }
    +
    820 
    + +
    822  delete root;
    +
    823  for (auto gradient : gradients) {
    +
    824  delete gradient.second;
    +
    825  }
    +
    826 }
    +
    827 
    + +
    829 
    +
    830 std::pair< Vector2Df, Vector2Df > Parser::getViewBox() const { return viewbox; }
    +
    831 
    + +
    Represents a circle in 2D space.
    Definition: Circle.hpp:13
    +
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    void addStop(Stop stop)
    Adds a stop to the gradient.
    Definition: Gradient.cpp:23
    +
    void setTransforms(std::vector< std::string > transforms)
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:15
    +
    A composite class that contains a vector of shape pointers (polymorphic).
    Definition: Group.hpp:19
    +
    Attributes getAttributes() const
    Gets the attributes of the shape.
    Definition: Group.cpp:15
    +
    Represents a line in 2D space.
    Definition: Line.hpp:12
    +
    A class that represents a linear gradient.
    +
    To manipulate and parse an SVG file.
    Definition: Parser.hpp:24
    +
    Vector2Df getViewPort() const
    Gets the viewport of the SVG file.
    Definition: Parser.cpp:832
    +
    class Plyline * parsePolyline(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the polyline element.
    Definition: Parser.cpp:769
    +
    static Parser * getInstance(const std::string &file_name)
    Gets the singleton instance of the Parser class.
    Definition: Parser.cpp:158
    +
    class Ell * parseEllipse(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the ellipse element.
    Definition: Parser.cpp:743
    +
    SVGElement * root
    The root of the SVG file.
    Definition: Parser.hpp:276
    +
    mColor parseColor(rapidxml::xml_node<> *node, std::string color, std::string &id)
    Gets the color attributes of a node.
    Definition: Parser.cpp:362
    +
    Rect * parseRect(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the rect element.
    Definition: Parser.cpp:719
    +
    Vector2Df viewport
    The viewport of the SVG file.
    Definition: Parser.hpp:281
    +
    void printShapesData()
    Prints the data of the shapes.
    Definition: Parser.cpp:828
    +
    ~Parser()
    Destructor for the Parser class.
    Definition: Parser.cpp:821
    +
    Parser(const Parser &)=delete
    Deleted copy constructor to enforce the singleton pattern.
    +
    std::pair< Vector2Df, Vector2Df > getViewBox() const
    Gets the viewbox of the SVG file.
    Definition: Parser.cpp:830
    +
    Text * parseText(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the text element.
    Definition: Parser.cpp:784
    +
    Group * getRoot()
    Gets the root of the tree of SVGElements.
    Definition: Parser.cpp:169
    +
    std::string getAttribute(rapidxml::xml_node<> *node, std::string name)
    Gets the attributes of a node.
    Definition: Parser.cpp:296
    +
    Path * parsePath(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the path element.
    Definition: Parser.cpp:807
    +
    class Plygon * parsePolygon(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the polygon element.
    Definition: Parser.cpp:754
    +
    std::pair< Vector2Df, Vector2Df > viewbox
    The viewbox of the SVG file.
    Definition: Parser.hpp:280
    +
    std::map< std::string, Gradient * > gradients
    Definition: Parser.hpp:277
    +
    Line * parseLine(rapidxml::xml_node<> *node, const mColor &stroke_color, float stroke_width)
    Parses the line element.
    Definition: Parser.cpp:710
    +
    std::vector< std::string > getTransformOrder(rapidxml::xml_node<> *node)
    Gets the transform order of the element.
    Definition: Parser.cpp:637
    +
    SVGElement * parseElements(std::string file_name)
    Parses the SVG file and creates a tree of SVGElements.
    Definition: Parser.cpp:181
    +
    float getFloatAttribute(rapidxml::xml_node<> *node, std::string name)
    Gets the floating point attributes of a node.
    Definition: Parser.cpp:317
    +
    Circle * parseCircle(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the circle element.
    Definition: Parser.cpp:732
    +
    SVGElement * parseShape(rapidxml::xml_node<> *node)
    Parses the group of elements.
    Definition: Parser.cpp:667
    +
    void GetGradients(rapidxml::xml_node<> *node)
    Gets the gradients of a node.
    Definition: Parser.cpp:428
    +
    Gradient * parseGradient(std::string id)
    Gets the gradient of a node.
    Definition: Parser.cpp:404
    +
    std::vector< Stop > getGradientStops(rapidxml::xml_node<> *node)
    Gets the gradient stops of a node.
    Definition: Parser.cpp:412
    +
    static Parser * instance
    The instance of the Parser.
    Definition: Parser.hpp:275
    +
    std::vector< PathPoint > parsePathPoints(rapidxml::xml_node<> *node)
    Gets the points of the path element.
    Definition: Parser.cpp:494
    +
    std::vector< Vector2Df > parsePoints(rapidxml::xml_node<> *node)
    Gets the points of the element.
    Definition: Parser.cpp:478
    +
    Represents a path element in 2D space.
    Definition: Path.hpp:28
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the path.
    Definition: Path.cpp:12
    +
    void addPoint(PathPoint point)
    Adds a point to the path.
    Definition: Path.cpp:8
    +
    Represents a polygon in 2D space.
    Definition: Polygon.hpp:12
    +
    Represents a polyline in 2D space.
    Definition: Polyline.hpp:12
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polyshape.
    Definition: PolyShape.cpp:11
    +
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:7
    +
    A class that represents a radial gradient.
    +
    Represents a rectangle in 2D space.
    Definition: Rect.hpp:13
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    void setTransforms(const std::vector< std::string > &transforms)
    Sets the transformations of the shape.
    Definition: SVGElement.cpp:67
    +
    SVGElement * getParent() const
    Parent pointer getter.
    Definition: SVGElement.cpp:77
    +
    void setGradient(Gradient *gradient)
    Sets the gradient of the shape.
    Definition: SVGElement.cpp:79
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    +
    SVGElement * parent
    Pointer to the group that contains the shape.
    Definition: SVGElement.hpp:219
    +
    virtual void addElement(SVGElement *element)
    Adds a shape to the composite group.
    Definition: SVGElement.cpp:83
    +
    A class that represents a stop.
    Definition: Stop.hpp:11
    +
    Represents text in 2D space.
    Definition: Text.hpp:12
    +
    void setFontStyle(std::string style)
    Sets the style of the text.
    Definition: Text.cpp:22
    +
    void setAnchor(std::string anchor)
    Sets the anchor of the text.
    Definition: Text.cpp:18
    + +
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    +
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    +
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    +
    int a
    Alpha (opacity) component.
    Definition: Color.hpp:63
    +
    static const mColor Transparent
    Transparent (black) predefined color.
    Definition: Color.hpp:58
    +
    A struct that contains a point and a type of point.
    Definition: Path.hpp:10
    +
    +
    + + + \ No newline at end of file diff --git a/html/Parser_8hpp_source.html b/html/Parser_8hpp_source.html new file mode 100644 index 00000000..972f8c84 --- /dev/null +++ b/html/Parser_8hpp_source.html @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/Parser.hpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Parser.hpp
    +
    +
    +
    1 #ifndef PARSER_HPP_
    +
    2 #define PARSER_HPP_
    +
    3 
    +
    4 #include <algorithm>
    +
    5 #include <cmath>
    +
    6 #include <cstring>
    +
    7 #include <fstream>
    +
    8 #include <iostream>
    +
    9 #include <sstream>
    +
    10 #include <string>
    +
    11 #include <vector>
    +
    12 
    +
    13 #include "../external/rapidxml/rapidxml.hpp"
    +
    14 #include "Graphics.hpp"
    +
    15 
    +
    16 typedef std::vector< std::pair< std::string, std::string > > Attributes;
    +
    17 
    +
    24 class Parser {
    +
    25 public:
    +
    33  static Parser* getInstance(const std::string& file_name);
    +
    34 
    +
    38  Parser(const Parser&) = delete;
    +
    39 
    +
    43  ~Parser();
    +
    44 
    +
    50  Group* getRoot();
    +
    51 
    +
    57  void printShapesData();
    +
    58 
    +
    64  std::pair< Vector2Df, Vector2Df > getViewBox() const;
    +
    65 
    +
    71  Vector2Df getViewPort() const;
    +
    72 
    +
    73 private:
    +
    79  Parser(const std::string& file_name);
    +
    80 
    +
    88  SVGElement* parseElements(std::string file_name);
    +
    89 
    +
    98  std::string getAttribute(rapidxml::xml_node<>* node, std::string name);
    +
    99 
    +
    108  float getFloatAttribute(rapidxml::xml_node<>* node, std::string name);
    +
    109 
    +
    116  std::vector< Stop > getGradientStops(rapidxml::xml_node<>* node);
    +
    117 
    +
    123  void GetGradients(rapidxml::xml_node<>* node);
    +
    124 
    +
    131  Gradient* parseGradient(std::string id);
    +
    132 
    +
    141  mColor parseColor(rapidxml::xml_node<>* node, std::string color,
    +
    142  std::string& id);
    +
    143 
    +
    150  std::vector< Vector2Df > parsePoints(rapidxml::xml_node<>* node);
    +
    151 
    +
    158  std::vector< PathPoint > parsePathPoints(rapidxml::xml_node<>* node);
    +
    159 
    +
    166  std::vector< std::string > getTransformOrder(rapidxml::xml_node<>* node);
    +
    167 
    +
    176  Line* parseLine(rapidxml::xml_node<>* node, const mColor& stroke_color,
    +
    177  float stroke_width);
    +
    178 
    +
    188  Rect* parseRect(rapidxml::xml_node<>* node, const mColor& fill_color,
    +
    189  const mColor& stroke_color, float stroke_width);
    +
    190 
    +
    200  class Plyline* parsePolyline(rapidxml::xml_node<>* node,
    +
    201  const mColor& fill_color,
    +
    202  const mColor& stroke_color,
    +
    203  float stroke_width);
    +
    204 
    +
    214  class Plygon* parsePolygon(rapidxml::xml_node<>* node,
    +
    215  const mColor& fill_color,
    +
    216  const mColor& stroke_color, float stroke_width);
    +
    217 
    +
    227  Circle* parseCircle(rapidxml::xml_node<>* node, const mColor& fill_color,
    +
    228  const mColor& stroke_color, float stroke_width);
    +
    229 
    +
    239  class Ell* parseEllipse(rapidxml::xml_node<>* node,
    +
    240  const mColor& fill_color,
    +
    241  const mColor& stroke_color, float stroke_width);
    +
    242 
    +
    252  Path* parsePath(rapidxml::xml_node<>* node, const mColor& fill_color,
    +
    253  const mColor& stroke_color, float stroke_width);
    +
    254 
    +
    263  Text* parseText(rapidxml::xml_node<>* node, const mColor& fill_color,
    +
    264  const mColor& stroke_color, float stroke_width);
    +
    265 
    +
    272  SVGElement* parseShape(rapidxml::xml_node<>* node);
    +
    273 
    +
    274 private:
    +
    275  static Parser* instance;
    + +
    277  std::map< std::string, Gradient* > gradients;
    +
    279  std::pair< Vector2Df, Vector2Df >
    + + +
    282 };
    +
    283 
    +
    284 #endif // PARSER_HPP_
    +
    Represents a circle in 2D space.
    Definition: Circle.hpp:13
    +
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    A composite class that contains a vector of shape pointers (polymorphic).
    Definition: Group.hpp:19
    +
    Represents a line in 2D space.
    Definition: Line.hpp:12
    +
    To manipulate and parse an SVG file.
    Definition: Parser.hpp:24
    +
    Vector2Df getViewPort() const
    Gets the viewport of the SVG file.
    Definition: Parser.cpp:832
    +
    class Plyline * parsePolyline(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the polyline element.
    Definition: Parser.cpp:769
    +
    static Parser * getInstance(const std::string &file_name)
    Gets the singleton instance of the Parser class.
    Definition: Parser.cpp:158
    +
    class Ell * parseEllipse(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the ellipse element.
    Definition: Parser.cpp:743
    +
    SVGElement * root
    The root of the SVG file.
    Definition: Parser.hpp:276
    +
    mColor parseColor(rapidxml::xml_node<> *node, std::string color, std::string &id)
    Gets the color attributes of a node.
    Definition: Parser.cpp:362
    +
    Rect * parseRect(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the rect element.
    Definition: Parser.cpp:719
    +
    Vector2Df viewport
    The viewport of the SVG file.
    Definition: Parser.hpp:281
    +
    void printShapesData()
    Prints the data of the shapes.
    Definition: Parser.cpp:828
    +
    ~Parser()
    Destructor for the Parser class.
    Definition: Parser.cpp:821
    +
    Parser(const Parser &)=delete
    Deleted copy constructor to enforce the singleton pattern.
    +
    std::pair< Vector2Df, Vector2Df > getViewBox() const
    Gets the viewbox of the SVG file.
    Definition: Parser.cpp:830
    +
    Text * parseText(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the text element.
    Definition: Parser.cpp:784
    +
    Group * getRoot()
    Gets the root of the tree of SVGElements.
    Definition: Parser.cpp:169
    +
    std::string getAttribute(rapidxml::xml_node<> *node, std::string name)
    Gets the attributes of a node.
    Definition: Parser.cpp:296
    +
    Path * parsePath(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the path element.
    Definition: Parser.cpp:807
    +
    class Plygon * parsePolygon(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the polygon element.
    Definition: Parser.cpp:754
    +
    std::pair< Vector2Df, Vector2Df > viewbox
    The viewbox of the SVG file.
    Definition: Parser.hpp:280
    +
    std::map< std::string, Gradient * > gradients
    Definition: Parser.hpp:277
    +
    Line * parseLine(rapidxml::xml_node<> *node, const mColor &stroke_color, float stroke_width)
    Parses the line element.
    Definition: Parser.cpp:710
    +
    std::vector< std::string > getTransformOrder(rapidxml::xml_node<> *node)
    Gets the transform order of the element.
    Definition: Parser.cpp:637
    +
    SVGElement * parseElements(std::string file_name)
    Parses the SVG file and creates a tree of SVGElements.
    Definition: Parser.cpp:181
    +
    float getFloatAttribute(rapidxml::xml_node<> *node, std::string name)
    Gets the floating point attributes of a node.
    Definition: Parser.cpp:317
    +
    Circle * parseCircle(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the circle element.
    Definition: Parser.cpp:732
    +
    SVGElement * parseShape(rapidxml::xml_node<> *node)
    Parses the group of elements.
    Definition: Parser.cpp:667
    +
    void GetGradients(rapidxml::xml_node<> *node)
    Gets the gradients of a node.
    Definition: Parser.cpp:428
    +
    Gradient * parseGradient(std::string id)
    Gets the gradient of a node.
    Definition: Parser.cpp:404
    +
    std::vector< Stop > getGradientStops(rapidxml::xml_node<> *node)
    Gets the gradient stops of a node.
    Definition: Parser.cpp:412
    +
    static Parser * instance
    The instance of the Parser.
    Definition: Parser.hpp:275
    +
    std::vector< PathPoint > parsePathPoints(rapidxml::xml_node<> *node)
    Gets the points of the path element.
    Definition: Parser.cpp:494
    +
    std::vector< Vector2Df > parsePoints(rapidxml::xml_node<> *node)
    Gets the points of the element.
    Definition: Parser.cpp:478
    +
    Represents a path element in 2D space.
    Definition: Path.hpp:28
    +
    Represents a polygon in 2D space.
    Definition: Polygon.hpp:12
    +
    Represents a polyline in 2D space.
    Definition: Polyline.hpp:12
    +
    Represents a rectangle in 2D space.
    Definition: Rect.hpp:13
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    Represents text in 2D space.
    Definition: Text.hpp:12
    + +
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    +
    +
    + + + \ No newline at end of file diff --git a/docs/html/Path_8cpp_source.html b/html/Path_8cpp_source.html similarity index 71% rename from docs/html/Path_8cpp_source.html rename to html/Path_8cpp_source.html index b10f0442..349f2242 100644 --- a/docs/html/Path_8cpp_source.html +++ b/html/Path_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -123,46 +123,38 @@
    1 #include "Path.hpp"
    2 
    -
    3 Path::Path(const mColor& fill, const mColor& stroke, float stroke_width) {
    - - - -
    7 }
    -
    8 
    -
    9 std::string Path::getClass() const { return "Path"; }
    -
    10 
    -
    11 void Path::addPoint(PathPoint point) { points.push_back(point); }
    -
    12 
    -
    13 std::vector< PathPoint > Path::getPoints() const { return points; }
    -
    14 
    -
    15 void Path::setFillRule(std::string fill_rule) { this->fill_rule = fill_rule; }
    -
    16 
    -
    17 std::string Path::getFillRule() const { return fill_rule; }
    -
    18 
    -
    19 void Path::printData() const {
    - -
    21  std::cout << "Points: ";
    -
    22  for (auto point : points) {
    -
    23  std::cout << point.TC << " " << point.Point.x << " " << point.Point.y
    -
    24  << " ";
    -
    25  }
    -
    26 }
    +
    3 Path::Path(const mColor& fill, const mColor& stroke, float stroke_width)
    +
    4  : SVGElement(fill, stroke, stroke_width) {}
    +
    5 
    +
    6 std::string Path::getClass() const { return "Path"; }
    +
    7 
    +
    8 void Path::addPoint(PathPoint point) { points.push_back(point); }
    +
    9 
    +
    10 std::vector< PathPoint > Path::getPoints() const { return points; }
    +
    11 
    +
    12 void Path::setFillRule(std::string fill_rule) { this->fill_rule = fill_rule; }
    +
    13 
    +
    14 std::string Path::getFillRule() const { return fill_rule; }
    +
    15 
    +
    16 void Path::printData() const {
    + +
    18  std::cout << "Points: ";
    +
    19  for (auto point : points) {
    +
    20  std::cout << point.tc << " " << point.point.x << " " << point.point.y
    +
    21  << " ";
    +
    22  }
    +
    23 }
    Path(const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Path object.
    Definition: Path.cpp:3
    -
    std::vector< PathPoint > points
    Vector of points in the path.
    Definition: Path.hpp:86
    -
    void printData() const override
    Prints the data of the shape.
    Definition: Path.cpp:19
    -
    std::string getFillRule() const
    Gets the current fill rule of the path.
    Definition: Path.cpp:17
    -
    std::vector< PathPoint > getPoints() const
    Gets the vector of points in the path.
    Definition: Path.cpp:13
    -
    std::string fill_rule
    Fill rule of the path.
    Definition: Path.hpp:87
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Path.cpp:9
    -
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the path.
    Definition: Path.cpp:15
    -
    void addPoint(PathPoint point)
    Adds a point to the path.
    Definition: Path.cpp:11
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +
    std::vector< PathPoint > points
    Vector of points in the path.
    Definition: Path.hpp:90
    +
    void printData() const override
    Prints the data of the shape.
    Definition: Path.cpp:16
    +
    std::string getFillRule() const
    Gets the current fill rule of the path.
    Definition: Path.cpp:14
    +
    std::vector< PathPoint > getPoints() const
    Gets the vector of points in the path.
    Definition: Path.cpp:10
    +
    std::string fill_rule
    Fill rule of the path.
    Definition: Path.hpp:91
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Path.cpp:6
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the path.
    Definition: Path.cpp:12
    +
    void addPoint(PathPoint point)
    Adds a point to the path.
    Definition: Path.cpp:8
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    A struct that contains a point and a type of point.
    Definition: Path.hpp:10
    diff --git a/docs/html/Path_8hpp_source.html b/html/Path_8hpp_source.html similarity index 80% rename from docs/html/Path_8hpp_source.html rename to html/Path_8hpp_source.html index 4c157c2e..479cdfdc 100644 --- a/docs/html/Path_8hpp_source.html +++ b/html/Path_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -127,46 +127,50 @@
    4 #include "SVGElement.hpp"
    5 
    10 struct PathPoint {
    -
    11  Vector2Df Point;
    -
    12  char TC;
    -
    13 };
    -
    14 
    -
    24 class Path : public SVGElement {
    -
    25 public:
    -
    33  Path(const mColor& fill, const mColor& stroke, float stroke_width);
    -
    34 
    -
    40  std::string getClass() const override;
    -
    41 
    -
    49  void addPoint(PathPoint point);
    -
    50 
    -
    56  std::vector< PathPoint > getPoints() const;
    -
    57 
    -
    66  void setFillRule(std::string fill_rule);
    -
    67 
    -
    76  std::string getFillRule() const;
    -
    77 
    -
    83  void printData() const override;
    -
    84 
    -
    85 private:
    -
    86  std::vector< PathPoint > points;
    -
    87  std::string fill_rule;
    -
    88 };
    -
    89 
    -
    90 #endif
    -
    Represents a path element in 2D space.
    Definition: Path.hpp:24
    +
    11  Vector2Df point;
    +
    12  char tc;
    +
    13  Vector2Df radius{0, 0};
    +
    14  float x_axis_rotation = 0.f;
    +
    15  bool large_arc_flag = false;
    +
    16  bool sweep_flag = false;
    +
    17 };
    +
    18 
    +
    28 class Path : public SVGElement {
    +
    29 public:
    +
    37  Path(const mColor& fill, const mColor& stroke, float stroke_width);
    +
    38 
    +
    44  std::string getClass() const override;
    +
    45 
    +
    53  void addPoint(PathPoint point);
    +
    54 
    +
    60  std::vector< PathPoint > getPoints() const;
    +
    61 
    +
    70  void setFillRule(std::string fill_rule);
    +
    71 
    +
    80  std::string getFillRule() const;
    +
    81 
    +
    87  void printData() const override;
    +
    88 
    +
    89 private:
    +
    90  std::vector< PathPoint > points;
    +
    91  std::string fill_rule;
    +
    92 };
    +
    93 
    +
    94 #endif
    +
    Represents a path element in 2D space.
    Definition: Path.hpp:28
    Path(const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Path object.
    Definition: Path.cpp:3
    -
    std::vector< PathPoint > points
    Vector of points in the path.
    Definition: Path.hpp:86
    -
    void printData() const override
    Prints the data of the shape.
    Definition: Path.cpp:19
    -
    std::string getFillRule() const
    Gets the current fill rule of the path.
    Definition: Path.cpp:17
    -
    std::vector< PathPoint > getPoints() const
    Gets the vector of points in the path.
    Definition: Path.cpp:13
    -
    std::string fill_rule
    Fill rule of the path.
    Definition: Path.hpp:87
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Path.cpp:9
    -
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the path.
    Definition: Path.cpp:15
    -
    void addPoint(PathPoint point)
    Adds a point to the path.
    Definition: Path.cpp:11
    -
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:17
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    std::vector< PathPoint > points
    Vector of points in the path.
    Definition: Path.hpp:90
    +
    void printData() const override
    Prints the data of the shape.
    Definition: Path.cpp:16
    +
    std::string getFillRule() const
    Gets the current fill rule of the path.
    Definition: Path.cpp:14
    +
    std::vector< PathPoint > getPoints() const
    Gets the vector of points in the path.
    Definition: Path.cpp:10
    +
    std::string fill_rule
    Fill rule of the path.
    Definition: Path.hpp:91
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Path.cpp:6
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the path.
    Definition: Path.cpp:12
    +
    void addPoint(PathPoint point)
    Adds a point to the path.
    Definition: Path.cpp:8
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    A struct that contains a point and a type of point.
    Definition: Path.hpp:10
    diff --git a/docs/html/PolyShape_8cpp_source.html b/html/PolyShape_8cpp_source.html similarity index 59% rename from docs/html/PolyShape_8cpp_source.html rename to html/PolyShape_8cpp_source.html index 519c7517..9b9dd3b8 100644 --- a/docs/html/PolyShape_8cpp_source.html +++ b/html/PolyShape_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -124,36 +124,59 @@
    1 #include "PolyShape.hpp"
    2 
    3 PolyShape::PolyShape(const mColor& fill, const mColor& stroke,
    -
    4  float stroke_width) {
    - - - -
    8 }
    -
    9 
    -
    10 void PolyShape::addPoint(const Vector2Df& point) { points.push_back(point); }
    -
    11 
    -
    12 const std::vector< Vector2Df >& PolyShape::getPoints() const { return points; }
    -
    13 
    -
    14 void PolyShape::printData() const {
    - -
    16  std::cout << "Points: ";
    -
    17  for (auto& point : getPoints()) {
    -
    18  std::cout << point.x << "," << point.y << " ";
    -
    19  }
    -
    20  std::cout << std::endl;
    -
    21 }
    -
    const std::vector< Vector2Df > & getPoints() const
    Gets the total number of vertices representing the shape.
    Definition: PolyShape.cpp:12
    -
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:10
    -
    void printData() const override
    Prints the data of the shape.
    Definition: PolyShape.cpp:14
    +
    4  float stroke_width)
    +
    5  : SVGElement(fill, stroke, stroke_width) {}
    +
    6 
    +
    7 void PolyShape::addPoint(const Vector2Df& point) { points.push_back(point); }
    +
    8 
    +
    9 const std::vector< Vector2Df >& PolyShape::getPoints() const { return points; }
    +
    10 
    +
    11 void PolyShape::setFillRule(std::string fill_rule) {
    +
    12  this->fill_rule = fill_rule;
    +
    13 }
    +
    14 
    +
    15 std::string PolyShape::getFillRule() const { return fill_rule; }
    +
    16 
    + +
    18  float min_x = points[0].x;
    +
    19  float min_y = points[0].y;
    +
    20  for (auto& point : points) {
    +
    21  min_x = std::min(min_x, point.x);
    +
    22  min_y = std::min(min_y, point.y);
    +
    23  }
    +
    24  return Vector2Df(min_x, min_y);
    +
    25 }
    +
    26 
    + +
    28  float max_x = points[0].x;
    +
    29  float max_y = points[0].y;
    +
    30  for (auto& point : points) {
    +
    31  max_x = std::max(max_x, point.x);
    +
    32  max_y = std::max(max_y, point.y);
    +
    33  }
    +
    34  return Vector2Df(max_x, max_y);
    +
    35 }
    +
    36 
    +
    37 void PolyShape::printData() const {
    + +
    39  std::cout << "Points: ";
    +
    40  for (auto& point : getPoints()) {
    +
    41  std::cout << point.x << "," << point.y << " ";
    +
    42  }
    +
    43  std::cout << std::endl;
    +
    44 }
    +
    Vector2Df getMinBound() const override
    Gets the minimum bounding box of the shape.
    Definition: PolyShape.cpp:17
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polyshape.
    Definition: PolyShape.cpp:11
    +
    const std::vector< Vector2Df > & getPoints() const
    Gets the total number of vertices representing the shape.
    Definition: PolyShape.cpp:9
    +
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:7
    +
    void printData() const override
    Prints the data of the shape.
    Definition: PolyShape.cpp:37
    +
    Vector2Df getMaxBound() const override
    Gets the maximum bounding box of the shape.
    Definition: PolyShape.cpp:27
    PolyShape(const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a PolyShape object.
    Definition: PolyShape.cpp:3
    +
    std::string fill_rule
    Fill rule of the polyshape.
    Definition: PolyShape.hpp:15
    +
    std::string getFillRule() const
    Gets the fill rule of the polyshape.
    Definition: PolyShape.cpp:15
    std::vector< Vector2Df > points
    Vertices of the polyshape.
    Definition: PolyShape.hpp:14
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/PolyShape_8hpp_source.html b/html/PolyShape_8hpp_source.html similarity index 72% rename from docs/html/PolyShape_8hpp_source.html rename to html/PolyShape_8hpp_source.html index f4132acf..a3e1fd22 100644 --- a/docs/html/PolyShape_8hpp_source.html +++ b/html/PolyShape_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -129,31 +129,45 @@
    12 class PolyShape : public SVGElement {
    13 protected:
    14  std::vector< Vector2Df > points;
    -
    15 
    -
    25  PolyShape(const mColor &fill, const mColor &stroke, float stroke_width);
    -
    26 
    -
    27 public:
    -
    34  std::string getClass() const = 0;
    -
    35 
    -
    41  virtual void addPoint(const Vector2Df &point);
    -
    42 
    -
    48  const std::vector< Vector2Df > &getPoints() const;
    -
    49 
    -
    55  void printData() const override;
    -
    56 };
    +
    15  std::string fill_rule;
    +
    16 
    +
    26  PolyShape(const mColor &fill, const mColor &stroke, float stroke_width);
    +
    27 
    +
    28 public:
    +
    35  std::string getClass() const = 0;
    +
    36 
    +
    42  virtual void addPoint(const Vector2Df &point);
    +
    43 
    +
    49  const std::vector< Vector2Df > &getPoints() const;
    +
    50 
    +
    56  void setFillRule(std::string fill_rule);
    57 
    -
    58 #endif // POLYSHAPE_HPP_
    +
    63  std::string getFillRule() const;
    +
    64 
    +
    70  Vector2Df getMinBound() const override;
    +
    71 
    +
    77  Vector2Df getMaxBound() const override;
    +
    78 
    +
    84  void printData() const override;
    +
    85 };
    +
    86 
    +
    87 #endif // POLYSHAPE_HPP_
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    -
    const std::vector< Vector2Df > & getPoints() const
    Gets the total number of vertices representing the shape.
    Definition: PolyShape.cpp:12
    -
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:10
    -
    void printData() const override
    Prints the data of the shape.
    Definition: PolyShape.cpp:14
    +
    Vector2Df getMinBound() const override
    Gets the minimum bounding box of the shape.
    Definition: PolyShape.cpp:17
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polyshape.
    Definition: PolyShape.cpp:11
    +
    const std::vector< Vector2Df > & getPoints() const
    Gets the total number of vertices representing the shape.
    Definition: PolyShape.cpp:9
    +
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:7
    +
    void printData() const override
    Prints the data of the shape.
    Definition: PolyShape.cpp:37
    +
    Vector2Df getMaxBound() const override
    Gets the maximum bounding box of the shape.
    Definition: PolyShape.cpp:27
    PolyShape(const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a PolyShape object.
    Definition: PolyShape.cpp:3
    +
    std::string fill_rule
    Fill rule of the polyshape.
    Definition: PolyShape.hpp:15
    +
    std::string getFillRule() const
    Gets the fill rule of the polyshape.
    Definition: PolyShape.cpp:15
    std::vector< Vector2Df > points
    Vertices of the polyshape.
    Definition: PolyShape.hpp:14
    std::string getClass() const =0
    Gets the type of the shape.
    -
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:17
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Polygon_8cpp_source.html b/html/Polygon_8cpp_source.html similarity index 81% rename from docs/html/Polygon_8cpp_source.html rename to html/Polygon_8cpp_source.html index 214ab13b..71c73a26 100644 --- a/docs/html/Polygon_8cpp_source.html +++ b/html/Polygon_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -127,14 +127,7 @@
    4  : PolyShape(fill, stroke, stroke_width) {}
    5 
    6 std::string Plygon::getClass() const { return "Polygon"; }
    -
    7 
    -
    8 void Plygon::setFillRule(std::string fill_rule) { this->fill_rule = fill_rule; }
    -
    9 
    -
    10 std::string Plygon::getFillRule() const { return fill_rule; }
    -
    std::string fill_rule
    Fill rule of the polygon.
    Definition: Polygon.hpp:47
    -
    std::string getFillRule() const
    Gets the fill rule of the polygon.
    Definition: Polygon.cpp:10
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Polygon.cpp:6
    -
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polygon.
    Definition: Polygon.cpp:8
    Plygon(mColor fill, mColor stroke, float stroke_width)
    Constructs a Polygon object.
    Definition: Polygon.cpp:3
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Polygon_8hpp_source.html b/html/Polygon_8hpp_source.html similarity index 80% rename from docs/html/Polygon_8hpp_source.html rename to html/Polygon_8hpp_source.html index a32f85db..55c87b52 100644 --- a/docs/html/Polygon_8hpp_source.html +++ b/html/Polygon_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -131,26 +131,16 @@
    23 
    30  std::string getClass() const override;
    -
    31 
    -
    37  void setFillRule(std::string fill_rule);
    -
    38 
    -
    44  std::string getFillRule() const;
    -
    45 
    -
    46 private:
    -
    47  std::string fill_rule;
    -
    48 };
    -
    49 
    -
    50 #endif // POLYGON_HPP_
    +
    31 };
    +
    32 
    +
    33 #endif // POLYGON_HPP_
    Represents a polygon in 2D space.
    Definition: Polygon.hpp:12
    -
    std::string fill_rule
    Fill rule of the polygon.
    Definition: Polygon.hpp:47
    -
    std::string getFillRule() const
    Gets the fill rule of the polygon.
    Definition: Polygon.cpp:10
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Polygon.cpp:6
    -
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polygon.
    Definition: Polygon.cpp:8
    Plygon(mColor fill, mColor stroke, float stroke_width)
    Constructs a Polygon object.
    Definition: Polygon.cpp:3
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Polyline_8cpp_source.html b/html/Polyline_8cpp_source.html similarity index 80% rename from docs/html/Polyline_8cpp_source.html rename to html/Polyline_8cpp_source.html index 2cb7f7ea..c2e67f75 100644 --- a/docs/html/Polyline_8cpp_source.html +++ b/html/Polyline_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -127,17 +127,8 @@
    4  : PolyShape(fill, stroke, stroke_width) {}
    5 
    6 std::string Plyline::getClass() const { return "Polyline"; }
    -
    7 
    -
    8 void Plyline::setFillRule(std::string fill_rule) {
    -
    9  this->fill_rule = fill_rule;
    -
    10 }
    -
    11 
    -
    12 std::string Plyline::getFillRule() const { return fill_rule; }
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Polyline.cpp:6
    -
    std::string fill_rule
    Fill rule of the polyline.
    Definition: Polyline.hpp:47
    Plyline(const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Polyline object.
    Definition: Polyline.cpp:3
    -
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polyline.
    Definition: Polyline.cpp:8
    -
    std::string getFillRule() const
    Gets the fill rule of the polyline.
    Definition: Polyline.cpp:12
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Polyline_8hpp_source.html b/html/Polyline_8hpp_source.html similarity index 80% rename from docs/html/Polyline_8hpp_source.html rename to html/Polyline_8hpp_source.html index b3a9ce6a..a67a9d28 100644 --- a/docs/html/Polyline_8hpp_source.html +++ b/html/Polyline_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -131,26 +131,16 @@
    23  Plyline(const mColor& fill, const mColor& stroke, float stroke_width);
    24 
    30  std::string getClass() const override;
    -
    31 
    -
    37  void setFillRule(std::string fill_rule);
    -
    38 
    -
    44  std::string getFillRule() const;
    -
    45 
    -
    46 private:
    -
    47  std::string fill_rule;
    -
    48 };
    -
    49 
    -
    50 #endif // POLYLINE_HPP_
    +
    31 };
    +
    32 
    +
    33 #endif // POLYLINE_HPP_
    Represents a polyline in 2D space.
    Definition: Polyline.hpp:12
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Polyline.cpp:6
    -
    std::string fill_rule
    Fill rule of the polyline.
    Definition: Polyline.hpp:47
    Plyline(const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Polyline object.
    Definition: Polyline.cpp:3
    -
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polyline.
    Definition: Polyline.cpp:8
    -
    std::string getFillRule() const
    Gets the fill rule of the polyline.
    Definition: Polyline.cpp:12
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/html/RadialGradient_8cpp_source.html b/html/RadialGradient_8cpp_source.html new file mode 100644 index 00000000..dd85a17b --- /dev/null +++ b/html/RadialGradient_8cpp_source.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/RadialGradient.cpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    RadialGradient.cpp
    +
    +
    +
    1 #include "RadialGradient.hpp"
    +
    2 
    +
    3 RadialGradient::RadialGradient(std::vector< Stop > stops,
    +
    4  std::pair< Vector2Df, Vector2Df > points,
    +
    5  Vector2Df radius, std::string units)
    +
    6  : Gradient(stops, points, units) {
    +
    7  this->radius = radius;
    +
    8 }
    +
    9 
    +
    10 std::string RadialGradient::getClass() const { return "RadialGradient"; }
    +
    11 
    + +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::string getClass() const override
    Gets the type of the gradient.
    +
    RadialGradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, Vector2Df radius, std::string units)
    Constructs a RadialGradient object.
    +
    Vector2Df radius
    The radius of the gradient.
    +
    Vector2Df getRadius() const
    Gets the radius of the gradient.
    + +
    +
    + + + \ No newline at end of file diff --git a/html/RadialGradient_8hpp_source.html b/html/RadialGradient_8hpp_source.html new file mode 100644 index 00000000..0268a0f8 --- /dev/null +++ b/html/RadialGradient_8hpp_source.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/RadialGradient.hpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    RadialGradient.hpp
    +
    +
    +
    1 #ifndef RADIAL_GRADIENT_HPP_
    +
    2 #define RADIAL_GRADIENT_HPP_
    +
    3 
    +
    4 #include "Gradient.hpp"
    +
    5 
    +
    14 class RadialGradient : public Gradient {
    +
    15 public:
    +
    24  RadialGradient(std::vector< Stop > stops,
    +
    25  std::pair< Vector2Df, Vector2Df > points, Vector2Df radius,
    +
    26  std::string units);
    +
    27 
    +
    34  std::string getClass() const override;
    +
    35 
    +
    41  Vector2Df getRadius() const;
    +
    42 
    +
    43 private:
    + +
    45 };
    +
    46 
    +
    47 #endif
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::string units
    Units of the gradient.
    Definition: Gradient.hpp:95
    +
    std::vector< Stop > stops
    Stops of the gradient.
    Definition: Gradient.hpp:92
    +
    std::pair< Vector2Df, Vector2Df > points
    Start and end points of the gradient.
    Definition: Gradient.hpp:94
    +
    A class that represents a radial gradient.
    +
    std::string getClass() const override
    Gets the type of the gradient.
    +
    RadialGradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, Vector2Df radius, std::string units)
    Constructs a RadialGradient object.
    +
    Vector2Df radius
    The radius of the gradient.
    +
    Vector2Df getRadius() const
    Gets the radius of the gradient.
    + +
    +
    + + + \ No newline at end of file diff --git a/docs/html/Rect_8cpp_source.html b/html/Rect_8cpp_source.html similarity index 71% rename from docs/html/Rect_8cpp_source.html rename to html/Rect_8cpp_source.html index b14d2000..4f0e6090 100644 --- a/docs/html/Rect_8cpp_source.html +++ b/html/Rect_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -125,62 +125,44 @@
    2 
    3 Rect::Rect(float width, float height, Vector2Df position, Vector2Df radius,
    4  const mColor &fill, const mColor &stroke, float stroke_width)
    -
    5  : PolyShape(fill, stroke, stroke_width), width(width), height(height),
    -
    6  radius(radius) {
    -
    7  addPoint(Vector2Df(0, 0));
    - - - - -
    12 }
    +
    5  : SVGElement(fill, stroke, stroke_width, position), width(width),
    +
    6  height(height), radius(radius) {}
    +
    7 
    +
    8 std::string Rect::getClass() const { return "Rect"; }
    +
    9 
    +
    10 void Rect::setWidth(float width) { this->width = width; }
    +
    11 
    +
    12 float Rect::getWidth() const { return width; }
    13 
    -
    14 std::string Rect::getClass() const { return "Rect"; }
    +
    14 void Rect::setHeight(float height) { this->height = height; }
    15 
    -
    16 void Rect::setWidth(float width) {
    -
    17  this->width = width;
    -
    18  points[1].x = width;
    -
    19  points[2].x = width;
    -
    20 }
    +
    16 float Rect::getHeight() const { return height; }
    +
    17 
    +
    18 void Rect::setRadius(const Vector2Df &radius) { this->radius = radius; }
    +
    19 
    +
    20 Vector2Df Rect::getRadius() const { return radius; }
    21 
    -
    22 float Rect::getWidth() const { return width; }
    -
    23 
    -
    24 void Rect::setHeight(float height) {
    -
    25  this->height = height;
    -
    26  points[2].y = height;
    -
    27  points[3].y = height;
    +
    22 void Rect::printData() const {
    + +
    24  std::cout << "Width: " << getWidth() << std::endl;
    +
    25  std::cout << "Height: " << getHeight() << std::endl;
    +
    26  std::cout << "Radius: " << getRadius().x << " " << getRadius().y
    +
    27  << std::endl;
    28 }
    -
    29 
    -
    30 float Rect::getHeight() const { return height; }
    -
    31 
    -
    32 void Rect::setRadius(const Vector2Df &radius) { this->radius = radius; }
    -
    33 
    -
    34 Vector2Df Rect::getRadius() const { return radius; }
    -
    35 
    -
    36 void Rect::printData() const {
    - -
    38  std::cout << "Width: " << getWidth() << std::endl;
    -
    39  std::cout << "Height: " << getHeight() << std::endl;
    -
    40  std::cout << "Radius: " << getRadius().x << " " << getRadius().y
    -
    41  << std::endl;
    -
    42 }
    -
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    -
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:10
    -
    std::vector< Vector2Df > points
    Vertices of the polyshape.
    Definition: PolyShape.hpp:14
    -
    void setRadius(const Vector2Df &radius)
    Sets the radii of the rectangle.
    Definition: Rect.cpp:32
    +
    void setRadius(const Vector2Df &radius)
    Sets the radii of the rectangle.
    Definition: Rect.cpp:18
    float height
    Height of the rectangle.
    Definition: Rect.hpp:16
    -
    Vector2Df getRadius() const
    Gets the radii of the rectangle.
    Definition: Rect.cpp:34
    -
    float getHeight() const
    Gets the height of the rectangle.
    Definition: Rect.cpp:30
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Rect.cpp:14
    -
    void printData() const override
    Prints the data of the rectangle.
    Definition: Rect.cpp:36
    +
    Vector2Df getRadius() const
    Gets the radii of the rectangle.
    Definition: Rect.cpp:20
    +
    float getHeight() const
    Gets the height of the rectangle.
    Definition: Rect.cpp:16
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Rect.cpp:8
    +
    void printData() const override
    Prints the data of the rectangle.
    Definition: Rect.cpp:22
    Vector2Df radius
    Radii of the rectangle in the x and y directions.
    Definition: Rect.hpp:17
    float width
    Width of the rectangle.
    Definition: Rect.hpp:15
    -
    void setHeight(float height)
    Sets the height of the rectangle.
    Definition: Rect.cpp:24
    -
    float getWidth() const
    Gets the width of the rectangle.
    Definition: Rect.cpp:22
    +
    void setHeight(float height)
    Sets the height of the rectangle.
    Definition: Rect.cpp:14
    +
    float getWidth() const
    Gets the width of the rectangle.
    Definition: Rect.cpp:12
    Rect(float width, float height, Vector2Df position, Vector2Df radius, const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Rect object.
    Definition: Rect.cpp:3
    -
    void setWidth(float width)
    Sets the width of the rectangle.
    Definition: Rect.cpp:16
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:172
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +
    void setWidth(float width)
    Sets the width of the rectangle.
    Definition: Rect.cpp:10
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    diff --git a/docs/html/Rect_8hpp_source.html b/html/Rect_8hpp_source.html similarity index 93% rename from docs/html/Rect_8hpp_source.html rename to html/Rect_8hpp_source.html index b2febc6b..6e395160 100644 --- a/docs/html/Rect_8hpp_source.html +++ b/html/Rect_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -124,9 +124,9 @@
    1 #ifndef RECT_HPP_
    2 #define RECT_HPP_
    3 
    -
    4 #include "Polygon.hpp"
    +
    4 #include "SVGElement.hpp"
    5 
    -
    13 class Rect : public PolyShape {
    +
    13 class Rect : public SVGElement {
    14 private:
    15  float width;
    16  float height;
    @@ -154,24 +154,24 @@
    89 };
    90 
    91 #endif // RECT_HPP_
    -
    Abstract base class for polygon and polyline shapes in 2D space.
    Definition: PolyShape.hpp:12
    Represents a rectangle in 2D space.
    Definition: Rect.hpp:13
    -
    void setRadius(const Vector2Df &radius)
    Sets the radii of the rectangle.
    Definition: Rect.cpp:32
    +
    void setRadius(const Vector2Df &radius)
    Sets the radii of the rectangle.
    Definition: Rect.cpp:18
    float height
    Height of the rectangle.
    Definition: Rect.hpp:16
    -
    Vector2Df getRadius() const
    Gets the radii of the rectangle.
    Definition: Rect.cpp:34
    -
    float getHeight() const
    Gets the height of the rectangle.
    Definition: Rect.cpp:30
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Rect.cpp:14
    -
    void printData() const override
    Prints the data of the rectangle.
    Definition: Rect.cpp:36
    +
    Vector2Df getRadius() const
    Gets the radii of the rectangle.
    Definition: Rect.cpp:20
    +
    float getHeight() const
    Gets the height of the rectangle.
    Definition: Rect.cpp:16
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Rect.cpp:8
    +
    void printData() const override
    Prints the data of the rectangle.
    Definition: Rect.cpp:22
    Vector2Df radius
    Radii of the rectangle in the x and y directions.
    Definition: Rect.hpp:17
    float width
    Width of the rectangle.
    Definition: Rect.hpp:15
    -
    void setHeight(float height)
    Sets the height of the rectangle.
    Definition: Rect.cpp:24
    -
    float getWidth() const
    Gets the width of the rectangle.
    Definition: Rect.cpp:22
    +
    void setHeight(float height)
    Sets the height of the rectangle.
    Definition: Rect.cpp:14
    +
    float getWidth() const
    Gets the width of the rectangle.
    Definition: Rect.cpp:12
    Rect(float width, float height, Vector2Df position, Vector2Df radius, const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Rect object.
    Definition: Rect.cpp:3
    -
    void setWidth(float width)
    Sets the width of the rectangle.
    Definition: Rect.cpp:16
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:172
    +
    void setWidth(float width)
    Sets the width of the rectangle.
    Definition: Rect.cpp:10
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    +
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:225
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/html/Renderer_8cpp_source.html b/html/Renderer_8cpp_source.html new file mode 100644 index 00000000..dd460a98 --- /dev/null +++ b/html/Renderer_8cpp_source.html @@ -0,0 +1,936 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/Renderer.cpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Renderer.cpp
    +
    +
    +
    1 #include "Renderer.hpp"
    +
    2 
    +
    3 #include <algorithm>
    +
    4 #include <codecvt>
    +
    5 #include <locale>
    +
    6 
    + +
    8 
    + +
    10 
    + +
    12  if (instance == nullptr) {
    +
    13  instance = new Renderer();
    +
    14  }
    +
    15  return instance;
    +
    16 }
    +
    17 
    +
    18 std::pair< float, float > getTranslate(std::string transform_value) {
    +
    19  float trans_x = 0, trans_y = 0;
    +
    20  if (transform_value.find(",") != std::string::npos) {
    +
    21  sscanf(transform_value.c_str(), "translate(%f, %f)", &trans_x,
    +
    22  &trans_y);
    +
    23  } else {
    +
    24  sscanf(transform_value.c_str(), "translate(%f %f)", &trans_x, &trans_y);
    +
    25  }
    +
    26  return std::pair< float, float >(trans_x, trans_y);
    +
    27 }
    +
    28 
    +
    29 float getRotate(std::string transform_value) {
    +
    30  float degree = 0;
    +
    31  sscanf(transform_value.c_str(), "rotate(%f)", &degree);
    +
    32  return degree;
    +
    33 }
    +
    34 
    +
    35 float getScale(std::string transform_value) {
    +
    36  float scale = 0;
    +
    37  sscanf(transform_value.c_str(), "scale(%f)", &scale);
    +
    38  return scale;
    +
    39 }
    +
    40 
    +
    41 std::pair< float, float > getScaleXY(std::string transform_value) {
    +
    42  float scale_x = 0, scale_y = 0;
    +
    43  if (transform_value.find(",") != std::string::npos)
    +
    44  sscanf(transform_value.c_str(), "scale(%f, %f)", &scale_x, &scale_y);
    +
    45  else
    +
    46  sscanf(transform_value.c_str(), "scale(%f %f)", &scale_x, &scale_y);
    +
    47  return std::pair< float, float >(scale_x, scale_y);
    +
    48 }
    +
    49 
    +
    50 void Renderer::applyTransform(std::vector< std::string > transform_order,
    +
    51  Gdiplus::Graphics& graphics) const {
    +
    52  for (auto type : transform_order) {
    +
    53  if (type.find("translate") != std::string::npos) {
    +
    54  float trans_x = getTranslate(type).first,
    +
    55  trans_y = getTranslate(type).second;
    +
    56  graphics.TranslateTransform(trans_x, trans_y);
    +
    57  } else if (type.find("rotate") != std::string::npos) {
    +
    58  float degree = getRotate(type);
    +
    59  graphics.RotateTransform(degree);
    +
    60  } else if (type.find("scale") != std::string::npos) {
    +
    61  if (type.find(",") != std::string::npos) {
    +
    62  float scale_x = getScaleXY(type).first,
    +
    63  scale_y = getScaleXY(type).second;
    +
    64  graphics.ScaleTransform(scale_x, scale_y);
    +
    65  } else {
    +
    66  float scale = getScale(type);
    +
    67  graphics.ScaleTransform(scale, scale);
    +
    68  }
    +
    69  }
    +
    70  }
    +
    71 }
    +
    72 
    +
    73 void Renderer::draw(Gdiplus::Graphics& graphics, Group* group) const {
    +
    74  for (auto shape : group->getElements()) {
    +
    75  Gdiplus::Matrix original;
    +
    76  graphics.GetTransform(&original);
    +
    77  applyTransform(shape->getTransforms(), graphics);
    +
    78  if (shape->getClass() == "Group") {
    +
    79  Group* group = dynamic_cast< Group* >(shape);
    +
    80  draw(graphics, group);
    +
    81  } else if (shape->getClass() == "Polyline") {
    +
    82  Plyline* polyline = dynamic_cast< Plyline* >(shape);
    +
    83  drawPolyline(graphics, polyline);
    +
    84  } else if (shape->getClass() == "Text") {
    +
    85  Text* text = dynamic_cast< Text* >(shape);
    +
    86  drawText(graphics, text);
    +
    87  } else if (shape->getClass() == "Rect") {
    +
    88  Rect* rectangle = dynamic_cast< Rect* >(shape);
    +
    89  drawRectangle(graphics, rectangle);
    +
    90  } else if (shape->getClass() == "Circle") {
    +
    91  Circle* circle = dynamic_cast< Circle* >(shape);
    +
    92  drawCircle(graphics, circle);
    +
    93  } else if (shape->getClass() == "Ellipse") {
    +
    94  Ell* ellipse = dynamic_cast< Ell* >(shape);
    +
    95  drawEllipse(graphics, ellipse);
    +
    96  } else if (shape->getClass() == "Line") {
    +
    97  Line* line = dynamic_cast< Line* >(shape);
    +
    98  drawLine(graphics, line);
    +
    99  } else if (shape->getClass() == "Polygon") {
    +
    100  Plygon* polygon = dynamic_cast< Plygon* >(shape);
    +
    101  drawPolygon(graphics, polygon);
    +
    102  } else if (shape->getClass() == "Path") {
    +
    103  Path* path = dynamic_cast< Path* >(shape);
    +
    104  drawPath(graphics, path);
    +
    105  }
    +
    106  graphics.SetTransform(&original);
    +
    107  }
    +
    108 }
    +
    109 
    +
    110 void Renderer::drawLine(Gdiplus::Graphics& graphics, Line* line) const {
    +
    111  mColor color = line->getOutlineColor();
    +
    112  Gdiplus::Pen linePen(Gdiplus::Color(color.a, color.r, color.g, color.b),
    +
    113  line->getOutlineThickness());
    +
    114  Gdiplus::PointF startPoint(line->getPosition().x, line->getPosition().y);
    +
    115  Gdiplus::PointF endPoint(line->getDirection().x, line->getDirection().y);
    +
    116  graphics.DrawLine(&linePen, startPoint, endPoint);
    +
    117 }
    +
    118 
    +
    119 void Renderer::drawRectangle(Gdiplus::Graphics& graphics,
    +
    120  Rect* rectangle) const {
    +
    121  float x = rectangle->getPosition().x;
    +
    122  float y = rectangle->getPosition().y;
    +
    123  float width = rectangle->getWidth();
    +
    124  float height = rectangle->getHeight();
    +
    125  mColor outline_color = rectangle->getOutlineColor();
    +
    126  Gdiplus::Pen rect_outline(Gdiplus::Color(outline_color.a, outline_color.r,
    +
    127  outline_color.g, outline_color.b),
    +
    128  rectangle->getOutlineThickness());
    +
    129  Gdiplus::RectF bound(x, y, width, height);
    +
    130  Gdiplus::Brush* rect_fill = getBrush(rectangle, bound);
    +
    131  if (rectangle->getRadius().x != 0 || rectangle->getRadius().y != 0) {
    +
    132  float dx = rectangle->getRadius().x * 2;
    +
    133  float dy = rectangle->getRadius().y * 2;
    +
    134  Gdiplus::GraphicsPath path;
    +
    135  path.AddArc(x, y, dx, dy, 180, 90);
    +
    136  path.AddArc(x + width - dx, y, dx, dy, 270, 90);
    +
    137  path.AddArc(x + width - dx, y + height - dy, dx, dy, 0, 90);
    +
    138  path.AddArc(x, y + height - dy, dx, dy, 90, 90);
    +
    139  path.CloseFigure();
    +
    140  if (Gdiplus::PathGradientBrush* brush =
    +
    141  dynamic_cast< Gdiplus::PathGradientBrush* >(rect_fill)) {
    +
    142  mColor color =
    +
    143  rectangle->getGradient()->getStops().back().getColor();
    +
    144  Gdiplus::SolidBrush corner_fill(
    +
    145  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    146  graphics.FillPath(&corner_fill, &path);
    +
    147  }
    +
    148  graphics.FillPath(rect_fill, &path);
    +
    149  graphics.DrawPath(&rect_outline, &path);
    +
    150  } else {
    +
    151  if (Gdiplus::PathGradientBrush* brush =
    +
    152  dynamic_cast< Gdiplus::PathGradientBrush* >(rect_fill)) {
    +
    153  mColor color =
    +
    154  rectangle->getGradient()->getStops().back().getColor();
    +
    155  Gdiplus::SolidBrush corner_fill(
    +
    156  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    157  graphics.FillRectangle(&corner_fill, x, y, width, height);
    +
    158  }
    +
    159  graphics.FillRectangle(rect_fill, x, y, width, height);
    +
    160  graphics.DrawRectangle(&rect_outline, x, y, width, height);
    +
    161  }
    +
    162  delete rect_fill;
    +
    163 }
    +
    164 
    +
    165 void Renderer::drawCircle(Gdiplus::Graphics& graphics, Circle* circle) const {
    +
    166  mColor outline_color = circle->getOutlineColor();
    +
    167  Gdiplus::Pen circle_outline(
    +
    168  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
    +
    169  outline_color.b),
    +
    170  circle->getOutlineThickness());
    +
    171  Vector2Df min_bound = circle->getMinBound();
    +
    172  Vector2Df max_bound = circle->getMaxBound();
    +
    173  Gdiplus::RectF bound(min_bound.x, min_bound.y, max_bound.x - min_bound.x,
    +
    174  max_bound.y - min_bound.y);
    +
    175  Gdiplus::Brush* circle_fill = getBrush(circle, bound);
    +
    176  if (Gdiplus::PathGradientBrush* brush =
    +
    177  dynamic_cast< Gdiplus::PathGradientBrush* >(circle_fill)) {
    +
    178  mColor color = circle->getGradient()->getStops().back().getColor();
    +
    179  Gdiplus::SolidBrush corner_fill(
    +
    180  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    181  graphics.FillEllipse(
    +
    182  &corner_fill, circle->getPosition().x - circle->getRadius().x,
    +
    183  circle->getPosition().y - circle->getRadius().y,
    +
    184  circle->getRadius().x * 2, circle->getRadius().y * 2);
    +
    185  }
    +
    186  graphics.FillEllipse(circle_fill,
    +
    187  circle->getPosition().x - circle->getRadius().x,
    +
    188  circle->getPosition().y - circle->getRadius().y,
    +
    189  circle->getRadius().x * 2, circle->getRadius().y * 2);
    +
    190  graphics.DrawEllipse(&circle_outline,
    +
    191  circle->getPosition().x - circle->getRadius().x,
    +
    192  circle->getPosition().y - circle->getRadius().y,
    +
    193  circle->getRadius().x * 2, circle->getRadius().x * 2);
    +
    194  delete circle_fill;
    +
    195 }
    +
    196 
    +
    197 void Renderer::drawEllipse(Gdiplus::Graphics& graphics, Ell* ellipse) const {
    +
    198  mColor outline_color = ellipse->getOutlineColor();
    +
    199  Gdiplus::Pen ellipse_outline(
    +
    200  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
    +
    201  outline_color.b),
    +
    202  ellipse->getOutlineThickness());
    +
    203  Vector2Df min_bound = ellipse->getMinBound();
    +
    204  Vector2Df max_bound = ellipse->getMaxBound();
    +
    205  Gdiplus::RectF bound(min_bound.x, min_bound.y, max_bound.x - min_bound.x,
    +
    206  max_bound.y - min_bound.y);
    +
    207  Gdiplus::Brush* ellipse_fill = getBrush(ellipse, bound);
    +
    208  if (Gdiplus::PathGradientBrush* brush =
    +
    209  dynamic_cast< Gdiplus::PathGradientBrush* >(ellipse_fill)) {
    +
    210  mColor color = ellipse->getGradient()->getStops().back().getColor();
    +
    211  Gdiplus::SolidBrush corner_fill(
    +
    212  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    213  graphics.FillEllipse(
    +
    214  &corner_fill, ellipse->getPosition().x - ellipse->getRadius().x,
    +
    215  ellipse->getPosition().y - ellipse->getRadius().y,
    +
    216  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
    +
    217  }
    +
    218  graphics.FillEllipse(
    +
    219  ellipse_fill, ellipse->getPosition().x - ellipse->getRadius().x,
    +
    220  ellipse->getPosition().y - ellipse->getRadius().y,
    +
    221  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
    +
    222  graphics.DrawEllipse(
    +
    223  &ellipse_outline, ellipse->getPosition().x - ellipse->getRadius().x,
    +
    224  ellipse->getPosition().y - ellipse->getRadius().y,
    +
    225  ellipse->getRadius().x * 2, ellipse->getRadius().y * 2);
    +
    226  delete ellipse_fill;
    +
    227 }
    +
    228 
    +
    229 void Renderer::drawPolygon(Gdiplus::Graphics& graphics, Plygon* polygon) const {
    +
    230  mColor outline_color = polygon->getOutlineColor();
    +
    231  Gdiplus::Pen polygon_outline(
    +
    232  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
    +
    233  outline_color.b),
    +
    234  polygon->getOutlineThickness());
    +
    235 
    +
    236  Gdiplus::PointF* points = new Gdiplus::PointF[polygon->getPoints().size()];
    +
    237  int idx = 0;
    +
    238  const std::vector< Vector2Df >& vertices = polygon->getPoints();
    +
    239  for (const Vector2Df vertex : vertices) {
    +
    240  points[idx++] = Gdiplus::PointF(vertex.x, vertex.y);
    +
    241  }
    +
    242 
    +
    243  Gdiplus::FillMode fill_mode;
    +
    244  if (polygon->getFillRule() == "evenodd") {
    +
    245  fill_mode = Gdiplus::FillModeAlternate;
    +
    246  } else if (polygon->getFillRule() == "nonzero") {
    +
    247  fill_mode = Gdiplus::FillModeWinding;
    +
    248  }
    +
    249  Vector2Df min_bound = polygon->getMinBound();
    +
    250  Vector2Df max_bound = polygon->getMaxBound();
    +
    251  Gdiplus::RectF bound(min_bound.x, min_bound.y, max_bound.x - min_bound.x,
    +
    252  max_bound.y - min_bound.y);
    +
    253  Gdiplus::Brush* polygon_fill = getBrush(polygon, bound);
    +
    254  if (Gdiplus::PathGradientBrush* brush =
    +
    255  dynamic_cast< Gdiplus::PathGradientBrush* >(polygon_fill)) {
    +
    256  mColor color = polygon->getGradient()->getStops().back().getColor();
    +
    257  Gdiplus::SolidBrush corner_fill(
    +
    258  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    259  graphics.FillPolygon(&corner_fill, points, idx, fill_mode);
    +
    260  }
    +
    261  graphics.FillPolygon(polygon_fill, points, idx, fill_mode);
    +
    262  graphics.DrawPolygon(&polygon_outline, points, idx);
    +
    263  delete[] points;
    +
    264  delete polygon_fill;
    +
    265 }
    +
    266 
    +
    267 void Renderer::drawText(Gdiplus::Graphics& graphics, Text* text) const {
    +
    268  mColor outline_color = text->getOutlineColor();
    +
    269  graphics.SetTextRenderingHint(Gdiplus::TextRenderingHintAntiAliasGridFit);
    +
    270 
    +
    271  Gdiplus::Pen text_outline(Gdiplus::Color(outline_color.a, outline_color.r,
    +
    272  outline_color.g, outline_color.b),
    +
    273  text->getOutlineThickness());
    +
    274 
    +
    275  Gdiplus::FontFamily font_family(L"Times New Roman");
    +
    276 
    +
    277  Gdiplus::PointF position(text->getPosition().x, text->getPosition().y);
    +
    278  Gdiplus::GraphicsPath path;
    +
    279 
    +
    280  std::wstring_convert< std::codecvt_utf8_utf16< wchar_t > > converter;
    +
    281  std::wstring wide_content = converter.from_bytes(text->getContent());
    +
    282  Gdiplus::StringFormat string_format;
    +
    283  if (text->getAnchor() == "middle") {
    +
    284  string_format.SetAlignment(Gdiplus::StringAlignmentCenter);
    +
    285  position.X += 7;
    +
    286  } else if (text->getAnchor() == "end") {
    +
    287  string_format.SetAlignment(Gdiplus::StringAlignmentFar);
    +
    288  position.X += 14;
    +
    289  } else {
    +
    290  string_format.SetAlignment(Gdiplus::StringAlignmentNear);
    +
    291  }
    +
    292  Gdiplus::FontStyle font_style = Gdiplus::FontStyleRegular;
    +
    293  if (text->getFontStyle() == "italic" || text->getFontStyle() == "oblique") {
    +
    294  font_style = Gdiplus::FontStyleItalic;
    +
    295  position.Y -= 1;
    +
    296  }
    +
    297 
    +
    298  path.AddString(wide_content.c_str(), wide_content.size(), &font_family,
    +
    299  font_style, text->getFontSize(), position, &string_format);
    +
    300  Gdiplus::RectF bound;
    +
    301  path.GetBounds(&bound);
    +
    302  Gdiplus::Brush* text_fill = getBrush(text, bound);
    +
    303  if (Gdiplus::PathGradientBrush* brush =
    +
    304  dynamic_cast< Gdiplus::PathGradientBrush* >(text_fill)) {
    +
    305  mColor color = text->getGradient()->getStops().back().getColor();
    +
    306  Gdiplus::SolidBrush corner_fill(
    +
    307  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    308  graphics.FillPath(&corner_fill, &path);
    +
    309  }
    +
    310  graphics.FillPath(text_fill, &path);
    +
    311  if (text->getOutlineColor().a != 0 &&
    +
    312  text->getOutlineColor().a == text->getFillColor().a) {
    +
    313  text_outline.SetColor(Gdiplus::Color(255, 255, 255, 255));
    +
    314  graphics.DrawPath(&text_outline, &path);
    +
    315  text_outline.SetColor(Gdiplus::Color(outline_color.a, outline_color.r,
    +
    316  outline_color.g, outline_color.b));
    +
    317  }
    +
    318  graphics.DrawPath(&text_outline, &path);
    +
    319  delete text_fill;
    +
    320 }
    +
    321 
    +
    322 void Renderer::drawPolyline(Gdiplus::Graphics& graphics,
    +
    323  Plyline* polyline) const {
    +
    324  mColor outline_color = polyline->getOutlineColor();
    +
    325  Gdiplus::Pen polyline_outline(
    +
    326  Gdiplus::Color(outline_color.a, outline_color.r, outline_color.g,
    +
    327  outline_color.b),
    +
    328  polyline->getOutlineThickness());
    +
    329 
    +
    330  Gdiplus::FillMode fill_mode;
    +
    331  if (polyline->getFillRule() == "evenodd") {
    +
    332  fill_mode = Gdiplus::FillModeAlternate;
    +
    333  } else if (polyline->getFillRule() == "nonzero") {
    +
    334  fill_mode = Gdiplus::FillModeWinding;
    +
    335  }
    +
    336  Gdiplus::GraphicsPath path(fill_mode);
    +
    337  const std::vector< Vector2Df >& points = polyline->getPoints();
    +
    338  if (points.size() < 2) {
    +
    339  return;
    +
    340  }
    +
    341 
    +
    342  path.StartFigure();
    +
    343  path.AddLine(points[0].x, points[0].y, points[1].x, points[1].y);
    +
    344  for (size_t i = 2; i < points.size(); ++i) {
    +
    345  path.AddLine(points[i - 1].x, points[i - 1].y, points[i].x,
    +
    346  points[i].y);
    +
    347  }
    +
    348  Vector2Df min_bound = polyline->getMinBound();
    +
    349  Vector2Df max_bound = polyline->getMaxBound();
    +
    350  Gdiplus::RectF bound(min_bound.x, min_bound.y, max_bound.x - min_bound.x,
    +
    351  max_bound.y - min_bound.y);
    +
    352  Gdiplus::Brush* polyline_fill = getBrush(polyline, bound);
    +
    353  if (Gdiplus::PathGradientBrush* brush =
    +
    354  dynamic_cast< Gdiplus::PathGradientBrush* >(polyline_fill)) {
    +
    355  mColor color = polyline->getGradient()->getStops().back().getColor();
    +
    356  Gdiplus::SolidBrush corner_fill(
    +
    357  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    358  graphics.FillPath(&corner_fill, &path);
    +
    359  }
    +
    360  graphics.FillPath(polyline_fill, &path);
    +
    361  graphics.DrawPath(&polyline_outline, &path);
    +
    362  delete polyline_fill;
    +
    363 }
    +
    364 
    +
    365 void Renderer::drawPath(Gdiplus::Graphics& graphics, Path* path) const {
    +
    366  mColor outline_color = path->getOutlineColor();
    +
    367  Gdiplus::Pen path_outline(Gdiplus::Color(outline_color.a, outline_color.r,
    +
    368  outline_color.g, outline_color.b),
    +
    369  path->getOutlineThickness());
    +
    370 
    +
    371  Gdiplus::FillMode fill_mode;
    +
    372  if (path->getFillRule() == "evenodd") {
    +
    373  fill_mode = Gdiplus::FillModeAlternate;
    +
    374  } else if (path->getFillRule() == "nonzero") {
    +
    375  fill_mode = Gdiplus::FillModeWinding;
    +
    376  }
    +
    377  Gdiplus::GraphicsPath gdi_path(fill_mode);
    +
    378 
    +
    379  const std::vector< PathPoint >& points = path->getPoints();
    +
    380  int n = points.size();
    +
    381  Vector2Df first_point{0, 0}, cur_point{0, 0};
    +
    382 
    +
    383  for (int i = 0; i < n; ++i) {
    +
    384  if (points[i].tc == 'm') {
    +
    385  first_point = points[i].point;
    +
    386  gdi_path.StartFigure();
    +
    387  cur_point = first_point;
    +
    388  } else if (points[i].tc == 'l' || points[i].tc == 'h' ||
    +
    389  points[i].tc == 'v') {
    +
    390  gdi_path.AddLine(cur_point.x, cur_point.y, points[i].point.x,
    +
    391  points[i].point.y);
    +
    392  cur_point = points[i].point;
    +
    393  } else if (points[i].tc == 'c') {
    +
    394  if (i + 2 < n) {
    +
    395  Vector2Df control_point1 = points[i].point;
    +
    396  Vector2Df control_point2 = points[i + 1].point;
    +
    397  Vector2Df control_point3 = points[i + 2].point;
    +
    398  gdi_path.AddBezier(cur_point.x, cur_point.y, control_point1.x,
    +
    399  control_point1.y, control_point2.x,
    +
    400  control_point2.y, control_point3.x,
    +
    401  control_point3.y);
    +
    402  i += 2;
    +
    403  cur_point = control_point3;
    +
    404  }
    +
    405  } else if (points[i].tc == 'z') {
    +
    406  gdi_path.CloseFigure();
    +
    407  cur_point = first_point;
    +
    408  } else if (points[i].tc == 's') {
    +
    409  if (i + 1 < n) {
    +
    410  Vector2Df auto_control_point;
    +
    411  if (i > 0 &&
    +
    412  (points[i - 1].tc == 'c' || points[i - 1].tc == 's')) {
    +
    413  auto_control_point.x =
    +
    414  cur_point.x * 2 - points[i - 2].point.x;
    +
    415  auto_control_point.y =
    +
    416  cur_point.y * 2 - points[i - 2].point.y;
    +
    417  } else {
    +
    418  auto_control_point = cur_point;
    +
    419  }
    +
    420  Vector2Df control_point2 = points[i].point;
    +
    421  Vector2Df control_point3 = points[i + 1].point;
    +
    422  gdi_path.AddBezier(cur_point.x, cur_point.y,
    +
    423  auto_control_point.x, auto_control_point.y,
    +
    424  control_point2.x, control_point2.y,
    +
    425  control_point3.x, control_point3.y);
    +
    426  i += 1;
    +
    427  cur_point = control_point3;
    +
    428  }
    +
    429  } else if (points[i].tc == 'q') {
    +
    430  if (i + 1 < n) {
    +
    431  Vector2Df control_point = points[i].point;
    +
    432  Vector2Df end_point = points[i + 1].point;
    +
    433 
    +
    434  Gdiplus::PointF q_points[3];
    +
    435  q_points[0] = Gdiplus::PointF{cur_point.x, cur_point.y};
    +
    436  q_points[1] = Gdiplus::PointF{control_point.x, control_point.y};
    +
    437  q_points[2] = Gdiplus::PointF{end_point.x, end_point.y};
    +
    438  gdi_path.AddCurve(q_points, 3);
    +
    439  cur_point = points[i + 1].point;
    +
    440  i += 1;
    +
    441  }
    +
    442  } else if (points[i].tc == 't') {
    +
    443  Vector2Df auto_control_point;
    +
    444  if (i > 0 && (points[i - 1].tc == 'q' || points[i - 1].tc == 't')) {
    +
    445  auto_control_point.x = cur_point.x * 2 - points[i - 2].point.x;
    +
    446  auto_control_point.y = cur_point.y * 2 - points[i - 2].point.y;
    +
    447  } else {
    +
    448  auto_control_point = cur_point;
    +
    449  }
    +
    450  Vector2Df end_point = points[i].point;
    +
    451  Gdiplus::PointF t_points[3];
    +
    452  t_points[0] = Gdiplus::PointF{cur_point.x, cur_point.y};
    +
    453  t_points[1] =
    +
    454  Gdiplus::PointF{auto_control_point.x, auto_control_point.y};
    +
    455  t_points[2] = Gdiplus::PointF{end_point.x, end_point.y};
    +
    456  gdi_path.AddCurve(t_points, 3);
    +
    457  cur_point = points[i].point;
    +
    458  } else if (points[i].tc == 'a') {
    +
    459  float rx = points[i].radius.x;
    +
    460  float ry = points[i].radius.y;
    +
    461  if (rx == 0 || ry == 0) {
    +
    462  gdi_path.AddLine(cur_point.x, cur_point.y, points[i].point.x,
    +
    463  points[i].point.y);
    +
    464  cur_point = points[i].point;
    +
    465  continue;
    +
    466  }
    +
    467  if (rx < 0) {
    +
    468  rx = std::fabs(rx);
    +
    469  }
    +
    470  if (ry < 0) {
    +
    471  ry = std::fabs(ry);
    +
    472  }
    +
    473 
    +
    474  float x_axis_rotation = points[i].x_axis_rotation;
    +
    475  bool large_arc_flag = points[i].large_arc_flag;
    +
    476  bool sweep_flag = points[i].sweep_flag;
    +
    477  Vector2Df end_point{points[i].point.x, points[i].point.y};
    +
    478 
    +
    479  float angle = x_axis_rotation * acos(-1) / 180.0;
    +
    480  float cosAngle = cos(angle);
    +
    481  float sinAngle = sin(angle);
    +
    482 
    +
    483  Vector2Df point1;
    +
    484  float X = (cur_point.x - end_point.x) / 2.0;
    +
    485  float Y = (cur_point.y - end_point.y) / 2.0;
    +
    486  point1.x = (cosAngle * cosAngle + sinAngle * sinAngle) * X;
    +
    487  point1.y = (cosAngle * cosAngle + sinAngle * sinAngle) * Y;
    +
    488 
    +
    489  float radii_check = (point1.x * point1.x) / (rx * rx) +
    +
    490  (point1.y * point1.y) / (ry * ry);
    +
    491  if (radii_check > 1.0) {
    +
    492  rx = std::sqrt(radii_check) * rx;
    +
    493  ry = std::sqrt(radii_check) * ry;
    +
    494  }
    +
    495 
    +
    496  float sign = (large_arc_flag == sweep_flag ? -1.0 : 1.0);
    +
    497  Vector2Df point2;
    +
    498  float numo = (rx * rx) * (ry * ry) -
    +
    499  (rx * rx) * (point1.y * point1.y) -
    +
    500  (ry * ry) * (point1.x * point1.x);
    +
    501  float deno = (rx * rx) * (point1.y * point1.y) +
    +
    502  (ry * ry) * (point1.x * point1.x);
    +
    503 
    +
    504  if (numo < 0) {
    +
    505  numo = std::fabs(numo);
    +
    506  }
    +
    507 
    +
    508  point2.x = sign * std::sqrt(numo / deno) * ((rx * point1.y) / ry);
    +
    509  point2.y = sign * std::sqrt(numo / deno) * ((-ry * point1.x) / rx);
    +
    510 
    +
    511  Vector2Df center;
    +
    512  X = (cur_point.x + end_point.x) / 2.0;
    +
    513  Y = (cur_point.y + end_point.y) / 2.0;
    +
    514  center.x =
    +
    515  (cosAngle * cosAngle + sinAngle * sinAngle) * point2.x + X;
    +
    516  center.y =
    +
    517  (cosAngle * cosAngle + sinAngle * sinAngle) * point2.y + Y;
    +
    518 
    +
    519  float start_angle =
    +
    520  atan2((point1.y - point2.y) / ry, (point1.x - point2.x) / rx);
    +
    521  float end_angle =
    +
    522  atan2((-point1.y - point2.y) / ry, (-point1.x - point2.x) / rx);
    +
    523 
    +
    524  float delta_angle = end_angle - start_angle;
    +
    525 
    +
    526  if (sweep_flag && delta_angle < 0) {
    +
    527  delta_angle += 2.0 * acos(-1);
    +
    528  } else if (!sweep_flag && delta_angle > 0) {
    +
    529  delta_angle -= 2.0 * acos(-1);
    +
    530  }
    +
    531 
    +
    532  float start_angle_degree =
    +
    533  std::fmod((start_angle * 180.0) / acos(-1), 360);
    +
    534  float delta_angle_degree =
    +
    535  std::fmod((delta_angle * 180.0) / acos(-1), 360);
    +
    536 
    +
    537  gdi_path.AddArc(center.x - rx, center.y - ry, 2.0 * rx, 2.0 * ry,
    +
    538  start_angle_degree, delta_angle_degree);
    +
    539 
    +
    540  cur_point = end_point;
    +
    541  }
    +
    542  }
    +
    543 
    +
    544  Gdiplus::RectF bound;
    +
    545  gdi_path.GetBounds(&bound);
    +
    546  Gdiplus::Brush* path_fill = getBrush(path, bound);
    +
    547  Gdiplus::Region region(&gdi_path);
    +
    548  if (Gdiplus::PathGradientBrush* brush =
    +
    549  dynamic_cast< Gdiplus::PathGradientBrush* >(path_fill)) {
    +
    550  mColor color = path->getGradient()->getStops().back().getColor();
    +
    551  Gdiplus::SolidBrush corner_fill(
    +
    552  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    553  if (path->getGradient()->getUnits() == "userSpaceOnUse") {
    +
    554  float cx = path->getGradient()->getPoints().first.x;
    +
    555  float cy = path->getGradient()->getPoints().first.y;
    +
    556  float r = dynamic_cast< RadialGradient* >(path->getGradient())
    +
    557  ->getRadius()
    +
    558  .x;
    +
    559  Gdiplus::GraphicsPath fill_path(fill_mode);
    +
    560  fill_path.AddEllipse(cx - r, cy - r, 2 * r, 2 * r);
    +
    561  for (auto type : path->getGradient()->getTransforms()) {
    +
    562  if (type.find("matrix") != std::string::npos) {
    +
    563  float a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
    +
    564  if (type.find(",") != std::string::npos) {
    +
    565  type.erase(std::remove(type.begin(), type.end(), ','),
    +
    566  type.end());
    +
    567  }
    +
    568  sscanf(type.c_str(), "matrix(%f %f %f %f %f %f)", &a, &b,
    +
    569  &c, &d, &e, &f);
    +
    570  Gdiplus::Matrix matrix(a, b, c, d, e, f);
    +
    571  fill_path.Transform(&matrix);
    +
    572  }
    +
    573  }
    +
    574  region.Exclude(&fill_path);
    +
    575  }
    +
    576  graphics.FillRegion(&corner_fill, &region);
    +
    577  }
    +
    578  graphics.FillPath(path_fill, &gdi_path);
    +
    579  graphics.DrawPath(&path_outline, &gdi_path);
    +
    580  delete path_fill;
    +
    581 }
    +
    582 
    +
    583 Gdiplus::Brush* Renderer::getBrush(SVGElement* shape,
    +
    584  Gdiplus::RectF bound) const {
    +
    585  Gradient* gradient = shape->getGradient();
    +
    586  if (gradient != NULL) {
    +
    587  std::pair< Vector2Df, Vector2Df > points = gradient->getPoints();
    +
    588  std::vector< Stop > stops = gradient->getStops();
    +
    589  int stop_size = stops.size() + 2;
    +
    590  Gdiplus::Color* colors = new Gdiplus::Color[stop_size];
    +
    591  float* offsets = new float[stop_size];
    +
    592  if (gradient->getClass() == "LinearGradient") {
    +
    593  if (gradient->getUnits() == "objectBoundingBox") {
    +
    594  points.first.x = bound.X;
    +
    595  points.first.y = bound.Y;
    +
    596  points.second.x = bound.X + bound.Width;
    +
    597  points.second.y = bound.Y + bound.Height;
    +
    598  }
    +
    599  offsets[0] = 0;
    +
    600  offsets[stop_size - 1] = 1;
    +
    601  colors[0] =
    +
    602  Gdiplus::Color(stops[0].getColor().a, stops[0].getColor().r,
    +
    603  stops[0].getColor().g, stops[0].getColor().b);
    +
    604  colors[stop_size - 1] =
    +
    605  Gdiplus::Color(stops[stop_size - 3].getColor().a,
    +
    606  stops[stop_size - 3].getColor().r,
    +
    607  stops[stop_size - 3].getColor().g,
    +
    608  stops[stop_size - 3].getColor().b);
    +
    609  for (size_t i = 1; i < stop_size - 1; ++i) {
    +
    610  colors[i] = Gdiplus::Color(
    +
    611  stops[i - 1].getColor().a, stops[i - 1].getColor().r,
    +
    612  stops[i - 1].getColor().g, stops[i - 1].getColor().b);
    +
    613  offsets[i] = stops[i - 1].getOffset();
    +
    614  }
    +
    615  Gdiplus::LinearGradientBrush* fill =
    +
    616  new Gdiplus::LinearGradientBrush(
    +
    617  Gdiplus::PointF(points.first.x, points.first.y),
    +
    618  Gdiplus::PointF(points.second.x, points.second.y),
    +
    619  colors[0], colors[stop_size - 1]);
    +
    620  fill->SetWrapMode(Gdiplus::WrapModeTileFlipX);
    +
    621  fill->SetInterpolationColors(colors, offsets, stop_size);
    +
    622  applyTransformsOnBrush(gradient->getTransforms(), fill);
    +
    623  delete[] colors;
    +
    624  delete[] offsets;
    +
    625  return fill;
    +
    626  } else if (gradient->getClass() == "RadialGradient") {
    +
    627  RadialGradient* radial_gradient =
    +
    628  dynamic_cast< RadialGradient* >(gradient);
    +
    629  Vector2Df radius = radial_gradient->getRadius();
    +
    630  if (gradient->getUnits() == "userSpaceOnUse") {
    +
    631  bound.X = points.first.x - radius.x;
    +
    632  bound.Y = points.first.y - radius.x;
    +
    633  bound.Width = radius.x * 2;
    +
    634  bound.Height = radius.x * 2;
    +
    635  }
    +
    636  Gdiplus::GraphicsPath path;
    +
    637  path.AddEllipse(bound);
    +
    638  Gdiplus::PathGradientBrush* fill =
    +
    639  new Gdiplus::PathGradientBrush(&path);
    +
    640  offsets[0] = 0;
    +
    641  offsets[stop_size - 1] = 1;
    +
    642  colors[0] = Gdiplus::Color(stops[stop_size - 3].getColor().a,
    +
    643  stops[stop_size - 3].getColor().r,
    +
    644  stops[stop_size - 3].getColor().g,
    +
    645  stops[stop_size - 3].getColor().b);
    +
    646  colors[stop_size - 1] =
    +
    647  Gdiplus::Color(stops[0].getColor().a, stops[0].getColor().r,
    +
    648  stops[0].getColor().g, stops[0].getColor().b);
    +
    649 
    +
    650  for (size_t i = 1; i < stop_size - 1; ++i) {
    +
    651  colors[i] =
    +
    652  Gdiplus::Color(stops[stop_size - 2 - i].getColor().a,
    +
    653  stops[stop_size - 2 - i].getColor().r,
    +
    654  stops[stop_size - 2 - i].getColor().g,
    +
    655  stops[stop_size - 2 - i].getColor().b);
    +
    656  offsets[i] = 1 - stops[stop_size - 2 - i].getOffset();
    +
    657  }
    +
    658  fill->SetInterpolationColors(colors, offsets, stop_size);
    +
    659  applyTransformsOnBrush(gradient->getTransforms(), fill);
    +
    660  delete[] colors;
    +
    661  delete[] offsets;
    +
    662  return fill;
    +
    663  }
    +
    664  } else {
    +
    665  mColor color = shape->getFillColor();
    +
    666  Gdiplus::SolidBrush* fill = new Gdiplus::SolidBrush(
    +
    667  Gdiplus::Color(color.a, color.r, color.g, color.b));
    +
    668  return fill;
    +
    669  }
    +
    670  return nullptr;
    +
    671 }
    +
    672 
    + +
    674  std::vector< std::string > transform_order,
    +
    675  Gdiplus::LinearGradientBrush*& brush) const {
    +
    676  for (auto type : transform_order) {
    +
    677  if (type.find("translate") != std::string::npos) {
    +
    678  float trans_x = getTranslate(type).first,
    +
    679  trans_y = getTranslate(type).second;
    +
    680  brush->TranslateTransform(trans_x, trans_y);
    +
    681  } else if (type.find("rotate") != std::string::npos) {
    +
    682  float degree = getRotate(type);
    +
    683  brush->RotateTranform(degree);
    +
    684  } else if (type.find("scale") != std::string::npos) {
    +
    685  if (type.find(",") != std::string::npos) {
    +
    686  float scale_x = getScaleXY(type).first,
    +
    687  scale_y = getScaleXY(type).second;
    +
    688  brush->ScaleTransform(scale_x, scale_y);
    +
    689  } else {
    +
    690  float scale = getScale(type);
    +
    691  brush->ScaleTransform(scale, scale);
    +
    692  }
    +
    693  } else if (type.find("matrix") != std::string::npos) {
    +
    694  float a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
    +
    695  if (type.find(",") != std::string::npos) {
    +
    696  type.erase(std::remove(type.begin(), type.end(), ','),
    +
    697  type.end());
    +
    698  }
    +
    699  sscanf(type.c_str(), "matrix(%f %f %f %f %f %f)", &a, &b, &c, &d,
    +
    700  &e, &f);
    +
    701  Gdiplus::Matrix matrix(a, b, c, d, e, f);
    +
    702  brush->SetTransform(&matrix);
    +
    703  }
    +
    704  }
    +
    705 }
    +
    706 
    + +
    708  std::vector< std::string > transform_order,
    +
    709  Gdiplus::PathGradientBrush*& brush) const {
    +
    710  for (auto type : transform_order) {
    +
    711  if (type.find("translate") != std::string::npos) {
    +
    712  float trans_x = getTranslate(type).first,
    +
    713  trans_y = getTranslate(type).second;
    +
    714  brush->TranslateTransform(trans_x, trans_y);
    +
    715  } else if (type.find("rotate") != std::string::npos) {
    +
    716  float degree = getRotate(type);
    +
    717  brush->RotateTransform(degree);
    +
    718  } else if (type.find("scale") != std::string::npos) {
    +
    719  if (type.find(",") != std::string::npos) {
    +
    720  float scale_x = getScaleXY(type).first,
    +
    721  scale_y = getScaleXY(type).second;
    +
    722  brush->ScaleTransform(scale_x, scale_y);
    +
    723  } else {
    +
    724  float scale = getScale(type);
    +
    725  brush->ScaleTransform(scale, scale);
    +
    726  }
    +
    727  } else if (type.find("matrix") != std::string::npos) {
    +
    728  float a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
    +
    729  if (type.find(",") != std::string::npos) {
    +
    730  type.erase(std::remove(type.begin(), type.end(), ','),
    +
    731  type.end());
    +
    732  }
    +
    733  sscanf(type.c_str(), "matrix(%f %f %f %f %f %f)", &a, &b, &c, &d,
    +
    734  &e, &f);
    +
    735  Gdiplus::Matrix matrix(a, b, c, d, e, f);
    +
    736  brush->SetTransform(&matrix);
    +
    737  }
    +
    738  }
    +
    739 }
    +
    Represents a circle in 2D space.
    Definition: Circle.hpp:13
    +
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    +
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:13
    +
    Vector2Df getMaxBound() const override
    Gets the maximum bounding box of the shape.
    Definition: Ellipse.cpp:20
    +
    Vector2Df getMinBound() const override
    Gets the minimum bounding box of the shape.
    Definition: Ellipse.cpp:15
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::vector< Stop > getStops() const
    Gets the stops of the gradient.
    Definition: Gradient.cpp:7
    +
    std::string getUnits() const
    Gets the units of the gradient.
    Definition: Gradient.cpp:13
    +
    std::pair< Vector2Df, Vector2Df > getPoints() const
    Gets the start and end points of the gradient.
    Definition: Gradient.cpp:9
    +
    virtual std::string getClass() const =0
    Gets the type of the gradient.
    +
    std::vector< std::string > getTransforms() const
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:19
    +
    A composite class that contains a vector of shape pointers (polymorphic).
    Definition: Group.hpp:19
    +
    std::vector< SVGElement * > getElements() const
    Gets the vector of shapes in the composite group.
    Definition: Group.cpp:22
    +
    Represents a line in 2D space.
    Definition: Line.hpp:12
    +
    Vector2Df getDirection() const
    Gets the direction of the line.
    Definition: Line.cpp:16
    +
    Represents a path element in 2D space.
    Definition: Path.hpp:28
    +
    std::string getFillRule() const
    Gets the current fill rule of the path.
    Definition: Path.cpp:14
    +
    std::vector< PathPoint > getPoints() const
    Gets the vector of points in the path.
    Definition: Path.cpp:10
    +
    Represents a polygon in 2D space.
    Definition: Polygon.hpp:12
    +
    Represents a polyline in 2D space.
    Definition: Polyline.hpp:12
    +
    Vector2Df getMinBound() const override
    Gets the minimum bounding box of the shape.
    Definition: PolyShape.cpp:17
    +
    const std::vector< Vector2Df > & getPoints() const
    Gets the total number of vertices representing the shape.
    Definition: PolyShape.cpp:9
    +
    Vector2Df getMaxBound() const override
    Gets the maximum bounding box of the shape.
    Definition: PolyShape.cpp:27
    +
    std::string getFillRule() const
    Gets the fill rule of the polyshape.
    Definition: PolyShape.cpp:15
    +
    A class that represents a radial gradient.
    +
    Vector2Df getRadius() const
    Gets the radius of the gradient.
    +
    Represents a rectangle in 2D space.
    Definition: Rect.hpp:13
    +
    Vector2Df getRadius() const
    Gets the radii of the rectangle.
    Definition: Rect.cpp:20
    +
    float getHeight() const
    Gets the height of the rectangle.
    Definition: Rect.cpp:16
    +
    float getWidth() const
    Gets the width of the rectangle.
    Definition: Rect.cpp:12
    +
    Singleton class responsible for rendering shapes using GDI+.
    Definition: Renderer.hpp:24
    +
    void draw(Gdiplus::Graphics &graphics, Group *group) const
    Draws a shape using Gdiplus::Graphics based on its type.
    Definition: Renderer.cpp:73
    +
    void drawPolygon(Gdiplus::Graphics &graphics, Plygon *polygon) const
    Draws a polygon shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:229
    +
    void applyTransformsOnBrush(std::vector< std::string > transform_order, Gdiplus::LinearGradientBrush *&brush) const
    Utility function to apply a series of transformations to the brush object.
    Definition: Renderer.cpp:673
    +
    void drawPolyline(Gdiplus::Graphics &graphics, Plyline *polyline) const
    Draws a polyline shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:322
    +
    void drawPath(Gdiplus::Graphics &graphics, Path *path) const
    Draws a path shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:365
    +
    static Renderer * instance
    Singleton instance of the Renderer class.
    Definition: Renderer.hpp:165
    +
    Gdiplus::Brush * getBrush(SVGElement *shape, Gdiplus::RectF bound) const
    Gets the Gdiplus::brush object for the shape fill.
    Definition: Renderer.cpp:583
    +
    Renderer()
    Private constructor for the Renderer class.
    Definition: Renderer.cpp:9
    +
    void drawText(Gdiplus::Graphics &graphics, Text *text) const
    Draws text using Gdiplus::Graphics.
    Definition: Renderer.cpp:267
    +
    void applyTransform(std::vector< std::string > transform_order, Gdiplus::Graphics &graphics) const
    Utility function to apply a series of transformations to the graphics context.
    Definition: Renderer.cpp:50
    +
    void drawCircle(Gdiplus::Graphics &graphics, Circle *circle) const
    Draws a circle shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:165
    +
    void drawLine(Gdiplus::Graphics &graphics, Line *line) const
    Draws a line shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:110
    +
    void drawRectangle(Gdiplus::Graphics &graphics, Rect *rectangle) const
    Draws a rectangle shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:119
    +
    static Renderer * getInstance()
    Gets the singleton instance of the Renderer class.
    Definition: Renderer.cpp:11
    +
    void drawEllipse(Gdiplus::Graphics &graphics, Ell *ellipse) const
    Draws an ellipse shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:197
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    float getOutlineThickness() const
    Gets the outline thickness of the shape.
    Definition: SVGElement.cpp:30
    +
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:41
    +
    const mColor & getOutlineColor() const
    Gets the outline color of the shape.
    Definition: SVGElement.cpp:24
    +
    Gradient * getGradient() const
    Gets the gradient of the shape.
    Definition: SVGElement.cpp:81
    +
    const mColor & getFillColor() const
    Gets the fill color of the shape.
    Definition: SVGElement.cpp:20
    +
    Represents text in 2D space.
    Definition: Text.hpp:12
    +
    std::string getAnchor() const
    Gets the anchor of the text.
    Definition: Text.cpp:20
    +
    float getFontSize() const
    Gets the font size of the text.
    Definition: Text.cpp:12
    +
    std::string getFontStyle() const
    Gets the style of the text.
    Definition: Text.cpp:24
    +
    std::string getContent() const
    Gets the string of the text.
    Definition: Text.cpp:16
    + +
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    +
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    +
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    +
    int g
    Green component.
    Definition: Color.hpp:61
    +
    int r
    Red component.
    Definition: Color.hpp:60
    +
    int a
    Alpha (opacity) component.
    Definition: Color.hpp:63
    +
    int b
    Blue component.
    Definition: Color.hpp:62
    +
    +
    + + + \ No newline at end of file diff --git a/docs/html/Renderer_8hpp_source.html b/html/Renderer_8hpp_source.html similarity index 84% rename from docs/html/Renderer_8hpp_source.html rename to html/Renderer_8hpp_source.html index 1cde977e..844b3601 100644 --- a/docs/html/Renderer_8hpp_source.html +++ b/html/Renderer_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -161,36 +161,47 @@
    119 
    126  void drawPath(Gdiplus::Graphics& graphics, Path* path) const;
    127 
    -
    131  Renderer();
    -
    132 
    -
    133  static Renderer* instance;
    -
    134 };
    -
    135 
    -
    136 #endif
    +
    135  Gdiplus::Brush* getBrush(SVGElement* shape, Gdiplus::RectF bound) const;
    +
    136 
    +
    145  void applyTransformsOnBrush(std::vector< std::string > transform_order,
    +
    146  Gdiplus::LinearGradientBrush*& brush) const;
    +
    147 
    +
    157  void applyTransformsOnBrush(std::vector< std::string > transform_order,
    +
    158  Gdiplus::PathGradientBrush*& brush) const;
    +
    159 
    +
    163  Renderer();
    +
    164 
    +
    165  static Renderer* instance;
    +
    166 };
    +
    167 
    +
    168 #endif
    Represents a circle in 2D space.
    Definition: Circle.hpp:13
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    A composite class that contains a vector of shape pointers (polymorphic).
    Definition: Group.hpp:19
    Represents a line in 2D space.
    Definition: Line.hpp:12
    -
    Represents a path element in 2D space.
    Definition: Path.hpp:24
    +
    Represents a path element in 2D space.
    Definition: Path.hpp:28
    Represents a polygon in 2D space.
    Definition: Polygon.hpp:12
    Represents a polyline in 2D space.
    Definition: Polyline.hpp:12
    Represents a rectangle in 2D space.
    Definition: Rect.hpp:13
    Singleton class responsible for rendering shapes using GDI+.
    Definition: Renderer.hpp:24
    -
    void draw(Gdiplus::Graphics &graphics, Group *group) const
    Draws a shape using Gdiplus::Graphics based on its type.
    Definition: Renderer.cpp:69
    -
    void drawPolygon(Gdiplus::Graphics &graphics, Plygon *polygon) const
    Draws a polygon shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:182
    -
    void drawPolyline(Gdiplus::Graphics &graphics, Plyline *polyline) const
    Draws a polyline shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:254
    -
    void drawPath(Gdiplus::Graphics &graphics, Path *path) const
    Draws a path shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:286
    -
    static Renderer * instance
    Singleton instance of the Renderer class.
    Definition: Renderer.hpp:133
    -
    Renderer()
    Private constructor for the Renderer class.
    Definition: Renderer.cpp:5
    -
    void drawText(Gdiplus::Graphics &graphics, Text *text) const
    Draws text using Gdiplus::Graphics.
    Definition: Renderer.cpp:212
    +
    void draw(Gdiplus::Graphics &graphics, Group *group) const
    Draws a shape using Gdiplus::Graphics based on its type.
    Definition: Renderer.cpp:73
    +
    void drawPolygon(Gdiplus::Graphics &graphics, Plygon *polygon) const
    Draws a polygon shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:229
    +
    void applyTransformsOnBrush(std::vector< std::string > transform_order, Gdiplus::LinearGradientBrush *&brush) const
    Utility function to apply a series of transformations to the brush object.
    Definition: Renderer.cpp:673
    +
    void drawPolyline(Gdiplus::Graphics &graphics, Plyline *polyline) const
    Draws a polyline shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:322
    +
    void drawPath(Gdiplus::Graphics &graphics, Path *path) const
    Draws a path shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:365
    +
    static Renderer * instance
    Singleton instance of the Renderer class.
    Definition: Renderer.hpp:165
    +
    Gdiplus::Brush * getBrush(SVGElement *shape, Gdiplus::RectF bound) const
    Gets the Gdiplus::brush object for the shape fill.
    Definition: Renderer.cpp:583
    +
    Renderer()
    Private constructor for the Renderer class.
    Definition: Renderer.cpp:9
    +
    void drawText(Gdiplus::Graphics &graphics, Text *text) const
    Draws text using Gdiplus::Graphics.
    Definition: Renderer.cpp:267
    Renderer(const Renderer &)=delete
    Deleted copy constructor to enforce the singleton pattern.
    -
    void applyTransform(std::vector< std::string > transform_order, Gdiplus::Graphics &graphics) const
    Utility function to apply a series of transformations to the graphics context.
    Definition: Renderer.cpp:46
    -
    void drawCircle(Gdiplus::Graphics &graphics, Circle *circle) const
    Draws a circle shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:145
    +
    void applyTransform(std::vector< std::string > transform_order, Gdiplus::Graphics &graphics) const
    Utility function to apply a series of transformations to the graphics context.
    Definition: Renderer.cpp:50
    +
    void drawCircle(Gdiplus::Graphics &graphics, Circle *circle) const
    Draws a circle shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:165
    void operator=(const Renderer &)=delete
    Deleted copy assignment operator to enforce the singleton pattern.
    -
    void drawLine(Gdiplus::Graphics &graphics, Line *line) const
    Draws a line shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:106
    -
    void drawRectangle(Gdiplus::Graphics &graphics, Rect *rectangle) const
    Draws a rectangle shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:115
    -
    static Renderer * getInstance()
    Gets the singleton instance of the Renderer class.
    Definition: Renderer.cpp:7
    -
    void drawEllipse(Gdiplus::Graphics &graphics, Ell *ellipse) const
    Draws an ellipse shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:163
    +
    void drawLine(Gdiplus::Graphics &graphics, Line *line) const
    Draws a line shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:110
    +
    void drawRectangle(Gdiplus::Graphics &graphics, Rect *rectangle) const
    Draws a rectangle shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:119
    +
    static Renderer * getInstance()
    Gets the singleton instance of the Renderer class.
    Definition: Renderer.cpp:11
    +
    void drawEllipse(Gdiplus::Graphics &graphics, Ell *ellipse) const
    Draws an ellipse shape using Gdiplus::Graphics.
    Definition: Renderer.cpp:197
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    Represents text in 2D space.
    Definition: Text.hpp:12
    diff --git a/docs/html/SVGElement_8cpp_source.html b/html/SVGElement_8cpp_source.html similarity index 66% rename from docs/html/SVGElement_8cpp_source.html rename to html/SVGElement_8cpp_source.html index ecd965b4..9b5ff220 100644 --- a/docs/html/SVGElement_8cpp_source.html +++ b/html/SVGElement_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -126,83 +126,115 @@
    3 #include <iostream>
    4 
    -
    6  : fill(mColor::Black), stroke(mColor::Transparent), stroke_width(1) {}
    -
    7 
    -
    8 void SVGElement::setFillColor(const mColor& color) { fill = color; }
    -
    9 
    -
    10 const mColor& SVGElement::getFillColor() const { return fill; }
    -
    11 
    -
    12 void SVGElement::setOutlineColor(const mColor& color) { stroke = color; }
    -
    13 
    -
    14 const mColor& SVGElement::getOutlineColor() const { return stroke; }
    -
    15 
    -
    16 void SVGElement::setOutlineThickness(float thickness) {
    -
    17  stroke_width = thickness;
    -
    18 }
    +
    6  : fill(mColor::Black), stroke(mColor::Transparent), stroke_width(1),
    +
    7  gradient(NULL) {}
    +
    8 
    +
    9 SVGElement::SVGElement(const mColor& fill, const mColor& stroke,
    +
    10  float stroke_width)
    +
    11  : fill(fill), stroke(stroke), stroke_width(stroke_width), gradient(NULL) {}
    +
    12 
    +
    13 SVGElement::SVGElement(const mColor& fill, const mColor& stroke,
    +
    14  float stroke_width, const Vector2Df& position)
    +
    15  : fill(fill), stroke(stroke), stroke_width(stroke_width),
    +
    16  position(position), gradient(NULL) {}
    +
    17 
    +
    18 void SVGElement::setFillColor(const mColor& color) { fill = color; }
    19 
    - +
    20 const mColor& SVGElement::getFillColor() const { return fill; }
    21 
    -
    22 void SVGElement::setPosition(float x, float y) {
    -
    23  position.x = x;
    -
    24  position.y = y;
    -
    25 }
    -
    26 
    -
    27 void SVGElement::setPosition(const Vector2Df& position) {
    - -
    29 }
    -
    30 
    - -
    32 
    -
    33 void SVGElement::printData() const {
    -
    34  std::cout << "Shape: " << getClass() << std::endl;
    -
    35  std::cout << "Fill: " << getFillColor() << std::endl;
    -
    36  std::cout << "Stroke: " << getOutlineColor() << std::endl;
    -
    37  std::cout << "Stroke width: " << getOutlineThickness() << std::endl;
    -
    38  std::cout << "Position: " << getPosition().x << " " << getPosition().y
    -
    39  << std::endl;
    -
    40  std::cout << "Transforms: ";
    -
    41  for (auto transform : transforms) {
    -
    42  std::cout << transform << " ";
    -
    43  }
    -
    44  std::cout << std::endl;
    -
    45 }
    +
    22 void SVGElement::setOutlineColor(const mColor& color) { stroke = color; }
    +
    23 
    +
    24 const mColor& SVGElement::getOutlineColor() const { return stroke; }
    +
    25 
    +
    26 void SVGElement::setOutlineThickness(float thickness) {
    +
    27  stroke_width = thickness;
    +
    28 }
    +
    29 
    + +
    31 
    +
    32 void SVGElement::setPosition(float x, float y) {
    +
    33  position.x = x;
    +
    34  position.y = y;
    +
    35 }
    +
    36 
    +
    37 void SVGElement::setPosition(const Vector2Df& position) {
    + +
    39 }
    +
    40 
    + +
    42 
    + +
    44 
    +
    46 
    -
    47 void SVGElement::setTransforms(const std::vector< std::string >& transforms) {
    -
    48  this->transforms = transforms;
    -
    49 }
    -
    50 
    -
    51 std::vector< std::string > SVGElement::getTransforms() const {
    -
    52  return transforms;
    -
    53 }
    -
    54 
    -
    55 void SVGElement::setParent(SVGElement* parent) { this->parent = parent; }
    -
    56 
    - -
    58 
    - -
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:17
    -
    void setTransforms(const std::vector< std::string > &transforms)
    Sets the transformations of the shape.
    Definition: SVGElement.cpp:47
    -
    SVGElement * getParent() const
    Parent pointer getter.
    Definition: SVGElement.cpp:57
    -
    float getOutlineThickness() const
    Gets the outline thickness of the shape.
    Definition: SVGElement.cpp:20
    -
    void setParent(SVGElement *parent)
    Parent pointer setter to make the composite design pattern.
    Definition: SVGElement.cpp:55
    -
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:31
    -
    std::vector< std::string > getTransforms() const
    Gets the transformations of the shape.
    Definition: SVGElement.cpp:51
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    const mColor & getOutlineColor() const
    Gets the outline color of the shape.
    Definition: SVGElement.cpp:14
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    const mColor & getFillColor() const
    Gets the fill color of the shape.
    Definition: SVGElement.cpp:10
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    -
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:172
    +
    47 void SVGElement::printData() const {
    +
    48  std::cout << "Shape: " << getClass() << std::endl;
    +
    49  std::cout << "Fill: " << getFillColor() << std::endl;
    +
    50  std::cout << "Stroke: " << getOutlineColor() << std::endl;
    +
    51  std::cout << "Stroke width: " << getOutlineThickness() << std::endl;
    +
    52  std::cout << "Position: " << getPosition().x << " " << getPosition().y
    +
    53  << std::endl;
    +
    54  std::cout << "Transforms: ";
    +
    55  for (auto transform : transforms) {
    +
    56  std::cout << transform << " ";
    +
    57  }
    +
    58  std::cout << std::endl;
    +
    59  if (gradient != NULL)
    +
    60  std::cout << "Gradient: " << gradient->getClass() << " "
    +
    61  << gradient->getPoints().first.x << " "
    +
    62  << gradient->getPoints().first.y << " "
    +
    63  << gradient->getPoints().second.x << " "
    +
    64  << gradient->getPoints().second.y << std::endl;
    +
    65 }
    +
    66 
    +
    67 void SVGElement::setTransforms(const std::vector< std::string >& transforms) {
    +
    68  this->transforms = transforms;
    +
    69 }
    +
    70 
    +
    71 std::vector< std::string > SVGElement::getTransforms() const {
    +
    72  return transforms;
    +
    73 }
    +
    74 
    +
    75 void SVGElement::setParent(SVGElement* parent) { this->parent = parent; }
    +
    76 
    + +
    78 
    +
    79 void SVGElement::setGradient(Gradient* gradient) { this->gradient = gradient; }
    +
    80 
    + +
    82 
    + +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    std::pair< Vector2Df, Vector2Df > getPoints() const
    Gets the start and end points of the gradient.
    Definition: Gradient.cpp:9
    +
    virtual std::string getClass() const =0
    Gets the type of the gradient.
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    void setTransforms(const std::vector< std::string > &transforms)
    Sets the transformations of the shape.
    Definition: SVGElement.cpp:67
    +
    virtual Vector2Df getMaxBound() const
    Gets the maximum bound of the shape.
    Definition: SVGElement.cpp:45
    +
    virtual Vector2Df getMinBound() const
    Gets the minimum bound of the shape.
    Definition: SVGElement.cpp:43
    +
    SVGElement * getParent() const
    Parent pointer getter.
    Definition: SVGElement.cpp:77
    +
    float getOutlineThickness() const
    Gets the outline thickness of the shape.
    Definition: SVGElement.cpp:30
    +
    void setGradient(Gradient *gradient)
    Sets the gradient of the shape.
    Definition: SVGElement.cpp:79
    +
    void setParent(SVGElement *parent)
    Parent pointer setter to make the composite design pattern.
    Definition: SVGElement.cpp:75
    +
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:41
    +
    std::vector< std::string > getTransforms() const
    Gets the transformations of the shape.
    Definition: SVGElement.cpp:71
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:32
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:26
    +
    const mColor & getOutlineColor() const
    Gets the outline color of the shape.
    Definition: SVGElement.cpp:24
    +
    Gradient * getGradient() const
    Gets the gradient of the shape.
    Definition: SVGElement.cpp:81
    +
    Gradient * gradient
    Pointer to the gradient that contains the shape.
    Definition: SVGElement.hpp:227
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    +
    const mColor & getFillColor() const
    Gets the fill color of the shape.
    Definition: SVGElement.cpp:20
    +
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:18
    +
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:22
    +
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:225
    SVGElement()
    Constructs a Shape object.
    Definition: SVGElement.cpp:5
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    virtual std::string getClass() const =0
    Gets the type of the shape.
    -
    SVGElement * parent
    Pointer to the group that contains the shape.
    Definition: SVGElement.hpp:166
    -
    std::vector< std::string > transforms
    List of transformations.
    Definition: SVGElement.hpp:173
    -
    virtual void addElement(SVGElement *element)
    Adds a shape to the composite group.
    Definition: SVGElement.cpp:59
    +
    SVGElement * parent
    Pointer to the group that contains the shape.
    Definition: SVGElement.hpp:219
    +
    std::vector< std::string > transforms
    List of transformations.
    Definition: SVGElement.hpp:226
    +
    virtual void addElement(SVGElement *element)
    Adds a shape to the composite group.
    Definition: SVGElement.cpp:83
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    diff --git a/docs/html/SVGElement_8hpp_source.html b/html/SVGElement_8hpp_source.html similarity index 66% rename from docs/html/SVGElement_8hpp_source.html rename to html/SVGElement_8hpp_source.html index fda9973f..b3ad07d7 100644 --- a/docs/html/SVGElement_8hpp_source.html +++ b/html/SVGElement_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -127,82 +127,103 @@
    4 #include <vector>
    5 
    6 #include "Color.hpp"
    -
    7 #include "Vector2D.hpp"
    -
    8 
    -
    17 class SVGElement {
    -
    18 public:
    -
    22  virtual ~SVGElement() = default;
    -
    23 
    -
    33  virtual std::string getClass() const = 0;
    -
    34 
    -
    40  void setFillColor(const mColor& color);
    -
    41 
    -
    47  void setOutlineColor(const mColor& color);
    -
    48 
    -
    59  void setOutlineThickness(float thickness);
    -
    60 
    -
    68  void setPosition(float x, float y);
    -
    69 
    -
    77  void setPosition(const Vector2Df& position);
    -
    78 
    -
    84  const mColor& getFillColor() const;
    -
    85 
    -
    91  const mColor& getOutlineColor() const;
    -
    92 
    -
    98  float getOutlineThickness() const;
    -
    99 
    -
    106  Vector2Df getPosition() const;
    -
    107 
    -
    114  virtual void printData() const;
    +
    7 #include "Gradient.hpp"
    +
    8 #include "Vector2D.hpp"
    +
    9 
    +
    18 class SVGElement {
    +
    19 public:
    +
    23  virtual ~SVGElement() = default;
    +
    24 
    +
    34  virtual std::string getClass() const = 0;
    +
    35 
    +
    41  void setFillColor(const mColor& color);
    +
    42 
    +
    48  void setOutlineColor(const mColor& color);
    +
    49 
    +
    60  void setOutlineThickness(float thickness);
    +
    61 
    +
    69  void setPosition(float x, float y);
    +
    70 
    +
    78  void setPosition(const Vector2Df& position);
    +
    79 
    +
    85  const mColor& getFillColor() const;
    +
    86 
    +
    92  const mColor& getOutlineColor() const;
    +
    93 
    +
    99  float getOutlineThickness() const;
    +
    100 
    +
    107  Vector2Df getPosition() const;
    +
    108 
    +
    114  virtual Vector2Df getMinBound() const;
    115 
    -
    123  void setTransforms(const std::vector< std::string >& transforms);
    -
    124 
    -
    132  std::vector< std::string > getTransforms() const;
    -
    133 
    -
    140  void setParent(SVGElement* parent);
    -
    141 
    -
    148  SVGElement* getParent() const;
    -
    149 
    -
    156  virtual void addElement(SVGElement* element);
    -
    157 
    -
    158 protected:
    -
    164  SVGElement();
    -
    165 
    - -
    167 
    -
    168 private:
    - - -
    171  float stroke_width;
    - -
    173  std::vector< std::string > transforms;
    -
    174 };
    -
    175 
    -
    176 #endif // SVG_ELEMENT_HPP_
    -
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:17
    -
    void setTransforms(const std::vector< std::string > &transforms)
    Sets the transformations of the shape.
    Definition: SVGElement.cpp:47
    -
    SVGElement * getParent() const
    Parent pointer getter.
    Definition: SVGElement.cpp:57
    -
    float getOutlineThickness() const
    Gets the outline thickness of the shape.
    Definition: SVGElement.cpp:20
    -
    void setParent(SVGElement *parent)
    Parent pointer setter to make the composite design pattern.
    Definition: SVGElement.cpp:55
    -
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:31
    +
    121  virtual Vector2Df getMaxBound() const;
    +
    122 
    +
    129  virtual void printData() const;
    +
    130 
    +
    138  void setTransforms(const std::vector< std::string >& transforms);
    +
    139 
    +
    147  std::vector< std::string > getTransforms() const;
    +
    148 
    +
    155  void setParent(SVGElement* parent);
    +
    156 
    +
    163  SVGElement* getParent() const;
    +
    164 
    + +
    172 
    +
    179  Gradient* getGradient() const;
    +
    180 
    +
    187  virtual void addElement(SVGElement* element);
    +
    188 
    +
    189 protected:
    +
    195  SVGElement();
    +
    196 
    +
    205  SVGElement(const mColor& fill, const mColor& stroke, float stroke_width);
    +
    206 
    +
    216  SVGElement(const mColor& fill, const mColor& stroke, float stroke_width,
    +
    217  const Vector2Df& position);
    +
    218 
    + +
    220 
    +
    221 private:
    + + +
    224  float stroke_width;
    + +
    226  std::vector< std::string > transforms;
    + +
    228 };
    +
    229 
    +
    230 #endif // SVG_ELEMENT_HPP_
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    void setTransforms(const std::vector< std::string > &transforms)
    Sets the transformations of the shape.
    Definition: SVGElement.cpp:67
    +
    virtual Vector2Df getMaxBound() const
    Gets the maximum bound of the shape.
    Definition: SVGElement.cpp:45
    +
    virtual Vector2Df getMinBound() const
    Gets the minimum bound of the shape.
    Definition: SVGElement.cpp:43
    +
    SVGElement * getParent() const
    Parent pointer getter.
    Definition: SVGElement.cpp:77
    +
    float getOutlineThickness() const
    Gets the outline thickness of the shape.
    Definition: SVGElement.cpp:30
    +
    void setGradient(Gradient *gradient)
    Sets the gradient of the shape.
    Definition: SVGElement.cpp:79
    +
    void setParent(SVGElement *parent)
    Parent pointer setter to make the composite design pattern.
    Definition: SVGElement.cpp:75
    +
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:41
    virtual ~SVGElement()=default
    Virtual constructor.
    -
    std::vector< std::string > getTransforms() const
    Gets the transformations of the shape.
    Definition: SVGElement.cpp:51
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    const mColor & getOutlineColor() const
    Gets the outline color of the shape.
    Definition: SVGElement.cpp:14
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    const mColor & getFillColor() const
    Gets the fill color of the shape.
    Definition: SVGElement.cpp:10
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    -
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:172
    +
    std::vector< std::string > getTransforms() const
    Gets the transformations of the shape.
    Definition: SVGElement.cpp:71
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:32
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:26
    +
    const mColor & getOutlineColor() const
    Gets the outline color of the shape.
    Definition: SVGElement.cpp:24
    +
    Gradient * getGradient() const
    Gets the gradient of the shape.
    Definition: SVGElement.cpp:81
    +
    Gradient * gradient
    Pointer to the gradient that contains the shape.
    Definition: SVGElement.hpp:227
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    +
    const mColor & getFillColor() const
    Gets the fill color of the shape.
    Definition: SVGElement.cpp:20
    +
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:18
    +
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:22
    +
    Vector2Df position
    Position of the shape.
    Definition: SVGElement.hpp:225
    SVGElement()
    Constructs a Shape object.
    Definition: SVGElement.cpp:5
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    virtual std::string getClass() const =0
    Gets the type of the shape.
    -
    SVGElement * parent
    Pointer to the group that contains the shape.
    Definition: SVGElement.hpp:166
    -
    std::vector< std::string > transforms
    List of transformations.
    Definition: SVGElement.hpp:173
    -
    virtual void addElement(SVGElement *element)
    Adds a shape to the composite group.
    Definition: SVGElement.cpp:59
    +
    SVGElement * parent
    Pointer to the group that contains the shape.
    Definition: SVGElement.hpp:219
    +
    std::vector< std::string > transforms
    List of transformations.
    Definition: SVGElement.hpp:226
    +
    virtual void addElement(SVGElement *element)
    Adds a shape to the composite group.
    Definition: SVGElement.cpp:83
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Shape_8cpp_source.html b/html/Shape_8cpp_source.html similarity index 100% rename from docs/html/Shape_8cpp_source.html rename to html/Shape_8cpp_source.html diff --git a/docs/html/Shape_8hpp_source.html b/html/Shape_8hpp_source.html similarity index 100% rename from docs/html/Shape_8hpp_source.html rename to html/Shape_8hpp_source.html diff --git a/html/Stop_8cpp_source.html b/html/Stop_8cpp_source.html new file mode 100644 index 00000000..93a56a78 --- /dev/null +++ b/html/Stop_8cpp_source.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/Stop.cpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Stop.cpp
    +
    +
    +
    1 #include "Stop.hpp"
    +
    2 
    +
    3 Stop::Stop(const mColor& color, float offset) : color(color), offset(offset) {}
    +
    4 
    +
    5 mColor Stop::getColor() const { return color; }
    +
    6 
    +
    7 float Stop::getOffset() const { return offset; }
    +
    mColor getColor() const
    Gets the color of the stop.
    Definition: Stop.cpp:5
    +
    float offset
    The offset of the stop.
    Definition: Stop.hpp:37
    +
    Stop(const mColor &color, float offset)
    Constructs a Stop object.
    Definition: Stop.cpp:3
    +
    float getOffset() const
    Gets the offset of the stop.
    Definition: Stop.cpp:7
    +
    mColor color
    The color of the stop.
    Definition: Stop.hpp:36
    +
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    +
    +
    + + + \ No newline at end of file diff --git a/html/Stop_8hpp_source.html b/html/Stop_8hpp_source.html new file mode 100644 index 00000000..072759e6 --- /dev/null +++ b/html/Stop_8hpp_source.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +svg-reader: src/graphics/Stop.hpp Source File + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Stop.hpp
    +
    +
    +
    1 #ifndef STOP_HPP_
    +
    2 #define STOP_HPP_
    +
    3 
    +
    4 #include "Color.hpp"
    +
    5 
    +
    11 class Stop {
    +
    12 public:
    +
    19  Stop(const mColor& color, float offset);
    +
    20 
    +
    26  mColor getColor() const;
    +
    27 
    +
    33  float getOffset() const;
    +
    34 
    +
    35 private:
    + +
    37  float offset;
    +
    38 };
    +
    39 
    +
    40 #endif
    +
    A class that represents a stop.
    Definition: Stop.hpp:11
    +
    mColor getColor() const
    Gets the color of the stop.
    Definition: Stop.cpp:5
    +
    float offset
    The offset of the stop.
    Definition: Stop.hpp:37
    +
    Stop(const mColor &color, float offset)
    Constructs a Stop object.
    Definition: Stop.cpp:3
    +
    float getOffset() const
    Gets the offset of the stop.
    Definition: Stop.cpp:7
    +
    mColor color
    The color of the stop.
    Definition: Stop.hpp:36
    +
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    +
    +
    + + + \ No newline at end of file diff --git a/docs/html/Text_8cpp_source.html b/html/Text_8cpp_source.html similarity index 76% rename from docs/html/Text_8cpp_source.html rename to html/Text_8cpp_source.html index 38ce2570..02a5666b 100644 --- a/docs/html/Text_8cpp_source.html +++ b/html/Text_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -125,59 +125,49 @@
    2 
    3 Text::Text(Vector2Df pos, std::string text, float font_size, const mColor &fill,
    4  const mColor &stroke, float stroke_width)
    -
    5  : content(text), font_size(font_size) {
    - - - -
    9  setPosition(pos);
    -
    10 }
    +
    5  : SVGElement(fill, stroke, stroke_width, pos), content(text),
    +
    6  font_size(font_size) {}
    +
    7 
    +
    8 std::string Text::getClass() const { return "Text"; }
    +
    9 
    +
    10 void Text::setFontSize(float font_size) { this->font_size = font_size; }
    11 
    -
    12 std::string Text::getClass() const { return "Text"; }
    +
    12 float Text::getFontSize() const { return font_size; }
    13 
    -
    14 void Text::setFontSize(float font_size) { this->font_size = font_size; }
    +
    14 void Text::setContent(std::string content) { this->content = content; }
    15 
    -
    16 float Text::getFontSize() const { return font_size; }
    +
    16 std::string Text::getContent() const { return content; }
    17 
    -
    18 void Text::setContent(std::string content) { this->content = content; }
    +
    18 void Text::setAnchor(std::string anchor) { this->anchor = anchor; }
    19 
    -
    20 std::string Text::getContent() const { return content; }
    +
    20 std::string Text::getAnchor() const { return anchor; }
    21 
    -
    22 void Text::setAnchor(std::string anchor) { this->anchor = anchor; }
    +
    22 void Text::setFontStyle(std::string font_style) { this->style = font_style; }
    23 
    -
    24 std::string Text::getAnchor() const { return anchor; }
    +
    24 std::string Text::getFontStyle() const { return style; }
    25 
    -
    26 void Text::setFontStyle(std::string font_style) { this->style = font_style; }
    -
    27 
    -
    28 std::string Text::getFontStyle() const { return style; }
    -
    29 
    -
    30 void Text::printData() const {
    - -
    32  std::cout << "Content: " << getContent() << std::endl;
    -
    33  std::cout << "Font size: " << getFontSize() << std::endl;
    -
    34 }
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    -
    void setContent(std::string content)
    Sets the string of the text.
    Definition: Text.cpp:18
    +
    26 void Text::printData() const {
    + +
    28  std::cout << "Content: " << getContent() << std::endl;
    +
    29  std::cout << "Font size: " << getFontSize() << std::endl;
    +
    30 }
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    +
    void setContent(std::string content)
    Sets the string of the text.
    Definition: Text.cpp:14
    std::string style
    Style of the text.
    Definition: Text.hpp:17
    std::string anchor
    Anchor of the text.
    Definition: Text.hpp:16
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Text.cpp:12
    -
    void printData() const override
    Prints the data of the text.
    Definition: Text.cpp:30
    -
    std::string getAnchor() const
    Gets the anchor of the text.
    Definition: Text.cpp:24
    -
    void setFontStyle(std::string style)
    Sets the style of the text.
    Definition: Text.cpp:26
    -
    void setFontSize(float font_size)
    Sets the font size of the text.
    Definition: Text.cpp:14
    -
    float getFontSize() const
    Gets the font size of the text.
    Definition: Text.cpp:16
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Text.cpp:8
    +
    void printData() const override
    Prints the data of the text.
    Definition: Text.cpp:26
    +
    std::string getAnchor() const
    Gets the anchor of the text.
    Definition: Text.cpp:20
    +
    void setFontStyle(std::string style)
    Sets the style of the text.
    Definition: Text.cpp:22
    +
    void setFontSize(float font_size)
    Sets the font size of the text.
    Definition: Text.cpp:10
    +
    float getFontSize() const
    Gets the font size of the text.
    Definition: Text.cpp:12
    float font_size
    Font size of the text.
    Definition: Text.hpp:15
    -
    std::string getFontStyle() const
    Gets the style of the text.
    Definition: Text.cpp:28
    +
    std::string getFontStyle() const
    Gets the style of the text.
    Definition: Text.cpp:24
    Text(Vector2Df pos, std::string text, float font_size, const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Text object.
    Definition: Text.cpp:3
    std::string content
    Text element.
    Definition: Text.hpp:14
    -
    void setAnchor(std::string anchor)
    Sets the anchor of the text.
    Definition: Text.cpp:22
    -
    std::string getContent() const
    Gets the string of the text.
    Definition: Text.cpp:20
    +
    void setAnchor(std::string anchor)
    Sets the anchor of the text.
    Definition: Text.cpp:18
    +
    std::string getContent() const
    Gets the string of the text.
    Definition: Text.cpp:16
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Text_8hpp_source.html b/html/Text_8hpp_source.html similarity index 88% rename from docs/html/Text_8hpp_source.html rename to html/Text_8hpp_source.html index 03dab97d..2268a2b3 100644 --- a/docs/html/Text_8hpp_source.html +++ b/html/Text_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -139,53 +139,46 @@
    30 
    36  std::string getClass() const override;
    37 
    -
    38  // /**
    -
    39  // * @brief Renders the shape using the given renderer.
    -
    40  // *
    -
    41  // * @param renderer The renderer to be used for rendering the shape.
    -
    42  // */
    -
    43  // void render(Renderer &renderer) const override;
    +
    43  void setContent(std::string content);
    44 
    -
    50  void setContent(std::string content);
    +
    50  std::string getContent() const;
    51 
    -
    57  std::string getContent() const;
    +
    57  void setFontSize(float font_size);
    58 
    -
    64  void setFontSize(float font_size);
    +
    64  float getFontSize() const;
    65 
    -
    71  float getFontSize() const;
    +
    71  void setAnchor(std::string anchor);
    72 
    -
    78  void setAnchor(std::string anchor);
    +
    78  std::string getAnchor() const;
    79 
    -
    85  std::string getAnchor() const;
    +
    85  void setFontStyle(std::string style);
    86 
    -
    92  void setFontStyle(std::string style);
    +
    92  std::string getFontStyle() const;
    93 
    -
    99  std::string getFontStyle() const;
    -
    100 
    -
    104  void printData() const override;
    -
    105 };
    -
    106 
    -
    107 #endif // TEXT_HPP_
    -
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:17
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    97  void printData() const override;
    +
    98 };
    +
    99 
    +
    100 #endif // TEXT_HPP_
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    Represents text in 2D space.
    Definition: Text.hpp:12
    -
    void setContent(std::string content)
    Sets the string of the text.
    Definition: Text.cpp:18
    +
    void setContent(std::string content)
    Sets the string of the text.
    Definition: Text.cpp:14
    std::string style
    Style of the text.
    Definition: Text.hpp:17
    std::string anchor
    Anchor of the text.
    Definition: Text.hpp:16
    -
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Text.cpp:12
    -
    void printData() const override
    Prints the data of the text.
    Definition: Text.cpp:30
    -
    std::string getAnchor() const
    Gets the anchor of the text.
    Definition: Text.cpp:24
    -
    void setFontStyle(std::string style)
    Sets the style of the text.
    Definition: Text.cpp:26
    -
    void setFontSize(float font_size)
    Sets the font size of the text.
    Definition: Text.cpp:14
    -
    float getFontSize() const
    Gets the font size of the text.
    Definition: Text.cpp:16
    +
    std::string getClass() const override
    Gets the type of the shape.
    Definition: Text.cpp:8
    +
    void printData() const override
    Prints the data of the text.
    Definition: Text.cpp:26
    +
    std::string getAnchor() const
    Gets the anchor of the text.
    Definition: Text.cpp:20
    +
    void setFontStyle(std::string style)
    Sets the style of the text.
    Definition: Text.cpp:22
    +
    void setFontSize(float font_size)
    Sets the font size of the text.
    Definition: Text.cpp:10
    +
    float getFontSize() const
    Gets the font size of the text.
    Definition: Text.cpp:12
    float font_size
    Font size of the text.
    Definition: Text.hpp:15
    -
    std::string getFontStyle() const
    Gets the style of the text.
    Definition: Text.cpp:28
    +
    std::string getFontStyle() const
    Gets the style of the text.
    Definition: Text.cpp:24
    Text(Vector2Df pos, std::string text, float font_size, const mColor &fill, const mColor &stroke, float stroke_width)
    Constructs a Text object.
    Definition: Text.cpp:3
    std::string content
    Text element.
    Definition: Text.hpp:14
    -
    void setAnchor(std::string anchor)
    Sets the anchor of the text.
    Definition: Text.cpp:22
    -
    std::string getContent() const
    Gets the string of the text.
    Definition: Text.cpp:20
    +
    void setAnchor(std::string anchor)
    Sets the anchor of the text.
    Definition: Text.cpp:18
    +
    std::string getContent() const
    Gets the string of the text.
    Definition: Text.cpp:16
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    diff --git a/docs/html/Vector2D_8hpp_source.html b/html/Vector2D_8hpp_source.html similarity index 99% rename from docs/html/Vector2D_8hpp_source.html rename to html/Vector2D_8hpp_source.html index 8bbfe4b2..c762dd15 100644 --- a/docs/html/Vector2D_8hpp_source.html +++ b/html/Vector2D_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    diff --git a/docs/html/Viewer_8cpp_source.html b/html/Viewer_8cpp_source.html similarity index 90% rename from docs/html/Viewer_8cpp_source.html rename to html/Viewer_8cpp_source.html index 0b4c42c3..4ba4abdc 100644 --- a/docs/html/Viewer_8cpp_source.html +++ b/html/Viewer_8cpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -222,22 +222,33 @@
    99  break;
    100  }
    101 }
    +
    102 
    +
    103 void Viewer::getWindowSize(HWND hWnd) const {
    +
    104  RECT rect;
    +
    105  GetClientRect(hWnd, &rect);
    +
    106  instance->window_size.x = static_cast< float >(rect.right - rect.left);
    +
    107  instance->window_size.y = static_cast< float >(rect.bottom - rect.top);
    +
    108 }
    +
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    +
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    Represents a viewer for rendering and interacting with a scene.
    Definition: Viewer.hpp:16
    void handleLeftButtonDown(LPARAM lParam)
    Handles the left button down event for initiating dragging.
    Definition: Viewer.cpp:74
    float offset_y
    Y-coordinate offset of the viewer.
    Definition: Viewer.hpp:19
    ~Viewer()
    Destructor for the Viewer class.
    Definition: Viewer.cpp:19
    float offset_x
    X-coordinate offset of the viewer.
    Definition: Viewer.hpp:18
    -
    bool is_dragging
    Flag indicating whether the mouse is being dragged.
    Definition: Viewer.hpp:74
    +
    bool is_dragging
    Flag indicating whether the mouse is being dragged.
    Definition: Viewer.hpp:82
    float zoom_factor
    Zoom factor for scaling the view.
    Definition: Viewer.hpp:20
    -
    static Viewer * instance
    Singleton instance of the Viewer class.
    Definition: Viewer.hpp:55
    +
    static Viewer * instance
    Singleton instance of the Viewer class.
    Definition: Viewer.hpp:63
    bool needs_repaint
    Definition: Viewer.hpp:22
    void handleKeyEvent(WPARAM wParam)
    Handles keyboard events.
    Definition: Viewer.cpp:47
    -
    POINT last_mouse_pos
    Last recorded mouse position.
    Definition: Viewer.hpp:75
    +
    POINT last_mouse_pos
    Last recorded mouse position.
    Definition: Viewer.hpp:83
    void handleMouseMove(LPARAM lParam)
    Handles the mouse move event for panning.
    Definition: Viewer.cpp:59
    static Viewer * getInstance()
    Gets the singleton instance of the Viewer class.
    Definition: Viewer.cpp:4
    float rotate_angle
    Rotation angle of the view.
    Definition: Viewer.hpp:21
    void handleKeyDown(WPARAM wParam)
    Handles the key down event for rotating.
    Definition: Viewer.cpp:90
    void handleMouseWheel(WPARAM wParam)
    Handles the mouse wheel event for zooming.
    Definition: Viewer.cpp:49
    +
    Vector2Df window_size
    Size of the window.
    Definition: Viewer.hpp:24
    +
    void getWindowSize(HWND hWnd) const
    Get the current window size.
    Definition: Viewer.cpp:103
    Viewer()
    Private constructor for the Viewer class.
    Definition: Viewer.cpp:11
    void handleMouseEvent(UINT message, WPARAM wParam, LPARAM lParam)
    Handles mouse events, such as wheel, move, left button down, and left button up.
    Definition: Viewer.cpp:26
    void handleLeftButtonUp()
    Handles the left button up event for ending dragging.
    Definition: Viewer.cpp:81
    diff --git a/docs/html/Viewer_8hpp_source.html b/html/Viewer_8hpp_source.html similarity index 81% rename from docs/html/Viewer_8hpp_source.html rename to html/Viewer_8hpp_source.html index f24da9b5..74c26a2f 100644 --- a/docs/html/Viewer_8hpp_source.html +++ b/html/Viewer_8hpp_source.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -128,61 +128,67 @@
    5 
    16 class Viewer {
    17 public:
    -
    18  float offset_x;
    -
    19  float offset_y;
    -
    20  float zoom_factor;
    -
    21  float rotate_angle;
    - -
    24 
    -
    30  static Viewer* getInstance();
    -
    31 
    -
    35  ~Viewer();
    -
    36 
    -
    45  void handleMouseEvent(UINT message, WPARAM wParam, LPARAM lParam);
    -
    46 
    -
    52  void handleKeyEvent(WPARAM wParam);
    -
    53 
    -
    54 private:
    -
    55  static Viewer* instance;
    -
    56 
    -
    60  Viewer();
    +
    18  float offset_x;
    +
    19  float offset_y;
    +
    20  float zoom_factor;
    +
    21  float rotate_angle;
    + + +
    25 
    +
    31  static Viewer* getInstance();
    +
    32 
    +
    36  ~Viewer();
    +
    37 
    +
    46  void handleMouseEvent(UINT message, WPARAM wParam, LPARAM lParam);
    +
    47 
    +
    53  void handleKeyEvent(WPARAM wParam);
    +
    54 
    +
    60  void getWindowSize(HWND hWnd) const;
    61 
    -
    66  Viewer(const Viewer&) = delete;
    -
    67 
    -
    72  void operator=(const Viewer&) = delete;
    -
    73 
    -
    74  bool is_dragging;
    - -
    76 
    -
    82  void handleMouseWheel(WPARAM wParam);
    -
    83 
    -
    89  void handleMouseMove(LPARAM lParam);
    -
    90 
    -
    96  void handleLeftButtonDown(LPARAM lParam);
    -
    97 
    -
    101  void handleLeftButtonUp();
    -
    102 
    -
    108  void handleKeyDown(WPARAM wParam);
    -
    109 };
    +
    62 private:
    +
    63  static Viewer* instance;
    +
    64 
    +
    68  Viewer();
    +
    69 
    +
    74  Viewer(const Viewer&) = delete;
    +
    75 
    +
    80  void operator=(const Viewer&) = delete;
    +
    81 
    +
    82  bool is_dragging;
    + +
    84 
    +
    90  void handleMouseWheel(WPARAM wParam);
    +
    91 
    +
    97  void handleMouseMove(LPARAM lParam);
    +
    98 
    +
    104  void handleLeftButtonDown(LPARAM lParam);
    +
    105 
    +
    109  void handleLeftButtonUp();
    110 
    -
    111 #endif // VIEWER_HPP_
    +
    116  void handleKeyDown(WPARAM wParam);
    +
    117 };
    +
    118 
    +
    119 #endif // VIEWER_HPP_
    +
    Represents a viewer for rendering and interacting with a scene.
    Definition: Viewer.hpp:16
    void handleLeftButtonDown(LPARAM lParam)
    Handles the left button down event for initiating dragging.
    Definition: Viewer.cpp:74
    float offset_y
    Y-coordinate offset of the viewer.
    Definition: Viewer.hpp:19
    ~Viewer()
    Destructor for the Viewer class.
    Definition: Viewer.cpp:19
    void operator=(const Viewer &)=delete
    Copy assignment operator for the Viewer class (deleted to enforce singleton pattern).
    float offset_x
    X-coordinate offset of the viewer.
    Definition: Viewer.hpp:18
    -
    bool is_dragging
    Flag indicating whether the mouse is being dragged.
    Definition: Viewer.hpp:74
    +
    bool is_dragging
    Flag indicating whether the mouse is being dragged.
    Definition: Viewer.hpp:82
    float zoom_factor
    Zoom factor for scaling the view.
    Definition: Viewer.hpp:20
    -
    static Viewer * instance
    Singleton instance of the Viewer class.
    Definition: Viewer.hpp:55
    +
    static Viewer * instance
    Singleton instance of the Viewer class.
    Definition: Viewer.hpp:63
    bool needs_repaint
    Definition: Viewer.hpp:22
    void handleKeyEvent(WPARAM wParam)
    Handles keyboard events.
    Definition: Viewer.cpp:47
    -
    POINT last_mouse_pos
    Last recorded mouse position.
    Definition: Viewer.hpp:75
    +
    POINT last_mouse_pos
    Last recorded mouse position.
    Definition: Viewer.hpp:83
    void handleMouseMove(LPARAM lParam)
    Handles the mouse move event for panning.
    Definition: Viewer.cpp:59
    static Viewer * getInstance()
    Gets the singleton instance of the Viewer class.
    Definition: Viewer.cpp:4
    float rotate_angle
    Rotation angle of the view.
    Definition: Viewer.hpp:21
    void handleKeyDown(WPARAM wParam)
    Handles the key down event for rotating.
    Definition: Viewer.cpp:90
    void handleMouseWheel(WPARAM wParam)
    Handles the mouse wheel event for zooming.
    Definition: Viewer.cpp:49
    +
    Vector2Df window_size
    Size of the window.
    Definition: Viewer.hpp:24
    +
    void getWindowSize(HWND hWnd) const
    Get the current window size.
    Definition: Viewer.cpp:103
    Viewer()
    Private constructor for the Viewer class.
    Definition: Viewer.cpp:11
    Viewer(const Viewer &)=delete
    Copy constructor for the Viewer class (deleted to enforce singleton pattern).
    void handleMouseEvent(UINT message, WPARAM wParam, LPARAM lParam)
    Handles mouse events, such as wheel, move, left button down, and left button up.
    Definition: Viewer.cpp:26
    diff --git a/docs/html/annotated.html b/html/annotated.html similarity index 83% rename from docs/html/annotated.html rename to html/annotated.html index 7084426f..b04e34b9 100644 --- a/docs/html/annotated.html +++ b/html/annotated.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -125,21 +125,25 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
     CCircleRepresents a circle in 2D space
     CEllRepresents an ellipse in 2D space
     CGroupA composite class that contains a vector of shape pointers (polymorphic)
     CLineRepresents a line in 2D space
     CmColorUtility class for manipulating RGBA mColors
     CParserTo manipulate and parse an SVG file
     CPathRepresents a path element in 2D space
     CPathPointA struct that contains a point and a type of point
     CPlygonRepresents a polygon in 2D space
     CPlylineRepresents a polyline in 2D space
     CPolyShapeAbstract base class for polygon and polyline shapes in 2D space
     CRectRepresents a rectangle in 2D space
     CRendererSingleton class responsible for rendering shapes using GDI+
     CSVGElementRepresents an element in an SVG file
     CTextRepresents text in 2D space
     CVector2DUtility template class for manipulating 2-dimensional vectors
     CViewerRepresents a viewer for rendering and interacting with a scene
     CGradientA class that represents a gradient
     CGroupA composite class that contains a vector of shape pointers (polymorphic)
     CLineRepresents a line in 2D space
     CLinearGradientA class that represents a linear gradient
     CmColorUtility class for manipulating RGBA mColors
     CParserTo manipulate and parse an SVG file
     CPathRepresents a path element in 2D space
     CPathPointA struct that contains a point and a type of point
     CPlygonRepresents a polygon in 2D space
     CPlylineRepresents a polyline in 2D space
     CPolyShapeAbstract base class for polygon and polyline shapes in 2D space
     CRadialGradientA class that represents a radial gradient
     CRectRepresents a rectangle in 2D space
     CRendererSingleton class responsible for rendering shapes using GDI+
     CStopA class that represents a stop
     CSVGElementRepresents an element in an SVG file
     CTextRepresents text in 2D space
     CVector2DUtility template class for manipulating 2-dimensional vectors
     CViewerRepresents a viewer for rendering and interacting with a scene
    diff --git a/docs/html/annotated_dup.js b/html/annotated_dup.js similarity index 78% rename from docs/html/annotated_dup.js rename to html/annotated_dup.js index cc3828f3..1387628c 100644 --- a/docs/html/annotated_dup.js +++ b/html/annotated_dup.js @@ -2,8 +2,10 @@ var annotated_dup = [ [ "Circle", "classCircle.html", "classCircle" ], [ "Ell", "classEll.html", "classEll" ], + [ "Gradient", "classGradient.html", "classGradient" ], [ "Group", "classGroup.html", "classGroup" ], [ "Line", "classLine.html", "classLine" ], + [ "LinearGradient", "classLinearGradient.html", "classLinearGradient" ], [ "mColor", "classmColor.html", "classmColor" ], [ "Parser", "classParser.html", "classParser" ], [ "Path", "classPath.html", "classPath" ], @@ -11,8 +13,10 @@ var annotated_dup = [ "Plygon", "classPlygon.html", "classPlygon" ], [ "Plyline", "classPlyline.html", "classPlyline" ], [ "PolyShape", "classPolyShape.html", "classPolyShape" ], + [ "RadialGradient", "classRadialGradient.html", "classRadialGradient" ], [ "Rect", "classRect.html", "classRect" ], [ "Renderer", "classRenderer.html", "classRenderer" ], + [ "Stop", "classStop.html", "classStop" ], [ "SVGElement", "classSVGElement.html", "classSVGElement" ], [ "Text", "classText.html", "classText" ], [ "Vector2D", "classVector2D.html", "classVector2D" ], diff --git a/docs/html/bc_s.png b/html/bc_s.png similarity index 100% rename from docs/html/bc_s.png rename to html/bc_s.png diff --git a/docs/html/bdwn.png b/html/bdwn.png similarity index 100% rename from docs/html/bdwn.png rename to html/bdwn.png diff --git a/docs/html/classEll-members.html b/html/classCircle-members.html similarity index 73% rename from docs/html/classEll-members.html rename to html/classCircle-members.html index a28533f7..c6112f2c 100644 --- a/docs/html/classEll-members.html +++ b/html/classCircle-members.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -98,7 +98,7 @@
    @@ -118,28 +118,34 @@
    -
    Ell Member List
    +
    Circle Member List
    -

    This is the complete list of members for Ell, including all inherited members.

    +

    This is the complete list of members for Circle, including all inherited members.

    - - - - + + + + + + + + - - - - - + + + + + + + @@ -150,6 +156,8 @@ + +
    addElement(SVGElement *element)SVGElementvirtual
    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)Ell
    fillSVGElementprivate
    getClass() const overrideEllvirtual
    getFillColor() constSVGElement
    Circle(float radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)Circle
    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)Ell
    fillSVGElementprivate
    getClass() const overrideCirclevirtual
    getFillColor() constSVGElement
    getGradient() constSVGElement
    getMaxBound() const overrideEllvirtual
    getMinBound() const overrideEllvirtual
    getOutlineColor() constSVGElement
    getOutlineThickness() constSVGElement
    getParent() constSVGElement
    getPosition() constSVGElement
    getRadius() constEll
    getTransforms() constSVGElement
    parentSVGElementprotected
    positionSVGElementprivate
    printData() const overrideEllvirtual
    radiusEllprivate
    setFillColor(const mColor &color)SVGElement
    gradientSVGElementprivate
    parentSVGElementprotected
    positionSVGElementprivate
    printData() const overrideEllvirtual
    radiusEllprivate
    setFillColor(const mColor &color)SVGElement
    setGradient(Gradient *gradient)SVGElement
    setOutlineColor(const mColor &color)SVGElement
    setOutlineThickness(float thickness)SVGElement
    setParent(SVGElement *parent)SVGElement
    strokeSVGElementprivate
    stroke_widthSVGElementprivate
    SVGElement()SVGElementprotected
    SVGElement(const mColor &fill, const mColor &stroke, float stroke_width)SVGElementprotected
    SVGElement(const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)SVGElementprotected
    transformsSVGElementprivate
    ~SVGElement()=defaultSVGElementvirtual
    diff --git a/docs/html/classCircle.html b/html/classCircle.html similarity index 86% rename from docs/html/classCircle.html rename to html/classCircle.html index 116aa6ad..52d9c32e 100644 --- a/docs/html/classCircle.html +++ b/html/classCircle.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -137,7 +137,8 @@
    Collaboration diagram for Circle:
    -
    +
    +
    [legend]
    + + + + + + @@ -208,6 +215,12 @@ + + + + + + @@ -218,6 +231,12 @@ + + + + + + @@ -290,9 +309,9 @@

    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)
    Constructs an Ellipse object.
    Definition: Ellipse.cpp:5
    Vector2Df radius
    Radii of the ellipse in the x and y directions.
    Definition: Ellipse.hpp:14
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    diff --git a/docs/html/classCircle.js b/html/classCircle.js similarity index 100% rename from docs/html/classCircle.js rename to html/classCircle.js diff --git a/html/classCircle__coll__graph.map b/html/classCircle__coll__graph.map new file mode 100644 index 00000000..8bfec849 --- /dev/null +++ b/html/classCircle__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classCircle__coll__graph.md5 b/html/classCircle__coll__graph.md5 new file mode 100644 index 00000000..1d81256a --- /dev/null +++ b/html/classCircle__coll__graph.md5 @@ -0,0 +1 @@ +dc7a97bc728dee7fc64f4ca5dacec54f \ No newline at end of file diff --git a/docs/html/classCircle__coll__graph.png b/html/classCircle__coll__graph.png similarity index 100% rename from docs/html/classCircle__coll__graph.png rename to html/classCircle__coll__graph.png diff --git a/html/classCircle__coll__graph.svg b/html/classCircle__coll__graph.svg new file mode 100644 index 00000000..afadbf42 --- /dev/null +++ b/html/classCircle__coll__graph.svg @@ -0,0 +1,129 @@ + + + + + + +Circle + + +Node1 + + +Circle + + + + + +Node2 + + +Ell + + + + + +Node2->Node1 + + + + + +Node3 + + +SVGElement + + + + + +Node3->Node2 + + + + + +Node3->Node3 + + + parent + + + +Node4 + + +Vector2D< float > + + + + + +Node4->Node2 + + + radius + + + +Node4->Node3 + + + position + + + +Node5 + + +Gradient + + + + + +Node5->Node3 + + + gradient + + + +Node6 + + +mColor + + + + + +Node6->Node3 + + + fill +stroke + + + +Node6->Node6 + + + Black +Blue +Cyan +Green +Magenta +Red +Transparent +White +Yellow + + + diff --git a/docs/html/classCircle__inherit__graph.map b/html/classCircle__inherit__graph.map similarity index 100% rename from docs/html/classCircle__inherit__graph.map rename to html/classCircle__inherit__graph.map diff --git a/docs/html/classCircle__inherit__graph.md5 b/html/classCircle__inherit__graph.md5 similarity index 100% rename from docs/html/classCircle__inherit__graph.md5 rename to html/classCircle__inherit__graph.md5 diff --git a/docs/html/classCircle__inherit__graph.png b/html/classCircle__inherit__graph.png similarity index 100% rename from docs/html/classCircle__inherit__graph.png rename to html/classCircle__inherit__graph.png diff --git a/docs/html/classCircle__inherit__graph.svg b/html/classCircle__inherit__graph.svg similarity index 100% rename from docs/html/classCircle__inherit__graph.svg rename to html/classCircle__inherit__graph.svg diff --git a/docs/html/classCircle-members.html b/html/classEll-members.html similarity index 75% rename from docs/html/classCircle-members.html rename to html/classEll-members.html index 5342e359..e1bd87a9 100644 --- a/docs/html/classCircle-members.html +++ b/html/classEll-members.html @@ -60,7 +60,7 @@

    @@ -98,7 +98,7 @@
    @@ -118,29 +118,33 @@
    -
    Circle Member List
    +
    Ell Member List
    -

    This is the complete list of members for Circle, including all inherited members.

    +

    This is the complete list of members for Ell, including all inherited members.

    @@ -161,6 +162,12 @@

    Vector2Df getRadius () const
     Gets the radius of the ellipse. More...
     
    Vector2Df getMinBound () const override
     Gets the minimum bounding box of the shape. More...
     
    Vector2Df getMaxBound () const override
     Gets the maximum bounding box of the shape. More...
     
    void printData () const override
     Prints the data of the shape. More...
     
    SVGElementgetParent () const
     Parent pointer getter. More...
     
    void setGradient (Gradient *gradient)
     Sets the gradient of the shape. More...
     
    GradientgetGradient () const
     Gets the gradient of the shape. More...
     
    virtual void addElement (SVGElement *element)
     Adds a shape to the composite group. More...
     
     SVGElement ()
     Constructs a Shape object. More...
     
     SVGElement (const mColor &fill, const mColor &stroke, float stroke_width)
     Constructs a Shape object. More...
     
     SVGElement (const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)
     Constructs a Shape object. More...
     
    - Protected Attributes inherited from SVGElement
    SVGElementparent
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    - - - - - + + + + + + + - - - - - + + + + + + + @@ -151,6 +155,8 @@ + +
    addElement(SVGElement *element)SVGElementvirtual
    Circle(float radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)Circle
    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)Ell
    fillSVGElementprivate
    getClass() const overrideCirclevirtual
    getFillColor() constSVGElement
    Ell(const Vector2Df &radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)Ell
    fillSVGElementprivate
    getClass() const overrideEllvirtual
    getFillColor() constSVGElement
    getGradient() constSVGElement
    getMaxBound() const overrideEllvirtual
    getMinBound() const overrideEllvirtual
    getOutlineColor() constSVGElement
    getOutlineThickness() constSVGElement
    getParent() constSVGElement
    getPosition() constSVGElement
    getRadius() constEll
    getTransforms() constSVGElement
    parentSVGElementprotected
    positionSVGElementprivate
    printData() const overrideEllvirtual
    radiusEllprivate
    setFillColor(const mColor &color)SVGElement
    gradientSVGElementprivate
    parentSVGElementprotected
    positionSVGElementprivate
    printData() const overrideEllvirtual
    radiusEllprivate
    setFillColor(const mColor &color)SVGElement
    setGradient(Gradient *gradient)SVGElement
    setOutlineColor(const mColor &color)SVGElement
    setOutlineThickness(float thickness)SVGElement
    setParent(SVGElement *parent)SVGElement
    strokeSVGElementprivate
    stroke_widthSVGElementprivate
    SVGElement()SVGElementprotected
    SVGElement(const mColor &fill, const mColor &stroke, float stroke_width)SVGElementprotected
    SVGElement(const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)SVGElementprotected
    transformsSVGElementprivate
    ~SVGElement()=defaultSVGElementvirtual
    diff --git a/docs/html/classEll.html b/html/classEll.html similarity index 75% rename from docs/html/classEll.html rename to html/classEll.html index d2b78f34..0e49af51 100644 --- a/docs/html/classEll.html +++ b/html/classEll.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -138,7 +138,8 @@
    Collaboration diagram for Ell:
    -
    +
    +
    [legend]
    + + + + + + @@ -202,6 +209,12 @@ + + + + + + @@ -219,6 +232,12 @@ + + + + + + @@ -288,19 +307,11 @@

    Definition at line 5 of file Ellipse.cpp.

    -
    7  : radius(radius) {
    -
    8  setPosition(center);
    - - -
    11  setOutlineThickness(stroke_thickness);
    -
    12 }
    +
    7  : SVGElement(fill, stroke, stroke_thickness, center), radius(radius) {}
    Vector2Df radius
    Radii of the ellipse in the x and y directions.
    Definition: Ellipse.hpp:14
    -
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:169
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    void setFillColor(const mColor &color)
    Sets the fill color of the shape.
    Definition: SVGElement.cpp:8
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    +
    mColor fill
    Fill color.
    Definition: SVGElement.hpp:222
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    +
    SVGElement()
    Constructs a Shape object.
    Definition: SVGElement.cpp:5
    @@ -334,8 +345,83 @@

    SVGElement.

    -

    Definition at line 14 of file Ellipse.cpp.

    -
    14 { return "Ellipse"; }
    +

    Definition at line 9 of file Ellipse.cpp.

    +
    9 { return "Ellipse"; }
    +
    +
    + + +

    ◆ getMaxBound()

    + +
    +
    +

    @@ -155,6 +156,12 @@

    Vector2Df getRadius () const
     Gets the radius of the ellipse. More...
     
    Vector2Df getMinBound () const override
     Gets the minimum bounding box of the shape. More...
     
    Vector2Df getMaxBound () const override
     Gets the maximum bounding box of the shape. More...
     
    void printData () const override
     Prints the data of the shape. More...
     
    SVGElementgetParent () const
     Parent pointer getter. More...
     
    void setGradient (Gradient *gradient)
     Sets the gradient of the shape. More...
     
    GradientgetGradient () const
     Gets the gradient of the shape. More...
     
    virtual void addElement (SVGElement *element)
     Adds a shape to the composite group. More...
     
     SVGElement ()
     Constructs a Shape object. More...
     
     SVGElement (const mColor &fill, const mColor &stroke, float stroke_width)
     Constructs a Shape object. More...
     
     SVGElement (const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)
     Constructs a Shape object. More...
     
    - Protected Attributes inherited from SVGElement
    SVGElementparent
    + + + + +
    + + + + + + + +
    Vector2Df Ell::getMaxBound () const
    +
    +overridevirtual
    +
    + +

    Gets the maximum bounding box of the shape.

    +
    Returns
    The maximum bounding box of the shape.
    + +

    Reimplemented from SVGElement.

    + +

    Definition at line 20 of file Ellipse.cpp.

    +
    20  {
    +
    21  return Vector2Df(getPosition().x + getRadius().x,
    +
    22  getPosition().y + getRadius().y);
    +
    23 }
    +
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:13
    +
    Vector2Df getPosition() const
    Get the current position of the shape.
    Definition: SVGElement.cpp:41
    + +
    +
    + + +

    ◆ getMinBound()

    + +
    +
    + + + + + +
    + + + + + + + +
    Vector2Df Ell::getMinBound () const
    +
    +overridevirtual
    +
    + +

    Gets the minimum bounding box of the shape.

    +
    Returns
    The minimum bounding box of the shape.
    + +

    Reimplemented from SVGElement.

    + +

    Definition at line 15 of file Ellipse.cpp.

    +
    15  {
    +
    16  return Vector2Df(getPosition().x - getRadius().x,
    +
    17  getPosition().y - getRadius().y);
    +
    18 }
    @@ -357,8 +443,8 @@

    Returns
    The radius of the ellipse.
    -

    Definition at line 18 of file Ellipse.cpp.

    -
    18 { return radius; }
    +

    Definition at line 13 of file Ellipse.cpp.

    +
    13 { return radius; }
    @@ -390,14 +476,13 @@

    SVGElement.

    -

    Definition at line 20 of file Ellipse.cpp.

    -
    20  {
    - -
    22  std::cout << "Radius: " << getRadius().x << " " << getRadius().y
    -
    23  << std::endl;
    -
    24 }
    -
    Vector2Df getRadius() const
    Gets the radius of the ellipse.
    Definition: Ellipse.cpp:18
    -
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:33
    +

    Definition at line 25 of file Ellipse.cpp.

    +
    25  {
    + +
    27  std::cout << "Radius: " << getRadius().x << " " << getRadius().y
    +
    28  << std::endl;
    +
    29 }
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    @@ -427,8 +512,8 @@

    Definition at line 16 of file Ellipse.cpp.

    -
    16 { this->radius = radius; }
    +

    Definition at line 11 of file Ellipse.cpp.

    +
    11 { this->radius = radius; }

    diff --git a/docs/html/classEll.js b/html/classEll.js similarity index 74% rename from docs/html/classEll.js rename to html/classEll.js index eb623fdc..8f8e5941 100644 --- a/docs/html/classEll.js +++ b/html/classEll.js @@ -2,6 +2,8 @@ var classEll = [ [ "Ell", "classEll.html#a4a9956ca82cb9f957e993fa0c0faced6", null ], [ "getClass", "classEll.html#a0d0a2a70c06878c5769bd7d092277892", null ], + [ "getMaxBound", "classEll.html#a8a8dd2acc8c7be5580dd8e549d247525", null ], + [ "getMinBound", "classEll.html#ab79368df57ee08382916fc52b69afb85", null ], [ "getRadius", "classEll.html#a00d607a5238705b552ec61b4409b76c1", null ], [ "printData", "classEll.html#a1d6d60039d2405f2b7aa117206d128fb", null ], [ "setRadius", "classEll.html#a9f67131ba02c02fccf42c52f5f04525e", null ], diff --git a/html/classEll__coll__graph.map b/html/classEll__coll__graph.map new file mode 100644 index 00000000..d1453955 --- /dev/null +++ b/html/classEll__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classEll__coll__graph.md5 b/html/classEll__coll__graph.md5 new file mode 100644 index 00000000..ef0237f2 --- /dev/null +++ b/html/classEll__coll__graph.md5 @@ -0,0 +1 @@ +bbd1ae0f69cc74f30ea1a7d363ee41b1 \ No newline at end of file diff --git a/html/classEll__coll__graph.svg b/html/classEll__coll__graph.svg new file mode 100644 index 00000000..b3e3334d --- /dev/null +++ b/html/classEll__coll__graph.svg @@ -0,0 +1,114 @@ + + + + + + +Ell + + +Node1 + + +Ell + + + + + +Node2 + + +SVGElement + + + + + +Node2->Node1 + + + + + +Node2->Node2 + + + parent + + + +Node3 + + +Vector2D< float > + + + + + +Node3->Node1 + + + radius + + + +Node3->Node2 + + + position + + + +Node4 + + +Gradient + + + + + +Node4->Node2 + + + gradient + + + +Node5 + + +mColor + + + + + +Node5->Node2 + + + fill +stroke + + + +Node5->Node5 + + + Black +Blue +Cyan +Green +Magenta +Red +Transparent +White +Yellow + + + diff --git a/docs/html/classEll__inherit__graph.map b/html/classEll__inherit__graph.map similarity index 100% rename from docs/html/classEll__inherit__graph.map rename to html/classEll__inherit__graph.map diff --git a/docs/html/classEll__inherit__graph.md5 b/html/classEll__inherit__graph.md5 similarity index 100% rename from docs/html/classEll__inherit__graph.md5 rename to html/classEll__inherit__graph.md5 diff --git a/docs/html/classEll__inherit__graph.svg b/html/classEll__inherit__graph.svg similarity index 100% rename from docs/html/classEll__inherit__graph.svg rename to html/classEll__inherit__graph.svg diff --git a/docs/html/classEllipse-members.html b/html/classEllipse-members.html similarity index 100% rename from docs/html/classEllipse-members.html rename to html/classEllipse-members.html diff --git a/docs/html/classEllipse.html b/html/classEllipse.html similarity index 100% rename from docs/html/classEllipse.html rename to html/classEllipse.html diff --git a/docs/html/classEllipse.js b/html/classEllipse.js similarity index 100% rename from docs/html/classEllipse.js rename to html/classEllipse.js diff --git a/docs/html/classEllipse__coll__graph.map b/html/classEllipse__coll__graph.map similarity index 100% rename from docs/html/classEllipse__coll__graph.map rename to html/classEllipse__coll__graph.map diff --git a/docs/html/classEllipse__coll__graph.md5 b/html/classEllipse__coll__graph.md5 similarity index 100% rename from docs/html/classEllipse__coll__graph.md5 rename to html/classEllipse__coll__graph.md5 diff --git a/docs/html/classEllipse__coll__graph.png b/html/classEllipse__coll__graph.png similarity index 100% rename from docs/html/classEllipse__coll__graph.png rename to html/classEllipse__coll__graph.png diff --git a/docs/html/classEllipse__coll__graph.svg b/html/classEllipse__coll__graph.svg similarity index 100% rename from docs/html/classEllipse__coll__graph.svg rename to html/classEllipse__coll__graph.svg diff --git a/docs/html/classEllipse__inherit__graph.map b/html/classEllipse__inherit__graph.map similarity index 100% rename from docs/html/classEllipse__inherit__graph.map rename to html/classEllipse__inherit__graph.map diff --git a/docs/html/classEllipse__inherit__graph.md5 b/html/classEllipse__inherit__graph.md5 similarity index 100% rename from docs/html/classEllipse__inherit__graph.md5 rename to html/classEllipse__inherit__graph.md5 diff --git a/docs/html/classEllipse__inherit__graph.png b/html/classEllipse__inherit__graph.png similarity index 100% rename from docs/html/classEllipse__inherit__graph.png rename to html/classEllipse__inherit__graph.png diff --git a/docs/html/classEllipse__inherit__graph.svg b/html/classEllipse__inherit__graph.svg similarity index 100% rename from docs/html/classEllipse__inherit__graph.svg rename to html/classEllipse__inherit__graph.svg diff --git a/html/classGradient-members.html b/html/classGradient-members.html new file mode 100644 index 00000000..6829c2b6 --- /dev/null +++ b/html/classGradient-members.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +svg-reader: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Gradient Member List
    +
    +
    + +

    This is the complete list of members for Gradient, including all inherited members.

    + + + + + + + + + + + + + + + +
    addStop(Stop stop)Gradient
    getClass() const =0Gradientpure virtual
    getPoints() constGradient
    getStops() constGradient
    getTransforms() constGradient
    getUnits() constGradient
    Gradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)Gradient
    pointsGradientprivate
    setTransforms(std::vector< std::string > transforms)Gradient
    setUnits(std::string units)Gradient
    stopsGradientprivate
    transformsGradientprivate
    unitsGradientprivate
    ~Gradient()=defaultGradientvirtual
    +
    + + + \ No newline at end of file diff --git a/html/classGradient.html b/html/classGradient.html new file mode 100644 index 00000000..8cd1b4f0 --- /dev/null +++ b/html/classGradient.html @@ -0,0 +1,466 @@ + + + + + + + + + + + + + + + + + + +svg-reader: Gradient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Gradient Class Referenceabstract
    +
    +
    + +

    A class that represents a gradient. + More...

    + +

    #include <Gradient.hpp>

    +
    +Inheritance diagram for Gradient:
    +
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     Gradient (std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
     Constructs a Gradient object. More...
     
    +virtual ~Gradient ()=default
     Destructs a Gradient object.
     
    virtual std::string getClass () const =0
     Gets the type of the gradient. More...
     
    std::vector< StopgetStops () const
     Gets the stops of the gradient. More...
     
    std::pair< Vector2Df, Vector2DfgetPoints () const
     Gets the start and end points of the gradient. More...
     
    void setUnits (std::string units)
     Gets the units of the gradient. More...
     
    std::string getUnits () const
     Gets the units of the gradient. More...
     
    void setTransforms (std::vector< std::string > transforms)
     Gets the transforms of the gradient. More...
     
    std::vector< std::string > getTransforms () const
     Gets the transforms of the gradient. More...
     
    void addStop (Stop stop)
     Adds a stop to the gradient. More...
     
    + + + + + + + + + + + + + +

    +Private Attributes

    +std::vector< Stopstops
     Stops of the gradient.
     
    +std::pair< Vector2Df, Vector2Dfpoints
     Start and end points of the gradient.
     
    +std::string units
     Units of the gradient.
     
    +std::vector< std::string > transforms
     Transforms of the gradient.
     
    +

    Detailed Description

    +

    A class that represents a gradient.

    +

    The Gradient class is an abstract class that represents a gradient. It contains a vector of Stop objects that represent the stops of the gradient. It also contains a pair of Vector2D objects that represent the start and end points of the gradient.

    + +

    Definition at line 18 of file Gradient.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Gradient()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Gradient::Gradient (std::vector< Stopstops,
    std::pair< Vector2Df, Vector2Dfpoints,
    std::string units 
    )
    +
    + +

    Constructs a Gradient object.

    +
    Parameters
    + + + + +
    stopsThe stops of the gradient.
    pointsThe start and end points of the gradient.
    unitsThe units of the gradient.
    +
    +
    + +

    Definition at line 3 of file Gradient.cpp.

    +
    +
    std::string units
    Units of the gradient.
    Definition: Gradient.hpp:95
    +
    std::vector< Stop > stops
    Stops of the gradient.
    Definition: Gradient.hpp:92
    +
    std::pair< Vector2Df, Vector2Df > points
    Start and end points of the gradient.
    Definition: Gradient.hpp:94
    +
    +
    +
    +

    Member Function Documentation

    + +

    ◆ addStop()

    + +
    +
    + + + + + + + + +
    void Gradient::addStop (Stop stop)
    +
    + +

    Adds a stop to the gradient.

    +
    Parameters
    + + +
    stopThe stop to be added to the gradient.
    +
    +
    + +

    Definition at line 23 of file Gradient.cpp.

    +
    23 { stops.push_back(stop); }
    +
    +
    +
    + +

    ◆ getClass()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual std::string Gradient::getClass () const
    +
    +pure virtual
    +
    + +

    Gets the type of the gradient.

    +
    Returns
    The string that represents the type of the gradient.
    + +

    Implemented in RadialGradient, and LinearGradient.

    + +
    +
    + +

    ◆ getPoints()

    + +
    +
    + + + + + + + +
    std::pair< Vector2Df, Vector2Df > Gradient::getPoints () const
    +
    + +

    Gets the start and end points of the gradient.

    +
    Returns
    The start and end points of the gradient.
    + +

    Definition at line 9 of file Gradient.cpp.

    +
    9 { return points; }
    +
    +
    +
    + +

    ◆ getStops()

    + +
    +
    + + + + + + + +
    std::vector< Stop > Gradient::getStops () const
    +
    + +

    Gets the stops of the gradient.

    +
    Returns
    The stops of the gradient.
    + +

    Definition at line 7 of file Gradient.cpp.

    +
    7 { return stops; }
    +
    +
    +
    + +

    ◆ getTransforms()

    + +
    +
    + + + + + + + +
    std::vector< std::string > Gradient::getTransforms () const
    +
    + +

    Gets the transforms of the gradient.

    +
    Returns
    The transforms of the gradient.
    + +

    Definition at line 19 of file Gradient.cpp.

    +
    19  {
    +
    20  return transforms;
    +
    21 }
    +
    std::vector< std::string > transforms
    Transforms of the gradient.
    Definition: Gradient.hpp:96
    +
    +
    +
    + +

    ◆ getUnits()

    + +
    +
    + + + + + + + +
    std::string Gradient::getUnits () const
    +
    + +

    Gets the units of the gradient.

    +
    Returns
    The units of the gradient.
    + +

    Definition at line 13 of file Gradient.cpp.

    +
    13 { return units; }
    +
    +
    +
    + +

    ◆ setTransforms()

    + +
    +
    + + + + + + + + +
    void Gradient::setTransforms (std::vector< std::string > transforms)
    +
    + +

    Gets the transforms of the gradient.

    +
    Returns
    The transforms of the gradient.
    + +

    Definition at line 15 of file Gradient.cpp.

    +
    15  {
    +
    16  this->transforms = transforms;
    +
    17 }
    +
    +
    +
    + +

    ◆ setUnits()

    + +
    +
    + + + + + + + + +
    void Gradient::setUnits (std::string units)
    +
    + +

    Gets the units of the gradient.

    +
    Returns
    The units of the gradient.
    + +

    Definition at line 11 of file Gradient.cpp.

    +
    11 { this->units = units; }
    +
    +
    +
    +
    The documentation for this class was generated from the following files: +
    +
    + + + \ No newline at end of file diff --git a/html/classGradient.js b/html/classGradient.js new file mode 100644 index 00000000..5f3a58f7 --- /dev/null +++ b/html/classGradient.js @@ -0,0 +1,17 @@ +var classGradient = +[ + [ "Gradient", "classGradient.html#aa27206a9cc0adb5309a6db6dbd9d0257", null ], + [ "~Gradient", "classGradient.html#a9332299756c51c99398ce09e584a8b42", null ], + [ "addStop", "classGradient.html#a44218bd3fb347f4c269f1f2795fb77d5", null ], + [ "getClass", "classGradient.html#adb86ee7c9171cb7294d1bb8956e97891", null ], + [ "getPoints", "classGradient.html#aced479d6a10d2aa53e6d363e1df5dc08", null ], + [ "getStops", "classGradient.html#a1125c4e5294389bb6698bf4fcb4f928d", null ], + [ "getTransforms", "classGradient.html#adf0e8b360f2b8e6edc1059002f85b1c1", null ], + [ "getUnits", "classGradient.html#a54cc5770c2dce46f1d56bcfb63285173", null ], + [ "setTransforms", "classGradient.html#ae2afa93bd9b6759f5fe625065301d3d9", null ], + [ "setUnits", "classGradient.html#a61dd624d452ab2afe913414158888165", null ], + [ "points", "classGradient.html#a8da859d1b12459800e763c31f18d0d41", null ], + [ "stops", "classGradient.html#a7831fa94135c818481ef7c85f792e1ca", null ], + [ "transforms", "classGradient.html#a1387db53f850dd8cc765fc837c6e97e8", null ], + [ "units", "classGradient.html#a592dda454dc4df897263212191d6e3cb", null ] +]; \ No newline at end of file diff --git a/html/classGradient__inherit__graph.map b/html/classGradient__inherit__graph.map new file mode 100644 index 00000000..39ce6039 --- /dev/null +++ b/html/classGradient__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classGradient__inherit__graph.md5 b/html/classGradient__inherit__graph.md5 new file mode 100644 index 00000000..2f1b3489 --- /dev/null +++ b/html/classGradient__inherit__graph.md5 @@ -0,0 +1 @@ +6698f1b153c03687f27c8f2a672daaea \ No newline at end of file diff --git a/html/classGradient__inherit__graph.svg b/html/classGradient__inherit__graph.svg new file mode 100644 index 00000000..a1ec1218 --- /dev/null +++ b/html/classGradient__inherit__graph.svg @@ -0,0 +1,51 @@ + + + + + + +Gradient + + +Node1 + + +Gradient + + + + + +Node2 + + +LinearGradient + + + + + +Node1->Node2 + + + + + +Node3 + + +RadialGradient + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classGroup-members.html b/html/classGroup-members.html similarity index 68% rename from docs/html/classGroup-members.html rename to html/classGroup-members.html index 217d1a0e..a1de8821 100644 --- a/docs/html/classGroup-members.html +++ b/html/classGroup-members.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -131,30 +131,37 @@ getClass() const overrideGroupvirtual getElements() constGroup getFillColor() constSVGElement - getOutlineColor() constSVGElement - getOutlineThickness() constSVGElement - getParent() constSVGElement - getPosition() constSVGElement - getTransforms() constSVGElement - Group() (defined in Group)Group - Group(Attributes attributes) (defined in Group)Group + getGradient() constSVGElement + getMaxBound() constSVGElementvirtual + getMinBound() constSVGElementvirtual + getOutlineColor() constSVGElement + getOutlineThickness() constSVGElement + getParent() constSVGElement + getPosition() constSVGElement + getTransforms() constSVGElement + gradientSVGElementprivate + Group()Group + Group(Attributes attributes)Group parentSVGElementprotected positionSVGElementprivate printData() const overrideGroupvirtual setFillColor(const mColor &color)SVGElement - setOutlineColor(const mColor &color)SVGElement - setOutlineThickness(float thickness)SVGElement - setParent(SVGElement *parent)SVGElement - setPosition(float x, float y)SVGElement - setPosition(const Vector2Df &position)SVGElement - setTransforms(const std::vector< std::string > &transforms)SVGElement - shapesGroupprivate - strokeSVGElementprivate - stroke_widthSVGElementprivate - SVGElement()SVGElementprotected - transformsSVGElementprivate - ~Group() (defined in Group)Group - ~SVGElement()=defaultSVGElementvirtual + setGradient(Gradient *gradient)SVGElement + setOutlineColor(const mColor &color)SVGElement + setOutlineThickness(float thickness)SVGElement + setParent(SVGElement *parent)SVGElement + setPosition(float x, float y)SVGElement + setPosition(const Vector2Df &position)SVGElement + setTransforms(const std::vector< std::string > &transforms)SVGElement + shapesGroupprivate + strokeSVGElementprivate + stroke_widthSVGElementprivate + SVGElement()SVGElementprotected + SVGElement(const mColor &fill, const mColor &stroke, float stroke_width)SVGElementprotected + SVGElement(const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)SVGElementprotected + transformsSVGElementprivate + ~Group()Group + ~SVGElement()=defaultSVGElementvirtual
    + +

    Constructs a Group object.

    +
    Parameters
    + + +
    attributesThe attributes of the group.
    +
    +
    + +

    Definition at line 5 of file Group.cpp.

    +
    +
    Attributes attributes
    Attributes of the group.
    Definition: Group.hpp:78
    +
    +
    + +

    Member Function Documentation

    ◆ addElement()

    @@ -274,8 +332,8 @@

    18  shapes.push_back(shape);
    19  shape->setParent(this);
    20 }
    -
    std::vector< SVGElement * > shapes
    Vector of shapes in the group.
    Definition: Group.hpp:66
    -
    void setParent(SVGElement *parent)
    Parent pointer setter to make the composite design pattern.
    Definition: SVGElement.cpp:55
    +
    std::vector< SVGElement * > shapes
    Vector of shapes in the group.
    Definition: Group.hpp:77
    +
    void setParent(SVGElement *parent)
    Parent pointer setter to make the composite design pattern.
    Definition: SVGElement.cpp:75
    @@ -300,7 +358,6 @@

    Definition at line 15 of file Group.cpp.

    15 { return attributes; }
    -
    Attributes attributes
    Attributes of the group.
    Definition: Group.hpp:67
    diff --git a/docs/html/classGroup.js b/html/classGroup.js similarity index 100% rename from docs/html/classGroup.js rename to html/classGroup.js diff --git a/html/classGroup__coll__graph.map b/html/classGroup__coll__graph.map new file mode 100644 index 00000000..67325bb9 --- /dev/null +++ b/html/classGroup__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classGroup__coll__graph.md5 b/html/classGroup__coll__graph.md5 new file mode 100644 index 00000000..9b2a2b19 --- /dev/null +++ b/html/classGroup__coll__graph.md5 @@ -0,0 +1 @@ +914a2f4a9e5fd43cfb26372d62a29825 \ No newline at end of file diff --git a/html/classGroup__coll__graph.svg b/html/classGroup__coll__graph.svg new file mode 100644 index 00000000..d9c645d6 --- /dev/null +++ b/html/classGroup__coll__graph.svg @@ -0,0 +1,107 @@ + + + + + + +Group + + +Node1 + + +Group + + + + + +Node2 + + +SVGElement + + + + + +Node2->Node1 + + + + + +Node2->Node2 + + + parent + + + +Node3 + + +Vector2D< float > + + + + + +Node3->Node2 + + + position + + + +Node4 + + +Gradient + + + + + +Node4->Node2 + + + gradient + + + +Node5 + + +mColor + + + + + +Node5->Node2 + + + fill +stroke + + + +Node5->Node5 + + + Black +Blue +Cyan +Green +Magenta +Red +Transparent +White +Yellow + + + diff --git a/docs/html/classGroup__inherit__graph.map b/html/classGroup__inherit__graph.map similarity index 100% rename from docs/html/classGroup__inherit__graph.map rename to html/classGroup__inherit__graph.map diff --git a/docs/html/classGroup__inherit__graph.md5 b/html/classGroup__inherit__graph.md5 similarity index 100% rename from docs/html/classGroup__inherit__graph.md5 rename to html/classGroup__inherit__graph.md5 diff --git a/docs/html/classGroup__inherit__graph.svg b/html/classGroup__inherit__graph.svg similarity index 100% rename from docs/html/classGroup__inherit__graph.svg rename to html/classGroup__inherit__graph.svg diff --git a/docs/html/classSVGElement-members.html b/html/classLine-members.html similarity index 76% rename from docs/html/classSVGElement-members.html rename to html/classLine-members.html index 33250df6..ef2cc485 100644 --- a/docs/html/classSVGElement-members.html +++ b/html/classLine-members.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -98,7 +98,7 @@
    @@ -118,25 +118,35 @@
    -
    SVGElement Member List
    +
    Line Member List
    -

    This is the complete list of members for SVGElement, including all inherited members.

    +

    This is the complete list of members for Line, including all inherited members.

    - - + + + + + + + + + + - + + + @@ -146,6 +156,8 @@ + +
    addElement(SVGElement *element)SVGElementvirtual
    fillSVGElementprivate
    getClass() const =0SVGElementpure virtual
    directionLineprivate
    fillSVGElementprivate
    getClass() const overrideLinevirtual
    getDirection() constLine
    getFillColor() constSVGElement
    getGradient() constSVGElement
    getLength() constLine
    getMaxBound() constSVGElementvirtual
    getMinBound() constSVGElementvirtual
    getOutlineColor() constSVGElement
    getOutlineThickness() constSVGElement
    getParent() constSVGElement
    getPosition() constSVGElement
    getTransforms() constSVGElement
    gradientSVGElementprivate
    Line(const Vector2Df &point1, const Vector2Df &point2, mColor stroke, float stroke_width)Line
    parentSVGElementprotected
    positionSVGElementprivate
    printData() constSVGElementvirtual
    setFillColor(const mColor &color)SVGElement
    setDirection(const Vector2Df &direction)Line
    setFillColor(const mColor &color)SVGElement
    setGradient(Gradient *gradient)SVGElement
    setOutlineColor(const mColor &color)SVGElement
    setOutlineThickness(float thickness)SVGElement
    setParent(SVGElement *parent)SVGElement
    strokeSVGElementprivate
    stroke_widthSVGElementprivate
    SVGElement()SVGElementprotected
    SVGElement(const mColor &fill, const mColor &stroke, float stroke_width)SVGElementprotected
    SVGElement(const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)SVGElementprotected
    transformsSVGElementprivate
    ~SVGElement()=defaultSVGElementvirtual
    diff --git a/docs/html/classLine.html b/html/classLine.html similarity index 80% rename from docs/html/classLine.html rename to html/classLine.html index db9f891d..55a3f882 100644 --- a/docs/html/classLine.html +++ b/html/classLine.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -138,7 +138,8 @@
    Collaboration diagram for Line:
    -
    +
    +
    [legend]
    + + + + + + @@ -205,6 +212,12 @@ + + + + + + @@ -222,6 +235,12 @@ + + + + + + @@ -284,17 +303,13 @@

    Definition at line 5 of file Line.cpp.

    -
    7  : direction(point2) {
    -
    8  setPosition(point1);
    - - -
    11 }
    +
    +
    8  direction(point2) {}
    Vector2Df direction
    Direction of the line.
    Definition: Line.hpp:14
    -
    void setPosition(float x, float y)
    Sets the position of the shape.
    Definition: SVGElement.cpp:22
    -
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:171
    -
    void setOutlineThickness(float thickness)
    Sets the outline thickness of the shape.
    Definition: SVGElement.cpp:16
    -
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:170
    -
    void setOutlineColor(const mColor &color)
    Sets the outline color of the shape.
    Definition: SVGElement.cpp:12
    +
    float stroke_width
    Thickness of the shape's outline.
    Definition: SVGElement.hpp:224
    +
    mColor stroke
    Outline color.
    Definition: SVGElement.hpp:223
    +
    SVGElement()
    Constructs a Shape object.
    Definition: SVGElement.cpp:5
    +
    static const mColor Transparent
    Transparent (black) predefined color.
    Definition: Color.hpp:58
    @@ -327,8 +342,8 @@

    SVGElement.

    -

    Definition at line 13 of file Line.cpp.

    -
    13 { return "Line"; }
    +

    Definition at line 10 of file Line.cpp.

    +
    10 { return "Line"; }
    @@ -350,8 +365,8 @@

    Returns
    The direction of the line.
    -

    Definition at line 19 of file Line.cpp.

    -
    19 { return direction; }
    +

    Definition at line 16 of file Line.cpp.

    +
    16 { return direction; }
    @@ -373,10 +388,10 @@

    Returns
    The length of the line.
    -

    Definition at line 21 of file Line.cpp.

    -
    21  {
    -
    22  return std::sqrt(std::pow(direction.x, 2) + std::pow(direction.y, 2));
    -
    23 }
    +

    Definition at line 18 of file Line.cpp.

    +
    18  {
    +
    19  return std::sqrt(direction.x * direction.x + direction.y * direction.y);
    +
    20 }
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    @@ -406,10 +421,10 @@

    Definition at line 15 of file Line.cpp.

    -
    15  {
    -
    16  this->direction = direction;
    -
    17 }
    +

    Definition at line 12 of file Line.cpp.

    +
    12  {
    +
    13  this->direction = direction;
    +
    14 }

    diff --git a/docs/html/classLine.js b/html/classLine.js similarity index 100% rename from docs/html/classLine.js rename to html/classLine.js diff --git a/html/classLine__coll__graph.map b/html/classLine__coll__graph.map new file mode 100644 index 00000000..1308e351 --- /dev/null +++ b/html/classLine__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classLine__coll__graph.md5 b/html/classLine__coll__graph.md5 new file mode 100644 index 00000000..9eb0bf2f --- /dev/null +++ b/html/classLine__coll__graph.md5 @@ -0,0 +1 @@ +049a901dd7e5e6b3958a3eac7f7acc76 \ No newline at end of file diff --git a/docs/html/classLine__coll__graph.png b/html/classLine__coll__graph.png similarity index 100% rename from docs/html/classLine__coll__graph.png rename to html/classLine__coll__graph.png diff --git a/html/classLine__coll__graph.svg b/html/classLine__coll__graph.svg new file mode 100644 index 00000000..c88bb0e5 --- /dev/null +++ b/html/classLine__coll__graph.svg @@ -0,0 +1,114 @@ + + + + + + +Line + + +Node1 + + +Line + + + + + +Node2 + + +SVGElement + + + + + +Node2->Node1 + + + + + +Node2->Node2 + + + parent + + + +Node3 + + +Vector2D< float > + + + + + +Node3->Node1 + + + direction + + + +Node3->Node2 + + + position + + + +Node4 + + +Gradient + + + + + +Node4->Node2 + + + gradient + + + +Node5 + + +mColor + + + + + +Node5->Node2 + + + fill +stroke + + + +Node5->Node5 + + + Black +Blue +Cyan +Green +Magenta +Red +Transparent +White +Yellow + + + diff --git a/docs/html/classLine__inherit__graph.map b/html/classLine__inherit__graph.map similarity index 100% rename from docs/html/classLine__inherit__graph.map rename to html/classLine__inherit__graph.map diff --git a/docs/html/classLine__inherit__graph.md5 b/html/classLine__inherit__graph.md5 similarity index 100% rename from docs/html/classLine__inherit__graph.md5 rename to html/classLine__inherit__graph.md5 diff --git a/docs/html/classLine__inherit__graph.png b/html/classLine__inherit__graph.png similarity index 100% rename from docs/html/classLine__inherit__graph.png rename to html/classLine__inherit__graph.png diff --git a/docs/html/classLine__inherit__graph.svg b/html/classLine__inherit__graph.svg similarity index 100% rename from docs/html/classLine__inherit__graph.svg rename to html/classLine__inherit__graph.svg diff --git a/html/classLinearGradient-members.html b/html/classLinearGradient-members.html new file mode 100644 index 00000000..a58fbf57 --- /dev/null +++ b/html/classLinearGradient-members.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +svg-reader: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    @@ -190,6 +191,12 @@

    Vector2Df getPosition () const
     Get the current position of the shape. More...
     
    virtual Vector2Df getMinBound () const
     Gets the minimum bound of the shape. More...
     
    virtual Vector2Df getMaxBound () const
     Gets the maximum bound of the shape. More...
     
    virtual void printData () const
     Prints the data of the shape. More...
     
    SVGElementgetParent () const
     Parent pointer getter. More...
     
    void setGradient (Gradient *gradient)
     Sets the gradient of the shape. More...
     
    GradientgetGradient () const
     Gets the gradient of the shape. More...
     
    virtual void addElement (SVGElement *element)
     Adds a shape to the composite group. More...
     
     SVGElement ()
     Constructs a Shape object. More...
     
     SVGElement (const mColor &fill, const mColor &stroke, float stroke_width)
     Constructs a Shape object. More...
     
     SVGElement (const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)
     Constructs a Shape object. More...
     
    - Protected Attributes inherited from SVGElement
    SVGElementparent
    + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    LinearGradient Member List
    +
    +
    + +

    This is the complete list of members for LinearGradient, including all inherited members.

    + + + + + + + + + + + + + + + + +
    addStop(Stop stop)Gradient
    getClass() const overrideLinearGradientvirtual
    getPoints() constGradient
    getStops() constGradient
    getTransforms() constGradient
    getUnits() constGradient
    Gradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)Gradient
    LinearGradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)LinearGradient
    pointsGradientprivate
    setTransforms(std::vector< std::string > transforms)Gradient
    setUnits(std::string units)Gradient
    stopsGradientprivate
    transformsGradientprivate
    unitsGradientprivate
    ~Gradient()=defaultGradientvirtual
    +
    + + + \ No newline at end of file diff --git a/html/classLinearGradient.html b/html/classLinearGradient.html new file mode 100644 index 00000000..8873d699 --- /dev/null +++ b/html/classLinearGradient.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + +svg-reader: LinearGradient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    LinearGradient Class Reference
    +
    +
    + +

    A class that represents a linear gradient. + More...

    + +

    #include <LinearGradient.hpp>

    +
    +Inheritance diagram for LinearGradient:
    +
    +
    +
    +
    [legend]
    +
    +Collaboration diagram for LinearGradient:
    +
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     LinearGradient (std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
     Constructs a LinearGradient object. More...
     
    std::string getClass () const override
     Gets the type of the gradient. More...
     
    - Public Member Functions inherited from Gradient
     Gradient (std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
     Constructs a Gradient object. More...
     
    +virtual ~Gradient ()=default
     Destructs a Gradient object.
     
    std::vector< StopgetStops () const
     Gets the stops of the gradient. More...
     
    std::pair< Vector2Df, Vector2DfgetPoints () const
     Gets the start and end points of the gradient. More...
     
    void setUnits (std::string units)
     Gets the units of the gradient. More...
     
    std::string getUnits () const
     Gets the units of the gradient. More...
     
    void setTransforms (std::vector< std::string > transforms)
     Gets the transforms of the gradient. More...
     
    std::vector< std::string > getTransforms () const
     Gets the transforms of the gradient. More...
     
    void addStop (Stop stop)
     Adds a stop to the gradient. More...
     
    +

    Detailed Description

    +

    A class that represents a linear gradient.

    +

    The LinearGradient class is derived from the Gradient class and represents a linear gradient. It contains a vector of Stop objects that represent the the stops of the gradient. It also contains a pair of Vector2D objects that represent the start and end points of the gradient.

    + +

    Definition at line 14 of file LinearGradient.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ LinearGradient()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    LinearGradient::LinearGradient (std::vector< Stopstops,
    std::pair< Vector2Df, Vector2Dfpoints,
    std::string units 
    )
    +
    + +

    Constructs a LinearGradient object.

    +
    Parameters
    + + + + +
    stopsThe stops of the gradient.
    pointsThe start and end points of the gradient.
    unitsThe units of the gradient.
    +
    +
    + +

    Definition at line 3 of file LinearGradient.cpp.

    +
    6  : Gradient(stops, points, units) {}
    +
    std::string units
    Units of the gradient.
    Definition: Gradient.hpp:95
    +
    std::vector< Stop > stops
    Stops of the gradient.
    Definition: Gradient.hpp:92
    +
    std::pair< Vector2Df, Vector2Df > points
    Start and end points of the gradient.
    Definition: Gradient.hpp:94
    +
    Gradient(std::vector< Stop > stops, std::pair< Vector2Df, Vector2Df > points, std::string units)
    Constructs a Gradient object.
    Definition: Gradient.cpp:3
    +
    +
    +
    +

    Member Function Documentation

    + +

    ◆ getClass()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string LinearGradient::getClass () const
    +
    +overridevirtual
    +
    + +

    Gets the type of the gradient.

    +
    Returns
    The string "LinearGradient".
    +
    Note
    This function is used for determining the type of the gradient.
    + +

    Implements Gradient.

    + +

    Definition at line 8 of file LinearGradient.cpp.

    +
    8 { return "LinearGradient"; }
    +
    +
    +
    +
    The documentation for this class was generated from the following files: +
    +
    + + + \ No newline at end of file diff --git a/html/classLinearGradient.js b/html/classLinearGradient.js new file mode 100644 index 00000000..97b6bfed --- /dev/null +++ b/html/classLinearGradient.js @@ -0,0 +1,5 @@ +var classLinearGradient = +[ + [ "LinearGradient", "classLinearGradient.html#aaa0260244d818cd9d1180cb2697cc83b", null ], + [ "getClass", "classLinearGradient.html#aa434164a18fa29e778cdb7fc96770b9a", null ] +]; \ No newline at end of file diff --git a/html/classLinearGradient__coll__graph.map b/html/classLinearGradient__coll__graph.map new file mode 100644 index 00000000..018334a4 --- /dev/null +++ b/html/classLinearGradient__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classLinearGradient__coll__graph.md5 b/html/classLinearGradient__coll__graph.md5 new file mode 100644 index 00000000..cf72ab77 --- /dev/null +++ b/html/classLinearGradient__coll__graph.md5 @@ -0,0 +1 @@ +94c464e4b9f1c18021246c93bb5b89e0 \ No newline at end of file diff --git a/html/classLinearGradient__coll__graph.svg b/html/classLinearGradient__coll__graph.svg new file mode 100644 index 00000000..e0af6f43 --- /dev/null +++ b/html/classLinearGradient__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +LinearGradient + + +Node1 + + +LinearGradient + + + + + +Node2 + + +Gradient + + + + + +Node2->Node1 + + + + + diff --git a/html/classLinearGradient__inherit__graph.map b/html/classLinearGradient__inherit__graph.map new file mode 100644 index 00000000..018334a4 --- /dev/null +++ b/html/classLinearGradient__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classLinearGradient__inherit__graph.md5 b/html/classLinearGradient__inherit__graph.md5 new file mode 100644 index 00000000..cf72ab77 --- /dev/null +++ b/html/classLinearGradient__inherit__graph.md5 @@ -0,0 +1 @@ +94c464e4b9f1c18021246c93bb5b89e0 \ No newline at end of file diff --git a/html/classLinearGradient__inherit__graph.svg b/html/classLinearGradient__inherit__graph.svg new file mode 100644 index 00000000..e0af6f43 --- /dev/null +++ b/html/classLinearGradient__inherit__graph.svg @@ -0,0 +1,36 @@ + + + + + + +LinearGradient + + +Node1 + + +LinearGradient + + + + + +Node2 + + +Gradient + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classParser-members.html b/html/classParser-members.html similarity index 59% rename from docs/html/classParser-members.html rename to html/classParser-members.html index 2af7b95b..052dbc6e 100644 --- a/docs/html/classParser-members.html +++ b/html/classParser-members.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -124,29 +124,37 @@

    This is the complete list of members for Parser, including all inherited members.

    - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + +
    getAttribute(xml_node<> *node, std::string name)Parserprivate
    getFloatAttribute(xml_node<> *node, std::string name)Parserprivate
    getAttribute(rapidxml::xml_node<> *node, std::string name)Parserprivate
    getFloatAttribute(rapidxml::xml_node<> *node, std::string name)Parserprivate
    GetGradients(rapidxml::xml_node<> *node)Parserprivate
    getGradientStops(rapidxml::xml_node<> *node)Parserprivate
    getInstance(const std::string &file_name)Parserstatic
    getRoot()Parser
    getTransformOrder(xml_node<> *node)Parserprivate
    instanceParserprivatestatic
    parseCircle(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseColor(xml_node<> *node, std::string color)Parserprivate
    parseElements(std::string file_name)Parserprivate
    parseEllipse(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseLine(xml_node<> *node, const mColor &stroke_color, float stroke_width)Parserprivate
    parsePath(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parsePathPoints(xml_node<> *node)Parserprivate
    parsePoints(xml_node<> *node)Parserprivate
    parsePolygon(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parsePolyline(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    getTransformOrder(rapidxml::xml_node<> *node)Parserprivate
    getViewBox() constParser
    getViewPort() constParser
    gradientsParserprivate
    instanceParserprivatestatic
    parseCircle(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseColor(rapidxml::xml_node<> *node, std::string color, std::string &id)Parserprivate
    parseElements(std::string file_name)Parserprivate
    parseEllipse(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseGradient(std::string id)Parserprivate
    parseLine(rapidxml::xml_node<> *node, const mColor &stroke_color, float stroke_width)Parserprivate
    parsePath(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parsePathPoints(rapidxml::xml_node<> *node)Parserprivate
    parsePoints(rapidxml::xml_node<> *node)Parserprivate
    parsePolygon(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parsePolyline(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    Parser(const Parser &)=deleteParser
    Parser(const std::string &file_name)Parserprivate
    parseRect(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseShape(xml_node<> *node)Parserprivate
    parseText(xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseRect(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    parseShape(rapidxml::xml_node<> *node)Parserprivate
    parseText(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)Parserprivate
    printShapesData()Parser
    rootParserprivate
    viewboxParserprivate
    viewportParserprivate
    ~Parser()Parser
    diff --git a/html/classParser.html b/html/classParser.html new file mode 100644 index 00000000..c0383c02 --- /dev/null +++ b/html/classParser.html @@ -0,0 +1,2082 @@ + + + + + + + + + + + + + + + + + + +svg-reader: Parser Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    svg-reader +  0.3 +
    +
    Parse and render SVG files, handle user interactions.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + + +
    + +

    To manipulate and parse an SVG file. + More...

    + +

    #include <Parser.hpp>

    +
    +Collaboration diagram for Parser:
    +
    +
    +
    +
    [legend]
    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    Parser (const Parser &)=delete
     Deleted copy constructor to enforce the singleton pattern.
     
    ~Parser ()
     Destructor for the Parser class.
     
    GroupgetRoot ()
     Gets the root of the tree of SVGElements. More...
     
    void printShapesData ()
     Prints the data of the shapes. More...
     
    std::pair< Vector2Df, Vector2DfgetViewBox () const
     Gets the viewbox of the SVG file. More...
     
    Vector2Df getViewPort () const
     Gets the viewport of the SVG file. More...
     
    + + + + +

    +Static Public Member Functions

    static ParsergetInstance (const std::string &file_name)
     Gets the singleton instance of the Parser class. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Private Member Functions

     Parser (const std::string &file_name)
     Construct a new Parser object. More...
     
    SVGElementparseElements (std::string file_name)
     Parses the SVG file and creates a tree of SVGElements. More...
     
    std::string getAttribute (rapidxml::xml_node<> *node, std::string name)
     Gets the attributes of a node. More...
     
    float getFloatAttribute (rapidxml::xml_node<> *node, std::string name)
     Gets the floating point attributes of a node. More...
     
    std::vector< StopgetGradientStops (rapidxml::xml_node<> *node)
     Gets the gradient stops of a node. More...
     
    void GetGradients (rapidxml::xml_node<> *node)
     Gets the gradients of a node. More...
     
    GradientparseGradient (std::string id)
     Gets the gradient of a node. More...
     
    mColor parseColor (rapidxml::xml_node<> *node, std::string color, std::string &id)
     Gets the color attributes of a node. More...
     
    std::vector< Vector2DfparsePoints (rapidxml::xml_node<> *node)
     Gets the points of the element. More...
     
    std::vector< PathPointparsePathPoints (rapidxml::xml_node<> *node)
     Gets the points of the path element. More...
     
    std::vector< std::string > getTransformOrder (rapidxml::xml_node<> *node)
     Gets the transform order of the element. More...
     
    LineparseLine (rapidxml::xml_node<> *node, const mColor &stroke_color, float stroke_width)
     Parses the line element. More...
     
    RectparseRect (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the rect element. More...
     
    class PlylineparsePolyline (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the polyline element. More...
     
    class PlygonparsePolygon (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the polygon element. More...
     
    CircleparseCircle (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the circle element. More...
     
    class EllparseEllipse (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the ellipse element. More...
     
    PathparsePath (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the path element. More...
     
    TextparseText (rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
     Parses the text element. More...
     
    SVGElementparseShape (rapidxml::xml_node<> *node)
     Parses the group of elements. More...
     
    + + + + + + + + + + + + +

    +Private Attributes

    +SVGElementroot
     The root of the SVG file.
     
    std::map< std::string, Gradient * > gradients
     
    +std::pair< Vector2Df, Vector2Dfviewbox
     The viewbox of the SVG file.
     
    +Vector2Df viewport
     The viewport of the SVG file.
     
    + + + + +

    +Static Private Attributes

    +static Parserinstance = nullptr
     The instance of the Parser.
     
    +

    Detailed Description

    +

    To manipulate and parse an SVG file.

    +

    The Parser class is a singleton class that is used to parse an SVG file and create a tree of SVGElements.

    + +

    Definition at line 24 of file Parser.hpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Parser()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Parser::Parser (const std::string & file_name)
    +
    +private
    +
    + +

    Construct a new Parser object.

    +
    Parameters
    + + +
    file_nameThe name of the file to be parsed.
    +
    +
    + +

    Definition at line 165 of file Parser.cpp.

    +
    165  {
    +
    166  root = parseElements(file_name);
    +
    167 }
    +
    SVGElement * root
    The root of the SVG file.
    Definition: Parser.hpp:276
    +
    SVGElement * parseElements(std::string file_name)
    Parses the SVG file and creates a tree of SVGElements.
    Definition: Parser.cpp:181
    +
    +
    +
    +

    Member Function Documentation

    + +

    ◆ getAttribute()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::string Parser::getAttribute (rapidxml::xml_node<> * node,
    std::string name 
    )
    +
    +private
    +
    + +

    Gets the attributes of a node.

    +
    Parameters
    + + + +
    nodeThe node to be parsed.
    nameThe name of tag to be parsed.
    +
    +
    +
    Returns
    The attributes of the node.
    + +

    Definition at line 296 of file Parser.cpp.

    +
    296  {
    +
    297  if (name == "text") return removeExtraSpaces(node->value());
    +
    298  std::string result;
    +
    299  if (node->first_attribute(name.c_str()) == NULL) {
    +
    300  if (name == "fill" || name == "stop-color")
    +
    301  result = "black";
    +
    302  else if (name == "stroke" || name == "transform" || name == "rotate" ||
    +
    303  name == "font-style")
    +
    304  result = "none";
    +
    305  else if (name == "text-anchor")
    +
    306  result = "start";
    +
    307  else if (name == "fill-rule")
    +
    308  result = "nonzero";
    +
    309  else if (name == "gradientUnits")
    +
    310  result = "objectBoundingBox";
    +
    311  } else {
    +
    312  result = node->first_attribute(name.c_str())->value();
    +
    313  }
    +
    314  return result;
    +
    315 }
    +
    +
    +
    + +

    ◆ getFloatAttribute()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    float Parser::getFloatAttribute (rapidxml::xml_node<> * node,
    std::string name 
    )
    +
    +private
    +
    + +

    Gets the floating point attributes of a node.

    +
    Parameters
    + + + +
    nodeThe node to be parsed.
    nameThe name of tag to be parsed.
    +
    +
    +
    Returns
    The floating point attributes of the node.
    + +

    Definition at line 317 of file Parser.cpp.

    +
    317  {
    +
    318  float result;
    +
    319  if (node->first_attribute(name.c_str()) == NULL) {
    +
    320  if (std::string(node->name()).find("Gradient") != std::string::npos) {
    +
    321  if (name == "x1" || name == "y1" || name == "fr")
    +
    322  result = 0;
    +
    323  else if (name == "cx" || name == "cy")
    +
    324  result = name == "cx" ? 0.5 * this->viewbox.second.x
    +
    325  : 0.5 * this->viewbox.second.y;
    +
    326  else if (name == "r") {
    +
    327  result = sqrt((pow(this->viewbox.second.x, 2) +
    +
    328  pow(this->viewbox.second.y, 2)) /
    +
    329  2) /
    +
    330  2;
    +
    331  } else if (name == "fx" || name == "fy")
    +
    332  result = name == "fx" ? getFloatAttribute(node, "cx")
    +
    333  : getFloatAttribute(node, "cy");
    +
    334  else
    +
    335  result = name == "x2" ? this->viewbox.second.x
    +
    336  : this->viewbox.second.y;
    +
    337  } else {
    +
    338  if (name == "stroke-width" || name == "stroke-opacity" ||
    +
    339  name == "fill-opacity" || name == "opacity" ||
    +
    340  name == "stop-opacity")
    +
    341  result = 1;
    +
    342  else
    +
    343  result = 0;
    +
    344  }
    +
    345  } else {
    +
    346  if (name == "width" || name == "height") {
    +
    347  std::string value = node->first_attribute(name.c_str())->value();
    +
    348  if (value.find("%") != std::string::npos) {
    +
    349  result = std::stof(value.substr(0, value.find("%"))) *
    +
    350  this->viewbox.second.x / 100;
    +
    351  } else if (value.find("pt") != std::string::npos) {
    +
    352  result = std::stof(value.substr(0, value.find("pt"))) * 1.33;
    +
    353  } else {
    +
    354  result = std::stof(value);
    +
    355  }
    +
    356  } else
    +
    357  result = std::stof(node->first_attribute(name.c_str())->value());
    +
    358  }
    +
    359  return result;
    +
    360 }
    +
    std::pair< Vector2Df, Vector2Df > viewbox
    The viewbox of the SVG file.
    Definition: Parser.hpp:280
    +
    float getFloatAttribute(rapidxml::xml_node<> *node, std::string name)
    Gets the floating point attributes of a node.
    Definition: Parser.cpp:317
    +
    +
    +
    + +

    ◆ GetGradients()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void Parser::GetGradients (rapidxml::xml_node<> * node)
    +
    +private
    +
    + +

    Gets the gradients of a node.

    +
    Parameters
    + + +
    nodeThe node to be parsed.
    +
    +
    + +

    Definition at line 428 of file Parser.cpp.

    +
    428  {
    +
    429  rapidxml::xml_node<> *gradient_node = node->first_node();
    +
    430  while (gradient_node) {
    +
    431  if (std::string(gradient_node->name()).find("Gradient") !=
    +
    432  std::string::npos) {
    +
    433  Gradient *gradient;
    +
    434  std::string id = getAttribute(gradient_node, "id");
    +
    435  std::string units = getAttribute(gradient_node, "gradientUnits");
    +
    436  std::vector< Stop > stops = getGradientStops(gradient_node);
    +
    437  std::string href = getAttribute(gradient_node, "xlink:href");
    +
    438  int pos = href.find("#");
    +
    439  if (pos != std::string::npos) {
    +
    440  href = href.substr(pos + 1);
    +
    441  }
    +
    442  if (std::string(gradient_node->name()).find("linear") !=
    +
    443  std::string::npos) {
    +
    444  float x1 = getFloatAttribute(gradient_node, "x1");
    +
    445  float y1 = getFloatAttribute(gradient_node, "y1");
    +
    446  float x2 = getFloatAttribute(gradient_node, "x2");
    +
    447  float y2 = getFloatAttribute(gradient_node, "y2");
    +
    448  std::pair< Vector2Df, Vector2Df > points = {{x1, y1}, {x2, y2}};
    +
    449  gradient = new LinearGradient(stops, points, units);
    +
    450  if (this->gradients.find(id) == this->gradients.end())
    +
    451  this->gradients[id] = gradient;
    +
    452  } else if (std::string(gradient_node->name()).find("radial") !=
    +
    453  std::string::npos) {
    +
    454  float cx = getFloatAttribute(gradient_node, "cx");
    +
    455  float cy = getFloatAttribute(gradient_node, "cy");
    +
    456  float fx = getFloatAttribute(gradient_node, "fx");
    +
    457  float fy = getFloatAttribute(gradient_node, "fy");
    +
    458  float r = getFloatAttribute(gradient_node, "r");
    +
    459  float fr = getFloatAttribute(gradient_node, "fr");
    +
    460  std::pair< Vector2Df, Vector2Df > points = {{cx, cy}, {fx, fy}};
    +
    461  Vector2Df radius(r, fr);
    +
    462  gradient = new RadialGradient(stops, points, radius, units);
    +
    463  if (this->gradients.find(id) == this->gradients.end())
    +
    464  this->gradients[id] = gradient;
    +
    465  }
    +
    466  if (href != "") {
    +
    467  for (auto stop : parseGradient(href)->getStops()) {
    +
    468  gradient->addStop(stop);
    +
    469  }
    +
    470  }
    +
    471  if (gradient != NULL)
    +
    472  gradient->setTransforms(getTransformOrder(gradient_node));
    +
    473  }
    +
    474  gradient_node = gradient_node->next_sibling();
    +
    475  }
    +
    476 }
    +
    A class that represents a gradient.
    Definition: Gradient.hpp:18
    +
    void addStop(Stop stop)
    Adds a stop to the gradient.
    Definition: Gradient.cpp:23
    +
    void setTransforms(std::vector< std::string > transforms)
    Gets the transforms of the gradient.
    Definition: Gradient.cpp:15
    +
    A class that represents a linear gradient.
    +
    std::string getAttribute(rapidxml::xml_node<> *node, std::string name)
    Gets the attributes of a node.
    Definition: Parser.cpp:296
    +
    std::map< std::string, Gradient * > gradients
    Definition: Parser.hpp:277
    +
    std::vector< std::string > getTransformOrder(rapidxml::xml_node<> *node)
    Gets the transform order of the element.
    Definition: Parser.cpp:637
    +
    Gradient * parseGradient(std::string id)
    Gets the gradient of a node.
    Definition: Parser.cpp:404
    +
    std::vector< Stop > getGradientStops(rapidxml::xml_node<> *node)
    Gets the gradient stops of a node.
    Definition: Parser.cpp:412
    +
    A class that represents a radial gradient.
    + +
    +
    +
    + +

    ◆ getGradientStops()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::vector< Stop > Parser::getGradientStops (rapidxml::xml_node<> * node)
    +
    +private
    +
    + +

    Gets the gradient stops of a node.

    +
    Parameters
    + + +
    nodeThe node to be parsed.
    +
    +
    +
    Returns
    The gradient stops of the node.
    + +

    Definition at line 412 of file Parser.cpp.

    +
    412  {
    +
    413  std::vector< Stop > stops;
    +
    414  rapidxml::xml_node<> *stop_node = node->first_node();
    +
    415  while (stop_node) {
    +
    416  if (std::string(stop_node->name()) == "stop") {
    +
    417  std::string id = "";
    +
    418  mColor color = parseColor(stop_node, "stop-color", id);
    +
    419  float offset = getFloatAttribute(stop_node, "offset");
    +
    420  if (offset > 1) offset /= 100;
    +
    421  stops.push_back(Stop(color, offset));
    +
    422  }
    +
    423  stop_node = stop_node->next_sibling();
    +
    424  }
    +
    425  return stops;
    +
    426 }
    +
    mColor parseColor(rapidxml::xml_node<> *node, std::string color, std::string &id)
    Gets the color attributes of a node.
    Definition: Parser.cpp:362
    +
    A class that represents a stop.
    Definition: Stop.hpp:11
    +
    Utility class for manipulating RGBA mColors.
    Definition: Color.hpp:11
    +
    +
    +
    + +

    ◆ getInstance()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Parser * Parser::getInstance (const std::string & file_name)
    +
    +static
    +
    + +

    Gets the singleton instance of the Parser class.

    +
    Parameters
    + + +
    file_nameThe name of the file to be parsed.
    +
    +
    +
    Returns
    The singleton instance of the Parser class.
    + +

    Definition at line 158 of file Parser.cpp.

    +
    158  {
    +
    159  if (instance == nullptr) {
    +
    160  instance = new Parser(file_name);
    +
    161  }
    +
    162  return instance;
    +
    163 }
    +
    Parser(const Parser &)=delete
    Deleted copy constructor to enforce the singleton pattern.
    +
    static Parser * instance
    The instance of the Parser.
    Definition: Parser.hpp:275
    +
    +
    +
    + +

    ◆ getRoot()

    + +
    +
    + + + + + + + +
    Group * Parser::getRoot ()
    +
    + +

    Gets the root of the tree of SVGElements.

    +
    Returns
    The root of the tree of SVGElements.
    + +

    Definition at line 169 of file Parser.cpp.

    +
    169 { return dynamic_cast< Group * >(root); }
    +
    A composite class that contains a vector of shape pointers (polymorphic).
    Definition: Group.hpp:19
    +
    +
    +
    + +

    ◆ getTransformOrder()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::vector< std::string > Parser::getTransformOrder (rapidxml::xml_node<> * node)
    +
    +private
    +
    + +

    Gets the transform order of the element.

    +
    Parameters
    + + +
    nodeThe node to be parsed.
    +
    +
    +
    Returns
    The transform order of the element
    + +

    Definition at line 637 of file Parser.cpp.

    +
    638  {
    +
    639  std::string transform_tag;
    +
    640  if (std::string(node->name()).find("Gradient") != std::string::npos)
    +
    641  transform_tag = getAttribute(node, "gradientTransform");
    +
    642  else
    +
    643  transform_tag = getAttribute(node, "transform");
    +
    644  std::vector< std::string > order;
    +
    645  std::stringstream ss(transform_tag);
    +
    646  std::string type;
    +
    647  while (ss >> type) {
    +
    648  if (type.find("translate") != std::string::npos ||
    +
    649  type.find("scale") != std::string::npos ||
    +
    650  type.find("rotate") != std::string::npos ||
    +
    651  type.find("matrix") != std::string::npos) {
    +
    652  while (type.find(")") == std::string::npos) {
    +
    653  std::string temp;
    +
    654  ss >> temp;
    +
    655  type += " " + temp;
    +
    656  }
    +
    657  std::string temp = type.substr(0, type.find("(") + 1);
    +
    658  temp.erase(std::remove(temp.begin(), temp.end(), ' '), temp.end());
    +
    659  type.erase(0, type.find("(") + 1);
    +
    660  type = temp + type;
    +
    661  order.push_back(type);
    +
    662  }
    +
    663  }
    +
    664  return order;
    +
    665 }
    +
    +
    +
    + +

    ◆ getViewBox()

    + +
    +
    + + + + + + + +
    std::pair< Vector2Df, Vector2Df > Parser::getViewBox () const
    +
    + +

    Gets the viewbox of the SVG file.

    +
    Returns
    The viewbox of the SVG file.
    + +

    Definition at line 830 of file Parser.cpp.

    +
    830 { return viewbox; }
    +
    +
    +
    + +

    ◆ getViewPort()

    + +
    +
    + + + + + + + +
    Vector2Df Parser::getViewPort () const
    +
    + +

    Gets the viewport of the SVG file.

    +
    Returns
    The viewport of the SVG file.
    + +

    Definition at line 832 of file Parser.cpp.

    +
    832 { return viewport; }
    +
    Vector2Df viewport
    The viewport of the SVG file.
    Definition: Parser.hpp:281
    +
    +
    +
    + +

    ◆ parseCircle()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Circle * Parser::parseCircle (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the circle element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The circle element
    + +

    Definition at line 732 of file Parser.cpp.

    +
    734  {
    +
    735  float cx = getFloatAttribute(node, "cx");
    +
    736  float cy = getFloatAttribute(node, "cy");
    +
    737  float radius = getFloatAttribute(node, "r");
    +
    738  Circle *shape = new Circle(radius, Vector2Df(cx, cy), fill_color,
    +
    739  stroke_color, stroke_width);
    +
    740  return shape;
    +
    741 }
    +
    Represents a circle in 2D space.
    Definition: Circle.hpp:13
    +
    +
    +
    + +

    ◆ parseColor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    mColor Parser::parseColor (rapidxml::xml_node<> * node,
    std::string color,
    std::string & id 
    )
    +
    +private
    +
    + +

    Gets the color attributes of a node.

    +
    Parameters
    + + + + +
    nodeThe node to be parsed.
    colorThe name of the color tag to be parsed.
    idThe id to check if the color is a reference.
    +
    +
    +
    Returns
    The color attributes of the node.
    + +

    Definition at line 362 of file Parser.cpp.

    +
    363  {
    +
    364  std::string color = getAttribute(node, name);
    +
    365  color.erase(std::remove(color.begin(), color.end(), ' '), color.end());
    +
    366  if (color.find("url") == std::string::npos) {
    +
    367  for (auto &c : color) c = tolower(c);
    +
    368  }
    +
    369  if (color == "none")
    +
    370  return mColor::Transparent;
    +
    371  else {
    +
    372  mColor result;
    +
    373  if (color.find("url") != std::string::npos) {
    +
    374  if (color.find("'") != std::string::npos) {
    +
    375  id = color.substr(color.find("'") + 1);
    +
    376  id.erase(id.find("'"));
    +
    377  id.erase(id.find("#"), 1);
    +
    378  } else {
    +
    379  id = color.substr(color.find("#") + 1);
    +
    380  id.erase(id.find(")"));
    +
    381  }
    +
    382  result = mColor::Transparent;
    +
    383  } else if (color.find("#") != std::string::npos) {
    +
    384  result = getHexColor(color);
    +
    385  } else if (color.find("rgb") != std::string::npos) {
    +
    386  result = getRgbColor(color);
    +
    387  } else {
    +
    388  auto color_code = color_map.find(color);
    +
    389  if (color_code == color_map.end()) {
    +
    390  std::cout << "Color " << color << " not found" << std::endl;
    +
    391  exit(-1);
    +
    392  }
    +
    393  result = color_code->second;
    +
    394  }
    +
    395  if (name == "stop-color")
    +
    396  result.a = result.a * getFloatAttribute(node, "stop-opacity");
    +
    397  else
    +
    398  result.a = result.a * getFloatAttribute(node, name + "-opacity") *
    +
    399  getFloatAttribute(node, "opacity");
    +
    400  return result;
    +
    401  }
    +
    402 }
    +
    int a
    Alpha (opacity) component.
    Definition: Color.hpp:63
    +
    static const mColor Transparent
    Transparent (black) predefined color.
    Definition: Color.hpp:58
    +
    +
    +
    + +

    ◆ parseElements()

    + +
    +
    + + + + + +
    + + + + + + + + +
    SVGElement * Parser::parseElements (std::string file_name)
    +
    +private
    +
    + +

    Parses the SVG file and creates a tree of SVGElements.

    +
    Parameters
    + + +
    file_nameThe name of the file to be parsed.
    +
    +
    +
    Returns
    The root of the tree of SVGElements.
    + +

    Definition at line 181 of file Parser.cpp.

    +
    181  {
    +
    182  rapidxml::xml_document<> doc;
    +
    183  std::ifstream file(file_name);
    +
    184  std::vector< char > buffer((std::istreambuf_iterator< char >(file)),
    +
    185  std::istreambuf_iterator< char >());
    +
    186  buffer.push_back('\0');
    +
    187  doc.parse< 0 >(&buffer[0]);
    +
    188 
    +
    189  rapidxml::xml_node<> *svg = doc.first_node();
    +
    190  viewport.x = getFloatAttribute(svg, "width");
    +
    191  viewport.y = getFloatAttribute(svg, "height");
    +
    192  std::string viewbox = getAttribute(svg, "viewBox");
    +
    193  if (viewbox != "") {
    +
    194  std::stringstream ss(viewbox);
    +
    195  ss >> this->viewbox.first.x >> this->viewbox.first.y >>
    +
    196  this->viewbox.second.x >> this->viewbox.second.y;
    +
    197  }
    +
    198  rapidxml::xml_node<> *node = svg->first_node();
    +
    199  rapidxml::xml_node<> *prev = NULL;
    +
    200 
    +
    201  SVGElement *root = new Group();
    +
    202  SVGElement *current = root;
    +
    203 
    +
    204  while (node) {
    +
    205  if (std::string(node->name()) == "defs") {
    +
    206  GetGradients(node);
    +
    207  prev = node;
    +
    208  node = node->next_sibling();
    +
    209  } else if (std::string(node->name()) == "g") {
    +
    210  Group *group = dynamic_cast< Group * >(current);
    +
    211  for (auto group_attribute : group->getAttributes()) {
    +
    212  bool found = false;
    +
    213  for (auto attribute = node->first_attribute(); attribute;
    +
    214  attribute = attribute->next_attribute()) {
    +
    215  if (std::string(attribute->name()) ==
    +
    216  group_attribute.first) {
    +
    217  if (group_attribute.first == "opacity") {
    +
    218  std::string opacity = std::to_string(
    +
    219  std::stof(attribute->value()) *
    +
    220  std::stof(group_attribute.second));
    +
    221  char *value = doc.allocate_string(opacity.c_str());
    +
    222  attribute->value(value);
    +
    223  }
    +
    224  found = true;
    +
    225  break;
    +
    226  }
    +
    227  }
    +
    228  if (!found && group_attribute.first != "transform") {
    +
    229  char *name =
    +
    230  doc.allocate_string(group_attribute.first.c_str());
    +
    231  char *value =
    +
    232  doc.allocate_string(group_attribute.second.c_str());
    +
    233  rapidxml::xml_attribute<> *new_attribute =
    +
    234  doc.allocate_attribute(name, value);
    +
    235  node->append_attribute(new_attribute);
    +
    236  }
    +
    237  }
    +
    238  Group *new_group = new Group(xmlToString(node->first_attribute()));
    +
    239  new_group->setTransforms(getTransformOrder(node));
    +
    240  current->addElement(new_group);
    +
    241  current = new_group;
    +
    242  prev = node;
    +
    243  node = node->first_node();
    +
    244  } else {
    +
    245  Group *group = dynamic_cast< Group * >(current);
    +
    246  for (auto group_attribute : group->getAttributes()) {
    +
    247  bool found = false;
    +
    248  for (auto attribute = node->first_attribute(); attribute;
    +
    249  attribute = attribute->next_attribute()) {
    +
    250  if (std::string(attribute->name()) ==
    +
    251  group_attribute.first) {
    +
    252  if (group_attribute.first == "opacity") {
    +
    253  std::string opacity = std::to_string(
    +
    254  std::stof(attribute->value()) *
    +
    255  std::stof(group_attribute.second));
    +
    256  char *value = doc.allocate_string(opacity.c_str());
    +
    257  attribute->value(value);
    +
    258  }
    +
    259  found = true;
    +
    260  break;
    +
    261  }
    +
    262  }
    +
    263  if (!found && group_attribute.first != "transform") {
    +
    264  char *name =
    +
    265  doc.allocate_string(group_attribute.first.c_str());
    +
    266  char *value =
    +
    267  doc.allocate_string(group_attribute.second.c_str());
    +
    268  rapidxml::xml_attribute<> *new_attribute =
    +
    269  doc.allocate_attribute(name, value);
    +
    270  node->append_attribute(new_attribute);
    +
    271  }
    +
    272  }
    +
    273  SVGElement *shape = parseShape(node);
    +
    274  if (shape != NULL) current->addElement(shape);
    +
    275  prev = node;
    +
    276  node = node->next_sibling();
    +
    277  }
    +
    278  if (node == NULL && current != root) {
    +
    279  while (prev->parent()->next_sibling() == NULL) {
    +
    280  current = current->getParent();
    +
    281  prev = prev->parent();
    +
    282  if (prev == svg) {
    +
    283  break;
    +
    284  }
    +
    285  }
    +
    286  if (prev == svg) {
    +
    287  break;
    +
    288  }
    +
    289  current = current->getParent();
    +
    290  node = prev->parent()->next_sibling();
    +
    291  }
    +
    292  }
    +
    293  return root;
    +
    294 }
    +
    Attributes getAttributes() const
    Gets the attributes of the shape.
    Definition: Group.cpp:15
    +
    SVGElement * parseShape(rapidxml::xml_node<> *node)
    Parses the group of elements.
    Definition: Parser.cpp:667
    +
    void GetGradients(rapidxml::xml_node<> *node)
    Gets the gradients of a node.
    Definition: Parser.cpp:428
    +
    Represents an element in an SVG file.
    Definition: SVGElement.hpp:18
    +
    void setTransforms(const std::vector< std::string > &transforms)
    Sets the transformations of the shape.
    Definition: SVGElement.cpp:67
    +
    SVGElement * getParent() const
    Parent pointer getter.
    Definition: SVGElement.cpp:77
    +
    SVGElement * parent
    Pointer to the group that contains the shape.
    Definition: SVGElement.hpp:219
    +
    virtual void addElement(SVGElement *element)
    Adds a shape to the composite group.
    Definition: SVGElement.cpp:83
    +
    T x
    X coordinate of the vector.
    Definition: Vector2D.hpp:45
    +
    T y
    Y coordinate of the vector.
    Definition: Vector2D.hpp:46
    +
    +
    +
    + +

    ◆ parseEllipse()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Ell * Parser::parseEllipse (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the ellipse element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The ellipse element
    + +

    Definition at line 743 of file Parser.cpp.

    +
    744  {
    +
    745  float radius_x = getFloatAttribute(node, "rx");
    +
    746  float radius_y = getFloatAttribute(node, "ry");
    +
    747  float cx = getFloatAttribute(node, "cx");
    +
    748  float cy = getFloatAttribute(node, "cy");
    +
    749  Ell *shape = new Ell(Vector2Df(radius_x, radius_y), Vector2Df(cx, cy),
    +
    750  fill_color, stroke_color, stroke_width);
    +
    751  return shape;
    +
    752 }
    +
    Represents an ellipse in 2D space.
    Definition: Ellipse.hpp:12
    +
    +
    +
    + +

    ◆ parseGradient()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Gradient * Parser::parseGradient (std::string id)
    +
    +private
    +
    + +

    Gets the gradient of a node.

    +
    Parameters
    + + +
    idThe id of the gradient to be parsed.
    +
    +
    +
    Returns
    The gradient of the node.
    + +

    Definition at line 404 of file Parser.cpp.

    +
    404  {
    +
    405  if (gradients.find(id) == gradients.end()) {
    +
    406  std::cout << "Gradient " << id << " not found" << std::endl;
    +
    407  exit(-1);
    +
    408  }
    +
    409  return gradients.at(id);
    +
    410 }
    +
    +
    +
    + +

    ◆ parseLine()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Line * Parser::parseLine (rapidxml::xml_node<> * node,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the line element.

    +
    Parameters
    + + + + +
    nodeThe node to be parsed.
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The line element
    + +

    Definition at line 710 of file Parser.cpp.

    +
    711  {
    +
    712  Line *shape = new Line(
    +
    713  Vector2Df(getFloatAttribute(node, "x1"), getFloatAttribute(node, "y1")),
    +
    714  Vector2Df(getFloatAttribute(node, "x2"), getFloatAttribute(node, "y2")),
    +
    715  stroke_color, stroke_width);
    +
    716  return shape;
    +
    717 }
    +
    Represents a line in 2D space.
    Definition: Line.hpp:12
    +
    +
    +
    + +

    ◆ parsePath()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Path * Parser::parsePath (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the path element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The path element
    + +

    Definition at line 807 of file Parser.cpp.

    +
    808  {
    +
    809  Path *shape = new Path(fill_color, stroke_color, stroke_width);
    +
    810  std::vector< PathPoint > points = parsePathPoints(node);
    +
    811  for (auto point : points) {
    +
    812  shape->addPoint(point);
    +
    813  }
    +
    814  std::string fill_rule = getAttribute(node, "fill-rule");
    +
    815  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
    +
    816  fill_rule.end());
    +
    817  shape->setFillRule(fill_rule);
    +
    818  return shape;
    +
    819 }
    +
    std::vector< PathPoint > parsePathPoints(rapidxml::xml_node<> *node)
    Gets the points of the path element.
    Definition: Parser.cpp:494
    +
    Represents a path element in 2D space.
    Definition: Path.hpp:28
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the path.
    Definition: Path.cpp:12
    +
    void addPoint(PathPoint point)
    Adds a point to the path.
    Definition: Path.cpp:8
    +
    +
    +
    + +

    ◆ parsePathPoints()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::vector< PathPoint > Parser::parsePathPoints (rapidxml::xml_node<> * node)
    +
    +private
    +
    + +

    Gets the points of the path element.

    +
    Parameters
    + + +
    nodeThe node to be parsed.
    +
    +
    +
    Returns
    The points of the path element
    + +

    Definition at line 494 of file Parser.cpp.

    +
    494  {
    +
    495  std::vector< PathPoint > points;
    +
    496  std::string path_string = getAttribute(node, "d");
    +
    497 
    +
    498  formatSvgPathString(path_string);
    +
    499 
    +
    500  std::stringstream ss(path_string);
    +
    501  std::string element;
    +
    502  PathPoint pPoint{{0, 0}, 'M'};
    +
    503  while (ss >> element) {
    +
    504  if (std::isalpha(element[0])) {
    +
    505  pPoint.tc = element[0];
    +
    506  if (tolower(pPoint.tc) == 'm' || tolower(pPoint.tc) == 'l' ||
    +
    507  tolower(pPoint.tc) == 'c' || tolower(pPoint.tc) == 's' ||
    +
    508  tolower(pPoint.tc) == 'q' || tolower(pPoint.tc) == 't')
    +
    509  ss >> pPoint.point.x >> pPoint.point.y;
    +
    510  else if (tolower(pPoint.tc) == 'h') {
    +
    511  ss >> pPoint.point.x;
    +
    512  pPoint.point.y = 0;
    +
    513  } else if (tolower(pPoint.tc) == 'v') {
    +
    514  ss >> pPoint.point.y;
    +
    515  pPoint.point.x = 0;
    +
    516  } else if (tolower(pPoint.tc) == 'a') {
    +
    517  ss >> pPoint.radius.x >> pPoint.radius.y;
    +
    518  ss >> pPoint.x_axis_rotation;
    +
    519  ss >> pPoint.large_arc_flag >> pPoint.sweep_flag;
    +
    520  ss >> pPoint.point.x >> pPoint.point.y;
    +
    521  }
    +
    522  } else {
    +
    523  if (tolower(pPoint.tc) == 'm' || tolower(pPoint.tc) == 'l' ||
    +
    524  tolower(pPoint.tc) == 'c' || tolower(pPoint.tc) == 's' ||
    +
    525  tolower(pPoint.tc) == 'q' || tolower(pPoint.tc) == 't') {
    +
    526  if (tolower(pPoint.tc) == 'm') pPoint.tc = 'L';
    +
    527  pPoint.point.x = std::stof(element);
    +
    528  ss >> pPoint.point.y;
    +
    529  } else if (tolower(pPoint.tc) == 'h') {
    +
    530  pPoint.point.x = std::stof(element);
    +
    531  pPoint.point.y = 0;
    +
    532  } else if (tolower(pPoint.tc) == 'v') {
    +
    533  pPoint.point.y = std::stof(element);
    +
    534  pPoint.point.x = 0;
    +
    535  } else if (tolower(pPoint.tc) == 'a') {
    +
    536  pPoint.radius.x = std::stof(element);
    +
    537  ss >> pPoint.radius.y;
    +
    538  ss >> pPoint.x_axis_rotation;
    +
    539  ss >> pPoint.large_arc_flag >> pPoint.sweep_flag;
    +
    540  ss >> pPoint.point.x >> pPoint.point.y;
    +
    541  }
    +
    542  }
    +
    543  points.push_back(pPoint);
    +
    544  }
    +
    545 
    +
    546  std::vector< PathPoint > handle_points;
    +
    547 
    +
    548  Vector2Df first_point{0, 0}, cur_point{0, 0};
    +
    549  int n = points.size();
    +
    550  for (int i = 0; i < n; i++) {
    +
    551  if (tolower(points[i].tc) == 'm') {
    +
    552  first_point = points[i].point;
    +
    553  if (points[i].tc == 'm') {
    +
    554  first_point.x = cur_point.x + points[i].point.x;
    +
    555  first_point.y = cur_point.y + points[i].point.y;
    +
    556  }
    +
    557  cur_point = first_point;
    +
    558  handle_points.push_back({first_point, 'm'});
    +
    559  } else if (tolower(points[i].tc) == 'l' ||
    +
    560  tolower(points[i].tc) == 't') {
    +
    561  Vector2Df end_point{cur_point.x + points[i].point.x,
    +
    562  cur_point.y + points[i].point.y};
    +
    563  if (points[i].tc == 'L' || points[i].tc == 'T')
    +
    564  end_point = points[i].point;
    +
    565  cur_point = end_point;
    +
    566  char TC = tolower(points[i].tc);
    +
    567  handle_points.push_back({end_point, TC});
    +
    568  } else if (tolower(points[i].tc) == 'h') {
    +
    569  Vector2Df end_point{cur_point.x + points[i].point.x, cur_point.y};
    +
    570  if (points[i].tc == 'H')
    +
    571  end_point = Vector2Df{points[i].point.x, cur_point.y};
    +
    572  cur_point = end_point;
    +
    573  handle_points.push_back({end_point, 'h'});
    +
    574  } else if (tolower(points[i].tc) == 'v') {
    +
    575  Vector2Df end_point{cur_point.x, cur_point.y + points[i].point.y};
    +
    576  if (points[i].tc == 'V')
    +
    577  end_point = Vector2Df{cur_point.x, points[i].point.y};
    +
    578  cur_point = end_point;
    +
    579  handle_points.push_back({end_point, 'v'});
    +
    580  } else if (tolower(points[i].tc) == 'c') {
    +
    581  if (i + 2 < n) {
    +
    582  Vector2Df control_point1 =
    +
    583  Vector2Df{cur_point.x + points[i].point.x,
    +
    584  cur_point.y + points[i].point.y};
    +
    585  Vector2Df control_point2 =
    +
    586  Vector2Df{cur_point.x + points[i + 1].point.x,
    +
    587  cur_point.y + points[i + 1].point.y};
    +
    588  Vector2Df control_point3 =
    +
    589  Vector2Df{cur_point.x + points[i + 2].point.x,
    +
    590  cur_point.y + points[i + 2].point.y};
    +
    591  if (points[i].tc == 'C') {
    +
    592  control_point1 = points[i].point;
    +
    593  control_point2 = points[i + 1].point;
    +
    594  control_point3 = points[i + 2].point;
    +
    595  }
    +
    596  i += 2;
    +
    597  cur_point = control_point3;
    +
    598  handle_points.push_back({control_point1, 'c'});
    +
    599  handle_points.push_back({control_point2, 'c'});
    +
    600  handle_points.push_back({control_point3, 'c'});
    +
    601  }
    +
    602  } else if (tolower(points[i].tc) == 'z') {
    +
    603  cur_point = first_point;
    +
    604  handle_points.push_back({first_point, 'z'});
    +
    605  } else if (tolower(points[i].tc) == 's' ||
    +
    606  tolower(points[i].tc) == 'q') {
    +
    607  if (i + 1 < n) {
    +
    608  Vector2Df control_point1 =
    +
    609  Vector2Df{cur_point.x + points[i].point.x,
    +
    610  cur_point.y + points[i].point.y};
    +
    611  Vector2Df control_point2 =
    +
    612  Vector2Df{cur_point.x + points[i + 1].point.x,
    +
    613  cur_point.y + points[i + 1].point.y};
    +
    614  if (points[i].tc == 'S' || points[i].tc == 'Q') {
    +
    615  control_point1 = points[i].point;
    +
    616  control_point2 = points[i + 1].point;
    +
    617  }
    +
    618  i += 1;
    +
    619  cur_point = control_point2;
    +
    620  char TC = tolower(points[i].tc);
    +
    621  handle_points.push_back({control_point1, TC});
    +
    622  handle_points.push_back({control_point2, TC});
    +
    623  }
    +
    624  } else if (tolower(points[i].tc) == 'a') {
    +
    625  Vector2Df end_point{cur_point.x + points[i].point.x,
    +
    626  cur_point.y + points[i].point.y};
    +
    627  if (points[i].tc == 'A') end_point = points[i].point;
    +
    628  handle_points.push_back(
    +
    629  {end_point, 'a', points[i].radius, points[i].x_axis_rotation,
    +
    630  points[i].large_arc_flag, points[i].sweep_flag});
    +
    631  cur_point = end_point;
    +
    632  }
    +
    633  }
    +
    634  return handle_points;
    +
    635 }
    +
    A struct that contains a point and a type of point.
    Definition: Path.hpp:10
    +
    +
    +
    + +

    ◆ parsePoints()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::vector< Vector2Df > Parser::parsePoints (rapidxml::xml_node<> * node)
    +
    +private
    +
    + +

    Gets the points of the element.

    +
    Parameters
    + + +
    nodeThe node to be parsed.
    +
    +
    +
    Returns
    The points of the element
    + +

    Definition at line 478 of file Parser.cpp.

    +
    478  {
    +
    479  std::vector< Vector2Df > points;
    +
    480  std::string points_string = getAttribute(node, "points");
    +
    481 
    +
    482  std::stringstream ss(points_string);
    +
    483  float x, y;
    +
    484 
    +
    485  while (ss >> x) {
    +
    486  if (ss.peek() == ',') ss.ignore();
    +
    487  ss >> y;
    +
    488  points.push_back(Vector2Df(x, y));
    +
    489  }
    +
    490 
    +
    491  return points;
    +
    492 }
    +
    +
    +
    + +

    ◆ parsePolygon()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Plygon * Parser::parsePolygon (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the polygon element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The polygon element
    + +

    Definition at line 754 of file Parser.cpp.

    +
    756  {
    +
    757  Plygon *shape = new Plygon(fill_color, stroke_color, stroke_width);
    +
    758  std::vector< Vector2Df > points = parsePoints(node);
    +
    759  for (auto point : points) {
    +
    760  shape->addPoint(point);
    +
    761  }
    +
    762  std::string fill_rule = getAttribute(node, "fill-rule");
    +
    763  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
    +
    764  fill_rule.end());
    +
    765  shape->setFillRule(fill_rule);
    +
    766  return shape;
    +
    767 }
    +
    std::vector< Vector2Df > parsePoints(rapidxml::xml_node<> *node)
    Gets the points of the element.
    Definition: Parser.cpp:478
    +
    Represents a polygon in 2D space.
    Definition: Polygon.hpp:12
    +
    void setFillRule(std::string fill_rule)
    Sets the fill rule of the polyshape.
    Definition: PolyShape.cpp:11
    +
    virtual void addPoint(const Vector2Df &point)
    Adds a vertex to the shape.
    Definition: PolyShape.cpp:7
    +
    +
    +
    + +

    ◆ parsePolyline()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Plyline * Parser::parsePolyline (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the polyline element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The polyline element
    + +

    Definition at line 769 of file Parser.cpp.

    +
    771  {
    +
    772  Plyline *shape = new Plyline(fill_color, stroke_color, stroke_width);
    +
    773  std::vector< Vector2Df > points = parsePoints(node);
    +
    774  for (auto point : points) {
    +
    775  shape->addPoint(point);
    +
    776  }
    +
    777  std::string fill_rule = getAttribute(node, "fill-rule");
    +
    778  fill_rule.erase(std::remove(fill_rule.begin(), fill_rule.end(), ' '),
    +
    779  fill_rule.end());
    +
    780  shape->setFillRule(fill_rule);
    +
    781  return shape;
    +
    782 }
    +
    Represents a polyline in 2D space.
    Definition: Polyline.hpp:12
    +
    +
    +
    + +

    ◆ parseRect()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Rect * Parser::parseRect (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the rect element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The rect element
    + +

    Definition at line 719 of file Parser.cpp.

    +
    720  {
    +
    721  float x = getFloatAttribute(node, "x");
    +
    722  float y = getFloatAttribute(node, "y");
    +
    723  float rx = getFloatAttribute(node, "rx");
    +
    724  float ry = getFloatAttribute(node, "ry");
    +
    725  Rect *shape =
    +
    726  new Rect(getFloatAttribute(node, "width"),
    +
    727  getFloatAttribute(node, "height"), Vector2Df(x, y),
    +
    728  Vector2Df(rx, ry), fill_color, stroke_color, stroke_width);
    +
    729  return shape;
    +
    730 }
    +
    Represents a rectangle in 2D space.
    Definition: Rect.hpp:13
    +
    +
    +
    + +

    ◆ parseShape()

    + +
    +
    + + + + + +
    + + + + + + + + +
    SVGElement * Parser::parseShape (rapidxml::xml_node<> * node)
    +
    +private
    +
    + +

    Parses the group of elements.

    +
    Parameters
    + + +
    nodeThe node to be parsed.
    +
    +
    +
    Returns
    The group of elements
    + +

    Definition at line 667 of file Parser.cpp.

    +
    667  {
    +
    668  SVGElement *shape = NULL;
    +
    669  std::string type = node->name();
    +
    670  std::string id = "";
    +
    671  mColor stroke_color = parseColor(node, "stroke", id);
    +
    672  mColor fill_color = parseColor(node, "fill", id);
    +
    673  float stroke_width = getFloatAttribute(node, "stroke-width");
    +
    674  if (type == "line") {
    +
    675  shape = parseLine(node, stroke_color, stroke_width);
    +
    676  } else if (type == "rect") {
    +
    677  shape = parseRect(node, fill_color, stroke_color, stroke_width);
    +
    678  } else if (type == "circle") {
    +
    679  shape = parseCircle(node, fill_color, stroke_color, stroke_width);
    +
    680  } else if (type == "ellipse") {
    +
    681  shape = parseEllipse(node, fill_color, stroke_color, stroke_width);
    +
    682  } else if (type == "polygon") {
    +
    683  shape = parsePolygon(node, fill_color, stroke_color, stroke_width);
    +
    684  } else if (type == "polyline") {
    +
    685  shape = parsePolyline(node, fill_color, stroke_color, stroke_width);
    +
    686  } else if (type == "path") {
    +
    687  shape = parsePath(node, fill_color, stroke_color, stroke_width);
    +
    688  } else if (type == "text") {
    +
    689  shape = parseText(node, fill_color, stroke_color, stroke_width);
    +
    690  }
    +
    691  if (shape != NULL) {
    +
    692  if (type == "text") {
    +
    693  float dx = getFloatAttribute(node, "dx");
    +
    694  float dy = getFloatAttribute(node, "dy");
    +
    695  std::string transform = "translate(" + std::to_string(dx) + " " +
    +
    696  std::to_string(dy) + ")";
    +
    697  std::vector< std::string > transform_order =
    +
    698  getTransformOrder(node);
    +
    699  transform_order.push_back(transform);
    +
    700  shape->setTransforms(transform_order);
    +
    701  } else
    +
    702  shape->setTransforms(getTransformOrder(node));
    +
    703  if (id != "") {
    +
    704  shape->setGradient(parseGradient(id));
    +
    705  }
    +
    706  }
    +
    707  return shape;
    +
    708 }
    +
    class Plyline * parsePolyline(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the polyline element.
    Definition: Parser.cpp:769
    +
    class Ell * parseEllipse(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the ellipse element.
    Definition: Parser.cpp:743
    +
    Rect * parseRect(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the rect element.
    Definition: Parser.cpp:719
    +
    Text * parseText(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the text element.
    Definition: Parser.cpp:784
    +
    Path * parsePath(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the path element.
    Definition: Parser.cpp:807
    +
    class Plygon * parsePolygon(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the polygon element.
    Definition: Parser.cpp:754
    +
    Line * parseLine(rapidxml::xml_node<> *node, const mColor &stroke_color, float stroke_width)
    Parses the line element.
    Definition: Parser.cpp:710
    +
    Circle * parseCircle(rapidxml::xml_node<> *node, const mColor &fill_color, const mColor &stroke_color, float stroke_width)
    Parses the circle element.
    Definition: Parser.cpp:732
    +
    void setGradient(Gradient *gradient)
    Sets the gradient of the shape.
    Definition: SVGElement.cpp:79
    +
    +
    +
    + +

    ◆ parseText()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Text * Parser::parseText (rapidxml::xml_node<> * node,
    const mColorfill_color,
    const mColorstroke_color,
    float stroke_width 
    )
    +
    +private
    +
    + +

    Parses the text element.

    +
    Parameters
    + + + + + +
    nodeThe node to be parsed.
    fill_colorThe color of the fill
    stroke_colorThe color of the stroke
    stroke_widthThe width of the stroke
    +
    +
    +
    Returns
    The text element
    + +

    Definition at line 784 of file Parser.cpp.

    +
    785  {
    +
    786  float x = getFloatAttribute(node, "x");
    +
    787  float y = getFloatAttribute(node, "y");
    +
    788  float font_size = getFloatAttribute(node, "font-size");
    +
    789  std::string text = getAttribute(node, "text");
    +
    790 
    +
    791  Text *shape =
    +
    792  new Text(Vector2Df(x - (font_size * 6.6 / 40),
    +
    793  y - font_size + (font_size * 4.4 / 40)),
    +
    794  text, font_size, fill_color, stroke_color, stroke_width);
    +
    795 
    +
    796  std::string anchor = getAttribute(node, "text-anchor");
    +
    797  anchor.erase(std::remove(anchor.begin(), anchor.end(), ' '), anchor.end());
    +
    798  shape->setAnchor(anchor);
    +
    799 
    +
    800  std::string style = getAttribute(node, "font-style");
    +
    801  style.erase(std::remove(style.begin(), style.end(), ' '), style.end());
    +
    802  shape->setFontStyle(style);
    +
    803 
    +
    804  return shape;
    +
    805 }
    +
    Represents text in 2D space.
    Definition: Text.hpp:12
    +
    void setFontStyle(std::string style)
    Sets the style of the text.
    Definition: Text.cpp:22
    +
    void setAnchor(std::string anchor)
    Sets the anchor of the text.
    Definition: Text.cpp:18
    +
    +
    +
    + +

    ◆ printShapesData()

    + +
    +
    + + + + + + + +
    void Parser::printShapesData ()
    +
    + +

    Prints the data of the shapes.

    +
    Note
    This function is used for debugging.
    + +

    Definition at line 828 of file Parser.cpp.

    +
    828 { root->printData(); }
    +
    virtual void printData() const
    Prints the data of the shape.
    Definition: SVGElement.cpp:47
    +
    +
    +
    +

    Member Data Documentation

    + +

    ◆ gradients

    + +
    +
    + + + + + +
    + + + + +
    std::map< std::string, Gradient* > Parser::gradients
    +
    +private
    +
    +

    The gradients of the SVG file.

    + +

    Definition at line 277 of file Parser.hpp.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    +
    + + + \ No newline at end of file diff --git a/html/classParser.js b/html/classParser.js new file mode 100644 index 00000000..882e1797 --- /dev/null +++ b/html/classParser.js @@ -0,0 +1,35 @@ +var classParser = +[ + [ "Parser", "classParser.html#a48044a8caa14a251cb4dad9fb363658e", null ], + [ "~Parser", "classParser.html#a3e658b5917a93a3ef648050d060e3a93", null ], + [ "Parser", "classParser.html#a350fc3e35535c5891cd9e36e79ee546a", null ], + [ "getAttribute", "classParser.html#a63329a7accdf332feb3fba1bcc4deec6", null ], + [ "getFloatAttribute", "classParser.html#ab2b1df7c69830fafcbe36de5199dcd30", null ], + [ "GetGradients", "classParser.html#ac00eac6bf37c45c9160fa47700d2466f", null ], + [ "getGradientStops", "classParser.html#aca2ed5f466436a9e9f78618bb1e356fd", null ], + [ "getInstance", "classParser.html#a06952fa44f19fdb573c1355ac26454c5", null ], + [ "getRoot", "classParser.html#a59ed4455eaec306cde11939785c4e71a", null ], + [ "getTransformOrder", "classParser.html#a99df58e649089762bf434502173716d6", null ], + [ "getViewBox", "classParser.html#a4efa2342d694eff2ab6ba1d150c7bb69", null ], + [ "getViewPort", "classParser.html#a009fbe10a1b9b58a65be44634335a062", null ], + [ "parseCircle", "classParser.html#ab7776f740b7d63c388a086c8b8ecccd0", null ], + [ "parseColor", "classParser.html#a18d5a9aa35bd124023a060940486e183", null ], + [ "parseElements", "classParser.html#aaf9f19591ff93f0c0c2fd68955e4a4af", null ], + [ "parseEllipse", "classParser.html#a0af0085ee5e20739bdf23a5b685642b6", null ], + [ "parseGradient", "classParser.html#ac1e519500fce1b4192362ed1aa5ccbc3", null ], + [ "parseLine", "classParser.html#a95e84ae219109769fae08702381acf78", null ], + [ "parsePath", "classParser.html#a6f80728e7a771d2653baf1b453b655d9", null ], + [ "parsePathPoints", "classParser.html#aecea54d6bc1ff225a6ac450ccbb560c3", null ], + [ "parsePoints", "classParser.html#af408a2ef7b27ceed0547093d73e6b2eb", null ], + [ "parsePolygon", "classParser.html#a7afd52c648dc5983e596edfa7eb6bbb5", null ], + [ "parsePolyline", "classParser.html#a03766f0f9f6ebdead0474973d3ac50aa", null ], + [ "parseRect", "classParser.html#a20352ab58a59e61f6da1b4d20861907d", null ], + [ "parseShape", "classParser.html#abfd09c5dd46fb0dc9bcd9106857dbf5e", null ], + [ "parseText", "classParser.html#a539bda46a2832a22741105c9299c12cb", null ], + [ "printShapesData", "classParser.html#a3d8927f2e26abf6a63bd850c154b23c6", null ], + [ "gradients", "classParser.html#a7f085da78317baf2cc61e6e92b4b29c8", null ], + [ "instance", "classParser.html#ae3a28c02c18171f4e83fae54b9f21a90", null ], + [ "root", "classParser.html#a13a5e2fdac62670c1584de1edbba77f2", null ], + [ "viewbox", "classParser.html#a7eb24f4915ba9b7a652ca204c1edb2c7", null ], + [ "viewport", "classParser.html#a2872aff3bfb15fdb1df2dcdce2bd632a", null ] +]; \ No newline at end of file diff --git a/html/classParser__coll__graph.map b/html/classParser__coll__graph.map new file mode 100644 index 00000000..50863950 --- /dev/null +++ b/html/classParser__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classParser__coll__graph.md5 b/html/classParser__coll__graph.md5 new file mode 100644 index 00000000..f01d584f --- /dev/null +++ b/html/classParser__coll__graph.md5 @@ -0,0 +1 @@ +05c158b829a8e9183f51bdd787bd2a08 \ No newline at end of file diff --git a/docs/html/classParser__coll__graph.png b/html/classParser__coll__graph.png similarity index 100% rename from docs/html/classParser__coll__graph.png rename to html/classParser__coll__graph.png diff --git a/html/classParser__coll__graph.svg b/html/classParser__coll__graph.svg new file mode 100644 index 00000000..1c61f4c2 --- /dev/null +++ b/html/classParser__coll__graph.svg @@ -0,0 +1,122 @@ + + + + + + +Parser + + +Node1 + + +Parser + + + + + +Node1->Node1 + + + instance + + + +Node2 + + +Vector2D< float > + + + + + +Node2->Node1 + + + viewport + + + +Node3 + + +SVGElement + + + + + +Node2->Node3 + + + position + + + +Node3->Node1 + + + root + + + +Node3->Node3 + + + parent + + + +Node4 + + +Gradient + + + + + +Node4->Node3 + + + gradient + + + +Node5 + + +mColor + + + + + +Node5->Node3 + + + fill +stroke + + + +Node5->Node5 + + + Black +Blue +Cyan +Green +Magenta +Red +Transparent +White +Yellow + + + diff --git a/docs/html/classPath-members.html b/html/classPath-members.html similarity index 72% rename from docs/html/classPath-members.html rename to html/classPath-members.html index ed0e9ff9..a02e49df 100644 --- a/docs/html/classPath-members.html +++ b/html/classPath-members.html @@ -60,7 +60,7 @@
    svg-reader -  0.2 +  0.3
    Parse and render SVG files, handle user interactions.
    @@ -131,12 +131,16 @@ getClass() const overridePathvirtual getFillColor() constSVGElement getFillRule() constPath - getOutlineColor() constSVGElement - getOutlineThickness() constSVGElement - getParent() constSVGElement - getPoints() constPath - getPosition() constSVGElement - getTransforms() constSVGElement + getGradient() constSVGElement + getMaxBound() constSVGElementvirtual + getMinBound() constSVGElementvirtual + getOutlineColor() constSVGElement + getOutlineThickness() constSVGElement + getParent() constSVGElement + getPoints() constPath + getPosition() constSVGElement + getTransforms() constSVGElement + gradientSVGElementprivate parentSVGElementprotected Path(const mColor &fill, const mColor &stroke, float stroke_width)Path pointsPathprivate @@ -144,17 +148,20 @@ printData() const overridePathvirtual setFillColor(const mColor &color)SVGElement setFillRule(std::string fill_rule)Path - setOutlineColor(const mColor &color)SVGElement - setOutlineThickness(float thickness)SVGElement - setParent(SVGElement *parent)SVGElement - setPosition(float x, float y)SVGElement - setPosition(const Vector2Df &position)SVGElement - setTransforms(const std::vector< std::string > &transforms)SVGElement - strokeSVGElementprivate - stroke_widthSVGElementprivate - SVGElement()SVGElementprotected - transformsSVGElementprivate - ~SVGElement()=defaultSVGElementvirtual + setGradient(Gradient *gradient)SVGElement + setOutlineColor(const mColor &color)SVGElement + setOutlineThickness(float thickness)SVGElement + setParent(SVGElement *parent)SVGElement + setPosition(float x, float y)SVGElement + setPosition(const Vector2Df &position)SVGElement + setTransforms(const std::vector< std::string > &transforms)SVGElement + strokeSVGElementprivate + stroke_widthSVGElementprivate + SVGElement()SVGElementprotected + SVGElement(const mColor &fill, const mColor &stroke, float stroke_width)SVGElementprotected + SVGElement(const mColor &fill, const mColor &stroke, float stroke_width, const Vector2Df &position)SVGElementprotected + transformsSVGElementprivate + ~SVGElement()=defaultSVGElementvirtual - -

    ◆ setFillRule()

    - -
    -
    - - - - - - - - -
    void Plygon::setFillRule (std::string fill_rule)
    -
    - -

    Sets the fill rule of the polygon.

    -
    Parameters
    - - -
    fill_ruleThe new fill rule of the polygon.
    -
    -
    - -

    Definition at line 8 of file Polygon.cpp.

    -
    8 { this->fill_rule = fill_rule; }
    -
    -
    -

    The documentation for this class was generated from the following files:

    Circle(float radius, const Vector2Df &center, mColor fill, mColor stroke, float stroke_width)
    Constructs a Circle object.
    Definition: Circle.cpp:3

    v-5C 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%0A&LInH9OiwWM4@dn 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�v|v05@AUdP*Bsbzh{h!u*N7k>WgYDoG8>Dl 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 diff --git a/docs/latex/refman.pdf b/docs/latex/refman.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5cefe3eaea3e287c6b03711767b61d9b03c09a99 GIT binary patch literal 715424 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