{-# OPTIONS_GHC -optc-DWINVER=0x0600 #-}
{-# OPTIONS_GHC -optc-D_WIN32_WINNT=0x0600 #-}
{-# LINE 1 "Graphics\\Win32\\GDI\\Clip.hsc" #-}
{-# LINE 2 "Graphics\\Win32\\GDI\\Clip.hsc" #-}
{-# LANGUAGE Safe #-}
{-# LINE 6 "Graphics\\Win32\\GDI\\Clip.hsc" #-}
module Graphics.Win32.GDI.Clip where
import Control.Monad
import Graphics.Win32.GDI.Types
import System.Win32.Types
import Graphics.Win32.Message ( WindowMessage )
import Foreign
#include "windows_cconv.h"
type ClipboardFormat = UINT
cF_BITMAP :: ClipboardFormat
cF_BITMAP = 2
cF_DIB :: ClipboardFormat
cF_DIB = 8
cF_DIF :: ClipboardFormat
cF_DIF = 5
cF_DSPBITMAP :: ClipboardFormat
cF_DSPBITMAP = 130
cF_DSPENHMETAFILE :: ClipboardFormat
cF_DSPENHMETAFILE = 142
cF_DSPMETAFILEPICT :: ClipboardFormat
cF_DSPMETAFILEPICT = 131
cF_DSPTEXT :: ClipboardFormat
cF_DSPTEXT = 129
cF_ENHMETAFILE :: ClipboardFormat
cF_ENHMETAFILE = 14
cF_GDIOBJFIRST :: ClipboardFormat
cF_GDIOBJFIRST = 768
cF_HDROP :: ClipboardFormat
cF_HDROP = 15
cF_LOCALE :: ClipboardFormat
cF_LOCALE = 16
cF_METAFILEPICT :: ClipboardFormat
cF_METAFILEPICT = 3
cF_OEMTEXT :: ClipboardFormat
cF_OEMTEXT = 7
cF_OWNERDISPLAY :: ClipboardFormat
cF_OWNERDISPLAY = 128
cF_PALETTE :: ClipboardFormat
cF_PALETTE = 9
cF_PENDATA :: ClipboardFormat
cF_PENDATA = 10
cF_PRIVATEFIRST :: ClipboardFormat
cF_PRIVATEFIRST = 512
cF_PRIVATELAST :: ClipboardFormat
cF_PRIVATELAST = 767
cF_RIFF :: ClipboardFormat
cF_RIFF = 11
cF_SYLK :: ClipboardFormat
cF_SYLK = 4
cF_TEXT :: ClipboardFormat
cF_TEXT = 1
cF_WAVE :: ClipboardFormat
cF_WAVE = 12
cF_TIFF :: ClipboardFormat
cF_TIFF = 6
cF_DIBV5 :: ClipboardFormat
cF_DIBV5 = 17
cF_GDIOBJLAST :: ClipboardFormat
cF_GDIOBJLAST = 1023
cF_UNICODETEXT :: ClipboardFormat
cF_UNICODETEXT = 13
{-# LINE 68 "Graphics\\Win32\\GDI\\Clip.hsc" #-}
wM_CLIPBOARDUPDATE :: WindowMessage
wM_CLIPBOARDUPDATE = 0x031D
foreign import WINDOWS_CCONV unsafe "windows.h ChangeClipboardChain"
changeClipboardChain :: HWND -> HWND -> IO Bool
closeClipboard :: IO ()
closeClipboard =
failIfFalse_ "CloseClipboard" c_CloseClipboard
foreign import WINDOWS_CCONV unsafe "windows.h CloseClipboard"
c_CloseClipboard :: IO BOOL
foreign import WINDOWS_CCONV unsafe "windows.h CountClipboardFormats"
countClipboardFormats :: IO Int
emptyClipboard :: IO ()
emptyClipboard =
failIfFalse_ "EmptyClipboard" c_EmptyClipboard
foreign import WINDOWS_CCONV unsafe "windows.h EmptyClipboard"
c_EmptyClipboard :: IO BOOL
enumClipboardFormats :: ClipboardFormat -> IO ClipboardFormat
enumClipboardFormats format = do
format' <- c_EnumClipboardFormats format
when (format' == 0) $
failUnlessSuccess "EnumClipboardFormats" getLastError
return format'
foreign import WINDOWS_CCONV unsafe "windows.h EnumClipboardFormats"
c_EnumClipboardFormats :: ClipboardFormat -> IO ClipboardFormat
getClipboardData :: ClipboardFormat -> IO HANDLE
getClipboardData format =
failIfNull "GetClipboardData" $ c_GetClipboardData format
foreign import WINDOWS_CCONV unsafe "windows.h GetClipboardData"
c_GetClipboardData :: ClipboardFormat -> IO HANDLE
getClipboardFormatName :: ClipboardFormat -> IO String
getClipboardFormatName format =
allocaArray 256 $ \ c_name -> do
len <- failIfZero "GetClipboardFormatName" $
c_GetClipboardFormatName format c_name 256
peekTStringLen (c_name, len)
foreign import WINDOWS_CCONV unsafe "windows.h GetClipboardFormatNameW"
c_GetClipboardFormatName :: ClipboardFormat -> LPTSTR -> Int -> IO Int
getClipboardOwner :: IO HWND
getClipboardOwner =
failIfNull "GetClipboardOwner" c_GetClipboardOwner
foreign import WINDOWS_CCONV unsafe "windows.h GetClipboardOwner"
c_GetClipboardOwner :: IO HWND
getClipboardViewer :: IO HWND
getClipboardViewer =
failIfNull "GetClipboardViewer" c_GetClipboardViewer
foreign import WINDOWS_CCONV unsafe "windows.h GetClipboardViewer"
c_GetClipboardViewer :: IO HWND
getOpenClipboardWindow :: IO HWND
getOpenClipboardWindow =
failIfNull "GetClipboardWindow" c_GetOpenClipboardWindow
foreign import WINDOWS_CCONV unsafe "windows.h GetOpenClipboardWindow"
c_GetOpenClipboardWindow :: IO HWND
getPriorityClipboardFormat :: [ClipboardFormat] -> IO Int
getPriorityClipboardFormat formats =
withArray formats $ \ format_array ->
failIf (== -1) "GetPriorityClipboardFormat" $
c_GetPriorityClipboardFormat format_array (length formats)
foreign import WINDOWS_CCONV unsafe "windows.h GetPriorityClipboardFormat"
c_GetPriorityClipboardFormat :: Ptr UINT -> Int -> IO Int
foreign import WINDOWS_CCONV unsafe "windows.h IsClipboardFormatAvailable"
isClipboardFormatAvailable :: ClipboardFormat -> IO BOOL
openClipboard :: HWND -> IO ()
openClipboard wnd =
failIfFalse_ "OpenClipboard" $ c_OpenClipboard wnd
foreign import WINDOWS_CCONV unsafe "windows.h OpenClipboard"
c_OpenClipboard :: HWND -> IO BOOL
registerClipboardFormat :: String -> IO ClipboardFormat
registerClipboardFormat name =
withTString name $ \ c_name ->
failIfZero "RegisterClipboardFormat" $
c_RegisterClipboardFormat c_name
foreign import WINDOWS_CCONV unsafe "windows.h RegisterClipboardFormatW"
c_RegisterClipboardFormat :: LPCTSTR -> IO ClipboardFormat
setClipboardData :: ClipboardFormat -> HANDLE -> IO HANDLE
setClipboardData format mem =
failIfNull "SetClipboardData" $ c_SetClipboardData format mem
foreign import WINDOWS_CCONV unsafe "windows.h SetClipboardData"
c_SetClipboardData :: ClipboardFormat -> HANDLE -> IO HANDLE
setClipboardViewer :: HWND -> IO HWND
setClipboardViewer wnd =
failIfNull "SetClipboardViewer" $ c_SetClipboardViewer wnd
foreign import WINDOWS_CCONV unsafe "windows.h SetClipboardViewer"
c_SetClipboardViewer :: HWND -> IO HWND