// pathfinder/content/src/util.rs // // Copyright © 2020 The Pathfinder Project Developers. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! Miscellaneous utilities. use pathfinder_geometry::line_segment::LineSegment2F; use pathfinder_geometry::transform2d::Transform2F; use pathfinder_simd::default::{F32x2, F32x4}; use std::hash::{Hash, Hasher}; use std::mem; pub(crate) fn hash_line_segment(line_segment: LineSegment2F, state: &mut H) where H: Hasher { hash_f32x4(line_segment.0, state); } pub(crate) fn hash_transform2f(transform: Transform2F, state: &mut H) where H: Hasher { hash_f32x4(transform.matrix.0, state); hash_f32x2(transform.vector.0, state); } pub(crate) fn hash_f32(value: f32, state: &mut H) where H: Hasher { unsafe { let data: u32 = mem::transmute::(value); data.hash(state); } } pub(crate) fn hash_f32x2(vector: F32x2, state: &mut H) where H: Hasher { unsafe { let data: [u32; 2] = mem::transmute::(vector); data.hash(state); } } pub(crate) fn hash_f32x4(vector: F32x4, state: &mut H) where H: Hasher { unsafe { let data: [u32; 4] = mem::transmute::(vector); data.hash(state); } }