Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-18 08:12:00

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
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 }  // namespace Acts::GraphViz
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);