summaryrefslogtreecommitdiff
path: root/drawinglayer
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2008-12-04 15:18:39 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2008-12-04 15:18:39 +0000
commitdb7bae13b3b5ea456d51510e66735618fdf87881 (patch)
tree16e0586d5252006dcea2894bc6c6ec13f716c95c /drawinglayer
parentd4b5c46129edaab43bc9e6bd471129952c62882e (diff)
Revert r264854: commit was not meant for trunk.
Diffstat (limited to 'drawinglayer')
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx17
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx2
-rw-r--r--drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx484
-rw-r--r--drawinglayer/source/primitive2d/textlayoutdevice.cxx14
-rw-r--r--drawinglayer/source/processor2d/vclprocessor2d.cxx62
5 files changed, 254 insertions, 325 deletions
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
index a9f8e562b9..f91fb7aab2 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
@@ -55,7 +55,6 @@ namespace drawinglayer
{
namespace primitive2d
{
- // This is used for both underline and overline
enum FontUnderline
{
FONT_UNDERLINE_NONE,
@@ -107,9 +106,7 @@ namespace drawinglayer
class TextDecoratedPortionPrimitive2D : public TextSimplePortionPrimitive2D
{
private:
- basegfx::BColor maOverlineColor;
basegfx::BColor maTextlineColor;
- FontUnderline meFontOverline;
FontUnderline meFontUnderline;
FontStrikeout meFontStrikeout;
FontEmphasisMark meFontEmphasisMark;
@@ -123,16 +120,6 @@ namespace drawinglayer
unsigned mbShadow : 1;
// helper methods
- void impCreateTextLine(
- std::vector< Primitive2DReference >& rTarget,
- basegfx::DecomposedB2DHomMatrixContainer& rDecTrans,
- const basegfx::B2DHomMatrix &rUnscaledTransform,
- FontUnderline eLineStyle,
- double fLineOffset,
- double fLineHeight,
- double fLineWidth,
- const basegfx::BColor& rLineColor) const;
-
void impCreateGeometryContent(
std::vector< Primitive2DReference >& rTarget,
basegfx::DecomposedB2DHomMatrixContainer& rDecTrans,
@@ -167,9 +154,7 @@ namespace drawinglayer
const basegfx::BColor& rFontColor,
// local parameters
- const basegfx::BColor& rOverlineColor,
const basegfx::BColor& rTextlineColor,
- FontUnderline eFontOverline = FONT_UNDERLINE_NONE,
FontUnderline eFontUnderline = FONT_UNDERLINE_NONE,
bool bUnderlineAbove = false,
FontStrikeout eFontStrikeout = FONT_STRIKEOUT_NONE,
@@ -181,12 +166,10 @@ namespace drawinglayer
bool bShadow = false);
// get data
- FontUnderline getFontOverline() const { return meFontOverline; }
FontUnderline getFontUnderline() const { return meFontUnderline; }
FontStrikeout getFontStrikeout() const { return meFontStrikeout; }
FontEmphasisMark getFontEmphasisMark() const { return meFontEmphasisMark; }
FontRelief getFontRelief() const { return meFontRelief; }
- basegfx::BColor getOverlineColor() const { return maOverlineColor; }
basegfx::BColor getTextlineColor() const { return maTextlineColor; }
bool getUnderlineAbove() const { return mbUnderlineAbove; }
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
index 213cf2121f..5f17411969 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
@@ -79,8 +79,6 @@ namespace drawinglayer
void setFontAttributes(const FontAttributes& rFontAttributes, double fFontScaleX, double fFontScaleY);
double getTextHeight() const;
- double getOverlineHeight() const;
- double getOverlineOffset() const;
double getUnderlineHeight() const;
double getUnderlineOffset() const;
double getStrikeoutOffset() const;
diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
index b1fb336f3c..b321dac20d 100644
--- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
@@ -55,214 +55,8 @@ namespace drawinglayer
{
namespace primitive2d
{
- void TextDecoratedPortionPrimitive2D::impCreateTextLine(
- std::vector< Primitive2DReference >& rTarget,
- basegfx::DecomposedB2DHomMatrixContainer& rDecTrans,
- const basegfx::B2DHomMatrix &rUnscaledTransform,
- FontUnderline eLineStyle,
- double fLineOffset,
- double fLineHeight,
- double fLineWidth,
- const basegfx::BColor& rLineColor) const
- {
- bool bDoubleLine(false);
- bool bWaveLine(false);
- bool bBoldLine(false);
- const int* pDotDashArray(0);
- basegfx::B2DLineJoin eLineJoin(basegfx::B2DLINEJOIN_NONE);
-
- static const int aDottedArray[] = { 1, 1, 0}; // DOTTED LINE
- static const int aDotDashArray[] = { 1, 1, 4, 1, 0}; // DASHDOT
- static const int aDashDotDotArray[] = { 1, 1, 1, 1, 4, 1, 0}; // DASHDOTDOT
- static const int aDashedArray[] = { 5, 2, 0}; // DASHED LINE
- static const int aLongDashArray[] = { 7, 2, 0}; // LONGDASH
-
- switch(eLineStyle)
- {
- default: // case FONT_UNDERLINE_SINGLE:
- {
- break;
- }
- case FONT_UNDERLINE_DOUBLE:
- {
- bDoubleLine = true;
- break;
- }
- case FONT_UNDERLINE_DOTTED:
- {
- pDotDashArray = aDottedArray;
- break;
- }
- case FONT_UNDERLINE_DASH:
- {
- pDotDashArray = aDashedArray;
- break;
- }
- case FONT_UNDERLINE_LONGDASH:
- {
- pDotDashArray = aLongDashArray;
- break;
- }
- case FONT_UNDERLINE_DASHDOT:
- {
- pDotDashArray = aDotDashArray;
- break;
- }
- case FONT_UNDERLINE_DASHDOTDOT:
- {
- pDotDashArray = aDashDotDotArray;
- break;
- }
- case FONT_UNDERLINE_SMALLWAVE:
- {
- bWaveLine = true;
- break;
- }
- case FONT_UNDERLINE_WAVE:
- {
- bWaveLine = true;
- break;
- }
- case FONT_UNDERLINE_DOUBLEWAVE:
- {
- bDoubleLine = true;
- bWaveLine = true;
- break;
- }
- case FONT_UNDERLINE_BOLD:
- {
- bBoldLine = true;
- break;
- }
- case FONT_UNDERLINE_BOLDDOTTED:
- {
- bBoldLine = true;
- pDotDashArray = aDottedArray;
- break;
- }
- case FONT_UNDERLINE_BOLDDASH:
- {
- bBoldLine = true;
- pDotDashArray = aDashedArray;
- break;
- }
- case FONT_UNDERLINE_BOLDLONGDASH:
- {
- bBoldLine = true;
- pDotDashArray = aLongDashArray;
- break;
- }
- case FONT_UNDERLINE_BOLDDASHDOT:
- {
- bBoldLine = true;
- pDotDashArray = aDotDashArray;
- break;
- }
- case FONT_UNDERLINE_BOLDDASHDOTDOT:
- {
- bBoldLine = true;
- pDotDashArray = aDashDotDotArray;
- break;
- }
- case FONT_UNDERLINE_BOLDWAVE:
- {
- bWaveLine = true;
- bBoldLine = true;
- break;
- }
- }
-
- if(bBoldLine)
- {
- fLineHeight *= 2.0;
- }
-
- if(bDoubleLine)
- {
- fLineOffset -= 0.50 * fLineHeight;
- fLineHeight *= 0.64;
- }
-
- if(bWaveLine)
- {
- eLineJoin = basegfx::B2DLINEJOIN_ROUND;
- fLineHeight *= 0.5;
- }
-
- // prepare Line and Stroke Attributes
- const attribute::LineAttribute aLineAttribute(rLineColor, fLineHeight, eLineJoin);
- attribute::StrokeAttribute aStrokeAttribute;
-
- if(pDotDashArray)
- {
- ::std::vector< double > aDoubleArray;
-
- for(const int* p = pDotDashArray; *p; ++p)
- {
- aDoubleArray.push_back((double)(*p) * fLineHeight);
- }
-
- aStrokeAttribute = attribute::StrokeAttribute(aDoubleArray);
- }
-
- // create base polygon and new primitive
- basegfx::B2DPolygon aLine;
- Primitive2DReference aNewPrimitive;
-
- aLine.append(basegfx::B2DPoint(0.0, fLineOffset));
- aLine.append(basegfx::B2DPoint(fLineWidth, fLineOffset));
- aLine.transform(rUnscaledTransform);
-
- if(bWaveLine)
- {
- double fWaveWidth(4.0 * fLineHeight);
-
- if(FONT_UNDERLINE_SMALLWAVE == eLineStyle)
- {
- fWaveWidth *= 0.7;
- }
- else if(FONT_UNDERLINE_WAVE == eLineStyle)
- {
- // extra multiply to get the same WaveWidth as with the bold version
- fWaveWidth *= 2.0;
- }
-
- aNewPrimitive = Primitive2DReference(new PolygonWavePrimitive2D(aLine, aLineAttribute, aStrokeAttribute, fWaveWidth, 0.5 * fWaveWidth));
- }
- else
- {
- aNewPrimitive = Primitive2DReference(new PolygonStrokePrimitive2D(aLine, aLineAttribute, aStrokeAttribute));
- }
-
- // add primitive
- rTarget.push_back(aNewPrimitive);
-
- if(bDoubleLine)
- {
- // double line, create 2nd primitive with offset using TransformPrimitive based on
- // already created NewPrimitive
- const double fLineDist((bWaveLine ? 3.0 : 2.0) * fLineHeight);
- basegfx::B2DHomMatrix aTransform;
-
- // move base point of text to 0.0 and de-rotate
- aTransform.translate(-rDecTrans.getTranslate().getX(), -rDecTrans.getTranslate().getY());
- aTransform.rotate(-rDecTrans.getRotate());
-
- // translate in Y by offset
- aTransform.translate(0.0, fLineDist);
-
- // move back and rotate
- aTransform.rotate(rDecTrans.getRotate());
- aTransform.translate(rDecTrans.getTranslate().getX(), rDecTrans.getTranslate().getY());
-
- // add transform primitive
- const Primitive2DSequence aContent(&aNewPrimitive, 1);
- rTarget.push_back(Primitive2DReference(new TransformPrimitive2D(aTransform, aContent)));
- }
- }
-
void TextDecoratedPortionPrimitive2D::impCreateGeometryContent(
- std::vector< Primitive2DReference >& rTarget,
+ std::vector< Primitive2DReference >& rTarget,
basegfx::DecomposedB2DHomMatrixContainer& rDecTrans,
const String& rText,
xub_StrLen aTextPosition,
@@ -272,32 +66,31 @@ namespace drawinglayer
{
// create the SimpleTextPrimitive needed in any case
rTarget.push_back(Primitive2DReference(new TextSimplePortionPrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- rText,
+ rDecTrans.getB2DHomMatrix(),
+ rText,
aTextPosition,
aTextLength,
- rDXArray,
- rFontAttributes,
- getLocale(),
+ rDXArray,
+ rFontAttributes,
+ getLocale(),
getFontColor())));
// see if something else needs to be done
- const bool bOverlineUsed(FONT_UNDERLINE_NONE != getFontOverline());
const bool bUnderlineUsed(FONT_UNDERLINE_NONE != getFontUnderline());
const bool bStrikeoutUsed(FONT_STRIKEOUT_NONE != getFontStrikeout());
- if(bOverlineUsed || bUnderlineUsed || bStrikeoutUsed)
+ if(bUnderlineUsed || bStrikeoutUsed)
{
// common preparations
basegfx::B2DHomMatrix aUnscaledTransform;
TextLayouterDevice aTextLayouter;
-
+
// unscaled is needed since scale contains already the font size
aUnscaledTransform.shearX(rDecTrans.getShearX());
aUnscaledTransform.rotate(rDecTrans.getRotate());
aUnscaledTransform.translate(rDecTrans.getTranslate().getX(), rDecTrans.getTranslate().getY());
- // TextLayouterDevice is needed to get metrics for text decorations like
+ // TextLayouterDevice is needed to get metrics for text decorations like
// underline/strikeout/emphasis marks from it. For setup, the font size is needed
aTextLayouter.setFontAttributes(getFontAttributes(), rDecTrans.getScale().getX(), rDecTrans.getScale().getY());
@@ -313,18 +106,205 @@ namespace drawinglayer
fTextWidth = rDXArray.back() * rDecTrans.getScale().getX();
}
- if(bOverlineUsed)
- {
- // create primitive geometry for overline
- impCreateTextLine(rTarget, rDecTrans, aUnscaledTransform, getFontOverline(), aTextLayouter.getOverlineOffset(),
- aTextLayouter.getOverlineHeight(), fTextWidth, getOverlineColor());
- }
-
if(bUnderlineUsed)
{
// create primitive geometry for underline
- impCreateTextLine(rTarget, rDecTrans, aUnscaledTransform, getFontUnderline(), aTextLayouter.getUnderlineOffset(),
- aTextLayouter.getUnderlineHeight(), fTextWidth, getTextlineColor());
+ bool bDoubleLine(false);
+ bool bWaveLine(false);
+ bool bBoldLine(false);
+ const int* pDotDashArray(0);
+ basegfx::B2DLineJoin eLineJoin(basegfx::B2DLINEJOIN_NONE);
+ double fUnderlineOffset(aTextLayouter.getUnderlineOffset());
+ double fUnderlineHeight(aTextLayouter.getUnderlineHeight());
+
+ static const int aDottedArray[] = { 1, 1, 0}; // DOTTED LINE
+ static const int aDotDashArray[] = { 1, 1, 4, 1, 0}; // DASHDOT
+ static const int aDashDotDotArray[] = { 1, 1, 1, 1, 4, 1, 0}; // DASHDOTDOT
+ static const int aDashedArray[] = { 5, 2, 0}; // DASHED LINE
+ static const int aLongDashArray[] = { 7, 2, 0}; // LONGDASH
+
+ switch(getFontUnderline())
+ {
+ default: // case FONT_UNDERLINE_SINGLE:
+ {
+ break;
+ }
+ case FONT_UNDERLINE_DOUBLE:
+ {
+ bDoubleLine = true;
+ break;
+ }
+ case FONT_UNDERLINE_DOTTED:
+ {
+ pDotDashArray = aDottedArray;
+ break;
+ }
+ case FONT_UNDERLINE_DASH:
+ {
+ pDotDashArray = aDashedArray;
+ break;
+ }
+ case FONT_UNDERLINE_LONGDASH:
+ {
+ pDotDashArray = aLongDashArray;
+ break;
+ }
+ case FONT_UNDERLINE_DASHDOT:
+ {
+ pDotDashArray = aDotDashArray;
+ break;
+ }
+ case FONT_UNDERLINE_DASHDOTDOT:
+ {
+ pDotDashArray = aDashDotDotArray;
+ break;
+ }
+ case FONT_UNDERLINE_SMALLWAVE:
+ {
+ bWaveLine = true;
+ break;
+ }
+ case FONT_UNDERLINE_WAVE:
+ {
+ bWaveLine = true;
+ break;
+ }
+ case FONT_UNDERLINE_DOUBLEWAVE:
+ {
+ bDoubleLine = true;
+ bWaveLine = true;
+ break;
+ }
+ case FONT_UNDERLINE_BOLD:
+ {
+ bBoldLine = true;
+ break;
+ }
+ case FONT_UNDERLINE_BOLDDOTTED:
+ {
+ bBoldLine = true;
+ pDotDashArray = aDottedArray;
+ break;
+ }
+ case FONT_UNDERLINE_BOLDDASH:
+ {
+ bBoldLine = true;
+ pDotDashArray = aDashedArray;
+ break;
+ }
+ case FONT_UNDERLINE_BOLDLONGDASH:
+ {
+ bBoldLine = true;
+ pDotDashArray = aLongDashArray;
+ break;
+ }
+ case FONT_UNDERLINE_BOLDDASHDOT:
+ {
+ bBoldLine = true;
+ pDotDashArray = aDotDashArray;
+ break;
+ }
+ case FONT_UNDERLINE_BOLDDASHDOTDOT:
+ {
+ bBoldLine = true;
+ pDotDashArray = aDashDotDotArray;
+ break;
+ }
+ case FONT_UNDERLINE_BOLDWAVE:
+ {
+ bWaveLine = true;
+ bBoldLine = true;
+ break;
+ }
+ }
+
+ if(bBoldLine)
+ {
+ fUnderlineHeight *= 2.0;
+ }
+
+ if(bDoubleLine)
+ {
+ fUnderlineOffset -= 0.50 * fUnderlineHeight;
+ fUnderlineHeight *= 0.64;
+ }
+
+ if(bWaveLine)
+ {
+ eLineJoin = basegfx::B2DLINEJOIN_ROUND;
+ fUnderlineHeight *= 0.5;
+ }
+
+ // prepare Line and Stroke Attributes
+ const attribute::LineAttribute aLineAttribute(getTextlineColor(), fUnderlineHeight, eLineJoin);
+ attribute::StrokeAttribute aStrokeAttribute;
+
+ if(pDotDashArray)
+ {
+ ::std::vector< double > aDoubleArray;
+
+ for(const int* p = pDotDashArray; *p; ++p)
+ {
+ aDoubleArray.push_back((double)(*p) * fUnderlineHeight);
+ }
+
+ aStrokeAttribute = attribute::StrokeAttribute(aDoubleArray);
+ }
+
+ // create base polygon and new primitive
+ basegfx::B2DPolygon aUnderline;
+ Primitive2DReference aNewPrimitive;
+
+ aUnderline.append(basegfx::B2DPoint(0.0, fUnderlineOffset));
+ aUnderline.append(basegfx::B2DPoint(fTextWidth, fUnderlineOffset));
+ aUnderline.transform(aUnscaledTransform);
+
+ if(bWaveLine)
+ {
+ double fWaveWidth(4.0 * fUnderlineHeight);
+
+ if(primitive2d::FONT_UNDERLINE_SMALLWAVE == getFontUnderline())
+ {
+ fWaveWidth *= 0.7;
+ }
+ else if(primitive2d::FONT_UNDERLINE_WAVE == getFontUnderline())
+ {
+ // extra multiply to get the same WaveWidth as with the bold version
+ fWaveWidth *= 2.0;
+ }
+
+ aNewPrimitive = Primitive2DReference(new PolygonWavePrimitive2D(aUnderline, aLineAttribute, aStrokeAttribute, fWaveWidth, 0.5 * fWaveWidth));
+ }
+ else
+ {
+ aNewPrimitive = Primitive2DReference(new PolygonStrokePrimitive2D(aUnderline, aLineAttribute, aStrokeAttribute));
+ }
+
+ // add primitive
+ rTarget.push_back(aNewPrimitive);
+
+ if(bDoubleLine)
+ {
+ // double line, create 2nd primitive with offset using TransformPrimitive based on
+ // already created NewPrimitive
+ const double fLineDist((bWaveLine ? 3.0 : 2.0) * fUnderlineHeight);
+ basegfx::B2DHomMatrix aTransform;
+
+ // move base point of text to 0.0 and de-rotate
+ aTransform.translate(-rDecTrans.getTranslate().getX(), -rDecTrans.getTranslate().getY());
+ aTransform.rotate(-rDecTrans.getRotate());
+
+ // translate in Y by offset
+ aTransform.translate(0.0, fLineDist);
+
+ // move back and rotate
+ aTransform.rotate(rDecTrans.getRotate());
+ aTransform.translate(rDecTrans.getTranslate().getX(), rDecTrans.getTranslate().getY());
+
+ // add transform primitive
+ const Primitive2DSequence aContent(&aNewPrimitive, 1);
+ rTarget.push_back(Primitive2DReference(new TransformPrimitive2D(aTransform, aContent)));
+ }
}
if(bStrikeoutUsed)
@@ -340,7 +320,7 @@ namespace drawinglayer
const sal_uInt32 nStrikeCharCount(static_cast< sal_uInt32 >(fStrikeCharCount + 0.9));
const double fScaleX(rDecTrans.getScale().getX());
const double fStrikeCharWidthUnscaled(basegfx::fTools::equalZero(fScaleX) ? fStrikeCharWidth : fStrikeCharWidth/fScaleX);
-
+
std::vector<double> aDXArray(nStrikeCharCount);
String aStrikeoutString;
@@ -349,15 +329,15 @@ namespace drawinglayer
aStrikeoutString += aSingleCharString;
aDXArray[a] = (a + 1) * fStrikeCharWidthUnscaled;
}
-
+
rTarget.push_back(Primitive2DReference(new TextSimplePortionPrimitive2D(
- rDecTrans.getB2DHomMatrix(),
- aStrikeoutString,
+ rDecTrans.getB2DHomMatrix(),
+ aStrikeoutString,
0,
aStrikeoutString.Len(),
- aDXArray,
- rFontAttributes,
- getLocale(),
+ aDXArray,
+ rFontAttributes,
+ getLocale(),
getFontColor())));
}
else
@@ -398,7 +378,7 @@ namespace drawinglayer
aStrikeoutLine.append(basegfx::B2DPoint(0.0, -fStrikeoutOffset));
aStrikeoutLine.append(basegfx::B2DPoint(fTextWidth, -fStrikeoutOffset));
aStrikeoutLine.transform(aUnscaledTransform);
-
+
const attribute::LineAttribute aLineAttribute(getFontColor(), fStrikeoutHeight, basegfx::B2DLINEJOIN_NONE);
Primitive2DReference aNewPrimitive(new PolygonStrokePrimitive2D(aStrikeoutLine, aLineAttribute));
@@ -527,7 +507,7 @@ namespace drawinglayer
// prepare new DXArray for the single word
::std::vector< double > aNewDXArray(
- getDXArray().begin() + static_cast< sal_uInt32 >(nNewTextStart - getTextPosition()),
+ getDXArray().begin() + static_cast< sal_uInt32 >(nNewTextStart - getTextPosition()),
getDXArray().begin() + static_cast< sal_uInt32 >(nNewTextEnd - getTextPosition()));
if(bNewStartIsNotOldStart)
@@ -540,15 +520,15 @@ namespace drawinglayer
aNewDXArray[a] -= fDistance;
}
}
-
+
// create geometry content for the single word
basegfx::DecomposedB2DHomMatrixContainer aDecTrans(aNewTransform);
- impCreateGeometryContent(rTarget, aDecTrans, getText(), nNewTextStart,
+ impCreateGeometryContent(rTarget, aDecTrans, getText(), nNewTextStart,
nNewTextEnd - nNewTextStart, aNewDXArray, aNewFontAttributes);
// prepare next word and truncate to possibilities
aNextWordBoundary = xLocalBreakIterator->nextWord(
- getText(), aNextWordBoundary.endPos, getLocale(),
+ getText(), aNextWordBoundary.endPos, getLocale(),
::com::sun::star::i18n::WordType::ANYWORD_IGNOREWHITESPACES);
impCorrectTextBoundary(aNextWordBoundary);
}
@@ -562,7 +542,7 @@ namespace drawinglayer
basegfx::DecomposedB2DHomMatrixContainer aDecTrans(getTextTransform());
Primitive2DSequence aRetval;
- // create basic geometry such as SimpleTextPrimitive, Underline,
+ // create basic geometry such as SimpleTextPrimitive, Underline,
// Strikeuot, etc...
if(getWordLineMode())
{
@@ -589,7 +569,7 @@ namespace drawinglayer
// convert to Primitive2DSequence
const sal_uInt32 nMemberCount(aNewPrimitives.size());
-
+
if(nMemberCount)
{
aRetval.realloc(nMemberCount);
@@ -615,13 +595,13 @@ namespace drawinglayer
if(bHasShadow)
{
// create shadow with current content (in aRetval). Text shadow
- // is constant, relative to font size, rotated with the text and has a
+ // is constant, relative to font size, rotated with the text and has a
// constant color.
// shadow parameter values
static double fFactor(1.0 / 24.0);
const double fTextShadowOffset(aDecTrans.getScale().getY() * fFactor);
static basegfx::BColor aShadowColor(0.3, 0.3, 0.3);
-
+
// preapare shadow transform matrix
basegfx::B2DHomMatrix aShadowTransform;
aShadowTransform.translate(fTextShadowOffset, fTextShadowOffset);
@@ -665,9 +645,9 @@ namespace drawinglayer
}
Primitive2DReference aNewTextEffect(new TextEffectPrimitive2D(
- aRetval,
+ aRetval,
aDecTrans.getTranslate(),
- aDecTrans.getRotate(),
+ aDecTrans.getRotate(),
aTextEffectStyle2D));
aRetval = Primitive2DSequence(&aNewTextEffect, 1);
}
@@ -676,9 +656,9 @@ namespace drawinglayer
// create outline using an own helper primitive since this will
// be view-dependent
Primitive2DReference aNewTextEffect(new TextEffectPrimitive2D(
- aRetval,
- aDecTrans.getTranslate(),
- aDecTrans.getRotate(),
+ aRetval,
+ aDecTrans.getTranslate(),
+ aDecTrans.getRotate(),
TEXTEFFECTSTYLE2D_OUTLINE));
aRetval = Primitive2DSequence(&aNewTextEffect, 1);
}
@@ -701,7 +681,7 @@ namespace drawinglayer
// TextSimplePortionPrimitive2D parameters
const basegfx::B2DHomMatrix& rNewTransform,
- const String& rText,
+ const String& rText,
xub_StrLen aTextPosition,
xub_StrLen aTextLength,
const ::std::vector< double >& rDXArray,
@@ -710,9 +690,7 @@ namespace drawinglayer
const basegfx::BColor& rFontColor,
// local parameters
- const basegfx::BColor& rOverlineColor,
const basegfx::BColor& rTextlineColor,
- FontUnderline eFontOverline,
FontUnderline eFontUnderline,
bool bUnderlineAbove,
FontStrikeout eFontStrikeout,
@@ -723,9 +701,7 @@ namespace drawinglayer
FontRelief eFontRelief,
bool bShadow)
: TextSimplePortionPrimitive2D(rNewTransform, rText, aTextPosition, aTextLength, rDXArray, rFontAttributes, rLocale, rFontColor),
- maOverlineColor(rOverlineColor),
maTextlineColor(rTextlineColor),
- meFontOverline(eFontOverline),
meFontUnderline(eFontUnderline),
meFontStrikeout(eFontStrikeout),
meFontEmphasisMark(eFontEmphasisMark),
@@ -743,10 +719,8 @@ namespace drawinglayer
if(TextSimplePortionPrimitive2D::operator==(rPrimitive))
{
const TextDecoratedPortionPrimitive2D& rCompare = (TextDecoratedPortionPrimitive2D&)rPrimitive;
-
- return (getOverlineColor() == rCompare.getOverlineColor()
- && getTextlineColor() == rCompare.getTextlineColor()
- && getFontOverline() == rCompare.getFontOverline()
+
+ return (getTextlineColor() == rCompare.getTextlineColor()
&& getFontUnderline() == rCompare.getFontUnderline()
&& getFontStrikeout() == rCompare.getFontStrikeout()
&& getFontEmphasisMark() == rCompare.getFontEmphasisMark()
diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
index f02934a5e8..27eeeeabde 100644
--- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx
+++ b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
@@ -175,13 +175,6 @@ namespace drawinglayer
setFont(getVclFontFromFontAttributes(rFontAttributes, fFontScaleX, fFontScaleY, 0.0, mrDevice));
}
- double TextLayouterDevice::getOverlineOffset() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = (rMetric.GetIntLeading() / 2.0) - rMetric.GetAscent();
- return fRet;
- }
-
double TextLayouterDevice::getUnderlineOffset() const
{
const ::FontMetric& rMetric = mrDevice.GetFontMetric();
@@ -196,13 +189,6 @@ namespace drawinglayer
return fRet;
}
- double TextLayouterDevice::getOverlineHeight() const
- {
- const ::FontMetric& rMetric = mrDevice.GetFontMetric();
- double fRet = rMetric.GetIntLeading() / 2.5;
- return fRet;
- }
-
double TextLayouterDevice::getUnderlineHeight() const
{
const ::FontMetric& rMetric = mrDevice.GetFontMetric();
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index 6e9459661f..bcd4ad24d7 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -102,34 +102,6 @@ namespace drawinglayer
using ::com::sun::star::awt::XWindow;
using ::com::sun::star::awt::PosSize::POSSIZE;
- static FontUnderline mapTextLineStyle(primitive2d::FontUnderline eLineStyle)
- {
- switch(eLineStyle)
- {
- default:
- DBG_WARNING1( "DrawingLayer: Unknown text line style attribute (%d)!", eLineStyle );
- // fall through
- case primitive2d::FONT_UNDERLINE_NONE: return UNDERLINE_NONE;
- case primitive2d::FONT_UNDERLINE_SINGLE: return UNDERLINE_SINGLE;
- case primitive2d::FONT_UNDERLINE_DOUBLE: return UNDERLINE_DOUBLE;
- case primitive2d::FONT_UNDERLINE_DOTTED: return UNDERLINE_DOTTED;
- case primitive2d::FONT_UNDERLINE_DASH: return UNDERLINE_DASH;
- case primitive2d::FONT_UNDERLINE_LONGDASH: return UNDERLINE_LONGDASH;
- case primitive2d::FONT_UNDERLINE_DASHDOT: return UNDERLINE_DASHDOT;
- case primitive2d::FONT_UNDERLINE_DASHDOTDOT: return UNDERLINE_DASHDOTDOT;
- case primitive2d::FONT_UNDERLINE_SMALLWAVE: return UNDERLINE_SMALLWAVE;
- case primitive2d::FONT_UNDERLINE_WAVE: return UNDERLINE_WAVE;
- case primitive2d::FONT_UNDERLINE_DOUBLEWAVE: return UNDERLINE_DOUBLEWAVE;
- case primitive2d::FONT_UNDERLINE_BOLD: return UNDERLINE_BOLD;
- case primitive2d::FONT_UNDERLINE_BOLDDOTTED: return UNDERLINE_BOLDDOTTED;
- case primitive2d::FONT_UNDERLINE_BOLDDASH: return UNDERLINE_BOLDDASH;
- case primitive2d::FONT_UNDERLINE_BOLDLONGDASH: return UNDERLINE_LONGDASH;
- case primitive2d::FONT_UNDERLINE_BOLDDASHDOT: return UNDERLINE_BOLDDASHDOT;
- case primitive2d::FONT_UNDERLINE_BOLDDASHDOTDOT:return UNDERLINE_BOLDDASHDOT;
- case primitive2d::FONT_UNDERLINE_BOLDWAVE: return UNDERLINE_BOLDWAVE;
- }
- }
-
//////////////////////////////////////////////////////////////////////////////
// rendering support
@@ -168,17 +140,33 @@ namespace drawinglayer
if( pTCPP != NULL )
{
- // set Overline attribute
- FontUnderline eFontOverline = mapTextLineStyle( pTCPP->getFontOverline() );
- if( eFontOverline != UNDERLINE_NONE )
+ // set Underline attribute
+ FontUnderline eFontUnderline = UNDERLINE_NONE;
+ switch( pTCPP->getFontUnderline() )
{
- aFont.SetOverline( eFontOverline );
- if( pTCPP->getWordLineMode() )
- aFont.SetWordLineMode( true );
+ default:
+ DBG_WARNING1( "DrawingLayer: Unknown underline attribute (%d)!", pTCPP->getFontUnderline() );
+ // fall through
+ case primitive2d::FONT_UNDERLINE_NONE: eFontUnderline = UNDERLINE_NONE; break;
+ case primitive2d::FONT_UNDERLINE_SINGLE: eFontUnderline = UNDERLINE_SINGLE; break;
+ case primitive2d::FONT_UNDERLINE_DOUBLE: eFontUnderline = UNDERLINE_DOUBLE; break;
+ case primitive2d::FONT_UNDERLINE_DOTTED: eFontUnderline = UNDERLINE_DOTTED; break;
+ case primitive2d::FONT_UNDERLINE_DASH: eFontUnderline = UNDERLINE_DASH; break;
+ case primitive2d::FONT_UNDERLINE_LONGDASH: eFontUnderline = UNDERLINE_LONGDASH; break;
+ case primitive2d::FONT_UNDERLINE_DASHDOT: eFontUnderline = UNDERLINE_DASHDOT; break;
+ case primitive2d::FONT_UNDERLINE_DASHDOTDOT:eFontUnderline = UNDERLINE_DASHDOTDOT; break;
+ case primitive2d::FONT_UNDERLINE_SMALLWAVE: eFontUnderline = UNDERLINE_SMALLWAVE; break;
+ case primitive2d::FONT_UNDERLINE_WAVE: eFontUnderline = UNDERLINE_WAVE; break;
+ case primitive2d::FONT_UNDERLINE_DOUBLEWAVE:eFontUnderline = UNDERLINE_DOUBLEWAVE; break;
+ case primitive2d::FONT_UNDERLINE_BOLD: eFontUnderline = UNDERLINE_BOLD; break;
+ case primitive2d::FONT_UNDERLINE_BOLDDOTTED:eFontUnderline = UNDERLINE_BOLDDOTTED; break;
+ case primitive2d::FONT_UNDERLINE_BOLDDASH: eFontUnderline = UNDERLINE_BOLDDASH; break;
+ case primitive2d::FONT_UNDERLINE_BOLDLONGDASH:eFontUnderline = UNDERLINE_LONGDASH; break;
+ case primitive2d::FONT_UNDERLINE_BOLDDASHDOT:eFontUnderline = UNDERLINE_BOLDDASHDOT; break;
+ case primitive2d::FONT_UNDERLINE_BOLDDASHDOTDOT:eFontUnderline = UNDERLINE_BOLDDASHDOT; break;
+ case primitive2d::FONT_UNDERLINE_BOLDWAVE: eFontUnderline = UNDERLINE_BOLDWAVE; break;
}
- // set Underline attribute
- FontUnderline eFontUnderline = mapTextLineStyle( pTCPP->getFontUnderline() );
if( eFontUnderline != UNDERLINE_NONE )
{
aFont.SetUnderline( eFontUnderline );
@@ -193,7 +181,7 @@ namespace drawinglayer
switch( pTCPP->getFontStrikeout() )
{
default:
- DBG_WARNING1( "DrawingLayer: Unknown strikeout attribute (%d)!", pTCPP->getFontStrikeout() );
+ DBG_WARNING1( "DrawingLayer: Unknown strikeout attribute (%d)!", pTCPP->getFontUnderline() );
// fall through
case primitive2d::FONT_STRIKEOUT_NONE: eFontStrikeout = STRIKEOUT_NONE; break;
case primitive2d::FONT_STRIKEOUT_SINGLE: eFontStrikeout = STRIKEOUT_SINGLE; break;