> module Params where
Module defines the Parameters that define the interface
of the GMS.
Command is a data type that enumerates the possible actions
the user may select (along with the Null command)
> data Command = Polygon | Union | Intersect | Subtract | Complement | Partition
> | Render | Classify | Area | Quit | Null deriving (Eq)
Define String as a list of Characters
> --partain: type String = [Char]
Define Button as a triple consisting of the associated command
the buttons screen depth and the text label to the button.
> type Button = (Command,Int,String)
Defines the string used to spot end of input.
> delimiter :: String
> delimiter = " "
Defines a blank string that can be used to erase any button
label
> blank :: String
> blank = " "
Define the height, width and the indent from the left of the screen
of a button.
> buttonHeight :: Int
> buttonHeight = 40
> buttonWidth :: Int
> buttonWidth = 110
> buttonIndent :: Int
> buttonIndent = 5
Define the text position within a button
> textIn :: Int
> textIn = buttonIndent+4
> textDown :: Int
> textDown = 30
Define the render region of the screen.
> renderRegion :: [Int]
> renderRegion = [renderLeft,renderTop,windowWidth,renderHeight]
Define the origin, height and width of the render screen
> renderTop :: Int
> renderTop = 0
> renderLeft :: Int
> renderLeft = 120
> renderHeight :: Int
> renderHeight = 510
> renderWidth :: Int
> renderWidth = 780
Define the window region
> windowRegion :: [Int]
> windowRegion = [0,0,windowWidth,windowHeight]
Define the text region
> textRegion :: [Int]
> textRegion = [0,(renderHeight+5),(renderLeft-5),50]
Define the 'notext' region.
> noTextRegion :: [Int]
> noTextRegion = treeRegion
Define the tree-form region of the screen
> treeRegion :: [Int]
> treeRegion = [renderLeft,(renderHeight+5),
> (windowWidth-renderLeft),(windowHeight-renderHeight)]
Define the mouse region of the screen
> mouseRegion :: [Int]
> mouseRegion = [0,0,windowWidth,windowHeight]
Define the window height and width and its origin
> windowLeft :: Int
> windowLeft = 100
> windowTop :: Int
> windowTop = 50
> windowWidth :: Int
> windowWidth = 900
> windowHeight :: Int
> windowHeight = 700
Define the mouse box by its origin and height and width
> mouseBox :: [Int]
> mouseBox = [mouseLeft,mouseTop,mouseWidth,mouseHeight]
> mouseLeft :: Int
> mouseLeft = buttonIndent
> mouseTop :: Int
> mouseTop = renderHeight+55
> mouseWidth :: Int
> mouseWidth = (renderLeft-10)
> mouseHeight :: Int
> mouseHeight = mbuttonHeight+18
Define each of the buttons on the mouse
> button1Box :: [Int]
> button1Box = [(buttonIndent+5),(renderHeight+60),mbuttonWidth,mbuttonHeight]
> button2Box :: [Int]
> button2Box = [(buttonIndent+40),(renderHeight+60),mbuttonWidth,mbuttonHeight]
> button3Box :: [Int]
> button3Box = [(buttonIndent+75),(renderHeight+60),mbuttonWidth,mbuttonHeight]
Define the positions of each text column in each mouse button
> button1TextOrigin,button2TextOrigin,button3TextOrigin :: (Int,Int)
> button1TextOrigin = ((buttonIndent+8),(renderHeight+75))
> button2TextOrigin = ((buttonIndent+43), (renderHeight+75))
> button3TextOrigin = ((buttonIndent+78), (renderHeight+75))
Define the mouse button height and width
> mbuttonWidth :: Int
> mbuttonWidth = 30
> mbuttonHeight :: Int
> mbuttonHeight = 104
define the origin of the mouse labelling caption
> mouseCaptionDown,mouseCaptionAcross :: Int
> mouseCaptionDown = (renderHeight+74+mbuttonHeight)
> mouseCaptionAcross = buttonIndent+38
Define a list of all buttons
> buttons :: [Button]
> buttons = [primitiveButton,unionButton,intersectButton,subtractButton,
> complementButton, partitionButton, renderButton,
> classifyButton, areaButton, quitButton]
Define each button.
> primitiveButton :: Button
> primitiveButton = (Polygon,10, " Polygon ")
> unionButton :: Button
> unionButton = (Union,60, " Union ")
> intersectButton :: Button
> intersectButton = (Intersect,110, " Intersect ")
> subtractButton :: Button
> subtractButton = (Subtract,160, " Subtract ")
> complementButton :: Button
> complementButton = (Complement,210, " Complement ")
> partitionButton :: Button
> partitionButton = (Partition,260, "Partitionings ")
> renderButton :: Button
> renderButton = (Render,310, " Render ")
> classifyButton :: Button
> classifyButton = (Classify,360, "Classify Point")
> areaButton :: Button
> areaButton = (Area,410, " Area ")
> quitButton :: Button
> quitButton = (Quit,460, " Quit ")
Define button region.
> button :: Int -> [Int]
> button d = [buttonIndent,d,buttonWidth,buttonHeight]
Correction parameter to make mouse pointer possible to use
with accuracy.
> mouseDispx, mouseDispy :: Int
> mouseDispx = 5
> mouseDispy = 4
Define a gap.
> gap = ' '
|