34#include "drain/Dictionary.h"
35#include "drain/util/JSON.h"
36#include "drain/util/StringMapper.h"
41#include "PaletteEntry.h"
55class Palette :
public ImageCodeMap<PaletteEntry> {
60 const SprinterLayout cppLayout2;
64 Palette() : ImageCodeMap<PaletteEntry>(), refinement(0) {
72 Palette(std::initializer_list<std::pair<Variable, PaletteEntry> > inits);
89 const value_type & getEntryByCode(
const std::string & code,
bool lenient=
true)
const;
93 const key_type getValueByCode(
const std::string & code,
bool lenient=
true)
const {
94 const value_type & entry = getEntryByCode(code, lenient);
101 void addEntry(
double min,
double red=0.0,
double green=0.0,
double blue=0.0,
const std::string &
id=
"",
const std::string & label =
"");
107 void load(
const std::string & filename,
bool flexible =
false);
110 void loadTXT(std::istream & ifstr);
113 void loadJSON(std::istream & ifstr);
115 void write(
const std::string & filename)
const;
117 void exportTXT(std::ostream & ostr,
char separator=
'\t',
char separator2=0)
const;
120 void exportJSON(drain::JSONtree & json)
const;
123 void exportFMT(std::ostream & ostr,
const std::string & format)
const;
126 void exportSVGLegend(TreeSVG & svg,
bool up =
true)
const;
129 void exportSLD(TreeSLD & sld)
const;
143 const ChannelGeometry & getChannels()
const {
155 typedef std::map<std::string,PaletteEntry> spec_t;
159 void refine(
size_t n=0);
183 void importJSON(
const drain::JSONtree & json);
186 ChannelGeometry channels;
193std::ostream & operator<<(std::ostream &ostr,
const Palette & p){
201class PaletteMap :
public std::map<std::string,drain::image::Palette> {
206 Palette & get(
const std::string & key){
207 if (aliases.hasKey(key)){
208 return (*
this)[aliases.getValue(key)];
216 void addAlias(
const std::string & key,
const std::string & aliasKey){
217 aliases.add(aliasKey,key);
Two-way mapping between strings and objects of template class T.
Definition Dictionary.h:61
static std::ostream & toStream(std::ostream &ostr, const std::initializer_list< T > &x, const SprinterLayout &layout=defaultLayout)
New (experimental)
Definition Sprinter.h:423
Definition DataSelector.cpp:1277
Definition Sprinter.h:136