Main MRPT website > C++ reference for MRPT 1.9.9
TColorManager.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "img-precomp.h" // Precompiled headers
11 #include <mrpt/img/TColorManager.h>
12 
13 using namespace mrpt::img;
14 using namespace std;
15 
16 TColorManager::TColorManager(bool use_standard_colors_first_in /* = true */)
17  : color_thresh(255)
18 {
19  this->reset();
20  this->use_standard_colors_first = use_standard_colors_first_in;
21 } // end of TColorManager (ctor)
22 
25 {
27  {
28  // pick and return a random color triad
29  return TColor(
30  rand() % (color_thresh + 1), rand() % (color_thresh + 1),
31  rand() % (color_thresh + 1));
32  }
33 
34  // start updating by the step if we don't use (or have already used) the
35  // standard colors
37  {
38  this->advanceRGBCounters();
39  }
40  else
41  {
42  bool used_red = used_colors.find(TColor::red()) != used_colors.end();
43  bool used_green =
44  used_colors.find(TColor::green()) != used_colors.end();
45  bool used_blue = used_colors.find(TColor::blue()) != used_colors.end();
46 
47  // fixed order of usage
48  // red -> green -> blue
49  if (!used_red)
50  {
52  }
53  else if (!used_green)
54  {
56  }
57  else if (!used_blue)
58  {
61  }
62  }
63 
65  return curr_color;
66 } // end of getNextTColor
67 
69 {
70  return TColorf(this->getNextTColor());
71 } // end of getNextTColor
72 
74 {
75  // method is used only when we either don't use or have already used the
76  // standard colors.
78 
79  THROW_EXCEPTION("Not yet implemented.");
80  // if standard colors have already been used then at first color is
81  // TColor::blue
82  if (curr_color == TColor::blue())
83  {
84  curr_color = TColor();
85 
87  }
88 
89  // first advance blue until we reach the limit 255
90  // then advance green until we reach the limit 255
91  // finally advance red until we reach the limit 255
92 
93  // TODO - how do i do this?
95 
96  // if the standard colors are to be used first make sure that the color we
97  // end up on is not a standard one.
100  curr_color == TColor::blue()))
101  {
102  this->advanceRGBCounters();
103  }
104 
105 } // end of advanceRGBCounters
106 
108 {
109  using namespace std;
111 
112  // Should always return True as element shouldn't exist prior to this call
113  ASSERT_(ret.second);
114 }
115 
117 {
118  used_colors.clear();
119 
120  curr_color = TColor();
121  color_step_triad = TColor(0, 0, 50);
122 
123  have_exceeded_colors = false;
126 }
127 
129 {
130  bool ret = used_colors.find(TColor::red()) != used_colors.end() &&
131  used_colors.find(TColor::green()) != used_colors.end() &&
132  used_colors.find(TColor::blue()) != used_colors.end();
133 
134  return ret;
135 }
mrpt::img::TColorManager::use_standard_colors_first
bool use_standard_colors_first
Indicates if the standard colors are to be returned first.
Definition: TColorManager.h:46
mrpt::img::TColorManager::reset
void reset()
Reset all class properties to their default values.
Definition: TColorManager.cpp:116
mrpt::img::TColor::red
static constexpr TColor red()
Predefined colors.
Definition: TColor.h:62
mrpt::img::TColorManager::~TColorManager
~TColorManager()
Destructor.
Definition: TColorManager.cpp:23
const_iterator
const Scalar * const_iterator
Definition: eigen_plugins.h:27
mrpt::img::TColorManager::have_used_standard_colors
bool have_used_standard_colors
Indicates if the standard colors have already been used.
Definition: TColorManager.h:56
mrpt::img::TColorManager::color_step_triad
mrpt::img::TColor color_step_triad
Definition: TColorManager.h:70
mrpt::img::TColorManager::TColorManager
TColorManager(bool use_standard_colors_first=true)
Constructor.
Definition: TColorManager.cpp:16
mrpt::img::TColorManager::color_thresh
const uint8_t color_thresh
Definition: TColorManager.h:64
THROW_EXCEPTION
#define THROW_EXCEPTION(msg)
Definition: exceptions.h:41
ASSERT_
#define ASSERT_(f)
Defines an assertion mechanism.
Definition: exceptions.h:113
mrpt::img::TColorManager::color_step
uint8_t color_step
Definition: TColorManager.h:63
mrpt::img::TColorManager::curr_color
mrpt::img::TColor curr_color
Definition: TColorManager.h:42
mrpt::img::TColor::green
static constexpr TColor green()
Definition: TColor.h:63
mrpt::img::TColor::B
uint8_t B
Definition: TColor.h:48
mrpt::img::TColorManager::used_colors
std::set< mrpt::img::TColor > used_colors
Definition: TColorManager.h:43
mrpt::img
Definition: CCanvas.h:17
TColorManager.h
mrpt::img::TColorManager::getNextTColorf
mrpt::img::TColorf getNextTColorf()
Get the next RGB triad in TColorf form.
Definition: TColorManager.cpp:68
mrpt::img::TColorManager::have_exceeded_colors
bool have_exceeded_colors
Definition: TColorManager.h:66
mrpt::img::TColorf
A RGB color - floats in the range [0,1].
Definition: TColor.h:79
mrpt::img::TColor
A RGB color - 8bit.
Definition: TColor.h:22
color
GLuint color
Definition: glext.h:8300
img-precomp.h
mrpt::img::TColorManager::getNextTColor
mrpt::img::TColor getNextTColor()
Get the next RGB triad in TColor form.
Definition: TColorManager.cpp:24
mrpt::img::TColor::blue
static constexpr TColor blue()
Definition: TColor.h:64
mrpt::img::TColorManager::checkStdColorsUsed
bool checkStdColorsUsed()
Check if the standard colors have already been used.
Definition: TColorManager.cpp:128
mrpt::img::TColorManager::advanceRGBCounters
void advanceRGBCounters()
Definition: TColorManager.cpp:73
mrpt::img::TColorManager::markColorAsUsed
void markColorAsUsed(mrpt::img::TColor color)
Mark the given color as used.
Definition: TColorManager.cpp:107



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST