summaryrefslogtreecommitdiff
path: root/src/geom/transform.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-07-02 19:59:52 +0200
committerLaurenz <laurmaedje@gmail.com>2023-07-02 20:07:43 +0200
commitebfdb1dafa430786db10dad2ef7d5467c1bdbed1 (patch)
tree2bbc24ddb4124c4bb14dec0e536129d4de37b056 /src/geom/transform.rs
parent3ab19185093d7709f824b95b979060ce125389d8 (diff)
Move everything into `crates/` directory
Diffstat (limited to 'src/geom/transform.rs')
-rw-r--r--src/geom/transform.rs77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/geom/transform.rs b/src/geom/transform.rs
deleted file mode 100644
index 1ff1dfdd..00000000
--- a/src/geom/transform.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-use super::*;
-
-/// A scale-skew-translate transformation.
-#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
-pub struct Transform {
- pub sx: Ratio,
- pub ky: Ratio,
- pub kx: Ratio,
- pub sy: Ratio,
- pub tx: Abs,
- pub ty: Abs,
-}
-
-impl Transform {
- /// The identity transformation.
- pub const fn identity() -> Self {
- Self {
- sx: Ratio::one(),
- ky: Ratio::zero(),
- kx: Ratio::zero(),
- sy: Ratio::one(),
- tx: Abs::zero(),
- ty: Abs::zero(),
- }
- }
-
- /// A translate transform.
- pub const fn translate(tx: Abs, ty: Abs) -> Self {
- Self { tx, ty, ..Self::identity() }
- }
-
- /// A scale transform.
- pub const fn scale(sx: Ratio, sy: Ratio) -> Self {
- Self { sx, sy, ..Self::identity() }
- }
-
- /// A rotate transform.
- pub fn rotate(angle: Angle) -> Self {
- let cos = Ratio::new(angle.cos());
- let sin = Ratio::new(angle.sin());
- Self {
- sx: cos,
- ky: sin,
- kx: -sin,
- sy: cos,
- ..Self::default()
- }
- }
-
- /// Whether this is the identity transformation.
- pub fn is_identity(self) -> bool {
- self == Self::identity()
- }
-
- /// Pre-concatenate another transformation.
- pub fn pre_concat(self, prev: Self) -> Self {
- Transform {
- sx: self.sx * prev.sx + self.kx * prev.ky,
- ky: self.ky * prev.sx + self.sy * prev.ky,
- kx: self.sx * prev.kx + self.kx * prev.sy,
- sy: self.ky * prev.kx + self.sy * prev.sy,
- tx: self.sx.of(prev.tx) + self.kx.of(prev.ty) + self.tx,
- ty: self.ky.of(prev.tx) + self.sy.of(prev.ty) + self.ty,
- }
- }
-
- /// Post-concatenate another transformation.
- pub fn post_concat(self, next: Self) -> Self {
- next.pre_concat(self)
- }
-}
-
-impl Default for Transform {
- fn default() -> Self {
- Self::identity()
- }
-}