module Codec.Tiled.Tileset.TileOffset where

import GHC.Generics (Generic)

import Codec.Tiled.Aeson (FromJSON(..), ToJSON(..), genericParseJSON, genericToJSON)

data TileOffset = TileOffset
  { TileOffset -> Int
x :: Int -- ^ Horizontal offset in pixels
  , TileOffset -> Int
y :: Int -- ^ Vertical offset in pixels (positive is down)
  }
  deriving (TileOffset -> TileOffset -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TileOffset -> TileOffset -> Bool
$c/= :: TileOffset -> TileOffset -> Bool
== :: TileOffset -> TileOffset -> Bool
$c== :: TileOffset -> TileOffset -> Bool
Eq, Int -> TileOffset -> ShowS
[TileOffset] -> ShowS
TileOffset -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TileOffset] -> ShowS
$cshowList :: [TileOffset] -> ShowS
show :: TileOffset -> String
$cshow :: TileOffset -> String
showsPrec :: Int -> TileOffset -> ShowS
$cshowsPrec :: Int -> TileOffset -> ShowS
Show, forall x. Rep TileOffset x -> TileOffset
forall x. TileOffset -> Rep TileOffset x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TileOffset x -> TileOffset
$cfrom :: forall x. TileOffset -> Rep TileOffset x
Generic)

instance FromJSON TileOffset where
  parseJSON :: Value -> Parser TileOffset
parseJSON = forall a. (Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
genericParseJSON

instance ToJSON TileOffset where
  toJSON :: TileOffset -> Value
toJSON = forall a. (Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
genericToJSON