106 lines
2.9 KiB
C
106 lines
2.9 KiB
C
//
|
|
// File: sculpture_gen.h
|
|
// Author: Peter Slattery
|
|
// Creation Date: 2021-01-06
|
|
//
|
|
#ifndef SCULPTURE_GEN_H
|
|
|
|
internal void
|
|
WriteIndented(gs_string* Buffer, u32 Indent, char* Format, ...)
|
|
{
|
|
va_list Args;
|
|
va_start(Args, Format);
|
|
|
|
for (u32 i = 0; i < Indent; i++)
|
|
{
|
|
OutChar(Buffer, '\t');
|
|
}
|
|
|
|
PrintFArgsList(Buffer, Format, Args);
|
|
va_end(Args);
|
|
}
|
|
|
|
internal void
|
|
WriteAssemblyUARTOpen(gs_string* Buffer, char* Name, u32 Scale, v3 Center, u32 StripCount, char* ComPort)
|
|
{
|
|
WriteIndented(Buffer, 0, "assembly_name: \"%s\";\n", Name);
|
|
WriteIndented(Buffer, 0, "assembly_scale: %d;\n", Scale);
|
|
WriteIndented(Buffer, 0, "assembly_center: (%f, %f, %f);\n", Center.x, Center.y, Center.z);
|
|
WriteIndented(Buffer, 0, "led_strip_count: %d;\n", StripCount);
|
|
WriteIndented(Buffer, 0, "output_mode: \"UART\";\n");
|
|
|
|
if (ComPort)
|
|
{
|
|
WriteIndented(Buffer, 0, "com_port: \"%s\";\n", ComPort);
|
|
}
|
|
}
|
|
|
|
internal void
|
|
WriteLedStripOpen(gs_string* Buffer, u32 Channel, char* ComPort)
|
|
{
|
|
WriteIndented(Buffer, 0, "led_strip:\n{\n");
|
|
WriteIndented(Buffer, 1, "output_uart: {\n");
|
|
WriteIndented(Buffer, 2, "channel: %d;\n", Channel);
|
|
WriteIndented(Buffer, 2, "com_port: \"%s\";\n", ComPort);
|
|
WriteIndented(Buffer, 1, "};\n\n");
|
|
}
|
|
|
|
internal void
|
|
WriteSegmentSequenceOpen(gs_string* Buffer, u32 SegmentCount)
|
|
{
|
|
WriteIndented(Buffer, 1, "segment: {\n");
|
|
WriteIndented(Buffer, 2, "point_placement_type: \"SegmentSequence\";\n");
|
|
WriteIndented(Buffer, 2, "segment_sequence:\n");
|
|
WriteIndented(Buffer, 2, "{\n");
|
|
WriteIndented(Buffer, 3, "segment_count: %d;\n", SegmentCount);
|
|
}
|
|
|
|
internal void
|
|
WriteSegmentSequenceSegment(gs_string* Buffer, v3 P0, v3 P1, u32 LedCount)
|
|
{
|
|
WriteIndented(Buffer, 3, "segment: {\n");
|
|
WriteIndented(Buffer, 4, "point_placement_type: \"InterpolatePoints\";\n");
|
|
WriteIndented(Buffer, 4, "interpolate_points: {\n");
|
|
WriteIndented(Buffer, 5, "start: (%f, %f, %f);\n", P0.x, P0.y, P0.z);
|
|
WriteIndented(Buffer, 5, "end: (%f, %f, %f);\n", P1.x, P1.y, P1.z);
|
|
WriteIndented(Buffer, 5, "led_count: %d;\n", LedCount);
|
|
WriteIndented(Buffer, 4, "};\n");
|
|
WriteIndented(Buffer, 3, "};\n");
|
|
}
|
|
|
|
internal void
|
|
WriteSegmentSequenceClose(gs_string* Buffer)
|
|
{
|
|
WriteIndented(Buffer, 2, "};\n");
|
|
WriteIndented(Buffer, 1, "};\n");
|
|
}
|
|
|
|
internal void
|
|
WriteSegmentTagsOpen(gs_string* Buffer, u32 TagCount)
|
|
{
|
|
WriteIndented(Buffer, 1, "tags_count: %d;\n", TagCount);
|
|
}
|
|
|
|
internal void
|
|
WriteSegmentTag(gs_string* Buffer, char* TagName, char* TagValue)
|
|
{
|
|
WriteIndented(Buffer, 1, "tag: {\n");
|
|
WriteIndented(Buffer, 2, "name: \"%s\";\n", TagName);
|
|
WriteIndented(Buffer, 2, "value: \"%s\";\n", TagValue);
|
|
WriteIndented(Buffer, 1, "};\n");
|
|
|
|
}
|
|
|
|
internal void
|
|
WriteSegmentTagsClose(gs_string* Buffer)
|
|
{
|
|
}
|
|
|
|
internal void
|
|
WriteLedStripClose(gs_string* Buffer)
|
|
{
|
|
WriteIndented(Buffer, 0, "};\n");
|
|
}
|
|
|
|
#define SCULPTURE_GEN_H
|
|
#endif // SCULPTURE_GEN_H
|