iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Text.H
Go to the documentation of this file.
1 /*! @file
2  @author Lior Elazary
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_IMAGEPROC_DRAWING_TEXT_H
37 #define INCLUDE_NRT_IMAGEPROC_DRAWING_TEXT_H
38 
39 #include <nrt/Core/Image/Image.H>
43 
44 namespace nrt
45 {
46  /*! \defgroup textdrawing Text Drawing
47  Methods for drawing text on Images
48 
49  \ingroup imagedrawing
50  \see imagedrawing */
51 
52  //! Where text should be anchored with respect to an anchor point location
53  /*! \ingroup textdrawing */
54  enum class TextAnchor
55  {
56  TOP_LEFT, //!< Anchor the text by the top-left corner
57  TOP_RIGHT, //!< Anchor the text by the top-right corner
58  BOTTOM_LEFT, //!< Anchor the text by the bottom-left corner
59  BOTTOM_RIGHT //!< Anchor the text by the bottom-right corner
60  };
61 
62  //! Write some text in an Image using a SimpleFont
63  /*! @param image the Image to write into
64  @param pt the anchor point
65  @param text the text string to write
66  @param foreground the foreground color (can include alpha blending, e.g., using type PixRGBA<T>)
67  @param background the background color (can include alpha blending, e.g., using type PixRGBA<T>)
68  @param font the font to use (see SimpleFont)
69  @param anchor how to anchor the text string relative to the anchor point \c pt
70  @param transparentBG whether to use a transparent background instead of the \c background color
71 
72  \note Currently, only ASCII chars 32 .. 126 are supported (see SimpleFont)
73  \ingroup textdrawing */
74  template <class T, template <typename> class PixDest,
75  class U = byte, template <typename> class FGColorT = PixRGB,
76  class V = byte, template <typename> class BGColorT = PixRGB>
77  void drawText(Image<PixDest<T> > & image, Point2D<int32> const & pt, std::string const & text,
78  FGColorT<U> const & foreground = FGColorT<U>(255), BGColorT<U> const & background = BGColorT<V>(0),
79  SimpleFont const & font = SimpleFont::FIXED(10), TextAnchor const anchor = TextAnchor::TOP_LEFT,
80  bool transparentBG = false);
81 }
82 
83 // Include implementation details
85 
86 #endif // INCLUDE_NRT_IMAGEPROC_DRAWING_TEXT_H