module Data.GCode.Pipes.Transform where
{--

These are remnants from refactoring Main with various degree of usability.

Do not rely on these as they might get removed (or ideally improved) in future versions.

--}

import Data.GCode
import Data.GCode.Generate (rot)

import Pipes
import qualified Pipes.Prelude as P

translateXY :: Functor m => Double -> Double -> Pipe Code Code m r
translateXY xtrans ytrans = P.map (modifyXY (\x y -> (x + xtrans, y + ytrans)))

translateZ :: Functor m => Double -> Pipe Code Code m r
translateZ ztrans = P.map (modifyAxis Z (+ztrans))

rotate :: Functor m => Double -> Pipe Code Code m r
rotate angle = P.map (modifyXY (rot (angle*pi/180)))

scaleFeedrate :: Functor m => Double -> Pipe Code Code m r
scaleFeedrate factor = P.map (modifyFeedrate (*factor))

scaleXY :: Functor m => Double -> Double -> Pipe Code Code m r
scaleXY xsc ysc = P.map (modifyXY (\x y -> (x*xsc, y*ysc)))