packages feed

moffy-samples-gtk3-run-0.1.0.0: src/Stopgap/Graphics/UI/Gdk/Event/Button.hsc

{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Stopgap.Graphics.UI.Gdk.Event.Button where

import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Data.Word
import Data.Int

import Stopgap.Graphics.UI.Gdk.Event

#include <gtk/gtk.h>

data GdkWindowTag
data GdkDeviceTag

type PtrGdkWindow = Ptr GdkWindowTag
type PtrGdkDevice = Ptr GdkDeviceTag
type PtrGdouble = Ptr #{type gdouble}

struct "B" #{size GdkEventButton} #{alignment GdkEventButton}
	[	("type", ''Type,
			[| #{peek GdkEventButton, type} |],
			[| #{poke GdkEventButton, type} |]),
		("window", ''PtrGdkWindow,
			[| #{peek GdkEventButton, window} |],
			[| #{poke GdkEventButton, window} |]),
		("send_event", ''#{type gint8},
			[| #{peek GdkEventButton, send_event} |],
			[| #{poke GdkEventButton, send_event} |]),
		("time", ''#{type guint32},
			[| #{peek GdkEventButton, time} |],
			[| #{poke GdkEventButton, time} |]),
		("x", ''#{type gdouble},
			[| #{peek GdkEventButton, x} |],
			[| #{poke GdkEventButton, x} |]),
		("y", ''#{type gdouble},
			[| #{peek GdkEventButton, y} |],
			[| #{poke GdkEventButton, y} |]),
		("axes", ''PtrGdouble,
			[| #{peek GdkEventButton, axes} |],
			[| #{poke GdkEventButton, axes} |]),
		("state", ''#{type GdkModifierType},
			[| #{peek GdkEventButton, state} |],
			[| #{poke GdkEventButton, state} |]),
		("button", ''#{type guint},
			[| #{peek GdkEventButton, button} |],
			[| #{poke GdkEventButton, button} |]),
		("device", ''PtrGdkDevice,
			[| #{peek GdkEventButton, device} |],
			[| #{poke GdkEventButton, device} |]),
		("x_root", ''#{type gdouble},
			[| #{peek GdkEventButton, x_root} |],
			[| #{poke GdkEventButton, x_root} |]),
		("y_root", ''#{type gdouble},
			[| #{peek GdkEventButton, y_root} |],
			[| #{poke GdkEventButton, y_root} |]) ]
	[''Show, ''Eq, ''Ord, ''Storable]