lyx_mirror/src/LColor.h
Angus Leeming 47b06816be Add LColor::graphicsbg and use it in the graphics and figure insets.
Ensures that a figure with a transparent colour can be viewed
easily if the LyX screen's background colour is dark.

Prevent deletion of the image file if no conversion is required.

This patch works like a charm with the (old) figinset. When testing
the graphics inset, however, I find that colour "None" in an XPM file
is displayed as black. I have no idea why. This appears to be true of
some other graphics viewers also. E.g., KDE 2's pixie displays "None"
as black but the venerable xv works fine.

Maybe it's my version of the xpm library, but v3.4.11 appears to be
right up to date.

Can people test on their machines and/or offer suggestions here?
Angus

p.s. You can test with the XPM files in lib/images. They will no longer
be deleted if you load them into LyX!

A.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2777 a592a061-630c-0410-9148-cb99ea01b6c8
2001-09-20 13:16:17 +00:00

222 lines
4.4 KiB
C++

// -*- C++ -*-
/* This file is part of
* ======================================================
*
* LyX, The Document Processor
*
* Copyright 1998-2001 The LyX Team
*
*======================================================*/
#ifndef LCOLOR_H
#define LCOLOR_H
#ifdef __GNUG__
#pragma interface
#endif
#include <map>
#include "LString.h"
/**
This is a stateless class.
It has one basic purposes:
To serve as a color-namespace container (the Color enum).
*/
/**
* \class LColor
*
* A class holding color definitions and associated names for
* LaTeX, X11, the GUI, and LyX internally.
*
* A color can be one of the following kinds:
*
* - A real, predefined color, such as black, white, red or green.
* - A logical color, such as no color, inherit, math
*/
class LColor // : public boost::noncopyable {
// made copyable for same reasons as LyXRC was made copyable. See there for
// explanation.
{
public:
/// Names of colors, including all logical colors
enum color {
/// No particular color---clear or default
none,
/// The different text colors
black,
///
white,
///
red,
///
green,
///
blue,
///
cyan,
///
magenta,
///
yellow,
// Needed interface colors
/// Cursor color
cursor,
/// Background color
background,
/// Foreground color
foreground,
/// Background color of selected text
selection,
/// Text color in LaTeX mode
latex,
/// Text color for notes
note,
/// Background color of notes
notebg,
/// Color for the depth bars in the margin
depthbar,
/// Color for marking foreign language words
language,
/// Text color for command insets
command,
/// Background color for command insets
commandbg,
/// Frame color for command insets
commandframe,
/// Special chars text color
special,
/// Graphics inset background color
graphicsbg,
/// Math inset text color
math,
/// Math inset background color
mathbg,
/// Macro math inset background color
mathmacrobg,
/// Math inset frame color
mathframe,
/// Math cursor color
mathcursor,
/// Math line color
mathline,
/// caption frame color
captionframe,
/// collapsable insets text
collapsable,
/// collapsable insets frame
collapsableframe,
/// Inset marker background color
insetbg,
/// Inset marker frame color
insetframe,
/// Error box text color
error,
/// EOL marker color
eolmarker,
/// Appendix line color
appendixline,
/// VFill line color
vfillline,
/// Top and bottom line color
topline,
/// Table line color
tabularline,
/// Table line color
tabularonoffline,
/// Bottom area color
bottomarea,
/// Page break color
pagebreak,
// FIXME: why are the next four separate ??
/// Color used for top of boxes
top,
/// Color used for bottom of boxes
bottom,
/// Color used for left side of boxes
left,
/// Color used for right side of boxes
right,
/// Color used for bottom background
buttonbg,
// Logical attributes
/// Color is inherited
inherit,
/// For ignoring updates of a color
ignore
};
///
LColor();
/// set the given LyX color to the color defined by the X11 name given
void setColor(LColor::color col, string const & x11name);
/// set the given LyX color to the color defined by the X11 name given
bool setColor(string const & lyxname, string const & x11name);
/// Get GUI name of color
string const getGUIName(LColor::color c) const;
/// Get X11 name of color
string const getX11Name(LColor::color c) const;
/// Get LaTeX name of color
string const getLaTeXName(LColor::color c) const;
/// Get LyX name of color
string const getLyXName(LColor::color c) const;
/// get the color from the GUI name
LColor::color getFromGUIName(string const & guiname) const;
/// get the color from the LyX name
LColor::color getFromLyXName(string const & lyxname) const;
private:
///
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(LColor::color col, string const & gui,
string const & latex, string const & x11,
string const & lyx);
///
typedef std::map<LColor::color, information> InfoTab;
/// the table of color information
InfoTab infotab;
};
/// the current color definitions
extern LColor lcolor;
/// the system color definitions
extern LColor system_lcolor;
#endif