---
name: "Graphics::Primitive::Container"
section: "3pm"
platform: "linux"
package: "libgraphics-primitive-perl"
version: "0.67-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Graphics::Primitive::Container"
---

# Graphics::Primitive::Container(3pm)

Component that holds other Components

## NAME

Graphics::Primitive::Container - Component that holds other Components

## DESCRIPTION

Containers are components that contain other components.  They can also hold an instance of a Layout::Manager for automatic layout of their internal components. See the Component's Lifecycle Section for more information.

## SYNOPSIS

```
  my $c = Graphics::Primitive::Container->new(
    width => 500, height => 350,
    layout_manager => Layout::Manager::Compass->new
  );
  $c->add_component($comp, { meta => 'data' });
```

## METHODS

### Constructor

- *new*

  Creates a new Container.

### Instance Methods

- *add\_component ($component, \[ $constraint \])*

  Add a component to the container.  Returns a true value if the component was added successfully. A second argument may be required, please consult the POD for your specific layout manager implementation.

  Before the component is added, it is passed to the validate\_component method. If validate\_component does not return a true value, then the component is not added.

- *clear\_components*

  Remove all components from the layout manager.

- *component\_count*

  Returns the number of components in this container.

- *component\_list*

  Returns this Container's ComponentList.

- *find\_component*

  Returns the index of the first component with the supplied name.  Returns undef if no component with that name is found.

- *get\_component*

  Get the component at the specified index.

- *get\_constraint*

  Get the constraint at the specified index.

- *get\_tree*

  Returns a Forest::Tree object with this component at the root and all child components as children.  Calling this from your root container will result in a tree representation of the entire scene.

- *prepare*

  Prepares this container.  Does not mark as prepared, as that's done by the layout manager.

- *remove\_component*

  Removes a component.  **Components must have names to be removed.**  Returns an arrayref of removed components.

- *validate\_component*

  Optionally overridden by an implementation, allows it to deem a component as invalid.  If this sub returns false, the component won't be added.

## AUTHOR

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

## BUGS

Please report any bugs or feature requests to `"bug-geometry-primitive at rt.cpan.org"`, or through the web interface at \<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Geometry-Primitive\>.  I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

## COPYRIGHT & LICENSE

Copyright 2008-2009 by Cory G Watson.

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