| // Copyright 2016 Joe Wilm, The Alacritty Project Contributors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| //! Alacritty - The GPU Enhanced Terminal |
| #![cfg_attr(feature = "clippy", feature(plugin))] |
| #![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(all(test, feature = "bench"), feature(test))] |
| |
| #[macro_use] extern crate bitflags; |
| #[macro_use] extern crate clap; |
| #[macro_use] extern crate log; |
| #[macro_use] extern crate serde_derive; |
| |
| #[cfg(any(target_os = "linux", target_os = "freebsd", target_os="dragonfly", target_os="openbsd"))] |
| extern crate x11_dl; |
| |
| #[cfg(target_os = "macos")] |
| #[macro_use] |
| extern crate objc; |
| |
| extern crate arraydeque; |
| extern crate cgmath; |
| extern crate copypasta; |
| extern crate errno; |
| extern crate env_logger; |
| extern crate fnv; |
| extern crate font; |
| extern crate glutin; |
| extern crate libc; |
| extern crate mio; |
| extern crate mio_more; |
| extern crate notify; |
| extern crate parking_lot; |
| extern crate serde; |
| extern crate serde_json; |
| extern crate serde_yaml; |
| extern crate unicode_width; |
| extern crate vte; |
| extern crate xdg; |
| extern crate base64; |
| |
| #[macro_use] |
| pub mod macros; |
| |
| pub mod ansi; |
| pub mod cli; |
| pub mod config; |
| pub mod display; |
| pub mod event; |
| pub mod event_loop; |
| pub mod grid; |
| pub mod index; |
| pub mod input; |
| pub mod locale; |
| pub mod logging; |
| pub mod meter; |
| pub mod renderer; |
| pub mod selection; |
| pub mod sync; |
| pub mod term; |
| pub mod tty; |
| pub mod util; |
| pub mod window; |
| |
| use std::ops::Mul; |
| |
| pub use grid::Grid; |
| pub use term::Term; |
| |
| /// Facade around [winit's `MouseCursor`](glutin::MouseCursor) |
| #[derive(Debug, Eq, PartialEq, Copy, Clone)] |
| pub enum MouseCursor { |
| Arrow, |
| Text, |
| } |
| |
| #[derive(Debug, Eq, PartialEq, Copy, Clone, Default, Serialize, Deserialize)] |
| pub struct Rgb { |
| pub r: u8, |
| pub g: u8, |
| pub b: u8, |
| } |
| |
| // a multiply function for Rgb, as the default dim is just *2/3 |
| impl Mul<f32> for Rgb { |
| type Output = Rgb; |
| |
| fn mul(self, rhs: f32) -> Rgb { |
| let result = Rgb { |
| r: (f32::from(self.r) * rhs).max(0.0).min(255.0) as u8, |
| g: (f32::from(self.g) * rhs).max(0.0).min(255.0) as u8, |
| b: (f32::from(self.b) * rhs).max(0.0).min(255.0) as u8 |
| }; |
| |
| trace!("Scaling RGB by {} from {:?} to {:?}", rhs, self, result); |
| |
| result |
| } |
| } |
| |
| |
| #[cfg_attr(feature = "clippy", allow(too_many_arguments))] |
| #[cfg_attr(feature = "clippy", allow(doc_markdown))] |
| #[cfg_attr(feature = "clippy", allow(unreadable_literal))] |
| #[allow(unused_mut)] |
| pub mod gl { |
| #![allow(non_upper_case_globals)] |
| include!(concat!(env!("OUT_DIR"), "/gl_bindings.rs")); |
| } |