This commit is contained in:
2024-09-30 21:32:51 +01:00
parent 74b518e10b
commit 48b8cfe7ef
9 changed files with 28 additions and 53 deletions
+1 -1
View File
@@ -49,4 +49,4 @@ arcPart startA sw sc endA ew ec r centercol =
(V2 xa ya) = rotateV startA (V2 r 0)
(V2 xb yb) = rotateV (0.5 * (startA + endA)) (V2 (r * sqrt 2) 0)
(V2 xc yc) = rotateV endA (V2 r 0)
f (pos, col, V3 a b c) = Verx pos col [a, b, c] BottomLayer arcNum
f (pos, col, V3 a b c) = Verx pos col [a, b, c] BottomLayer ArcShad
+5 -5
View File
@@ -73,13 +73,13 @@ polygon :: [Point2] -> Picture
{-# INLINE polygon #-}
polygon = map f . polyToTris
where
f (V2 x y) = Verx (V3 x y 0) black [] BottomLayer polyNum
f (V2 x y) = Verx (V3 x y 0) black [] BottomLayer PolyShad
polygonCol :: [(Point2, RGBA)] -> Picture
{-# INLINE polygonCol #-}
polygonCol = polyToTris . map f
where
f (V2 x y, col) = Verx (V3 x y 0) col [] BottomLayer polyNum
f (V2 x y, col) = Verx (V3 x y 0) col [] BottomLayer PolyShad
poly3 :: [Point3] -> Picture
{-# INLINE poly3 #-}
@@ -89,7 +89,7 @@ poly3Col :: [(Point3, RGBA)] -> Picture
{-# INLINE poly3Col #-}
poly3Col = map f . polyToTris
where
f (pos, col) = Verx pos col [] BottomLayer polyNum
f (pos, col) = Verx pos col [] BottomLayer PolyShad
---- given a one and two zeros of a linear function over x and y,
---- determine the function
@@ -175,7 +175,7 @@ circleSolidCol colC colE r =
, (V3 r (- r) 0, black)
]
where
f (pos, col) = Verx pos col [] BottomLayer ellNum
f (pos, col) = Verx pos col [] BottomLayer EllShad
circle :: Float -> Picture
{-# INLINE circle #-}
@@ -221,7 +221,7 @@ drawText :: Float -> String -> [Verx]
{-# INLINE drawText #-}
drawText gap = map f . stringToList gap
where
f (pos, col, V3 a b c) = Verx pos col [a, b, c, 1] BottomLayer textNum
f (pos, col, V3 a b c) = Verx pos col [a, b, c, 1] BottomLayer TextShad
line :: [Point2] -> Picture
{-# INLINE line #-}
+14 -39
View File
@@ -28,9 +28,6 @@ data Layer
| FixedCoordLayer
deriving (Eq, Ord, Enum, Bounded, Show, Read) --Generic, Flat)
layerNum :: Layer -> Int
layerNum = fromEnum
numLayers :: Int
numLayers = length [minBound :: Layer .. maxBound]
@@ -44,53 +41,31 @@ data ShadNum
numShads :: Int
numShads = length [minBound :: ShadNum .. maxBound]
_unShadNum :: ShadNum -> Int
_unShadNum = fromEnum
toShadNum :: Int -> ShadNum
toShadNum = toEnum
polyNum, textNum, arcNum, ellNum :: ShadNum
{-# INLINE polyNum #-}
{-# INLINE textNum #-}
{-# INLINE arcNum #-}
{-# INLINE ellNum #-}
polyNum = toShadNum 0
textNum = toShadNum 1
arcNum = toShadNum 2
ellNum = toShadNum 3
type Picture = [Verx]
flatV2 :: V2 a -> [a]
flatV2 (V2 x y) = [x, y]
flatV3 :: V3 a -> [a]
flatV3 (V3 x y z) = [x, y, z]
flatV4 :: V4 a -> [a]
flatV4 (V4 x y z w) = [x, y, z, w]
{-# INLINE flatV2 #-}
{-# INLINE flatV3 #-}
{-# INLINE flatV4 #-}
--flatV2 :: V2 a -> [a]
--{-# INLINE flatV2 #-}
--flatV2 (V2 x y) = [x, y]
--
--flatV3 :: V3 a -> [a]
--{-# INLINE flatV3 #-}
--flatV3 (V3 x y z) = [x, y, z]
--
--flatV4 :: V4 a -> [a]
--{-# INLINE flatV4 #-}
--flatV4 (V4 x y z w) = [x, y, z, w]
tflat2 :: (a, a) -> [a]
{-# INLINE tflat2 #-}
tflat2 (x, y) = [x, y]
tflat3 :: (a, a, a) -> [a]
{-# INLINE tflat3 #-}
tflat3 (x, y, z) = [x, y, z]
tflat4 :: (a, a, a, a) -> [a]
tflat4 (x, y, z, w) = [x, y, z, w]
{-# INLINE tflat2 #-}
{-# INLINE tflat3 #-}
{-# INLINE tflat4 #-}
tflat4 (x, y, z, w) = [x, y, z, w]
makeLenses ''Verx
deriveJSON defaultOptions ''Layer
+1 -1
View File
@@ -46,4 +46,4 @@ arcTest' startA sw sc endA ew ec r centercol =
(V2 xa ya) = rotateV startA (V2 r 0)
(V2 xb yb) = rotateV (0.5 * (startA + endA)) (V2 (r * sqrt 2) 0)
(V2 xc yc) = rotateV endA (V2 r 0)
f (pos, col, V3 a b c) = Verx pos col [a, b, c] BottomLayer arcNum
f (pos, col, V3 a b c) = Verx pos col [a, b, c] BottomLayer ArcShad
+1 -1
View File
@@ -6,7 +6,7 @@ textGrad :: Color -> Color -> String -> Picture
{-# INLINE textGrad #-}
textGrad topc botc = map f . stringToListGrad topc botc
where
f (pos, col, V2 a b) = Verx pos col [a, b] BottomLayer textNum
f (pos, col, V2 a b) = Verx pos col [a, b] BottomLayer TextShad
-- no premature optimisation, consider changing to use texture arrays
stringToListGrad :: Color -> Color -> String -> [(Point3, Point4, Point2)]