[![Build Status](https://travis-ci.org/sanko/Fl.pm.svg?branch=master)](https://travis-ci.org/sanko/Fl.pm)
# NAME

Fl - Bindings for the Stable 1.3.x Branch of the Fast Light Toolkit

# SYNOPSIS

    use Fl qw[:execute :label :box :font];
    my $window = Fl::Window->new(100, 100, 300, 180);
    my $box = Fl::Box->new(FL_UP_BOX, 20, 40, 260, 100, 'Hello, World');
    $box->labelfont(FL_BOLD + FL_ITALIC);
    $box->labelsize(36);
    $box->labeltype(FL_SHADOW_LABEL);
    $window->end();
    $window->show();
    exit run();

# DESCRIPTION

The Fl distribution includes bindings to the stable 1.3.x branch of the Fast
Light Toolkit; a cross-platform GUI toolkit compatible with Microsoft Windows,
MacOS X, and Linux/Unix platforms with X11. It was designed to be small, quick
and comes with a very simple yet complete API.

# Functions & Exports

The top level Fl namespace exports several functions sorted by type. This list
will grow as the dist develops.

## `:execute`

    use Fl qw[:execute];

This would import functions related to application execution directly into
your namespace. These functions include:

- `run()`

    As long as any windows are displayed, this calles Fl::wait() repeatedly.

    When all windows are closed, it returns zero.

- `check()`

    This is the same as calling `Fl::wait(0)`.

    Calling this during (for example) a long calculation process will keep the
    screen up to date and the interface responsive without forking or threading.

    This returns non-zero if any windws are displayed. Otherwise, zero is
    returned.

- `wait()`

    Waits until 'something happens' and then returns.

    Call this repeatedly to 'run' your program. You can also check what happened
    each time after this returns which is quite useful for managing program state.

    What this really does is call all idle callbacks, all elapsed timeouts, call
    Fl::flush() to get the screen to update, and then wait some time (zero if the
    are idle callbacks, the sortest of all pending timeouts, or infinity) for any
    events from the user or any Fl::ad\_fd() callbacks. It then handles the events
    and calls the callbacks and then returns.

    The return value of Fl::wait() is non-zero if there are any visible windows.

    `Fl::wait($time)` waits a maxium of `$time` seconds. It may return much
    sooner if something happens.

    The return value is positive if an event or fd happens before the time
    elapsed. It is zero if nothing happens (on Windows this will only return zero
    if $time is zero). It is negative if an error occurs (this will happen on X11
    if a signal happens).

- `ready()`

    This is similar to `Fl::check()` except this does not call `Fl::flush()` or
    any callbacks, which is useful if your program is in a state where such
    callbacks are illegal.

    This returns true if `Fl::check()` would do anything (it will continue to
    return true until you call `Fl::check()` or `Fl::wait()`).

## `:enum`

    use Fl qw[:enum]; # All Fl::Enumeration values
    use Fl qw[:font]; # Only import enum values related to fonttype

The `:enum` and related tags allow you to import values listed in
Fl::Enumerations.

# Classes

Fl contains several widgets and other classes including:

- [Fl::Box](https://metacpan.org/pod/Fl::Box)
- [Fl::Group](https://metacpan.org/pod/Fl::Group)
- [Fl::Window](https://metacpan.org/pod/Fl::Window)

This is the current list and will expand as the distribution develops.

# LICENSE

Copyright (C) Sanko Robinson.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# AUTHOR

Sanko Robinson <sanko@cpan.org>