Port to win32
This commit is contained in:
parent
95e8d05902
commit
85b4f189bd
3 changed files with 14 additions and 10 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
||||||
/target
|
/target
|
||||||
Cargo.lock
|
Cargo.lock
|
||||||
/.idea
|
/.idea
|
||||||
|
/.vscode
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ wayland-backend = {version = "0.1.0-beta.14", features = ["client_system"]}
|
||||||
wayland-client = {version = "0.30.0-beta.14"}
|
wayland-client = {version = "0.30.0-beta.14"}
|
||||||
x11-dl = "2.19.1"
|
x11-dl = "2.19.1"
|
||||||
|
|
||||||
[target.'cfg(target_os = "windows")'.dependencies.winapi]
|
[target.'cfg(target_os = "windows")'.dependencies.windows-sys]
|
||||||
version = "0.3.9"
|
version = "0.42.0"
|
||||||
features = ["windef", "wingdi", "winuser"]
|
features = ["Win32_Graphics_Gdi", "Win32_UI_WindowsAndMessaging", "Win32_Foundation"]
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[target.'cfg(target_os = "macos")'.dependencies]
|
||||||
cocoa = "0.24.0"
|
cocoa = "0.24.0"
|
||||||
|
|
|
||||||
15
src/win32.rs
15
src/win32.rs
|
|
@ -1,9 +1,12 @@
|
||||||
use crate::{GraphicsContextImpl, SwBufError};
|
use crate::{GraphicsContextImpl, SwBufError};
|
||||||
use raw_window_handle::{HasRawWindowHandle, Win32WindowHandle};
|
use raw_window_handle::{HasRawWindowHandle, Win32WindowHandle};
|
||||||
use std::os::raw::c_int;
|
use std::os::raw::c_int;
|
||||||
use winapi::shared::windef::{HDC, HWND};
|
|
||||||
use winapi::um::wingdi::{StretchDIBits, BITMAPINFOHEADER, BI_BITFIELDS, RGBQUAD};
|
use windows_sys::Win32::Foundation::HWND;
|
||||||
use winapi::um::winuser::{GetDC, ValidateRect};
|
use windows_sys::Win32::Graphics::Gdi::{
|
||||||
|
StretchDIBits, BITMAPINFOHEADER, BI_BITFIELDS, RGBQUAD, HDC,
|
||||||
|
ValidateRect, GetDC, SRCCOPY, DIB_RGB_COLORS,
|
||||||
|
};
|
||||||
|
|
||||||
pub struct Win32Impl {
|
pub struct Win32Impl {
|
||||||
window: HWND,
|
window: HWND,
|
||||||
|
|
@ -22,7 +25,7 @@ impl Win32Impl {
|
||||||
pub unsafe fn new<W: HasRawWindowHandle>(handle: &Win32WindowHandle) -> Result<Self, crate::SwBufError<W>> {
|
pub unsafe fn new<W: HasRawWindowHandle>(handle: &Win32WindowHandle) -> Result<Self, crate::SwBufError<W>> {
|
||||||
let dc = GetDC(handle.hwnd as HWND);
|
let dc = GetDC(handle.hwnd as HWND);
|
||||||
|
|
||||||
if dc.is_null(){
|
if dc == 0 {
|
||||||
return Err(SwBufError::PlatformError(Some("Device Context is null".into()), None));
|
return Err(SwBufError::PlatformError(Some("Device Context is null".into()), None));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -61,8 +64,8 @@ impl GraphicsContextImpl for Win32Impl {
|
||||||
height as c_int,
|
height as c_int,
|
||||||
std::mem::transmute(buffer.as_ptr()),
|
std::mem::transmute(buffer.as_ptr()),
|
||||||
std::mem::transmute(&bitmap_info),
|
std::mem::transmute(&bitmap_info),
|
||||||
winapi::um::wingdi::DIB_RGB_COLORS,
|
DIB_RGB_COLORS,
|
||||||
winapi::um::wingdi::SRCCOPY,
|
SRCCOPY,
|
||||||
);
|
);
|
||||||
|
|
||||||
ValidateRect(self.window, std::ptr::null_mut());
|
ValidateRect(self.window, std::ptr::null_mut());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue