X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FColor.C;h=ec269bb95f225f496a62cb00ee843270d64c97f8;hb=eba67bc3120dc301bf193c3f3b570f51f00a4654;hp=ba09d4d833da983631766f85de37cc65d39e605c;hpb=0a16442310eda0baee85054b2b331061a0d90a76;p=lyx.git diff --git a/src/frontends/xforms/Color.C b/src/frontends/xforms/Color.C index ba09d4d833..ec269bb95f 100644 --- a/src/frontends/xforms/Color.C +++ b/src/frontends/xforms/Color.C @@ -18,39 +18,36 @@ #include // max #include // floor -#include // ofstream #include "Color.h" -#include "lyxlex.h" using std::max; using std::min; -using std::ofstream; static int const nohue = -1; -RGBColor::RGBColor( HSVColor const & hsv ) +RGBColor::RGBColor(HSVColor const & hsv) { double h = hsv.h; - double s = hsv.s; - double v = hsv.v; + double const s = hsv.s; + double const v = hsv.v; double rd, gd, bd; - if( h == nohue || s == 0.0 ) { + if (h == nohue || s == 0.0) { rd = gd = bd = v; } else { - if( h == 360.0 ) h = 0.0; + if (h == 360.0) h = 0.0; h /= 60.0; - int j = static_cast( ::floor(h) ); - if( j < 0 ) j = 0; + int const j = max(0, static_cast(::floor(h))); + //if( j < 0 ) j = 0; - double f = h - j; - double p = v * (1.0 - s); - double q = v * (1.0 - (s*f)); - double t = v * (1.0 - (s*(1.0 - f))); + double const f = h - j; + double const p = v * (1.0 - s); + double const q = v * (1.0 - (s * f)); + double const t = v * (1.0 - (s * (1.0 - f))); - switch( j ) { + switch (j) { case 0: rd = v; gd = t; @@ -95,128 +92,38 @@ RGBColor::RGBColor( HSVColor const & hsv ) } -HSVColor::HSVColor( RGBColor const & rgb ) +HSVColor::HSVColor(RGBColor const & rgb) { - // r, g, b lie in the range 0-1, not 0-255. - double r = rgb.r / 255.0; - double g = rgb.g / 255.0; - double b = rgb.b / 255.0; + double const r = rgb.r / 255.0; + double const g = rgb.g / 255.0; + double const b = rgb.b / 255.0; - double maxval = max( max( r, g ), b ); - double minval = max( min( r, g ), b ); + double const maxval = max( max( r, g ), b ); + double const minval = min( min( r, g ), b ); v = maxval; - double diff = maxval - minval; - if( maxval != 0.0 ) + double const diff = maxval - minval; + if (maxval != 0.0) s = diff / maxval; else s = 0.0; h = nohue; - if( s != 0.0 ) { - double rc = (maxval - r) / diff; - double gc = (maxval - g) / diff; - double bc = (maxval - b) / diff; + if (s != 0.0) { + double const rc = (maxval - r) / diff; + double const gc = (maxval - g) / diff; + double const bc = (maxval - b) / diff; - if( r == maxval ) + if (r == maxval) h = bc - gc; - else if( g == maxval ) + else if (g == maxval) h = 2.0 + rc - bc; - else if( b == maxval ) + else if (b == maxval) h = 4.0 + gc - rc; h *= 60.0; - if ( h < 0 ) + if (h < 0) h += 360; } } - - -// sorted by hand to prevent LyXLex from complaining on read(). -static -keyword_item xformTags[] = { -// { "\\gui_active_tab", FL_LIGHTER_COL1 }, - { "\\gui_background", FL_COL1 }, - { "\\gui_buttonbottom", FL_BOTTOM_BCOL }, - { "\\gui_buttonleft", FL_LEFT_BCOL }, - { "\\gui_buttonright", FL_RIGHT_BCOL }, - { "\\gui_buttontop", FL_TOP_BCOL }, - { "\\gui_inactive", FL_INACTIVE }, - { "\\gui_push_button", FL_YELLOW }, - { "\\gui_selected", FL_MCOL }, - { "\\gui_text", FL_BLACK } -}; - - -static const int xformCount = sizeof(xformTags) / sizeof(keyword_item); - - -bool XformColor::read(string const & filename) -{ - LyXLex lexrc( xformTags, xformCount ); - if( !lexrc.setFile( filename ) ) - return false; - - while( lexrc.IsOK() ) { - int le = lexrc.lex(); - - switch( le ) { - case LyXLex::LEX_UNDEF: - lexrc.printError("Unknown tag `$$Token'"); - continue; - case LyXLex::LEX_FEOF: - continue; - default: break; - } - - RGBColor col; - - if( !lexrc.next() ) break; - col.r = lexrc.GetInteger(); - - if( !lexrc.next() ) break; - col.g = lexrc.GetInteger(); - - if( !lexrc.next() ) break; - col.b = lexrc.GetInteger(); - - fl_mapcolor(le, col.r, col.g, col.b); - } - - return true; -} - - -bool XformColor::write(string const & filename) -{ - ofstream os(filename.c_str()); - if (!os) - return false; - - os << "### This file is part of\n" - << "### ========================================================\n" - << "### LyX, The Document Processor\n" - << "###\n" - << "### Copyright 1995 Matthias Ettrich\n" - << "### Copyright 1995-2000 The LyX Team.\n" - << "###\n" - << "### ========================================================\n" - << "\n" - << "# This file is written by LyX, if you want to make your own\n" - << "# modifications you should do them from inside LyX and save\n" - << "\n"; - - for( int i = 0; i < xformCount; ++i ) { - string tag = xformTags[i].tag; - int colorID = xformTags[i].code; - RGBColor color; - - fl_getmcolor(colorID, &color.r, &color.g, &color.b); - - os << tag + " " - << color.r << " " << color.g << " " << color.b << "\n"; - } - - return true; -}