X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fcursor_slice.h;h=30f0b95888496a413a63a2673fa589aa29192eff;hb=37e82a546392d43f787826b85481a11f2a27af15;hp=303a0e39cddc5c1f02d8a63c2a4c64d1820f15f8;hpb=70d0ba900118ac7e253c1e1969fd7a3d64ec8e03;p=lyx.git diff --git a/src/cursor_slice.h b/src/cursor_slice.h index 303a0e39cd..30f0b95888 100644 --- a/src/cursor_slice.h +++ b/src/cursor_slice.h @@ -17,16 +17,17 @@ #ifndef CURSORSLICE_H #define CURSORSLICE_H -#include -#include - #include "support/types.h" +#include +#include + class BufferView; class InsetBase; class MathInset; class MathArray; class LyXText; +class Paragraph; class UpdatableInset; @@ -42,7 +43,7 @@ public: /// type for cell number in inset typedef size_t idx_type; /// type for paragraph numbers positions within a cell - typedef lyx::paroffset_type par_type; + typedef lyx::pit_type pit_type; /// type for cursor positions within a cell typedef lyx::pos_type pos_type; /// type for row indices @@ -53,64 +54,77 @@ public: /// CursorSlice(); /// - explicit CursorSlice(InsetBase *); - - /// set the paragraph that contains this cursor - void idx(idx_type idx); - /// return the paragraph this cursor is in - idx_type idx() const; - /// return the paragraph this cursor is in - idx_type & idx(); - /// set the paragraph that contains this cursor - void par(par_type par); - /// return the paragraph this cursor is in - par_type par() const; - /// return the paragraph this cursor is in - par_type & par(); - /// set the position within the paragraph - void pos(pos_type pos); + explicit CursorSlice(InsetBase &); + + /// the current inset + InsetBase & inset() const { return *inset_; } + /// return the cell this cursor is in + idx_type idx() const { return idx_; } + /// return the cell this cursor is in + idx_type & idx() { return idx_; } + /// return the last cell in this inset + idx_type lastidx() const { return nargs() - 1; } + /// return the offset of the paragraph this cursor is in + pit_type pit() const { return pit_; } + /// set the offset of the paragraph this cursor is in + pit_type & pit() { return pit_; } + /// increments the paragraph this cursor is in + void incrementPar(); + /// increments the paragraph this cursor is in + void decrementPar(); /// return the position within the paragraph - pos_type pos() const; + pos_type pos() const { return pos_; } /// return the position within the paragraph - pos_type & pos(); + pos_type & pos() { return pos_; } /// return the last position within the paragraph pos_type lastpos() const; + /// return the number of embedded cells + size_t nargs() const; + /// return the number of embedded cells + size_t ncols() const; + /// return the number of embedded cells + size_t nrows() const; /// return the grid row of the current cell row_type row() const; /// return the grid row of the current cell col_type col() const; - /// FIXME - void boundary(bool b); - /// FIXME - bool boundary() const; /// /// texted specific stuff /// + /// see comment for the member + bool boundary() const { return boundary_; } + /// see comment for the member + bool & boundary() { return boundary_; } /// LyXText * text() const; /// UpdatableInset * asUpdatableInset() const; + /// + Paragraph & paragraph(); + /// + Paragraph const & paragraph() const; /// /// mathed specific stuff /// /// returns cell corresponding to this position MathArray & cell() const; - /// gets screen position of the thing - void getScreenPos(int & x, int & y) const; /// MathInset * asMathInset() const; /// friend std::ostream & operator<<(std::ostream &, CursorSlice const &); public: - /// pointer to an inset + /// pointer to 'owning' inset. This is some kind of cache. InsetBase * inset_; +private: /// cell index of a position in this inset idx_type idx_; /// paragraph in this cell (used by texted) - par_type par_; + pit_type pit_; + /// true of 'pit' was properly initialized + bool pit_valid_; /// position in this cell pos_type pos_; /** @@ -139,21 +153,7 @@ bool operator!=(CursorSlice const &, CursorSlice const &); bool operator<(CursorSlice const &, CursorSlice const &); /// test for order bool operator>(CursorSlice const &, CursorSlice const &); - -#include - - -// this is used for traversing math insets -typedef std::vector CursorBase; -/// move on one step -void increment(CursorBase &); -/// -CursorBase ibegin(InsetBase * p); -/// -CursorBase iend(InsetBase * p); -/// -CursorSlice & cursorTip(BufferView &); - - +/// test for order +bool operator<=(CursorSlice const &, CursorSlice const &); #endif