mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-29 05:01:49 +00:00
* CoordCacheBase::covers(): new method.
* CoordCache: correct and extend documentation. * Inset::covers(): use CoordCacheBase::covers(). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20459 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
137158532b
commit
a7058ad9c7
@ -44,6 +44,14 @@ public:
|
|||||||
struct Geometry {
|
struct Geometry {
|
||||||
Point pos;
|
Point pos;
|
||||||
Dimension dim;
|
Dimension dim;
|
||||||
|
|
||||||
|
bool covers(int x, int y) const
|
||||||
|
{
|
||||||
|
return x >= pos.x_
|
||||||
|
&& x <= pos.x_ + dim.wid
|
||||||
|
&& y >= pos.y_ - dim.asc
|
||||||
|
&& y <= pos.y_ + dim.des;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +79,7 @@ public:
|
|||||||
|
|
||||||
Dimension const & dim(T const * thing) const
|
Dimension const & dim(T const * thing) const
|
||||||
{
|
{
|
||||||
//check(thing, "dim");
|
check(thing, "dim");
|
||||||
return data_.find(thing)->second.dim;
|
return data_.find(thing)->second.dim;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,11 +106,11 @@ public:
|
|||||||
return data_.find(thing) != data_.end();
|
return data_.find(thing) != data_.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
// T * find(int x, int y) const
|
bool covers(T const * thing, int x, int y) const
|
||||||
// {
|
{
|
||||||
// T *
|
cache_type::const_iterator it = data_.find(thing);
|
||||||
// cache_type iter
|
return it != data_.end() && it->second.covers(x, y);
|
||||||
// }
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class CoordCache;
|
friend class CoordCache;
|
||||||
@ -121,14 +129,20 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A global cache that allows us to come from a paragraph in a document
|
* A BufferView dependent cache that allows us to come from an inset in
|
||||||
* to a position point on the screen.
|
* a document to a position point and dimension on the screen.
|
||||||
* All points cached in this cache are only valid between subsequent
|
* All points cached in this cache are only valid between subsequent
|
||||||
* updates. (x,y) == (0,0) is the upper left screen corner, x increases
|
* updates. (x,y) == (0,0) is the upper left screen corner, x increases
|
||||||
* to the right, y increases downwords.
|
* to the right, y increases downwords.
|
||||||
* The cache is built in BufferView::updateMetrics which is called
|
* The dimension part is built in BufferView::updateMetrics() and the
|
||||||
* from BufferView::update. The individual points are added
|
* diverse Inset::metrics() calls.
|
||||||
* while we paint them. See for instance paintPar in RowPainter.C.
|
* The individual points are added at drawing time in
|
||||||
|
* BufferView::updateMetrics(). The math inset position are cached in
|
||||||
|
* the diverse InsetMathXXX::draw() calls and the in-text inset position
|
||||||
|
* are cached in RowPainter::paintInset().
|
||||||
|
* FIXME: For mathed, it would be nice if the insets did not saves their
|
||||||
|
* position themselves. That should be the duty of the containing math
|
||||||
|
* array.
|
||||||
*/
|
*/
|
||||||
class CoordCache {
|
class CoordCache {
|
||||||
public:
|
public:
|
||||||
|
@ -333,19 +333,7 @@ int Inset::yo(BufferView const & bv) const
|
|||||||
|
|
||||||
bool Inset::covers(BufferView const & bv, int x, int y) const
|
bool Inset::covers(BufferView const & bv, int x, int y) const
|
||||||
{
|
{
|
||||||
//lyxerr << "Inset::covers, x: " << x << " y: " << y
|
return bv.coordCache().getInsets().covers(this, x, y);
|
||||||
// << " xo: " << xo(bv) << " yo: " << yo()
|
|
||||||
// << " x1: " << xo(bv) << " x2: " << xo() + width()
|
|
||||||
// << " y1: " << yo(bv) - ascent() << " y2: " << yo() + descent()
|
|
||||||
// << std::endl;
|
|
||||||
|
|
||||||
Dimension const dim = dimension(bv);
|
|
||||||
|
|
||||||
return bv.coordCache().getInsets().has(this)
|
|
||||||
&& x >= xo(bv)
|
|
||||||
&& x <= xo(bv) + dim.width()
|
|
||||||
&& y >= yo(bv) - dim.ascent()
|
|
||||||
&& y <= yo(bv) + dim.descent();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user