lyx_mirror/src/Bullet.h
2022-03-05 09:00:47 +01:00

132 lines
2.4 KiB
C++

// -*- C++ -*-
/**
* \file Bullet.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
* \author Allan Rae
*
* Full author contact details are available in file CREDITS.
*/
#ifndef BULLET_H
#define BULLET_H
#include "FontEnums.h"
#include "support/docstring.h"
namespace lyx {
///
class Bullet {
public:
///
Bullet(int f = -1, int c = -1, int s = -1);
///
explicit Bullet(docstring const &);
///
void setCharacter(int);
///
void setFont(int);
///
void setSize(int);
///
void setText(docstring const &);
///
int getCharacter() const;
///
int getFont() const;
///
int getSize() const;
///
FontSize getFontSize() const;
/// The text to be output
docstring const & getText() const;
/// The label displayed in the workarea
docstring const & getLabel() const;
///
Bullet & operator=(Bullet const &);
///
friend bool operator==(Bullet const &, Bullet const &);
///
static docstring const bulletEntry(int, int);
protected:
///
void testInvariant() const;
private:
/**
This enum makes adding additional panels or changing panel sizes
easier. Since you only need change these values for all tests to
be correct for the new values.
Note: MAX means the size of the array so to test you need:
(x < MAX) *not* (x <= MAX)
*/
enum {
///
MIN = -1,
///
FONTMAX = 6,
///
CHARMAX = 36,
///
SIZEMAX = 10
};
///
void generateText() const;
///
static docstring const bulletSize(int);
///
static FontSize bulletFontSize(int);
///
static docstring const bulletLabel(int, int);
///
int font;
///
int character;
///
int size;
// size, character and font are array indices to access
// the predefined arrays of LaTeX equivalent strings.
/** flag indicates if user has control of text (1)
or if I can use it to generate strings (0)
or have already (-1)
*/
mutable short user_text;
//NOTE: Arranging these four shorts above to be together
// like this should ensure they are in a single cache line
/** text may contain a user-defined LaTeX symbol command
or one generated internally from the font, character
and size settings.
*/
mutable docstring text;
mutable docstring label;
};
inline
bool operator!=(Bullet const & b1, Bullet const & b2)
{
return !(b1 == b2);
}
///
extern
Bullet const ITEMIZE_DEFAULTS[];
} // namespace lyx
#endif /* BULLET_H_ */