use crate::bitmap::Bitmap;
use crate::dc::DeviceContext;
pub struct MemoryDC {
dc_ptr: *mut wxdragon_sys::wxd_MemoryDC_t,
}
impl MemoryDC {
pub fn new() -> Self {
let dc_ptr = unsafe { wxdragon_sys::wxd_MemoryDC_Create() };
Self { dc_ptr }
}
pub fn select_object(&mut self, bitmap: &mut Bitmap) {
unsafe { wxdragon_sys::wxd_MemoryDC_SelectObject(self.dc_ptr, bitmap.as_const_ptr()) };
}
pub fn select_object_as_source(&mut self, bitmap: &Bitmap) {
unsafe { wxdragon_sys::wxd_MemoryDC_SelectObjectAsSource(self.dc_ptr, bitmap.as_const_ptr()) };
}
}
impl DeviceContext for MemoryDC {
fn dc_ptr(&self) -> *mut wxdragon_sys::wxd_DC_t {
unsafe { wxdragon_sys::wxd_MemoryDC_AsDC(self.dc_ptr) }
}
}
impl Drop for MemoryDC {
fn drop(&mut self) {
unsafe {
wxdragon_sys::wxd_MemoryDC_Destroy(self.dc_ptr);
}
}
}
impl Default for MemoryDC {
fn default() -> Self {
Self::new()
}
}