mirror of
https://github.com/servo/servo.git
synced 2025-08-08 15:05:35 +01:00
Final font rearrangement for a while. Remove _handle suffix, add dummy font_list, other cleanup.
This commit is contained in:
parent
72c11b6fba
commit
65781484d8
17 changed files with 103 additions and 77 deletions
|
@ -17,7 +17,6 @@ pub use font::FontSelector;
|
||||||
pub use font::FontStyle;
|
pub use font::FontStyle;
|
||||||
pub use font::RunMetrics;
|
pub use font::RunMetrics;
|
||||||
pub use font_context::FontContext;
|
pub use font_context::FontContext;
|
||||||
pub use font_matcher::FontMatcher;
|
|
||||||
pub use geometry::Au;
|
pub use geometry::Au;
|
||||||
|
|
||||||
pub use render_context::RenderContext;
|
pub use render_context::RenderContext;
|
||||||
|
|
|
@ -15,7 +15,37 @@ use text::{
|
||||||
|
|
||||||
use core::dvec::DVec;
|
use core::dvec::DVec;
|
||||||
|
|
||||||
use native::FontHandle;
|
// FontHandle encapsulates access to the platform's font API,
|
||||||
|
// e.g. quartz, FreeType. It provides access to metrics and tables
|
||||||
|
// needed by the text shaper as well as access to the underlying font
|
||||||
|
// resources needed by the graphics layer to draw glyphs.
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
pub type FontHandle/& = quartz::font::QuartzFontHandle;
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
pub type FontHandle/& = freetype::font::FreeTypeFontHandle;
|
||||||
|
|
||||||
|
// TODO: `new` should be part of trait FontHandle
|
||||||
|
|
||||||
|
// TODO(Issue #163): this is a workaround for static methods and
|
||||||
|
// typedefs not working well together. It should be removed.
|
||||||
|
|
||||||
|
// TODO(Rust #1723): #cfg doesn't work for impl methods, so we have
|
||||||
|
// to conditionally define the entire impl.
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
impl FontHandle {
|
||||||
|
static pub fn new(fctx: &native::FontContextHandle, buf: @~[u8], pt_size: float) -> Result<FontHandle, ()> {
|
||||||
|
quartz::font::QuartzFontHandle::new(fctx, buf, pt_size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
impl FontHandle {
|
||||||
|
static pub fn new(fctx: &native::FontContextHandle, buf: @~[u8], pt_size: float) -> Result<FontHandle, ()> {
|
||||||
|
freetype::font::FreeTypeFontHandle::new(fctx, buf, pt_size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Used to abstract over the shaper's choice of fixed int representation.
|
// Used to abstract over the shaper's choice of fixed int representation.
|
||||||
type FractionalPixel = float;
|
type FractionalPixel = float;
|
||||||
|
|
|
@ -36,22 +36,22 @@ pub fn dummy_style() -> FontStyle {
|
||||||
// to conditionally define the entire impl.
|
// to conditionally define the entire impl.
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
type FontContextHandle/& = quartz::font_context::QuartzFontContext;
|
type FontContextHandle/& = quartz::font_context::QuartzFontContextHandle;
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
type FontContextHandle/& = freetype::font_context::FreeTypeFontContext;
|
type FontContextHandle/& = freetype::font_context::FreeTypeFontContextHandle;
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub impl FontContextHandle {
|
pub impl FontContextHandle {
|
||||||
static pub fn new() -> FontContextHandle {
|
static pub fn new() -> FontContextHandle {
|
||||||
quartz::font_context::QuartzFontContext::new()
|
quartz::font_context::QuartzFontContextHandle::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
pub impl FontContextHandle {
|
pub impl FontContextHandle {
|
||||||
static pub fn new() -> FontContextHandle {
|
static pub fn new() -> FontContextHandle {
|
||||||
freetype::font_context::FreeTypeFontContext::new()
|
freetype::font_context::FreeTypeFontContextHandle::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
/**
|
|
||||||
FontHandle encapsulates access to the platform's font API,
|
|
||||||
e.g. quartz, FreeType. It provides access to metrics and tables
|
|
||||||
needed by the text shaper as well as access to the underlying
|
|
||||||
font resources needed by the graphics layer to draw glyphs.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
pub type FontHandle/& = quartz::font_handle::QuartzFontHandle;
|
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
|
||||||
pub type FontHandle/& = freetype::font_handle::FreeTypeFontHandle;
|
|
||||||
|
|
||||||
// TODO: `new` should be part of trait FontHandle
|
|
||||||
|
|
||||||
// TODO(Issue #163): this is a workaround for static methods and
|
|
||||||
// typedefs not working well together. It should be removed.
|
|
||||||
|
|
||||||
// TODO(Rust #1723): #cfg doesn't work for impl methods, so we have
|
|
||||||
// to conditionally define the entire impl.
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
impl FontHandle {
|
|
||||||
static pub fn new(fctx: &native::FontContextHandle, buf: @~[u8], pt_size: float) -> Result<FontHandle, ()> {
|
|
||||||
quartz::font_handle::QuartzFontHandle::new(fctx, buf, pt_size)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
|
||||||
impl FontHandle {
|
|
||||||
static pub fn new(fctx: &native::FontContextHandle, buf: @~[u8], pt_size: float) -> Result<FontHandle, ()> {
|
|
||||||
freetype::font_handle::FreeTypeFontHandle::new(fctx, buf, pt_size)
|
|
||||||
}
|
|
||||||
}
|
|
19
src/servo/gfx/font_list.rs
Normal file
19
src/servo/gfx/font_list.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
type FontListHandle/& = quartz::font_list::QuartzFontListHandle;
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
type FontListHandle/& = freetype::font_list::FreeTypeFontListHandle;
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
pub impl FontListHandle {
|
||||||
|
static pub fn new() -> FontListHandle {
|
||||||
|
quartz::font_list::QuartzFontListHandle::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
pub impl FontListHandle {
|
||||||
|
static pub fn new() -> FontListHandle {
|
||||||
|
freetype::font_list::FreeTypeFontListHandle::new()
|
||||||
|
}
|
||||||
|
}
|
0
src/servo/gfx/font_list_handle.rs
Normal file
0
src/servo/gfx/font_list_handle.rs
Normal file
|
@ -1,14 +0,0 @@
|
||||||
use font::{Font, FontStyle};
|
|
||||||
use font_context::FontContext;
|
|
||||||
|
|
||||||
struct FontMatcher {
|
|
||||||
fctx: @FontContext,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FontMatcher {
|
|
||||||
static pub fn new(fctx: @FontContext) -> FontMatcher {
|
|
||||||
FontMatcher {
|
|
||||||
fctx: fctx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
12
src/servo/gfx/fontconfig/font_list.rs
Normal file
12
src/servo/gfx/fontconfig/font_list.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
pub struct FontconfigFontContextHandle {
|
||||||
|
ctx: (),
|
||||||
|
|
||||||
|
drop { }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub impl FontconfigFontContextHandle {
|
||||||
|
// this is a placeholder.
|
||||||
|
static pub fn new() -> FontconfigFontContextHandle {
|
||||||
|
FontconfigFontContextHandle { ctx: () }
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ use freetype::bindgen::{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
pub struct FreeTypeFontContext {
|
pub struct FreeTypeFontContextHandle {
|
||||||
ctx: FT_Library,
|
ctx: FT_Library,
|
||||||
|
|
||||||
drop {
|
drop {
|
||||||
|
@ -19,8 +19,8 @@ pub struct FreeTypeFontContext {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl FreeTypeFontContext {
|
pub impl FreeTypeFontContextHandle {
|
||||||
static pub fn new() -> FreeTypeFontContext {
|
static pub fn new() -> FreeTypeFontContextHandle {
|
||||||
let lib: FT_Library = ptr::null();
|
let lib: FT_Library = ptr::null();
|
||||||
let res = FT_Init_FreeType(ptr::addr_of(&lib));
|
let res = FT_Init_FreeType(ptr::addr_of(&lib));
|
||||||
// FIXME: error handling
|
// FIXME: error handling
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
Note that you still must define each of the files as a module in
|
Note that you still must define each of the files as a module in
|
||||||
servo.rc. This is not ideal and may be changed in the future. */
|
servo.rc. This is not ideal and may be changed in the future. */
|
||||||
|
|
||||||
pub use font_handle::FontHandle;
|
pub use font::FontHandle;
|
||||||
pub use font_context::FontContextHandle;
|
pub use font_context::FontContextHandle;
|
|
@ -2,9 +2,9 @@ extern mod core_foundation;
|
||||||
extern mod core_graphics;
|
extern mod core_graphics;
|
||||||
extern mod core_text;
|
extern mod core_text;
|
||||||
|
|
||||||
use font::{FontMetrics, FractionalPixel};
|
use font_context::QuartzFontContextHandle;
|
||||||
use font_context::QuartzFontContext;
|
|
||||||
use gfx::au;
|
use gfx::au;
|
||||||
|
use gfx::font::{FontMetrics, FractionalPixel};
|
||||||
use text::glyph::GlyphIndex;
|
use text::glyph::GlyphIndex;
|
||||||
|
|
||||||
use libc::size_t;
|
use libc::size_t;
|
||||||
|
@ -68,7 +68,7 @@ pub struct QuartzFontHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl QuartzFontHandle {
|
pub impl QuartzFontHandle {
|
||||||
static pub fn new(_fctx: &QuartzFontContext, buf: @~[u8], pt_size: float) -> Result<QuartzFontHandle, ()> {
|
static pub fn new(_fctx: &QuartzFontContextHandle, buf: @~[u8], pt_size: float) -> Result<QuartzFontHandle, ()> {
|
||||||
let fontprov = vec::as_imm_buf(*buf, |cbuf, len| {
|
let fontprov = vec::as_imm_buf(*buf, |cbuf, len| {
|
||||||
CGDataProviderCreateWithData(
|
CGDataProviderCreateWithData(
|
||||||
ptr::null(),
|
ptr::null(),
|
|
@ -1,12 +1,12 @@
|
||||||
pub struct QuartzFontContext {
|
pub struct QuartzFontContextHandle {
|
||||||
ctx: u8,
|
ctx: (),
|
||||||
|
|
||||||
drop { }
|
drop { }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl QuartzFontContext {
|
pub impl QuartzFontContextHandle {
|
||||||
// this is a placeholder until NSFontManager or whatever is bound in here.
|
// this is a placeholder until NSFontManager or whatever is bound in here.
|
||||||
static pub fn new() -> QuartzFontContext {
|
static pub fn new() -> QuartzFontContextHandle {
|
||||||
QuartzFontContext { ctx: 42 }
|
QuartzFontContextHandle { ctx: () }
|
||||||
}
|
}
|
||||||
}
|
}
|
12
src/servo/gfx/quartz/font_list.rs
Normal file
12
src/servo/gfx/quartz/font_list.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
pub struct QuartzFontListHandle {
|
||||||
|
ctx: (),
|
||||||
|
|
||||||
|
drop { }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub impl QuartzFontListHandle {
|
||||||
|
// this is a placeholder until CTFontCollection is bound here.
|
||||||
|
static pub fn new() -> QuartzFontListHandle {
|
||||||
|
QuartzFontListHandle { ctx: () }
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
use geom::{Rect, Size2D, Point2D};
|
use geom::{Rect, Size2D, Point2D};
|
||||||
|
|
||||||
use css::node_style::{NodeStyle, StyledNode};
|
|
||||||
use dom::element::{ElementKind, HTMLDivElement, HTMLImageElement};
|
use dom::element::{ElementKind, HTMLDivElement, HTMLImageElement};
|
||||||
use dom::node::{Element, Node, NodeData, NodeKind, NodeTree};
|
use dom::node::{Element, Node, NodeData, NodeKind, NodeTree};
|
||||||
use gfx::{au, dl};
|
use gfx::{au, dl};
|
||||||
|
@ -18,6 +17,7 @@ use layout::display_list_builder::DisplayListBuilder;
|
||||||
use layout::flow::FlowContext;
|
use layout::flow::FlowContext;
|
||||||
use layout::text::TextBoxData;
|
use layout::text::TextBoxData;
|
||||||
use newcss::color::{Color, rgba, rgb};
|
use newcss::color::{Color, rgba, rgb};
|
||||||
|
use newcss::complete::CompleteStyle;
|
||||||
use newcss::units::{BoxSizing, Length, Px};
|
use newcss::units::{BoxSizing, Length, Px};
|
||||||
use newcss::values::{CSSBorderColor, CSSPositionAbsolute};
|
use newcss::values::{CSSBorderColor, CSSPositionAbsolute};
|
||||||
use newcss::values::{CSSBorderWidthLength, CSSBorderWidthMedium};
|
use newcss::values::{CSSBorderWidthLength, CSSBorderWidthMedium};
|
||||||
|
|
|
@ -16,7 +16,6 @@ use gfx::{
|
||||||
Au,
|
Au,
|
||||||
DisplayList,
|
DisplayList,
|
||||||
FontContext,
|
FontContext,
|
||||||
FontMatcher,
|
|
||||||
RenderLayer,
|
RenderLayer,
|
||||||
};
|
};
|
||||||
use gfx::render_task;
|
use gfx::render_task;
|
||||||
|
@ -81,7 +80,6 @@ struct Layout {
|
||||||
from_content: comm::Port<Msg>,
|
from_content: comm::Port<Msg>,
|
||||||
|
|
||||||
font_ctx: @FontContext,
|
font_ctx: @FontContext,
|
||||||
font_matcher: @FontMatcher,
|
|
||||||
// This is used to root auxilliary RCU reader data
|
// This is used to root auxilliary RCU reader data
|
||||||
layout_refs: DVec<@LayoutData>,
|
layout_refs: DVec<@LayoutData>,
|
||||||
css_select_ctx: Mut<SelectCtx>,
|
css_select_ctx: Mut<SelectCtx>,
|
||||||
|
@ -98,7 +96,6 @@ fn Layout(render_task: RenderTask,
|
||||||
image_cache_task: image_cache_task.clone(),
|
image_cache_task: image_cache_task.clone(),
|
||||||
local_image_cache: @LocalImageCache(move image_cache_task),
|
local_image_cache: @LocalImageCache(move image_cache_task),
|
||||||
from_content: from_content,
|
from_content: from_content,
|
||||||
font_matcher: @FontMatcher::new(fctx),
|
|
||||||
font_ctx: fctx,
|
font_ctx: fctx,
|
||||||
layout_refs: DVec(),
|
layout_refs: DVec(),
|
||||||
css_select_ctx: Mut(new_css_select_ctx())
|
css_select_ctx: Mut(new_css_select_ctx())
|
||||||
|
|
|
@ -83,25 +83,29 @@ pub mod gfx {
|
||||||
|
|
||||||
// fonts
|
// fonts
|
||||||
pub mod font;
|
pub mod font;
|
||||||
pub mod font_cache;
|
pub mod font_context;
|
||||||
pub mod font_matcher;
|
pub mod font_list;
|
||||||
|
|
||||||
// Typedefs and pub-uses for multiple implementations.
|
// Pub-uses for multiple implementations. Platform selection happens in
|
||||||
// native contains redirects, so one can write native::FontHandle.
|
// font.rs, font_list.rs, font_context.rs
|
||||||
pub mod native;
|
pub mod native;
|
||||||
pub mod font_context;
|
|
||||||
pub mod font_handle;
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
pub mod quartz {
|
pub mod quartz {
|
||||||
|
pub mod font;
|
||||||
pub mod font_context;
|
pub mod font_context;
|
||||||
pub mod font_handle;
|
pub mod font_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
pub mod freetype {
|
pub mod freetype {
|
||||||
|
pub mod font;
|
||||||
pub mod font_context;
|
pub mod font_context;
|
||||||
pub mod font_handle;
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
pub mod fontconfig {
|
||||||
|
pub mod font_list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue