// Shrink the style if it is too thick for the control. while( GetWidth() > nMaxWidth )
{ // First decrease space between lines. if (mfDist)
{
--mfDist; continue;
}
// Still too thick? Decrease the line widths. if (mfPrim != 0.0 && rtl::math::approxEqual(mfPrim, mfSecn))
{ // Both lines equal - decrease both to keep symmetry.
--mfPrim;
--mfSecn; continue;
}
// Decrease each line for itself if (mfPrim)
--mfPrim;
// See lcl_convertBorderStyleFromToken() in writerfilter/ and ConvertBorderStyleFromWord() in // editeng/, this is the opposite of the combination of those functions. switch (rStyle.Type())
{ case SvxBorderLineStyle::NONE: return0.0; case SvxBorderLineStyle::DOTTED: case SvxBorderLineStyle::DASHED: return1.0; case SvxBorderLineStyle::SOLID: // single = 1 // thick = 2 // wave = 20
nBorderNumber = 1; break; case SvxBorderLineStyle::DOUBLE: case SvxBorderLineStyle::DOUBLE_THIN: // double = 3 // triple = 10 // doubleWave = 21 // dashDotStroked = 23
nBorderNumber = 3; break; case SvxBorderLineStyle::DASH_DOT: // dotDash = 8
nBorderNumber = 8; break; case SvxBorderLineStyle::DASH_DOT_DOT: // dotDotDash = 9
nBorderNumber = 9; break; case SvxBorderLineStyle::THINTHICK_SMALLGAP: // thinThickSmallGap = 11
nBorderNumber = 11; break; case SvxBorderLineStyle::THICKTHIN_SMALLGAP: // thickThinSmallGap = 12 // thinThickThinSmallGap = 13
nBorderNumber = 12; break; case SvxBorderLineStyle::THINTHICK_MEDIUMGAP: // thinThickMediumGap = 14
nBorderNumber = 14; break; case SvxBorderLineStyle::THICKTHIN_MEDIUMGAP: // thickThinMediumGap = 15 // thinThickThinMediumGap = 16
nBorderNumber = 15; break; case SvxBorderLineStyle::THINTHICK_LARGEGAP: // thinThickLargeGap = 17
nBorderNumber = 17; break; case SvxBorderLineStyle::THICKTHIN_LARGEGAP: // thickThinLargeGap = 18 // thinThickThinLargeGap = 19
nBorderNumber = 18; break; case SvxBorderLineStyle::FINE_DASHED: // dashSmallGap = 22
nBorderNumber = 22; break; case SvxBorderLineStyle::EMBOSSED: // threeDEmboss = 24
nBorderNumber = 24; break; case SvxBorderLineStyle::ENGRAVED: // threeDEngrave = 25
nBorderNumber = 25; break; case SvxBorderLineStyle::OUTSET: // outset = 26
nBorderNumber = 25; break; case SvxBorderLineStyle::INSET: // inset = 27
nBorderNumber = 27; break;
}
return nBorderNumber * fWidth;
}
}
bool Style::operator<( const Style& rOther) const
{ if (mbWordTableCell)
{ // The below code would first compare based on the border width, Word compares based on its // calculated weight, do that in the compat case. double fLW = GetWordTableCellBorderWeight(*this); double fRW = GetWordTableCellBorderWeight(rOther); if (!rtl::math::approxEqual(fLW, fRW))
{ return fLW < fRW;
}
}
// different total widths -> this<rOther, if this is thinner double nLW = GetWidth(); double nRW = rOther.GetWidth(); if( !rtl::math::approxEqual(nLW, nRW) ) return nLW < nRW;
// one line double, the other single -> this<rOther, if this is single if( (Secn() == 0) != (rOther.Secn() == 0) ) return Secn() == 0;
// both lines double with different distances -> this<rOther, if distance of this greater if( (Secn() && rOther.Secn()) && !rtl::math::approxEqual(Dist(), rOther.Dist()) ) return Dist() > rOther.Dist();
// both lines single and 1 unit thick, only one is dotted -> this<rOther, if this is dotted if ((nLW == 1) && !Secn() && !rOther.Secn() && (Type() != rOther.Type())) return Type() > rOther.Type();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.