<commit_before>=pod

=head1 NAME

FLTK::Notes - Annotated Guide to the Ins and Outs of FLTK

=head1 Description

This is a first draft attempt at defining a road map for future development
and a behavioral reference for users and third-party developers.

=head1 Class Hierarchy

TODO

=head1 Installation

This distribution uses C<Module::Build> for installation, so use the following
procedure:

  perl Build.PL
  ./Build
  ./Build test
  ./Build install

See also: L<Automated Test Reports|/"Automated Test Reports">

=head2 Prerequisites

C<FLTK> requires L<Alien::FLTK|Alien::FLTK> which is listed as prerequisite in
Build.PL so, unless you answer 'no' when prompted, the CPAN shell should
automagically install it for you.

=head1 How Do I...

Parts that aren't handled internally are described here (eventually) with
sample code to get you started.

TODO

=head1 FLTK Internals

This section describes all the behind the scenes stuff that makes C<FLTK>
work.  Or not work.  It depends.

=head2 FLTK Libraries

Please refer to L<Alien::FLTK|Alien::FLTK>.

=head2 Customizing the Build Process

=for notes This is where I'll describe stuff like how to turn on/off various
flags during compilation

TODO

=head2 Depricated Widgets and Functions

TODO

=head2 Compatibility Notes

=head3 C++ API Differences

For the most part, I have tried to emmulate the official interface to FLTK but
there are a few areas where I stray (sometimes drastically) from the C++ API
Here, I'll list them and (for some) try to explain why.

If a change I mention here chaffes you the wrong way, you're free to (within
reason) bug me about it until I reconsider. ...and, in turn, I am free to
ignore you if I'm busy or just about any other reason. Drop such requests in
the issue tracker.

=over

=item Support for C<args(...), arg(...), and show(...)>

The latter two are used extensivly in the tests that come with fltk but I
don't think they're powerful enough to use in Perl. I would suggest using
L<GetOpt::Long|GetOpt::Long> or another command line parser and then setting
the values in FLTK manually.

I'm still thinking about this choice, so don't get too angry if your life is
incomplete without C<arg(0, '-geometry blah', 0)> support.

=back

=head3 Backwards Compatability

This section lists recent major changes in API or behavior between stable
releases.  For older news see the F<Changes> file included with this
distribution.  For detail see the commit logs.

=over

=item ...nothin' yet.

=back

=head1 Giving back

If you're interested in assisting with L<FLTK|FLTK>'s development but don't
know where to begin, here are a few ideas.

=head2 Joining the Project

C<FLTK> is too large for just one person to hack on.  If you're XS-, C++-, or
just Perl-adept and would like to help, you can start by forking the project
on github: http://github.com/sanko/fltk-perl/.  When ready, send me a pull
request, I'll look over your changes and get back to you. Minor patches get
your name in the changelog.  Major patches get your name in the
L<Acknowledgments|FLTK/Acknowledgments> section and an invitation to be a
trusted collaborator.  Oooo.  Ahhh.

=head2 Bug Reporting

Found bugs should be reported through C<FLTK>'s
L<Issue Tracker|/"Issue Tracker">.  Before creating a new report, please
review the following list:

=over

=item 1.

Make sure you are using the most recent stable release.

=item 2.

Make sure the bug is reproducible.

=item 3.

Please write in clear English.

=item 4.

Provide "baby steps" to describe exactly how to replicate the bug.  Sample
code is welcome.

=item 5.

Search the list of open and resolved issues to make sure the flaw hasn't
already been reported.  If it has, star the issue to stay up to date.

=item 6.

One bug is one bug report.  Please do not include multiple, separate issues in
one report unless they are explicitly related to each other.

=item 7.

Look over your report before submission to be sure you've included as much
detail as possible.  Seriously.  Get up, have a drink of water, come back,
read over it again to make sure you've included everything you intended, and
then submit it.

=back

=head2 Automated Test Reports

Becoming a CPAN Tester is an easy, automatic way to contribute to the quality
of your favorite module and CPAN in general.  If you would like to contribute
automated test reports for C<FLTK>, install C<CPAN::Reporter> from the CPAN
shell first:

 $ cpan
 cpan> install CPAN::Reporter
 cpan> reload cpan
 cpan> o conf init test_report
   [...follow the CPAN::Reporter setup prompts...]
 cpan> o conf commit
 cpan> install Net::BitTorrent

For more on becoming a CPAN Tester and why this is useful, see the
L<CPAN::Reporter|CPAN::Reporter/"DESCRIPTION"> documentation and
http://cpantesters.org/.

=head1 See Also

=head2 Support and Information Links

=over

=item Website and Blog

Eventually, the official website will be http://sankorobinson.com/fltk/.

=item Live support
<commit_msg>Adding apidoc info and fixing stuff in Notes.pod<commit_after>=pod

=head1 NAME

FLTK::Notes - Annotated Guide to the Ins and Outs of FLTK

=head1 Description

This is a first draft attempt at defining a road map for future development
and a behavioral reference for users and third-party developers.

=head1 Class Hierarchy

TODO

=head1 Installation

This distribution uses C<Module::Build> for installation, so use the following
procedure:

  perl Build.PL
  ./Build
  ./Build test
  ./Build install

See also: L<Automated Test Reports|/"Automated Test Reports">

=head2 Prerequisites

C<FLTK> requires L<Alien::FLTK|Alien::FLTK> which is listed as prerequisite in
Build.PL so, unless you answer 'no' when prompted, the CPAN shell should
automatically install it for you.

=head1 How Do I...

Parts that aren't handled internally are described here (eventually) with
sample code to get you started.

TODO

=head1 FLTK Internals

This section describes all the behind the scenes stuff that makes C<FLTK>
work.  Or not work.  It depends.

=head2 FLTK Libraries

Please refer to L<Alien::FLTK|Alien::FLTK>.

=head2 Customizing the Build Process

=for notes This is where I'll describe stuff like how to turn on/off various
flags during compilation

TODO

=head2 Deprecated Widgets and Functions

TODO

=head2 Compatibility Notes

=head3 C++ API Differences

For the most part, I have tried to emulate the official interface to FLTK but
there are a few areas where I stray (sometimes drastically) from the C++ API
Here, I'll list them and (for some) try to explain why.

If a change I mention here chafes you the wrong way, you're free to (within
reason) bug me about it until I reconsider. ...and, in turn, I am free to
ignore you if I'm busy or just about any other reason. Drop such requests in
the issue tracker.

=over

=item Support for C<args(...), arg(...), and show(...)>

The latter two are used extensively in the tests that come with fltk but I
don't think they're powerful enough to use in Perl. I would suggest using
L<GetOpt::Long|GetOpt::Long> or another command line parser and then setting
the values in FLTK manually.

I'm still thinking about this choice, so don't get too angry if your life is
incomplete without C<arg(0, '-geometry blah', 0)> support.

=back

=head3 Backward Compatibility

This section lists recent major changes in API or behavior between stable
releases.  For older news see the F<Changes> file included with this
distribution.  For detail see the commit logs.

=over

=item ...nothin' yet.

=back

=head2 APIDoc

To make life easy, FLTK's documentation is in the xs source files near to
whatever is being described.  The documentation format is based on the apidoc
found in perl's own core. ...why not steal a great idea?

During the build process, the documentation is pulled from the xs and .pod
files are created and installed.

=head3 APIDoc format

For folks with an itch to hack or a flair for words and want to help improve
the documentation, lines are of the form:

    flags|prereq|return_type|function_name|arg1|arg2|...|argN

 flags are single letters with following meanings:
    d       depreciated code/widget
    e       enum/flag
    F       function rather than an OO method*
    x       experimental and may be removed or changed in a future version
    t[:X:Y] exported by tags :X and :Y*
    m       basic functionality has changed since the last major release*
    U       suppress usage example in auto-generated documentation
    H       this is a hidden, internal (hacker only) function

 prereq are single letters with the following meanings:
    g       requires GL*
    X       requires the X Window system*
    t       requires pthreads (or Windows)*
    W       requires Windows*

* denotes stuff I haven't really given enough thought to and probably haven't
used yet.

This format is subject to change.

=head1 Giving back

If you're interested in assisting with L<FLTK|FLTK>'s development but don't
know where to begin, here are a few ideas.

=head2 Joining the Project

C<FLTK> is too large for just one person to hack on.  If you're XS-, C++-, or
just Perl-adept and would like to help, you can start by forking the project
on github: http://github.com/sanko/fltk-perl/.  When ready, send me a pull
request, I'll look over your changes and get back to you. Minor patches get
your name in the changelog.  Major patches get your name in the
L<Acknowledgments|FLTK/Acknowledgments> section and an invitation to be a
trusted collaborator.  Oooo.  Ahhh.

=head2 Bug Reporting

Found bugs should be reported through C<FLTK>'s
L<Issue Tracker|/"Issue Tracker">.  Before creating a new report, please
review the following list:

=over

=item 1.

Make sure you are using the most recent stable release.

=item 2.

Make sure the bug is reproducible.

=item 3.

Please write in clear English.

=item 4.

Provide "baby steps" to describe exactly how to replicate the bug.  Sample
code is welcome.

=item 5.

Search the list of open and resolved issues to make sure the flaw hasn't
already been reported.  If it has, star the issue to stay up to date.

=item 6.

One bug is one bug report.  Please do not include multiple, separate issues in
one report unless they are explicitly related to each other.

=item 7.

Look over your report before submission to be sure you've included as much
detail as possible.  Seriously.  Get up, have a drink of water, come back,
read over it again to make sure you've included everything you intended, and
then submit it.

=back

=head2 Automated Test Reports

Becoming a CPAN Tester is an easy, automatic way to contribute to the quality
of your favorite module and CPAN in general.  If you would like to contribute
automated test reports for C<FLTK>, install C<CPAN::Reporter> from the CPAN
shell first:

 $ cpan
 cpan> install CPAN::Reporter
 cpan> reload cpan
 cpan> o conf init test_report
   [...follow the CPAN::Reporter setup prompts...]
 cpan> o conf commit
 cpan> install FLTK

For more on becoming a CPAN Tester and why this is useful, see the
L<CPAN::Reporter|CPAN::Reporter/"DESCRIPTION"> documentation and
http://cpantesters.org/.

=head1 See Also

=head2 Support and Information Links

=over

=item Website and Blog

Eventually, the official website will be http://sankorobinson.com/fltk/.

=item Live support

{'fraction_non_alphanumeric': 0.06158071947545632, 'fraction_numerical': 0.00531632110579479, 'mean_word_length': 3.907391304347826, 'pattern_counts': {'":': 0, '<': 39, '<?xml version=': 0, '>': 49, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1928937', 'n_tokens_mistral': 3415, 'n_tokens_neox': 3203, 'n_words': 1725}