6#include "proto/ssl_vision_geometry.pb.h"
7#include "software/geom/circle.h"
8#include "software/geom/segment.h"
9#include "software/util/make_enum/make_enum.hpp"
10#include "software/world/field.h"
80MAKE_ENUM(SSLFieldLines,
87 NEG_X_DEFENSE_AREA_FRONT_LINE,
88 POS_X_DEFENSE_AREA_FRONT_LINE,
89 POS_Y_LINE_OF_POS_X_GOAL,
90 NEG_Y_LINE_OF_POS_X_GOAL,
92 POS_Y_LINE_OF_NEG_X_GOAL,
93 NEG_Y_LINE_OF_NEG_X_GOAL,
95 POS_Y_LINE_OF_NEG_X_DEFENSE_AREA,
96 NEG_Y_LINE_OF_NEG_X_DEFENSE_AREA,
97 NEG_Y_LINE_OF_POS_X_DEFENSE_AREA,
98 POS_Y_LINE_OF_POS_X_DEFENSE_AREA,
101MAKE_ENUM(SSLCircularArcs,
116std::optional<SSLProto::SSL_FieldLineSegment> findLineSegment(
117 const google::protobuf::RepeatedPtrField<SSLProto::SSL_FieldLineSegment>&
119 SSLFieldLines line_type);
131std::optional<SSLProto::SSL_FieldCircularArc> findCircularArc(
132 const google::protobuf::RepeatedPtrField<SSLProto::SSL_FieldCircularArc>&
134 SSLCircularArcs arc_type);
143std::unique_ptr<SSLProto::Vector2f> createVector2f(const
Point& point);
160std::unique_ptr<SSLProto::SSL_FieldLineSegment> createFieldLineSegment(
161 const
Segment& segment,
float thickness, SSLFieldLines line_type,
162 const SSLProto::SSL_FieldShapeType& shape_type);
179std::unique_ptr<SSLProto::SSL_FieldCircularArc> createFieldCircularArc(
180 const
Circle& circle,
float thickness, SSLCircularArcs arc_type,
181 const SSLProto::SSL_FieldShapeType& shape_type);
195std::unique_ptr<SSLProto::SSL_GeometryFieldSize> createGeometryFieldSize(
196 const
Field& field,
float thickness);
210std::unique_ptr<SSLProto::SSL_GeometryData> createGeometryData(const
Field& field,
221std::optional<
Field> createField(const SSLProto::SSL_GeometryData& geometry_packet);