lyx_mirror/src/lyxcursor.h
Jürgen Vigna ba21e6498c Fix for wrong cursor.x pos when before a fullRow inset (added ix), small
perfomance fix in LyXText's raw drawing, fix for adding paragraph in insets
when not allowed to do so (bug in Michaels list not on lyxbugs.).


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3990 a592a061-630c-0410-9148-cb99ea01b6c8
2002-04-12 15:59:03 +00:00

136 lines
2.1 KiB
C++

// -*- C++ -*-
/* This file is part of
* ======================================================
*
* LyX, The Document Processor
*
* Copyright 1995 Matthias Ettrich
* Copyright 1995-2001 The LyX Team.
*
* ====================================================== */
#ifndef LYXCURSOR_H
#define LYXCURSOR_H
#ifdef __GNUG__
#pragma interface
#endif
#include "support/types.h"
class Paragraph;
class Row;
/** All these variables should be explained. Matthias?
*/
class LyXCursor {
public:
///
LyXCursor();
///
void par(Paragraph * p);
///
Paragraph * par() const;
///
void pos(lyx::pos_type p);
///
lyx::pos_type pos() const;
///
void boundary(bool b);
///
bool boundary() const;
///
void x(int i);
///
int x() const;
///
void ix(int i);
///
int ix() const;
///
void x_fix(int i);
///
int x_fix() const;
///
void y(int i);
///
int y() const;
///
void iy(int i);
///
int iy() const;
///
void row(Row * r);
///
Row * row() const;
private:
/// The paragraph the cursor is in.
Paragraph * par_;
/// The position inside the paragraph
lyx::pos_type pos_;
///
bool boundary_;
///
int x_;
/// the x position of the position before the inset when we put
/// the cursor on the end of the row before, otherwise equal to x.
int ix_;
///
int x_fix_;
///
int y_;
/// the y position of the position before the inset when we put
/// the cursor on the end of the row before, otherwise equal to y.
int iy_;
///
Row * row_;
};
///
inline
bool operator==(LyXCursor const & a, LyXCursor const & b)
{
return (a.par() == b.par())
&& (a.pos() == b.pos())
&& a.boundary() == b.boundary();
}
///
inline
bool operator!=(LyXCursor const & a, LyXCursor const & b)
{
return !(a == b);
}
///
inline
bool operator<(LyXCursor const & a, LyXCursor const & b)
{
// Can this be done in a nother way?
return (a.y() < b.y() && a.pos() < b.pos());
}
///
inline
bool operator>(LyXCursor const & a, LyXCursor const & b)
{
return b < a;
}
///
inline
bool operator>=(LyXCursor const & a, LyXCursor const & b)
{
return !(a < b);
}
///
inline
bool operator<=(LyXCursor const & a, LyXCursor const & b)
{
return !(a > b);
}
#endif