samp_sdk/omp/generated/player_textdraw.rs
1//! `IPlayerTextDraw` — generated by `cargo xtask gen-omp` from `Server/Components/TextDraws/textdraws.hpp`.
2//! Implemented by `PlayerTextDraw` in the server's `TextDraws`.
3//!
4//! Do not edit: change `xtask/omp-wrappers.toml` or the generator and
5//! regenerate. Slots are clang's layout of the header for each ABI, checked
6//! against the official binaries by `cargo xtask check-abi --generated`.
7
8#![allow(unused_imports)]
9
10use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
11use crate::omp::types::{
12 Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, StringView, TimePoint,
13 UID, Vector2, Vector3, Vector4, WorldTimePoint,
14};
15use crate::omp::vtable::{call_vtable_small_struct, opaque, slots, virtual_fns};
16use crate::omp::*;
17
18opaque! {
19 /// Opaque handle for `IPlayerTextDraw*`.
20 pub IPlayerTextDraw;
21}
22
23slots! {
24 /// `Vector2 ITextDrawBase::getPosition()`
25 SLOT_GET_POSITION: usize = 6, 5;
26 /// `ITextDrawBase & ITextDrawBase::setPosition(Vector2)`
27 SLOT_SET_POSITION: usize = 7, 6;
28 /// `void ITextDrawBase::setText(StringView)`
29 SLOT_SET_TEXT: usize = 8, 7;
30 /// `StringView ITextDrawBase::getText()`
31 SLOT_GET_TEXT: usize = 9, 8;
32 /// `ITextDrawBase & ITextDrawBase::setLetterSize(Vector2)`
33 SLOT_SET_LETTER_SIZE: usize = 10, 9;
34 /// `Vector2 ITextDrawBase::getLetterSize()`
35 SLOT_GET_LETTER_SIZE: usize = 11, 10;
36 /// `ITextDrawBase & ITextDrawBase::setTextSize(Vector2)`
37 SLOT_SET_TEXT_SIZE: usize = 12, 11;
38 /// `Vector2 ITextDrawBase::getTextSize()`
39 SLOT_GET_TEXT_SIZE: usize = 13, 12;
40 /// `ITextDrawBase & ITextDrawBase::setAlignment(TextDrawAlignmentTypes)`
41 SLOT_SET_ALIGNMENT: usize = 14, 13;
42 /// `TextDrawAlignmentTypes ITextDrawBase::getAlignment()`
43 SLOT_GET_ALIGNMENT: usize = 15, 14;
44 /// `ITextDrawBase & ITextDrawBase::setColour(Colour)`
45 SLOT_SET_COLOUR: usize = 16, 15;
46 /// `Colour ITextDrawBase::getLetterColour()`
47 SLOT_GET_LETTER_COLOUR: usize = 17, 16;
48 /// `ITextDrawBase & ITextDrawBase::useBox(bool)`
49 SLOT_USE_BOX: usize = 18, 17;
50 /// `bool ITextDrawBase::hasBox()`
51 SLOT_HAS_BOX: usize = 19, 18;
52 /// `ITextDrawBase & ITextDrawBase::setBoxColour(Colour)`
53 SLOT_SET_BOX_COLOUR: usize = 20, 19;
54 /// `Colour ITextDrawBase::getBoxColour()`
55 SLOT_GET_BOX_COLOUR: usize = 21, 20;
56 /// `ITextDrawBase & ITextDrawBase::setShadow(int)`
57 SLOT_SET_SHADOW: usize = 22, 21;
58 /// `int ITextDrawBase::getShadow()`
59 SLOT_GET_SHADOW: usize = 23, 22;
60 /// `ITextDrawBase & ITextDrawBase::setOutline(int)`
61 SLOT_SET_OUTLINE: usize = 24, 23;
62 /// `int ITextDrawBase::getOutline()`
63 SLOT_GET_OUTLINE: usize = 25, 24;
64 /// `ITextDrawBase & ITextDrawBase::setBackgroundColour(Colour)`
65 SLOT_SET_BACKGROUND_COLOUR: usize = 26, 25;
66 /// `Colour ITextDrawBase::getBackgroundColour()`
67 SLOT_GET_BACKGROUND_COLOUR: usize = 27, 26;
68 /// `ITextDrawBase & ITextDrawBase::setStyle(TextDrawStyle)`
69 SLOT_SET_STYLE: usize = 28, 27;
70 /// `TextDrawStyle ITextDrawBase::getStyle()`
71 SLOT_GET_STYLE: usize = 29, 28;
72 /// `ITextDrawBase & ITextDrawBase::setProportional(bool)`
73 SLOT_SET_PROPORTIONAL: usize = 30, 29;
74 /// `bool ITextDrawBase::isProportional()`
75 SLOT_IS_PROPORTIONAL: usize = 31, 30;
76 /// `ITextDrawBase & ITextDrawBase::setSelectable(bool)`
77 SLOT_SET_SELECTABLE: usize = 32, 31;
78 /// `bool ITextDrawBase::isSelectable()`
79 SLOT_IS_SELECTABLE: usize = 33, 32;
80 /// `ITextDrawBase & ITextDrawBase::setPreviewModel(int)`
81 SLOT_SET_PREVIEW_MODEL: usize = 34, 33;
82 /// `int ITextDrawBase::getPreviewModel()`
83 SLOT_GET_PREVIEW_MODEL: usize = 35, 34;
84 /// `ITextDrawBase & ITextDrawBase::setPreviewRotation(Vector3)`
85 SLOT_SET_PREVIEW_ROTATION: usize = 36, 35;
86 /// `Vector3 ITextDrawBase::getPreviewRotation()`
87 SLOT_GET_PREVIEW_ROTATION: usize = 37, 36;
88 /// `ITextDrawBase & ITextDrawBase::setPreviewVehicleColour(int, int)`
89 SLOT_SET_PREVIEW_VEHICLE_COLOUR: usize = 38, 37;
90 /// `Pair<int, int> ITextDrawBase::getPreviewVehicleColour()`
91 SLOT_GET_PREVIEW_VEHICLE_COLOUR: usize = 39, 38;
92 /// `ITextDrawBase & ITextDrawBase::setPreviewZoom(float)`
93 SLOT_SET_PREVIEW_ZOOM: usize = 40, 39;
94 /// `float ITextDrawBase::getPreviewZoom()`
95 SLOT_GET_PREVIEW_ZOOM: usize = 41, 40;
96 /// `void ITextDrawBase::restream()`
97 SLOT_RESTREAM: usize = 42, 41;
98 /// `void IPlayerTextDraw::show()`
99 SLOT_SHOW: usize = 43, 42;
100 /// `void IPlayerTextDraw::hide()`
101 SLOT_HIDE: usize = 44, 43;
102 /// `bool IPlayerTextDraw::isShown()`
103 SLOT_IS_SHOWN: usize = 45, 44;
104}
105
106virtual_fns! {
107 /// `ITextDrawBase & ITextDrawBase::setPosition(Vector2)`.
108 ///
109 /// # Safety
110 /// `player_textdraw` must be a live `IPlayerTextDraw`.
111 pub fn player_textdraw_set_position(
112 player_textdraw: IPlayerTextDraw,
113 position: Vector2,
114 ) = [0, SLOT_SET_POSITION];
115
116 /// `void ITextDrawBase::setText(StringView)`.
117 ///
118 /// # Safety
119 /// `player_textdraw` must be a live `IPlayerTextDraw`.
120 pub fn player_textdraw_set_text(
121 player_textdraw: IPlayerTextDraw,
122 text: StringView,
123 ) = [0, SLOT_SET_TEXT];
124
125 /// `ITextDrawBase & ITextDrawBase::setLetterSize(Vector2)`.
126 ///
127 /// # Safety
128 /// `player_textdraw` must be a live `IPlayerTextDraw`.
129 pub fn player_textdraw_set_letter_size(
130 player_textdraw: IPlayerTextDraw,
131 size: Vector2,
132 ) = [0, SLOT_SET_LETTER_SIZE];
133
134 /// `ITextDrawBase & ITextDrawBase::setTextSize(Vector2)`.
135 ///
136 /// # Safety
137 /// `player_textdraw` must be a live `IPlayerTextDraw`.
138 pub fn player_textdraw_set_text_size(
139 player_textdraw: IPlayerTextDraw,
140 size: Vector2,
141 ) = [0, SLOT_SET_TEXT_SIZE];
142
143 /// `ITextDrawBase & ITextDrawBase::setAlignment(TextDrawAlignmentTypes)`.
144 ///
145 /// # Safety
146 /// `player_textdraw` must be a live `IPlayerTextDraw`.
147 pub fn player_textdraw_set_alignment(
148 player_textdraw: IPlayerTextDraw,
149 alignment: i32,
150 ) = [0, SLOT_SET_ALIGNMENT];
151
152 /// `TextDrawAlignmentTypes ITextDrawBase::getAlignment()`.
153 ///
154 /// # Safety
155 /// `player_textdraw` must be a live `IPlayerTextDraw`.
156 #[must_use]
157 pub fn player_textdraw_alignment(
158 player_textdraw: IPlayerTextDraw,
159 ) -> i32 = [0, SLOT_GET_ALIGNMENT] or 0;
160
161 /// `ITextDrawBase & ITextDrawBase::setColour(Colour)`.
162 ///
163 /// # Safety
164 /// `player_textdraw` must be a live `IPlayerTextDraw`.
165 pub fn player_textdraw_set_colour(
166 player_textdraw: IPlayerTextDraw,
167 colour: Colour,
168 ) = [0, SLOT_SET_COLOUR];
169
170 /// `ITextDrawBase & ITextDrawBase::useBox(bool)`.
171 ///
172 /// # Safety
173 /// `player_textdraw` must be a live `IPlayerTextDraw`.
174 pub fn player_textdraw_use_box(
175 player_textdraw: IPlayerTextDraw,
176 use_value: bool,
177 ) = [0, SLOT_USE_BOX];
178
179 /// `bool ITextDrawBase::hasBox()`.
180 ///
181 /// # Safety
182 /// `player_textdraw` must be a live `IPlayerTextDraw`.
183 #[must_use]
184 pub fn player_textdraw_has_box(
185 player_textdraw: IPlayerTextDraw,
186 ) -> bool = [0, SLOT_HAS_BOX] or false;
187
188 /// `ITextDrawBase & ITextDrawBase::setBoxColour(Colour)`.
189 ///
190 /// # Safety
191 /// `player_textdraw` must be a live `IPlayerTextDraw`.
192 pub fn player_textdraw_set_box_colour(
193 player_textdraw: IPlayerTextDraw,
194 colour: Colour,
195 ) = [0, SLOT_SET_BOX_COLOUR];
196
197 /// `ITextDrawBase & ITextDrawBase::setShadow(int)`.
198 ///
199 /// # Safety
200 /// `player_textdraw` must be a live `IPlayerTextDraw`.
201 pub fn player_textdraw_set_shadow(
202 player_textdraw: IPlayerTextDraw,
203 shadow: i32,
204 ) = [0, SLOT_SET_SHADOW];
205
206 /// `int ITextDrawBase::getShadow()`.
207 ///
208 /// # Safety
209 /// `player_textdraw` must be a live `IPlayerTextDraw`.
210 #[must_use]
211 pub fn player_textdraw_shadow(
212 player_textdraw: IPlayerTextDraw,
213 ) -> i32 = [0, SLOT_GET_SHADOW] or 0;
214
215 /// `ITextDrawBase & ITextDrawBase::setOutline(int)`.
216 ///
217 /// # Safety
218 /// `player_textdraw` must be a live `IPlayerTextDraw`.
219 pub fn player_textdraw_set_outline(
220 player_textdraw: IPlayerTextDraw,
221 outline: i32,
222 ) = [0, SLOT_SET_OUTLINE];
223
224 /// `int ITextDrawBase::getOutline()`.
225 ///
226 /// # Safety
227 /// `player_textdraw` must be a live `IPlayerTextDraw`.
228 #[must_use]
229 pub fn player_textdraw_outline(
230 player_textdraw: IPlayerTextDraw,
231 ) -> i32 = [0, SLOT_GET_OUTLINE] or 0;
232
233 /// `ITextDrawBase & ITextDrawBase::setBackgroundColour(Colour)`.
234 ///
235 /// # Safety
236 /// `player_textdraw` must be a live `IPlayerTextDraw`.
237 pub fn player_textdraw_set_background_colour(
238 player_textdraw: IPlayerTextDraw,
239 colour: Colour,
240 ) = [0, SLOT_SET_BACKGROUND_COLOUR];
241
242 /// `ITextDrawBase & ITextDrawBase::setStyle(TextDrawStyle)`.
243 ///
244 /// # Safety
245 /// `player_textdraw` must be a live `IPlayerTextDraw`.
246 pub fn player_textdraw_set_style(
247 player_textdraw: IPlayerTextDraw,
248 style: i32,
249 ) = [0, SLOT_SET_STYLE];
250
251 /// `TextDrawStyle ITextDrawBase::getStyle()`.
252 ///
253 /// # Safety
254 /// `player_textdraw` must be a live `IPlayerTextDraw`.
255 #[must_use]
256 pub fn player_textdraw_style(
257 player_textdraw: IPlayerTextDraw,
258 ) -> i32 = [0, SLOT_GET_STYLE] or 0;
259
260 /// `ITextDrawBase & ITextDrawBase::setProportional(bool)`.
261 ///
262 /// # Safety
263 /// `player_textdraw` must be a live `IPlayerTextDraw`.
264 pub fn player_textdraw_set_proportional(
265 player_textdraw: IPlayerTextDraw,
266 proportional: bool,
267 ) = [0, SLOT_SET_PROPORTIONAL];
268
269 /// `bool ITextDrawBase::isProportional()`.
270 ///
271 /// # Safety
272 /// `player_textdraw` must be a live `IPlayerTextDraw`.
273 #[must_use]
274 pub fn player_textdraw_is_proportional(
275 player_textdraw: IPlayerTextDraw,
276 ) -> bool = [0, SLOT_IS_PROPORTIONAL] or false;
277
278 /// `ITextDrawBase & ITextDrawBase::setSelectable(bool)`.
279 ///
280 /// # Safety
281 /// `player_textdraw` must be a live `IPlayerTextDraw`.
282 pub fn player_textdraw_set_selectable(
283 player_textdraw: IPlayerTextDraw,
284 selectable: bool,
285 ) = [0, SLOT_SET_SELECTABLE];
286
287 /// `bool ITextDrawBase::isSelectable()`.
288 ///
289 /// # Safety
290 /// `player_textdraw` must be a live `IPlayerTextDraw`.
291 #[must_use]
292 pub fn player_textdraw_is_selectable(
293 player_textdraw: IPlayerTextDraw,
294 ) -> bool = [0, SLOT_IS_SELECTABLE] or false;
295
296 /// `ITextDrawBase & ITextDrawBase::setPreviewModel(int)`.
297 ///
298 /// # Safety
299 /// `player_textdraw` must be a live `IPlayerTextDraw`.
300 pub fn player_textdraw_set_preview_model(
301 player_textdraw: IPlayerTextDraw,
302 model: i32,
303 ) = [0, SLOT_SET_PREVIEW_MODEL];
304
305 /// `int ITextDrawBase::getPreviewModel()`.
306 ///
307 /// # Safety
308 /// `player_textdraw` must be a live `IPlayerTextDraw`.
309 #[must_use]
310 pub fn player_textdraw_preview_model(
311 player_textdraw: IPlayerTextDraw,
312 ) -> i32 = [0, SLOT_GET_PREVIEW_MODEL] or 0;
313
314 /// `ITextDrawBase & ITextDrawBase::setPreviewRotation(Vector3)`.
315 ///
316 /// # Safety
317 /// `player_textdraw` must be a live `IPlayerTextDraw`.
318 pub fn player_textdraw_set_preview_rotation(
319 player_textdraw: IPlayerTextDraw,
320 rotation: Vector3,
321 ) = [0, SLOT_SET_PREVIEW_ROTATION];
322
323 /// `Vector3 ITextDrawBase::getPreviewRotation()`.
324 ///
325 /// # Safety
326 /// `player_textdraw` must be a live `IPlayerTextDraw`.
327 #[must_use]
328 pub fn player_textdraw_preview_rotation(
329 player_textdraw: IPlayerTextDraw,
330 ) -> Vector3 = [0, SLOT_GET_PREVIEW_ROTATION] or Vector3::ZERO;
331
332 /// `ITextDrawBase & ITextDrawBase::setPreviewVehicleColour(int, int)`.
333 ///
334 /// # Safety
335 /// `player_textdraw` must be a live `IPlayerTextDraw`.
336 pub fn player_textdraw_set_preview_vehicle_colour(
337 player_textdraw: IPlayerTextDraw,
338 colour1: i32,
339 colour2: i32,
340 ) = [0, SLOT_SET_PREVIEW_VEHICLE_COLOUR];
341
342 /// `ITextDrawBase & ITextDrawBase::setPreviewZoom(float)`.
343 ///
344 /// # Safety
345 /// `player_textdraw` must be a live `IPlayerTextDraw`.
346 pub fn player_textdraw_set_preview_zoom(
347 player_textdraw: IPlayerTextDraw,
348 zoom: f32,
349 ) = [0, SLOT_SET_PREVIEW_ZOOM];
350
351 /// `float ITextDrawBase::getPreviewZoom()`.
352 ///
353 /// # Safety
354 /// `player_textdraw` must be a live `IPlayerTextDraw`.
355 #[must_use]
356 pub fn player_textdraw_preview_zoom(
357 player_textdraw: IPlayerTextDraw,
358 ) -> f32 = [0, SLOT_GET_PREVIEW_ZOOM] or 0.0;
359
360 /// `void ITextDrawBase::restream()`.
361 ///
362 /// # Safety
363 /// `player_textdraw` must be a live `IPlayerTextDraw`.
364 pub fn player_textdraw_restream(player_textdraw: IPlayerTextDraw) = [0, SLOT_RESTREAM];
365
366 /// `void IPlayerTextDraw::show()`.
367 ///
368 /// # Safety
369 /// `player_textdraw` must be a live `IPlayerTextDraw`.
370 pub fn player_textdraw_show(player_textdraw: IPlayerTextDraw) = [0, SLOT_SHOW];
371
372 /// `void IPlayerTextDraw::hide()`.
373 ///
374 /// # Safety
375 /// `player_textdraw` must be a live `IPlayerTextDraw`.
376 pub fn player_textdraw_hide(player_textdraw: IPlayerTextDraw) = [0, SLOT_HIDE];
377
378 /// `bool IPlayerTextDraw::isShown()`.
379 ///
380 /// # Safety
381 /// `player_textdraw` must be a live `IPlayerTextDraw`.
382 #[must_use]
383 pub fn player_textdraw_is_shown(
384 player_textdraw: IPlayerTextDraw,
385 ) -> bool = [0, SLOT_IS_SHOWN] or false;
386}
387
388/// `Vector2 ITextDrawBase::getPosition()`.
389///
390/// # Safety
391/// `player_textdraw` must be a live `IPlayerTextDraw`.
392#[must_use]
393pub unsafe fn player_textdraw_position(player_textdraw: *mut IPlayerTextDraw) -> Option<Vector2> {
394 call_vtable_small_struct!(
395 player_textdraw.cast::<u8>(),
396 0,
397 SLOT_GET_POSITION,
398 Vector2,
399 Vector2::default()
400 )
401}
402
403/// `StringView ITextDrawBase::getText()`.
404///
405/// # Safety
406/// `player_textdraw` must be a live `IPlayerTextDraw`.
407#[must_use]
408pub unsafe fn player_textdraw_text(player_textdraw: *mut IPlayerTextDraw) -> Option<String> {
409 let view = call_vtable_small_struct!(
410 player_textdraw.cast::<u8>(),
411 0,
412 SLOT_GET_TEXT,
413 StringView,
414 StringView::EMPTY
415 )?;
416 unsafe { view.to_owned_string() }
417}
418
419/// `Vector2 ITextDrawBase::getLetterSize()`.
420///
421/// # Safety
422/// `player_textdraw` must be a live `IPlayerTextDraw`.
423#[must_use]
424pub unsafe fn player_textdraw_letter_size(
425 player_textdraw: *mut IPlayerTextDraw,
426) -> Option<Vector2> {
427 call_vtable_small_struct!(
428 player_textdraw.cast::<u8>(),
429 0,
430 SLOT_GET_LETTER_SIZE,
431 Vector2,
432 Vector2::default()
433 )
434}
435
436/// `Vector2 ITextDrawBase::getTextSize()`.
437///
438/// # Safety
439/// `player_textdraw` must be a live `IPlayerTextDraw`.
440#[must_use]
441pub unsafe fn player_textdraw_text_size(player_textdraw: *mut IPlayerTextDraw) -> Option<Vector2> {
442 call_vtable_small_struct!(
443 player_textdraw.cast::<u8>(),
444 0,
445 SLOT_GET_TEXT_SIZE,
446 Vector2,
447 Vector2::default()
448 )
449}
450
451/// `Colour ITextDrawBase::getLetterColour()`.
452///
453/// # Safety
454/// `player_textdraw` must be a live `IPlayerTextDraw`.
455#[must_use]
456pub unsafe fn player_textdraw_letter_colour(
457 player_textdraw: *mut IPlayerTextDraw,
458) -> Option<Colour> {
459 call_vtable_small_struct!(
460 player_textdraw.cast::<u8>(),
461 0,
462 SLOT_GET_LETTER_COLOUR,
463 Colour,
464 Colour::default()
465 )
466}
467
468/// `Colour ITextDrawBase::getBoxColour()`.
469///
470/// # Safety
471/// `player_textdraw` must be a live `IPlayerTextDraw`.
472#[must_use]
473pub unsafe fn player_textdraw_box_colour(player_textdraw: *mut IPlayerTextDraw) -> Option<Colour> {
474 call_vtable_small_struct!(
475 player_textdraw.cast::<u8>(),
476 0,
477 SLOT_GET_BOX_COLOUR,
478 Colour,
479 Colour::default()
480 )
481}
482
483/// `Colour ITextDrawBase::getBackgroundColour()`.
484///
485/// # Safety
486/// `player_textdraw` must be a live `IPlayerTextDraw`.
487#[must_use]
488pub unsafe fn player_textdraw_background_colour(
489 player_textdraw: *mut IPlayerTextDraw,
490) -> Option<Colour> {
491 call_vtable_small_struct!(
492 player_textdraw.cast::<u8>(),
493 0,
494 SLOT_GET_BACKGROUND_COLOUR,
495 Colour,
496 Colour::default()
497 )
498}
499
500/// `Pair<int, int> ITextDrawBase::getPreviewVehicleColour()`.
501///
502/// # Safety
503/// `player_textdraw` must be a live `IPlayerTextDraw`.
504#[must_use]
505pub unsafe fn player_textdraw_preview_vehicle_colour(
506 player_textdraw: *mut IPlayerTextDraw,
507) -> Option<Pair<i32, i32>> {
508 call_vtable_small_struct!(player_textdraw.cast::<u8>(), 0, SLOT_GET_PREVIEW_VEHICLE_COLOUR, Pair<i32, i32>, unsafe { std::mem::zeroed::<Pair<i32, i32>>() })
509}