spring_ai_rs/ai_interface/callback/command/command_data/
debug_drawer.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
use std::ffi::CString;

use spring_ai_sys::{
    SAddOverlayTextureDrawerDebugCommand, SAddPointLineGraphDrawerDebugCommand,
    SDeleteOverlayTextureDrawerDebugCommand, SDeletePointsLineGraphDrawerDebugCommand,
    SSetColorLineGraphDrawerDebugCommand, SSetLabelLineGraphDrawerDebugCommand,
    SSetLabelOverlayTextureDrawerDebugCommand, SSetPositionGraphDrawerDebugCommand,
    SSetPositionOverlayTextureDrawerDebugCommand, SSetSizeGraphDrawerDebugCommand,
    SSetSizeOverlayTextureDrawerDebugCommand, SUpdateOverlayTextureDrawerDebugCommand,
};

use crate::ai_interface::callback::command::command_data::{CData, CommandData};

// Graph Line Add Point data
pub struct AddPointLineGraphDrawerDebugCommandData {
    pub line_id: i32,
    pub x: f32,
    pub y: f32,
}

impl CommandData for AddPointLineGraphDrawerDebugCommandData {
    type CDataType = SAddPointLineGraphDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SAddPointLineGraphDrawerDebugCommand {
            lineId: self.line_id,
            x: self.x,
            y: self.y,
        }
    }
}

impl CData for SAddPointLineGraphDrawerDebugCommand {}

// Graph Line Delete Point data
pub struct DeletePointsLineGraphDrawerDebugCommandData {
    pub line_id: i32,
    pub num_points: i32,
}

impl CommandData for DeletePointsLineGraphDrawerDebugCommandData {
    type CDataType = SDeletePointsLineGraphDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SDeletePointsLineGraphDrawerDebugCommand {
            lineId: self.line_id,
            numPoints: self.num_points,
        }
    }
}

impl CData for SDeletePointsLineGraphDrawerDebugCommand {}

// Graph Line Set Color data
pub struct SetColorLineGraphDrawerDebugCommandData {
    pub line_id: i32,
    pub color: [i16; 3],
}

impl CommandData for SetColorLineGraphDrawerDebugCommandData {
    type CDataType = SSetColorLineGraphDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetColorLineGraphDrawerDebugCommand {
            lineId: self.line_id,
            color_colorS3: self.color.as_mut_ptr(),
        }
    }
}

impl CData for SSetColorLineGraphDrawerDebugCommand {}

// Graph Line Set Label data
pub struct SetLabelLineGraphDrawerDebugCommandData {
    pub line_id: i32,
    pub label: CString,
}

impl CommandData for SetLabelLineGraphDrawerDebugCommandData {
    type CDataType = SSetLabelLineGraphDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetLabelLineGraphDrawerDebugCommand {
            lineId: self.line_id,
            label: self.label.as_ptr(),
        }
    }
}

impl CData for SSetLabelLineGraphDrawerDebugCommand {}

// Graph Set Position data
pub struct SetPositionGraphDrawerDebugCommandData {
    pub x: f32,
    pub y: f32,
}

impl CommandData for SetPositionGraphDrawerDebugCommandData {
    type CDataType = SSetPositionGraphDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetPositionGraphDrawerDebugCommand {
            x: self.x,
            y: self.y,
        }
    }
}

impl CData for SSetPositionGraphDrawerDebugCommand {}

// Graph Set Size data
pub struct SetSizeGraphDrawerDebugCommandData {
    pub w: f32,
    pub h: f32,
}

impl CommandData for SetSizeGraphDrawerDebugCommandData {
    type CDataType = SSetSizeGraphDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetSizeGraphDrawerDebugCommand {
            w: self.w,
            h: self.h,
        }
    }
}

impl CData for SSetSizeGraphDrawerDebugCommand {}

// Add Overlay Texture data
pub struct AddOverlayTextureDrawerDebugCommandData {
    pub texture_data: Vec<f32>,
    pub w: i32,
    pub h: i32,
}

impl CommandData for AddOverlayTextureDrawerDebugCommandData {
    type CDataType = SAddOverlayTextureDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SAddOverlayTextureDrawerDebugCommand {
            texData: self.texture_data.as_ptr(),
            w: self.w,
            h: self.h,
            ret_overlayTextureId: 0,
        }
    }
}

impl CData for SAddOverlayTextureDrawerDebugCommand {}

// Delete Overlay Texture data
pub struct DeleteOverlayTextureDrawerDebugCommandData {
    pub overlay_texture_id: i32,
}

impl CommandData for DeleteOverlayTextureDrawerDebugCommandData {
    type CDataType = SDeleteOverlayTextureDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SDeleteOverlayTextureDrawerDebugCommand {
            overlayTextureId: self.overlay_texture_id,
        }
    }
}

impl CData for SDeleteOverlayTextureDrawerDebugCommand {}

// Set Overlay Texture Label data
pub struct SetLabelOverlayTextureDrawerDebugCommandData {
    pub overlay_texture_id: i32,
    pub label: CString,
}

impl CommandData for SetLabelOverlayTextureDrawerDebugCommandData {
    type CDataType = SSetLabelOverlayTextureDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetLabelOverlayTextureDrawerDebugCommand {
            overlayTextureId: self.overlay_texture_id,
            label: self.label.as_ptr(),
        }
    }
}

impl CData for SSetLabelOverlayTextureDrawerDebugCommand {}

// Set Overlay Texture Position data
pub struct SetPositionOverlayTextureDrawerDebugCommandData {
    pub overlay_texture_id: i32,
    pub x: f32,
    pub y: f32,
}

impl CommandData for SetPositionOverlayTextureDrawerDebugCommandData {
    type CDataType = SSetPositionOverlayTextureDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetPositionOverlayTextureDrawerDebugCommand {
            overlayTextureId: self.overlay_texture_id,
            x: self.x,
            y: self.y,
        }
    }
}

impl CData for SSetPositionOverlayTextureDrawerDebugCommand {}

// Set Overlay Texture Size data
pub struct SetSizeOverlayTextureDrawerDebugCommandData {
    pub overlay_texture_id: i32,
    pub w: f32,
    pub h: f32,
}

impl CommandData for SetSizeOverlayTextureDrawerDebugCommandData {
    type CDataType = SSetSizeOverlayTextureDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SSetSizeOverlayTextureDrawerDebugCommand {
            overlayTextureId: self.overlay_texture_id,
            w: self.w,
            h: self.h,
        }
    }
}

impl CData for SSetSizeOverlayTextureDrawerDebugCommand {}

// Update Overlay Texture data
pub struct UpdateOverlayTextureDrawerDebugCommandData {
    pub overlay_texture_id: i32,
    pub tex_data: Vec<f32>,
    pub x: i32,
    pub y: i32,
    pub w: i32,
    pub h: i32,
}

impl CommandData for UpdateOverlayTextureDrawerDebugCommandData {
    type CDataType = SUpdateOverlayTextureDrawerDebugCommand;

    fn c_data(&mut self) -> Self::CDataType {
        SUpdateOverlayTextureDrawerDebugCommand {
            overlayTextureId: self.overlay_texture_id,
            texData: self.tex_data.as_ptr(),
            x: self.x,
            y: self.y,
            w: self.w,
            h: self.h,
        }
    }
}

impl CData for SUpdateOverlayTextureDrawerDebugCommand {}