X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftags%2Fsynfig_0_61_07_rc2%2Fsrc%2Fsynfig%2Fpalette.cpp;fp=synfig-core%2Ftags%2Fsynfig_0_61_07_rc2%2Fsrc%2Fsynfig%2Fpalette.cpp;h=0000000000000000000000000000000000000000;hb=6fa8f2f38d4b0b35f8539bf94e27ae27015c7689;hp=16742a41817129cb4256540946c4128f791b2171;hpb=47fce282611fbba1044921d22ca887f9b53ad91a;p=synfig.git diff --git a/synfig-core/tags/synfig_0_61_07_rc2/src/synfig/palette.cpp b/synfig-core/tags/synfig_0_61_07_rc2/src/synfig/palette.cpp deleted file mode 100644 index 16742a4..0000000 --- a/synfig-core/tags/synfig_0_61_07_rc2/src/synfig/palette.cpp +++ /dev/null @@ -1,359 +0,0 @@ -/* === S Y N F I G ========================================================= */ -/*! \file palette.cpp -** \brief Template File -** -** $Id$ -** -** \legal -** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** -** This package is free software; you can redistribute it and/or -** modify it under the terms of the GNU General Public License as -** published by the Free Software Foundation; either version 2 of -** the License, or (at your option) any later version. -** -** This package 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. -** \endlegal -*/ -/* ========================================================================= */ - -/* === H E A D E R S ======================================================= */ - -#ifdef USING_PCH -# include "pch.h" -#else -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "palette.h" -#include "surface.h" -#include "general.h" -#include -#include - -#endif - -/* === U S I N G =========================================================== */ - -using namespace std; -using namespace etl; -using namespace synfig; - -/* === M A C R O S ========================================================= */ - -#define PALETTE_FILE_COOKIE "SYNFIGPAL1.0" - -/* === G L O B A L S ======================================================= */ - -bool weight_less_than(const PaletteItem& lhs,const PaletteItem& rhs) -{ - return lhs.weightadd(color); - continue; - } - - /*if(size()>=max_colors) - { - iterator iterlight(find_light()); - PaletteItem light(*iterlight); - erase(iterlight); - find_closest(light.color)->add(light.color,light.weight); - } - */ - - push_back(color); - continue; - } - -/* - - max_colors-=2; - for(int y=0;yadd(color); - continue; - } - - - push_back(color); - continue; - } - sort(rbegin(),rend()); - - iterator iter; - - iterator best_match(begin()); - while((signed)size()>max_colors) - { - PaletteItem item(back()); - pop_back(); - find_closest(item.color)->add(item.color,item.weight); - } -*/ - push_back(Color::black()); - push_back(Color::white()); - -// sort(begin(),end(),&luma_less_than); -} - -Palette::const_iterator -Palette::find_closest(const Color& color, float* dist)const -{ - // For the sake of avoiding cut-and-paste - // bugs, we'll just use the non-const - // find_closest()... It doesn't change anything - // anyway. - return const_cast(this)->find_closest(color,dist); -} - -Palette::iterator -Palette::find_closest(const Color& color, float* dist) -{ - iterator iter; - - iterator best_match(begin()); - float best_dist(1000000); - - const float prep_y(powf(color.get_y(),2.2f)*color.get_a()); - const float prep_u(color.get_u()); - const float prep_v(color.get_v()); - - for(iter=begin();iter!=end();++iter) - { - const float diff_y(prep_y-powf(iter->color.get_y(),2.2f)*iter->color.get_a()); - const float diff_u(prep_u-iter->color.get_u()); - const float diff_v(prep_v-iter->color.get_v()); - const float diff_a(color.get_a()-iter->color.get_a()); - - - const float dist( - diff_y*diff_y*1.5f+ - diff_a*diff_a+ - - diff_u*diff_u+ - diff_v*diff_v - - // cross product - /*abs( - prep_u*iter->color.get_u()- - prep_v*iter->color.get_v() - )*/ - ); - if(distweight>best_match->weight) - best_match=iter; - } - - return best_match; -} - -Palette::iterator -Palette::find_light() -{ - iterator iter; - - iterator best_match(begin()); - - for(iter=begin();iter!=end();++iter) - { - if(iter->weightweight) - best_match=iter; - } - - return best_match; -} - -Palette -Palette::grayscale(int steps) -{ - Palette ret; - for(int i=0;iname<color.get_r()<color.get_g()<color.get_b()<color.get_a()<