mirror of
https://github.com/italicsjenga/rust_minifb.git
synced 2025-01-11 03:21:32 +11:00
Ran rustfmt
This commit is contained in:
parent
15ec55aae2
commit
860f8b4f3d
|
@ -20,14 +20,15 @@ static mut CLOSE_APP: bool = false;
|
||||||
// Wrap this so we can have a proper numbef of bmiColors to write in
|
// Wrap this so we can have a proper numbef of bmiColors to write in
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
struct BitmapInfo {
|
struct BitmapInfo {
|
||||||
pub bmi_header: BITMAPINFOHEADER,
|
pub bmi_header: BITMAPINFOHEADER,
|
||||||
pub bmi_colors: [RGBQUAD; 3],
|
pub bmi_colors: [RGBQUAD; 3],
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe extern "system" fn wnd_proc(window: winapi::HWND, msg: winapi::UINT,
|
unsafe extern "system" fn wnd_proc(window: winapi::HWND,
|
||||||
wparam: winapi::WPARAM, lparam: winapi::LPARAM)
|
msg: winapi::UINT,
|
||||||
-> winapi::LRESULT
|
wparam: winapi::WPARAM,
|
||||||
{
|
lparam: winapi::LPARAM)
|
||||||
|
-> winapi::LRESULT {
|
||||||
match msg {
|
match msg {
|
||||||
winapi::winuser::WM_KEYDOWN => {
|
winapi::winuser::WM_KEYDOWN => {
|
||||||
if (wparam & 0xff) == 27 {
|
if (wparam & 0xff) == 27 {
|
||||||
|
@ -37,7 +38,7 @@ unsafe extern "system" fn wnd_proc(window: winapi::HWND, msg: winapi::UINT,
|
||||||
|
|
||||||
winapi::winuser::WM_PAINT => {
|
winapi::winuser::WM_PAINT => {
|
||||||
let mut rect: winapi::RECT = mem::uninitialized();
|
let mut rect: winapi::RECT = mem::uninitialized();
|
||||||
let buffer = user32::GetWindowLongPtrW(window, winapi::winuser::GWLP_USERDATA);
|
let buffer = user32::GetWindowLongPtrW(window, winapi::winuser::GWLP_USERDATA);
|
||||||
|
|
||||||
user32::GetClientRect(window, &mut rect);
|
user32::GetClientRect(window, &mut rect);
|
||||||
|
|
||||||
|
@ -51,17 +52,25 @@ unsafe extern "system" fn wnd_proc(window: winapi::HWND, msg: winapi::UINT,
|
||||||
bitmap_info.bmi_header.biCompression = winapi::wingdi::BI_BITFIELDS;
|
bitmap_info.bmi_header.biCompression = winapi::wingdi::BI_BITFIELDS;
|
||||||
bitmap_info.bmi_header.biWidth = width;
|
bitmap_info.bmi_header.biWidth = width;
|
||||||
bitmap_info.bmi_header.biHeight = -height;
|
bitmap_info.bmi_header.biHeight = -height;
|
||||||
bitmap_info.bmi_colors[0].rgbRed = 0xff;
|
bitmap_info.bmi_colors[0].rgbRed = 0xff;
|
||||||
bitmap_info.bmi_colors[1].rgbGreen = 0xff;
|
bitmap_info.bmi_colors[1].rgbGreen = 0xff;
|
||||||
bitmap_info.bmi_colors[2].rgbBlue = 0xff;
|
bitmap_info.bmi_colors[2].rgbBlue = 0xff;
|
||||||
|
|
||||||
let dc = user32::GetDC(window);
|
let dc = user32::GetDC(window);
|
||||||
|
|
||||||
gdi32::StretchDIBits(dc, 0, 0, width, height, 0, 0, width, height,
|
gdi32::StretchDIBits(dc,
|
||||||
mem::transmute(buffer),
|
0,
|
||||||
mem::transmute(&bitmap_info),
|
0,
|
||||||
winapi::wingdi::DIB_RGB_COLORS,
|
width,
|
||||||
winapi::wingdi::SRCCOPY);
|
height,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
mem::transmute(buffer),
|
||||||
|
mem::transmute(&bitmap_info),
|
||||||
|
winapi::wingdi::DIB_RGB_COLORS,
|
||||||
|
winapi::wingdi::SRCCOPY);
|
||||||
|
|
||||||
user32::ValidateRect(window, ptr::null_mut());
|
user32::ValidateRect(window, ptr::null_mut());
|
||||||
|
|
||||||
|
@ -78,8 +87,8 @@ pub enum MinifbError {
|
||||||
UnableToCreateWindow,
|
UnableToCreateWindow,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_wstring(str : &str) -> *const u16 {
|
fn to_wstring(str: &str) -> *const u16 {
|
||||||
let v : Vec<u16> = OsStr::new(str).encode_wide(). chain(Some(0).into_iter()).collect();
|
let v: Vec<u16> = OsStr::new(str).encode_wide().chain(Some(0).into_iter()).collect();
|
||||||
v.as_ptr()
|
v.as_ptr()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,9 +99,9 @@ pub struct Minifb {
|
||||||
impl Minifb {
|
impl Minifb {
|
||||||
fn open_window(name: &str, width: usize, height: usize) -> HWND {
|
fn open_window(name: &str, width: usize, height: usize) -> HWND {
|
||||||
unsafe {
|
unsafe {
|
||||||
let class_name = to_wstring("minifb_window");
|
let class_name = to_wstring("minifb_window");
|
||||||
let s = CString::new(name).unwrap();
|
let s = CString::new(name).unwrap();
|
||||||
|
|
||||||
let class = WNDCLASSW {
|
let class = WNDCLASSW {
|
||||||
style: winapi::CS_HREDRAW | winapi::CS_VREDRAW | winapi::CS_OWNDC,
|
style: winapi::CS_HREDRAW | winapi::CS_VREDRAW | winapi::CS_OWNDC,
|
||||||
lpfnWndProc: Some(wnd_proc),
|
lpfnWndProc: Some(wnd_proc),
|
||||||
|
@ -109,21 +118,33 @@ impl Minifb {
|
||||||
user32::RegisterClassW(&class);
|
user32::RegisterClassW(&class);
|
||||||
|
|
||||||
let mut rect = winapi::RECT {
|
let mut rect = winapi::RECT {
|
||||||
left: 0, right: width as winapi::LONG,
|
left: 0,
|
||||||
top: 0, bottom: height as winapi::LONG,
|
right: width as winapi::LONG,
|
||||||
|
top: 0,
|
||||||
|
bottom: height as winapi::LONG,
|
||||||
};
|
};
|
||||||
|
|
||||||
user32::AdjustWindowRect(&mut rect, winapi::WS_POPUP | winapi::WS_SYSMENU | winapi::WS_CAPTION, 0);
|
user32::AdjustWindowRect(&mut rect,
|
||||||
|
winapi::WS_POPUP | winapi::WS_SYSMENU | winapi::WS_CAPTION,
|
||||||
|
0);
|
||||||
|
|
||||||
rect.right -= rect.left;
|
rect.right -= rect.left;
|
||||||
rect.bottom -= rect.top;
|
rect.bottom -= rect.top;
|
||||||
|
|
||||||
let handle = user32::CreateWindowExA(0,
|
let handle = user32::CreateWindowExA(0,
|
||||||
"minifb_window".as_ptr() as *mut _, s.as_ptr(),
|
"minifb_window".as_ptr() as *mut _,
|
||||||
winapi::WS_OVERLAPPEDWINDOW & !winapi::WS_MAXIMIZEBOX & !winapi::WS_THICKFRAME,
|
s.as_ptr(),
|
||||||
winapi::CW_USEDEFAULT, winapi::CW_USEDEFAULT,
|
winapi::WS_OVERLAPPEDWINDOW &
|
||||||
rect.right, rect.bottom,
|
!winapi::WS_MAXIMIZEBOX &
|
||||||
ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), ptr::null_mut());
|
!winapi::WS_THICKFRAME,
|
||||||
|
winapi::CW_USEDEFAULT,
|
||||||
|
winapi::CW_USEDEFAULT,
|
||||||
|
rect.right,
|
||||||
|
rect.bottom,
|
||||||
|
ptr::null_mut(),
|
||||||
|
ptr::null_mut(),
|
||||||
|
ptr::null_mut(),
|
||||||
|
ptr::null_mut());
|
||||||
|
|
||||||
if !handle.is_null() {
|
if !handle.is_null() {
|
||||||
user32::ShowWindow(handle, winapi::SW_NORMAL);
|
user32::ShowWindow(handle, winapi::SW_NORMAL);
|
||||||
|
@ -138,7 +159,7 @@ impl Minifb {
|
||||||
|
|
||||||
match handle.is_null() {
|
match handle.is_null() {
|
||||||
true => None,
|
true => None,
|
||||||
false => Some(Minifb { window : handle }),
|
false => Some(Minifb { window: handle }),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,10 +167,13 @@ impl Minifb {
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut msg = mem::uninitialized();
|
let mut msg = mem::uninitialized();
|
||||||
|
|
||||||
user32::SetWindowLongPtrW(self.window, winapi::winuser::GWLP_USERDATA, buffer.as_ptr() as i64);
|
user32::SetWindowLongPtrW(self.window,
|
||||||
|
winapi::winuser::GWLP_USERDATA,
|
||||||
|
buffer.as_ptr() as i64);
|
||||||
user32::InvalidateRect(self.window, ptr::null_mut(), winapi::TRUE);
|
user32::InvalidateRect(self.window, ptr::null_mut(), winapi::TRUE);
|
||||||
|
|
||||||
while user32::PeekMessageW(&mut msg, self.window, 0, 0, winapi::winuser::PM_REMOVE) != 0 {
|
while user32::PeekMessageW(&mut msg, self.window, 0, 0, winapi::winuser::PM_REMOVE) !=
|
||||||
|
0 {
|
||||||
user32::TranslateMessage(&mut msg);
|
user32::TranslateMessage(&mut msg);
|
||||||
user32::DispatchMessageW(&mut msg);
|
user32::DispatchMessageW(&mut msg);
|
||||||
}
|
}
|
||||||
|
@ -160,6 +184,3 @@ impl Minifb {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue