Skip to main content

samp_sdk/omp/generated/
textdraw.rs

1//! `ITextDraw` — generated by `cargo xtask gen-omp` from `Server/Components/TextDraws/textdraws.hpp`.
2//! Implemented by `TextDraw` 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
18slots! {
19    /// `Vector2 ITextDrawBase::getPosition()`
20    SLOT_GET_POSITION: usize = 6, 5;
21    /// `ITextDrawBase & ITextDrawBase::setPosition(Vector2)`
22    SLOT_SET_POSITION: usize = 7, 6;
23    /// `void ITextDrawBase::setText(StringView)`
24    SLOT_SET_TEXT: usize = 8, 7;
25    /// `StringView ITextDrawBase::getText()`
26    SLOT_GET_TEXT: usize = 9, 8;
27    /// `ITextDrawBase & ITextDrawBase::setLetterSize(Vector2)`
28    SLOT_SET_LETTER_SIZE: usize = 10, 9;
29    /// `Vector2 ITextDrawBase::getLetterSize()`
30    SLOT_GET_LETTER_SIZE: usize = 11, 10;
31    /// `ITextDrawBase & ITextDrawBase::setTextSize(Vector2)`
32    SLOT_SET_TEXT_SIZE: usize = 12, 11;
33    /// `Vector2 ITextDrawBase::getTextSize()`
34    SLOT_GET_TEXT_SIZE: usize = 13, 12;
35    /// `ITextDrawBase & ITextDrawBase::setAlignment(TextDrawAlignmentTypes)`
36    SLOT_SET_ALIGNMENT: usize = 14, 13;
37    /// `TextDrawAlignmentTypes ITextDrawBase::getAlignment()`
38    SLOT_GET_ALIGNMENT: usize = 15, 14;
39    /// `ITextDrawBase & ITextDrawBase::setColour(Colour)`
40    SLOT_SET_COLOUR: usize = 16, 15;
41    /// `Colour ITextDrawBase::getLetterColour()`
42    SLOT_GET_LETTER_COLOUR: usize = 17, 16;
43    /// `ITextDrawBase & ITextDrawBase::useBox(bool)`
44    SLOT_USE_BOX: usize = 18, 17;
45    /// `bool ITextDrawBase::hasBox()`
46    SLOT_HAS_BOX: usize = 19, 18;
47    /// `ITextDrawBase & ITextDrawBase::setBoxColour(Colour)`
48    SLOT_SET_BOX_COLOUR: usize = 20, 19;
49    /// `Colour ITextDrawBase::getBoxColour()`
50    SLOT_GET_BOX_COLOUR: usize = 21, 20;
51    /// `ITextDrawBase & ITextDrawBase::setShadow(int)`
52    SLOT_SET_SHADOW: usize = 22, 21;
53    /// `int ITextDrawBase::getShadow()`
54    SLOT_GET_SHADOW: usize = 23, 22;
55    /// `ITextDrawBase & ITextDrawBase::setOutline(int)`
56    SLOT_SET_OUTLINE: usize = 24, 23;
57    /// `int ITextDrawBase::getOutline()`
58    SLOT_GET_OUTLINE: usize = 25, 24;
59    /// `ITextDrawBase & ITextDrawBase::setBackgroundColour(Colour)`
60    SLOT_SET_BACKGROUND_COLOUR: usize = 26, 25;
61    /// `Colour ITextDrawBase::getBackgroundColour()`
62    SLOT_GET_BACKGROUND_COLOUR: usize = 27, 26;
63    /// `ITextDrawBase & ITextDrawBase::setStyle(TextDrawStyle)`
64    SLOT_SET_STYLE: usize = 28, 27;
65    /// `TextDrawStyle ITextDrawBase::getStyle()`
66    SLOT_GET_STYLE: usize = 29, 28;
67    /// `ITextDrawBase & ITextDrawBase::setProportional(bool)`
68    SLOT_SET_PROPORTIONAL: usize = 30, 29;
69    /// `bool ITextDrawBase::isProportional()`
70    SLOT_IS_PROPORTIONAL: usize = 31, 30;
71    /// `ITextDrawBase & ITextDrawBase::setSelectable(bool)`
72    SLOT_SET_SELECTABLE: usize = 32, 31;
73    /// `bool ITextDrawBase::isSelectable()`
74    SLOT_IS_SELECTABLE: usize = 33, 32;
75    /// `ITextDrawBase & ITextDrawBase::setPreviewModel(int)`
76    SLOT_SET_PREVIEW_MODEL: usize = 34, 33;
77    /// `int ITextDrawBase::getPreviewModel()`
78    SLOT_GET_PREVIEW_MODEL: usize = 35, 34;
79    /// `ITextDrawBase & ITextDrawBase::setPreviewRotation(Vector3)`
80    SLOT_SET_PREVIEW_ROTATION: usize = 36, 35;
81    /// `Vector3 ITextDrawBase::getPreviewRotation()`
82    SLOT_GET_PREVIEW_ROTATION: usize = 37, 36;
83    /// `ITextDrawBase & ITextDrawBase::setPreviewVehicleColour(int, int)`
84    SLOT_SET_PREVIEW_VEHICLE_COLOUR: usize = 38, 37;
85    /// `Pair<int, int> ITextDrawBase::getPreviewVehicleColour()`
86    SLOT_GET_PREVIEW_VEHICLE_COLOUR: usize = 39, 38;
87    /// `ITextDrawBase & ITextDrawBase::setPreviewZoom(float)`
88    SLOT_SET_PREVIEW_ZOOM: usize = 40, 39;
89    /// `float ITextDrawBase::getPreviewZoom()`
90    SLOT_GET_PREVIEW_ZOOM: usize = 41, 40;
91    /// `void ITextDrawBase::restream()`
92    SLOT_RESTREAM: usize = 42, 41;
93    /// `void ITextDraw::showForPlayer(IPlayer &)`
94    SLOT_SHOW_FOR_PLAYER: usize = 43, 42;
95    /// `void ITextDraw::hideForPlayer(IPlayer &)`
96    SLOT_HIDE_FOR_PLAYER: usize = 44, 43;
97    /// `bool ITextDraw::isShownForPlayer(const IPlayer &)`
98    SLOT_IS_SHOWN_FOR_PLAYER: usize = 45, 44;
99    /// `void ITextDraw::setTextForPlayer(IPlayer &, StringView)`
100    SLOT_SET_TEXT_FOR_PLAYER: usize = 46, 45;
101}
102
103virtual_fns! {
104    /// `ITextDrawBase & ITextDrawBase::setPosition(Vector2)`.
105    ///
106    /// # Safety
107    /// `textdraw` must be a live `ITextDraw`.
108    pub fn textdraw_set_position(textdraw: ITextDraw, position: Vector2) = [0, SLOT_SET_POSITION];
109
110    /// `void ITextDrawBase::setText(StringView)`.
111    ///
112    /// # Safety
113    /// `textdraw` must be a live `ITextDraw`.
114    pub fn textdraw_set_text(textdraw: ITextDraw, text: StringView) = [0, SLOT_SET_TEXT];
115
116    /// `ITextDrawBase & ITextDrawBase::setLetterSize(Vector2)`.
117    ///
118    /// # Safety
119    /// `textdraw` must be a live `ITextDraw`.
120    pub fn textdraw_set_letter_size(textdraw: ITextDraw, size: Vector2) = [0, SLOT_SET_LETTER_SIZE];
121
122    /// `ITextDrawBase & ITextDrawBase::setTextSize(Vector2)`.
123    ///
124    /// # Safety
125    /// `textdraw` must be a live `ITextDraw`.
126    pub fn textdraw_set_text_size(textdraw: ITextDraw, size: Vector2) = [0, SLOT_SET_TEXT_SIZE];
127
128    /// `ITextDrawBase & ITextDrawBase::setAlignment(TextDrawAlignmentTypes)`.
129    ///
130    /// # Safety
131    /// `textdraw` must be a live `ITextDraw`.
132    pub fn textdraw_set_alignment(textdraw: ITextDraw, alignment: i32) = [0, SLOT_SET_ALIGNMENT];
133
134    /// `TextDrawAlignmentTypes ITextDrawBase::getAlignment()`.
135    ///
136    /// # Safety
137    /// `textdraw` must be a live `ITextDraw`.
138    #[must_use]
139    pub fn textdraw_alignment(textdraw: ITextDraw) -> i32 = [0, SLOT_GET_ALIGNMENT] or 0;
140
141    /// `ITextDrawBase & ITextDrawBase::setColour(Colour)`.
142    ///
143    /// # Safety
144    /// `textdraw` must be a live `ITextDraw`.
145    pub fn textdraw_set_colour(textdraw: ITextDraw, colour: Colour) = [0, SLOT_SET_COLOUR];
146
147    /// `ITextDrawBase & ITextDrawBase::useBox(bool)`.
148    ///
149    /// # Safety
150    /// `textdraw` must be a live `ITextDraw`.
151    pub fn textdraw_use_box(textdraw: ITextDraw, use_value: bool) = [0, SLOT_USE_BOX];
152
153    /// `bool ITextDrawBase::hasBox()`.
154    ///
155    /// # Safety
156    /// `textdraw` must be a live `ITextDraw`.
157    #[must_use]
158    pub fn textdraw_has_box(textdraw: ITextDraw) -> bool = [0, SLOT_HAS_BOX] or false;
159
160    /// `ITextDrawBase & ITextDrawBase::setBoxColour(Colour)`.
161    ///
162    /// # Safety
163    /// `textdraw` must be a live `ITextDraw`.
164    pub fn textdraw_set_box_colour(textdraw: ITextDraw, colour: Colour) = [0, SLOT_SET_BOX_COLOUR];
165
166    /// `ITextDrawBase & ITextDrawBase::setShadow(int)`.
167    ///
168    /// # Safety
169    /// `textdraw` must be a live `ITextDraw`.
170    pub fn textdraw_set_shadow(textdraw: ITextDraw, shadow: i32) = [0, SLOT_SET_SHADOW];
171
172    /// `int ITextDrawBase::getShadow()`.
173    ///
174    /// # Safety
175    /// `textdraw` must be a live `ITextDraw`.
176    #[must_use]
177    pub fn textdraw_shadow(textdraw: ITextDraw) -> i32 = [0, SLOT_GET_SHADOW] or 0;
178
179    /// `ITextDrawBase & ITextDrawBase::setOutline(int)`.
180    ///
181    /// # Safety
182    /// `textdraw` must be a live `ITextDraw`.
183    pub fn textdraw_set_outline(textdraw: ITextDraw, outline: i32) = [0, SLOT_SET_OUTLINE];
184
185    /// `int ITextDrawBase::getOutline()`.
186    ///
187    /// # Safety
188    /// `textdraw` must be a live `ITextDraw`.
189    #[must_use]
190    pub fn textdraw_outline(textdraw: ITextDraw) -> i32 = [0, SLOT_GET_OUTLINE] or 0;
191
192    /// `ITextDrawBase & ITextDrawBase::setBackgroundColour(Colour)`.
193    ///
194    /// # Safety
195    /// `textdraw` must be a live `ITextDraw`.
196    pub fn textdraw_set_background_colour(
197        textdraw: ITextDraw,
198        colour: Colour,
199    ) = [0, SLOT_SET_BACKGROUND_COLOUR];
200
201    /// `ITextDrawBase & ITextDrawBase::setStyle(TextDrawStyle)`.
202    ///
203    /// # Safety
204    /// `textdraw` must be a live `ITextDraw`.
205    pub fn textdraw_set_style(textdraw: ITextDraw, style: i32) = [0, SLOT_SET_STYLE];
206
207    /// `TextDrawStyle ITextDrawBase::getStyle()`.
208    ///
209    /// # Safety
210    /// `textdraw` must be a live `ITextDraw`.
211    #[must_use]
212    pub fn textdraw_style(textdraw: ITextDraw) -> i32 = [0, SLOT_GET_STYLE] or 0;
213
214    /// `ITextDrawBase & ITextDrawBase::setProportional(bool)`.
215    ///
216    /// # Safety
217    /// `textdraw` must be a live `ITextDraw`.
218    pub fn textdraw_set_proportional(
219        textdraw: ITextDraw,
220        proportional: bool,
221    ) = [0, SLOT_SET_PROPORTIONAL];
222
223    /// `bool ITextDrawBase::isProportional()`.
224    ///
225    /// # Safety
226    /// `textdraw` must be a live `ITextDraw`.
227    #[must_use]
228    pub fn textdraw_is_proportional(
229        textdraw: ITextDraw,
230    ) -> bool = [0, SLOT_IS_PROPORTIONAL] or false;
231
232    /// `ITextDrawBase & ITextDrawBase::setSelectable(bool)`.
233    ///
234    /// # Safety
235    /// `textdraw` must be a live `ITextDraw`.
236    pub fn textdraw_set_selectable(
237        textdraw: ITextDraw,
238        selectable: bool,
239    ) = [0, SLOT_SET_SELECTABLE];
240
241    /// `bool ITextDrawBase::isSelectable()`.
242    ///
243    /// # Safety
244    /// `textdraw` must be a live `ITextDraw`.
245    #[must_use]
246    pub fn textdraw_is_selectable(textdraw: ITextDraw) -> bool = [0, SLOT_IS_SELECTABLE] or false;
247
248    /// `ITextDrawBase & ITextDrawBase::setPreviewModel(int)`.
249    ///
250    /// # Safety
251    /// `textdraw` must be a live `ITextDraw`.
252    pub fn textdraw_set_preview_model(
253        textdraw: ITextDraw,
254        model: i32,
255    ) = [0, SLOT_SET_PREVIEW_MODEL];
256
257    /// `int ITextDrawBase::getPreviewModel()`.
258    ///
259    /// # Safety
260    /// `textdraw` must be a live `ITextDraw`.
261    #[must_use]
262    pub fn textdraw_preview_model(textdraw: ITextDraw) -> i32 = [0, SLOT_GET_PREVIEW_MODEL] or 0;
263
264    /// `ITextDrawBase & ITextDrawBase::setPreviewRotation(Vector3)`.
265    ///
266    /// # Safety
267    /// `textdraw` must be a live `ITextDraw`.
268    pub fn textdraw_set_preview_rotation(
269        textdraw: ITextDraw,
270        rotation: Vector3,
271    ) = [0, SLOT_SET_PREVIEW_ROTATION];
272
273    /// `Vector3 ITextDrawBase::getPreviewRotation()`.
274    ///
275    /// # Safety
276    /// `textdraw` must be a live `ITextDraw`.
277    #[must_use]
278    pub fn textdraw_preview_rotation(
279        textdraw: ITextDraw,
280    ) -> Vector3 = [0, SLOT_GET_PREVIEW_ROTATION] or Vector3::ZERO;
281
282    /// `ITextDrawBase & ITextDrawBase::setPreviewVehicleColour(int, int)`.
283    ///
284    /// # Safety
285    /// `textdraw` must be a live `ITextDraw`.
286    pub fn textdraw_set_preview_vehicle_colour(
287        textdraw: ITextDraw,
288        colour1: i32,
289        colour2: i32,
290    ) = [0, SLOT_SET_PREVIEW_VEHICLE_COLOUR];
291
292    /// `ITextDrawBase & ITextDrawBase::setPreviewZoom(float)`.
293    ///
294    /// # Safety
295    /// `textdraw` must be a live `ITextDraw`.
296    pub fn textdraw_set_preview_zoom(textdraw: ITextDraw, zoom: f32) = [0, SLOT_SET_PREVIEW_ZOOM];
297
298    /// `float ITextDrawBase::getPreviewZoom()`.
299    ///
300    /// # Safety
301    /// `textdraw` must be a live `ITextDraw`.
302    #[must_use]
303    pub fn textdraw_preview_zoom(textdraw: ITextDraw) -> f32 = [0, SLOT_GET_PREVIEW_ZOOM] or 0.0;
304
305    /// `void ITextDrawBase::restream()`.
306    ///
307    /// # Safety
308    /// `textdraw` must be a live `ITextDraw`.
309    pub fn textdraw_restream(textdraw: ITextDraw) = [0, SLOT_RESTREAM];
310
311    /// `void ITextDraw::showForPlayer(IPlayer &)`.
312    ///
313    /// # Safety
314    /// `textdraw` must be a live `ITextDraw`.
315    pub fn textdraw_show_for_player(
316        textdraw: ITextDraw,
317        player: *mut IPlayer,
318    ) = [0, SLOT_SHOW_FOR_PLAYER];
319
320    /// `void ITextDraw::hideForPlayer(IPlayer &)`.
321    ///
322    /// # Safety
323    /// `textdraw` must be a live `ITextDraw`.
324    pub fn textdraw_hide_for_player(
325        textdraw: ITextDraw,
326        player: *mut IPlayer,
327    ) = [0, SLOT_HIDE_FOR_PLAYER];
328
329    /// `bool ITextDraw::isShownForPlayer(const IPlayer &)`.
330    ///
331    /// # Safety
332    /// `textdraw` must be a live `ITextDraw`.
333    #[must_use]
334    pub fn textdraw_is_shown_for_player(
335        textdraw: ITextDraw,
336        player: *mut IPlayer,
337    ) -> bool = [0, SLOT_IS_SHOWN_FOR_PLAYER] or false;
338
339    /// `void ITextDraw::setTextForPlayer(IPlayer &, StringView)`.
340    ///
341    /// # Safety
342    /// `textdraw` must be a live `ITextDraw`.
343    pub fn textdraw_set_text_for_player(
344        textdraw: ITextDraw,
345        player: *mut IPlayer,
346        text: StringView,
347    ) = [0, SLOT_SET_TEXT_FOR_PLAYER];
348}
349
350/// `Vector2 ITextDrawBase::getPosition()`.
351///
352/// # Safety
353/// `textdraw` must be a live `ITextDraw`.
354#[must_use]
355pub unsafe fn textdraw_position(textdraw: *mut ITextDraw) -> Option<Vector2> {
356    call_vtable_small_struct!(
357        textdraw.cast::<u8>(),
358        0,
359        SLOT_GET_POSITION,
360        Vector2,
361        Vector2::default()
362    )
363}
364
365/// `StringView ITextDrawBase::getText()`.
366///
367/// # Safety
368/// `textdraw` must be a live `ITextDraw`.
369#[must_use]
370pub unsafe fn textdraw_text(textdraw: *mut ITextDraw) -> Option<String> {
371    let view = call_vtable_small_struct!(
372        textdraw.cast::<u8>(),
373        0,
374        SLOT_GET_TEXT,
375        StringView,
376        StringView::EMPTY
377    )?;
378    unsafe { view.to_owned_string() }
379}
380
381/// `Vector2 ITextDrawBase::getLetterSize()`.
382///
383/// # Safety
384/// `textdraw` must be a live `ITextDraw`.
385#[must_use]
386pub unsafe fn textdraw_letter_size(textdraw: *mut ITextDraw) -> Option<Vector2> {
387    call_vtable_small_struct!(
388        textdraw.cast::<u8>(),
389        0,
390        SLOT_GET_LETTER_SIZE,
391        Vector2,
392        Vector2::default()
393    )
394}
395
396/// `Vector2 ITextDrawBase::getTextSize()`.
397///
398/// # Safety
399/// `textdraw` must be a live `ITextDraw`.
400#[must_use]
401pub unsafe fn textdraw_text_size(textdraw: *mut ITextDraw) -> Option<Vector2> {
402    call_vtable_small_struct!(
403        textdraw.cast::<u8>(),
404        0,
405        SLOT_GET_TEXT_SIZE,
406        Vector2,
407        Vector2::default()
408    )
409}
410
411/// `Colour ITextDrawBase::getLetterColour()`.
412///
413/// # Safety
414/// `textdraw` must be a live `ITextDraw`.
415#[must_use]
416pub unsafe fn textdraw_letter_colour(textdraw: *mut ITextDraw) -> Option<Colour> {
417    call_vtable_small_struct!(
418        textdraw.cast::<u8>(),
419        0,
420        SLOT_GET_LETTER_COLOUR,
421        Colour,
422        Colour::default()
423    )
424}
425
426/// `Colour ITextDrawBase::getBoxColour()`.
427///
428/// # Safety
429/// `textdraw` must be a live `ITextDraw`.
430#[must_use]
431pub unsafe fn textdraw_box_colour(textdraw: *mut ITextDraw) -> Option<Colour> {
432    call_vtable_small_struct!(
433        textdraw.cast::<u8>(),
434        0,
435        SLOT_GET_BOX_COLOUR,
436        Colour,
437        Colour::default()
438    )
439}
440
441/// `Colour ITextDrawBase::getBackgroundColour()`.
442///
443/// # Safety
444/// `textdraw` must be a live `ITextDraw`.
445#[must_use]
446pub unsafe fn textdraw_background_colour(textdraw: *mut ITextDraw) -> Option<Colour> {
447    call_vtable_small_struct!(
448        textdraw.cast::<u8>(),
449        0,
450        SLOT_GET_BACKGROUND_COLOUR,
451        Colour,
452        Colour::default()
453    )
454}
455
456/// `Pair<int, int> ITextDrawBase::getPreviewVehicleColour()`.
457///
458/// # Safety
459/// `textdraw` must be a live `ITextDraw`.
460#[must_use]
461pub unsafe fn textdraw_preview_vehicle_colour(textdraw: *mut ITextDraw) -> Option<Pair<i32, i32>> {
462    call_vtable_small_struct!(textdraw.cast::<u8>(), 0, SLOT_GET_PREVIEW_VEHICLE_COLOUR, Pair<i32, i32>, unsafe { std::mem::zeroed::<Pair<i32, i32>>() })
463}