Provided by: liblayout-manager-perl_0.34-1_all bug

NAME

       Layout::Manager - 2D Layout Management

SYNOPSIS

       Layout::Manager provides a simple interface for creating layout managers, or classes that
       size and position components within a container.

       A few managers are provided for reference, but this module is primarily meant to serve as
       a base for outside implementations.

           use Layout::Manager;

           my $foo = Layout::Manager->new;
           $foo->do_layout($component);

USING A LAYOUT MANAGER

       Layout::Manager relies on Graphics::Primitive::Container as a source for it's components.

       Various implementations of Layout::Manager will require you do add components with
       slightly different second arguments, but the general case will be:

         $lm->add_component($comp, $constraints);

       The contents of $constraints must be discerned by reading the documentation for the layout
       manager you are using.

       The $comp argument must be a Graphics::Primitive::Component.

       Layout manager works hand-in-hand with Graphics::Primitive, so you'll want to check out
       the lifecyle documented in Graphics::Primitive::Component.  It will look something like
       this:

         $cont->add_component($foo, { some => metadata });
         $driver->prepare($cont);
         my $lm = new Layout::Manager::SomeImplementation;
         $lm->do_layout($cont);
         $driver->pack($cont);
         $driver->draw($cont);

       When you are ready to lay out your container, you'll need to call the do_layout method
       with a single argument: the component in which you are laying things out. When do_layout
       returns all of the components should be resized and repositioned according to the rules of
       the Layout::Manager implementation.

   PREPARATION
       Subsequent calls to do_layout will be ignored if the Container is prepared.  The
       Container's "prepared" flag and the flags of all it's children are checked, so any
       modifications to any child component will cause the entire container (and any container
       children) to be laid out again.

WRITING A LAYOUT MANAGER

       Layout::Manager provides all the methods necessary for your implementation, save the
       do_layout method.  This method will be called when it is time to layout the components.

       The add_component method takes two arguments: the component and a second, abritrary piece
       of data.  If your layout manager is simple, like Compass, you may only require a simple
       variable like "NORTH".  If you create something more complex the second argument may be a
       hashref or an object.

       The value of the components method is an arrayref of hashrefs.  The hashrefs have two
       keys:

       component
           The component to be laid out.

       args
           The argument provided to add_component.

TIPS

       Layout manager implementations should honor the visible attribute of a component, as those
       components need to be ignored.

METHODS

   do_layout
       Lays out this manager's components in the specified container.

AUTHOR

       Cory Watson, "<gphat@cpan.org>"

SEE ALSO

       perl(1), Graphics::Primitive

COPYRIGHT & LICENSE

       Copyright 2008 - 2010 Cory G Watson

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