diff --git a/src/servo-gfx/font.rs b/src/servo-gfx/font.rs index bf8cdfb3620..ec7f98a9462 100644 --- a/src/servo-gfx/font.rs +++ b/src/servo-gfx/font.rs @@ -1,20 +1,21 @@ +//! Fonts. + use color::Color; use font_context::FontContext; use geometry::Au; +use platform; use render_context::RenderContext; -use util::range::Range; use text::glyph::{GlyphStore, GlyphIndex}; use text::shaper::ShaperMethods; -use text::{Shaper, TextRun}; use text::shaper::ShaperMethods; +use text::{Shaper, TextRun}; +use util::range::Range; use azure::{AzFloat, AzScaledFontRef}; use azure::scaled_font::ScaledFont; use azure::azure_hl::{BackendType, ColorPattern}; use geom::{Point2D, Rect, Size2D}; -#[cfg(target_os = "macos")] -use quartz; #[cfg(target_os = "linux")] use freetype_impl; use native; @@ -25,7 +26,7 @@ use native; // resources needed by the graphics layer to draw glyphs. #[cfg(target_os = "macos")] -pub type FontHandle = quartz::font::QuartzFontHandle; +pub type FontHandle = platform::font::QuartzFontHandle; #[cfg(target_os = "linux")] pub type FontHandle = freetype_impl::font::FreeTypeFontHandle; @@ -56,7 +57,7 @@ pub impl FontHandle { buf: ~[u8], style: &SpecifiedFontStyle) -> Result { - quartz::font::QuartzFontHandle::new_from_buffer(fctx, buf, style) + platform::font::QuartzFontHandle::new_from_buffer(fctx, buf, style) } #[cfg(target_os = "linux")] @@ -90,7 +91,7 @@ impl FontTableTagConversions for FontTableTag { } #[cfg(target_os = "macos")] -pub type FontTable = quartz::font::QuartzFontTable; +pub type FontTable = platform::font::QuartzFontTable; #[cfg(target_os = "linux")] pub type FontTable = freetype_impl::font::FreeTypeFontTable; diff --git a/src/servo-gfx/font_context.rs b/src/servo-gfx/font_context.rs index 884e142f5e5..733af2ebe1b 100644 --- a/src/servo-gfx/font_context.rs +++ b/src/servo-gfx/font_context.rs @@ -2,14 +2,13 @@ use font::{Font, FontDescriptor, FontGroup, FontStyle, SelectorPlatformIdentifie use font::{SelectorStubDummy, SpecifiedFontStyle, UsedFontStyle}; use font_list::FontList; use native::FontHandle; +use platform; use util::cache::Cache; use util::cache::MonoCache; use azure::azure_hl::BackendType; use core::hashmap::HashMap; -#[cfg(target_os = "macos")] -use quartz; #[cfg(target_os = "linux")] use freetype_impl; use font_context; @@ -35,7 +34,7 @@ pub fn dummy_style() -> FontStyle { } #[cfg(target_os = "macos")] -type FontContextHandle = quartz::font_context::QuartzFontContextHandle; +type FontContextHandle = platform::font_context::QuartzFontContextHandle; #[cfg(target_os = "linux")] type FontContextHandle = freetype_impl::font_context::FreeTypeFontContextHandle; @@ -50,7 +49,7 @@ pub trait FontContextHandleMethods { pub impl FontContextHandle { #[cfg(target_os = "macos")] pub fn new() -> FontContextHandle { - quartz::font_context::QuartzFontContextHandle::new() + platform::font_context::QuartzFontContextHandle::new() } #[cfg(target_os = "linux")] diff --git a/src/servo-gfx/font_list.rs b/src/servo-gfx/font_list.rs index 7b299c9b9ab..218d57741ad 100644 --- a/src/servo-gfx/font_list.rs +++ b/src/servo-gfx/font_list.rs @@ -1,19 +1,20 @@ +//! Implementation of the list of fonts. + use font::{CSSFontWeight, SpecifiedFontStyle}; use gfx_font::FontHandleMethods; -use native::FontHandle; use gfx_font::FontHandleMethods; +use native::FontHandle; +use platform; +use util::time::time; use core::hashmap::HashMap; #[cfg(target_os = "linux")] use fontconfig; -#[cfg(target_os = "macos")] -use quartz; use native; -use util::time::time; #[cfg(target_os = "macos")] -type FontListHandle = quartz::font_list::QuartzFontListHandle; +type FontListHandle = platform::font_list::QuartzFontListHandle; #[cfg(target_os = "linux")] type FontListHandle = fontconfig::font_list::FontconfigFontListHandle; @@ -21,7 +22,7 @@ type FontListHandle = fontconfig::font_list::FontconfigFontListHandle; pub impl FontListHandle { #[cfg(target_os = "macos")] pub fn new(fctx: &native::FontContextHandle) -> Result { - Ok(quartz::font_list::QuartzFontListHandle::new(fctx)) + Ok(platform::font_list::QuartzFontListHandle::new(fctx)) } #[cfg(target_os = "linux")] diff --git a/src/servo-gfx/quartz/font.rs b/src/servo-gfx/platform/macos/font.rs similarity index 79% rename from src/servo-gfx/quartz/font.rs rename to src/servo-gfx/platform/macos/font.rs index 5dc5cbf6326..15280f6c6e2 100644 --- a/src/servo-gfx/quartz/font.rs +++ b/src/servo-gfx/platform/macos/font.rs @@ -1,4 +1,4 @@ -/// Implementation of Quartz (CoreGraphics) fonts. +//! Implementation of Quartz (CoreGraphics) fonts. extern mod core_foundation; extern mod core_graphics; @@ -9,17 +9,18 @@ use gfx_font::{CSSFontWeight, FontHandleMethods, FontMetrics, FontTable, FontTab use gfx_font::{FontTableTag, FontWeight100, FontWeight200, FontWeight300, FontWeight400}; use gfx_font::{FontWeight500, FontWeight600, FontWeight700, FontWeight800, FontWeight900}; use gfx_font::{FractionalPixel, SpecifiedFontStyle}; -use quartz::font::core_foundation::base::{CFIndex, CFWrapper}; -use quartz::font::core_foundation::data::CFData; -use quartz::font::core_foundation::string::UniChar; -use quartz::font::core_graphics::data_provider::CGDataProvider; -use quartz::font::core_graphics::font::{CGFont, CGGlyph}; -use quartz::font::core_graphics::geometry::CGRect; -use quartz::font::core_text::font::{CTFont, CTFontMethods, CTFontMethodsPrivate}; -use quartz::font::core_text::font_descriptor::{SymbolicTraitAccessors, TraitAccessors}; -use quartz::font::core_text::font_descriptor::kCTFontDefaultOrientation; -use quartz::font_context::QuartzFontContextHandle; -use quartz; +use platform::macos::font::core_foundation::base::{CFIndex, CFWrapper}; +use platform::macos::font::core_foundation::data::CFData; +use platform::macos::font::core_foundation::string::UniChar; +use platform::macos::font::core_graphics::data_provider::CGDataProvider; +use platform::macos::font::core_graphics::font::{CGFont, CGGlyph}; +use platform::macos::font::core_graphics::geometry::CGRect; +use platform::macos::font::core_text::font::{CTFont, CTFontMethods, CTFontMethodsPrivate}; +use platform::macos::font::core_text::font_descriptor::{SymbolicTraitAccessors}; +use platform::macos::font::core_text::font_descriptor::{TraitAccessors}; +use platform::macos::font::core_text::font_descriptor::{kCTFontDefaultOrientation}; +use platform::macos::font_context::QuartzFontContextHandle; +use platform; use text::glyph::GlyphIndex; struct QuartzFontTable { @@ -51,11 +52,13 @@ pub impl QuartzFontHandle { fn new_from_buffer(_fctx: &QuartzFontContextHandle, buf: ~[u8], style: &SpecifiedFontStyle) -> Result { let fontprov : CGDataProvider = vec::as_imm_buf(buf, |cbuf, len| { - quartz::font::core_graphics::data_provider::new_from_buffer(cbuf, len) + platform::macos::font::core_graphics::data_provider::new_from_buffer(cbuf, len) }); - let cgfont = quartz::font::core_graphics::font::create_with_data_provider(&fontprov); - let ctfont = quartz::font::core_text::font::new_from_CGFont(&cgfont, style.pt_size); + let cgfont = platform::macos::font::core_graphics::font::create_with_data_provider( + &fontprov); + let ctfont = platform::macos::font::core_text::font::new_from_CGFont(&cgfont, + style.pt_size); let result = Ok(QuartzFontHandle { cgfont: Some(cgfont), @@ -65,13 +68,13 @@ pub impl QuartzFontHandle { return result; } - fn new_from_CTFont(_fctx: &QuartzFontContextHandle, ctfont: CTFont) -> Result { - let result = Ok(QuartzFontHandle { + fn new_from_CTFont(_: &QuartzFontContextHandle, + ctfont: CTFont) + -> Result { + Ok(QuartzFontHandle { mut cgfont: None, ctfont: ctfont, - }); - - return result; + }) } fn get_CGFont(&mut self) -> CGFont { @@ -177,7 +180,7 @@ impl FontHandleMethods for QuartzFontHandle { } fn get_table_for_tag(&self, tag: FontTableTag) -> Option { - let result : Option = self.ctfont.get_font_table(tag); + let result: Option = self.ctfont.get_font_table(tag); result.chain(|data| { Some(QuartzFontTable::wrap(data)) }) diff --git a/src/servo-gfx/quartz/font_context.rs b/src/servo-gfx/platform/macos/font_context.rs similarity index 64% rename from src/servo-gfx/quartz/font_context.rs rename to src/servo-gfx/platform/macos/font_context.rs index b610bdb576c..fcd1c71914d 100644 --- a/src/servo-gfx/quartz/font_context.rs +++ b/src/servo-gfx/platform/macos/font_context.rs @@ -2,12 +2,12 @@ extern mod core_foundation; extern mod core_graphics; extern mod core_text; -use quartz; -use quartz::font::QuartzFontHandle; - use gfx_font::{FontHandle, UsedFontStyle}; use gfx_font_context::FontContextHandleMethods; +use platform::macos::font::QuartzFontHandle; +use platform; + pub struct QuartzFontContextHandle { ctx: () } @@ -24,9 +24,13 @@ impl FontContextHandleMethods for QuartzFontContextHandle { QuartzFontContextHandle { ctx: self.ctx } } - fn create_font_from_identifier(&self, name: ~str, style: UsedFontStyle) -> Result { - let ctfont_result = quartz::font_context::core_text::font::new_from_name(name, - style.pt_size); + fn create_font_from_identifier(&self, + name: ~str, + style: UsedFontStyle) + -> Result { + let ctfont_result = platform::macos::font_context::core_text::font::new_from_name( + name, + style.pt_size); do result::chain(ctfont_result) |ctfont| { QuartzFontHandle::new_from_CTFont(self, ctfont) } diff --git a/src/servo-gfx/quartz/font_list.rs b/src/servo-gfx/platform/macos/font_list.rs similarity index 65% rename from src/servo-gfx/quartz/font_list.rs rename to src/servo-gfx/platform/macos/font_list.rs index 10eaca28d0b..7adeb5f5cb6 100644 --- a/src/servo-gfx/quartz/font_list.rs +++ b/src/servo-gfx/platform/macos/font_list.rs @@ -1,21 +1,20 @@ extern mod core_foundation; extern mod core_text; -use native; -use quartz; -use quartz::font_list::core_foundation::array::CFArray; -use quartz::font_list::core_foundation::base::CFWrapper; -use quartz::font_list::core_foundation::string::{CFString, CFStringRef}; - -use quartz::font_list::core_text::font_descriptor::CTFontDescriptorRef; -use quartz::font_list::core_text::font_collection::CTFontCollectionMethods; - -use quartz::font::QuartzFontHandle; -use quartz::font_context::QuartzFontContextHandle; use gfx_font::FontHandleMethods; use gfx_font_context::FontContextHandleMethods; use gfx_font_list::{FontEntry, FontFamily, FontFamilyMap}; +use native; +use platform::macos::font::QuartzFontHandle; +use platform::macos::font_context::QuartzFontContextHandle; +use platform::macos::font_list::core_foundation::array::CFArray; +use platform::macos::font_list::core_foundation::base::CFWrapper; +use platform::macos::font_list::core_foundation::string::{CFString, CFStringRef}; +use platform::macos::font_list::core_text::font_collection::CTFontCollectionMethods; +use platform::macos::font_list::core_text::font_descriptor::CTFontDescriptorRef; +use platform; + use core::hashmap::HashMap; pub struct QuartzFontListHandle { @@ -29,7 +28,7 @@ pub impl QuartzFontListHandle { fn get_available_families(&self) -> FontFamilyMap { let family_names: CFArray = - quartz::font_list::core_text::font_collection::get_family_names(); + platform::macos::font_list::core_text::font_collection::get_family_names(); let mut family_map : FontFamilyMap = HashMap::new(); for family_names.each |&strref: &CFStringRef| { let family_name = CFString::wrap_extern(strref).to_str(); @@ -47,10 +46,12 @@ pub impl QuartzFontListHandle { debug!("Looking for faces of family: %s", *family_name); let family_collection = - quartz::font_list::core_text::font_collection::create_for_family(*family_name); + platform::macos::font_list::core_text::font_collection::create_for_family( + *family_name); for family_collection.get_descriptors().each |descref: &CTFontDescriptorRef| { let desc = CFWrapper::wrap_shared(*descref); - let font = quartz::font_list::core_text::font::new_from_descriptor(&desc, 0.0); + let font = platform::macos::font_list::core_text::font::new_from_descriptor(&desc, + 0.0); let handle = result::unwrap(QuartzFontHandle::new_from_CTFont(&self.fctx, font)); debug!("Creating new FontEntry for face: %s", handle.face_name()); diff --git a/src/servo-gfx/servo_gfx.rc b/src/servo-gfx/servo_gfx.rc index 31f0977da06..29ab186f97d 100644 --- a/src/servo-gfx/servo_gfx.rc +++ b/src/servo-gfx/servo_gfx.rc @@ -41,12 +41,8 @@ pub mod opts; // font.rs, font_list.rs, font_context.rs pub mod native; -#[cfg(target_os = "macos")] -pub mod quartz { - pub mod font; - pub mod font_context; - pub mod font_list; -} +#[path="platform/mod.rs"] +pub mod platform; #[cfg(target_os = "linux")] pub mod freetype_impl {