swh:1:snp:7a4cd2a5ec73a061be17605597c4b1660b799026
Tip revision: 9eb375d26241062440516a8120b19e04080223ed authored by Max Göttlicher on 18 August 2022, 13:21:20 UTC
fixed printing issues
fixed printing issues
Tip revision: 9eb375d
draw_grid.hpp
//
// Created by max on 09.08.22.
//
#ifndef PDS_DRAW_GRID_HPP
#define PDS_DRAW_GRID_HPP
#include "pds.hpp"
namespace pds {
namespace style {
enum class Shape {
Rectangle,
Circle,
Triangle,
Hexagon,
Octagon
};
struct Color {
uint8_t r, g, b, a;
static Color fromRGB(uint8_t r, uint8_t g, uint8_t b, uint8_t a=255);
static Color fromHSL(float h, float s, float l, float a=1.0);
};
struct NodeStyle {
Shape shape;
float size;
Color fillColor;
Color drawColor;
float thickness;
std::string label;
};
struct EdgeStyle {
Color color;
float thickness;
};
struct NodeState {
long id;
PmuState pmu;
bool zeroInjection;
bool observed;
};
class DrawingOptions {
public:
virtual NodeStyle nodeStyle(NodeState node) const = 0;
virtual EdgeStyle edgeStyle(NodeState source, NodeState target) const = 0;
};
class DefaultDrawingOptions : public virtual DrawingOptions {
public:
Color unobservedColor;
Color observedColor;
Color activeColor;
float nodeSize;
float nodeThickness;
float lineThickness;
Shape nonZeroInjectionShape;
Shape zeroInjectionShape;
DefaultDrawingOptions();
DefaultDrawingOptions(const DefaultDrawingOptions&) = default;
DefaultDrawingOptions(DefaultDrawingOptions&&) = default;
DefaultDrawingOptions& operator=(const DefaultDrawingOptions&) = default;
DefaultDrawingOptions& operator=(DefaultDrawingOptions&&) = default;
virtual NodeStyle nodeStyle(pds::style::NodeState node) const override;
virtual EdgeStyle edgeStyle(pds::style::NodeState source, pds::style::NodeState target) const override;
};
}
struct Coordinate {
double x, y;
};
map<PowerGrid::vertex_descriptor, Coordinate> layoutGraph(const PowerGrid& graph);
void drawGrid(const PowerGrid &graph,
const map<PowerGrid::vertex_descriptor, PmuState> &active,
const set<PowerGrid::vertex_descriptor> &observed,
const std::string &filename,
const map<PowerGrid::vertex_descriptor, Coordinate>& layout,
const style::DrawingOptions &style = style::DefaultDrawingOptions{});
}
#endif //PDS_DRAW_GRID_HPP