{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE NoMonomorphismRestriction #-}

module Control.Monad.SFML.Graphics where


import Control.Monad.SFML.Types.TH
import Control.Monad.SFML.Conversions
import qualified SFML.Graphics as G


-- * Graphics / CircleShape.hs
$(liftWithDestroy 'G.err 'G.createCircleShape)
$(lift 'G.copy)
$(lift 'G.setRotation)
$(lift 'G.setScale)
$(lift 'G.setOrigin)
$(lift 'G.getRotation)
$(lift 'G.getScale)
$(lift 'G.getOrigin)
$(lift 'G.move)
$(lift 'G.rotate)
$(lift 'G.scale)
$(lift 'G.getTransform)
$(lift 'G.getInverseTransform)
$(lift 'G.setTexture)
$(lift 'G.setTextureRect)
$(lift 'G.getTexture)
$(lift 'G.getTextureRect)
$(lift 'G.setFillColor)
$(lift 'G.setOutlineColor)
$(lift 'G.setOutlineThickness)
$(lift 'G.getFillColor)
$(lift 'G.getOutlineColor)
$(lift 'G.getOutlineThickness)
$(lift 'G.getPointCount)
$(lift 'G.getPoint)
$(lift 'G.setRadius)
$(lift 'G.getRadius)
$(lift 'G.setPointCount)
$(lift 'G.getLocalBounds)
$(lift 'G.getGlobalBounds)

-- * Graphics / ConvexShape.hs
$(liftWithDestroy 'G.err 'G.createConvexShape)
$(lift 'G.setPoint)

-- * Graphics / Font.hs
$(liftWithDestroy 'G.err 'G.fontFromFile)
$(liftWithDestroy 'G.err 'G.fontFromMemory)
$(liftWithDestroy 'G.err 'G.fontFromStream)
$(lift 'G.getGlyph)
$(lift 'G.getKerning)
$(lift 'G.getLineSpacing)
$(lift 'G.getFontTexture)

-- * Graphics / Image.hs
$(liftWithDestroy 'G.err 'G.createImage)
$(liftWithDestroy 'id 'G.imageFromColor)
$(liftWithDestroy 'id 'G.imageFromPixels)
$(liftWithDestroy 'mb 'G.imageFromFile)
$(liftWithDestroy 'mb 'G.imageFromMemory)
$(liftWithDestroy 'mb 'G.imageFromStream)
$(lift 'G.destroy)
$(lift 'G.saveImage)
$(lift 'G.imageSize)
$(lift 'G.createMaskFromColor)
$(lift 'G.copyImage')
$(lift 'G.setPixel)
$(lift 'G.getPixel)
$(lift 'G.getPixels)
$(lift 'G.flipHorizontally)
$(lift 'G.flipVertically)

-- * Graphics / RectangleShape.hs
$(liftWithDestroy 'G.err 'G.createRectangleShape)
$(lift 'G.setSize)
$(lift 'G.getSize)

-- * Graphics / RenderTexture.hs
$(liftWithDestroy 'G.err 'G.createRenderTexture)
$(lift 'G.getTextureSize)
$(lift 'G.setActive)
$(lift 'G.clear)
$(lift 'G.setView)
$(lift 'G.getView)
$(lift 'G.getDefaultView)
$(lift 'G.getViewport)
$(lift 'G.mapPixelToCoords)
$(lift 'G.drawSprite)
$(lift 'G.drawText)
$(lift 'G.drawShape)
$(lift 'G.drawCircle)
$(lift 'G.drawConvexShape)
$(lift 'G.drawRectangle)
$(lift 'G.drawVertexArray)
$(lift 'G.drawPrimitives)
$(lift 'G.drawPrimitives')
$(lift 'G.pushGLStates)
$(lift 'G.popGLStates)
$(lift 'G.resetGLStates)
$(lift 'G.getRenderTexture)
$(lift 'G.setSmooth)
$(lift 'G.isSmooth)

-- * Graphics / RenderWindow.hs
$(liftWithDestroy 'id 'G.createRenderWindow)
$(liftWithDestroy 'id 'G.renderWindowFromHandle)
$(lift 'G.close)
$(lift 'G.isWindowOpen)
$(lift 'G.getWindowSettings)
$(lift 'G.pollEvent)
$(lift 'G.waitEvent)
$(lift 'G.getWindowPosition)
$(lift 'G.setWindowPosition)
$(lift 'G.getWindowSize)
$(lift 'G.setWindowSize)
$(lift 'G.setWindowTitle)
$(lift' 'G.setWindowIcon 4)
$(lift 'G.setWindowVisible)
$(lift 'G.setMouseVisible)
$(lift 'G.setVSync)
$(lift 'G.setKeyRepeat)
$(lift 'G.setWindowActive)
$(lift 'G.display)
$(lift 'G.setFramerateLimit)
$(lift 'G.setJoystickThreshold)
$(lift 'G.getSystemHandle)
$(lift 'G.clearRenderWindow)
$(lift 'G.captureRenderWindow)
$(lift 'G.getMousePosition)
$(lift 'G.setMousePosition)

-- * Graphics / Shader.hs
$(liftWithDestroy 'G.err 'G.shaderFromFile)
$(liftWithDestroy 'G.err 'G.shaderFromMemory)
$(liftWithDestroy 'G.err 'G.shaderFromStream)
$(lift 'G.setFloatParameter)
$(lift 'G.setFloat2Parameter)
$(lift 'G.setFloat3Parameter)
$(lift 'G.setFloat4Parameter)
$(lift 'G.setVector2Parameter)
$(lift 'G.setVector3Parameter)
$(lift 'G.setColorParameter)
$(lift 'G.setTransformParameter)
$(lift 'G.setTextureParameter)
$(lift 'G.setCurrentTextureParameter)
$(lift 'G.bind)
$(lift 'G.isShaderAvailable)

-- * Graphics / Shape.hs
$(liftWithDestroy 'id 'G.createShape)
$(lift 'G.updateShape)

-- * Graphics / Sprite.hs
$(liftWithDestroy 'G.err 'G.createSprite)
$(lift 'G.setColor)
$(lift 'G.setPosition)
$(lift 'G.getColor)

-- * Graphics / Text.hs
$(liftWithDestroy 'G.err 'G.createText)
$(lift 'G.setTextString)
$(lift 'G.setTextStringU)
$(lift 'G.setTextFont)
$(lift 'G.setTextCharacterSize)
$(lift 'G.setTextStyle)
$(lift 'G.setTextColor)
$(lift 'G.getTextString)
$(lift 'G.getTextUnicodeString)
$(lift 'G.getTextFont)
$(lift 'G.getTextCharacterSize)
$(lift 'G.getTextStyle)
$(lift 'G.getTextColor)
$(lift 'G.findTextCharacterPos)
$(lift 'G.getTextLocalBounds)
$(lift 'G.getTextGlobalBounds)

-- * Graphics / Texture.hs
$(liftWithDestroy 'G.err 'G.createTexture)
$(liftWithDestroy 'G.err 'G.textureFromFile)
$(liftWithDestroy 'G.err 'G.textureFromMemory)
$(liftWithDestroy 'G.err 'G.textureFromStream)
$(liftWithDestroy 'G.err 'G.textureFromImage)
$(lift 'G.textureSize)
$(lift 'G.copyTextureToImage)
$(lift 'G.updateTextureFromPixels)
$(lift 'G.updateTextureFromImage)
$(lift 'G.updateTextureFromWindow)
$(lift 'G.updateTextureFromRenderWindow)
$(lift 'G.setRepeated)
$(lift 'G.isRepeated)

-- * Graphics / VertexArray.hs
$(liftWithDestroy 'id 'G.createVA)
$(lift 'G.getVertexCount)
$(lift 'G.getVertex)
$(lift 'G.clearVA)
$(lift 'G.resizeVA)
$(lift 'G.appendVA)
$(lift 'G.setPrimitiveType)
$(lift 'G.getPrimitiveType)
$(lift 'G.getVABounds)

-- * Graphics / View.hs
$(liftWithDestroy 'id 'G.createView)
$(lift 'G.viewFromRect)
$(lift 'G.copyView)
$(lift 'G.setViewCenter)
$(lift 'G.setViewSize)
$(lift 'G.setViewRotation)
$(lift 'G.setViewport)
$(lift 'G.resetView)
$(lift 'G.getViewCenter)
$(lift 'G.getViewSize)
$(lift 'G.getViewRotation)
$(lift 'G.getViewViewport)
$(lift 'G.moveView)
$(lift 'G.rotateView)
$(lift 'G.zoomView)