-- This file contains code that is required in the case of the module
-- System.Console.ANSI.Windows.Emulator and differs from the common code in
-- file Common-Include-Enabled.hs.

-- | Set the Select Graphic Rendition mode
hSetSGR
  :: ConsoleDefaultState -- ^ The default console state
  -> Handle
  -> [SGR] -- ^ Commands: these will typically be applied on top of the
           -- current console SGR mode. An empty list of commands is
           -- equivalent to the list @[Reset]@. Commands are applied left to
           -- right.
  -> IO ()

-- | Set the Select Graphic Rendition mode
setSGR
  :: ConsoleDefaultState -- ^ The default console state
  -> [SGR] -- ^ Commands: these will typically be applied on top of the
           -- current console SGR mode. An empty list of commands is
           -- equivalent to the list @[Reset]@. Commands are applied left to
           -- right.
  -> IO ()
setSGR def = hSetSGR def stdout

hClearFromCursorToScreenEnd, hClearFromCursorToScreenBeginning, hClearScreen
  :: ConsoleDefaultState -- ^ The default console state
  -> Handle
  -> IO ()

clearFromCursorToScreenEnd, clearFromCursorToScreenBeginning, clearScreen
  :: ConsoleDefaultState -- ^ The default console state
  -> IO ()
clearFromCursorToScreenEnd def = hClearFromCursorToScreenEnd def stdout
clearFromCursorToScreenBeginning def
  = hClearFromCursorToScreenBeginning def stdout
clearScreen def = hClearScreen def stdout

hClearFromCursorToLineEnd, hClearFromCursorToLineBeginning, hClearLine
  :: ConsoleDefaultState -- ^ The default console state
  -> Handle
  -> IO ()

clearFromCursorToLineEnd, clearFromCursorToLineBeginning, clearLine
  :: ConsoleDefaultState -- ^ The default console state
  -> IO ()
clearFromCursorToLineEnd def = hClearFromCursorToLineEnd def stdout
clearFromCursorToLineBeginning def = hClearFromCursorToLineBeginning def stdout
clearLine def = hClearLine def stdout

-- | Scroll the displayed information up or down the terminal: not widely
-- supported
hScrollPageUp, hScrollPageDown
  :: ConsoleDefaultState -- ^ The default console state
  -> Handle
  -> Int -- ^ Number of lines to scroll by
  -> IO ()

-- | Scroll the displayed information up or down the terminal: not widely
-- supported
scrollPageUp, scrollPageDown
  :: ConsoleDefaultState -- ^ The default console state
  -> Int -- ^ Number of lines to scroll by
  -> IO ()
scrollPageUp def = hScrollPageUp def stdout
scrollPageDown def = hScrollPageDown def stdout
