r18772 by fschmid - Part of Bug #12007 added the "Soft Shadow" patch.
scribus-commit
scribus-commit at lists.scribus.net
Sun Jan 26 21:49:51 UTC 2014
Author: fschmid
Date: Sun Jan 26 21:49:51 2014
New Revision: 18772
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=18772
Log:
Part of Bug #12007 added the "Soft Shadow" patch.
Added:
trunk/Scribus/scribus/ui/propertiespalette_shadow.cpp
trunk/Scribus/scribus/ui/propertiespalette_shadow.h
trunk/Scribus/scribus/ui/propertiespalette_shadowbase.ui
Modified:
trunk/Scribus/scribus/CMakeLists.txt
trunk/Scribus/scribus/documentchecker.cpp
trunk/Scribus/scribus/pageitem.cpp
trunk/Scribus/scribus/pageitem.h
trunk/Scribus/scribus/pdflib_core.cpp
trunk/Scribus/scribus/pdflib_core.h
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
trunk/Scribus/scribus/plugins/import/pub/importpub.cpp
trunk/Scribus/scribus/plugins/xpsexport/xpsexplugin.cpp
trunk/Scribus/scribus/scpainter.cpp
trunk/Scribus/scribus/scpainter.h
trunk/Scribus/scribus/scribusdoc.cpp
trunk/Scribus/scribus/scribusdoc.h
trunk/Scribus/scribus/ui/propertiespalette.cpp
trunk/Scribus/scribus/ui/propertiespalette.h
Modified: trunk/Scribus/scribus/CMakeLists.txt
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/CMakeLists.txt
==============================================================================
--- trunk/Scribus/scribus/CMakeLists.txt (original)
+++ trunk/Scribus/scribus/CMakeLists.txt Sun Jan 26 21:49:51 2014
@@ -138,6 +138,7 @@
ui/propertiespalette_groupbase.ui
ui/propertiespalette_imagebase.ui
ui/propertiespalette_linebase.ui
+ ui/propertiespalette_shadowbase.ui
ui/propertiespalette_shapebase.ui
ui/propertiespalette_tablebase.ui
ui/propertiespalette_textbase.ui
@@ -404,6 +405,7 @@
ui/propertiespalette_group.h
ui/propertiespalette_image.h
ui/propertiespalette_line.h
+ ui/propertiespalette_shadow.h
ui/propertiespalette_shape.h
ui/propertiespalette_table.h
ui/propertiespalette_text.h
@@ -850,6 +852,7 @@
ui/propertiespalette_image.cpp
ui/propertiespalette_group.cpp
ui/propertiespalette_line.cpp
+ ui/propertiespalette_shadow.cpp
ui/propertiespalette_shape.cpp
ui/propertiespalette_table.cpp
ui/propertiespalette_text.cpp
Modified: trunk/Scribus/scribus/documentchecker.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/documentchecker.cpp
==============================================================================
--- trunk/Scribus/scribus/documentchecker.cpp (original)
+++ trunk/Scribus/scribus/documentchecker.cpp Sun Jan 26 21:49:51 2014
@@ -153,7 +153,7 @@
itemError.clear();
if (((currItem->isAnnotation()) || (currItem->isBookmark)) && (checkerSettings.checkAnnotations))
itemError.insert(PDFAnnotField, 0);
- if (((currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
+ if ((currItem->hasSoftShadow() || (currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
itemError.insert(Transparency, 0);
if ((currItem->GrType != 0) && (checkerSettings.checkTransparency))
{
@@ -444,7 +444,7 @@
if (!(currDoc->layerPrintable(currItem->LayerID)) && (checkerSettings.ignoreOffLayers))
continue;
itemError.clear();
- if (((currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
+ if ((currItem->hasSoftShadow() || (currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
itemError.insert(Transparency, 0);
if ((currItem->GrType != 0) && (checkerSettings.checkTransparency))
{
Modified: trunk/Scribus/scribus/pageitem.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/pageitem.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem.cpp (original)
+++ trunk/Scribus/scribus/pageitem.cpp Sun Jan 26 21:49:51 2014
@@ -193,6 +193,14 @@
fill_gradient(other.fill_gradient),
fillRule(other.fillRule),
doOverprint(other.doOverprint),
+ m_hasSoftShadow(other.m_hasSoftShadow),
+ m_softShadowColor(other.m_softShadowColor),
+ m_softShadowShade(other.m_softShadowShade),
+ m_softShadowBlurRadius(other.m_softShadowBlurRadius),
+ m_softShadowXOffset(other.m_softShadowXOffset),
+ m_softShadowYOffset(other.m_softShadowYOffset),
+ m_softShadowOpacity(other.m_softShadowOpacity),
+ m_softShadowBlendMode(other.m_softShadowBlendMode),
LeftLink(other.LeftLink),
RightLink(other.RightLink),
TopLink(other.TopLink),
@@ -824,6 +832,15 @@
}
isInlineImage = false;
isTempFile = false;
+
+ m_hasSoftShadow = false;
+ m_softShadowColor = "Black";
+ m_softShadowShade = 100;
+ m_softShadowBlurRadius = 5.0;
+ m_softShadowXOffset = 5.0;
+ m_softShadowYOffset = 5.0;
+ m_softShadowOpacity = 0.0;
+ m_softShadowBlendMode = 0;
}
PageItem::~PageItem()
@@ -1633,6 +1650,8 @@
{
if (!isGroup())
{
+ if (hasSoftShadow())
+ DrawSoftShadow(p);
p->setBlendModeFill(fillBlendmode());
p->setLineWidth(lwCorr);
if (GrType != 0)
@@ -2173,6 +2192,39 @@
p->newPath();
}
+void PageItem::DrawSoftShadow(ScPainter *p)
+{
+ if (m_softShadowColor == CommonStrings::None)
+ return;
+ if ((itemType() == PathText) || (itemType() == Symbol) || (itemType() == Group) || (itemType() == Line) || (itemType() == PolyLine) || (itemType() == Spiral))
+ return;
+ double lwCorr = m_lineWidth;
+ double sc = p->zoomFactor();
+ if ((m_lineWidth * sc) < 1)
+ lwCorr = 0;
+ const ScColor& col = m_Doc->PageColors[m_softShadowColor];
+ QColor tmp = ScColorEngine::getShadeColorProof(col, m_Doc, m_softShadowShade);
+ if (m_Doc->viewAsPreview)
+ {
+ VisionDefectColor defect;
+ tmp = defect.convertDefect(tmp, m_Doc->previewVisual);
+ }
+ p->save();
+ FPointArray sh = PoLine.copy();
+ sh.translate(m_softShadowXOffset, m_softShadowYOffset);
+ p->beginLayer(1.0 - m_softShadowOpacity, m_softShadowBlendMode);
+ p->setupPolygon(&sh);
+ p->setBrush(tmp);
+ p->setFillMode(ScPainter::Solid);
+ p->setStrokeMode(ScPainter::Solid);
+ p->setPen(tmp, lwCorr, PLineArt, PLineEnd, PLineJoin);
+ p->fillPath();
+ p->strokePath();
+ p->blurAlpha(m_softShadowBlurRadius);
+ p->endLayer();
+ p->restore();
+}
+
QImage PageItem::DrawObj_toImage(double maxSize)
{
bool isEmbedded_Old = isEmbedded;
Modified: trunk/Scribus/scribus/pageitem.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/pageitem.h
==============================================================================
--- trunk/Scribus/scribus/pageitem.h (original)
+++ trunk/Scribus/scribus/pageitem.h Sun Jan 26 21:49:51 2014
@@ -261,6 +261,7 @@
QImage DrawObj_toImage(QList<PageItem*> &emG, double scaling);
void DrawObj_Embedded(ScPainter *p, QRectF e, const CharStyle& style, PageItem* cembedded);
void DrawStrokePattern(ScPainter *p, QPainterPath &path);
+ void DrawSoftShadow(ScPainter *p);
/**
* @brief Set or get the redraw bounding box of the item, moved from the View
*/
@@ -644,6 +645,31 @@
bool overprint() const { return doOverprint; }
void setOverprint(bool val);
+ // soft shadow
+ void setHasSoftShadow(bool val) { m_hasSoftShadow = val; }
+ bool hasSoftShadow() { return m_hasSoftShadow; }
+
+ void setSoftShadowColor(const QString &newColor) { m_softShadowColor = newColor; }
+ QString softShadowColor() { return m_softShadowColor; }
+
+ void setSoftShadowShade(int val) { m_softShadowShade = val; }
+ int softShadowShade() { return m_softShadowShade; }
+
+ void setSoftShadowBlurRadius(double val) { m_softShadowBlurRadius = val; }
+ double softShadowBlurRadius() { return m_softShadowBlurRadius; }
+
+ void setSoftShadowXOffset(double val) { m_softShadowXOffset = val; }
+ double softShadowXOffset() { return m_softShadowXOffset; }
+
+ void setSoftShadowYOffset(double val) { m_softShadowYOffset = val; }
+ double softShadowYOffset() { return m_softShadowYOffset; }
+
+ void setSoftShadowOpacity(double val) { m_softShadowOpacity = val; }
+ double softShadowOpacity() { return m_softShadowOpacity; }
+
+ void setSoftShadowBlendMode(int val) { m_softShadowBlendMode = val; }
+ double softShadowBlendMode() { return m_softShadowBlendMode; }
+
int frameType() const { return FrameType; } ///< rect / oval / round / other
void setFrameType(int val) { FrameType = val; }
//
@@ -1255,6 +1281,14 @@
VGradient fill_gradient;
bool fillRule;
bool doOverprint;
+ bool m_hasSoftShadow;
+ QString m_softShadowColor;
+ int m_softShadowShade;
+ double m_softShadowBlurRadius;
+ double m_softShadowXOffset;
+ double m_softShadowYOffset;
+ double m_softShadowOpacity;
+ int m_softShadowBlendMode;
/* Additions for Table Support */
/* now deprecated with the new PageItem_Table */
PageItem* LeftLink;
Modified: trunk/Scribus/scribus/pdflib_core.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/pdflib_core.cpp
==============================================================================
--- trunk/Scribus/scribus/pdflib_core.cpp (original)
+++ trunk/Scribus/scribus/pdflib_core.cpp Sun Jan 26 21:49:51 2014
@@ -3445,6 +3445,130 @@
return retString;
}
+QString PDFLibCore::PDF_PutSoftShadow(PageItem* ite, const ScPage *pag)
+{
+ if (Options.Version < PDFOptions::PDFVersion_14 || !ite->hasSoftShadow() || ite->softShadowColor() == CommonStrings::None || !ite->printEnabled())
+ return "";
+ QString tmp("q\n");
+ double softShadowDPI = Options.Resolution;
+ int pixelRadius = qRound(ite->softShadowBlurRadius() / 72.0 * softShadowDPI);
+ tmp += "1 0 0 1 ";
+ tmp += FToStr(ite->softShadowXOffset() - ite->softShadowBlurRadius())+" ";
+ tmp += FToStr(-ite->softShadowYOffset() - ite->softShadowBlurRadius())+" cm\n";
+ tmp += "1 0 0 1 0 " + FToStr(-(ite->height() + ite->visualLineWidth()))+" cm\n";
+ tmp += FToStr(ite->width() + ite->visualLineWidth() + 2 * ite->softShadowBlurRadius()) + " 0 0 " + FToStr(ite->height() + ite->visualLineWidth() + 2 * ite->softShadowBlurRadius())+" 0 0 cm\n" ;
+
+ double savRot = ite->rotation();
+ ite->setRotation(0, true);
+ double maxSize = qMax(ite->visualWidth(), ite->visualHeight());
+ maxSize = qMin(3000.0, maxSize * (softShadowDPI / 72.0));
+ bool savedShadow = ite->hasSoftShadow();
+ ite->setHasSoftShadow(false);
+ QImage imgC = ite->DrawObj_toImage(maxSize);
+ ite->setRotation(savRot, true);
+ ite->setHasSoftShadow(savedShadow);
+
+ imgC = imgC.copy(-pixelRadius,-pixelRadius,imgC.width()+2*pixelRadius,imgC.height()+2*pixelRadius); // Add border
+ ScImage img = imgC.alphaChannel().convertToFormat(QImage::Format_RGB32);
+
+ ImageEffect eff;
+ ScImageEffectList el;
+ eff.effectCode = ScImage::EF_BLUR;
+ eff.effectParameters = QString("%1 1.0").arg(pixelRadius);
+ el.append(eff);
+ img.applyEffect(el,ite->doc()->PageColors,false);
+
+ uint maskObj = newObject();
+ StartObj(maskObj);
+ PutDoc("<<\n/Type /XObject\n/Subtype /Image\n");
+ PutDoc("/Width "+QString::number(img.width())+"\n");
+ PutDoc("/Height "+QString::number(img.height())+"\n");
+ PutDoc("/ColorSpace /DeviceGray\n");
+ PutDoc("/BitsPerComponent 8\n");
+ uint lengthObj = newObject();
+ PutDoc("/Length "+QString::number(lengthObj)+" 0 R\n");
+ PutDoc("/Filter /FlateDecode\n");
+ PutDoc(">>\nstream\n");
+ int bytesWritten = WriteFlateImageToStream(img, maskObj, ColorSpaceGray, false);
+ PutDoc("\nendstream\nendobj\n");
+ StartObj(lengthObj);
+ PutDoc(QString(" %1\n").arg(bytesWritten));
+ PutDoc("endobj\n");
+
+ uint colObj = newObject();
+ StartObj(colObj);
+ PutDoc("<<\n/Type /XObject\n/Subtype /Image\n");
+ PutDoc("/Width 1\n");
+ PutDoc("/Height 1\n");
+ PutDoc("/Interpolate false\n");
+ PutDoc("/BitsPerComponent 8\n");
+ PutDoc("/SMask "+QString::number(maskObj)+" 0 R\n");
+
+ ScImage col(1,1);
+ QString colstr = SetColor(ite->softShadowColor(), ite->softShadowShade());
+ if (Options.isGrayscale)
+ {
+ double gf;
+ int g;
+ QTextStream ts(&colstr, QIODevice::ReadOnly);
+ ts >> gf;
+ g = round(gf*255);
+ col.imgInfo.colorspace = ColorSpaceGray;
+ col.qImagePtr()->setPixel(0,0,qRgba(g,g,g,255));
+ PutDoc("/ColorSpace /DeviceGray\n");
+ PutDoc("/Length 1\n");
+ PutDoc(">>\nstream\n");
+ WriteImageToStream(col, colObj, ColorSpaceGray, true);
+ PutDoc("\nendstream\nendobj\n");
+ }
+ else if (Options.UseRGB)
+ {
+ double r,g,b;
+ QTextStream ts(&colstr, QIODevice::ReadOnly);
+ ts >> r;
+ ts >> g;
+ ts >> b;
+ col.imgInfo.colorspace = ColorSpaceRGB;
+ col.qImagePtr()->setPixel(0,0,qRgba(round(r*255),round(g*255),round(b*255),255));
+ PutDoc("/ColorSpace /DeviceRGB\n");
+ PutDoc("/Length 3\n");
+ PutDoc(">>\nstream\n");
+ WriteImageToStream(col, colObj, ColorSpaceRGB, false);
+ PutDoc("\nendstream\nendobj\n");
+ }
+ else //CMYK
+ {
+ double c,m,y,k;
+ QTextStream ts(&colstr, QIODevice::ReadOnly);
+ ts >> c;
+ ts >> m;
+ ts >> y;
+ ts >> k;
+ col.imgInfo.colorspace = ColorSpaceCMYK;
+ col.qImagePtr()->setPixel(0,0,qRgba(round(c*255),round(m*255),round(y*255),round(k*255)));
+ PutDoc("/ColorSpace /DeviceCMYK\n");
+ PutDoc("/Length 4\n");
+ PutDoc(">>\nstream\n");
+ WriteImageToStream(col, colObj, ColorSpaceCMYK, false);
+ PutDoc("\nendstream\nendobj\n");
+ }
+
+ QString colRes = ResNam+QString::number(ResCount);
+ Seite.ImgObjects[colRes] = colObj;
+ ResCount++;
+
+ QString ShName = ResNam+QString::number(ResCount);
+ ResCount++;
+ Transpar[ShName] = writeGState("/ca "+FToStr(1.0 - ite->softShadowOpacity())+"\n"
+ + "/AIS false\n/OPM 1\n"
+ + "/BM /" + blendMode(ite->softShadowBlendMode()) + "\n");
+
+ tmp += "/"+ShName+" gs\n";
+
+ tmp += "/"+colRes+" Do Q\n";
+ return tmp;
+}
+
/**
* Fill this.output with the QString representation of the item.
* Checks if the item can be represented in the chosen PDF version, based on some of its caracteristics
@@ -3582,6 +3706,7 @@
sr = 0;
tmp += FToStr(cr)+" "+FToStr(sr)+" "+FToStr(-sr)+" "+FToStr(cr)+" 0 0 cm\n";
}
+ tmp += PDF_PutSoftShadow(ite,pag);
switch (ite->itemType())
{
case PageItem::ImageFrame:
Modified: trunk/Scribus/scribus/pdflib_core.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/pdflib_core.h
==============================================================================
--- trunk/Scribus/scribus/pdflib_core.h (original)
+++ trunk/Scribus/scribus/pdflib_core.h Sun Jan 26 21:49:51 2014
@@ -154,6 +154,7 @@
QByteArray ComputeMD5(const QString& in);
QByteArray ComputeRC4Key(int ObjNum);
+ QString PDF_PutSoftShadow(PageItem* ite, const ScPage* pag);
bool PDF_ProcessItem(QString& output, PageItem* ite, const ScPage* pag, uint PNr, bool embedded = false, bool pattern = false);
void PDF_Bookmark(PageItem *currItem, double ypos);
bool PDF_PatternFillStroke(QString& output, PageItem *currItem, int kind = 0, bool forArrow = false);
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp (original)
+++ trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp Sun Jan 26 21:49:51 2014
@@ -5235,6 +5235,15 @@
else
currItem->inlineCharID = -1;
+ currItem->setHasSoftShadow(attrs.valueAsBool("HASSOFTSHADOW", false));
+ currItem->setSoftShadowXOffset(attrs.valueAsDouble("SOFTSHADOWXOFFSET", 5.0));
+ currItem->setSoftShadowYOffset(attrs.valueAsDouble("SOFTSHADOWYOFFSET", 5.0));
+ currItem->setSoftShadowColor(attrs.valueAsString("SOFTSHADOWCOLOR", CommonStrings::None));
+ currItem->setSoftShadowShade(attrs.valueAsInt("SOFTSHADOWSHADE", 100));
+ currItem->setSoftShadowBlurRadius(attrs.valueAsDouble("SOFTSHADOWBLURRADIUS", 5.0));
+ currItem->setSoftShadowBlendMode(attrs.valueAsInt("SOFTSHADOWBLENDMODE", 0));
+ currItem->setSoftShadowOpacity(attrs.valueAsDouble("SOFTSHADOWOPACITY", 1.0));
+
//currItem->setRedrawBounding();
//currItem->OwnPage = view->OnPage(currItem);
return currItem;
Modified: trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp (original)
+++ trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp Sun Jan 26 21:49:51 2014
@@ -2721,6 +2721,17 @@
docu.writeAttribute("TransBlend", item->fillBlendmode());
if (item->lineBlendmode() != 0)
docu.writeAttribute("TransBlendS", item->lineBlendmode());
+ if (item->hasSoftShadow())
+ {
+ docu.writeAttribute("HASSOFTSHADOW",item->hasSoftShadow() ? 1 : 0);
+ docu.writeAttribute("SOFTSHADOWXOFFSET",item->softShadowXOffset());
+ docu.writeAttribute("SOFTSHADOWYOFFSET",item->softShadowYOffset());
+ docu.writeAttribute("SOFTSHADOWCOLOR",item->softShadowColor());
+ docu.writeAttribute("SOFTSHADOWBLURRADIUS",item->softShadowBlurRadius());
+ docu.writeAttribute("SOFTSHADOWSHADE",item->softShadowShade());
+ docu.writeAttribute("SOFTSHADOWBLENDMODE",item->softShadowBlendMode());
+ docu.writeAttribute("SOFTSHADOWOPACITY",item->softShadowOpacity());
+ }
if (item->isTable())
{
Modified: trunk/Scribus/scribus/plugins/import/pub/importpub.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/plugins/import/pub/importpub.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/import/pub/importpub.cpp (original)
+++ trunk/Scribus/scribus/plugins/import/pub/importpub.cpp Sun Jan 26 21:49:51 2014
@@ -1448,6 +1448,30 @@
groupStack.top().Items.append(nite);
groupStack.top().Items.append(ite);
}
+/*
+ double xof = 0.0;
+ double yof = 0.0;
+ if (m_style["draw:shadow-offset-x"])
+ xof = valueAsPoint(m_style["draw:shadow-offset-x"]);
+ if (m_style["draw:shadow-offset-y"])
+ yof = valueAsPoint(m_style["draw:shadow-offset-y"]);
+ QString shadowColor = CurrColorFill;
+ double shadowTrans = 1.0;
+ if (m_style["draw:shadow-color"])
+ {
+ shadowColor = parseColor(QString(m_style["draw:shadow-color"]->getStr().cstr()));
+ if(m_style["draw:shadow-opacity"])
+ shadowTrans = 1.0 - qMin(1.0, qMax(fromPercentage(QString(m_style["draw:shadow-opacity"]->getStr().cstr())), 0.0));
+ }
+ ite->setHasSoftShadow(true);
+ ite->setSoftShadowColor(shadowColor);
+ ite->setSoftShadowXOffset(xof);
+ ite->setSoftShadowYOffset(yof);
+ ite->setSoftShadowBlurRadius(5);
+ ite->setSoftShadowShade(100);
+ ite->setSoftShadowOpacity(shadowTrans);
+ ite->setSoftShadowBlendMode(0);
+*/
}
}
Modified: trunk/Scribus/scribus/plugins/xpsexport/xpsexplugin.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/plugins/xpsexport/xpsexplugin.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/xpsexport/xpsexplugin.cpp (original)
+++ trunk/Scribus/scribus/plugins/xpsexport/xpsexplugin.cpp Sun Jan 26 21:49:51 2014
@@ -517,12 +517,12 @@
path.lineTo(0, bounds.height());
path.closeSubpath();
QTransform mpx;
- if (Item->rotation() != 0.0)
- {
- mpx.translate(xOffset * conversionFactor, yOffset * conversionFactor);
- mpx.rotate(Item->rotation());
- mpx.translate(-xOffset * conversionFactor, -yOffset * conversionFactor);
- }
+// if (Item->rotation() != 0.0)
+// {
+// mpx.translate(xOffset * conversionFactor, yOffset * conversionFactor);
+// mpx.rotate(Item->rotation());
+// mpx.translate(-xOffset * conversionFactor, -yOffset * conversionFactor);
+// }
QTransform mpp;
mpp.translate((Item->visualXPos() - m_Doc->currentPage()->xOffset()) * conversionFactor, (Item->visualYPos() - m_Doc->currentPage()->yOffset()) * conversionFactor);
mpp.scale(conversionFactor, conversionFactor);
@@ -535,8 +535,8 @@
else
pa.prepend("F 1 ");
ob.setAttribute("Data", pa);
- if (Item->rotation() != 0.0)
- ob.setAttribute("RenderTransform", MatrixToStr(mpx));
+// if (Item->rotation() != 0.0)
+// ob.setAttribute("RenderTransform", MatrixToStr(mpx));
QDomElement obf = p_docu.createElement("Path.Fill");
QDomElement gr = p_docu.createElement("ImageBrush");
double maxSize = qMax(Item->visualWidth(), Item->visualHeight());
@@ -2771,6 +2771,8 @@
ret = true;
if (Item->lineBlendmode() != 0)
ret = true;
+ if (Item->hasSoftShadow())
+ ret = true;
return ret;
}
Modified: trunk/Scribus/scribus/scpainter.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/scpainter.cpp
==============================================================================
--- trunk/Scribus/scribus/scpainter.cpp (original)
+++ trunk/Scribus/scribus/scpainter.cpp Sun Jan 26 21:49:51 2014
@@ -1953,45 +1953,345 @@
closePath();
setBrush(light);
fillPath();
-
-/*
- setStrokeMode(1);
- setLineWidth(1.2);
- if (sunken)
- setPen(shade, 1.2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
- else
- setPen(light, 1.2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
- int x1, y1, x2, y2, x3, y3;
- x1 = r.x();
- x2 = r.x();
- x3 = r.x() + r.width();
- y1 = r.y() + r.height();
- y2 = r.y();
- y3 = r.y();
- for (int i = 0; i < lineWidth; i++)
- {
- newPath();
- moveTo(x1++, y1--);
- lineTo(x2++, y2++);
- lineTo(x3--, y3++);
- strokePath();
- }
- if (sunken)
- setPen(light, 1.2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
- else
- setPen(shade, 1.2, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
- x1 = r.x();
- x2 = r.x() + r.width();
- x3 = r.x() + r.width();
- y1 = r.y() + r.height();
- y2 = r.y() + r.height();
- y3 = r.y();
- for (int i = 0; i < lineWidth; i++)
- {
- newPath();
- moveTo(x1++, y1--);
- lineTo(x2--, y2--);
- lineTo(x3--, y3++);
- strokePath();
- } */
-}
+}
+
+void ScPainter::blurAlpha(int radius)
+{
+ if (radius < 1)
+ return;
+ cairo_surface_t *data = cairo_get_group_target(m_cr);
+ QRgb *pix = (QRgb*)cairo_image_surface_get_data(data);
+ int w = cairo_image_surface_get_width(data);
+ int h = cairo_image_surface_get_height(data);
+ int wm = w-1;
+ int hm = h-1;
+ int wh = w*h;
+ int div = radius+radius+1;
+ int *a = new int[wh];
+ int asum, x, y, i, yp, yi, yw;
+ QRgb p;
+ int *vmin = new int[qMax(w,h)];
+ int divsum = (div+1)>>1;
+ divsum *= divsum;
+ int *dv = new int[256*divsum];
+ for (i=0; i < 256*divsum; ++i)
+ {
+ dv[i] = (i/divsum);
+ }
+ yw = yi = 0;
+ int **stack = new int*[div];
+ for(int i = 0; i < div; ++i)
+ {
+ stack[i] = new int[1];
+ }
+ int stackpointer;
+ int stackstart;
+ int *sir;
+ int rbs;
+ int r1 = radius+1;
+ int aoutsum;
+ int ainsum;
+ for (y = 0; y < h; ++y)
+ {
+ ainsum = aoutsum = asum = 0;
+ for(i =- radius; i <= radius; ++i)
+ {
+ p = pix[yi+qMin(wm,qMax(i,0))];
+ sir = stack[i+radius];
+ sir[0] = qAlpha(p);
+ rbs = r1-abs(i);
+ asum += sir[0]*rbs;
+ if (i > 0)
+ ainsum += sir[0];
+ else
+ aoutsum += sir[0];
+ }
+ stackpointer = radius;
+ for (x=0; x < w; ++x)
+ {
+ a[yi] = dv[asum];
+ asum -= aoutsum;
+ stackstart = stackpointer-radius+div;
+ sir = stack[stackstart%div];
+ aoutsum -= sir[0];
+ if (y == 0)
+ vmin[x] = qMin(x+radius+1,wm);
+ p = pix[yw+vmin[x]];
+ sir[0] = qAlpha(p);
+ ainsum += sir[0];
+ asum += ainsum;
+ stackpointer = (stackpointer+1)%div;
+ sir = stack[(stackpointer)%div];
+ aoutsum += sir[0];
+ ainsum -= sir[0];
+ ++yi;
+ }
+ yw += w;
+ }
+ for (x=0; x < w; ++x)
+ {
+ ainsum = aoutsum = asum = 0;
+ yp =- radius * w;
+ for(i=-radius; i <= radius; ++i)
+ {
+ yi=qMax(0,yp)+x;
+ sir = stack[i+radius];
+ sir[0] = a[yi];
+ rbs = r1-abs(i);
+ asum += a[yi]*rbs;
+ if (i > 0)
+ ainsum += sir[0];
+ else
+ aoutsum += sir[0];
+ if (i < hm)
+ {
+ yp += w;
+ }
+ }
+ yi = x;
+ stackpointer = radius;
+ for (y=0; y < h; ++y)
+ {
+ pix[yi] = qRgba(qRed(pix[yi]), qGreen(pix[yi]), qBlue(pix[yi]), dv[asum]);
+ asum -= aoutsum;
+ stackstart = stackpointer-radius+div;
+ sir = stack[stackstart%div];
+ aoutsum -= sir[0];
+ if (x==0)
+ {
+ vmin[y] = qMin(y+r1,hm)*w;
+ }
+ p = x+vmin[y];
+ sir[0] = a[p];
+ ainsum += sir[0];
+ asum += ainsum;
+ stackpointer = (stackpointer+1)%div;
+ sir = stack[stackpointer];
+ aoutsum += sir[0];
+ ainsum -= sir[0];
+ yi += w;
+ }
+ }
+ delete [] a;
+ delete [] vmin;
+ delete [] dv;
+ for(int i = 0; i < div; ++i)
+ {
+ delete [] stack[i];
+ }
+ delete [] stack;
+ cairo_surface_mark_dirty(data);
+}
+
+void ScPainter::blur(int radius)
+{
+ if (radius < 1)
+ return;
+ cairo_surface_t *data = cairo_get_group_target(m_cr);
+ QRgb *pix = (QRgb*)cairo_image_surface_get_data(data);
+ int w = cairo_image_surface_get_width(data);
+ int h = cairo_image_surface_get_height(data);
+ int wm = w-1;
+ int hm = h-1;
+ int wh = w*h;
+ int div = radius+radius+1;
+ int *r = new int[wh];
+ int *g = new int[wh];
+ int *b = new int[wh];
+ int *a = new int[wh];
+ int rsum, gsum, bsum, asum, x, y, i, yp, yi, yw;
+ QRgb p;
+ int *vmin = new int[qMax(w,h)];
+ int divsum = (div+1)>>1;
+ divsum *= divsum;
+ int *dv = new int[256*divsum];
+ for (i=0; i < 256*divsum; ++i)
+ {
+ dv[i] = (i/divsum);
+ }
+ yw = yi = 0;
+ int **stack = new int*[div];
+ for(int i = 0; i < div; ++i)
+ {
+ stack[i] = new int[4];
+ }
+ int stackpointer;
+ int stackstart;
+ int *sir;
+ int rbs;
+ int r1 = radius+1;
+ int routsum, goutsum, boutsum, aoutsum;
+ int rinsum, ginsum, binsum, ainsum;
+ for (y = 0; y < h; ++y)
+ {
+ rinsum = ginsum = binsum = ainsum = routsum = goutsum = boutsum = aoutsum = rsum = gsum = bsum = asum = 0;
+ for(i =- radius; i <= radius; ++i)
+ {
+ p = pix[yi+qMin(wm,qMax(i,0))];
+ sir = stack[i+radius];
+ sir[0] = qRed(p);
+ sir[1] = qGreen(p);
+ sir[2] = qBlue(p);
+ sir[3] = qAlpha(p);
+ rbs = r1-abs(i);
+ rsum += sir[0]*rbs;
+ gsum += sir[1]*rbs;
+ bsum += sir[2]*rbs;
+ asum += sir[3]*rbs;
+ if (i > 0)
+ {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+ }
+ else
+ {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+ }
+ }
+ stackpointer = radius;
+ for (x=0; x < w; ++x)
+ {
+ r[yi] = dv[rsum];
+ g[yi] = dv[gsum];
+ b[yi] = dv[bsum];
+ a[yi] = dv[asum];
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+ asum -= aoutsum;
+ stackstart = stackpointer-radius+div;
+ sir = stack[stackstart%div];
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+ aoutsum -= sir[3];
+ if (y == 0)
+ {
+ vmin[x] = qMin(x+radius+1,wm);
+ }
+ p = pix[yw+vmin[x]];
+ sir[0] = qRed(p);
+ sir[1] = qGreen(p);
+ sir[2] = qBlue(p);
+ sir[3] = qAlpha(p);
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+ asum += ainsum;
+ stackpointer = (stackpointer+1)%div;
+ sir = stack[(stackpointer)%div];
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+ ainsum -= sir[3];
+ ++yi;
+ }
+ yw += w;
+ }
+ for (x=0; x < w; ++x)
+ {
+ rinsum = ginsum = binsum = ainsum = routsum = goutsum = boutsum = aoutsum = rsum = gsum = bsum = asum = 0;
+ yp =- radius * w;
+ for(i=-radius; i <= radius; ++i)
+ {
+ yi=qMax(0,yp)+x;
+ sir = stack[i+radius];
+ sir[0] = r[yi];
+ sir[1] = g[yi];
+ sir[2] = b[yi];
+ sir[3] = a[yi];
+ rbs = r1-abs(i);
+ rsum += r[yi]*rbs;
+ gsum += g[yi]*rbs;
+ bsum += b[yi]*rbs;
+ asum += a[yi]*rbs;
+ if (i > 0)
+ {
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+ }
+ else
+ {
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+ }
+ if (i < hm)
+ {
+ yp += w;
+ }
+ }
+ yi = x;
+ stackpointer = radius;
+ for (y=0; y < h; ++y)
+ {
+ pix[yi] = qRgba(dv[rsum], dv[gsum], dv[bsum], dv[asum]);
+ rsum -= routsum;
+ gsum -= goutsum;
+ bsum -= boutsum;
+ asum -= aoutsum;
+ stackstart = stackpointer-radius+div;
+ sir = stack[stackstart%div];
+ routsum -= sir[0];
+ goutsum -= sir[1];
+ boutsum -= sir[2];
+ aoutsum -= sir[3];
+ if (x==0)
+ {
+ vmin[y] = qMin(y+r1,hm)*w;
+ }
+ p = x+vmin[y];
+ sir[0] = r[p];
+ sir[1] = g[p];
+ sir[2] = b[p];
+ sir[3] = a[p];
+ rinsum += sir[0];
+ ginsum += sir[1];
+ binsum += sir[2];
+ ainsum += sir[3];
+ rsum += rinsum;
+ gsum += ginsum;
+ bsum += binsum;
+ asum += ainsum;
+ stackpointer = (stackpointer+1)%div;
+ sir = stack[stackpointer];
+ routsum += sir[0];
+ goutsum += sir[1];
+ boutsum += sir[2];
+ aoutsum += sir[3];
+ rinsum -= sir[0];
+ ginsum -= sir[1];
+ binsum -= sir[2];
+ ainsum -= sir[3];
+ yi += w;
+ }
+ }
+ delete [] r;
+ delete [] g;
+ delete [] b;
+ delete [] a;
+ delete [] vmin;
+ delete [] dv;
+ for(int i = 0; i < div; ++i)
+ {
+ delete [] stack[i];
+ }
+ delete [] stack;
+ cairo_surface_mark_dirty(data);
+}
Modified: trunk/Scribus/scribus/scpainter.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/scpainter.h
==============================================================================
--- trunk/Scribus/scribus/scpainter.h (original)
+++ trunk/Scribus/scribus/scpainter.h Sun Jan 26 21:49:51 2014
@@ -96,6 +96,8 @@
virtual void drawText(QRectF area, QString text, bool filled = true, int align = 0);
virtual void drawShadeCircle(const QRectF &re, const QColor color, bool sunken, int lineWidth);
virtual void drawShadePanel(const QRectF &r, const QColor color, bool sunken, int lineWidth);
+ virtual void blurAlpha(int radius);
+ virtual void blur(int radius);
// pen + brush
virtual QColor pen();
Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp Sun Jan 26 21:49:51 2014
@@ -7750,6 +7750,33 @@
}
}
+void ScribusDoc::itemSelection_SetSoftShadow(bool has, QString color, double dx, double dy, double radius, int shade, double opac, int blend)
+{
+ if (color == CommonStrings::tr_NoneColor)
+ color = CommonStrings::None;
+ uint selectedItemCount = m_Selection->count();
+ if (selectedItemCount != 0)
+ {
+ for (uint a = 0; a < selectedItemCount; ++a)
+ {
+ PageItem *currItem = m_Selection->itemAt(a);
+ currItem->setHasSoftShadow(has);
+ currItem->setSoftShadowColor(color);
+ currItem->setSoftShadowXOffset(dx);
+ currItem->setSoftShadowYOffset(dy);
+ currItem->setSoftShadowBlurRadius(radius);
+ currItem->setSoftShadowShade(shade);
+ currItem->setSoftShadowOpacity(opac);
+ currItem->setSoftShadowBlendMode(blend);
+ QRectF newRect = currItem->getVisualBoundingRect().adjusted(-dx, -dy, dx, dy);
+ currItem->invalidateLayout();
+ regionsChanged()->update(newRect);
+ }
+ }
+ changed();
+
+}
+
void ScribusDoc::itemSelection_SetLineWidth(double w)
{
uint selectedItemCount=m_Selection->count();
Modified: trunk/Scribus/scribus/scribusdoc.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/scribusdoc.h
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.h (original)
+++ trunk/Scribus/scribus/scribusdoc.h Sun Jan 26 21:49:51 2014
@@ -1045,6 +1045,8 @@
void itemSelection_SetNamedParagraphStyle(const QString & name, Selection* customSelection=0);
void itemSelection_SetNamedCharStyle(const QString & name, Selection* customSelection=0);
void itemSelection_SetNamedLineStyle(const QString & name, Selection* customSelection=0);
+
+ void itemSelection_SetSoftShadow(bool has, QString color, double dx, double dy, double radius, int shade, double opac, int blend);
void itemSelection_SetLineWidth(double w);
void itemSelection_SetLineArt(Qt::PenStyle w);
Modified: trunk/Scribus/scribus/ui/propertiespalette.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/ui/propertiespalette.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/propertiespalette.cpp (original)
+++ trunk/Scribus/scribus/ui/propertiespalette.cpp Sun Jan 26 21:49:51 2014
@@ -41,6 +41,7 @@
#include "propertiespalette_group.h"
#include "propertiespalette_image.h"
#include "propertiespalette_line.h"
+#include "propertiespalette_shadow.h"
#include "propertiespalette_shape.h"
#include "propertiespalette_table.h"
#include "propertiespalette_text.h"
@@ -91,6 +92,9 @@
xyzPal = new PropertiesPalette_XYZ( this );
idXYZItem = TabStack->addItem( xyzPal, "X, Y, &Z" );
+ shadowPal = new PropertiesPalette_Shadow( this );
+ idShadowItem = TabStack->addItem( shadowPal, "Soft Shadow" );
+
shapePal = new PropertiesPalette_Shape( this );
idShapeItem = TabStack->addItem( shapePal, "&Shape" );
@@ -132,7 +136,7 @@
connect(Tpal, SIGNAL(editGradient()), this, SLOT(toggleGradientEditM()));
m_haveItem = false;
- for (int ws = 1; ws < 9; ++ws)
+ for (int ws = 1; ws < 10; ++ws)
TabStack->setItemEnabled(ws, false);
TabStack->setCurrentIndex(0);
TabStack->widget(0)->setEnabled(false);
@@ -165,6 +169,7 @@
move(p2);
this->xyzPal->setMainWindow(mw);
+ this->shadowPal->setMainWindow(mw);
this->shapePal->setMainWindow(mw);
this->groupPal->setMainWindow(mw);
this->imagePal->setMainWindow(mw);
@@ -228,6 +233,7 @@
m_haveItem = false;
xyzPal->setDoc(m_doc);
+ shadowPal->setDoc(m_doc);
shapePal->setDoc(m_doc);
groupPal->setDoc(m_doc);
imagePal->setDoc(m_doc);
@@ -259,6 +265,8 @@
xyzPal->unsetItem();
xyzPal->unsetDoc();
+ shadowPal->unsetItem();
+ shadowPal->unsetDoc();
shapePal->unsetItem();
shapePal->unsetDoc();
groupPal->unsetItem();
@@ -390,6 +398,7 @@
if ((m_item->isGroup()) && (!m_item->isSingleSel))
{
TabStack->setItemEnabled(idXYZItem, true);
+ TabStack->setItemEnabled(idShadowItem, false);
TabStack->setItemEnabled(idShapeItem, false);
TabStack->setItemEnabled(idGroupItem, true);
TabStack->setItemEnabled(idLineItem, false);
@@ -425,6 +434,7 @@
if (m_item->asOSGFrame())
{
TabStack->setItemEnabled(idXYZItem, true);
+ TabStack->setItemEnabled(idShadowItem, true);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idGroupItem, false);
TabStack->setItemEnabled(idLineItem, false);
@@ -438,6 +448,7 @@
if (m_item->asSymbolFrame())
{
TabStack->setItemEnabled(idXYZItem, true);
+ TabStack->setItemEnabled(idShadowItem, false);
TabStack->setItemEnabled(idShapeItem, false);
TabStack->setItemEnabled(idGroupItem, true);
TabStack->setItemEnabled(idLineItem, false);
@@ -460,10 +471,11 @@
PageItem* currItem = currentItemFromSelection();
if (m_doc->m_Selection->count() > 1)
{
- for (int ws = 1; ws < 9; ++ws)
+ for (int ws = 1; ws < 10; ++ws)
TabStack->setItemEnabled(ws, false);
TabStack->widget(0)->setEnabled(true);
TabStack->setItemEnabled(idXYZItem, true);
+ TabStack->setItemEnabled(idShadowItem, true);
TabStack->setItemEnabled(idLineItem, true);
TabStack->setItemEnabled(idColorsItem, true);
TabStack->setItemEnabled(idTransparencyItem, true);
@@ -489,7 +501,7 @@
{
case -1:
m_haveItem = false;
- for (int ws = 1; ws < 9; ++ws)
+ for (int ws = 1; ws < 10; ++ws)
TabStack->setItemEnabled(ws, false);
TabStack->widget(0)->setEnabled(false);
TabStack->setItemEnabled(idXYZItem, false);
@@ -501,6 +513,7 @@
if (currItem->asOSGFrame())
{
TabStack->setItemEnabled(idXYZItem, true);
+ TabStack->setItemEnabled(idShadowItem, true);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idGroupItem, false);
TabStack->setItemEnabled(idLineItem, false);
@@ -518,12 +531,14 @@
}
break;
case PageItem::TextFrame:
+ TabStack->setItemEnabled(idShadowItem, true);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idTextItem, true);
TabStack->setItemEnabled(idImageItem, false);
TabStack->setItemEnabled(idLineItem, true);
break;
case PageItem::Line:
+ TabStack->setItemEnabled(idShadowItem, false);
TabStack->setItemEnabled(idShapeItem, false);
TabStack->setItemEnabled(idTextItem, false);
TabStack->setItemEnabled(idImageItem, false);
@@ -534,6 +549,7 @@
case PageItem::Polygon:
case PageItem::RegularPolygon:
case PageItem::Arc:
+ TabStack->setItemEnabled(idShadowItem, true);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idTextItem, false);
TabStack->setItemEnabled(idImageItem, false);
@@ -541,12 +557,14 @@
break;
case PageItem::PolyLine:
case PageItem::Spiral:
+ TabStack->setItemEnabled(idShadowItem, false);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idTextItem, false);
TabStack->setItemEnabled(idImageItem, false);
TabStack->setItemEnabled(idLineItem, true);
break;
case PageItem::PathText:
+ TabStack->setItemEnabled(idShadowItem, false);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idTextItem, true);
TabStack->setItemEnabled(idImageItem, false);
@@ -554,6 +572,7 @@
break;
case PageItem::Symbol:
case PageItem::Group:
+ TabStack->setItemEnabled(idShadowItem, false);
TabStack->setItemEnabled(idShapeItem, false);
TabStack->setItemEnabled(idTextItem, false);
TabStack->setItemEnabled(idImageItem, false);
@@ -564,6 +583,7 @@
break;
case PageItem::Table:
TabStack->setItemEnabled(idTableItem, true);
+ TabStack->setItemEnabled(idShadowItem, true);
TabStack->setItemEnabled(idShapeItem, true);
TabStack->setItemEnabled(idTextItem, m_doc->appMode == modeEditTable);
TabStack->setItemEnabled(idImageItem, false);
@@ -597,6 +617,7 @@
m_unitIndex = m_doc->unitIndex();
xyzPal->unitChange();
+ shadowPal->unitChange();
shapePal->unitChange();
groupPal->unitChange();
imagePal->unitChange();
@@ -860,6 +881,7 @@
tablePal->updateColorList();
Cpal->updateColorList();
Tpal->updateColorList();
+ shadowPal->updateColorList();
assert (m_doc->PageColors.document());
}
@@ -889,6 +911,7 @@
TabStack->setItemText(idXYZItem, tr("X, Y, &Z"));
TabStack->setItemText(idTextItem, tr("&Text"));
TabStack->setItemText(idImageItem, tr("&Image"));
+ TabStack->setItemText(idShadowItem, tr("Soft Shadow"));
TabStack->setItemText(idShapeItem, tr("&Shape"));
TabStack->setItemText(idLineItem, tr("&Line"));
TabStack->setItemText(idColorsItem, tr("&Colors"));
@@ -897,6 +920,7 @@
TabStack->setItemText(idTableItem, tr("T&able"));
xyzPal->languageChange();
+ shadowPal->languageChange();
shapePal->languageChange();
groupPal->languageChange();
imagePal->languageChange();
Modified: trunk/Scribus/scribus/ui/propertiespalette.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=18772&path=/trunk/Scribus/scribus/ui/propertiespalette.h
==============================================================================
--- trunk/Scribus/scribus/ui/propertiespalette.h (original)
+++ trunk/Scribus/scribus/ui/propertiespalette.h Sun Jan 26 21:49:51 2014
@@ -36,6 +36,7 @@
class PropertiesPalette_Group;
class PropertiesPalette_Image;
class PropertiesPalette_Line;
+class PropertiesPalette_Shadow;
class PropertiesPalette_Shape;
class PropertiesPalette_Table;
class PropertiesPalette_Text;
@@ -74,6 +75,7 @@
PropertiesPalette_Group* groupPal;
PropertiesPalette_Image* imagePal;
PropertiesPalette_Line* linePal;
+ PropertiesPalette_Shadow* shadowPal;
PropertiesPalette_Shape* shapePal;
PropertiesPalette_Table* tablePal;
PropertiesPalette_Text* textPal;
@@ -136,6 +138,7 @@
int idColorsItem;
int idTransparencyItem;
int idGroupItem;
+ int idShadowItem;
};
#endif
More information about the scribus-commit
mailing list