mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-20 06:49:56 +00:00
LColor::Pimpl
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6952 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
f88898ed9a
commit
69cb723040
@ -1,3 +1,8 @@
|
|||||||
|
|
||||||
|
2003-05-09 André Pönitz <poenitz@gmx.net>
|
||||||
|
|
||||||
|
* LColor.[Ch]: Pimpl the #include <map> away
|
||||||
|
|
||||||
2003-05-09 John Levon <levon@movementarian.org>
|
2003-05-09 John Levon <levon@movementarian.org>
|
||||||
|
|
||||||
* bufferlist.C: never remove emergency saves
|
* bufferlist.C: never remove emergency saves
|
||||||
|
108
src/LColor.C
108
src/LColor.C
@ -15,19 +15,12 @@
|
|||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
|
||||||
using std::endl;
|
using std::endl;
|
||||||
|
|
||||||
void LColor::fill(LColor::color col, string const & gui,
|
|
||||||
string const & latex, string const & x11,
|
|
||||||
string const & lyx) {
|
|
||||||
information in;
|
|
||||||
in.guiname = gui;
|
|
||||||
in.latexname = latex;
|
|
||||||
in.x11name = x11;
|
|
||||||
in.lyxname = lyx;
|
|
||||||
|
|
||||||
infotab[col] = in;
|
namespace {
|
||||||
}
|
|
||||||
|
|
||||||
struct ColorEntry {
|
struct ColorEntry {
|
||||||
LColor::color lcolor;
|
LColor::color lcolor;
|
||||||
@ -37,11 +30,44 @@ struct ColorEntry {
|
|||||||
char const * lyxname;
|
char const * lyxname;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct LColor::Pimpl {
|
||||||
|
///
|
||||||
|
struct information {
|
||||||
|
/// the name as it appears in the GUI
|
||||||
|
string guiname;
|
||||||
|
/// the name used in LaTeX
|
||||||
|
string latexname;
|
||||||
|
/// the name for X11
|
||||||
|
string x11name;
|
||||||
|
/// the name for LyX
|
||||||
|
string lyxname;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// initialise a color entry
|
||||||
|
void fill(ColorEntry const & entry)
|
||||||
|
{
|
||||||
|
information & in = infotab[entry.lcolor];
|
||||||
|
in.guiname = entry.guiname;
|
||||||
|
in.latexname = entry.latexname;
|
||||||
|
in.x11name = entry.x11name;
|
||||||
|
in.lyxname = entry.lyxname;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
typedef std::map<LColor::color, information> InfoTab;
|
||||||
|
/// the table of color information
|
||||||
|
InfoTab infotab;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
LColor::LColor()
|
LColor::LColor()
|
||||||
|
: pimpl_(new Pimpl)
|
||||||
{
|
{
|
||||||
// LColor::color, gui, latex, x11, lyx
|
// LColor::color, gui, latex, x11, lyx
|
||||||
ColorEntry items[] = {
|
static ColorEntry const items[] = {
|
||||||
{ none, N_("none"), "none", "black", "none" },
|
{ none, N_("none"), "none", "black", "none" },
|
||||||
{ black, N_("black"), "black", "black", "black" },
|
{ black, N_("black"), "black", "black", "black" },
|
||||||
{ white, N_("white"), "white", "white", "white" },
|
{ white, N_("white"), "white", "white", "white" },
|
||||||
@ -100,29 +126,43 @@ LColor::LColor()
|
|||||||
{ ignore, 0, 0, 0, 0 }
|
{ ignore, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
int i = 0;
|
for (int i = 0; items[i].guiname; ++i)
|
||||||
while (items[i].guiname) {
|
pimpl_->fill(items[i]);
|
||||||
fill(items[i].lcolor, items[i].guiname, items[i].latexname,
|
|
||||||
items[i].x11name, items[i].lyxname);
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LColor::LColor(LColor const & c)
|
||||||
|
: pimpl_(new Pimpl(*c.pimpl_))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
LColor::~LColor()
|
||||||
|
{
|
||||||
|
delete pimpl_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LColor::operator=(LColor const & c)
|
||||||
|
{
|
||||||
|
LColor tmp(c);
|
||||||
|
std::swap(pimpl_, tmp.pimpl_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string const LColor::getGUIName(LColor::color c) const
|
string const LColor::getGUIName(LColor::color c) const
|
||||||
{
|
{
|
||||||
InfoTab::const_iterator ici = infotab.find(c);
|
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||||
if (ici != infotab.end())
|
if (ici != pimpl_->infotab.end())
|
||||||
return _(ici->second.guiname);
|
return _(ici->second.guiname);
|
||||||
|
|
||||||
return "none";
|
return "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string const LColor::getX11Name(LColor::color c) const
|
string const LColor::getX11Name(LColor::color c) const
|
||||||
{
|
{
|
||||||
InfoTab::const_iterator ici = infotab.find(c);
|
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||||
if (ici != infotab.end())
|
if (ici != pimpl_->infotab.end())
|
||||||
return ici->second.x11name;
|
return ici->second.x11name;
|
||||||
|
|
||||||
lyxerr << "LyX internal error: Missing color"
|
lyxerr << "LyX internal error: Missing color"
|
||||||
@ -134,8 +174,8 @@ string const LColor::getX11Name(LColor::color c) const
|
|||||||
|
|
||||||
string const LColor::getLaTeXName(LColor::color c) const
|
string const LColor::getLaTeXName(LColor::color c) const
|
||||||
{
|
{
|
||||||
InfoTab::const_iterator ici = infotab.find(c);
|
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||||
if (ici != infotab.end())
|
if (ici != pimpl_->infotab.end())
|
||||||
return ici->second.latexname;
|
return ici->second.latexname;
|
||||||
return "black";
|
return "black";
|
||||||
}
|
}
|
||||||
@ -143,8 +183,8 @@ string const LColor::getLaTeXName(LColor::color c) const
|
|||||||
|
|
||||||
string const LColor::getLyXName(LColor::color c) const
|
string const LColor::getLyXName(LColor::color c) const
|
||||||
{
|
{
|
||||||
InfoTab::const_iterator ici = infotab.find(c);
|
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c);
|
||||||
if (ici != infotab.end())
|
if (ici != pimpl_->infotab.end())
|
||||||
return ici->second.lyxname;
|
return ici->second.lyxname;
|
||||||
return "black";
|
return "black";
|
||||||
}
|
}
|
||||||
@ -152,8 +192,8 @@ string const LColor::getLyXName(LColor::color c) const
|
|||||||
|
|
||||||
void LColor::setColor(LColor::color col, string const & x11name)
|
void LColor::setColor(LColor::color col, string const & x11name)
|
||||||
{
|
{
|
||||||
InfoTab::iterator iti = infotab.find(col);
|
Pimpl::InfoTab::iterator iti = pimpl_->infotab.find(col);
|
||||||
if (iti != infotab.end()) {
|
if (iti != pimpl_->infotab.end()) {
|
||||||
iti->second.x11name = x11name;
|
iti->second.x11name = x11name;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -164,7 +204,7 @@ void LColor::setColor(LColor::color col, string const & x11name)
|
|||||||
|
|
||||||
bool LColor::setColor(string const & lyxname, string const & x11name)
|
bool LColor::setColor(string const & lyxname, string const & x11name)
|
||||||
{
|
{
|
||||||
color col = getFromLyXName (lyxname);
|
color col = getFromLyXName(lyxname);
|
||||||
|
|
||||||
// "inherit" is returned for colors not in the database
|
// "inherit" is returned for colors not in the database
|
||||||
// (and anyway should not be redefined)
|
// (and anyway should not be redefined)
|
||||||
@ -180,8 +220,8 @@ bool LColor::setColor(string const & lyxname, string const & x11name)
|
|||||||
|
|
||||||
LColor::color LColor::getFromGUIName(string const & guiname) const
|
LColor::color LColor::getFromGUIName(string const & guiname) const
|
||||||
{
|
{
|
||||||
InfoTab::const_iterator ici = infotab.begin();
|
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin();
|
||||||
InfoTab::const_iterator end = infotab.end();
|
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
||||||
for (; ici != end; ++ici) {
|
for (; ici != end; ++ici) {
|
||||||
if (!compare_ascii_no_case(_(ici->second.guiname), guiname))
|
if (!compare_ascii_no_case(_(ici->second.guiname), guiname))
|
||||||
return ici->first;
|
return ici->first;
|
||||||
@ -192,9 +232,8 @@ LColor::color LColor::getFromGUIName(string const & guiname) const
|
|||||||
|
|
||||||
LColor::color LColor::getFromLyXName(string const & lyxname) const
|
LColor::color LColor::getFromLyXName(string const & lyxname) const
|
||||||
{
|
{
|
||||||
|
Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin();
|
||||||
InfoTab::const_iterator ici = infotab.begin();
|
Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end();
|
||||||
InfoTab::const_iterator end = infotab.end();
|
|
||||||
for (; ici != end; ++ici) {
|
for (; ici != end; ++ici) {
|
||||||
if (!compare_ascii_no_case(ici->second.lyxname, lyxname))
|
if (!compare_ascii_no_case(ici->second.lyxname, lyxname))
|
||||||
return ici->first;
|
return ici->first;
|
||||||
@ -202,6 +241,7 @@ LColor::color LColor::getFromLyXName(string const & lyxname) const
|
|||||||
return LColor::inherit;
|
return LColor::inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// The evil global LColor instance
|
// The evil global LColor instance
|
||||||
LColor lcolor;
|
LColor lcolor;
|
||||||
// An equally evil global system LColor instance
|
// An equally evil global system LColor instance
|
||||||
|
31
src/LColor.h
31
src/LColor.h
@ -11,8 +11,6 @@
|
|||||||
#ifndef LCOLOR_H
|
#ifndef LCOLOR_H
|
||||||
#define LCOLOR_H
|
#define LCOLOR_H
|
||||||
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "LString.h"
|
#include "LString.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,7 +33,7 @@
|
|||||||
* - A logical color, such as no color, inherit, math
|
* - A logical color, such as no color, inherit, math
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class LColor // : public boost::noncopyable {
|
class LColor
|
||||||
// made copyable for same reasons as LyXRC was made copyable. See there for
|
// made copyable for same reasons as LyXRC was made copyable. See there for
|
||||||
// explanation.
|
// explanation.
|
||||||
{
|
{
|
||||||
@ -170,6 +168,12 @@ public:
|
|||||||
|
|
||||||
///
|
///
|
||||||
LColor();
|
LColor();
|
||||||
|
///
|
||||||
|
LColor(LColor const &);
|
||||||
|
///
|
||||||
|
~LColor();
|
||||||
|
///
|
||||||
|
void operator=(LColor const &);
|
||||||
/// set the given LyX color to the color defined by the X11 name given
|
/// set the given LyX color to the color defined by the X11 name given
|
||||||
void setColor(LColor::color col, string const & x11name);
|
void setColor(LColor::color col, string const & x11name);
|
||||||
/// set the given LyX color to the color defined by the X11 name given
|
/// set the given LyX color to the color defined by the X11 name given
|
||||||
@ -193,26 +197,9 @@ public:
|
|||||||
LColor::color getFromLyXName(string const & lyxname) const;
|
LColor::color getFromLyXName(string const & lyxname) const;
|
||||||
private:
|
private:
|
||||||
///
|
///
|
||||||
struct information {
|
struct Pimpl;
|
||||||
/// the name as it appears in the GUI
|
|
||||||
string guiname;
|
|
||||||
/// the name used in LaTeX
|
|
||||||
string latexname;
|
|
||||||
/// the name for X11
|
|
||||||
string x11name;
|
|
||||||
/// the name for LyX
|
|
||||||
string lyxname;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// initialise a color entry
|
|
||||||
void fill(LColor::color col, string const & gui,
|
|
||||||
string const & latex, string const & x11,
|
|
||||||
string const & lyx);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
typedef std::map<LColor::color, information> InfoTab;
|
Pimpl * pimpl_;
|
||||||
/// the table of color information
|
|
||||||
InfoTab infotab;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// the current color definitions
|
/// the current color definitions
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include "frontends/Painter.h"
|
#include "frontends/Painter.h"
|
||||||
|
|
||||||
|
#include <map>
|
||||||
#include <boost/scoped_ptr.hpp>
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
|
||||||
// This is only included to provide stuff for the non-public sections
|
// This is only included to provide stuff for the non-public sections
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
|
||||||
|
2003-05-05 André Pönitz <poenitz@gmx.net>
|
||||||
|
|
||||||
|
* insettext.h: add missing #include <map>
|
||||||
|
|
||||||
2003-05-07 Lars Gullik Bjønnes <larsbj@gullik.net>
|
2003-05-07 Lars Gullik Bjønnes <larsbj@gullik.net>
|
||||||
|
|
||||||
* insettext.C (InsetText): parlist cleanup
|
* insettext.C (InsetText): parlist cleanup
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "support/types.h"
|
#include "support/types.h"
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
class Painter;
|
class Painter;
|
||||||
class BufferView;
|
class BufferView;
|
||||||
|
Loading…
Reference in New Issue
Block a user