
pub mod button;
pub mod frame;
pub mod region;

pub struct Widget;

impl Widget {
    fn 
() -> Widget {
        Widget
    }
}

pub trait UIObject {
    fn get_name(&self) -> String;
    //fn get_object_type() -> String;
    //fn is_object_type(type_: &str) -> String;
    fn draw(&self);
}

pub trait ParentObject: UIObject {
    /// Returns the object's parent object.
    fn get_parent();
}

pub trait VisibleRegion: ParentObject {
    /// Returns the opacity of the region relative to it's parent.
    fn get_alpha();
    /// Hides the region.
    fn hide();
    /// Returns whether the region is shown.
    fn is_shown();
    /// Returns whether the region is visible.
    fn is_visible();
    /// Sets the opacity of the region relative to its parent.
    fn set_alpha();
    /// Shows the region.
    fn show();
}

new_inherited