Author: jghali
Date: Wed Sep 20 21:31:36 2017
New Revision: 22159
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22159
Log:
fix some cases of potential use of invalid pattern
Modified:
trunk/Scribus/scribus/pageitem_line.cpp
trunk/Scribus/scribus/scpageoutput.cpp
Modified: trunk/Scribus/scribus/pageitem_line.cpp
URL:
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22159&path=/trunk/Scribus/scribus/pageitem_line.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_line.cpp (original)
+++ trunk/Scribus/scribus/pageitem_line.cpp Wed Sep 20 21:31:36 2017
@@ -62,7 +62,8 @@
{
if (NamedLStyle.isEmpty())
{
- if ((!patternStrokeVal.isEmpty()) &&
(m_Doc->docPatterns.contains(patternStrokeVal)))
+ ScPattern *strokePattern =
m_Doc->checkedPattern(patternStrokeVal);
+ if (strokePattern)
{
if (patternStrokePath)
{
@@ -73,7 +74,7 @@
}
else
{
-
p->setPattern(&m_Doc->docPatterns[patternStrokeVal], patternStrokeScaleX,
patternStrokeScaleY, patternStrokeOffsetX, patternStrokeOffsetY,
patternStrokeRotation, patternStrokeSkewX, patternStrokeSkewY,
patternStrokeMirrorX, patternStrokeMirrorY);
+ p->setPattern(strokePattern,
patternStrokeScaleX, patternStrokeScaleY, patternStrokeOffsetX,
patternStrokeOffsetY, patternStrokeRotation, patternStrokeSkewX,
patternStrokeSkewY, patternStrokeMirrorX, patternStrokeMirrorY);
p->setStrokeMode(ScPainter::Pattern);
p->drawLine(FPoint(0, 0),
FPoint(m_width, 0));
}
Modified: trunk/Scribus/scribus/scpageoutput.cpp
URL:
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22159&path=/trunk/Scribus/scribus/scpageoutput.cpp
==============================================================================
--- trunk/Scribus/scribus/scpageoutput.cpp (original)
+++ trunk/Scribus/scribus/scpageoutput.cpp Wed Sep 20 21:31:36 2017
@@ -235,7 +235,8 @@
if (item->GrType == 8)
{
QString pat = item->pattern();
- if ((pat.isEmpty()) || (!m_doc->docPatterns.contains(pat)))
+ ScPattern *pattern = m_doc->checkedPattern(pat);
+ if (!pattern)
{
painter->m_fillGradient =
VGradientEx(VGradientEx::linear);
if (item->fillColor() != CommonStrings::None)
@@ -249,12 +250,11 @@
else
{
QTransform patternTransform;
- ScPattern& pattern =
m_doc->docPatterns[item->pattern()];
double patternScaleX, patternScaleY, patternOffsetX,
patternOffsetY, patternRotation, patternSkewX, patternSkewY;
bool patternMirrorX, patternMirrorY;
item->patternTransform(patternScaleX, patternScaleY,
patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY);
item->patternFlip(patternMirrorX, patternMirrorY);
- painter->setPattern(&pattern, patternScaleX,
patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX,
patternSkewY, patternMirrorX, patternMirrorY);
+ painter->setPattern(pattern, patternScaleX,
patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX,
patternSkewY, patternMirrorX, patternMirrorY);
painter->setFillMode(ScPainterExBase::Pattern);
}
}
@@ -376,11 +376,10 @@
else if ((item->GrMask == 3) || (item->GrMask == 6) || (item->GrMask ==
7) || (item->GrMask == 8))
{
QString patternMaskVal = item->patternMaskVal;
- if ((patternMaskVal.isEmpty()) ||
(!m_doc->docPatterns.contains(patternMaskVal)))
- painter->setMaskMode(0);
- else
- {
-
painter->setPatternMask(&m_doc->docPatterns[patternMaskVal],
item->patternMaskScaleX, item->patternMaskScaleY, item->patternMaskOffsetX,
item->patternMaskOffsetY,
+ ScPattern *patternMask = m_doc->checkedPattern(patternMaskVal);
+ if (patternMask)
+ {
+ painter->setPatternMask(patternMask,
item->patternMaskScaleX, item->patternMaskScaleY, item->patternMaskOffsetX,
item->patternMaskOffsetY,
item->patternMaskRotation,
item->patternMaskSkewX, item->patternMaskSkewY, item->patternMaskMirrorX,
item->patternMaskMirrorY);
if (item->GrMask == 3)
painter->setMaskMode(2);
@@ -391,6 +390,10 @@
else
painter->setMaskMode(6);
}
+ else
+ {
+ painter->setMaskMode(0);
+ }
}
else
painter->setMaskMode(0);
@@ -422,7 +425,8 @@
if (item->NamedLStyle.isEmpty())
{
QString patternStrokeVal =
item->strokePattern();
- if ((!patternStrokeVal.isEmpty()) &&
(m_doc->docPatterns.contains(patternStrokeVal)))
+ ScPattern *strokePattern =
m_doc->checkedPattern(patternStrokeVal);
+ if (strokePattern)
{
if (item->patternStrokePath)
{
@@ -431,7 +435,7 @@
}
else
{
-
painter->setPattern(&m_doc->docPatterns[patternStrokeVal],
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
+
painter->setPattern(strokePattern, item->patternStrokeScaleX,
item->patternStrokeScaleY, item->patternStrokeOffsetX,
item->patternStrokeOffsetY, item->patternStrokeRotation,
item->patternStrokeSkewX, item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
painter->setStrokeMode(ScPainterExBase::Pattern);
painter->strokePath();
}
@@ -827,7 +831,8 @@
if (item->NamedLStyle.isEmpty())
{
QString patternStrokeVal = item->strokePattern();
- if ((!patternStrokeVal.isEmpty()) &&
(m_doc->docPatterns.contains(patternStrokeVal)))
+ ScPattern *strokePattern =
m_doc->checkedPattern(patternStrokeVal);
+ if (strokePattern)
{
if (item->patternStrokePath)
{
@@ -838,7 +843,7 @@
}
else
{
-
painter->setPattern(&m_doc->docPatterns[patternStrokeVal],
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
+ painter->setPattern(strokePattern,
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
painter->setStrokeMode(ScPainterExBase::Pattern);
painter->strokePath();
}
@@ -1162,7 +1167,8 @@
if (item->NamedLStyle.isEmpty())
{
QString patternStrokeVal = item->strokePattern();
- if ((!patternStrokeVal.isEmpty()) &&
(m_doc->docPatterns.contains(patternStrokeVal)))
+ ScPattern *strokePattern =
m_doc->checkedPattern(patternStrokeVal);
+ if (strokePattern)
{
if (item->patternStrokePath)
{
@@ -1173,7 +1179,7 @@
}
else
{
-
painter->setPattern(&m_doc->docPatterns[patternStrokeVal],
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
+ painter->setPattern(strokePattern,
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
painter->setStrokeMode(ScPainterExBase::Pattern);
painter->strokePath();
}
@@ -1328,7 +1334,8 @@
if (item->NamedLStyle.isEmpty())
{
QString patternStrokeVal = item->strokePattern();
- if ((!patternStrokeVal.isEmpty()) &&
(m_doc->docPatterns.contains(patternStrokeVal)))
+ ScPattern *strokePattern =
m_doc->checkedPattern(patternStrokeVal);
+ if (strokePattern)
{
if (item->patternStrokePath)
{
@@ -1339,7 +1346,7 @@
}
else
{
-
painter->setPattern(&m_doc->docPatterns[patternStrokeVal],
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
+ painter->setPattern(strokePattern,
item->patternStrokeScaleX, item->patternStrokeScaleY,
item->patternStrokeOffsetX, item->patternStrokeOffsetY,
item->patternStrokeRotation, item->patternStrokeSkewX,
item->patternStrokeSkewY, item->patternStrokeMirrorX,
item->patternStrokeMirrorY);
painter->setStrokeMode(ScPainterExBase::Pattern);
painter->strokePath();
}
_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit