This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub fn get_bitmap(&self) -> Vec<u8> { | |
let length = self.w * self.h; | |
let aligned_length = (length + 3) & !3; | |
assert!(aligned_length <= self.a.len()); | |
let mut output = vec![0; aligned_length]; | |
unsafe { | |
// offset = Zeroed out lanes | |
let mut offset = _mm_setzero_ps(); | |
// lookup = The 4 bytes (12, 8, 4, 0) in all lanes | |
let lookup = _mm_set1_epi32(0x0c_08_04_00); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub fn get_bitmap(&self) -> Vec<u8> { | |
let length = self.w * self.h; | |
let aligned_length = (length + 3) & !3; | |
assert!(aligned_length - 1 <= self.a.len()); | |
let mut output = vec![0; aligned_length]; | |
unsafe { | |
// offset = Zeroed out lanes | |
let mut offset = _mm_setzero_ps(); | |
// lookup = The 4 bytes (12, 8, 4, 0) in all lanes | |
let lookup = _mm_set1_epi32(0x0c_08_04_00); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[cfg(all(target_feature = "sse", any(target_arch = "x86", target_arch = "x86_64")))] | |
pub fn get_bitmap(&self) -> Vec<u8> { | |
let length = self.w * self.h; | |
let aligned_length = (length + 3) & !3; | |
let mut output = Vec::with_capacity(aligned_length); | |
unsafe { | |
output.set_len(aligned_length); | |
// offset = Zeroed out lanes | |
let mut offset = _mm_setzero_ps(); | |
// lookup = The 4 bytes (12, 8, 4, 0) in all lanes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use crate::math::Polygons; | |
use alloc::vec; | |
use alloc::vec::*; | |
pub struct Raster { | |
w: usize, | |
h: usize, | |
a: Vec<f32>, | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MIT | |
#[inline(always)] | |
pub fn line( | |
&mut self, | |
x0: f32, | |
y0: f32, | |
x1: f32, | |
y1: f32, | |
) { | |
let dy = y1 - y0; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
0eNrdvU1vnLmSNfhXLrwuGQ+/yYtBL2bdwAzmXcyi0Sik5bQrp2TJSMk1XWjUf5+UrEw9thkR50Smdad6U2VL5mGQjIgnGF/87zfvbr5sP+93tw+/vru7+/3NP//75Sf3b/75H6u/Pv5ud313+/XH97uPt5ubx589/Pl5++afb3YP209vfnlzu/n0+Lf7h7vb7dX/u7m5efPXL292t++3//Xmn+Gv//zlzfb2Yfew235FefrLn7/efvn0brs//IOX8V/e3T9sHnZ3twfMz3f3u6c/HmY7wFwtb8svb/48/KG8LX/99csPMPEEc7O53+6vHr7s99uHCVB/BopznATiNB0mz3blR2LGE8YUoTAIeYZQMYQu09AYhCkNHUNoMg2DQZjSEBYMospEhMBAzKmIGERRqEgMxJwKkDGzQkVhIOZUgKyZFCoaAzGnAmTOqFAxGIgpFfGFOz9uHraTweF5/l/evN/tt9dffxVnUMGAWmCkCCFlAClhy0OgMN4N8nHFQiDMTwvjXIVlYiMQ5jRgfKsITxwEwpSGhOlURY2kQCDMacA0qqJQUyIQ5jRgPKl8WlIhEOY0YDypfGNTIxDmNGA8qdgaaRAIBxoOZuWT+fnPlbX6y8Foe7c9WKhv/u+vg//Y7u+fxra0hFFjSK2+2KbLIxlOW/fuZrO/+ry53XqN3RXARCd+3erD/3Vb10DJGkpCUYKGkkGUroEUEKRoIBUEiRpIw0DULekYhno4A8NQ2WRt96qLWVQUkGdDUlFAng1VRUms/JhGMCZA2TKEMQkyjWFIhLJlD0MyZJrEkBBlyypGpMiyiyExmoMETo7mIJGUozlKIuVojpJJOcqWHYzJUbCMYUyOgmERb66vv3z6crN5uNtP5ejoBHr8k2Ea61DDRBogUrOQVqayjlRMpAAiJRMpoltuIiUMaTGBMgYUTaCCAWUTqGJA1QQCGbybQCB7B3u3B6mNppKbF1IbzVFYq7hPUVireI6SaF00BA9wxhzbw8IprCKSgCqrhyS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
0eNqVltFugyAUhl9l4VobgaLFy75EL5al0Y4sZBYbxW5N47uP2m026ZGccycon1/ML/xXVjeDOXXW+X3dtp+svM4zPStfH4a3e/bQuvt0bz9c1dzm/OVkWMmsN0eWMFcdb6Pet86kX1XTsDFh1r2bb1by8S1hxnnrrblTpsFl74ZjbbrwwLx+qHtfedu6wDy1vZ0uw9sCJs1WKmGXcKFWahyTJ4z4xzRVb7rUD11nPADa/IIEzJFIThHHrKGv8iyjJwZIUBTCGiLkOMJm2aGgEECHDY5QLDtoCgF04BkOkS9LcE5BwBYCh1ARC0lBwBbIYK4jFoqCgC2Q0ZQRi4KCgC2Q4RQRC01BgBYCmU6+bCE4BQFb4NKZRSQkgQA74LIZ+xCKQIAdcMmMREIUBALsgMtl5OcQmkAAHSQulZFtQnICAXbAZTKyYUpJIMAOuExGjg6pCATYAZfJyBkqCwIBdsBlMtIlpCYQgkOojVO9LB/aaBJKWW1CA2W7++Kz6fppbSEzroWWuc7n7plBkHTqvDNpG2rey3buvwmrDt6ezf4PsvCW8QcIBrVJ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Current todo for 1.0: | |
- Raster rewrite | |
- Metrics is incomplete | |
- Layout utility is incomplete | |
- Kerning is missing |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub fn draw_line(&mut self, p0: &Point, p1: &Point) { | |
if p0.y == p1.y { | |
return; | |
} | |
let (dir, p0, p1) = if p0.y < p1.y { | |
(1.0, p0, p1) | |
} else { | |
(-1.0, p1, p0) | |
}; | |
let dxdy = (p1.x - p0.x) / (p1.y - p0.y); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[cfg(not(target_feature = "sse"))] | |
fn accumulate(src: &[f32]) -> Vec<u8> { | |
let mut acc = 0.0; | |
src.iter() | |
.map(|c| { | |
acc += c; | |
let y = acc.abs(); | |
let y = if y < 1.0 { | |
y | |
} else { |