Print text on mac

This commit is contained in:
Brian Anderson 2012-06-16 18:18:15 -07:00
parent 8d2eb11582
commit cbb26e64fb
2 changed files with 39 additions and 2 deletions

@ -1 +1 @@
Subproject commit 478f61bb68feea43c22c9b88f52393ea15908dae
Subproject commit a326b982dfde133ea558a1025deb9c14d88265d2

View file

@ -172,9 +172,46 @@ fn get_cairo_face(buf: &[u8]) -> (*cairo_font_face_t, fn@()) {
(cface, dtor)
}
#[cfg(target_os = "macos")]
mod cocoa {
use cocoa;
export cocoa;
}
#[cfg(target_os = "macos")]
fn get_cairo_face(buf: &[u8]) -> (*cairo_font_face_t, fn@()) {
fail
import unsafe::reinterpret_cast;
import libc::size_t;
import cocoa::cocoa;
import cocoa::cg::cg::{
CGDataProviderCreateWithData,
CGDataProviderRelease,
CGFontCreateWithDataProvider,
CGFontRelease
};
import azure::cairo_quartz::bindgen::cairo_quartz_font_face_create_for_cgfont;
let mut dtor = fn@() { };
let fontprov = vec::as_buf(*buf) { |cbuf|
CGDataProviderCreateWithData(
null(),
unsafe { reinterpret_cast(cbuf) },
(*buf).len() as size_t,
null()
)
};
dtor = fn@(move dtor) { CGDataProviderRelease(fontprov); dtor() };
let cgfont = CGFontCreateWithDataProvider(fontprov);
if cgfont.is_null() { fail "could not create quartz font" }
dtor = fn@(move dtor) { CGFontRelease(cgfont); dtor() };
let cface = cairo_quartz_font_face_create_for_cgfont(cgfont);
assert cface.is_not_null(); // FIXME: error handling
dtor = fn@(move dtor) { cairo_font_face_destroy(cface); dtor() };
(cface, dtor)
}
fn create_test_font() -> font {