1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
use uuid::Uuid; use crate::{Point, Scalar}; use crate::flags::Flags; use crate::position::Dimensions; use crate::widget::widget_iterator::{WidgetIter, WidgetIterMut}; pub trait CommonWidget<S> { fn get_id(&self) -> Uuid; fn get_flag(&self) -> Flags; fn get_children(&self) -> WidgetIter<S>; fn get_children_mut(&mut self) -> WidgetIterMut<S>; fn get_proxied_children(&mut self) -> WidgetIterMut<S>; fn get_position(&self) -> Point; fn set_position(&mut self, position: Point); fn get_x(&self) -> Scalar { self.get_position()[0] } fn set_x(&mut self, x: Scalar) { self.set_position([x, self.get_y()]); } fn get_y(&self) -> Scalar { self.get_position()[1] } fn set_y(&mut self, y: Scalar) { self.set_position([self.get_x(), y]); } fn get_dimension(&self) -> Dimensions; fn set_dimension(&mut self, dimensions: Dimensions); fn get_width(&self) -> Scalar { self.get_dimension()[0] } fn set_width(&mut self, width: Scalar) { self.set_dimension([width, self.get_dimension()[1]]) } fn get_height(&self) -> Scalar { self.get_dimension()[1] } fn set_height(&mut self, height: Scalar) { self.set_dimension([self.get_dimension()[0], height]) } fn is_inside(&self, point: Point) -> bool { point[0] >= self.get_x() && point[0] < self.get_x() + self.get_width() && point[1] >= self.get_y() && point[1] < self.get_y() + self.get_height() } }