1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
/*
* $Revision: 2771 $
*
* last checkin:
* $Author: gutwenger $
* $Date: 2012-09-26 15:53:39 +0200 (Wed, 26 Sep 2012) $
***************************************************************/
/** \file
* \brief Offers colorizer for SimDraw.
*
* \author Michael Schulz and Tobias Dehling
*
* \par License:
* This file is part of the Open Graph Drawing Framework (OGDF).
*
* \par
* Copyright (C)<br>
* See README.txt in the root directory of the OGDF installation for details.
*
* \par
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* Version 2 or 3 as published by the Free Software Foundation;
* see the file LICENSE.txt included in the packaging of this file
* for details.
*
* \par
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* \par
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
* \see http://www.gnu.org/copyleft/gpl.html
***************************************************************/
#ifndef OGDF_SIMDRAW_COLORIZER_H
#define OGDF_SIMDRAW_COLORIZER_H
#include <ogdf/simultaneous/SimDrawManipulatorModule.h>
namespace ogdf
{
//! Adds color to a graph
/** SimDrawColorizer adds colors to the edges (and nodes) of a simdraw
* instance. The underlying color scheme sets the used colors.
* Some color schemes are only usable for a small number of basic graphs.
*
* A typical use of SimDrawColorizer involves a predefined SimDraw
* instance on which SimDrawColorizer works.
* \code
* SimDraw SD;
* SimDrawColorizer SDC(SD);
* [...]
* SDC.addColor();
* [...]
* \endcode
*/
class OGDF_EXPORT SimDrawColorizer : public SimDrawManipulatorModule
{
public:
//! types for colorschemes
enum colorScheme
{
none, //!< <= 32 different colors
bluYel, //!< blue and yellow <= 2 colors
redGre, //!< red and green <= 2 colors
bluOra, //!< blue and orange <= 2 colors
teaLil, //!< teal and purple <= 2 colors
redBluYel, //!< red, blue and yellow <= 3 colors
greLilOra //!< green, purple and orange <= 3 colors
};
private:
//! stores the current colorscheme
colorScheme m_colorScheme;
public:
//! constructor assigns default color scheme
SimDrawColorizer(SimDraw &SD) : SimDrawManipulatorModule(SD)
{ m_colorScheme = none; }
//! returns current color scheme
const colorScheme &ColorScheme() const { return m_colorScheme; }
//! assigns a new color scheme
colorScheme &ColorScheme() { return m_colorScheme; }
//! adds color to a graph including nodes
void addColorNodeVersion();
//! adds some color to a graph
void addColor();
public:
//! Manages the various color schemes
/**
* Color schemes are used within SimDrawColorizer to chose
* different colors for the basic graph visualizations.
* It is used directly within SimDrawColorizer.
*
* \code
* SimDraw SD;
* SimDrawColorizer SDC(SD);
* [...]
* SDC.ColorScheme() = SimDrawColorizer::redGre;
* SDC.addColor();
* [...]
* \endcode
*
* CAUTION: Some color schemes are only valid for a small
* number (e.g. two or three) of basic graphs. The default color
* scheme can be used for up to 32 basic graphs.
*/
class SimDrawColorScheme
{
private:
//! stores the current colorscheme (set by constructor)
colorScheme m_intScheme;
//! red color component
/** stores the values of the red color component for every graph
* according to colorscheme
*/
int *red;
//! green color component
/** stores the values of the green color component for every graph
* according to colorscheme
*/
int *green;
//! blue color component
/** stores the values of the blue color component for every graph
* according to colorscheme
*/
int *blue;
public:
//! constructor
SimDrawColorScheme (enum colorScheme colorScm, int numberOfGraphs);
//! destructor
~SimDrawColorScheme();
//! joins the different color components together
Color getColor(int subGraphBits, int numberOfGraphs);
//! sets the color component arrays according to colorschemeXS
void assignColScm(int numberOfGraphs);
}; // SimDrawColorScheme
}; // SimDrawColorizer
}
#endif
|