CWS-TOOLING: integrate CWS overline3

2008-12-11 15:24:46 +0100 fredrikh  r265314 : i97099
2008-12-11 15:20:37 +0100 fredrikh  r265313 : i97099
2008-12-11 15:18:00 +0100 fredrikh  r265312 : i97099
2008-12-11 15:17:00 +0100 fredrikh  r265311 : i97099
2008-12-11 15:13:20 +0100 fredrikh  r265309 : i97144
2008-12-11 15:06:24 +0100 fredrikh  r265306 : i97099
2008-11-24 10:41:42 +0100 fme  r264213 : #i5991# Overline support
2008-11-24 10:39:53 +0100 fme  r264212 : #i5991# Overline support
2008-11-24 10:02:13 +0100 fme  r264209 : #5991# Overline support
2008-11-24 10:01:26 +0100 fme  r264208 : #5991# Overline support
2008-11-24 09:59:11 +0100 fme  r264207 : #5991# Overline support
2008-11-24 09:57:11 +0100 fme  r264206 : #5991# Overline support
2008-11-14 10:36:44 +0100 fme  r263667 : CWS-TOOLING: rebase CWS overline3 to trunk@263288 (milestone: DEV300:m35)
2008-11-13 16:12:13 +0100 fme  r263649 : #i5991# migrate CWS overline3 to SVN.
This commit is contained in:
Jens-Heiner Rechtien
2009-01-05 17:49:45 +00:00
parent 347a162274
commit a99237ba49
25 changed files with 1391 additions and 806 deletions

View File

@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: mtftools.cxx,v $
* $Revision: 1.14 $
* $Revision: 1.14.6.1 $
*
* This file is part of OpenOffice.org.
*
@@ -308,7 +308,7 @@ namespace cppcanvas
return true;
}
// create underline/strikeout line info struct
// create overline/underline/strikeout line info struct
TextLineInfo createTextLineInfo( const ::VirtualDevice& rVDev,
const ::cppcanvas::internal::OutDevState& rState )
{
@@ -325,8 +325,11 @@ namespace cppcanvas
TextLineInfo aTextInfo(
(aMetric.GetDescent() + 2) / 4.0,
((aMetric.GetIntLeading() + 1.5) / 3.0),
(aMetric.GetIntLeading() / 2.0) - aMetric.GetAscent(),
aMetric.GetDescent() / 2.0,
(aMetric.GetIntLeading() - aMetric.GetAscent()) / 3.0,
rState.textOverlineStyle,
rState.textUnderlineStyle,
rState.textStrikeoutStyle );
@@ -397,6 +400,111 @@ namespace cppcanvas
// fill the polypolygon with all text lines
::basegfx::B2DPolyPolygon aTextLinesPolyPoly;
switch( rTextLineInfo.mnOverlineStyle )
{
case UNDERLINE_NONE: // nothing to do
// FALLTHROUGH intended
case UNDERLINE_DONTKNOW:
break;
case UNDERLINE_SMALLWAVE: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_WAVE: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_SINGLE:
appendRect(
aTextLinesPolyPoly,
rStartPos,
0,
rTextLineInfo.mnOverlineOffset,
rLineWidth,
rTextLineInfo.mnOverlineOffset + rTextLineInfo.mnOverlineHeight );
break;
case UNDERLINE_BOLDDOTTED: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_BOLDDASH: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_BOLDLONGDASH: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_BOLDDASHDOT: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_BOLDDASHDOTDOT:// TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_BOLDWAVE: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_BOLD:
appendRect(
aTextLinesPolyPoly,
rStartPos,
0,
rTextLineInfo.mnOverlineOffset - rTextLineInfo.mnOverlineHeight,
rLineWidth,
rTextLineInfo.mnOverlineOffset + rTextLineInfo.mnOverlineHeight );
break;
case UNDERLINE_DOUBLEWAVE: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_DOUBLE:
appendRect(
aTextLinesPolyPoly,
rStartPos,
0,
rTextLineInfo.mnOverlineOffset - rTextLineInfo.mnOverlineHeight * 2.0 ,
rLineWidth,
rTextLineInfo.mnOverlineOffset - rTextLineInfo.mnOverlineHeight );
appendRect(
aTextLinesPolyPoly,
rStartPos,
0,
rTextLineInfo.mnOverlineOffset + rTextLineInfo.mnOverlineHeight,
rLineWidth,
rTextLineInfo.mnOverlineOffset + rTextLineInfo.mnOverlineHeight * 2.0 );
break;
case UNDERLINE_DASHDOTDOT: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_DOTTED:
appendDashes(
aTextLinesPolyPoly,
rStartPos.getX(),
rStartPos.getY() + rTextLineInfo.mnOverlineOffset,
rLineWidth,
rTextLineInfo.mnOverlineHeight,
rTextLineInfo.mnOverlineHeight,
2*rTextLineInfo.mnOverlineHeight );
break;
case UNDERLINE_DASHDOT: // TODO(F3): NYI
// FALLTHROUGH intended
case UNDERLINE_DASH:
appendDashes(
aTextLinesPolyPoly,
rStartPos.getX(),
rStartPos.getY() + rTextLineInfo.mnOverlineOffset,
rLineWidth,
rTextLineInfo.mnOverlineHeight,
3*rTextLineInfo.mnOverlineHeight,
6*rTextLineInfo.mnOverlineHeight );
break;
case UNDERLINE_LONGDASH:
appendDashes(
aTextLinesPolyPoly,
rStartPos.getX(),
rStartPos.getY() + rTextLineInfo.mnOverlineOffset,
rLineWidth,
rTextLineInfo.mnOverlineHeight,
6*rTextLineInfo.mnOverlineHeight,
12*rTextLineInfo.mnOverlineHeight );
break;
default:
ENSURE_OR_THROW( false,
"::cppcanvas::internal::createTextLinesPolyPolygon(): Unexpected overline case" );
}
switch( rTextLineInfo.mnUnderlineStyle )
{
case UNDERLINE_NONE: // nothing to do