mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-21 23:09:40 +00:00
FontIterator is only used in TextMetrics.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24013 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
fc02a810b9
commit
2530fdb9ab
@ -1,55 +0,0 @@
|
||||
/**
|
||||
* \file src/FontIterator.cpp
|
||||
* This file is part of LyX, the document processor.
|
||||
* Licence details can be found in the file COPYING.
|
||||
*
|
||||
* \author Alfredo Braunstein
|
||||
*
|
||||
* Full author contact details are available in file CREDITS.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "FontIterator.h"
|
||||
|
||||
#include "TextMetrics.h"
|
||||
#include "Paragraph.h"
|
||||
|
||||
|
||||
namespace lyx {
|
||||
|
||||
|
||||
FontIterator::FontIterator(TextMetrics const & tm,
|
||||
Paragraph const & par, pit_type pit, pos_type pos)
|
||||
: tm_(tm), par_(par), pit_(pit), pos_(pos),
|
||||
font_(tm.displayFont(pit, pos)),
|
||||
endspan_(par.fontSpan(pos).last),
|
||||
bodypos_(par.beginOfBody())
|
||||
{}
|
||||
|
||||
|
||||
Font const & FontIterator::operator*() const
|
||||
{
|
||||
return font_;
|
||||
}
|
||||
|
||||
|
||||
Font * FontIterator::operator->()
|
||||
{
|
||||
return &font_;
|
||||
}
|
||||
|
||||
|
||||
FontIterator & FontIterator::operator++()
|
||||
{
|
||||
++pos_;
|
||||
if (pos_ > endspan_ || pos_ == bodypos_) {
|
||||
font_ = tm_.displayFont(pit_, pos_);
|
||||
endspan_ = par_.fontSpan(pos_).last;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
} // namespace lyx
|
@ -1,67 +0,0 @@
|
||||
// -*- C++ -*-
|
||||
/**
|
||||
* \file src/FontIterator.h
|
||||
* This file is part of LyX, the document processor.
|
||||
* Licence details can be found in the file COPYING.
|
||||
*
|
||||
* \author Alfredo Braunstein
|
||||
*
|
||||
* Full author contact details are available in file CREDITS.
|
||||
*
|
||||
*
|
||||
* Calling Text::getFont is slow. While rebreaking we scan a
|
||||
* paragraph from left to right calling getFont for every char. This
|
||||
* simple class address this problem by hidding an optimization trick
|
||||
* (not mine btw -AB): the font is reused in the whole font span. The
|
||||
* class handles transparently the "hidden" (not part of the fontlist)
|
||||
* label font (as getFont does).
|
||||
*/
|
||||
|
||||
#ifndef FONTITERATOR_H
|
||||
#define FONTITERATOR_H
|
||||
|
||||
#include "Font.h"
|
||||
|
||||
#include "support/types.h"
|
||||
|
||||
|
||||
namespace lyx {
|
||||
|
||||
class Paragraph;
|
||||
class TextMetrics;
|
||||
|
||||
|
||||
class FontIterator
|
||||
{
|
||||
public:
|
||||
///
|
||||
FontIterator(TextMetrics const & tm,
|
||||
Paragraph const & par, pit_type pit, pos_type pos);
|
||||
///
|
||||
Font const & operator*() const;
|
||||
///
|
||||
FontIterator & operator++();
|
||||
///
|
||||
Font * operator->();
|
||||
|
||||
private:
|
||||
///
|
||||
TextMetrics const & tm_;
|
||||
///
|
||||
Paragraph const & par_;
|
||||
///
|
||||
pit_type pit_;
|
||||
///
|
||||
pos_type pos_;
|
||||
///
|
||||
Font font_;
|
||||
///
|
||||
pos_type endspan_;
|
||||
///
|
||||
pos_type bodypos_;
|
||||
};
|
||||
|
||||
|
||||
} // namespace lyx
|
||||
|
||||
#endif // FONTITERATOR_H
|
@ -107,7 +107,6 @@ SOURCEFILESCORE = \
|
||||
Floating.cpp \
|
||||
FloatList.cpp \
|
||||
FontInfo.cpp \
|
||||
FontIterator.cpp \
|
||||
FontList.cpp \
|
||||
Font.cpp \
|
||||
Format.cpp \
|
||||
@ -207,7 +206,6 @@ HEADERFILESCORE = \
|
||||
Font.h \
|
||||
FontEnums.h \
|
||||
FontInfo.h \
|
||||
FontIterator.h \
|
||||
FontList.h \
|
||||
Format.h \
|
||||
FuncCode.h \
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "ErrorList.h"
|
||||
#include "FuncRequest.h"
|
||||
#include "factory.h"
|
||||
#include "FontIterator.h"
|
||||
#include "Language.h"
|
||||
#include "Length.h"
|
||||
#include "Lexer.h"
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "CoordCache.h"
|
||||
#include "Cursor.h"
|
||||
#include "CutAndPaste.h"
|
||||
#include "FontIterator.h"
|
||||
#include "FuncRequest.h"
|
||||
#include "InsetList.h"
|
||||
#include "Layout.h"
|
||||
@ -694,6 +693,63 @@ int TextMetrics::labelEnd(pit_type const pit) const
|
||||
return leftMargin(max_width_, pit);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
/**
|
||||
* Calling Text::getFont is slow. While rebreaking we scan a
|
||||
* paragraph from left to right calling getFont for every char. This
|
||||
* simple class address this problem by hidding an optimization trick
|
||||
* (not mine btw -AB): the font is reused in the whole font span. The
|
||||
* class handles transparently the "hidden" (not part of the fontlist)
|
||||
* label font (as getFont does).
|
||||
**/
|
||||
class FontIterator
|
||||
{
|
||||
public:
|
||||
///
|
||||
FontIterator(TextMetrics const & tm,
|
||||
Paragraph const & par, pit_type pit, pos_type pos)
|
||||
: tm_(tm), par_(par), pit_(pit), pos_(pos),
|
||||
font_(tm.displayFont(pit, pos)),
|
||||
endspan_(par.fontSpan(pos).last),
|
||||
bodypos_(par.beginOfBody())
|
||||
{}
|
||||
|
||||
///
|
||||
Font const & operator*() const { return font_; }
|
||||
|
||||
///
|
||||
FontIterator & operator++()
|
||||
{
|
||||
++pos_;
|
||||
if (pos_ > endspan_ || pos_ == bodypos_) {
|
||||
font_ = tm_.displayFont(pit_, pos_);
|
||||
endspan_ = par_.fontSpan(pos_).last;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
///
|
||||
Font * operator->() { return &font_; }
|
||||
|
||||
private:
|
||||
///
|
||||
TextMetrics const & tm_;
|
||||
///
|
||||
Paragraph const & par_;
|
||||
///
|
||||
pit_type pit_;
|
||||
///
|
||||
pos_type pos_;
|
||||
///
|
||||
Font font_;
|
||||
///
|
||||
pos_type endspan_;
|
||||
///
|
||||
pos_type bodypos_;
|
||||
};
|
||||
|
||||
} // anon namespace
|
||||
|
||||
pit_type TextMetrics::rowBreakPoint(int width, pit_type const pit,
|
||||
pit_type pos) const
|
||||
|
Loading…
x
Reference in New Issue
Block a user