X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fcolor.cpp;h=b16d9950fec134755ad423e89656ba60dd7f4333;hb=2ebfcf72203f94f579931a9cfe6658a65ca5027d;hp=8dc4c865762af724607a92ef5149ffabed55e004;hpb=569ef8f6dbacc8a8b0b933d02a806c2e091ce02b;p=inkscape.git diff --git a/src/color.cpp b/src/color.cpp index 8dc4c8657..b16d9950f 100644 --- a/src/color.cpp +++ b/src/color.cpp @@ -17,6 +17,12 @@ #include #include "color.h" #include "svg/svg-icc-color.h" +#include "svg/svg-color.h" + +#include "svg/css-ostringstream.h" + +using Inkscape::CSSOStringStream; +using std::vector; static bool profileMatches( SVGICCColor const* first, SVGICCColor const* second ); @@ -96,8 +102,7 @@ bool SPColor::isClose( SPColor const& other, float epsilon ) const && (fabs((v.c[1]) - (other.v.c[1])) < epsilon) && (fabs((v.c[2]) - (other.v.c[2])) < epsilon); - // TODO uncomment once we start using that profile. Will be RSN - //match &= profileMatches( icc, other.icc ); + match &= profileMatches( icc, other.icc ); return match; } @@ -176,6 +181,33 @@ guint32 SPColor::toRGBA32( gdouble alpha ) const return toRGBA32( static_cast(SP_COLOR_F_TO_U(alpha)) ); } +std::string SPColor::toString() const +{ + CSSOStringStream css; + + std::string result; + char tmp[64] = {0}; + + sp_svg_write_color(tmp, sizeof(tmp), toRGBA32(0x0ff)); + css << tmp; + + if ( icc ) { + if ( !css.str().empty() ) { + css << " "; + } + css << "icc-color(" << icc->colorProfile; + for (vector::const_iterator i(icc->colors.begin()), + iEnd(icc->colors.end()); + i != iEnd; ++i) { + css << ", " << *i; + } + css << ')'; + } + + return css.str(); +} + + /** * Fill rgb float array with values from SPColor. * \pre color != NULL && rgb != NULL && rgb[0-2] is meaningful