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