=pod

=head1 NAME

Fl::Enumerations - Easily Imported Static Variables

=head1 Synopsis

    use Fl qw[:enum]; # Import everything!
    use Fl qw[:font]; # Import fonts

=head1 Description

This file contains type definitions and general enumerations.

=head1 Exports

Values are exported directly or with tags.

=cut

#include <FL/Enumerations.H>

MODULE = Fl        PACKAGE = Fl

BOOT:
=pod

=head2 C<:version>

This tag imports values related to the library and its version number:

=over

=item FL_MAJOR_VERSION

The major release version of this FLTK library.

=item FL_MINOR_VERSION

The minor release version for this library.

FLTK remains mostly source-code compatible between minor version changes.

=item FL_PATCH_VERSION

The patch version for this library.

FLTK remains binary compatible between patches.

=item FL_VERSION

The FLTK version number.

    FL_MAJOR_VERSION + (FL_MINOR_VERSION * 0.01) + (FL_PATCH_VERSION * 0.0001)

=back

=cut

    export_constant( "FL_MAJOR_VERSION", "version", newSViv(FL_MAJOR_VERSION ));
    export_constant( "FL_MINOR_VERSION", "version", newSViv(FL_MINOR_VERSION ));
    export_constant( "FL_PATCH_VERSION", "version", newSViv(FL_PATCH_VERSION ));
    export_constant( "FL_VERSION",       "version", newSVnv(FL_VERSION ));

=pod

=head2 C<:box>

Values related to Fl::Box box types including:

=for markdown [http://www.fltk.org/doc-1.3/boxtypes.png]

=for html <center><img src="http://www.fltk.org/doc-1.3/boxtypes.png" /></center>

=over

=item FL_NO_BOX

Nothing is drawn at all. This box is invisible and the default for
Fl::Box->new(...).

=item FL_FLAT_BOX

A flat box.

=item FL_UP_BOX

=item FL_DOWN_BOX

=item FL_UP_FRAME

=item FL_DOWN_FRAME

=item FL_THIN_UP_BOX

=item FL_THIN_DOWN_BOX

=item FL_THIN_UP_FRAME

=item FL_THIN_DOWN_FRAME

=item FL_ENGRAVED_BOX

=item FL_EMBOSSED_BOX

=item FL_ENGRAVED_FRAME

=item FL_EMBOSSED_FRAME

=item FL_BORDER_BOX

=item FL_BORDER_FRAME

=item FL_FREE_BOXTYPE

The first free box type for creation of new box types.

=back

=cut

    export_constant( "FL_ROUND_UP_BOX",            "box", newSViv(FL_ROUND_UP_BOX));

    export_constant( "FL_NO_BOX",                   "box", newSViv(FL_NO_BOX));
    export_constant( "FL_FLAT_BOX",                 "box", newSViv(FL_FLAT_BOX));
    export_constant( "FL_UP_BOX",                   "box", newSViv(FL_UP_BOX));
    export_constant( "FL_DOWN_BOX",                 "box", newSViv(FL_DOWN_BOX));
    export_constant( "FL_UP_FRAME",                 "box", newSViv(FL_UP_FRAME));
    export_constant( "FL_DOWN_FRAME",               "box", newSViv(FL_DOWN_FRAME));
    export_constant( "FL_THIN_UP_BOX",              "box", newSViv(FL_THIN_UP_BOX));
    export_constant( "FL_THIN_DOWN_BOX",            "box", newSViv(FL_THIN_DOWN_BOX));
    export_constant( "FL_THIN_UP_FRAME",            "box", newSViv(FL_THIN_UP_FRAME));
    export_constant( "FL_THIN_DOWN_FRAME",          "box", newSViv(FL_THIN_DOWN_FRAME));
    export_constant( "FL_ENGRAVED_BOX",             "box", newSViv(FL_ENGRAVED_BOX));
    export_constant( "FL_EMBOSSED_BOX",             "box", newSViv(FL_EMBOSSED_BOX));
    export_constant( "FL_ENGRAVED_FRAME",           "box", newSViv(FL_ENGRAVED_FRAME));
    export_constant( "FL_EMBOSSED_FRAME",           "box", newSViv(FL_EMBOSSED_FRAME));
    export_constant( "FL_BORDER_BOX",               "box", newSViv(FL_BORDER_BOX));
    export_constant( "_FL_SHADOW_BOX",              "box", newSViv(_FL_SHADOW_BOX));
    export_constant( "FL_BORDER_FRAME",             "box", newSViv(FL_BORDER_FRAME));
    export_constant( "_FL_SHADOW_FRAME",            "box", newSViv(_FL_SHADOW_FRAME));
    export_constant( "_FL_ROUNDED_BOX",             "box", newSViv(_FL_ROUNDED_BOX));
    export_constant( "_FL_RSHADOW_BOX",             "box", newSViv(_FL_RSHADOW_BOX));
    export_constant( "_FL_ROUNDED_FRAME",           "box", newSViv(_FL_ROUNDED_FRAME));
    export_constant( "_FL_RFLAT_BOX",               "box", newSViv(_FL_RFLAT_BOX));
    export_constant( "_FL_ROUND_UP_BOX",            "box", newSViv(_FL_ROUND_UP_BOX));
    export_constant( "_FL_ROUND_DOWN_BOX",          "box", newSViv(_FL_ROUND_DOWN_BOX));
    export_constant( "_FL_DIAMOND_UP_BOX",          "box", newSViv(_FL_DIAMOND_UP_BOX));
    export_constant( "_FL_DIAMOND_DOWN_BOX",        "box", newSViv(_FL_DIAMOND_DOWN_BOX));
    export_constant( "_FL_OVAL_BOX",                "box", newSViv(_FL_OVAL_BOX));
    export_constant( "_FL_OSHADOW_BOX",             "box", newSViv(_FL_OSHADOW_BOX));
    export_constant( "_FL_OVAL_FRAME",              "box", newSViv(_FL_OVAL_FRAME));
    export_constant( "_FL_OFLAT_BOX",               "box", newSViv(_FL_OFLAT_BOX));
    export_constant( "_FL_PLASTIC_UP_BOX",          "box", newSViv(_FL_PLASTIC_UP_BOX));
    export_constant( "_FL_PLASTIC_DOWN_BOX",        "box", newSViv(_FL_PLASTIC_DOWN_BOX));
    export_constant( "_FL_PLASTIC_UP_FRAME",        "box", newSViv(_FL_PLASTIC_UP_FRAME));
    export_constant( "_FL_PLASTIC_DOWN_FRAME",      "box", newSViv(_FL_PLASTIC_DOWN_FRAME));
    export_constant( "_FL_PLASTIC_THIN_UP_BOX",     "box", newSViv(_FL_PLASTIC_THIN_UP_BOX));
    export_constant( "_FL_PLASTIC_THIN_DOWN_BOX",   "box", newSViv(_FL_PLASTIC_THIN_DOWN_BOX));
    export_constant( "_FL_PLASTIC_ROUND_UP_BOX",    "box", newSViv(_FL_PLASTIC_ROUND_UP_BOX));
    export_constant( "_FL_PLASTIC_ROUND_DOWN_BOX",  "box", newSViv(_FL_PLASTIC_ROUND_DOWN_BOX));
    export_constant( "_FL_GTK_UP_BOX",              "box", newSViv(_FL_GTK_UP_BOX));
    export_constant( "_FL_GTK_DOWN_BOX",            "box", newSViv(_FL_GTK_DOWN_BOX));
    export_constant( "_FL_GTK_UP_FRAME",            "box", newSViv(_FL_GTK_UP_FRAME));
    export_constant( "_FL_GTK_DOWN_FRAME",          "box", newSViv(_FL_GTK_DOWN_FRAME));
    export_constant( "_FL_GTK_THIN_UP_BOX",         "box", newSViv(_FL_GTK_THIN_UP_BOX));
    export_constant( "_FL_GTK_THIN_DOWN_BOX",       "box", newSViv(_FL_GTK_THIN_DOWN_BOX));
    export_constant( "_FL_GTK_THIN_UP_FRAME",       "box", newSViv(_FL_GTK_THIN_UP_FRAME));
    export_constant( "_FL_GTK_THIN_DOWN_FRAME",     "box", newSViv(_FL_GTK_THIN_DOWN_FRAME));
    export_constant( "_FL_GTK_ROUND_UP_BOX",        "box", newSViv(_FL_GTK_ROUND_UP_BOX));
    export_constant( "_FL_GTK_ROUND_DOWN_BOX",      "box", newSViv(_FL_GTK_ROUND_DOWN_BOX));
    export_constant( "_FL_GLEAM_UP_BOX",            "box", newSViv(_FL_GLEAM_UP_BOX));
    export_constant( "_FL_GLEAM_DOWN_BOX",          "box", newSViv(_FL_GLEAM_DOWN_BOX));
    export_constant( "_FL_GLEAM_UP_FRAME",          "box", newSViv(_FL_GLEAM_UP_FRAME));
    export_constant( "_FL_GLEAM_DOWN_FRAME",        "box", newSViv(_FL_GLEAM_DOWN_FRAME));
    export_constant( "_FL_GLEAM_THIN_UP_BOX",       "box", newSViv(_FL_GLEAM_THIN_UP_BOX));
    export_constant( "_FL_GLEAM_THIN_DOWN_BOX",     "box", newSViv(_FL_GLEAM_THIN_DOWN_BOX));
    export_constant( "_FL_GLEAM_ROUND_UP_BOX",      "box", newSViv(_FL_GLEAM_ROUND_UP_BOX));
    export_constant( "_FL_GLEAM_ROUND_DOWN_BOX",    "box", newSViv(_FL_GLEAM_ROUND_DOWN_BOX));
    export_constant( "FL_FREE_BOXTYPE",             "box", newSViv(FL_FREE_BOXTYPE));

=pod

=head2 C<:label>

The C<labeltype()> method of Fl::Widget sets the type of the label. The
following standard label types are included:

=over

=item FL_NORMAL_LABEL

Draws the text.

=item FL_NO_LABEL

Does nothing.

=item FL_SHADOW_LABEL

Draws a drop shadow under the text.

=item FL_ENGRAVED_LABEL

Draws edges as though the text is engraved.

=item FL_EMBOSSED_LABEL

Draws edges as though the text is raised.

=item FL_FREE_BOXTYPE

First free labeltype to use for creating your own labeltypes.

=back

=cut

    // Fl_Labeltype
    export_constant( "FL_NORMAL_LABEL",    "label", newSViv(FL_NORMAL_LABEL));
    export_constant( "FL_NO_LABEL",        "label", newSViv(FL_NO_LABEL));
    export_constant( "_FL_SHADOW_LABEL",   "label", newSViv(_FL_SHADOW_LABEL));
    export_constant( "_FL_ENGRAVED_LABEL", "label", newSViv(_FL_ENGRAVED_LABEL));
    export_constant( "_FL_EMBOSSED_LABEL", "label", newSViv(_FL_EMBOSSED_LABEL));
    export_constant( "_FL_MULTI_LABEL",    "label", newSViv(_FL_MULTI_LABEL));
    export_constant( "_FL_ICON_LABEL",     "label", newSViv(_FL_ICON_LABEL));
    export_constant( "_FL_IMAGE_LABEL",    "label", newSViv(_FL_IMAGE_LABEL));
    export_constant( "FL_FREE_LABELTYPE",  "label", newSViv(FL_FREE_LABELTYPE));

    export_constant( "FL_SHADOW_LABEL",   "label", newSViv(FL_SHADOW_LABEL));
    export_constant( "FL_ENGRAVED_LABEL", "label", newSViv(FL_ENGRAVED_LABEL));
    export_constant( "FL_EMBOSSED_LABEL", "label", newSViv(FL_EMBOSSED_LABEL));

=pod

=head2 C<:font>

The following may be imported with this tag:

=over

=item FL_NORMAL_SIZE

This is the approximate height of a font in pixels.

=item FL_HELVETICA

Helvetica (or Arial) normal.

=item FL_HELVETICA_BOLD

Helvetica (or Arial) bold.

=item FL_HELVETICA_ITALIC

Helvetica (or Arial) oblique.

=item FL_HELVETICA_BOLD_ITALIC

Helvetica (or Arial) bold-oblique.

=item FL_COURIER

Courier normal.

=item FL_COURIER_BOLD

Courier bold.

=item FL_COURIER_ITALIC

Courier italic.

=item FL_COURIER_BOLD_ITALIC

Courier bold-italic.

=item FL_TIMES

Times roman.

=item FL_TIMES_BOLD

Times roman bold.

=item FL_TIMES_ITALIC

Times roman italic.

=item FL_TIMES_BOLD_ITALIC

Times roman bold-italic.

=item FL_SYMBOL

Standard symbol font.

=item FL_SCREEN

Default monospaced screen font.

=item FL_SCREEN_BOLD

Default monospaced bold screen font.

=item FL_ZAPF_DINGBATS

Zapf-dingbats font.

See https://en.wikipedia.org/wiki/Zapf_Dingbats

=item FL_FREE_FONT

First one free to allocate for custom fonts.

=item FL_BOLD

Add this to C<FL_HELVETICA>, C<FL_COURIER>, or C<FL_TIMES>.

=item FL_ITALIC

Add this to C<FL_HELVETICA>, C<FL_COURIER>, or C<FL_TIMES>.

=item FL_BOLD_ITALIC

Add this to C<FL_HELVETICA>, C<FL_COURIER>, or C<FL_TIMES>.

=back

=cut

    // Fl_Font
    export_constant( "FL_HELVETICA",             "font", newSViv(FL_HELVETICA));
    export_constant( "FL_HELVETICA_BOLD",        "font", newSViv(FL_HELVETICA_BOLD));
    export_constant( "FL_HELVETICA_ITALIC",      "font", newSViv(FL_HELVETICA_ITALIC));
    export_constant( "FL_HELVETICA_BOLD_ITALIC", "font", newSViv(FL_HELVETICA_BOLD_ITALIC));
    export_constant( "FL_COURIER",               "font", newSViv(FL_COURIER));
    export_constant( "FL_COURIER_BOLD",          "font", newSViv(FL_COURIER_BOLD));
    export_constant( "FL_COURIER_ITALIC",        "font", newSViv(FL_COURIER_ITALIC));
    export_constant( "FL_COURIER_BOLD_ITALIC",   "font", newSViv(FL_COURIER_BOLD_ITALIC));
    export_constant( "FL_TIMES",                 "font", newSViv(FL_TIMES));
    export_constant( "FL_TIMES_BOLD",            "font", newSViv(FL_TIMES_BOLD));
    export_constant( "FL_TIMES_ITALIC",          "font", newSViv(FL_TIMES_ITALIC));
    export_constant( "FL_TIMES_BOLD_ITALIC",     "font", newSViv(FL_TIMES_BOLD_ITALIC));
    export_constant( "FL_SYMBOL",                "font", newSViv(FL_SYMBOL));
    export_constant( "FL_SCREEN",                "font", newSViv(FL_SCREEN));
    export_constant( "FL_SCREEN_BOLD",           "font", newSViv(FL_SCREEN_BOLD));
    export_constant( "FL_ZAPF_DINGBATS",         "font", newSViv(FL_ZAPF_DINGBATS));
    export_constant( "FL_FREE_FONT",             "font", newSViv(FL_FREE_FONT));
    export_constant( "FL_BOLD",                  "font", newSViv(FL_BOLD));
 	export_constant( "FL_ITALIC",                "font", newSViv(FL_ITALIC));
    export_constant( "FL_BOLD_ITALIC",           "font", newSViv(FL_BOLD_ITALIC));

    // Fl_Fontsize
    export_constant( "FL_NORMAL_SIZE",           "font", newSViv(FL_NORMAL_SIZE));

=pod

=head2 C<:chart>

This tag imports values related to Fl::Chart:

=for markdown [http://www.fltk.org/doc-1.3/charts.png]

=for html <center><img src="http://www.fltk.org/doc-1.3/charts.png" /></center>

=over

=item FL_BAR_CHART

Each sample value is drawn as a vertical bar.

=item FL_FILLED_CHART

The chart is filled from the bottom of the graph to the sample values.

=item FL_HORBAR_CHART

Each sample value is drawn as a horizontal bar.

=item FL_LINE_CHART

The chart is drawn as a polyline with vertices at each sample value.

=item FL_PIE_CHART

A pie chart is drawn with each sample value being drawn as a proportionate
slice in the circle.

=item FL_LINE_CHART

Like C<FL_PIE_CHART> but the first slice is separated from the pie.

=item FL_SPIKE_CHART

Each sample value is drawn as a vertical line.

=back

=cut

    export_constant( "FL_BAR_CHART",        "chart", newSViv(FL_BAR_CHART ));
    export_constant( "FL_FILLED_CHART",     "chart", newSViv(FL_FILLED_CHART ));
    export_constant( "FL_HORBAR_CHART",     "chart", newSViv(FL_HORBAR_CHART ));
    export_constant( "FL_LINE_CHART",       "chart", newSViv(FL_LINE_CHART ));
    export_constant( "FL_PIE_CHART",        "chart", newSViv(FL_PIE_CHART ));
    export_constant( "FL_SPECIALPIE_CHART", "chart", newSViv(FL_SPECIALPIE_CHART ));
    export_constant( "FL_SPIKE_CHART",      "chart", newSViv(FL_SPIKE_CHART ));

=pod

=head1 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.

=head1 AUTHOR

Sanko Robinson E<lt>sanko@cpan.orgE<gt>

=cut

    // Don't forget to export them with the :enum tag in Fl.pm
    // Fl_Cursor
    // Fl_Damage
    // Fl_Event
