From abc9e41224cd8101823dc351d0207a1f8f6a3fd5 Mon Sep 17 00:00:00 2001 From: "Lab1 (ChaginSA)" Date: Sun, 28 May 2023 18:00:20 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- svg.cpp | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 svg.cpp diff --git a/svg.cpp b/svg.cpp new file mode 100644 index 0000000..ec6bcf4 --- /dev/null +++ b/svg.cpp @@ -0,0 +1,63 @@ +#pragma once + +#include +#include + +#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, string fill){ + cout << ""; +} + +void show_histogram_svg( 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; + svg_begin(IMAGE_WIDTH, IMAGE_HEIGHT); + double top = 0; + const size_t MAX_ASTERISK = IMAGE_WIDTH - TEXT_WIDTH; + int maxb = bins[0]; + for (size_t j = 0; j < bins.size(); j++){ + if (bins[j] > maxb) maxb = bins[j]; + } + cout <<" " << maxb<< " "; + + for (size_t i = 0; i < bins.size(); i++) { + double bin_width; + if (maxb == bins[i] ){ + bin_width = MAX_ASTERISK ; + } + else { + bin_width = MAX_ASTERISK * bins[i] / maxb; + } + svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(bins[i])); + svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "blue", "#aaffaa"); + top += BIN_HEIGHT; + } + svg_end(); +}