baseview 0.3.1

Low-level windowing system geared towards making audio plugin UIs.
Documentation
use crate::WindowSettings;
use windows_sys::Win32::UI::WindowsAndMessaging::*;

#[derive(Copy, Clone)]
pub struct WindowStyle {
    pub style: WINDOW_STYLE,
    pub style_ex: WINDOW_EX_STYLE,
}

impl WindowStyle {
    pub fn from_settings(settings: &WindowSettings) -> Self {
        if settings.parent.is_some() || settings.wait_for_parent {
            return Self { style: WS_CHILD, style_ex: 0 };
        }

        let mut style = Self {
            style: WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX | WS_CLIPSIBLINGS,
            style_ex: 0,
        };

        if settings.resizable {
            style.style |= WS_SIZEBOX | WS_MAXIMIZEBOX;
        }

        style
    }
}