packages feed

swarm-0.6.0.0: src/swarm-topography/Swarm/Game/Scenario/Topography/Rasterize.hs

-- |
-- SPDX-License-Identifier: BSD-3-Clause
--
-- Convenience functions for rendering topographical structures
module Swarm.Game.Scenario.Topography.Rasterize where

import Codec.Picture
import Data.Vector qualified as V
import Swarm.Game.Scenario.Topography.Area
import Swarm.Game.Scenario.Topography.Grid

makeImage :: Pixel px => (a -> px) -> Grid a -> Image px
makeImage computeColor g =
  generateImage (pixelRenderer vecGrid) (fromIntegral w) (fromIntegral h)
 where
  vecGrid = gridToVec g
  AreaDimensions w h = getGridDimensions g
  pixelRenderer vg x y = computeColor $ (vg V.! y) V.! x