pub struct PaddingConstraint {
pub top: i32,
pub bottom: i32,
pub left: i32,
pub right: i32,
pub spacing: i32,
}Expand description
This struct stores padding constraints.
Fields§
§top: i32§bottom: i32§left: i32§right: i32§spacing: i32Implementations§
Source§impl PaddingConstraint
Implementation to create a new PaddingConstraint object.
impl PaddingConstraint
Implementation to create a new PaddingConstraint object.
Sourcepub fn new(top: i32, bottom: i32, left: i32, right: i32, spacing: i32) -> Self
pub fn new(top: i32, bottom: i32, left: i32, right: i32, spacing: i32) -> Self
Examples found in repository?
examples/layout.rs (line 43)
33pub fn main() {
34 let sdl_context = sdl2::init().unwrap();
35 let video_subsystem = sdl_context.video().unwrap();
36 let window = video_subsystem
37 .window("pushrod-render horizontal layout demo", 400, 300)
38 .position_centered()
39 .opengl()
40 .build()
41 .unwrap();
42 let mut engine = Engine::new(400, 300, 60);
43 let mut layout = HorizontalLayout::new(20, 20, 360, 80, PaddingConstraint::new(0, 0, 0, 0, 1));
44 let mut layout2 =
45 VerticalLayout::new(250, 120, 130, 160, PaddingConstraint::new(0, 0, 0, 0, 1));
46 let mut widget1 = BaseWidget::new(make_points_origin(), make_size(0, 0));
47
48 widget1
49 .get_config()
50 .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
51 widget1.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
52
53 let mut widget2 = BaseWidget::new(make_points_origin(), make_size(0, 0));
54
55 widget2
56 .get_config()
57 .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
58 widget2.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
59
60 let mut widget3 = BaseWidget::new(make_points_origin(), make_size(0, 0));
61
62 widget3
63 .get_config()
64 .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
65 widget3.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
66
67 let mut widget4 = BaseWidget::new(make_points_origin(), make_size(0, 0));
68
69 widget4
70 .get_config()
71 .set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
72 widget4.get_config().set_numeric(CONFIG_BORDER_WIDTH, 2);
73
74 let widget1_id = engine.add_widget(Box::new(widget1), String::from("widget1"));
75 let widget2_id = engine.add_widget(Box::new(widget2), String::from("widget2"));
76 let widget3_id = engine.add_widget(Box::new(widget3), String::from("widget3"));
77 let widget4_id = engine.add_widget(Box::new(widget4), String::from("widget4"));
78
79 layout.append_widget(widget1_id);
80 layout.append_widget(widget2_id);
81 layout2.append_widget(widget3_id);
82 layout2.append_widget(widget4_id);
83 engine.add_layout(Box::new(layout));
84 engine.add_layout(Box::new(layout2));
85
86 let mut text_widget1 = TextWidget::new(
87 String::from("assets/OpenSans-Regular.ttf"),
88 sdl2::ttf::FontStyle::NORMAL,
89 16,
90 TextJustify::Right,
91 String::from("Spacing:"),
92 make_points(20, 116),
93 make_size(70, 22),
94 );
95
96 text_widget1
97 .get_config()
98 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
99
100 let mut text_widget2 = TextWidget::new(
101 String::from("assets/OpenSans-Regular.ttf"),
102 sdl2::ttf::FontStyle::NORMAL,
103 16,
104 TextJustify::Left,
105 String::from("1"),
106 make_points(100, 116),
107 make_size(40, 22),
108 );
109
110 text_widget2
111 .get_config()
112 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
113
114 let mut button1 = PushButtonWidget::new(
115 make_points(130, 112),
116 make_size(50, 30),
117 String::from("<"),
118 20,
119 );
120
121 button1.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
122 button1.set_numeric(CONFIG_BORDER_WIDTH, 2);
123 button1.on_click(|_, _widgets, _layouts| {
124 let mut spacing = _layouts[0].layout.borrow_mut().get_padding().spacing - 1;
125 let top = _layouts[0].layout.borrow_mut().get_padding().top;
126 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
127 let left = _layouts[0].layout.borrow_mut().get_padding().left;
128 let right = _layouts[0].layout.borrow_mut().get_padding().right;
129 let text_widget2_id = widget_id_for_name(_widgets, String::from("text_widget2"));
130
131 if spacing <= 0 {
132 spacing = 0;
133 }
134
135 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
136
137 _layouts[0]
138 .layout
139 .borrow_mut()
140 .set_padding(spacing_new.clone());
141 _layouts[1]
142 .layout
143 .borrow_mut()
144 .set_padding(spacing_new.clone());
145
146 refresh_widgets(_widgets);
147
148 cast!(_widgets, text_widget2_id, TextWidget).set_text(format!("{}", spacing));
149 });
150
151 let mut button2 = PushButtonWidget::new(
152 make_points(180, 112),
153 make_size(50, 30),
154 String::from(">"),
155 20,
156 );
157
158 button2.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
159 button2.set_numeric(CONFIG_BORDER_WIDTH, 2);
160 button2.on_click(|_, _widgets, _layouts| {
161 let mut spacing = _layouts[0].layout.borrow_mut().get_padding().spacing + 1;
162 let top = _layouts[0].layout.borrow_mut().get_padding().top;
163 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
164 let left = _layouts[0].layout.borrow_mut().get_padding().left;
165 let right = _layouts[0].layout.borrow_mut().get_padding().right;
166 let text_widget2_id = widget_id_for_name(_widgets, String::from("text_widget2"));
167
168 if spacing >= MAX_SPACING {
169 spacing = MAX_SPACING;
170 }
171
172 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
173
174 _layouts[0]
175 .layout
176 .borrow_mut()
177 .set_padding(spacing_new.clone());
178 _layouts[1]
179 .layout
180 .borrow_mut()
181 .set_padding(spacing_new.clone());
182
183 refresh_widgets(_widgets);
184
185 cast!(_widgets, text_widget2_id, TextWidget).set_text(format!("{}", spacing));
186 });
187
188 let mut text_widget3 = TextWidget::new(
189 String::from("assets/OpenSans-Regular.ttf"),
190 sdl2::ttf::FontStyle::NORMAL,
191 16,
192 TextJustify::Right,
193 String::from("Top:"),
194 make_points(20, 146),
195 make_size(70, 22),
196 );
197
198 text_widget3
199 .get_config()
200 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
201
202 let mut text_widget4 = TextWidget::new(
203 String::from("assets/OpenSans-Regular.ttf"),
204 sdl2::ttf::FontStyle::NORMAL,
205 16,
206 TextJustify::Left,
207 String::from("0"),
208 make_points(100, 146),
209 make_size(40, 22),
210 );
211
212 text_widget4
213 .get_config()
214 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
215
216 let mut button3 = PushButtonWidget::new(
217 make_points(130, 142),
218 make_size(50, 30),
219 String::from("<"),
220 20,
221 );
222
223 button3.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
224 button3.set_numeric(CONFIG_BORDER_WIDTH, 2);
225 button3.on_click(|_, _widgets, _layouts| {
226 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
227 let mut top = _layouts[0].layout.borrow_mut().get_padding().top - 1;
228 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
229 let left = _layouts[0].layout.borrow_mut().get_padding().left;
230 let right = _layouts[0].layout.borrow_mut().get_padding().right;
231 let text_widget4_id = widget_id_for_name(_widgets, String::from("text_widget4"));
232
233 if top <= 0 {
234 top = 0;
235 }
236
237 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
238
239 _layouts[0]
240 .layout
241 .borrow_mut()
242 .set_padding(spacing_new.clone());
243 _layouts[1]
244 .layout
245 .borrow_mut()
246 .set_padding(spacing_new.clone());
247
248 refresh_widgets(_widgets);
249
250 cast!(_widgets, text_widget4_id, TextWidget).set_text(format!("{}", top));
251 });
252
253 let mut button4 = PushButtonWidget::new(
254 make_points(180, 142),
255 make_size(50, 30),
256 String::from(">"),
257 20,
258 );
259
260 button4.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
261 button4.set_numeric(CONFIG_BORDER_WIDTH, 2);
262 button4.on_click(|_, _widgets, _layouts| {
263 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
264 let mut top = _layouts[0].layout.borrow_mut().get_padding().top + 1;
265 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
266 let left = _layouts[0].layout.borrow_mut().get_padding().left;
267 let right = _layouts[0].layout.borrow_mut().get_padding().right;
268 let text_widget4_id = widget_id_for_name(_widgets, String::from("text_widget4"));
269
270 if top >= MAX_SPACING {
271 top = MAX_SPACING;
272 }
273
274 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
275
276 _layouts[0]
277 .layout
278 .borrow_mut()
279 .set_padding(spacing_new.clone());
280 _layouts[1]
281 .layout
282 .borrow_mut()
283 .set_padding(spacing_new.clone());
284
285 refresh_widgets(_widgets);
286
287 cast!(_widgets, text_widget4_id, TextWidget).set_text(format!("{}", top));
288 });
289
290 let mut text_widget5 = TextWidget::new(
291 String::from("assets/OpenSans-Regular.ttf"),
292 sdl2::ttf::FontStyle::NORMAL,
293 16,
294 TextJustify::Right,
295 String::from("Bottom:"),
296 make_points(20, 176),
297 make_size(70, 22),
298 );
299
300 text_widget5
301 .get_config()
302 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
303
304 let mut text_widget6 = TextWidget::new(
305 String::from("assets/OpenSans-Regular.ttf"),
306 sdl2::ttf::FontStyle::NORMAL,
307 16,
308 TextJustify::Left,
309 String::from("0"),
310 make_points(100, 176),
311 make_size(40, 22),
312 );
313
314 text_widget6
315 .get_config()
316 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
317
318 let mut button5 = PushButtonWidget::new(
319 make_points(130, 172),
320 make_size(50, 30),
321 String::from("<"),
322 20,
323 );
324
325 button5.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
326 button5.set_numeric(CONFIG_BORDER_WIDTH, 2);
327 button5.on_click(|_, _widgets, _layouts| {
328 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
329 let top = _layouts[0].layout.borrow_mut().get_padding().top;
330 let mut bottom = _layouts[0].layout.borrow_mut().get_padding().bottom - 1;
331 let left = _layouts[0].layout.borrow_mut().get_padding().left;
332 let right = _layouts[0].layout.borrow_mut().get_padding().right;
333 let text_widget6_id = widget_id_for_name(_widgets, String::from("text_widget6"));
334
335 if bottom <= 0 {
336 bottom = 0;
337 }
338
339 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
340
341 _layouts[0]
342 .layout
343 .borrow_mut()
344 .set_padding(spacing_new.clone());
345 _layouts[1]
346 .layout
347 .borrow_mut()
348 .set_padding(spacing_new.clone());
349
350 refresh_widgets(_widgets);
351
352 cast!(_widgets, text_widget6_id, TextWidget).set_text(format!("{}", bottom));
353 });
354
355 let mut button6 = PushButtonWidget::new(
356 make_points(180, 172),
357 make_size(50, 30),
358 String::from(">"),
359 20,
360 );
361
362 button6.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
363 button6.set_numeric(CONFIG_BORDER_WIDTH, 2);
364 button6.on_click(|_, _widgets, _layouts| {
365 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
366 let top = _layouts[0].layout.borrow_mut().get_padding().top;
367 let mut bottom = _layouts[0].layout.borrow_mut().get_padding().bottom + 1;
368 let left = _layouts[0].layout.borrow_mut().get_padding().left;
369 let right = _layouts[0].layout.borrow_mut().get_padding().right;
370 let text_widget6_id = widget_id_for_name(_widgets, String::from("text_widget6"));
371
372 if bottom >= MAX_SPACING {
373 bottom = MAX_SPACING;
374 }
375
376 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
377
378 _layouts[0]
379 .layout
380 .borrow_mut()
381 .set_padding(spacing_new.clone());
382 _layouts[1]
383 .layout
384 .borrow_mut()
385 .set_padding(spacing_new.clone());
386
387 refresh_widgets(_widgets);
388
389 cast!(_widgets, text_widget6_id, TextWidget).set_text(format!("{}", bottom));
390 });
391
392 let mut text_widget7 = TextWidget::new(
393 String::from("assets/OpenSans-Regular.ttf"),
394 sdl2::ttf::FontStyle::NORMAL,
395 16,
396 TextJustify::Right,
397 String::from("Left:"),
398 make_points(20, 206),
399 make_size(70, 22),
400 );
401
402 text_widget7
403 .get_config()
404 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
405
406 let mut text_widget8 = TextWidget::new(
407 String::from("assets/OpenSans-Regular.ttf"),
408 sdl2::ttf::FontStyle::NORMAL,
409 16,
410 TextJustify::Left,
411 String::from("0"),
412 make_points(100, 206),
413 make_size(40, 22),
414 );
415
416 text_widget8
417 .get_config()
418 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
419
420 let mut button7 = PushButtonWidget::new(
421 make_points(130, 202),
422 make_size(50, 30),
423 String::from("<"),
424 20,
425 );
426
427 button7.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
428 button7.set_numeric(CONFIG_BORDER_WIDTH, 2);
429 button7.on_click(|_, _widgets, _layouts| {
430 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
431 let top = _layouts[0].layout.borrow_mut().get_padding().top;
432 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
433 let mut left = _layouts[0].layout.borrow_mut().get_padding().left - 1;
434 let right = _layouts[0].layout.borrow_mut().get_padding().right;
435 let text_widget8_id = widget_id_for_name(_widgets, String::from("text_widget8"));
436
437 if left <= 0 {
438 left = 0;
439 }
440
441 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
442
443 _layouts[0]
444 .layout
445 .borrow_mut()
446 .set_padding(spacing_new.clone());
447 _layouts[1]
448 .layout
449 .borrow_mut()
450 .set_padding(spacing_new.clone());
451
452 refresh_widgets(_widgets);
453
454 cast!(_widgets, text_widget8_id, TextWidget).set_text(format!("{}", left));
455 });
456
457 let mut button8 = PushButtonWidget::new(
458 make_points(180, 202),
459 make_size(50, 30),
460 String::from(">"),
461 20,
462 );
463
464 button8.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
465 button8.set_numeric(CONFIG_BORDER_WIDTH, 2);
466 button8.on_click(|_, _widgets, _layouts| {
467 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
468 let top = _layouts[0].layout.borrow_mut().get_padding().top;
469 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
470 let mut left = _layouts[0].layout.borrow_mut().get_padding().left + 1;
471 let right = _layouts[0].layout.borrow_mut().get_padding().right;
472 let text_widget8_id = widget_id_for_name(_widgets, String::from("text_widget8"));
473
474 if left >= MAX_SPACING {
475 left = MAX_SPACING;
476 }
477
478 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
479
480 _layouts[0]
481 .layout
482 .borrow_mut()
483 .set_padding(spacing_new.clone());
484 _layouts[1]
485 .layout
486 .borrow_mut()
487 .set_padding(spacing_new.clone());
488
489 refresh_widgets(_widgets);
490
491 cast!(_widgets, text_widget8_id, TextWidget).set_text(format!("{}", left));
492 });
493
494 let mut text_widget9 = TextWidget::new(
495 String::from("assets/OpenSans-Regular.ttf"),
496 sdl2::ttf::FontStyle::NORMAL,
497 16,
498 TextJustify::Right,
499 String::from("Right:"),
500 make_points(20, 236),
501 make_size(70, 22),
502 );
503
504 text_widget9
505 .get_config()
506 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 0));
507
508 let mut text_widget10 = TextWidget::new(
509 String::from("assets/OpenSans-Regular.ttf"),
510 sdl2::ttf::FontStyle::NORMAL,
511 16,
512 TextJustify::Left,
513 String::from("0"),
514 make_points(100, 236),
515 make_size(40, 22),
516 );
517
518 text_widget10
519 .get_config()
520 .set_color(CONFIG_COLOR_TEXT, Color::RGB(0, 0, 255));
521
522 let mut button9 = PushButtonWidget::new(
523 make_points(130, 232),
524 make_size(50, 30),
525 String::from("<"),
526 20,
527 );
528
529 button9.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
530 button9.set_numeric(CONFIG_BORDER_WIDTH, 2);
531 button9.on_click(|_, _widgets, _layouts| {
532 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
533 let top = _layouts[0].layout.borrow_mut().get_padding().top;
534 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
535 let left = _layouts[0].layout.borrow_mut().get_padding().left;
536 let mut right = _layouts[0].layout.borrow_mut().get_padding().right - 1;
537 let text_widget10_id = widget_id_for_name(_widgets, String::from("text_widget10"));
538
539 if right <= 0 {
540 right = 0;
541 }
542
543 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
544
545 _layouts[0]
546 .layout
547 .borrow_mut()
548 .set_padding(spacing_new.clone());
549 _layouts[1]
550 .layout
551 .borrow_mut()
552 .set_padding(spacing_new.clone());
553
554 refresh_widgets(_widgets);
555
556 cast!(_widgets, text_widget10_id, TextWidget).set_text(format!("{}", right));
557 });
558
559 let mut button10 = PushButtonWidget::new(
560 make_points(180, 232),
561 make_size(50, 30),
562 String::from(">"),
563 20,
564 );
565
566 button10.set_color(CONFIG_COLOR_BORDER, Color::RGB(0, 0, 0));
567 button10.set_numeric(CONFIG_BORDER_WIDTH, 2);
568 button10.on_click(|_, _widgets, _layouts| {
569 let spacing = _layouts[0].layout.borrow_mut().get_padding().spacing;
570 let top = _layouts[0].layout.borrow_mut().get_padding().top;
571 let bottom = _layouts[0].layout.borrow_mut().get_padding().bottom;
572 let left = _layouts[0].layout.borrow_mut().get_padding().left;
573 let mut right = _layouts[0].layout.borrow_mut().get_padding().right + 1;
574 let text_widget10_id = widget_id_for_name(_widgets, String::from("text_widget10"));
575
576 if right >= MAX_SPACING {
577 right = MAX_SPACING;
578 }
579
580 let spacing_new = PaddingConstraint::new(top, bottom, left, right, spacing);
581
582 _layouts[0]
583 .layout
584 .borrow_mut()
585 .set_padding(spacing_new.clone());
586 _layouts[1]
587 .layout
588 .borrow_mut()
589 .set_padding(spacing_new.clone());
590
591 refresh_widgets(_widgets);
592
593 cast!(_widgets, text_widget10_id, TextWidget).set_text(format!("{}", right));
594 });
595
596 engine.add_widget(Box::new(text_widget1), String::from("text_widget1"));
597 engine.add_widget(Box::new(text_widget2), String::from("text_widget2"));
598 engine.add_widget(Box::new(button1), String::from("button1"));
599 engine.add_widget(Box::new(button2), String::from("button2"));
600 engine.add_widget(Box::new(text_widget3), String::from("text_widget3"));
601 engine.add_widget(Box::new(text_widget4), String::from("text_widget4"));
602 engine.add_widget(Box::new(button3), String::from("button3"));
603 engine.add_widget(Box::new(button4), String::from("button4"));
604 engine.add_widget(Box::new(text_widget5), String::from("text_widget5"));
605 engine.add_widget(Box::new(text_widget6), String::from("text_widget6"));
606 engine.add_widget(Box::new(button5), String::from("button5"));
607 engine.add_widget(Box::new(button6), String::from("button6"));
608 engine.add_widget(Box::new(text_widget7), String::from("text_widget7"));
609 engine.add_widget(Box::new(text_widget8), String::from("text_widget8"));
610 engine.add_widget(Box::new(button7), String::from("button7"));
611 engine.add_widget(Box::new(button8), String::from("button8"));
612 engine.add_widget(Box::new(text_widget9), String::from("text_widget9"));
613 engine.add_widget(Box::new(text_widget10), String::from("text_widget10"));
614 engine.add_widget(Box::new(button9), String::from("button9"));
615 engine.add_widget(Box::new(button10), String::from("button10"));
616
617 engine.run(sdl_context, window);
618}Trait Implementations§
Source§impl Clone for PaddingConstraint
impl Clone for PaddingConstraint
Source§fn clone(&self) -> PaddingConstraint
fn clone(&self) -> PaddingConstraint
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PaddingConstraint
impl Debug for PaddingConstraint
Source§impl Default for PaddingConstraint
impl Default for PaddingConstraint
Source§fn default() -> PaddingConstraint
fn default() -> PaddingConstraint
Returns the “default value” for a type. Read more
impl Copy for PaddingConstraint
Auto Trait Implementations§
impl Freeze for PaddingConstraint
impl RefUnwindSafe for PaddingConstraint
impl Send for PaddingConstraint
impl Sync for PaddingConstraint
impl Unpin for PaddingConstraint
impl UnwindSafe for PaddingConstraint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more