iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Brush.H
Go to the documentation of this file.
1 /*! @file
2  @author Laurent Itti
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 
36 #ifndef INCLUDE_NRT_GRAPHICS_BRUSH_H
37 #define INCLUDE_NRT_GRAPHICS_BRUSH_H
38 
39 #include <nrt/Core/Image/Image.H>
41 #include <nrt/Graphics/Material.H>
42 
43 #include <nrt/External/cereal/types/string.hpp>
44 
45 namespace nrt
46 {
47  namespace graphics
48  {
49 
50  //! Base class for a graphics brush (to draw facet fills of graphics objects)
51  /*! \ingroup graphics */
52  class Brush
53  {
54  public:
55  //! Construct from a basic material from our basic material library (see nrt::graphics::Material)
56  Brush(BasicMaterial m = BasicMaterial::PlasticWhite);
57 
58  //! Construct from any material
59  Brush(Material const & m);
60 
61  //! Construct from a texture name
62  /*! There should be at least one texture already defined under that name (see nrt::graphics::Textures message to
63  send texture definitions to the ShapeRenderer). Some shapes may use more than one texture, in which case it
64  will be expected that they are all loaded under that same name. */
65  Brush(std::string const & texturename_ /* will need more args for scale, repeat, etc */);
66 
67  //! Material for our facets, is overriden by texture if present
69 
70  //! Textures for our facets, overrides material
71  std::string texturename;
72 
73  //! Serialization
74  template <class Archive> void serialize(Archive & ar)
75  { ar( material, texturename ); }
76  };
77 
78  } // namespace graphics
79 } // namespace nrt
80 
81 #endif // INCLUDE_NRT_GRAPHICS_BRUSH_H
82