tiny_skia/path64/
point64.rs

1// Copyright 2012 Google Inc.
2// Copyright 2020 Yevhenii Reizner
3//
4// Use of this source code is governed by a BSD-style license that can be
5// found in the LICENSE file.
6
7use crate::Point;
8
9#[derive(Copy, Clone, PartialEq, Debug)]
10pub enum SearchAxis {
11    X,
12    Y,
13}
14
15#[repr(C)]
16#[derive(Copy, Clone, PartialEq, Default, Debug)]
17pub struct Point64 {
18    pub x: f64,
19    pub y: f64,
20}
21
22impl Point64 {
23    pub fn from_xy(x: f64, y: f64) -> Self {
24        Point64 { x, y }
25    }
26
27    pub fn from_point(p: Point) -> Self {
28        Point64 {
29            x: f64::from(p.x),
30            y: f64::from(p.y),
31        }
32    }
33
34    pub fn zero() -> Self {
35        Point64 { x: 0.0, y: 0.0 }
36    }
37
38    pub fn to_point(&self) -> Point {
39        Point::from_xy(self.x as f32, self.y as f32)
40    }
41
42    pub fn axis_coord(&self, axis: SearchAxis) -> f64 {
43        match axis {
44            SearchAxis::X => self.x,
45            SearchAxis::Y => self.y,
46        }
47    }
48}