aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian J. Burg <burg@cs.washington.edu>2012-11-07 12:27:13 -0800
committerBrian J. Burg <burg@cs.washington.edu>2012-11-07 12:28:30 -0800
commit72c11b6fba879489d023959f2e9e7b910ebcd71d (patch)
treeebdeab6a253f192dd026faa420f7f429cbca7432
parentb8d78240677519435304c2d1dcc8977ed65429ce (diff)
downloadservo-72c11b6fba879489d023959f2e9e7b910ebcd71d.tar.gz
servo-72c11b6fba879489d023959f2e9e7b910ebcd71d.zip
Move shaper and textrun back to src/servo/text/. Add a text redirector.
-rw-r--r--src/servo/gfx.rs4
-rw-r--r--src/servo/gfx/display_list.rs13
-rw-r--r--src/servo/gfx/font.rs17
-rw-r--r--src/servo/gfx/quartz/font_handle.rs16
-rw-r--r--src/servo/gfx/render_context.rs2
-rw-r--r--src/servo/layout/box.rs46
-rw-r--r--src/servo/layout/inline.rs26
-rw-r--r--src/servo/layout/text.rs2
-rwxr-xr-xsrc/servo/servo.rc22
-rw-r--r--src/servo/text.rs9
-rw-r--r--src/servo/text/glyph.rs (renamed from src/servo/gfx/glyph.rs)0
-rw-r--r--src/servo/text/harfbuzz/shaper.rs (renamed from src/servo/gfx/harfbuzz/shaper.rs)6
-rw-r--r--src/servo/text/shaper.rs (renamed from src/servo/gfx/shaper.rs)2
-rw-r--r--src/servo/text/text_run.rs (renamed from src/servo/gfx/text_run.rs)0
-rw-r--r--src/servo/text/util.rs (renamed from src/servo/util/text.rs)0
15 files changed, 92 insertions, 73 deletions
diff --git a/src/servo/gfx.rs b/src/servo/gfx.rs
index 0a9c458dbf4..71728311e86 100644
--- a/src/servo/gfx.rs
+++ b/src/servo/gfx.rs
@@ -8,6 +8,7 @@ servo.rc. This is not ideal and may be changed in the future. */
pub use au = geometry;
pub use dl = display_list;
+pub use display_list::DisplayItem;
pub use display_list::DisplayList;
pub use font::Font;
pub use font::FontDescriptor;
@@ -18,9 +19,6 @@ pub use font::RunMetrics;
pub use font_context::FontContext;
pub use font_matcher::FontMatcher;
pub use geometry::Au;
-pub use shaper::Shaper;
-pub use text_run::TextRun;
-pub use text_run::SendableTextRun;
pub use render_context::RenderContext;
pub use render_layers::RenderLayer; \ No newline at end of file
diff --git a/src/servo/gfx/display_list.rs b/src/servo/gfx/display_list.rs
index ab8ae421f10..e15da1a67f0 100644
--- a/src/servo/gfx/display_list.rs
+++ b/src/servo/gfx/display_list.rs
@@ -1,13 +1,14 @@
use azure::azure_hl::DrawTarget;
-use au = gfx::geometry;
-use au::Au;
-use geom::rect::Rect;
-use geom::point::Point2D;
-use gfx::SendableTextRun;
+
+use geom::Rect;
+use geom::Point2D;
+
+use gfx::{au, Au};
+use color::{Color, rgb};
use image::base::Image;
use render_context::RenderContext;
+use text::SendableTextRun;
use util::range::Range;
-use color::{Color, rgb};
use std::arc::ARC;
use clone_arc = std::arc::clone;
diff --git a/src/servo/gfx/font.rs b/src/servo/gfx/font.rs
index a442a0e45f3..9a20591eb0e 100644
--- a/src/servo/gfx/font.rs
+++ b/src/servo/gfx/font.rs
@@ -1,14 +1,19 @@
-use au = gfx::geometry;
-use au::Au;
use azure::{
AzFloat,
AzScaledFontRef,
};
-use core::dvec::DVec;
-use gfx::RenderContext;
+
+use gfx::au;
+use gfx::{Au, RenderContext};
use geom::{Point2D, Rect, Size2D};
-use glyph::{GlyphStore, GlyphIndex};
-use servo_util::range::Range;
+use util::range::Range;
+use text::glyph::{GlyphStore, GlyphIndex};
+use text::{
+ Shaper,
+ TextRun,
+};
+
+use core::dvec::DVec;
use native::FontHandle;
diff --git a/src/servo/gfx/quartz/font_handle.rs b/src/servo/gfx/quartz/font_handle.rs
index 8cad42cce1d..4fc34ab6cca 100644
--- a/src/servo/gfx/quartz/font_handle.rs
+++ b/src/servo/gfx/quartz/font_handle.rs
@@ -4,12 +4,10 @@ extern mod core_text;
use font::{FontMetrics, FractionalPixel};
use font_context::QuartzFontContext;
+use gfx::au;
+use text::glyph::GlyphIndex;
-use au = gfx::geometry;
-use cast::transmute;
-use glyph::GlyphIndex;
use libc::size_t;
-use ptr::null;
use cf = core_foundation;
use cf::base::{
@@ -73,10 +71,10 @@ pub impl QuartzFontHandle {
static pub fn new(_fctx: &QuartzFontContext, buf: @~[u8], pt_size: float) -> Result<QuartzFontHandle, ()> {
let fontprov = vec::as_imm_buf(*buf, |cbuf, len| {
CGDataProviderCreateWithData(
- null(),
- unsafe { transmute(copy cbuf) },
+ ptr::null(),
+ unsafe { cast::transmute(copy cbuf) },
len as size_t,
- null())
+ ptr::null())
});
if fontprov.is_null() { return Err(()); }
@@ -120,7 +118,7 @@ pub impl QuartzFontHandle {
let glyphs = ~[glyph as CGGlyph];
let advance = do vec::as_imm_buf(glyphs) |glyph_buf, _l| {
- CTFontGetAdvancesForGlyphs(self.ctfont, kCTFontDefaultOrientation, glyph_buf, null(), 1)
+ CTFontGetAdvancesForGlyphs(self.ctfont, kCTFontDefaultOrientation, glyph_buf, ptr::null(), 1)
};
return Some(advance as FractionalPixel);
@@ -156,5 +154,5 @@ pub impl QuartzFontHandle {
fn ctfont_from_cgfont(cgfont: CGFontRef, pt_size: float) -> CTFontRef {
assert cgfont.is_not_null();
- CTFontCreateWithGraphicsFont(cgfont, pt_size as CGFloat, null(), null())
+ CTFontCreateWithGraphicsFont(cgfont, pt_size as CGFloat, ptr::null(), ptr::null())
} \ No newline at end of file
diff --git a/src/servo/gfx/render_context.rs b/src/servo/gfx/render_context.rs
index b3f44c39467..ac267297fb2 100644
--- a/src/servo/gfx/render_context.rs
+++ b/src/servo/gfx/render_context.rs
@@ -4,9 +4,9 @@ use gfx::{
Au,
Font,
FontContext,
- TextRun,
};
use image::base::Image;
+use text::TextRun;
use util::range::Range;
use cairo::cairo_hl::ImageSurface;
diff --git a/src/servo/layout/box.rs b/src/servo/layout/box.rs
index 747fc8e8377..8f7e4f5eefe 100644
--- a/src/servo/layout/box.rs
+++ b/src/servo/layout/box.rs
@@ -1,37 +1,39 @@
/* Fundamental layout structures and algorithms. */
-use newcss::color::rgb;
-use arc = std::arc;
-use arc::ARC;
-use au = gfx::geometry;
-use au::Au;
-use core::dvec::DVec;
-use core::to_str::ToStr;
-use core::rand;
-use css::node_style::StyledNode;
-use newcss::complete::CompleteStyle;
-use newcss::units::{BoxSizing, Length, Px};
-use newcss::values::{CSSDisplay, Specified, CSSBackgroundColorColor, CSSBackgroundColorTransparent};
-use newcss::values::{CSSBorderColor, CSSPositionAbsolute};
-use newcss::values::{CSSBorderWidthLength, CSSBorderWidthMedium};
-use newcss::color::{Color, rgba};
+use geom::{Rect, Size2D, Point2D};
+
+use css::node_style::{NodeStyle, StyledNode};
use dom::element::{ElementKind, HTMLDivElement, HTMLImageElement};
use dom::node::{Element, Node, NodeData, NodeKind, NodeTree};
-use geom::rect::Rect;
-use geom::size::Size2D;
-use geom::point::Point2D;
-use gfx::display_list::{DisplayItem, DisplayList, DisplayListBuilder};
+use gfx::{au, dl};
+use gfx::{
+ Au,
+ DisplayItem,
+ DisplayList,
+};
use image::{Image, ImageHolder};
use layout::context::LayoutContext;
use layout::debug::BoxedDebugMethods;
+use layout::display_list_builder::DisplayListBuilder;
use layout::flow::FlowContext;
use layout::text::TextBoxData;
-use gfx::TextRun;
-use std::net::url::Url;
-use task::spawn;
+use newcss::color::{Color, rgba, rgb};
+use newcss::units::{BoxSizing, Length, Px};
+use newcss::values::{CSSBorderColor, CSSPositionAbsolute};
+use newcss::values::{CSSBorderWidthLength, CSSBorderWidthMedium};
+use newcss::values::{CSSDisplay, Specified, CSSBackgroundColorColor, CSSBackgroundColorTransparent};
+use servo_text::TextRun;
use util::range::*;
use util::tree;
+use arc = std::arc;
+use arc::ARC;
+use core::dvec::DVec;
+use core::to_str::ToStr;
+use core::rand;
+use std::net::url::Url;
+use task::spawn;
+
/**
Render boxes (`struct RenderBox`) are the leafs of the layout
tree. They cannot position themselves. In general, render boxes do not
diff --git a/src/servo/layout/inline.rs b/src/servo/layout/inline.rs
index a6817360191..d82da18192c 100644
--- a/src/servo/layout/inline.rs
+++ b/src/servo/layout/inline.rs
@@ -1,24 +1,26 @@
use au = gfx::geometry;
-use core::dlist::DList;
-use core::dvec::DVec;
-use newcss::values::{BoxAuto, BoxLength, Px};
+use geom::{Point2D, Rect, Size2D};
+
use dom::node::Node;
-use geom::point::Point2D;
-use geom::rect::Rect;
-use geom::size::Size2D;
-use gfx::display_list::{DisplayList, DisplayListBuilder};
-use gfx::font::FontStyle;
-use gfx::geometry::Au;
+use gfx::dl;
+use gfx::{
+ Au,
+ FontStyle,
+};
use layout::box::*;
use layout::context::LayoutContext;
use layout::flow::{FlowContext, InlineFlow};
use layout::text::TextBoxData;
-use num::Num;
-use std::arc;
+use newcss::values::{BoxAuto, BoxLength, Px};
+use servo_text::util::*;
use util::range::{MutableRange, Range};
-use util::text::*;
use util::tree;
+use core::dlist::DList;
+use core::dvec::DVec;
+use num::Num;
+use std::arc;
+
/*
Lineboxes are represented as offsets into the child list, rather than
as an object that "owns" boxes. Choosing a different set of line
diff --git a/src/servo/layout/text.rs b/src/servo/layout/text.rs
index 85e5e4d9679..f3f5e24117f 100644
--- a/src/servo/layout/text.rs
+++ b/src/servo/layout/text.rs
@@ -1,6 +1,6 @@
/** Text layout. */
-use gfx::TextRun;
+use servo_text::TextRun;
use layout::box::{TextBox, RenderBox, RenderBoxData, UnscannedTextBox};
use util::range::Range;
diff --git a/src/servo/servo.rc b/src/servo/servo.rc
index 0719f8374b0..eecec49f538 100755
--- a/src/servo/servo.rc
+++ b/src/servo/servo.rc
@@ -85,20 +85,12 @@ pub mod gfx {
pub mod font;
pub mod font_cache;
pub mod font_matcher;
- pub mod glyph;
- pub mod text_run;
// Typedefs and pub-uses for multiple implementations.
// native contains redirects, so one can write native::FontHandle.
pub mod native;
pub mod font_context;
pub mod font_handle;
- pub mod shaper;
-
- // Below are the actual platform-specific parts.
- pub mod harfbuzz {
- pub mod shaper;
- }
#[cfg(target_os = "macos")]
pub mod quartz {
@@ -140,11 +132,22 @@ pub mod resource {
pub mod resource_task;
}
+pub mod text {
+ pub mod glyph;
+ pub mod text_run;
+ pub mod util;
+ pub mod shaper;
+
+ // Below are the actual platform-specific parts.
+ pub mod harfbuzz {
+ pub mod shaper;
+ }
+}
+
pub mod util {
pub mod actor;
pub mod cache;
pub mod range;
- pub mod text;
pub mod time;
pub mod tree;
pub mod url;
@@ -154,3 +157,4 @@ pub mod util {
pub mod opts;
use servo_util = util;
+use servo_text = text;
diff --git a/src/servo/text.rs b/src/servo/text.rs
new file mode 100644
index 00000000000..6b3fdd4ff0a
--- /dev/null
+++ b/src/servo/text.rs
@@ -0,0 +1,9 @@
+/* This file exists just to make it easier to import things inside of
+ ./text/ without specifying the file they came out of imports.
+
+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. */
+
+pub use shaper::Shaper;
+pub use text_run::TextRun;
+pub use text_run::SendableTextRun;
diff --git a/src/servo/gfx/glyph.rs b/src/servo/text/glyph.rs
index 9214356ade8..9214356ade8 100644
--- a/src/servo/gfx/glyph.rs
+++ b/src/servo/text/glyph.rs
diff --git a/src/servo/gfx/harfbuzz/shaper.rs b/src/servo/text/harfbuzz/shaper.rs
index 5065e36bcf6..f5e24de6851 100644
--- a/src/servo/gfx/harfbuzz/shaper.rs
+++ b/src/servo/text/harfbuzz/shaper.rs
@@ -1,18 +1,18 @@
extern mod harfbuzz;
+use geom::Point2D;
+
use gfx::au;
use gfx::{
Au,
Font,
};
-
-use geom::point::Point2D;
use glyph::{GlyphStore, GlyphIndex, GlyphData};
+
use libc::types::common::c99::int32_t;
use libc::{c_uint, c_int, c_void, c_char};
use ptr::{null, to_unsafe_ptr, offset};
use std::arc;
-use util = util::text;
use harfbuzz::{HB_MEMORY_MODE_READONLY,
HB_DIRECTION_LTR};
diff --git a/src/servo/gfx/shaper.rs b/src/servo/text/shaper.rs
index 7b0c9531c3c..6face0ef525 100644
--- a/src/servo/gfx/shaper.rs
+++ b/src/servo/text/shaper.rs
@@ -4,7 +4,7 @@ Uniscribe, Pango, or Coretext.
Currently, only harfbuzz bindings are implemented.
*/
-use font::Font;
+use gfx::Font;
pub type Shaper/& = harfbuzz::shaper::HarfbuzzShaper;
diff --git a/src/servo/gfx/text_run.rs b/src/servo/text/text_run.rs
index cf271dabc9b..cf271dabc9b 100644
--- a/src/servo/gfx/text_run.rs
+++ b/src/servo/text/text_run.rs
diff --git a/src/servo/util/text.rs b/src/servo/text/util.rs
index 61bfa4db21f..61bfa4db21f 100644
--- a/src/servo/util/text.rs
+++ b/src/servo/text/util.rs