1 // Take a look at the license at the top of the repository in the LICENSE file.
2 
3 pub use ffi::winapi;
4 
5 use std::convert::TryFrom;
6 use std::fmt;
7 use std::ops::Deref;
8 
9 use crate::enums::{Format, SurfaceType};
10 use crate::error::Error;
11 use crate::surface::Surface;
12 #[cfg(feature = "use_glib")]
13 use glib::translate::*;
14 
15 declare_surface!(Win32Surface, SurfaceType::Win32);
16 
17 impl Win32Surface {
18     #[doc(alias = "cairo_win32_surface_create")]
create(hdc: winapi::HDC) -> Result<Win32Surface, Error>19     pub fn create(hdc: winapi::HDC) -> Result<Win32Surface, Error> {
20         unsafe { Self::from_raw_full(ffi::cairo_win32_surface_create(hdc)) }
21     }
22 
23     #[doc(alias = "cairo_win32_surface_create_with_format")]
create_with_format(hdc: winapi::HDC, format: Format) -> Result<Win32Surface, Error>24     pub fn create_with_format(hdc: winapi::HDC, format: Format) -> Result<Win32Surface, Error> {
25         unsafe {
26             Self::from_raw_full(ffi::cairo_win32_surface_create_with_format(
27                 hdc,
28                 format.into(),
29             ))
30         }
31     }
32 
33     #[doc(alias = "cairo_win32_surface_create_with_dib")]
create_with_dib(format: Format, width: i32, height: i32) -> Result<Win32Surface, Error>34     pub fn create_with_dib(format: Format, width: i32, height: i32) -> Result<Win32Surface, Error> {
35         unsafe {
36             Self::from_raw_full(ffi::cairo_win32_surface_create_with_dib(
37                 format.into(),
38                 width,
39                 height,
40             ))
41         }
42     }
43 
44     #[doc(alias = "cairo_win32_surface_create_with_ddb")]
create_with_ddb( hdc: winapi::HDC, format: Format, width: i32, height: i32, ) -> Result<Win32Surface, Error>45     pub fn create_with_ddb(
46         hdc: winapi::HDC,
47         format: Format,
48         width: i32,
49         height: i32,
50     ) -> Result<Win32Surface, Error> {
51         unsafe {
52             Self::from_raw_full(ffi::cairo_win32_surface_create_with_ddb(
53                 hdc,
54                 format.into(),
55                 width,
56                 height,
57             ))
58         }
59     }
60 
61     #[doc(alias = "cairo_win32_printing_surface_create")]
printing_surface_create(hdc: winapi::HDC) -> Result<Win32Surface, Error>62     pub fn printing_surface_create(hdc: winapi::HDC) -> Result<Win32Surface, Error> {
63         unsafe { Self::from_raw_full(ffi::cairo_win32_printing_surface_create(hdc)) }
64     }
65 }
66