mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Import notefontcolor (one more step towards a working roundtrip for the LyX documentation)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37213 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
1b98ec3e99
commit
cfd6767ec1
@ -92,22 +92,64 @@ string const outputLaTeXColor(RGBColor const & color)
|
||||
int red = color.r;
|
||||
int green = color.g;
|
||||
int blue = color.b;
|
||||
#ifdef USE_CORRECT_RGB_CONVERSION
|
||||
int const scale = 255;
|
||||
#else
|
||||
// the color values are given in the range of 0-255, so to get
|
||||
// an output of "0.5" for the value 127 we need to do the following
|
||||
// FIXME: This is wrong, since it creates a nonlinear mapping:
|
||||
// There is a gap between 0/256 and 2/256!
|
||||
// 0.5 cannot be represented in 8bit hex RGB, it would be 127.5.
|
||||
if (red != 0)
|
||||
++red;
|
||||
if (green != 0)
|
||||
++green;
|
||||
if (blue != 0)
|
||||
++blue;
|
||||
int const scale = 256;
|
||||
#endif
|
||||
string output;
|
||||
output = convert<string>(float(red) / 256) + ", "
|
||||
+ convert<string>(float(green) / 256) + ", "
|
||||
+ convert<string>(float(blue) / 256);
|
||||
output = convert<string>(float(red) / scale) + ", "
|
||||
+ convert<string>(float(green) / scale) + ", "
|
||||
+ convert<string>(float(blue) / scale);
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
RGBColor const RGBColorFromLaTeX(string const & color)
|
||||
{
|
||||
vector<string> rgb = getVectorFromString(color);
|
||||
while (rgb.size() < 3)
|
||||
rgb.push_back("0");
|
||||
RGBColor c;
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
rgb[i] = trim(rgb[i]);
|
||||
if (!isStrDbl(rgb[i]))
|
||||
return c;
|
||||
}
|
||||
#ifdef USE_CORRECT_RGB_CONVERSION
|
||||
int const scale = 255;
|
||||
#else
|
||||
// FIXME: This is wrong, since it creates a nonlinear mapping:
|
||||
// Both 0/256 and 1/256 are mapped to 0!
|
||||
// The wrong code exists only to match outputLaTeXColor().
|
||||
int const scale = 256;
|
||||
#endif
|
||||
c.r = static_cast<unsigned int>(scale * convert<double>(rgb[0]) + 0.5);
|
||||
c.g = static_cast<unsigned int>(scale * convert<double>(rgb[1]) + 0.5);
|
||||
c.b = static_cast<unsigned int>(scale * convert<double>(rgb[2]) + 0.5);
|
||||
#ifndef USE_CORRECT_RGB_CONVERSION
|
||||
if (c.r != 0)
|
||||
c.r--;
|
||||
if (c.g != 0)
|
||||
c.g--;
|
||||
if (c.b != 0)
|
||||
c.b--;
|
||||
#endif
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
Color::Color(ColorCode base_color) : baseColor(base_color),
|
||||
mergeColor(Color_ignore)
|
||||
{}
|
||||
|
@ -62,6 +62,8 @@ std::ostream & operator<<(std::ostream & os, Color color);
|
||||
std::string const X11hexname(RGBColor const & col);
|
||||
RGBColor rgbFromHexName(std::string const & x11hexname);
|
||||
std::string const outputLaTeXColor(RGBColor const & color);
|
||||
/// Inverse of outputLaTeXColor
|
||||
RGBColor const RGBColorFromLaTeX(std::string const & color);
|
||||
|
||||
} // namespace lyx
|
||||
|
||||
|
@ -200,6 +200,7 @@ string h_use_esint = "1";
|
||||
string h_cite_engine = "basic";
|
||||
string h_use_bibtopic = "false";
|
||||
string h_paperorientation = "portrait";
|
||||
string h_notefontcolor;
|
||||
string h_secnumdepth = "3";
|
||||
string h_tocdepth = "3";
|
||||
string h_paragraph_separation = "indent";
|
||||
@ -718,8 +719,10 @@ void end_preamble(ostream & os, TextClass const & /*textclass*/)
|
||||
<< "\\use_esint " << h_use_esint << "\n"
|
||||
<< "\\cite_engine " << h_cite_engine << "\n"
|
||||
<< "\\use_bibtopic " << h_use_bibtopic << "\n"
|
||||
<< "\\paperorientation " << h_paperorientation << "\n"
|
||||
<< h_margins
|
||||
<< "\\paperorientation " << h_paperorientation << '\n';
|
||||
if (LYX_FORMAT >= 382 && !h_notefontcolor.empty())
|
||||
os << "\\notefontcolor " << h_notefontcolor << '\n';
|
||||
os << h_margins
|
||||
<< "\\secnumdepth " << h_secnumdepth << "\n"
|
||||
<< "\\tocdepth " << h_tocdepth << "\n"
|
||||
<< "\\paragraph_separation " << h_paragraph_separation << "\n";
|
||||
@ -1068,6 +1071,21 @@ void parse_preamble(Parser & p, ostream & os,
|
||||
}
|
||||
}
|
||||
|
||||
else if (t.cs() == "definecolor") {
|
||||
string const color = p.getArg('{', '}');
|
||||
string const space = p.getArg('{', '}');
|
||||
string const value = p.getArg('{', '}');
|
||||
if (LYX_FORMAT >= 382 &&
|
||||
color == "note_fontcolor" && space == "rgb") {
|
||||
RGBColor c(RGBColorFromLaTeX(value));
|
||||
h_notefontcolor = X11hexname(c);
|
||||
} else {
|
||||
h_preamble << "\\definecolor{" << color
|
||||
<< "}{" << space << "}{" << value
|
||||
<< '}';
|
||||
}
|
||||
}
|
||||
|
||||
else if (t.cs() == "jurabibsetup") {
|
||||
// FIXME p.getArg('{', '}') is most probably wrong (it
|
||||
// does not handle nested braces).
|
||||
|
Loading…
Reference in New Issue
Block a user