X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph_pimpl.h;h=c504bc85aa806a0ceb5dda37ce001d2fa1334662;hb=98c966c64594611e469313314abd1e59524adb4a;hp=628f20d5e9e976d4055674968a438f2f245a4280;hpb=7521b5d20f42102cf444e3fd8718a088a60d0098;p=lyx.git diff --git a/src/paragraph_pimpl.h b/src/paragraph_pimpl.h index 628f20d5e9..c504bc85aa 100644 --- a/src/paragraph_pimpl.h +++ b/src/paragraph_pimpl.h @@ -1,9 +1,9 @@ // -*- C++ -*- /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor - * + * * Copyright 1995 Matthias Ettrich * Copyright 1995-2001 The LyX Team. * @@ -18,15 +18,21 @@ #include "paragraph.h" #include "ParagraphParameters.h" + #include +class LyXLayout; + struct Paragraph::Pimpl { + /// + typedef std::vector TextContainer; + /// Pimpl(Paragraph * owner); /// Copy constructor Pimpl(Pimpl const &, Paragraph * owner, bool same_ids = false); /// - Paragraph::size_type size() const { + lyx::pos_type size() const { return text.size(); } /// @@ -34,20 +40,18 @@ struct Paragraph::Pimpl { /// void setContentsFromPar(Paragraph const * par); /// - Paragraph::value_type - getChar(Paragraph::size_type pos) const; + value_type getChar(lyx::pos_type pos) const; /// - void setChar(Paragraph::size_type pos, Paragraph::value_type c); + void setChar(lyx::pos_type pos, value_type c); /// - void insertChar(Paragraph::size_type pos, - Paragraph::value_type c, - LyXFont const & font); + void insertChar(lyx::pos_type pos, value_type c, LyXFont const & font); /// - void insertInset(Paragraph::size_type pos, - Inset * inset, - LyXFont const & font); + void insertInset(lyx::pos_type pos, Inset * inset, LyXFont const & font); /// - void erase(Paragraph::size_type pos); + void erase(lyx::pos_type pos); + /// + LyXFont const realizeFont(LyXFont const & font, + BufferParams const & bparams) const; /// Inset * inset_owner; /// @@ -59,8 +63,7 @@ struct Paragraph::Pimpl { struct matchIT { /// used by lower_bound and upper_bound inline - int operator()(Paragraph::InsetTable const & a, - Paragraph::InsetTable const & b) const { + int operator()(InsetTable const & a, InsetTable const & b) const { return a.pos < b.pos; } }; @@ -77,29 +80,29 @@ struct Paragraph::Pimpl { */ struct FontTable { /// - FontTable(size_type p, LyXFont const & f) + FontTable(lyx::pos_type p, LyXFont const & f) : pos_(p) { font_ = container.get(f); } /// - size_type pos() const { return pos_; } + lyx::pos_type pos() const { return pos_; } /// - void pos(size_type p) { pos_ = p; } + void pos(lyx::pos_type p) { pos_ = p; } /// LyXFont const & font() const { return *font_; } /// void font(LyXFont const & f) { font_ = container.get(f);} private: /// End position of paragraph this font attribute covers - size_type pos_; + lyx::pos_type pos_; /** Font. Interpretation of the font values: - If a value is LyXFont::INHERIT_*, it means that the font + If a value is LyXFont::INHERIT_*, it means that the font attribute is inherited from either the layout of this - paragraph or, in the case of nested paragraphs, from the - layout in the environment one level up until completely + paragraph or, in the case of nested paragraphs, from the + layout in the environment one level up until completely resolved. - The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT + The values LyXFont::IGNORE_* and LyXFont::TOGGLE are NOT allowed in these font tables. */ boost::shared_ptr font_; @@ -112,8 +115,7 @@ struct Paragraph::Pimpl { struct matchFT { /// used by lower_bound and upper_bound inline - int operator()(Paragraph::Pimpl::FontTable const & a, - Paragraph::Pimpl::FontTable const & b) const { + int operator()(FontTable const & a, FontTable const & b) const { return a.pos() < b.pos(); } }; @@ -127,7 +129,7 @@ struct Paragraph::Pimpl { std::ostream &, TexRow & texrow); /// void simpleTeXBlanks(std::ostream &, TexRow & texrow, - size_type const i, + lyx::pos_type const i, int & column, LyXFont const & font, LyXLayout const & style); /// @@ -137,7 +139,7 @@ struct Paragraph::Pimpl { LyXFont & font, LyXFont & running_font, LyXFont & basefont, bool & open_font, LyXLayout const & style, - size_type & i, + lyx::pos_type & i, int & column, value_type const c); /// Paragraph * getParFromID(int id) const; @@ -148,6 +150,10 @@ struct Paragraph::Pimpl { /// ParagraphParameters params; private: + /// match a string against a particular point in the paragraph + bool isTextAt(BufferParams const &, + string const & str, lyx::pos_type pos); + /// Who owns us? Paragraph * owner_; ///