mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-23 00:38:01 +00:00
* support/types.h: introduce the char_type type
* paragraph.h: make value_type point at char_type * other files: change some bald 'char' to 'char_type' git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13609 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
cf4293824f
commit
618ca28af6
@ -52,6 +52,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
using lyx::char_type;
|
||||||
using lyx::pit_type;
|
using lyx::pit_type;
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
@ -637,7 +638,7 @@ void LCursor::plainErase()
|
|||||||
|
|
||||||
void LCursor::markInsert()
|
void LCursor::markInsert()
|
||||||
{
|
{
|
||||||
insert(char(0));
|
insert(char_type(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -657,12 +658,12 @@ void LCursor::plainInsert(MathAtom const & t)
|
|||||||
void LCursor::insert(string const & str)
|
void LCursor::insert(string const & str)
|
||||||
{
|
{
|
||||||
for_each(str.begin(), str.end(),
|
for_each(str.begin(), str.end(),
|
||||||
boost::bind(static_cast<void(LCursor::*)(char)>
|
boost::bind(static_cast<void(LCursor::*)(char_type)>
|
||||||
(&LCursor::insert), this, _1));
|
(&LCursor::insert), this, _1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LCursor::insert(char c)
|
void LCursor::insert(char_type c)
|
||||||
{
|
{
|
||||||
//lyxerr << "LCursor::insert char '" << c << "'" << endl;
|
//lyxerr << "LCursor::insert char '" << c << "'" << endl;
|
||||||
BOOST_ASSERT(!empty());
|
BOOST_ASSERT(!empty());
|
||||||
|
@ -112,7 +112,7 @@ public:
|
|||||||
/// insert an inset
|
/// insert an inset
|
||||||
void insert(InsetBase *);
|
void insert(InsetBase *);
|
||||||
/// insert a single char
|
/// insert a single char
|
||||||
void insert(char c);
|
void insert(lyx::char_type c);
|
||||||
/// insert a string
|
/// insert a string
|
||||||
void insert(std::string const & str);
|
void insert(std::string const & str);
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
#include "LColor.h"
|
#include "LColor.h"
|
||||||
|
|
||||||
|
#include "support/types.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
@ -152,7 +154,7 @@ public:
|
|||||||
|
|
||||||
/// draw a char at position x, y (y is the baseline)
|
/// draw a char at position x, y (y is the baseline)
|
||||||
virtual void text(int x, int y,
|
virtual void text(int x, int y,
|
||||||
char c, LyXFont const & f) = 0;
|
lyx::char_type c, LyXFont const & f) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draw a string and enclose it inside a rectangle. If
|
* Draw a string and enclose it inside a rectangle. If
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
#ifndef FONT_METRICS_H
|
#ifndef FONT_METRICS_H
|
||||||
#define FONT_METRICS_H
|
#define FONT_METRICS_H
|
||||||
|
|
||||||
|
#include "support/types.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
@ -51,25 +53,25 @@ namespace font_metrics {
|
|||||||
return maxAscent(f) + maxDescent(f);
|
return maxAscent(f) + maxDescent(f);
|
||||||
}
|
}
|
||||||
/// return the ascent of the char in the font
|
/// return the ascent of the char in the font
|
||||||
int ascent(char c, LyXFont const & f);
|
int ascent(lyx::char_type c, LyXFont const & f);
|
||||||
/// return the descent of the char in the font
|
/// return the descent of the char in the font
|
||||||
int descent(char c, LyXFont const & f);
|
int descent(lyx::char_type c, LyXFont const & f);
|
||||||
/// return the descent of the char in the font
|
/// return the descent of the char in the font
|
||||||
inline int height(char c, LyXFont const & f) {
|
inline int height(lyx::char_type c, LyXFont const & f) {
|
||||||
return ascent(c, f) + descent(c, f);
|
return ascent(c, f) + descent(c, f);
|
||||||
}
|
}
|
||||||
/// return the left bearing of the char in the font
|
/// return the left bearing of the char in the font
|
||||||
int lbearing(char c, LyXFont const & f);
|
int lbearing(lyx::char_type c, LyXFont const & f);
|
||||||
/// return the right bearing of the char in the font
|
/// return the right bearing of the char in the font
|
||||||
int rbearing(char c, LyXFont const & f);
|
int rbearing(lyx::char_type c, LyXFont const & f);
|
||||||
/// return the inner width of the char in the font
|
/// return the inner width of the char in the font
|
||||||
inline int center(char c, LyXFont const & f) {
|
inline int center(lyx::char_type c, LyXFont const & f) {
|
||||||
return (rbearing(c, f) - lbearing(c, f)) / 2;
|
return (rbearing(c, f) - lbearing(c, f)) / 2;
|
||||||
}
|
}
|
||||||
/// return the width of the string in the font
|
/// return the width of the string in the font
|
||||||
int width(char const * s, size_t n, LyXFont const & f);
|
int width(char const * s, size_t n, LyXFont const & f);
|
||||||
/// return the width of the char in the font
|
/// return the width of the char in the font
|
||||||
inline int width(char c, LyXFont const & f) {
|
inline int width(lyx::char_type c, LyXFont const & f) {
|
||||||
return width(&c, 1, f);
|
return width(&c, 1, f);
|
||||||
}
|
}
|
||||||
/// return the width of the string in the font
|
/// return the width of the string in the font
|
||||||
|
@ -181,7 +181,7 @@ void QLPainter::text(int x, int y, string const & s, LyXFont const & f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void QLPainter::text(int x, int y, char c, LyXFont const & f)
|
void QLPainter::text(int x, int y, lyx::char_type c, LyXFont const & f)
|
||||||
{
|
{
|
||||||
char s[2] = { c, '\0' };
|
char s[2] = { c, '\0' };
|
||||||
return text(x, y, s, 1, f);
|
return text(x, y, s, 1, f);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
|
||||||
|
using lyx::char_type;
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ int maxDescent(LyXFont const & f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ascent(char c, LyXFont const & f)
|
int ascent(char_type c, LyXFont const & f)
|
||||||
{
|
{
|
||||||
if (!lyx_gui::use_gui)
|
if (!lyx_gui::use_gui)
|
||||||
return 1;
|
return 1;
|
||||||
@ -58,7 +59,7 @@ int ascent(char c, LyXFont const & f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int descent(char c, LyXFont const & f)
|
int descent(char_type c, LyXFont const & f)
|
||||||
{
|
{
|
||||||
if (!lyx_gui::use_gui)
|
if (!lyx_gui::use_gui)
|
||||||
return 1;
|
return 1;
|
||||||
@ -74,7 +75,7 @@ int descent(char c, LyXFont const & f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int lbearing(char c, LyXFont const & f)
|
int lbearing(char_type c, LyXFont const & f)
|
||||||
{
|
{
|
||||||
if (!lyx_gui::use_gui)
|
if (!lyx_gui::use_gui)
|
||||||
return 1;
|
return 1;
|
||||||
@ -82,7 +83,7 @@ int lbearing(char c, LyXFont const & f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int rbearing(char c, LyXFont const & f)
|
int rbearing(char_type c, LyXFont const & f)
|
||||||
{
|
{
|
||||||
if (!lyx_gui::use_gui)
|
if (!lyx_gui::use_gui)
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -108,7 +108,7 @@ public:
|
|||||||
std::string getStringToIndex(LCursor const & cur);
|
std::string getStringToIndex(LCursor const & cur);
|
||||||
|
|
||||||
/// insert a character at cursor position
|
/// insert a character at cursor position
|
||||||
void insertChar(LCursor & cur, char c);
|
void insertChar(LCursor & cur, lyx::char_type c);
|
||||||
/// insert an inset at cursor position
|
/// insert an inset at cursor position
|
||||||
void insertInset(LCursor & cur, InsetBase * inset);
|
void insertInset(LCursor & cur, InsetBase * inset);
|
||||||
|
|
||||||
|
@ -1816,11 +1816,11 @@ unsigned char Paragraph::transformChar(unsigned char c, pos_type pos) const
|
|||||||
else
|
else
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
unsigned char const prev_char = pos > 0 ? getChar(pos - 1) : ' ';
|
value_type const prev_char = pos > 0 ? getChar(pos - 1) : ' ';
|
||||||
unsigned char next_char = ' ';
|
value_type next_char = ' ';
|
||||||
|
|
||||||
for (pos_type i = pos + 1, end = size(); i < end; ++i) {
|
for (pos_type i = pos + 1, end = size(); i < end; ++i) {
|
||||||
unsigned char const par_char = getChar(i);
|
value_type const par_char = getChar(i);
|
||||||
if (!Encodings::isComposeChar_arabic(par_char)) {
|
if (!Encodings::isComposeChar_arabic(par_char)) {
|
||||||
next_char = par_char;
|
next_char = par_char;
|
||||||
break;
|
break;
|
||||||
|
@ -70,9 +70,10 @@ public:
|
|||||||
/// try getInset() and crash. We should fix
|
/// try getInset() and crash. We should fix
|
||||||
/// all these places.
|
/// all these places.
|
||||||
META_INSET = 1
|
META_INSET = 1
|
||||||
|
//META_INSET = 0x200001 // above 0x10ffff, for ucs-4
|
||||||
};
|
};
|
||||||
///
|
///
|
||||||
typedef char value_type;
|
typedef lyx::char_type value_type;
|
||||||
///
|
///
|
||||||
typedef lyx::depth_type depth_type;
|
typedef lyx::depth_type depth_type;
|
||||||
///
|
///
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include <boost/crc.hpp>
|
#include <boost/crc.hpp>
|
||||||
|
|
||||||
|
using lyx::char_type;
|
||||||
using lyx::pos_type;
|
using lyx::pos_type;
|
||||||
using lyx::pit_type;
|
using lyx::pit_type;
|
||||||
|
|
||||||
@ -186,7 +187,7 @@ void RowPainter::paintHebrewComposeChar(pos_type & vpos, LyXFont const & font)
|
|||||||
string str;
|
string str;
|
||||||
|
|
||||||
// first char
|
// first char
|
||||||
char c = par_.getChar(pos);
|
char_type c = par_.getChar(pos);
|
||||||
str += c;
|
str += c;
|
||||||
++vpos;
|
++vpos;
|
||||||
|
|
||||||
@ -219,7 +220,7 @@ void RowPainter::paintArabicComposeChar(pos_type & vpos, LyXFont const & font)
|
|||||||
string str;
|
string str;
|
||||||
|
|
||||||
// first char
|
// first char
|
||||||
char c = par_.getChar(pos);
|
char_type c = par_.getChar(pos);
|
||||||
c = par_.transformChar(c, pos);
|
c = par_.transformChar(c, pos);
|
||||||
str += c;
|
str += c;
|
||||||
++vpos;
|
++vpos;
|
||||||
@ -268,7 +269,7 @@ void RowPainter::paintChars(pos_type & vpos, LyXFont font,
|
|||||||
if (prev_change != par_.lookupChange(pos))
|
if (prev_change != par_.lookupChange(pos))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
char c = par_.getChar(pos);
|
char_type c = par_.getChar(pos);
|
||||||
|
|
||||||
if (!isPrintableNonspace(c))
|
if (!isPrintableNonspace(c))
|
||||||
break;
|
break;
|
||||||
@ -327,7 +328,7 @@ void RowPainter::paintFromPos(pos_type & vpos)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// usual characters, no insets
|
// usual characters, no insets
|
||||||
char const c = par_.getChar(pos);
|
char_type const c = par_.getChar(pos);
|
||||||
|
|
||||||
// special case languages
|
// special case languages
|
||||||
std::string const & lang = orig_font.language()->lang();
|
std::string const & lang = orig_font.language()->lang();
|
||||||
|
@ -20,6 +20,12 @@
|
|||||||
|
|
||||||
namespace lyx {
|
namespace lyx {
|
||||||
|
|
||||||
|
// The type used to hold characters in paragraphs
|
||||||
|
//typedef uint32_t char_type; // Possibly the ucs-4 type we will use
|
||||||
|
//typedef wchar_t char_type; // The wide char type CJK-LyX uses
|
||||||
|
typedef char char_type; // Current narrow char type in use
|
||||||
|
|
||||||
|
|
||||||
/// a type for positions used in paragraphs
|
/// a type for positions used in paragraphs
|
||||||
// needs to be signed for a while to hold the special value -1 that is
|
// needs to be signed for a while to hold the special value -1 that is
|
||||||
// used there
|
// used there
|
||||||
|
13
src/text.C
13
src/text.C
@ -75,6 +75,7 @@
|
|||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
using lyx::char_type;
|
||||||
using lyx::pit_type;
|
using lyx::pit_type;
|
||||||
using lyx::pos_type;
|
using lyx::pos_type;
|
||||||
using lyx::word_location;
|
using lyx::word_location;
|
||||||
@ -424,7 +425,7 @@ int LyXText::singleWidth(Paragraph const & par, pos_type pos) const
|
|||||||
|
|
||||||
|
|
||||||
int LyXText::singleWidth(Paragraph const & par,
|
int LyXText::singleWidth(Paragraph const & par,
|
||||||
pos_type pos, char c, LyXFont const & font) const
|
pos_type pos, char_type c, LyXFont const & font) const
|
||||||
{
|
{
|
||||||
// The most common case is handled first (Asger)
|
// The most common case is handled first (Asger)
|
||||||
if (isPrintable(c)) {
|
if (isPrintable(c)) {
|
||||||
@ -710,7 +711,7 @@ void LyXText::rowBreakPoint(pit_type const pit, Row & row) const
|
|||||||
pos_type point = end;
|
pos_type point = end;
|
||||||
pos_type i = pos;
|
pos_type i = pos;
|
||||||
for ( ; i < end; ++i, ++fi) {
|
for ( ; i < end; ++i, ++fi) {
|
||||||
char const c = par.getChar(i);
|
char_type const c = par.getChar(i);
|
||||||
int thiswidth = singleWidth(par, i, c, *fi);
|
int thiswidth = singleWidth(par, i, c, *fi);
|
||||||
|
|
||||||
// add the auto-hfill from label end to the body
|
// add the auto-hfill from label end to the body
|
||||||
@ -803,7 +804,7 @@ void LyXText::setRowWidth(pit_type const pit, Row & row) const
|
|||||||
w -= singleWidth(par, i - 1);
|
w -= singleWidth(par, i - 1);
|
||||||
w = max(w, labelEnd(pit));
|
w = max(w, labelEnd(pit));
|
||||||
}
|
}
|
||||||
char const c = par.getChar(i);
|
char_type const c = par.getChar(i);
|
||||||
w += singleWidth(par, i, c, *fi);
|
w += singleWidth(par, i, c, *fi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1112,7 +1113,7 @@ void LyXText::breakParagraph(LCursor & cur, bool keep_layout)
|
|||||||
|
|
||||||
// insert a character, moves all the following breaks in the
|
// insert a character, moves all the following breaks in the
|
||||||
// same Paragraph one to the right and make a rebreak
|
// same Paragraph one to the right and make a rebreak
|
||||||
void LyXText::insertChar(LCursor & cur, char c)
|
void LyXText::insertChar(LCursor & cur, char_type c)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this == cur.text());
|
BOOST_ASSERT(this == cur.text());
|
||||||
BOOST_ASSERT(c != Paragraph::META_INSET);
|
BOOST_ASSERT(c != Paragraph::META_INSET);
|
||||||
@ -1145,7 +1146,7 @@ void LyXText::insertChar(LCursor & cur, char c)
|
|||||||
number(cur); // Set current_font.number to ON
|
number(cur); // Set current_font.number to ON
|
||||||
|
|
||||||
if (cur.pos() != 0) {
|
if (cur.pos() != 0) {
|
||||||
char const c = par.getChar(cur.pos() - 1);
|
char_type const c = par.getChar(cur.pos() - 1);
|
||||||
if (contains(number_unary_operators, c) &&
|
if (contains(number_unary_operators, c) &&
|
||||||
(cur.pos() == 1
|
(cur.pos() == 1
|
||||||
|| par.isSeparator(cur.pos() - 2)
|
|| par.isSeparator(cur.pos() - 2)
|
||||||
@ -1552,7 +1553,7 @@ void LyXText::changeCase(LCursor & cur, LyXText::TextCase action)
|
|||||||
pos = 0;
|
pos = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
unsigned char c = pars_[pit].getChar(pos);
|
char_type c = pars_[pit].getChar(pos);
|
||||||
if (c != Paragraph::META_INSET) {
|
if (c != Paragraph::META_INSET) {
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case text_lowercase:
|
case text_lowercase:
|
||||||
|
@ -965,7 +965,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
|||||||
lyx::cap::replaceSelection(cur);
|
lyx::cap::replaceSelection(cur);
|
||||||
Paragraph & par = cur.paragraph();
|
Paragraph & par = cur.paragraph();
|
||||||
lyx::pos_type pos = cur.pos();
|
lyx::pos_type pos = cur.pos();
|
||||||
char c;
|
lyx::char_type c;
|
||||||
if (pos == 0)
|
if (pos == 0)
|
||||||
c = ' ';
|
c = ' ';
|
||||||
else if (cur.prevInset() && cur.prevInset()->isSpace())
|
else if (cur.prevInset() && cur.prevInset()->isSpace())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user