Auto merge of #20105 - jonleighton:font-template-data-debug, r=emilio

Make FontTemplateData's Debug formatter more concise

Otherwise the log gets spammed with all the individual bytes of the
underlying font file.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20105)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2018-02-22 05:49:30 -05:00 committed by GitHub
commit c0d00e9a6a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 3 deletions

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use servo_atoms::Atom; use servo_atoms::Atom;
use std::fmt;
use std::fs::File; use std::fs::File;
use std::io::{Read, Error}; use std::io::{Read, Error};
use webrender_api::NativeFontHandle; use webrender_api::NativeFontHandle;
@ -11,12 +12,23 @@ use webrender_api::NativeFontHandle;
/// The identifier is an absolute path, and the bytes /// The identifier is an absolute path, and the bytes
/// field is the loaded data that can be passed to /// field is the loaded data that can be passed to
/// freetype and azure directly. /// freetype and azure directly.
#[derive(Debug, Deserialize, Serialize)] #[derive(Deserialize, Serialize)]
pub struct FontTemplateData { pub struct FontTemplateData {
// If you add members here, review the Debug impl below
pub bytes: Vec<u8>, pub bytes: Vec<u8>,
pub identifier: Atom, pub identifier: Atom,
} }
impl fmt::Debug for FontTemplateData {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_struct("FontTemplateData")
.field("bytes", &format!("[{} bytes]", self.bytes.len()))
.field("identifier", &self.identifier)
.finish()
}
}
impl FontTemplateData { impl FontTemplateData {
pub fn new(identifier: Atom, font_data: Option<Vec<u8>>) -> Result<FontTemplateData, Error> { pub fn new(identifier: Atom, font_data: Option<Vec<u8>>) -> Result<FontTemplateData, Error> {
let bytes = match font_data { let bytes = match font_data {

View file

@ -24,8 +24,10 @@ use webrender_api::NativeFontHandle;
/// The identifier is a PostScript font name. The /// The identifier is a PostScript font name. The
/// CTFont object is cached here for use by the /// CTFont object is cached here for use by the
/// paint functions that create CGFont references. /// paint functions that create CGFont references.
#[derive(Debug, Deserialize, Serialize)] #[derive(Deserialize, Serialize)]
pub struct FontTemplateData { pub struct FontTemplateData {
// If you add members here, review the Debug impl below
/// The `CTFont` object, if present. This is cached here so that we don't have to keep creating /// The `CTFont` object, if present. This is cached here so that we don't have to keep creating
/// `CTFont` instances over and over. It can always be recreated from the `identifier` and/or /// `CTFont` instances over and over. It can always be recreated from the `identifier` and/or
/// `font_data` fields. /// `font_data` fields.
@ -39,6 +41,21 @@ pub struct FontTemplateData {
pub font_data: Option<Arc<Vec<u8>>> pub font_data: Option<Arc<Vec<u8>>>
} }
impl fmt::Debug for FontTemplateData {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_struct("FontTemplateData")
.field("ctfont", &self.ctfont)
.field("identifier", &self.identifier)
.field(
"font_data",
&self.font_data
.as_ref()
.map(|bytes| format!("[{} bytes]", bytes.len()))
)
.finish()
}
}
unsafe impl Send for FontTemplateData {} unsafe impl Send for FontTemplateData {}
unsafe impl Sync for FontTemplateData {} unsafe impl Sync for FontTemplateData {}

View file

@ -4,15 +4,32 @@
use platform::windows::font_list::{descriptor_from_atom, font_from_atom}; use platform::windows::font_list::{descriptor_from_atom, font_from_atom};
use servo_atoms::Atom; use servo_atoms::Atom;
use std::fmt;
use std::io; use std::io;
use webrender_api::NativeFontHandle; use webrender_api::NativeFontHandle;
#[derive(Debug, Deserialize, Serialize)] #[derive(Deserialize, Serialize)]
pub struct FontTemplateData { pub struct FontTemplateData {
// If you add members here, review the Debug impl below
pub bytes: Option<Vec<u8>>, pub bytes: Option<Vec<u8>>,
pub identifier: Atom, pub identifier: Atom,
} }
impl fmt::Debug for FontTemplateData {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.debug_struct("FontTemplateData")
.field(
"bytes",
&self.bytes
.as_ref()
.map(|bytes| format!("[{} bytes]", bytes.len()))
)
.field("identifier", &self.identifier)
.finish()
}
}
impl FontTemplateData { impl FontTemplateData {
pub fn new(identifier: Atom, pub fn new(identifier: Atom,
font_data: Option<Vec<u8>>) -> Result<FontTemplateData, io::Error> { font_data: Option<Vec<u8>>) -> Result<FontTemplateData, io::Error> {