1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-18 13:55:23 -05:00

Move to cargo clippy

Using clippy as a library has been deprecated, instead the `cargo
clippy` command should be used instead. To comply with this change
clippy has been removed from the `Cargo.toml` and is now installed with
cargo when building in CI.

This has also lead to a few new clippy issues to show up, this includes
everything in the `font` subdirectory. This has been fixed and `font`
should now be covered by clippy CI too.

This also upgrades all dependencies, as a result this fixes #1341 and
this fixes #1344.
This commit is contained in:
Christian Duerr 2018-06-17 09:19:30 +00:00 committed by GitHub
parent 0f700a01bd
commit 5ba34d4f97
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 512 additions and 468 deletions

View file

@ -12,18 +12,22 @@ rust:
- nightly - nightly
env: env:
- FEATURES="clippy" - CLIPPY="true"
- FEATURES="" - CLIPPY=""
install:
- if [ -n "$CLIPPY" ]; then cargo install -f clippy; fi
matrix: matrix:
fast_finish: true fast_finish: true
exclude: exclude:
- rust: stable - rust: stable
env: FEATURES="clippy" env: CLIPPY="true"
- rust: nightly - rust: nightly
env: FEATURES="" env: CLIPPY=""
allow_failures: allow_failures:
- rust: nightly - rust: nightly
script: script:
- cargo test --no-default-features --features "$FEATURES" - if [ -n "$CLIPPY" ]; then cargo clippy; fi
- if [ -z "$CLIPPY" ]; then cargo test; fi

540
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -34,7 +34,6 @@ fnv = "1"
unicode-width = "0.1" unicode-width = "0.1"
arraydeque = "0.4" arraydeque = "0.4"
glutin = "0.16" glutin = "0.16"
clippy = { version = "*", optional = true }
env_logger = "0.5" env_logger = "0.5"
base64 = "0.9.0" base64 = "0.9.0"

224
font/Cargo.lock generated Normal file
View file

@ -0,0 +1,224 @@
[[package]]
name = "bitflags"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "bitflags"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cc"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cfg-if"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cmake"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "core-foundation"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "core-foundation-sys"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "core-graphics"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "core-text"
version = "9.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "euclid"
version = "0.17.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "expat-sys"
version = "2.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cmake 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "font"
version = "0.1.0"
dependencies = [
"core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)",
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"freetype-rs 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig 0.4.0 (git+https://github.com/jwilm/rust-fontconfig?branch=updated-2017-10-8)",
]
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "freetype-rs"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
"freetype-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "freetype-sys"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
"libz-sys 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libc"
version = "0.2.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "libz-sys"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
"vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "log"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num-traits"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "num-traits"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "pkg-config"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "servo-fontconfig"
version = "0.4.0"
source = "git+https://github.com/jwilm/rust-fontconfig?branch=updated-2017-10-8#be2b94de833ec69cf767186262a5fb8360fa5b45"
dependencies = [
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig-sys 4.0.3 (git+https://github.com/jwilm/libfontconfig?branch=updated-2017-10-8)",
]
[[package]]
name = "servo-fontconfig-sys"
version = "4.0.3"
source = "git+https://github.com/jwilm/libfontconfig?branch=updated-2017-10-8#5c1845e1bffa11cf4d3e6fb27f456bf5c814ce1b"
dependencies = [
"expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"freetype-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "vcpkg"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
[metadata]
"checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4"
"checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789"
"checksum cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "49ec142f5768efb5b7622aebc3fdbdbb8950a4b9ba996393cb76ef7466e8747d"
"checksum cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "405216fd8fe65f718daa7102ea808a946b6ce40c742998fbfd3463645552de18"
"checksum cmake 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "95470235c31c726d72bf2e1f421adc1e65b9d561bf5529612cbe1a72da1467b3"
"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980"
"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
"checksum core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb0ed45fdc32f9ab426238fba9407dfead7bacd7900c9b4dd3f396f46eafdae3"
"checksum core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd581c37283d0c23311d179aefbb891f2324ee0405da58a26e8594ab76e5748"
"checksum euclid 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c95fd0d455f114291a3109286bd387bd423770058474a2d3f38b712cd661df60"
"checksum expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c470ccb972f2088549b023db8029ed9da9426f5affbf9b62efff7009ab8ed5b1"
"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
"checksum freetype-rs 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a1418e2a055fec8efe18c1a90a54b2cf5e649e583830dd4c71226c4e3bc920c6"
"checksum freetype-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eccfb6d96cac99921f0c2142a91765f6c219868a2c45bdfe7d65a08775f18127"
"checksum libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)" = "b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"
"checksum libz-sys 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "87f737ad6cc6fd6eefe3d9dc5412f1573865bded441300904d2f42269e140f16"
"checksum log 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6fddaa003a65722a7fb9e26b0ce95921fe4ba590542ced664d8ce2fa26f9f3ac"
"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
"checksum num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775393e285254d2f5004596d69bb8bc1149754570dcc08cf30cabeba67955e28"
"checksum pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "110d5ee3593dbb73f56294327fe5668bcc997897097cbc76b51e7aed3f52452f"
"checksum servo-fontconfig 0.4.0 (git+https://github.com/jwilm/rust-fontconfig?branch=updated-2017-10-8)" = "<none>"
"checksum servo-fontconfig-sys 4.0.3 (git+https://github.com/jwilm/libfontconfig?branch=updated-2017-10-8)" = "<none>"
"checksum vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ed0f6789c8a85ca41bbc1c9d175422116a9869bd1cf31bb08e1493ecce60380"

View file

@ -24,7 +24,7 @@ pub const kCGBitmapByteOrder32Host: u32 = kCGBitmapByteOrder32Little;
pub const kCGBitmapByteOrder32Host: u32 = kCGBitmapByteOrder32Big; pub const kCGBitmapByteOrder32Host: u32 = kCGBitmapByteOrder32Big;
#[cfg(target_endian = "little")] #[cfg(target_endian = "little")]
pub fn extract_rgb(bytes: Vec<u8>) -> Vec<u8> { pub fn extract_rgb(bytes: &[u8]) -> Vec<u8> {
let pixels = bytes.len() / 4; let pixels = bytes.len() / 4;
let mut rgb = Vec::with_capacity(pixels * 3); let mut rgb = Vec::with_capacity(pixels * 3);
@ -32,7 +32,7 @@ pub fn extract_rgb(bytes: Vec<u8>) -> Vec<u8> {
let offset = i * 4; let offset = i * 4;
rgb.push(bytes[offset + 2]); rgb.push(bytes[offset + 2]);
rgb.push(bytes[offset + 1]); rgb.push(bytes[offset + 1]);
rgb.push(bytes[offset + 0]); rgb.push(bytes[offset]);
} }
rgb rgb

View file

@ -132,8 +132,8 @@ impl ::Rasterize for Rasterizer {
Ok(Rasterizer { Ok(Rasterizer {
fonts: HashMap::new(), fonts: HashMap::new(),
keys: HashMap::new(), keys: HashMap::new(),
device_pixel_ratio: device_pixel_ratio, device_pixel_ratio,
use_thin_strokes: use_thin_strokes, use_thin_strokes,
}) })
} }
@ -196,7 +196,7 @@ impl Rasterizer {
for descriptor in descriptors { for descriptor in descriptors {
if descriptor.style_name == style { if descriptor.style_name == style {
// Found the font we want // Found the font we want
let scaled_size = size.as_f32_pts() as f64 * self.device_pixel_ratio as f64; let scaled_size = f64::from(size.as_f32_pts()) * f64::from(self.device_pixel_ratio);
let font = descriptor.to_font(scaled_size, true); let font = descriptor.to_font(scaled_size, true);
return Ok(font); return Ok(font);
} }
@ -220,7 +220,7 @@ impl Rasterizer {
Slant::Normal => false, Slant::Normal => false,
_ => true, _ => true,
}; };
let scaled_size = size.as_f32_pts() as f64 * self.device_pixel_ratio as f64; let scaled_size = f64::from(size.as_f32_pts()) * f64::from(self.device_pixel_ratio);
let descriptors = descriptors_for_family(&desc.name[..]); let descriptors = descriptors_for_family(&desc.name[..]);
for descriptor in descriptors { for descriptor in descriptors {
@ -250,7 +250,7 @@ impl Rasterizer {
font: &Font, font: &Font,
) -> Option<Result<RasterizedGlyph, Error>> { ) -> Option<Result<RasterizedGlyph, Error>> {
let scaled_size = self.device_pixel_ratio * glyph.size.as_f32_pts(); let scaled_size = self.device_pixel_ratio * glyph.size.as_f32_pts();
font.get_glyph(glyph.c, scaled_size as _, self.use_thin_strokes) font.get_glyph(glyph.c, f64::from(scaled_size), self.use_thin_strokes)
.map(|r| Some(Ok(r))) .map(|r| Some(Ok(r)))
.unwrap_or_else(|e| match e { .unwrap_or_else(|e| match e {
Error::MissingGlyph(_) => None, Error::MissingGlyph(_) => None,
@ -301,7 +301,7 @@ pub fn get_family_names() -> Vec<String> {
/// Return fallback descriptors for font/language list /// Return fallback descriptors for font/language list
fn cascade_list_for_languages( fn cascade_list_for_languages(
ct_font: &CTFont, ct_font: &CTFont,
languages: &Vec<String> languages: &[String]
) -> Vec<Descriptor> { ) -> Vec<Descriptor> {
// convert language type &Vec<String> -> CFArray // convert language type &Vec<String> -> CFArray
@ -368,12 +368,11 @@ impl Descriptor {
// many chars. We add the symbols back in. // many chars. We add the symbols back in.
// Investigate if we can actually use the .-prefixed // Investigate if we can actually use the .-prefixed
// fallbacks somehow. // fallbacks somehow.
descriptors_for_family("Apple Symbols") if let Some(descriptor) =
.into_iter() descriptors_for_family("Apple Symbols").into_iter().next()
.next() // should only have one element; use it {
.map(|descriptor| { fallbacks.push(descriptor.to_font(size, false))
fallbacks.push(descriptor.to_font(size, false)) };
});
// Include Menlo in the fallback list as well // Include Menlo in the fallback list as well
fallbacks.insert(0, Font { fallbacks.insert(0, Font {
@ -390,9 +389,9 @@ impl Descriptor {
}; };
Font { Font {
ct_font: ct_font, ct_font,
cg_font: cg_font, cg_font,
fallbacks: fallbacks, fallbacks,
} }
} }
} }
@ -424,8 +423,8 @@ impl Font {
let line_height = (ascent + descent + leading + 0.5).floor(); let line_height = (ascent + descent + leading + 0.5).floor();
Metrics { Metrics {
average_advance: average_advance, average_advance,
line_height: line_height, line_height,
descent: -(self.ct_font.descent() as f32), descent: -(self.ct_font.descent() as f32),
} }
} }
@ -482,13 +481,13 @@ impl Font {
} }
let glyph_index = self.glyph_index(character) let glyph_index = self.glyph_index(character)
.ok_or(Error::MissingGlyph(character))?; .ok_or_else(|| Error::MissingGlyph(character))?;
let bounds = self.bounding_rect_for_glyph(Default::default(), glyph_index); let bounds = self.bounding_rect_for_glyph(Default::default(), glyph_index);
let rasterized_left = bounds.origin.x.floor() as i32; let rasterized_left = bounds.origin.x.floor() as i32;
let rasterized_width = let rasterized_width =
(bounds.origin.x - (rasterized_left as f64) + bounds.size.width).ceil() as u32; (bounds.origin.x - f64::from(rasterized_left) + bounds.size.width).ceil() as u32;
let rasterized_descent = (-bounds.origin.y).ceil() as i32; let rasterized_descent = (-bounds.origin.y).ceil() as i32;
let rasterized_ascent = (bounds.size.height + bounds.origin.y).ceil() as i32; let rasterized_ascent = (bounds.size.height + bounds.origin.y).ceil() as i32;
let rasterized_height = (rasterized_descent + rasterized_ascent) as u32; let rasterized_height = (rasterized_descent + rasterized_ascent) as u32;
@ -519,8 +518,8 @@ impl Font {
let context_rect = CGRect::new( let context_rect = CGRect::new(
&CGPoint::new(0.0, 0.0), &CGPoint::new(0.0, 0.0),
&CGSize::new( &CGSize::new(
rasterized_width as f64, f64::from(rasterized_width),
rasterized_height as f64 f64::from(rasterized_height)
) )
); );
@ -542,8 +541,8 @@ impl Font {
// Set fill color to white for drawing the glyph // Set fill color to white for drawing the glyph
cg_context.set_rgb_fill_color(1.0, 1.0, 1.0, 1.0); cg_context.set_rgb_fill_color(1.0, 1.0, 1.0, 1.0);
let rasterization_origin = CGPoint { let rasterization_origin = CGPoint {
x: -rasterized_left as f64, x: f64::from(-rasterized_left),
y: rasterized_descent as f64, y: f64::from(rasterized_descent),
}; };
self.ct_font.draw_glyphs(&[glyph_index as CGGlyph], self.ct_font.draw_glyphs(&[glyph_index as CGGlyph],
@ -552,7 +551,7 @@ impl Font {
let rasterized_pixels = cg_context.data().to_vec(); let rasterized_pixels = cg_context.data().to_vec();
let buf = extract_rgb(rasterized_pixels); let buf = extract_rgb(&rasterized_pixels);
Ok(RasterizedGlyph { Ok(RasterizedGlyph {
c: character, c: character,
@ -560,7 +559,7 @@ impl Font {
top: (bounds.size.height + bounds.origin.y).ceil() as i32, top: (bounds.size.height + bounds.origin.y).ceil() as i32,
width: rasterized_width as i32, width: rasterized_width as i32,
height: rasterized_height as i32, height: rasterized_height as i32,
buf: buf, buf,
}) })
} }
@ -585,7 +584,7 @@ impl Font {
); );
if res { if res {
Some(glyphs[0] as u32) Some(u32::from(glyphs[0]))
} else { } else {
None None
} }

View file

@ -24,7 +24,13 @@ foreign_type! {
} }
impl CharSet { impl CharSet {
pub fn new() -> CharSet { pub fn new() -> Self {
Self::default()
}
}
impl Default for CharSet {
fn default() -> Self {
CharSet(unsafe { FcCharSetCreate() }) CharSet(unsafe { FcCharSetCreate() })
} }
} }

View file

@ -38,7 +38,7 @@ impl Config {
impl ConfigRef { impl ConfigRef {
/// Returns one of the two sets of fonts from the configuration as /// Returns one of the two sets of fonts from the configuration as
/// specified by `set`. /// specified by `set`.
pub fn get_fonts<'a>(&'a self, set: SetName) -> &'a FontSetRef { pub fn get_fonts(&self, set: SetName) -> &FontSetRef {
unsafe { unsafe {
let ptr = FcConfigGetFonts(self.as_ptr(), set as u32); let ptr = FcConfigGetFonts(self.as_ptr(), set as u32);
FontSetRef::from_ptr(ptr) FontSetRef::from_ptr(ptr)

View file

@ -24,8 +24,13 @@ foreign_type! {
} }
impl ObjectSet { impl ObjectSet {
#[allow(dead_code)] pub fn new() -> Self {
pub fn new() -> ObjectSet { Self::default()
}
}
impl Default for ObjectSet {
fn default() -> Self {
ObjectSet(unsafe { ObjectSet(unsafe {
FcObjectSetCreate() FcObjectSetCreate()
}) })

View file

@ -39,8 +39,8 @@ pub struct StringPropertyIter<'a> {
impl<'a> StringPropertyIter<'a> { impl<'a> StringPropertyIter<'a> {
fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> StringPropertyIter<'b> { fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> StringPropertyIter<'b> {
StringPropertyIter { StringPropertyIter {
pattern: pattern, pattern,
object: object, object,
index: 0 index: 0
} }
} }
@ -82,8 +82,8 @@ pub struct BooleanPropertyIter<'a> {
impl<'a> BooleanPropertyIter<'a> { impl<'a> BooleanPropertyIter<'a> {
fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> BooleanPropertyIter<'b> { fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> BooleanPropertyIter<'b> {
BooleanPropertyIter { BooleanPropertyIter {
pattern: pattern, pattern,
object: object, object,
index: 0 index: 0
} }
} }
@ -101,7 +101,7 @@ impl<'a> BooleanPropertyIter<'a> {
}; };
if result == FcResultMatch { if result == FcResultMatch {
Some(!(value == 0)) Some(value != 0)
} else { } else {
None None
} }
@ -118,8 +118,8 @@ pub struct IntPropertyIter<'a> {
impl<'a> IntPropertyIter<'a> { impl<'a> IntPropertyIter<'a> {
fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> IntPropertyIter<'b> { fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> IntPropertyIter<'b> {
IntPropertyIter { IntPropertyIter {
pattern: pattern, pattern,
object: object, object,
index: 0 index: 0
} }
} }
@ -171,7 +171,7 @@ pub struct HintStylePropertyIter<'a> {
} }
impl<'a> HintStylePropertyIter<'a> { impl<'a> HintStylePropertyIter<'a> {
fn new<'b>(pattern: &'b PatternRef) -> HintStylePropertyIter<'b> { fn new(pattern: &PatternRef) -> HintStylePropertyIter {
HintStylePropertyIter { HintStylePropertyIter {
inner: IntPropertyIter::new(pattern, b"hintstyle\0") inner: IntPropertyIter::new(pattern, b"hintstyle\0")
} }
@ -201,7 +201,7 @@ pub struct LcdFilterPropertyIter<'a> {
} }
impl<'a> LcdFilterPropertyIter<'a> { impl<'a> LcdFilterPropertyIter<'a> {
fn new<'b>(pattern: &'b PatternRef) -> LcdFilterPropertyIter<'b> { fn new(pattern: &PatternRef) -> LcdFilterPropertyIter {
LcdFilterPropertyIter { LcdFilterPropertyIter {
inner: IntPropertyIter::new(pattern, b"lcdfilter\0") inner: IntPropertyIter::new(pattern, b"lcdfilter\0")
} }
@ -236,14 +236,14 @@ pub struct DoublePropertyIter<'a> {
impl<'a> DoublePropertyIter<'a> { impl<'a> DoublePropertyIter<'a> {
fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> DoublePropertyIter<'b> { fn new<'b>(pattern: &'b PatternRef, object: &'b [u8]) -> DoublePropertyIter<'b> {
DoublePropertyIter { DoublePropertyIter {
pattern: pattern, pattern,
object: object, object,
index: 0 index: 0
} }
} }
fn get_value(&self, index: usize) -> Option<f64> { fn get_value(&self, index: usize) -> Option<f64> {
let mut value = 0 as c_double; let mut value = f64::from(0);
let result = unsafe { let result = unsafe {
FcPatternGetDouble( FcPatternGetDouble(
@ -379,7 +379,13 @@ macro_rules! string_accessor {
} }
impl Pattern { impl Pattern {
pub fn new() -> Pattern { pub fn new() -> Self {
Self::default()
}
}
impl Default for Pattern {
fn default() -> Self {
Pattern(unsafe { FcPatternCreate() }) Pattern(unsafe { FcPatternCreate() })
} }
} }
@ -483,11 +489,11 @@ impl PatternRef {
BooleanPropertyIter::new(self, object) BooleanPropertyIter::new(self, object)
} }
pub fn hintstyle<'a>(&'a self) -> HintStylePropertyIter<'a> { pub fn hintstyle(&self) -> HintStylePropertyIter {
HintStylePropertyIter::new(self) HintStylePropertyIter::new(self)
} }
pub fn lcdfilter<'a>(&'a self) -> LcdFilterPropertyIter<'a> { pub fn lcdfilter(&self) -> LcdFilterPropertyIter {
LcdFilterPropertyIter::new(self) LcdFilterPropertyIter::new(self)
} }
@ -565,7 +571,7 @@ impl PatternRef {
RgbaPropertyIter::new(self, b"rgba\0") RgbaPropertyIter::new(self, b"rgba\0")
} }
pub fn set_rgba(&self, rgba: Rgba) -> bool { pub fn set_rgba(&self, rgba: &Rgba) -> bool {
unsafe { unsafe {
self.add_integer(b"rgba\0", rgba.to_isize()) self.add_integer(b"rgba\0", rgba.to_isize())
} }

View file

@ -80,8 +80,8 @@ impl ::Rasterize for FreeTypeRasterizer {
Ok(FreeTypeRasterizer { Ok(FreeTypeRasterizer {
faces: HashMap::new(), faces: HashMap::new(),
keys: HashMap::new(), keys: HashMap::new(),
library: library, library,
device_pixel_ratio: device_pixel_ratio, device_pixel_ratio,
}) })
} }
@ -94,7 +94,7 @@ impl ::Rasterize for FreeTypeRasterizer {
Ok(Metrics { Ok(Metrics {
average_advance: full.cell_width, average_advance: full.cell_width,
line_height: height, line_height: height,
descent: descent, descent,
}) })
} }
@ -172,7 +172,7 @@ impl FreeTypeRasterizer {
} as f64; } as f64;
Ok(FullMetrics { Ok(FullMetrics {
size_metrics: size_metrics, size_metrics,
cell_width: width cell_width: width
}) })
} }
@ -188,7 +188,7 @@ impl FreeTypeRasterizer {
pattern.add_family(&desc.name); pattern.add_family(&desc.name);
pattern.set_weight(weight.into_fontconfig_type()); pattern.set_weight(weight.into_fontconfig_type());
pattern.set_slant(slant.into_fontconfig_type()); pattern.set_slant(slant.into_fontconfig_type());
pattern.add_pixelsize(size.as_f32_pts() as _); pattern.add_pixelsize(f64::from(size.as_f32_pts()));
let font = fc::font_match(fc::Config::get_current(), &mut pattern) let font = fc::font_match(fc::Config::get_current(), &mut pattern)
.ok_or_else(|| Error::MissingFont(desc.to_owned()))?; .ok_or_else(|| Error::MissingFont(desc.to_owned()))?;
@ -210,7 +210,7 @@ impl FreeTypeRasterizer {
let mut pattern = fc::Pattern::new(); let mut pattern = fc::Pattern::new();
pattern.add_family(&desc.name); pattern.add_family(&desc.name);
pattern.add_style(style); pattern.add_style(style);
pattern.add_pixelsize(size.as_f32_pts() as _); pattern.add_pixelsize(f64::from(size.as_f32_pts()));
let font = fc::font_match(fc::Config::get_current(), &mut pattern) let font = fc::font_match(fc::Config::get_current(), &mut pattern)
.ok_or_else(|| Error::MissingFont(desc.to_owned()))?; .ok_or_else(|| Error::MissingFont(desc.to_owned()))?;
@ -244,12 +244,12 @@ impl FreeTypeRasterizer {
}; };
let face = Face { let face = Face {
ft_face: ft_face, ft_face,
key: FontKey::next(), key: FontKey::next(),
load_flags: Self::ft_load_flags(pattern), load_flags: Self::ft_load_flags(pattern),
render_mode: Self::ft_render_mode(pattern), render_mode: Self::ft_render_mode(pattern),
lcd_filter: Self::ft_lcd_filter(pattern), lcd_filter: Self::ft_lcd_filter(pattern),
non_scalable: non_scalable, non_scalable,
}; };
debug!("Loaded Face {:?}", face); debug!("Loaded Face {:?}", face);
@ -269,14 +269,10 @@ impl FreeTypeRasterizer {
let use_initial_face = if self.faces.contains_key(&glyph_key.font_key) { let use_initial_face = if self.faces.contains_key(&glyph_key.font_key) {
// Get face and unwrap since we just checked for presence. // Get face and unwrap since we just checked for presence.
let face = self.faces.get(&glyph_key.font_key).unwrap(); let face = &self.faces[&glyph_key.font_key];
let index = face.ft_face.get_char_index(c as usize); let index = face.ft_face.get_char_index(c as usize);
if index != 0 || have_recursed { index != 0 || have_recursed
true
} else {
false
}
} else { } else {
false false
}; };
@ -334,7 +330,7 @@ impl FreeTypeRasterizer {
// Render a normal character if it's not a cursor // Render a normal character if it's not a cursor
let font_key = self.face_for_glyph(glyph_key, false)?; let font_key = self.face_for_glyph(glyph_key, false)?;
let face = self.faces.get(&font_key).unwrap(); let face = &self.faces[&font_key];
let index = face.ft_face.get_char_index(glyph_key.c as usize); let index = face.ft_face.get_char_index(glyph_key.c as usize);
let size = face.non_scalable.as_ref() let size = face.non_scalable.as_ref()
@ -360,7 +356,7 @@ impl FreeTypeRasterizer {
left: glyph.bitmap_left(), left: glyph.bitmap_left(),
width: pixel_width, width: pixel_width,
height: glyph.bitmap().rows(), height: glyph.bitmap().rows(),
buf: buf, buf,
}) })
} }
@ -490,7 +486,7 @@ impl FreeTypeRasterizer {
} }
Ok((bitmap.width(), packed)) Ok((bitmap.width(), packed))
}, },
mode @ _ => panic!("unhandled pixel mode: {:?}", mode) mode => panic!("unhandled pixel mode: {:?}", mode)
} }
} }

View file

@ -116,7 +116,7 @@ impl FontDesc {
{ {
FontDesc { FontDesc {
name: name.into(), name: name.into(),
style: style style,
} }
} }
} }
@ -146,7 +146,7 @@ impl FontKey {
} }
} }
#[derive(Debug, Copy, Clone, PartialEq, Eq)] #[derive(Debug, Copy, Clone, Eq)]
pub struct GlyphKey { pub struct GlyphKey {
pub c: char, pub c: char,
pub font_key: FontKey, pub font_key: FontKey,
@ -165,6 +165,19 @@ impl Hash for GlyphKey {
} }
} }
impl PartialEq for GlyphKey {
fn eq(&self, other: &Self) -> bool {
unsafe {
// This transmute is fine:
//
// - If GlyphKey ever becomes a different size, this will fail to compile
// - Result is being used for equality checking and has no fields (it's a u64)
let other = ::std::mem::transmute::<GlyphKey, u64>(*other);
::std::mem::transmute::<GlyphKey, u64>(*self).eq(&other)
}
}
}
/// Font size stored as integer /// Font size stored as integer
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
pub struct Size(i16); pub struct Size(i16);
@ -183,7 +196,7 @@ impl Size {
/// Get the f32 size in points /// Get the f32 size in points
pub fn as_f32_pts(self) -> f32 { pub fn as_f32_pts(self) -> f32 {
self.0 as f32 / Size::factor() f32::from(self.0) / Size::factor()
} }
} }
@ -224,14 +237,14 @@ pub fn get_underline_cursor_glyph(descent: i32, width: i32) -> Result<Rasterized
let buf = vec![255u8; (width * height * 3) as usize]; let buf = vec![255u8; (width * height * 3) as usize];
// Create a custom glyph with the rectangle data attached to it // Create a custom glyph with the rectangle data attached to it
return Ok(RasterizedGlyph { Ok(RasterizedGlyph {
c: UNDERLINE_CURSOR_CHAR, c: UNDERLINE_CURSOR_CHAR,
top: descent + height, top: descent + height,
left: 0, left: 0,
height, height,
width, width,
buf: buf, buf,
}); })
} }
// Returns a custom beam cursor character // Returns a custom beam cursor character
@ -245,14 +258,14 @@ pub fn get_beam_cursor_glyph(
let buf = vec![255u8; (beam_width * height * 3) as usize]; let buf = vec![255u8; (beam_width * height * 3) as usize];
// Create a custom glyph with the rectangle data attached to it // Create a custom glyph with the rectangle data attached to it
return Ok(RasterizedGlyph { Ok(RasterizedGlyph {
c: BEAM_CURSOR_CHAR, c: BEAM_CURSOR_CHAR,
top: ascent, top: ascent,
left: 0, left: 0,
height, height,
width: beam_width, width: beam_width,
buf: buf, buf,
}); })
} }
// Returns a custom box cursor character // Returns a custom box cursor character
@ -276,14 +289,14 @@ pub fn get_box_cursor_glyph(
} }
// Create a custom glyph with the rectangle data attached to it // Create a custom glyph with the rectangle data attached to it
return Ok(RasterizedGlyph { Ok(RasterizedGlyph {
c: BOX_CURSOR_CHAR, c: BOX_CURSOR_CHAR,
top: ascent, top: ascent,
left: 0, left: 0,
height, height,
width, width,
buf: buf, buf,
}); })
} }
struct BufDebugger<'a>(&'a [u8]); struct BufDebugger<'a>(&'a [u8]);

View file

@ -1735,7 +1735,7 @@ mod tests {
} }
} }
#[cfg_attr(feature = "clippy", allow(enum_variant_names))] #[cfg_attr(feature = "cargo-clippy", allow(enum_variant_names))]
#[derive(Deserialize, Copy, Clone)] #[derive(Deserialize, Copy, Clone)]
enum Key { enum Key {
Key1, Key1,

View file

@ -13,12 +13,7 @@
// limitations under the License. // limitations under the License.
// //
//! Alacritty - The GPU Enhanced Terminal //! Alacritty - The GPU Enhanced Terminal
#![cfg_attr(feature = "clippy", feature(plugin))] #![cfg_attr(feature = "cargo-clippy", deny(clippy, if_not_else, enum_glob_use, wrong_pub_self_convention))]
#![cfg_attr(feature = "clippy", plugin(clippy))]
#![cfg_attr(feature = "clippy", deny(clippy))]
#![cfg_attr(feature = "clippy", deny(enum_glob_use))]
#![cfg_attr(feature = "clippy", deny(if_not_else))]
#![cfg_attr(feature = "clippy", deny(wrong_pub_self_convention))]
#![cfg_attr(feature = "nightly", feature(core_intrinsics))] #![cfg_attr(feature = "nightly", feature(core_intrinsics))]
#![cfg_attr(all(test, feature = "bench"), feature(test))] #![cfg_attr(all(test, feature = "bench"), feature(test))]
@ -121,5 +116,6 @@ impl Mul<f32> for Rgb {
#[allow(unused_mut)] #[allow(unused_mut)]
pub mod gl { pub mod gl {
#![allow(non_upper_case_globals)] #![allow(non_upper_case_globals)]
#![cfg_attr(feature = "cargo-clippy", allow(clippy))]
include!(concat!(env!("OUT_DIR"), "/gl_bindings.rs")); include!(concat!(env!("OUT_DIR"), "/gl_bindings.rs"));
} }

View file

@ -11,6 +11,7 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
#![cfg_attr(feature = "cargo-clippy", allow(let_unit_value))]
#![cfg(target_os = "macos")] #![cfg(target_os = "macos")]
use libc::{LC_CTYPE, setlocale}; use libc::{LC_CTYPE, setlocale};
use std::ffi::{CString, CStr}; use std::ffi::{CString, CStr};

View file

@ -29,7 +29,7 @@ pub struct Logger<T> {
impl<T: Send + io::Write> Logger<T> { impl<T: Send + io::Write> Logger<T> {
// False positive, see: https://github.com/rust-lang-nursery/rust-clippy/issues/734 // False positive, see: https://github.com/rust-lang-nursery/rust-clippy/issues/734
#[cfg_attr(feature = "clippy", allow(new_ret_no_self))] #[cfg_attr(feature = "cargo-clippy", allow(new_ret_no_self))]
pub fn new(output: T, level: log::LevelFilter) -> Logger<io::LineWriter<T>> { pub fn new(output: T, level: log::LevelFilter) -> Logger<io::LineWriter<T>> {
log::set_max_level(level); log::set_max_level(level);
Logger { Logger {

View file

@ -13,12 +13,7 @@
// limitations under the License. // limitations under the License.
// //
//! Alacritty - The GPU Enhanced Terminal //! Alacritty - The GPU Enhanced Terminal
#![cfg_attr(feature = "clippy", feature(plugin))] #![cfg_attr(feature = "cargo-clippy", deny(clippy, if_not_else, enum_glob_use, wrong_pub_self_convention))]
#![cfg_attr(feature = "clippy", plugin(clippy))]
#![cfg_attr(feature = "clippy", deny(clippy))]
#![cfg_attr(feature = "clippy", deny(enum_glob_use))]
#![cfg_attr(feature = "clippy", deny(if_not_else))]
#![cfg_attr(feature = "clippy", deny(wrong_pub_self_convention))]
#![cfg_attr(feature = "nightly", feature(core_intrinsics))] #![cfg_attr(feature = "nightly", feature(core_intrinsics))]
#![cfg_attr(all(test, feature = "bench"), feature(test))] #![cfg_attr(all(test, feature = "bench"), feature(test))]

View file

@ -117,7 +117,7 @@ fn set_controlling_terminal(fd: c_int) {
// based on architecture (32/64). So a generic cast is used to make sure // based on architecture (32/64). So a generic cast is used to make sure
// there are no issues. To allow such a generic cast the clippy warning // there are no issues. To allow such a generic cast the clippy warning
// is disabled. // is disabled.
#[cfg_attr(feature = "clippy", allow(cast_lossless))] #[cfg_attr(feature = "cargo-clippy", allow(cast_lossless))]
libc::ioctl(fd, TIOCSCTTY as _, 0) libc::ioctl(fd, TIOCSCTTY as _, 0)
}; };