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}