Bug 1388892: TableArea doesn't really need to own the rectangle, except for the union call. Especially since we're exposing the addresses of the members. r=xidorn

MozReview-Commit-ID: BAjQ20ngkIM
This commit is contained in:
Milan Sreckovic
2017-08-31 16:00:44 -04:00
parent eb4e3749a5
commit dafb51d25a
2 changed files with 29 additions and 14 deletions

View File

@@ -206,6 +206,11 @@ struct BaseRect {
{
SetRect(aPt.x, aPt.y, aSize.width, aSize.height);
}
void GetRect(T* aX, T* aY, T* aWidth, T* aHeight)
{
*aX = x; *aY = y; *aWidth = width; *aHeight = height;
}
void MoveTo(T aX, T aY) { x = aX; y = aY; }
void MoveTo(const Point& aPoint) { x = aPoint.x; y = aPoint.y; }
void MoveBy(T aDx, T aDy) { x += aDx; y += aDy; }

View File

@@ -12,28 +12,38 @@ namespace mozilla {
struct TableArea
{
TableArea() : mRect() { }
TableArea()
: mStartCol(0), mStartRow(0), mColCount(0), mRowCount(0) { }
TableArea(int32_t aStartCol, int32_t aStartRow,
int32_t aColCount, int32_t aRowCount)
: mRect(aStartCol, aStartRow, aColCount, aRowCount) { }
: mStartCol(aStartCol),
mStartRow(aStartRow),
mColCount(aColCount),
mRowCount(aRowCount) { }
int32_t& StartCol() { return mRect.x; }
int32_t& StartRow() { return mRect.y; }
int32_t& ColCount() { return mRect.width; }
int32_t& RowCount() { return mRect.height; }
int32_t& StartCol() { return mStartCol; }
int32_t& StartRow() { return mStartRow; }
int32_t& ColCount() { return mColCount; }
int32_t& RowCount() { return mRowCount; }
int32_t StartCol() const { return mRect.x; }
int32_t StartRow() const { return mRect.y; }
int32_t ColCount() const { return mRect.width; }
int32_t RowCount() const { return mRect.height; }
int32_t EndCol() const { return mRect.XMost(); }
int32_t EndRow() const { return mRect.YMost(); }
int32_t StartCol() const { return mStartCol; }
int32_t StartRow() const { return mStartRow; }
int32_t ColCount() const { return mColCount; }
int32_t RowCount() const { return mRowCount; }
int32_t EndCol() const { return mStartCol + mColCount; }
int32_t EndRow() const { return mStartRow + mRowCount; }
void UnionArea(const TableArea& aArea1, const TableArea& aArea2)
{ mRect.UnionRect(aArea1.mRect, aArea2.mRect); }
{
nsIntRect rect(aArea1.mStartCol, aArea1.mStartRow,
aArea1.mColCount, aArea1.mRowCount);
rect.UnionRect(rect, nsIntRect(aArea2.mStartCol, aArea2.mStartRow,
aArea2.mColCount, aArea2.mRowCount));
rect.GetRect(&mStartCol, &mStartRow, &mColCount, &mRowCount);
}
private:
nsIntRect mRect;
int32_t mStartCol, mStartRow, mColCount, mRowCount;
};
} // namespace mozilla