X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fpalette.h;fp=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fpalette.h;h=066e4e0d2058cbe836e6892db96d2c7da414c969;hb=e3acc0b267b14fda5db3c7bbb2f218b993ef84b3;hp=0000000000000000000000000000000000000000;hpb=ced68168d8518aac837f20e73bcd1e84a6bd6178;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/palette.h b/synfig-core/trunk/src/synfig/palette.h new file mode 100644 index 0000000..066e4e0 --- /dev/null +++ b/synfig-core/trunk/src/synfig/palette.h @@ -0,0 +1,93 @@ +/* === S I N F G =========================================================== */ +/*! \file Palette.h +** \brief Template Header +** +** $Id: palette.h,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $ +** +** \legal +** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** +** This software and associated documentation +** are CONFIDENTIAL and PROPRIETARY property of +** the above-mentioned copyright holder. +** +** You may not copy, print, publish, or in any +** other way distribute this software without +** a prior written agreement with +** the copyright holder. +** \endlegal +*/ +/* ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SINFG_PALETTE_H +#define __SINFG_PALETTE_H + +/* === H E A D E R S ======================================================= */ + +#include "color.h" +#include "string.h" +#include + +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +namespace sinfg { + +class Surface; + +struct PaletteItem +{ + Color color; + String name; + int weight; + + PaletteItem():weight(1) { } + + PaletteItem(const Color& color, const String& name, int weight=1): + color(color),name(name),weight(weight) { } + + PaletteItem(const Color& color, int weight=1): + color(color),weight(weight) { } + + void add(const Color& x, int weight=1); + + bool operator<(const PaletteItem& rhs)const { return weight +{ + String name_; + +public: + Palette(); + Palette(const String& name_); + + /*! Generates a palette for the given + ** surface + */ + Palette(const Surface& surface, int size=256); + + iterator find_closest(const Color& color, float* dist=0); + const_iterator find_closest(const Color& color, float* dist=0)const; + + iterator find_heavy(); + + iterator find_light(); + + static Palette grayscale(int steps=16); + + void save_to_file(const sinfg::String& filename)const; + + static Palette load_from_file(const sinfg::String& filename); +}; // END of class Palette + +}; // END of namespace sinfg + +/* === E N D =============================================================== */ + +#endif