packages feed

hsautogui-0.3.0: src/AutoGUI/Screen.hs

module AutoGUI.Screen
  ( locateOnScreen
  , locateCenterOnScreen
  , Color(..)
  )
where

import AutoGUI.Call
import AutoGUI.Discard
import CPython.Simple
import Control.Monad.IO.Class
import Data.Text (Text)
import qualified Data.Text as T

type Color = (Integer, Integer, Integer)

-- TODO: Returns a Pillow/PIL Image object. Not supported yet.
-- screenshot :: AutoGUI Py.SomeObject
-- screenshot = call' "screenshot" []

-- | Return (left, top, width, height) of first place the image is found
locateOnScreen :: FilePath -> IO (Maybe (Integer, Integer, Integer, Integer))
locateOnScreen path =
  pyautogui "locateOnScreen" [arg $ T.pack path] []

-- TODO: Returns a Python generator. Convert that to a Haskell list. Not supported yet.
-- locateAllOnScreen :: FilePath -> IO [(Integer, Integer, Integer, Integer)]
-- locateAllOnScreen path = pyautogui "locateAllOnScreen" [arg $ T.pack path] []

-- | Return (x, y) of center of an image, if the image is found
locateCenterOnScreen :: FilePath -> IO (Maybe (Integer, Integer))
locateCenterOnScreen path =
  pyautogui "locateCenterOnScreen" [arg $ T.pack path] []

pixelMatchesColor :: Integer -> Integer -> Color -> IO Bool
pixelMatchesColor x y color =
  pyautogui "pixelMatchesColor" [arg x, arg y, arg color] []

pixelMatchesColorWithTolerance :: Integer -> Integer -> Color -> Double -> IO Bool
pixelMatchesColorWithTolerance x y color tolerance =
  pyautogui "pixelMatchesColor" [arg x, arg y, arg color] [("tolerance", arg tolerance)]