pub fn get_hint_sizing_as_xyhw(&self, window: xproto::Window) -> Result<Option<XyhwChange>> {
        let hints = self.get_hint_sizing(window)?;
        if let Some(size) = hints {
            let mut xyhw = XyhwChange::default();

            if let Some((_specification, width, height)) = size.size {
                xyhw.w = Some(width);
                xyhw.h = Some(height);
            } else if let Some((width, height)) = size.base_size {
                xyhw.w = Some(width);
                xyhw.h = Some(height);
            }

            if let Some((width, height)) = size.size_increment {
                xyhw.w = Some(width);
                xyhw.h = Some(height);
            }

            if let Some((max_width, max_height)) = size.max_size {
                xyhw.maxw = Some(max_width);
                xyhw.maxh = Some(max_height);
            }

            if let Some((min_width, min_height)) = size.min_size {
                xyhw.minw = Some(min_width);
                xyhw.minh = Some(min_height);
            }
            // Make sure that width and height are not smaller than the min values.
            xyhw.w = std::cmp::max(xyhw.w, xyhw.minw);
            xyhw.h = std::cmp::max(xyhw.h, xyhw.minh);
            // Ignore the sizing if the sizing is set to 0.
            xyhw.w = xyhw.w.filter(|&w| w != 0);
            xyhw.h = xyhw.h.filter(|&h| h != 0);

            if let Some((_specification, x, y)) = size.position {
                xyhw.x = Some(x);
                xyhw.y = Some(y);
            }
            // TODO: support min/max aspect
            // if size.flags & xlib::PAspect != 0 {
            //     //c->mina = (float)size.min_aspect.y / size.min_aspect.x;
            //     //c->maxa = (float)size.max_aspect.x / size.max_aspect.y;
            // }

            return Ok(Some(xyhw));
        }
        Ok(None)
    }
Returns the `WM_SIZE_HINTS`/`WM_NORMAL_HINTS` of a window as a `XyhwChange`.
display-servers/x11rb-display-server/src/xwrap/getters.rs