v_align_(mt.v_align_), h_align_(mt.h_align_)
{
array = mt.GetData();
- if (mt.row_.data_ != 0) {
+ if (!mt.row_.empty()) {
MathedRowSt * ro = 0;
MathedRowSt * mrow = mt.row_.data_;
}
+
MathedInset * MathMatrixInset::Clone()
{
return new MathMatrixInset(*this);
void MathMatrixInset::Metrics()
{
- if (!row_.data_) {
+ if (row_.empty()) {
// lyxerr << " MIDA ";
MathedXIter it(this);
row_ = it.adjustVerticalSt();
}
// Clean the arrays
- MathedRowSt * cxrow = row_.data_;
- while (cxrow) {
+ for (MathedRowContainer::iterator it = row_.begin(); it; ++it)
for (int i = 0; i <= nc_; ++i)
- cxrow->setTab(i, 0);
- cxrow = cxrow->getNext();
- }
+ it->setTab(i, 0);
// Basic metrics
MathParInset::Metrics();
-
- if (nc_ <= 1 && !row_.data_->getNext()) {
- row_.data_->ascent(ascent);
- row_.data_->descent(descent);
+
+ MathedRowContainer::iterator cxrow = row_.begin();
+ if (nc_ <= 1 && cxrow.is_last()) {
+ cxrow->ascent(ascent);
+ cxrow->descent(descent);
}
// Vertical positions of each row
- cxrow = row_.data_;
- MathedRowSt * cprow = 0;
+ MathedRowContainer::iterator cprow = cxrow;
int h = 0;
- while (cxrow) {
+ for ( ; cxrow; ++cxrow) {
for (int i = 0; i < nc_; ++i) {
- if (cxrow == row_.data_ || ws_[i] < cxrow->getTab(i))
+ if (cxrow == row_.begin() || ws_[i] < cxrow->getTab(i))
ws_[i] = cxrow->getTab(i);
- if (cxrow->getNext() == 0 && ws_[i] == 0)
+ if (cxrow.is_last() && ws_[i] == 0)
ws_[i] = df_width;
}
- cxrow->setBaseline((cxrow == row_.data_) ?
+ cxrow->setBaseline((cxrow == row_.begin()) ?
cxrow->ascent() :
cxrow->ascent() + cprow->descent()
+ MATH_ROWSEP + cprow->getBaseline());
h += cxrow->ascent() + cxrow->descent() + MATH_ROWSEP;
cprow = cxrow;
- cxrow = cxrow->getNext();
}
int const hl = Descent();
// Compute vertical align
switch (v_align_) {
case 't':
- ascent = row_.data_->getBaseline();
+ ascent = row_.begin()->getBaseline();
break;
case 'b':
ascent = h - hl;
ws_[0] = 7 * workWidth / 8;
// Adjust local tabs
- cxrow = row_.data_;
width = MATH_COLSEP;
- while (cxrow) {
+ for (cxrow = row_.begin(); cxrow; ++cxrow) {
int rg = MATH_COLSEP;
int lf = 0;
for (int i = 0; i < nc_; ++i) {
lf = ws_[i] - cxrow->getTab(i);
break;
case 'C':
- if (cxrow == row_.data_)
+ if (cxrow == row_.begin())
lf = 0;
- else if (!cxrow->getNext())
+ else if (cxrow.is_last())
lf = ws_[i] - cxrow->getTab(i);
else
lf = (ws_[i] - cxrow->getTab(i))/2;
int const ww = (isvoid) ? lf : lf + cxrow->getTab(i);
cxrow->setTab(i, lf + rg);
rg = ws_[i] - ww + MATH_COLSEP;
- if (cxrow == row_.data_)
+ if (cxrow == row_.begin())
width += ws_[i] + MATH_COLSEP;
}
cxrow->setBaseline(cxrow->getBaseline() - ascent);
- cxrow = cxrow->getNext();
}
}