-- "happlets.cabal" build configuration for this project.
--
-- Copyright (C) 2017-2018  Ramin Honary.
--
-- "happlets" is free software: you can redistribute it and/or modify
-- it under the terms of the GNU Affero General Public License (AGPL)
-- as published by the Free Software Foundation.
--
-- "happlets" is distributed in the hope that it will be useful, but
-- WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-- See the GNU Affero General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program (see the file called "LICENSE"). If not, see
-- <http://www.gnu.org/licenses/agpl.html>.

NAME:           happlets
VERSION:        0.1.0.0
AUTHOR:         Ramin Honary
COPYRIGHT:      (C) 2017-2018 Ramin Honary, all rights reserved.
MAINTAINER:     RaminHAL9001@gmail.com
HOMEPAGE:       https://github.com/RaminHAL9001/happlets
LICENSE:        AGPL
LICENSE-FILE:   LICENSE
BUILD-TYPE:     Simple
CABAL-VERSION:  >= 1.18

CATEGORY:       GUI, Game
SYNOPSIS:       "Haskell Applets" provides an event handler and a canvas for building simple GUI apps.

DESCRIPTION:
    .
    This package is provides the Happlets API that is common to all Happlet
    back-end provider libraries. Along with this package, it is necessary to
    install a back-end library such as 'happlets-lib-gtk'.  Currently Gtk+
    version 2 with a Cairo-based canvas is the only back-end available. Gtk+
    version 3, Xlib, SDL2, GLUT, and (possibly) Wayland back-ends are all
    feasible and may be implemented in the future.
    .
    The goal of the Happlets project is to allow you to create very simple,
    thread-safe applications that contain nothing more than a single window
    with a drawing canvas that can respond to user input events, like mouse
    clicks, key-presses, or frame animation events. The intention is to
    create a minimal programming platform for small, single-purpose
    graphical applications which simply displays some interactive graphic,
    for example a plot of some data, or a simple game. Naturally, the
    Happlet program can be arbitrarily complex, but it may be better to
    consider other, FRP-based solutions if managing events becomes too
    difficult.
    .
    A happlet back-end provider may provide additional widget API functions,
    but using these APIs will result in your applet being dependent on the
    specific back-end and will thus not be as portable as programming for
    the "happlets" package alone. Happlets aims to achieve a balance between
    being as minimal as possible, but still provide enough graphics drawing
    primitives to be useful for the widest range of possible applications.
    .
    The Gtk+ v2 back-end provider can be downloaded from this link:
    .
    https://hackage.haskell.org/package/happlets-lib-gtk
    .

Library {

  HS-SOURCE-DIRS:    src
  DEFAULT-LANGUAGE:  Haskell2010

  GHC-OPTIONS:  -Wall
    -fno-warn-name-shadowing
    -fno-warn-unused-do-bind

  EXPOSED-MODULES:
    Happlets
    Happlets.Config
    Happlets.Draw
    Happlets.Draw.Color
    Happlets.Draw.SampCoord
    Happlets.Draw.Text
    Happlets.Draw.Types2D
    Happlets.Event
    Happlets.Initialize
    Happlets.Provider
    Happlets.GUI

  BUILD-DEPENDS:
    bytestring           >=0.10.0.0 && <1.0.0.0,
    colour               >=2.0.0    && <3.0.0,
    containers           >=0.5.5.0  && <=0.5.7.0,
    fail                 >=4.7      && <5.0,
    lens                 >=4.0.0.0  && <5.0.0.0,
    linear               >=1.20.0   && <2.0.0.0,
    mtl                  >=2.2.0    && <=2.2.1,
    semigroups           >=0.16.0   && <0.19.0,
    time                 >=1.4.0.0  && <=1.6.0.0,
    text                 >=1.1.1.4  && <=2.0.0.0,
    transformers         >=0.1.1    && <0.5.0,
    unordered-containers >=0.2.0.0  && <=0.3.0.0,
    base                 >=4.7      && <4.9

  DEFAULT-EXTENSIONS:
    DeriveDataTypeable
    DeriveFunctor
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GeneralizedNewtypeDeriving
    ImplicitParams
    LambdaCase
    MultiParamTypeClasses
    OverloadedStrings
    RankNTypes
    ScopedTypeVariables
    StandaloneDeriving
}
