{-
	Datatypes to specify a geometric angle
	HGamer3D Library (A project to enable 3D game development in Haskell)
	Copyright 2011-2017 Peter Althainz
	
	Distributed under the Apache License, Version 2.0
	(See attached file LICENSE or copy at 
	http://www.apache.org/licenses/LICENSE-2.0)
 
	file: HGamer3D/Data/ScreenRect.hs
-}

module HGamer3D.Data.ScreenRect

where

import Fresco
import Data.Binary.Serialise.CBOR
import Data.Binary.Serialise.CBOR.Encoding
import Data.Binary.Serialise.CBOR.Decoding

import Data.Text
import Data.Monoid
import Control.Applicative


data ScreenRect = ScreenRect {
    screenRectX::Int,
    screenRectY::Int,
    screenRectWidth::Int,
    screenRectHeight::Int
    } deriving (Eq, Read, Show)

ctScreenRect :: ComponentType ScreenRect
ctScreenRect = ComponentType 0x16877957e32da6b1

instance Serialise ScreenRect where
    encode (ScreenRect v1 v2 v3 v4) = encodeListLen 4 <> encode v1 <> encode v2 <> encode v3 <> encode v4
    decode = decodeListLenOf 4 >> ScreenRect <$> decode <*> decode <*> decode <*> decode