Skip to main content

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}