From 71d0c43a9b7026a6af02d26bf3a7bf3b79f4b619 Mon Sep 17 00:00:00 2001 From: "Alice (VasinaEY)" Date: Wed, 28 May 2025 16:09:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D0=B8=20svg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- svg.cpp | 73 +++++++++++++++++++++++++++++++++++++++ svg.h | 11 ++++++ unittest/obj/Debug/svg.o | Bin 0 -> 77634 bytes unittest/unittest.layout | 15 ++++++++ 4 files changed, 99 insertions(+) create mode 100644 svg.cpp create mode 100644 svg.h create mode 100644 unittest/obj/Debug/svg.o create mode 100644 unittest/unittest.layout diff --git a/svg.cpp b/svg.cpp new file mode 100644 index 0000000..a8ec49a --- /dev/null +++ b/svg.cpp @@ -0,0 +1,73 @@ +#include "svg.h" + +using namespace std; + +void +svg_begin(double width, double height) +{ + cout << "\n"; + cout << "\n"; +} + +void +svg_end() +{ + cout << "\n"; +} + +void +svg_text(double left, double baseline, string text) +{ + cout << "" << text << ""; +} + +void +svg_rect(double x, double y, double width, double height, string stroke = "black", string fill = "black") +{ + cout << ""; + +} + + + +void +show_histogram_svg(const vector& bins) +{ + const auto IMAGE_WIDTH = 400; + const auto IMAGE_HEIGHT = 300; + const auto TEXT_LEFT = 20; + const auto TEXT_BASELINE = 20; + const auto TEXT_WIDTH = 50; + const auto BIN_HEIGHT = 30; + const auto BLOCK_WIDTH = 10; + const auto YELLOW = "yellow"; + const auto PURPLE = "purple"; + const auto MAX_WIDTH = IMAGE_WIDTH-TEXT_WIDTH; + + + svg_begin(IMAGE_WIDTH,IMAGE_HEIGHT); + + double top = 0; + double max_count = bins[0]; + for (size_t i = 0; i < bins.size(); i++) + { + if (max_count +#include +#include +#include +using namespace std; +void show_histogram_svg(const vector& bins); + +#endif // SVG_H_INCLUDED diff --git a/unittest/obj/Debug/svg.o b/unittest/obj/Debug/svg.o new file mode 100644 index 0000000000000000000000000000000000000000..f0ed65d1d5f50e4a4524048d2b52dcd7d4ecca3f GIT binary patch literal 77634 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 K^PBL5-XLG~cKo9N literal 0 HcmV?d00001 diff --git a/unittest/unittest.layout b/unittest/unittest.layout new file mode 100644 index 0000000..acc1997 --- /dev/null +++ b/unittest/unittest.layout @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +