File indexing completed on 2025-09-18 08:12:00
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Utilities/OstreamFormatter.hpp"
0012
0013 #include <format>
0014 #include <ostream>
0015 #include <vector>
0016
0017 namespace Acts::GraphViz {
0018
0019 enum class Shape {
0020 Box,
0021 Polygon,
0022 Ellipse,
0023 Oval,
0024 Circle,
0025 Point,
0026 Egg,
0027 Triangle,
0028 Plaintext,
0029 Plain,
0030 Diamond,
0031 Trapezium,
0032 Parallelogram,
0033 House,
0034 Pentagon,
0035 Hexagon,
0036 Septagon,
0037 Octagon,
0038 DoubleCircle,
0039 DoubleOctagon,
0040 TripleOctagon,
0041 InvTriangle,
0042 InvTrapezium,
0043 InvHouse,
0044 Mdiamond,
0045 Msquare,
0046 Mcircle,
0047 Rect,
0048 Rectangle,
0049 Square,
0050 Star,
0051 None,
0052 Underline,
0053 Cylinder,
0054 Note,
0055 Tab,
0056 Folder,
0057 Box3d,
0058 Component,
0059 Promoter,
0060 Cds,
0061 Terminator,
0062 Utr,
0063 PrimerSite,
0064 RestrictionSite,
0065 FivePOverhang,
0066 ThreePOverhang,
0067 NOverhang,
0068 Assembly,
0069 Signature,
0070 Insulator,
0071 Ribosite,
0072 RNAStab,
0073 ProteaseSite,
0074 ProteinStab,
0075 RPromoter,
0076 RArrow,
0077 LArrow,
0078 LPromoter
0079 };
0080
0081 std::ostream& operator<<(std::ostream& os, const Shape& shape);
0082
0083 enum class Style {
0084 Filled,
0085 Invisible,
0086 Diagonals,
0087 Rounded,
0088 Dashed,
0089 Dotted,
0090 Solid,
0091 Bold
0092 };
0093
0094 std::ostream& operator<<(std::ostream& os, const Style& style);
0095
0096 struct Node {
0097 std::string id;
0098 std::string label = "";
0099 Shape shape = Shape::Ellipse;
0100 std::vector<Style> style = {Style::Solid};
0101 };
0102
0103 std::ostream& operator<<(std::ostream& os, const Node& node);
0104
0105 struct Edge {
0106 Node from;
0107 Node to;
0108 Style style = Style::Solid;
0109 };
0110
0111 std::ostream& operator<<(std::ostream& os, const Edge& node);
0112
0113 }
0114
0115 ACTS_OSTREAM_FORMATTER(Acts::GraphViz::Style);
0116 ACTS_OSTREAM_FORMATTER(Acts::GraphViz::Shape);
0117 ACTS_OSTREAM_FORMATTER(Acts::GraphViz::Node);
0118 ACTS_OSTREAM_FORMATTER(Acts::GraphViz::Edge);