28#include <svx/svxids.hrc>
58#include <osl/diagnose.h>
111 {
"normal", sal_uInt16(SvxCaseMap::NotMapped) },
112 {
"small-caps", sal_uInt16(SvxCaseMap::SmallCaps) },
118 {
"uppercase", sal_uInt16(SvxCaseMap::Uppercase) },
119 {
"lowercase", sal_uInt16(SvxCaseMap::Lowercase) },
120 {
"capitalize", sal_uInt16(SvxCaseMap::Capitalize) },
126 {
"ltr", sal_uInt16(SvxFrameDirection::Horizontal_LR_TB) },
127 {
"rtl", sal_uInt16(SvxFrameDirection::Horizontal_RL_TB) },
128 {
"inherit", sal_uInt16(SvxFrameDirection::Environment) },
159 {
"left", sal_uInt16(SvxAdjust::Left) },
160 {
"center", sal_uInt16(SvxAdjust::Center) },
161 {
"right", sal_uInt16(SvxAdjust::Right) },
162 {
"justify", sal_uInt16(SvxAdjust::Block) },
176enum CSS1BorderStyle { CSS1_BS_NONE, CSS1_BS_SINGLE, CSS1_BS_DOUBLE, CSS1_BS_DOTTED, CSS1_BS_DASHED, CSS1_BS_GROOVE, CSS1_BS_RIDGE, CSS1_BS_INSET, CSS1_BS_OUTSET };
182 {
"none", CSS1_BS_NONE },
183 {
"dotted", CSS1_BS_DOTTED },
184 {
"dashed", CSS1_BS_DASHED },
185 {
"solid", CSS1_BS_SINGLE },
186 {
"double", CSS1_BS_DOUBLE },
187 {
"groove", CSS1_BS_GROOVE },
188 {
"ridge", CSS1_BS_RIDGE },
189 {
"inset", CSS1_BS_INSET },
190 {
"outset", CSS1_BS_OUTSET },
196 {
"left", sal_uInt16(SvxAdjust::Left) },
197 {
"right", sal_uInt16(SvxAdjust::Right) },
198 {
"none", sal_uInt16(SvxAdjust::End) },
267 sal_uInt16 nPostureCJK;
268 sal_uInt16 nPostureCTL;
270 sal_uInt16 nWeightCJK;
271 sal_uInt16 nWeightCTL;
272 sal_uInt16 nFontHeight;
273 sal_uInt16 nFontHeightCJK;
274 sal_uInt16 nFontHeightCTL;
275 sal_uInt16 nUnderline;
276 sal_uInt16 nOverline;
277 sal_uInt16 nCrossedOut;
283 sal_uInt16 nLineSpacing;
287 sal_uInt16 nFormatSplit;
294 sal_uInt16 nLanguage;
295 sal_uInt16 nLanguageCJK;
296 sal_uInt16 nLanguageCTL;
297 sal_uInt16 nDirection;
377 m_aId( rProp.m_aId ),
378 m_bTopMargin( rProp.m_bTopMargin ),
379 m_bBottomMargin( rProp.m_bBottomMargin ),
380 m_bLeftMargin( rProp.m_bLeftMargin ),
381 m_bRightMargin( rProp.m_bRightMargin ),
382 m_bTextIndent( rProp.m_bTextIndent ),
383 m_bNumbering ( rProp.m_bNumbering ),
384 m_bBullet ( rProp.m_bBullet ),
385 m_eFloat( rProp.m_eFloat ),
387 m_nTopBorderDistance( rProp.m_nTopBorderDistance ),
388 m_nBottomBorderDistance( rProp.m_nBottomBorderDistance ),
389 m_nLeftBorderDistance( rProp.m_nLeftBorderDistance ),
390 m_nRightBorderDistance( rProp.m_nRightBorderDistance ),
391 m_nNumberingType ( rProp.m_nNumberingType ),
392 m_cBulletChar( rProp.m_cBulletChar ),
393 m_nColumnCount( rProp.m_nColumnCount ),
394 m_nLeft( rProp.m_nLeft ),
395 m_nTop( rProp.m_nTop ),
396 m_nWidth( rProp.m_nWidth ),
397 m_nHeight( rProp.m_nHeight ),
398 m_nLeftMargin( rProp.m_nLeftMargin ),
399 m_nRightMargin( rProp.m_nRightMargin ),
400 m_eLeftType( rProp.m_eLeftType ),
401 m_eTopType( rProp.m_eTopType ),
402 m_eWidthType( rProp.m_eWidthType ),
403 m_eHeightType( rProp.m_eHeightType ),
404 m_eLeftMarginType( rProp.m_eLeftMarginType ),
405 m_eRightMarginType( rProp.m_eRightMarginType ),
406 m_eSizeType( rProp.m_eSizeType ),
407 m_ePageBreakBefore( rProp.m_ePageBreakBefore ),
408 m_ePageBreakAfter( rProp.m_ePageBreakAfter )
493 if( rProp.
m_eFloat != SvxAdjust::End )
543 case SvxBoxItemLine::TOP:
nPos = 0;
break;
544 case SvxBoxItemLine::BOTTOM:
nPos = 1;
break;
545 case SvxBoxItemLine::LEFT:
nPos = 2;
break;
546 case SvxBoxItemLine::RIGHT:
nPos = 3;
break;
580 CopyBorderInfo( SvxBoxItemLine::BOTTOM, SvxBoxItemLine::TOP, nWhat );
581 CopyBorderInfo( SvxBoxItemLine::TOP, SvxBoxItemLine::LEFT, nWhat );
585 CopyBorderInfo( SvxBoxItemLine::LEFT, SvxBoxItemLine::RIGHT, nWhat );
590 sal_uInt16 nMinBorderDist,
604 std::shared_ptr<SvxBoxItem> aBoxItem(std::make_shared<SvxBoxItem>(
aItemIds.nBox));
606 aBoxItem.reset(pDfltItem->
Clone());
627 sal_uInt16 nDist = 0;
630 case 0: nLine = SvxBoxItemLine::TOP;
634 case 1: nLine = SvxBoxItemLine::BOTTOM;
638 case 2: nLine = SvxBoxItemLine::LEFT;
642 case 3: nLine = SvxBoxItemLine::RIGHT;
648 if( aBoxItem->GetLine( nLine ) )
651 nDist = aBoxItem->GetDistance( nLine );
653 if( nDist < nMinBorderDist )
654 nDist = nMinBorderDist;
661 aBoxItem->SetDistance( nDist, nLine );
664 rItemSet.
Put( *aBoxItem );
671 m_aItemSet(
std::move( aItemSet )),
686 OSL_ENSURE(
m_pSheetItemSet,
"Where is the Item-Set for Style-Sheets?" );
688 for (
const std::unique_ptr<CSS1Selector> & rpSelection :
m_Selectors)
703 sal_uInt16
const *pWhichIds, sal_uInt16 nWhichIds ) :
704 m_sBaseURL(
std::move( aBaseURL )),
706 m_pPropInfo( nullptr ),
707 m_eDefaultEnc( RTL_TEXTENCODING_DONTKNOW ),
708 m_bIgnoreFontFamily( false )
711 auto initTrueWhich = [&rPool,
this](sal_uInt16 rWid)
718 aItemIds.nFont = initTrueWhich( SID_ATTR_CHAR_FONT );
719 aItemIds.nFontCJK = initTrueWhich( SID_ATTR_CHAR_CJK_FONT );
720 aItemIds.nFontCTL = initTrueWhich( SID_ATTR_CHAR_CTL_FONT );
721 aItemIds.nPosture = initTrueWhich( SID_ATTR_CHAR_POSTURE );
722 aItemIds.nPostureCJK = initTrueWhich( SID_ATTR_CHAR_CJK_POSTURE );
723 aItemIds.nPostureCTL = initTrueWhich( SID_ATTR_CHAR_CTL_POSTURE );
724 aItemIds.nWeight = initTrueWhich( SID_ATTR_CHAR_WEIGHT );
725 aItemIds.nWeightCJK = initTrueWhich( SID_ATTR_CHAR_CJK_WEIGHT );
726 aItemIds.nWeightCTL = initTrueWhich( SID_ATTR_CHAR_CTL_WEIGHT );
727 aItemIds.nFontHeight = initTrueWhich( SID_ATTR_CHAR_FONTHEIGHT );
728 aItemIds.nFontHeightCJK = initTrueWhich( SID_ATTR_CHAR_CJK_FONTHEIGHT );
729 aItemIds.nFontHeightCTL = initTrueWhich( SID_ATTR_CHAR_CTL_FONTHEIGHT );
730 aItemIds.nUnderline = initTrueWhich( SID_ATTR_CHAR_UNDERLINE );
731 aItemIds.nOverline = initTrueWhich( SID_ATTR_CHAR_OVERLINE );
732 aItemIds.nCrossedOut = initTrueWhich( SID_ATTR_CHAR_STRIKEOUT );
733 aItemIds.nColor = initTrueWhich( SID_ATTR_CHAR_COLOR );
734 aItemIds.nKerning = initTrueWhich( SID_ATTR_CHAR_KERNING );
735 aItemIds.nCaseMap = initTrueWhich( SID_ATTR_CHAR_CASEMAP );
736 aItemIds.nBlink = initTrueWhich( SID_ATTR_FLASH );
738 aItemIds.nLineSpacing = initTrueWhich( SID_ATTR_PARA_LINESPACE );
739 aItemIds.nAdjust = initTrueWhich( SID_ATTR_PARA_ADJUST );
740 aItemIds.nWidows = initTrueWhich( SID_ATTR_PARA_WIDOWS );
741 aItemIds.nOrphans = initTrueWhich( SID_ATTR_PARA_ORPHANS );
742 aItemIds.nFormatSplit = initTrueWhich( SID_ATTR_PARA_SPLIT );
749 aItemIds.nBox = initTrueWhich( SID_ATTR_BORDER_OUTER );
750 aItemIds.nBrush = initTrueWhich( SID_ATTR_BRUSH );
752 aItemIds.nLanguage = initTrueWhich( SID_ATTR_CHAR_LANGUAGE );
753 aItemIds.nLanguageCJK = initTrueWhich( SID_ATTR_CHAR_CJK_LANGUAGE );
754 aItemIds.nLanguageCTL = initTrueWhich( SID_ATTR_CHAR_CTL_LANGUAGE );
755 aItemIds.nDirection = initTrueWhich( SID_ATTR_FRAMEDIRECTION );
757 if( pWhichIds && nWhichIds )
758 for (sal_uInt16
i = 0;
i < nWhichIds; ++
i)
780 CSS1Map::const_iterator itr =
m_Ids.find(rId);
781 return itr ==
m_Ids.end() ? nullptr : itr->second.get();
793 CSS1Map::const_iterator itr =
m_Classes.find(rClass);
794 return itr ==
m_Classes.end() ? nullptr : itr->second.get();
802 OUString aKey( rPage );
810 OUString aKey( rPage );
814 CSS1Map::iterator itr =
m_Pages.find(aKey);
815 return itr ==
m_Pages.end() ? nullptr : itr->second.get();
827 CSS1Map::iterator itr =
m_Tags.find(rTag);
828 return itr ==
m_Tags.end() ? nullptr : itr->second.get();
838 for (
const std::unique_ptr<CSS1Selector> & rpSelector :
m_Selectors)
869 const OUString &rValue, sal_uInt16& rEnum )
871 while( pPropTable->
pName )
873 if( !rValue.equalsIgnoreAsciiCaseAscii( pPropTable->
pName ) )
879 if( pPropTable->
pName )
880 rEnum = pPropTable->
nEnum;
882 return (pPropTable->
pName !=
nullptr);
889 Size aTwipSz( rWidth, rHeight );
893 rWidth = aTwipSz.
Width();
894 rHeight = aTwipSz.
Height();
904 case 0: nHeight = 8*20;
break;
905 case 1: nHeight = 10*20;
break;
906 case 2: nHeight = 11*20;
break;
907 case 3: nHeight = 12*20;
break;
908 case 4: nHeight = 17*20;
break;
909 case 5: nHeight = 20*20;
break;
911 default: nHeight = 32*20;
break;
927 CSS1Map::iterator itr = rMap.find(rKey);
928 if (itr == rMap.end())
930 rMap.insert(std::make_pair(rKey, std::make_unique<SvxCSS1MapEntry>(rItemSet, rProp)));
936 p->GetItemSet(),
p->GetPropertyInfo(),
true );
948 rTargetSet.
Put( rSrcSet );
980 rTargetSet.
Put( aULSpace );
984 rTargetInfo.
Merge( rSrcInfo );
997 OSL_ENSURE( pExpr,
"no expression" );
1000 sal_uInt16 nPropHeight = 100;
1010 if (fHeight < SAL_MAX_INT32/2.0 && fHeight >
SAL_MIN_INT32/2.0)
1015 nHeight =
static_cast<sal_uLong>(nPHeight);
1019 SAL_WARN(
"sw.html",
"out-of-size pxlength: " << fHeight);
1025 nPropHeight = o3tl::narrowing<sal_uInt16>(pExpr->
GetNumber());
1043 if( nHeight || nPropHeight!=100 )
1047 rItemSet.
Put( aFontHeight );
1048 aFontHeight.SetWhich(
aItemIds.nFontHeightCJK );
1049 rItemSet.
Put( aFontHeight );
1050 aFontHeight.SetWhich(
aItemIds.nFontHeightCTL );
1051 rItemSet.
Put( aFontHeight );
1060 OSL_ENSURE( pExpr,
"no expression" );
1062 OUStringBuffer
aName;
1066 bool bFound =
false;
1067 while( pExpr && (bFirst ||
','==pExpr->
GetOp() || !pExpr->
GetOp()) )
1078 while( pNext && !pNext->
GetOp() &&
1086 if( !aIdent.isEmpty() )
1088 if( !bFound && pFList )
1091 if(
nullptr != hFont )
1094 if( RTL_TEXTENCODING_DONTKNOW != rFMetric.
GetCharSet() )
1097 if( RTL_TEXTENCODING_SYMBOL == rFMetric.
GetCharSet() )
1098 eEnc = RTL_TEXTENCODING_SYMBOL;
1104 aName.append(aIdent);
1116 rItemSet.
Put( aFont );
1117 aFont.SetWhich(
aItemIds.nFontCJK );
1118 rItemSet.
Put( aFont );
1119 aFont.SetWhich(
aItemIds.nFontCTL );
1120 rItemSet.
Put( aFont );
1129 OSL_ENSURE( pExpr,
"no expression" );
1141 rItemSet.
Put( aWeight );
1142 aWeight.SetWhich(
aItemIds.nWeightCJK );
1143 rItemSet.
Put( aWeight );
1144 aWeight.SetWhich(
aItemIds.nWeightCTL );
1145 rItemSet.
Put( aWeight );
1151 sal_uInt16 nWeight = o3tl::narrowing<sal_uInt16>(pExpr->
GetNumber());
1154 rItemSet.
Put( aWeight );
1155 aWeight.SetWhich(
aItemIds.nWeightCJK );
1156 rItemSet.
Put( aWeight );
1157 aWeight.SetWhich(
aItemIds.nWeightCTL );
1158 rItemSet.
Put( aWeight );
1172 OSL_ENSURE( pExpr,
"no expression" );
1174 bool bPosture =
false;
1175 bool bCaseMap =
false;
1183 for(
int i=0; pExpr &&
i<2; ++
i )
1189 const OUString& rValue = pExpr->
GetString();
1198 eCaseMap = SvxCaseMap::NotMapped;
1203 else if( !bCaseMap &&
1204 rValue.equalsIgnoreAsciiCase(
"small-caps" ) )
1206 eCaseMap = SvxCaseMap::SmallCaps;
1218 rItemSet.
Put( aPosture );
1219 aPosture.SetWhich(
aItemIds.nPostureCJK );
1220 rItemSet.
Put( aPosture );
1221 aPosture.SetWhich(
aItemIds.nPostureCTL );
1222 rItemSet.
Put( aPosture );
1234 assert(pExpr &&
"no expression");
1241 sal_uInt16 nCaseMap;
1260 OSL_ENSURE( pExpr,
"no expression" );
1268 sal_uInt16 nCaseMap;
1287 OSL_ENSURE( pExpr,
"no expression" );
1311 assert(pExpr &&
"no expression");
1315 double columnCount = pExpr->
GetNumber();
1316 if ( columnCount >= 2 )
1328 assert(pExpr &&
"no expression");
1351 "vertical position not at the top" );
1381 "horizontal position not on the left side" );
1413 OSL_ENSURE( pExpr,
"no expression" );
1418 bool bColor =
false, bTransparent =
false;
1421 bool bHori =
false, bVert =
false;
1423 while( pExpr && !pExpr->
GetOp() )
1432 bColor = pExpr->
GetColor( aColor );
1442 bool nonZero = std::trunc(pExpr->
GetNumber()) != 0.0;
1460 sal_uInt16 nPerc = o3tl::narrowing<sal_uInt16>(pExpr->
GetNumber());
1482 const OUString &rValue = pExpr->
GetString();
1483 if( rValue.equalsIgnoreAsciiCase(
"transparent" ) )
1485 bTransparent =
true;
1504 bColor = pExpr->
GetColor( aColor );
1528 if( !bTransparent && !bColor &&
aURL.isEmpty() )
1538 if( !
aURL.isEmpty() )
1544 rItemSet.
Put( aBrushItem );
1552 OSL_ENSURE( pExpr,
"no expression" );
1556 bool bColor =
false, bTransparent =
false;
1561 bColor = pExpr->
GetColor( aColor );
1566 if( pExpr->
GetString().equalsIgnoreAsciiCase(
"transparent" ) )
1568 bTransparent =
true;
1573 bColor = pExpr->
GetColor( aColor );
1580 if( bTransparent || bColor )
1589 rItemSet.
Put( aBrushItem );
1598 OSL_ENSURE( pExpr,
"no expression" );
1600 sal_uInt16 nHeight = 0;
1601 sal_uInt16 nPropHeight = 0;
1606 nHeight = o3tl::narrowing<sal_uInt16>(pExpr->
GetULength());
1611 if (fHeight < SAL_MAX_INT32/2.0 && fHeight >
SAL_MIN_INT32/2.0)
1616 nHeight = o3tl::narrowing<sal_uInt16>(nPHeight);
1622 nPropHeight = o3tl::narrowing<sal_uInt16>(pExpr->
GetNumber());
1627 nPropHeight = o3tl::narrowing<sal_uInt16>(pExpr->
GetNumber() * 100);
1643 rItemSet.
Put( aLSItem );
1645 else if( nPropHeight )
1649 if( 100 == nPropHeight )
1653 rItemSet.
Put( aLSItem );
1663 OSL_ENSURE( pExpr,
"no expression" );
1668 const OUString& rValue = pExpr->
GetString();
1689 OSL_ENSURE( pExpr,
"no expression" );
1696 while( pExpr && !pExpr->
GetOp() &&
1704 const OUString& rValue = pExpr->
GetString();
1730 if( !pExpr || pExpr->
GetOp() )
1736 rItemSet.
Put( aPosture );
1737 aPosture.SetWhich(
aItemIds.nPostureCJK );
1738 rItemSet.
Put( aPosture );
1739 aPosture.SetWhich(
aItemIds.nPostureCTL );
1740 rItemSet.
Put( aPosture );
1745 rItemSet.
Put( aWeight );
1746 aWeight.SetWhich(
aItemIds.nWeightCJK );
1747 rItemSet.
Put( aWeight );
1748 aWeight.SetWhich(
aItemIds.nWeightCTL );
1749 rItemSet.
Put( aWeight );
1761 if(
'/' == pExpr->
GetOp() )
1770 if( !pExpr || pExpr->
GetOp() )
1782 OSL_ENSURE( pExpr,
"no expression" );
1794 if (fHeight < SAL_MAX_INT32/2.0 && fHeight >
SAL_MIN_INT32/2.0)
1814 if( pExpr->
GetString().equalsIgnoreAsciiCase(
"normal" ) )
1829 OSL_ENSURE( pExpr,
"no expression" );
1831 bool bUnderline =
false;
1832 bool bOverline =
false;
1833 bool bCrossedOut =
false;
1834 bool bBlink =
false;
1835 bool bBlinkOn =
false;
1844 OUString aValue = pExpr->
GetString().toAsciiLowerCase();
1845 bool bKnown =
false;
1850 if( aValue ==
"none" )
1869 if( aValue ==
"underline" )
1879 if( aValue ==
"overline" )
1889 if( aValue ==
"line-through" )
1899 if( aValue ==
"blink" )
1936 OSL_ENSURE( pExpr,
"no expression" );
1956 OSL_ENSURE( pExpr,
"no expression" );
1967 "sw.html",
"clamping length " <<
n <<
" to short range");
1968 nIndent =
static_cast<short>(
1971 double(std::numeric_limits<short>::max())));
1978 if (fWidth < SAL_MAX_INT32/2.0 && fWidth >
SAL_MIN_INT32/2.0)
1983 nIndent =
static_cast<short>(nPWidth);
1999 rItemSet.
Put(firstLine);
2008 OSL_ENSURE( pExpr,
"no expression" );
2032 SAL_WARN(
"sw.html",
"out-of-size pxlength: " << fLeft);
2058 rItemSet.
Put(leftMargin);
2067 OSL_ENSURE( pExpr,
"no expression" );
2082 if (fRight < SAL_MAX_INT32/2.0 && fRight >
SAL_MIN_INT32/2.0)
2112 rItemSet.
Put(rightMargin);
2121 assert(pExpr &&
"no expression");
2123 sal_uInt16 nUpper = 0;
2132 nUpper = o3tl::narrowing<sal_uInt16>(nTmp);
2139 if (fHeight < SAL_MAX_INT32/2.0 && fHeight >
SAL_MIN_INT32/2.0)
2146 nUpper = o3tl::narrowing<sal_uInt16>(nPHeight);
2165 rItemSet.
Put( aULItem );
2171 rItemSet.
Put( aULItem );
2181 OSL_ENSURE( pExpr,
"no expression" );
2183 sal_uInt16 nLower = 0;
2192 nLower = o3tl::narrowing<sal_uInt16>(nTmp);
2199 if (fHeight < SAL_MAX_INT32/2.0 && fHeight >
SAL_MIN_INT32/2.0)
2206 nLower = o3tl::narrowing<sal_uInt16>(nPHeight);
2225 rItemSet.
Put( aULItem );
2231 rItemSet.
Put( aULItem );
2241 OSL_ENSURE( pExpr,
"no expression" );
2244 bool bSetMargins[4] = {
false,
false,
false,
false };
2246 for(
int i=0; pExpr &&
i<4 && !pExpr->
GetOp(); ++
i )
2248 bool bSetThis =
false;
2262 if (fMargin < SAL_MAX_INT32/2.0 && fMargin >
SAL_MIN_INT32/2.0)
2271 SAL_WARN(
"sw.html",
"out-of-size pxlength: " << fMargin);
2291 nMargins[0] = nMargins[1] =nMargins[2] = nMargins[3] = nMargin;
2292 bSetMargins[0] = bSetMargins[1] =
2293 bSetMargins[2] = bSetMargins[3] =
true;
2296 nMargins[1] = nMargins[3] = nMargin;
2297 bSetMargins[1] = bSetMargins[3] =
true;
2300 nMargins[2] = nMargin;
2301 bSetMargins[2] =
true;
2304 nMargins[3] = nMargin;
2305 bSetMargins[3] =
true;
2312 if( bSetMargins[3] || bSetMargins[1] )
2314 if( bSetMargins[3] )
2318 if( nMargins[3] < 0 )
2321 if( bSetMargins[1] )
2325 if( nMargins[1] < 0 )
2332 rItemSet.
Put(leftMargin);
2337 rItemSet.
Put(rightMargin);
2341 if( !(bSetMargins[0] || bSetMargins[2]) )
2344 if( nMargins[0] < 0 )
2346 if( nMargins[2] < 0 )
2352 if( bSetMargins[0] )
2353 aULItem.
SetUpper( o3tl::narrowing<sal_uInt16>(nMargins[0]) );
2354 if( bSetMargins[2] )
2355 aULItem.
SetLower( o3tl::narrowing<sal_uInt16>(nMargins[2]) );
2356 rItemSet.
Put( aULItem );
2361 if( bSetMargins[0] )
2362 aULItem.
SetUpper( o3tl::narrowing<sal_uInt16>(nMargins[0]) );
2363 if( bSetMargins[2] )
2364 aULItem.
SetLower( o3tl::narrowing<sal_uInt16>(nMargins[2]) );
2365 rItemSet.
Put( aULItem );
2376 OSL_ENSURE( pExpr,
"no expression" );
2379 sal_uInt16 nDist = 0;
2390 nDist = o3tl::narrowing<sal_uInt16>(nTmp);
2397 if (fWidth < SAL_MAX_INT32/2.0 && fWidth >
SAL_MIN_INT32/2.0)
2406 nDist = o3tl::narrowing<sal_uInt16>(nPWidth);
2420 switch( nWhichLine )
2470 while( n<4 && pExpr && !pExpr->GetOp() )
2472 SvxBoxItemLine nLine =
n==0 ||
n==2 ? SvxBoxItemLine::BOTTOM : SvxBoxItemLine::LEFT;
2495 OSL_ENSURE( pExpr,
"no expression" );
2497 sal_uInt16 nWidth = USHRT_MAX;
2498 sal_uInt16 nNWidth = 1;
2499 CSS1BorderStyle eStyle = CSS1_BS_NONE;
2501 bool bColor =
false;
2503 while( pExpr && !pExpr->
GetOp() )
2515 const OUString& rValue = pExpr->
GetString();
2523 eStyle =
static_cast<CSS1BorderStyle
>(
nValue);
2525 else if( pExpr->
GetColor( aColor ) )
2533 nWidth = o3tl::narrowing<sal_uInt16>(pExpr->
GetULength());
2542 bool bHori = nWhichLine == SvxBoxItemLine::TOP ||
2543 nWhichLine == SvxBoxItemLine::BOTTOM;
2548 nWidth = o3tl::narrowing<sal_uInt16>(bHori ? nPHeight : nPWidth);
2562 for(
int i=0;
i<4; ++
i )
2567 case 0: nLine = SvxBoxItemLine::TOP;
break;
2568 case 1: nLine = SvxBoxItemLine::BOTTOM;
break;
2569 case 2: nLine = SvxBoxItemLine::LEFT;
break;
2570 case 3: nLine = SvxBoxItemLine::RIGHT;
break;
2573 if( bAll || nLine == nWhichLine )
2591 OSL_ENSURE( pExpr,
"no expression" );
2593 sal_uInt16 nWidth = USHRT_MAX;
2594 sal_uInt16 nNWidth = 1;
2609 nWidth = o3tl::narrowing<sal_uInt16>(pExpr->
GetULength());
2615 if (fLength < SAL_MAX_INT32/2.0 && fLength >
SAL_MIN_INT32/2.0)
2619 bool bHori = nWhichLine == SvxBoxItemLine::TOP ||
2620 nWhichLine == SvxBoxItemLine::BOTTOM;
2625 nWidth = o3tl::narrowing<sal_uInt16>(bHori ? nPHeight : nPWidth);
2677 while( n<4 && pExpr && !pExpr->GetOp() )
2679 SvxBoxItemLine nLine =
n==0 ||
n==2 ? SvxBoxItemLine::BOTTOM : SvxBoxItemLine::LEFT;
2694 while( n<4 && pExpr && !pExpr->GetOp() )
2696 SvxBoxItemLine nLine =
n==0 ||
n==2 ? SvxBoxItemLine::BOTTOM : SvxBoxItemLine::LEFT;
2722 while( n<4 && pExpr && !pExpr->GetOp() )
2724 SvxBoxItemLine nLine =
n==0 ||
n==2 ? SvxBoxItemLine::BOTTOM : SvxBoxItemLine::LEFT;
2784 OSL_ENSURE( pExpr,
"no expression" );
2799 OSL_ENSURE( pExpr,
"no expression" );
2817 if( pExpr->
GetString().equalsIgnoreAsciiCase(
"auto" ) )
2833 if (fLength < SAL_MAX_INT32/2.0 && fLength >
SAL_MIN_INT32/2.0)
2839 rLength = (bHori ? nPHeight : nPWidth);
2894 while( n<2 && pExpr && !pExpr->GetOp() )
2919 if (fHeight < SAL_MAX_INT32/2.0 && fHeight >
SAL_MIN_INT32/2.0)
2978 bool bSetSplit =
false, bSplit =
true;
3007 rItemSet.
Put( aWidowsItem );
3022 rItemSet.
Put( aOrphansItem );
3038 rItemSet.
Put( aLang );
3039 aLang.SetWhich(
aItemIds.nLanguageCJK );
3040 rItemSet.
Put( aLang );
3041 aLang.SetWhich(
aItemIds.nLanguageCTL );
3042 rItemSet.
Put( aLang );
3066#define CSS1_PROP_ENTRY(p) \
3067 { sCSS1_P_##p, ParseCSS1_##p }
3131 return strcmp(lhs.pName, rhs.pName) < 0;
3136 return s.compareToIgnoreAsciiCaseAscii(lhs.pName) > 0;
3140 std::unique_ptr<CSS1Expression> pExpr )
3142 OSL_ENSURE(
m_pItemSet,
"DeclarationParsed() without ItemSet" );
3144 static bool bSortedPropFns =
false;
3146 if( !bSortedPropFns )
3150 bSortedPropFns =
true;
css::chart::ChartAxisLabelPosition ePos
static OutputDevice * GetDefaultDevice()
void ParseStyleOption(const OUString &rIn)
parse the content of a HTML style option
static const FontMetric & GetFontMetric(sal_Handle hFontMetric)
sal_Handle GetFirstFontMetric(std::u16string_view rName) const
static LanguageType convertToLanguageTypeWithFallback(const OUString &rBcp47)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
sal_uInt16 GetTrueWhich(sal_uInt16 nSlot, bool bDeep=true) const
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
static const sal_Int16 VeryThin
static const sal_Int16 Thin
static const sal_Int16 Hairline
virtual SvxBoxItem * Clone(SfxItemPool *pPool=nullptr) const override
void SetLine(const editeng::SvxBorderLine *pNew, SvxBoxItemLine nLine)
void SetGraphicPos(SvxGraphicPosition eNew)
void SetGraphicLink(const OUString &rNew)
void SetColor(const Color &rCol)
SvxCSS1MapEntry(SfxItemSet aItemSet, const SvxCSS1PropertyInfo &rProp)
std::unique_ptr< SfxItemSet > m_pSheetItemSet
void InsertPage(const OUString &rPage, bool bPseudo, const SfxItemSet &rItemSet, const SvxCSS1PropertyInfo &rProp)
const SvxCSS1MapEntry * GetId(const OUString &rId) const
void InsertId(const OUString &rId, const SfxItemSet &rItemSet, const SvxCSS1PropertyInfo &rProp)
void ParseStyleOption(const OUString &rIn, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo)
CSS1Selectors m_Selectors
bool IsIgnoreFontFamily() const
std::unique_ptr< SvxCSS1PropertyInfo > m_pSheetPropInfo
SvxCSS1MapEntry * GetTag(const OUString &rTag)
virtual void SetDfltEncoding(rtl_TextEncoding eEnc)
rtl_TextEncoding GetDfltEncoding() const
void InsertClass(const OUString &rClass, const SfxItemSet &rItemSet, const SvxCSS1PropertyInfo &rProp)
static void PixelToTwip(tools::Long &nWidth, tools::Long &nHeight)
static void InsertMapEntry(const OUString &rKey, const SfxItemSet &rItemSet, const SvxCSS1PropertyInfo &rProp, CSS1Map &rMap)
virtual void StyleParsed(const CSS1Selector *pSelector, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo)
static sal_uInt16 GetMinFixLineSpace()
rtl_TextEncoding m_eDefaultEnc
std::map< OUString, std::unique_ptr< SvxCSS1MapEntry > > CSS1Map
static void MergeStyles(const SfxItemSet &rSrcSet, const SvxCSS1PropertyInfo &rSrcInfo, SfxItemSet &rTargetSet, SvxCSS1PropertyInfo &rTargetInfo, bool bSmart)
virtual void DeclarationParsed(const OUString &rProperty, std::unique_ptr< CSS1Expression > pExpr) override
Will be called for every parsed Property.
const SvxCSS1MapEntry * GetClass(const OUString &rClass) const
SvxCSS1MapEntry * GetPage(const OUString &rPage, bool bPseudo)
virtual sal_uInt32 GetFontHeight(sal_uInt16 nSize) const
const OUString & GetBaseURL() const
virtual void SelectorParsed(std::unique_ptr< CSS1Selector > pSelector, bool bFirst) override
Will be called when a Selector is parsed.
virtual ~SvxCSS1Parser() override
SvxCSS1Parser(SfxItemPool &rPool, OUString aBaseURL, sal_uInt16 const *pWhichIds, sal_uInt16 nWhichIds)
WhichRangesContainer m_aWhichMap
virtual const FontList * GetFontList() const
static bool GetEnum(const CSS1PropertyEnum *pPropTable, const OUString &rValue, sal_uInt16 &rEnum)
SvxCSS1PropertyInfo * m_pPropInfo
void InsertTag(const OUString &rTag, const SfxItemSet &rItemSet, const SvxCSS1PropertyInfo &rProp)
sal_Unicode m_cBulletChar
SvxCSS1PageBreak m_ePageBreakBefore
void SetBoxItem(SfxItemSet &rItemSet, sal_uInt16 nMinBorderDist, const SvxBoxItem *pDflt=nullptr)
SvxNumType m_nNumberingType
sal_uInt16 m_nColumnCount
SvxCSS1PageBreak m_ePageBreakAfter
SvxCSS1BorderInfo * GetBorderInfo(SvxBoxItemLine nLine, bool bCreate=true)
void CopyBorderInfo(SvxBoxItemLine nSrcLine, SvxBoxItemLine nDstLine, sal_uInt16 nWhat)
SvxCSS1SizeType m_eSizeType
SvxCSS1LengthType m_eRightMarginType
void DestroyBorderInfos()
tools::Long m_nRightMargin
SvxCSS1LengthType m_eLeftMarginType
sal_uInt16 m_nBottomBorderDistance
sal_uInt16 m_nRightBorderDistance
sal_uInt16 m_nLeftBorderDistance
SvxCSS1LengthType m_eHeightType
SvxCSS1Position m_ePosition
SvxCSS1LengthType m_eWidthType
void Merge(const SvxCSS1PropertyInfo &rProp)
sal_uInt16 m_nTopBorderDistance
SvxCSS1LengthType m_eTopType
static constexpr sal_uInt16 UNSET_BORDER_DISTANCE
std::array< std::unique_ptr< SvxCSS1BorderInfo >, 4 > m_aBorderInfos
tools::Long m_nLeftMargin
SvxCSS1LengthType m_eLeftType
void SetPropLineSpace(const sal_uInt16 nProp)
void SetInterLineSpaceRule(SvxInterLineSpaceRule e)
void SetLineSpaceRule(SvxLineSpaceRule e)
void SetLineHeight(const sal_uInt16 nHeight)
void SetLower(const sal_uInt16 nL, const sal_uInt16 nProp=100)
sal_uInt16 GetUpper() const
void SetUpper(const sal_uInt16 nU, const sal_uInt16 nProp=100)
sal_uInt16 GetLower() const
void SetWidth(tools::Long nWidth)
void SetBorderLineStyle(SvxBorderLineStyle nNew)
rtl_TextEncoding GetCharSet() const
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
constexpr TypedWhichId< SvxFirstLineIndentItem > RES_MARGIN_FIRSTLINE(91)
constexpr TypedWhichId< SvxRightMarginItem > RES_MARGIN_RIGHT(93)
constexpr TypedWhichId< SvxTextLeftMarginItem > RES_MARGIN_TEXTLEFT(92)
#define HTML_BULLETCHAR_SQUARE
#define HTML_BULLETCHAR_CIRCLE
#define HTML_BULLETCHAR_DISC
#define LANGUAGE_DONTKNOW
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
SVL_DLLPUBLIC OUString SmartRel2Abs(INetURLObject const &rTheBaseURIRef, OUString const &rTheRelURIRef, Link< OUString *, bool > const &rMaybeFileHdl=Link< OUString *, bool >(), bool bCheckFileExists=true, bool bIgnoreFragment=false, INetURLObject::EncodeMechanism eEncodeMechanism=INetURLObject::EncodeMechanism::WasEncoded, INetURLObject::DecodeMechanism eDecodeMechanism=INetURLObject::DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
void copy(const fs::path &src, const fs::path &dest)
SwNodeOffset min(const SwNodeOffset &a, const SwNodeOffset &b)
a subexpression of a CSS1 declaration
const CSS1Expression * GetNext() const
CSS1Token GetType() const
void Set(CSS1Token eTyp, const OUString &rVal, double nVal)
void GetURL(OUString &rURL) const
sal_uInt32 GetULength() const
sal_Unicode GetOp() const
const OUString & GetString() const
sal_Int32 GetSLength() const
bool GetColor(Color &rRGB) const
void SetBorderLine(SvxBoxItemLine nLine, SvxBoxItem &rBoxItem) const
SAL_WARN_UNUSED_RESULT WhichRangesContainer MergeRange(sal_uInt16 nFrom, sal_uInt16 nTo) const
static SvxCSS1ItemIds aItemIds
static void ParseCSS1_left(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_border_width(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
CSS1PropertyEnum const aFontSizeTable[]
static void ParseCSS1_border_style(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_padding_left(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_orphans(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
CSS1PropertyEnum const aPositionTable[]
static void ParseCSS1_border_right(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void MergeHori(SvxGraphicPosition &ePos, SvxGraphicPosition eHori)
CSS1PropertyEnum const aBorderStyleTable[]
static void ParseCSS1_letter_spacing(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
CSS1PropertyEnum const aFloatTable[]
static void ParseCSS1_page_break_before(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_border_xxx_width(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &, SvxBoxItemLine nWhichLine)
static void ParseCSS1_margin_top(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aSizeTable[]
static void ParseCSS1_visibility(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_background(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &rParser)
static void ParseCSS1_font_size(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &rParser)
static void ParseCSS1_border_top(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void ParseCSS1_font_variant(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_so_language(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_top(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aBorderWidthTable[]
static void ParseCSS1_widows(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static bool ParseCSS1_padding_xxx(const CSS1Expression *pExpr, SvxCSS1PropertyInfo &rPropInfo, SvxBoxItemLine nWhichLine)
static void ParseCSS1_padding_top(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_padding_bottom(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
void(* FnParseCSS1Prop)(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
type of functions to parse CSS1 properties
static void ParseCSS1_float(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_background_color(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_border_left(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
CSS1PropertyEnum const aTextAlignTable[]
static void ParseCSS1_line_height(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_margin_right(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aTextTransformTable[]
static void ParseCSS1_margin_bottom(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aDirectionTable[]
static void ParseCSS1_font_style(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
CSS1PropertyEnum const aPageBreakTable[]
static void ParseCSS1_width(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_text_transform(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_border_top_width(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static bool CSS1PropEntryFindCompare(CSS1PropEntry const &lhs, OUString const &s)
CSS1PropertyEnum const aBGHoriPosTable[]
static void ParseCSS1_page_break_xxx(const CSS1Expression *pExpr, SvxCSS1PageBreak &rPBreak)
static void ParseCSS1_border_left_width(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
CSS1PropEntry const aCSS1PropFnTab[]
static bool CSS1PropEntryCompare(const CSS1PropEntry &lhs, const CSS1PropEntry &rhs)
#define CSS1_PROP_ENTRY(p)
static void ParseCSS1_padding_right(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aFontVariantTable[]
static void ParseCSS1_text_indent(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aFontWeightTable[]
static void ParseCSS1_margin_left(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aNumberStyleTable[]
static void ParseCSS1_font_family(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &rParser)
static void ParseCSS1_margin(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_border_right_width(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void ParseCSS1_font_weight(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_page_break_after(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_border(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void ParseCSS1_position(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void MergeVert(SvxGraphicPosition &ePos, SvxGraphicPosition eVert)
static void ParseCSS1_size(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_column_count(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_height(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aFontStyleTable[]
static void ParseCSS1_length(const CSS1Expression *pExpr, tools::Long &rLength, SvxCSS1LengthType &rLengthType, bool bHori)
static void ParseCSS1_padding(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
CSS1PropertyEnum const aBGVertPosTable[]
static void ParseCSS1_font(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void ParseCSS1_page_break_inside(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
sal_uInt16 const aBorderWidths[]
CSS1PropertyEnum const aBGRepeatTable[]
static void ParseCSS1_text_decoration(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
CSS1PropertyEnum const aBulletStyleTable[]
static void ParseCSS1_list_style_type(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_color(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_border_bottom_width(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void ParseCSS1_border_color(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &)
static void ParseCSS1_border_xxx(const CSS1Expression *pExpr, SfxItemSet &, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &, SvxBoxItemLine nWhichLine, bool bAll)
static void ParseCSS1_border_bottom(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo, const SvxCSS1Parser &rParser)
static void ParseCSS1_direction(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
static void ParseCSS1_text_align(const CSS1Expression *pExpr, SfxItemSet &rItemSet, SvxCSS1PropertyInfo &, const SvxCSS1Parser &)
#define SVX_CSS1_BORDERINFO_STYLE
#define SVX_CSS1_BORDERINFO_COLOR
@ SVX_CSS1_STYPE_LANDSCAPE
@ SVX_CSS1_STYPE_PORTRAIT
@ SVX_CSS1_LTYPE_PERCENTAGE
#define SVX_CSS1_BORDERINFO_WIDTH
SVX_NUM_CHARS_LOWER_LETTER
SVX_NUM_CHARS_UPPER_LETTER