Subversion Repositories Scribus

Compare Revisions

Ignore whitespace Rev 16731 → Rev 16732

/trunk/Scribus/scribus/pdflib_core.cpp
3418,6 → 3418,51
else
PutDoc("/BBox [ "+FToStr(-bleedLeft)+" "+FToStr(-Options.bleeds.Bottom)+" "+FToStr(maxBoxX)+" "+FToStr(maxBoxY)+" ]\n");
PutDoc("/Group "+QString::number(Gobj)+" 0 R\n");
PutDoc("/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\n");
if ((Seite.ImgObjects.count() != 0) || (Seite.XObjects.count() != 0))
{
PutDoc("/XObject <<\n");
QMap<QString,int>::Iterator it;
for (it = Seite.ImgObjects.begin(); it != Seite.ImgObjects.end(); ++it)
PutDoc("/"+it.key()+" "+QString::number(it.value())+" 0 R\n");
QMap<QString,int>::Iterator iti;
for (iti = Seite.XObjects.begin(); iti != Seite.XObjects.end(); ++iti)
PutDoc("/"+iti.key()+" "+QString::number(iti.value())+" 0 R\n");
PutDoc(">>\n");
}
if (Seite.FObjects.count() != 0)
{
PutDoc("/Font << \n");
QMap<QString,int>::Iterator it2;
for (it2 = Seite.FObjects.begin(); it2 != Seite.FObjects.end(); ++it2)
PutDoc("/"+it2.key()+" "+QString::number(it2.value())+" 0 R\n");
PutDoc(">>\n");
}
if (Shadings.count() != 0)
{
PutDoc("/Shading << \n");
QMap<QString,int>::Iterator it3;
for (it3 = Shadings.begin(); it3 != Shadings.end(); ++it3)
PutDoc("/"+it3.key()+" "+QString::number(it3.value())+" 0 R\n");
PutDoc(">>\n");
}
if (Patterns.count() != 0)
{
PutDoc("/Pattern << \n");
QMap<QString,int>::Iterator it3p;
for (it3p = Patterns.begin(); it3p != Patterns.end(); ++it3p)
PutDoc("/"+it3p.key()+" "+QString::number(it3p.value())+" 0 R\n");
PutDoc(">>\n");
}
if (Transpar.count() != 0)
{
PutDoc("/ExtGState << \n");
QMap<QString,int>::Iterator it3t;
for (it3t = Transpar.begin(); it3t != Transpar.end(); ++it3t)
PutDoc("/"+it3t.key()+" "+QString::number(it3t.value())+" 0 R\n");
PutDoc(">>\n");
}
PutDoc(">>\n");
if (Options.Compress)
data = CompressStr(&data);
PutDoc("/Length "+QString::number(data.length()+1));
6021,7 → 6066,7
Transpar[GXName] = writeGState("/SMask << /S /Luminosity /G "+QString::number(formObject)+" 0 R >>\n/AIS false\n/BM /" + blendMode(currItem->fillBlendmode()) + "\n");
tmp = "/"+GXName+" gs\n";
}
else if ((currItem->GrMask == 3) || (currItem->GrMask == 6))
else if ((currItem->GrMask == 3) || (currItem->GrMask == 6) || (currItem->GrMask == 7) || (currItem->GrMask == 8))
{
QString tmpOut = "";
PDF_PatternFillStroke(tmpOut, currItem, 2);
6058,19 → 6103,24
PutDoc("/"+it3p.key()+" "+QString::number(it3p.value())+" 0 R\n");
PutDoc(">>\n");
}
if ((Seite.ImgObjects.count() != 0) || (Seite.XObjects.count() != 0))
{
PutDoc("/XObject <<\n");
QMap<QString,int>::Iterator it;
for (it = Seite.ImgObjects.begin(); it != Seite.ImgObjects.end(); ++it)
PutDoc("/"+it.key()+" "+QString::number(it.value())+" 0 R\n");
QMap<QString,int>::Iterator iti;
for (iti = Seite.XObjects.begin(); iti != Seite.XObjects.end(); ++iti)
PutDoc("/"+iti.key()+" "+QString::number(iti.value())+" 0 R\n");
PutDoc(">>\n");
}
PutDoc(">>\n");
QString stre = "q\n";
if (currItem->isGroup())
if ((currItem->isGroup()) || (currItem->itemType() == PageItem::Symbol))
{
QTransform mpa;
mpa.translate(currItem->xPos() - ActPageP->xOffset(), ActPageP->height() - (currItem->yPos() - ActPageP->yOffset()));
mpa.translate(0, currItem->height() * scaleY);
mpa.rotate(-currItem->rotation());
stre += FToStr(mpa.m11())+" "+FToStr(mpa.m12())+" "+FToStr(mpa.m21())+" "+FToStr(mpa.m22())+" "+FToStr(mpa.dx())+" "+FToStr(mpa.dy())+" cm\n";
}
else if (currItem->itemType() == PageItem::Symbol)
{
QTransform mpa;
mpa.translate(0, currItem->height() * scaleY);
mpa.scale(scaleX, scaleY);
stre += FToStr(mpa.m11())+" "+FToStr(mpa.m12())+" "+FToStr(mpa.m21())+" "+FToStr(mpa.m22())+" "+FToStr(mpa.dx())+" "+FToStr(mpa.dy())+" cm\n";
}
6090,8 → 6140,12
ResCount++;
if (currItem->GrMask == 6)
Transpar[GXName] = writeGState("/SMask << /S /Luminosity /G "+QString::number(formObject)+" 0 R >>\n/BM /" + blendMode(currItem->fillBlendmode()) + "\n");
else
else if (currItem->GrMask == 7)
Transpar[GXName] = writeGState("/SMask << /S /Luminosity /G "+QString::number(formObject)+" 0 R /BC [ 1 1 1 ] /TR << /FunctionType 2 /Domain [ 0 1 ] /Range [ 0 1 ] /C0 [ 1 ] /C1 [ 0 ] /N 1 >> >>\n/BM /" + blendMode(currItem->fillBlendmode()) + "\n/AIS true\n");
else if (currItem->GrMask == 3)
Transpar[GXName] = writeGState("/SMask << /S /Alpha /G "+QString::number(formObject)+" 0 R >>\n/BM /" + blendMode(currItem->fillBlendmode()) + "\n");
else if (currItem->GrMask == 8)
Transpar[GXName] = writeGState("/SMask << /S /Alpha /G "+QString::number(formObject)+" 0 R /BC [ 1 1 1 ] /TR << /FunctionType 2 /Domain [ 0 1 ] /Range [ 0 1 ] /C0 [ 1 ] /C1 [ 0 ] /N 1 >> >>\n/BM /" + blendMode(currItem->fillBlendmode()) + "\n");
tmp = "/"+GXName+" gs\n";
}
else
6275,13 → 6329,8
}
else if (kind == 2)
{
if (currItem->isGroup())
if ((currItem->isGroup()) || (currItem->itemType() == PageItem::Symbol))
{
mpa.translate(currItem->xPos() - ActPageP->xOffset(), ActPageP->height() - (currItem->yPos() - ActPageP->yOffset()));
mpa.rotate(-currItem->rotation());
}
else if (currItem->itemType() == PageItem::Symbol)
{
mpa.translate(0, currItem->height() * scaleY);
mpa.scale(scaleX, scaleY);
}
/trunk/Scribus/scribus/pageitem_symbol.cpp
84,7 → 84,7
else
p->setGradientMask(VGradient::radial, FPoint(GrMaskStartX, GrMaskStartY), FPoint(GrMaskEndX, GrMaskEndY), FPoint(GrMaskFocalX, GrMaskFocalY), GrMaskScale, GrMaskSkew);
}
else if ((maskType() == 3) || (maskType() == 6))
else if ((maskType() == 3) || (maskType() == 6) || (maskType() == 7) || (maskType() == 8))
{
if ((patternMask().isEmpty()) || (!m_Doc->docPatterns.contains(patternMask())))
p->setMaskMode(0);
95,8 → 95,12
p->setPatternMask(&m_Doc->docPatterns[patternMask()], patternMaskScaleX * scw, patternMaskScaleY * sch, patternMaskOffsetX, patternMaskOffsetY, patternMaskRotation, patternMaskSkewX, patternMaskSkewY, patternMaskMirrorX, patternMaskMirrorY);
if (maskType() == 3)
p->setMaskMode(2);
else if (maskType() == 6)
p->setMaskMode(4);
else if (maskType() == 7)
p->setMaskMode(5);
else
p->setMaskMode(4);
p->setMaskMode(6);
}
}
else
/trunk/Scribus/scribus/scribusdoc.cpp
6559,7 → 6559,7
{
currItem = m_Selection->itemAt(a);
currItem->GrMask = typ;
if ((typ > 0) && (typ < 7))
if ((typ > 0) && (typ < 9))
currItem->updateGradientVectors();
currItem->update();
}
/trunk/Scribus/scribus/pageitem_group.cpp
133,7 → 133,7
else
p->setGradientMask(VGradient::radial, FPoint(GrMaskStartX, GrMaskStartY), FPoint(GrMaskEndX, GrMaskEndY), FPoint(GrMaskFocalX, GrMaskFocalY), GrMaskScale, GrMaskSkew);
}
else if ((maskType() == 3) || (maskType() == 6))
else if ((maskType() == 3) || (maskType() == 6) || (maskType() == 7) || (maskType() == 8))
{
if ((patternMask().isEmpty()) || (!m_Doc->docPatterns.contains(patternMask())))
p->setMaskMode(0);
144,8 → 144,12
p->setPatternMask(&m_Doc->docPatterns[patternMask()], patternMaskScaleX * scw, patternMaskScaleY * sch, patternMaskOffsetX, patternMaskOffsetY, patternMaskRotation, patternMaskSkewX, patternMaskSkewY, patternMaskMirrorX, patternMaskMirrorY);
if (maskType() == 3)
p->setMaskMode(2);
else if (maskType() == 6)
p->setMaskMode(4);
else if (maskType() == 7)
p->setMaskMode(5);
else
p->setMaskMode(4);
p->setMaskMode(6);
}
}
else
/trunk/Scribus/scribus/scpainter.cpp
13,6 → 13,7
#include <cairo.h>
 
#include <math.h>
#include <QDebug>
 
ScPainter::ScPainter( QImage *target, unsigned int w, unsigned int h, double transparency, int blendmode )
{
132,7 → 133,7
cairo_pattern_t *patM = getMaskPattern();
setRasterOp(m_blendMode);
cairo_mask(m_cr, patM);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy(patM);
}
370,7 → 371,7
{
cairo_pattern_t *patM = getMaskPattern();
cairo_mask(m_cr, patM);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy(patM);
}
383,7 → 384,7
{
cairo_pattern_t *patM = getMaskPattern();
cairo_mask(m_cr, patM);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy(patM);
}
858,9 → 859,11
}
else
{
if (maskMode == 4)
if ((maskMode == 4) || (maskMode == 5))
{
imageQ = m_maskPattern->pattern.copy();
if (maskMode == 5)
imageQ.invertPixels();
int h = imageQ.height();
int w = imageQ.width();
int k;
883,7 → 886,12
imageMask = cairo_image_surface_create_for_data ((uchar*)imageQ.bits(), CAIRO_FORMAT_ARGB32, w, h, w*4);
}
else
imageMask = cairo_image_surface_create_for_data ((uchar*)m_maskPattern->getPattern()->bits(), CAIRO_FORMAT_ARGB32, m_maskPattern->getPattern()->width(), m_maskPattern->getPattern()->height(), m_maskPattern->getPattern()->width()*4);
{
imageQ = m_maskPattern->pattern.copy();
if (maskMode == 6)
imageQ.invertPixels(QImage::InvertRgba);
imageMask = cairo_image_surface_create_for_data ((uchar*)imageQ.bits(), CAIRO_FORMAT_ARGB32, m_maskPattern->getPattern()->width(), m_maskPattern->getPattern()->height(), m_maskPattern->getPattern()->width()*4);
}
pat = cairo_pattern_create_for_surface(imageMask);
cairo_pattern_set_extend(pat, CAIRO_EXTEND_REPEAT);
cairo_pattern_set_filter(pat, CAIRO_FILTER_GOOD);
929,7 → 937,7
#endif
cairo_clip_preserve(m_cr);
cairo_mask(m_cr, pat);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy(pat);
}
1486,7 → 1494,7
setRasterOp(m_blendModeFill);
#endif
cairo_mask(m_cr, patM);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy (patM);
}
1544,7 → 1552,7
setRasterOp(m_blendModeFill);
#endif
cairo_mask(m_cr, patM);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy (patM);
}
1734,7 → 1742,7
{
cairo_pattern_t *patM = getMaskPattern();
cairo_mask(m_cr, patM);
if ((maskMode == 2) || (maskMode == 4))
if ((maskMode == 2) || (maskMode == 4) || (maskMode == 5) || (maskMode == 6))
cairo_surface_destroy(imageMask);
cairo_pattern_destroy(patM);
}
/trunk/Scribus/scribus/pageitem.cpp
1543,7 → 1543,7
else
p->setGradientMask(VGradient::radial, FPoint(GrMaskStartX, GrMaskStartY), FPoint(GrMaskEndX, GrMaskEndY), FPoint(GrMaskFocalX, GrMaskFocalY), GrMaskScale, GrMaskSkew);
}
else if ((GrMask == 3) || (GrMask == 6))
else if ((GrMask == 3) || (GrMask == 6) || (GrMask == 7) || (GrMask == 8))
{
if ((patternMaskVal.isEmpty()) || (!m_Doc->docPatterns.contains(patternMaskVal)))
p->setMaskMode(0);
1552,8 → 1552,12
p->setPatternMask(&m_Doc->docPatterns[patternMaskVal], patternMaskScaleX, patternMaskScaleY, patternMaskOffsetX, patternMaskOffsetY, patternMaskRotation, patternMaskSkewX, patternMaskSkewY, patternMaskMirrorX, patternMaskMirrorY);
if (GrMask == 3)
p->setMaskMode(2);
else if (GrMask == 6)
p->setMaskMode(4);
else if (GrMask == 7)
p->setMaskMode(5);
else
p->setMaskMode(4);
p->setMaskMode(6);
}
}
else
2033,6 → 2037,8
 
QImage PageItem::DrawObj_toImage(QList<PageItem*> &emG, double scaling)
{
bool savedFlag = m_Doc->guidesPrefs().framesShown;
m_Doc->guidesPrefs().framesShown = false;
QImage retImg = QImage(qRound(gWidth * scaling), qRound(gHeight * scaling), QImage::Format_ARGB32_Premultiplied);
retImg.fill( qRgba(0, 0, 0, 0) );
ScPainter *painter = new ScPainter(&retImg, retImg.width(), retImg.height(), 1, 0);
2080,6 → 2086,7
}
painter->end();
delete painter;
m_Doc->guidesPrefs().framesShown = savedFlag;
return retImg;
}
 
/trunk/Scribus/scribus/ui/about.cpp
112,7 → 112,7
buildID = new QLabel( tab );
buildID->setAlignment(Qt::AlignCenter);
buildID->setTextInteractionFlags(Qt::TextSelectableByMouse);
QString BUILD_DAY = "07";
QString BUILD_DAY = "30";
QString BUILD_MONTH = CommonStrings::july;
QString BUILD_YEAR = "2011";
QString BUILD_TIME = "";
/trunk/Scribus/scribus/ui/transparencypalette.cpp
59,6 → 59,7
connect(editPatternProps, SIGNAL(clicked()), this, SLOT(changePatternProps()));
connect(transpCalcGradient, SIGNAL(clicked()), this, SLOT(switchGradientMode()));
connect(transpCalcPattern, SIGNAL(clicked()), this, SLOT(switchPatternMode()));
connect(usePatternInverted, SIGNAL(clicked()), this, SLOT(switchPatternMode()));
}
 
void Tpalette::setCurrentItem(PageItem* item)
139,6 → 140,7
disconnect(gradientType, SIGNAL(activated(int)), this, SLOT(slotGradType(int)));
disconnect(transpCalcGradient, SIGNAL(clicked()), this, SLOT(switchGradientMode()));
disconnect(transpCalcPattern, SIGNAL(clicked()), this, SLOT(switchPatternMode()));
disconnect(usePatternInverted, SIGNAL(clicked()), this, SLOT(switchPatternMode()));
gradEdit->setGradient(currentItem->mask_gradient);
if (!currentItem->gradientMask().isEmpty())
{
162,10 → 164,13
tabWidget->setTabEnabled(2, true);
transpCalcGradient->setChecked(false);
transpCalcPattern->setChecked(false);
usePatternInverted->setChecked(false);
if ((currentItem->GrMask == 4) || (currentItem->GrMask == 5))
transpCalcGradient->setChecked(true);
if (currentItem->GrMask == 6)
if ((currentItem->GrMask == 6) || (currentItem->GrMask == 7))
transpCalcPattern->setChecked(true);
if ((currentItem->GrMask == 7) || (currentItem->GrMask == 8))
usePatternInverted->setChecked(true);
if ((currentItem->GrMask == 1) || (currentItem->GrMask == 4))
gradientType->setCurrentIndex(0);
else if ((currentItem->GrMask == 2) || (currentItem->GrMask == 5))
183,6 → 188,7
connect(gradientType, SIGNAL(activated(int)), this, SLOT(slotGradType(int)));
connect(transpCalcGradient, SIGNAL(clicked()), this, SLOT(switchGradientMode()));
connect(transpCalcPattern, SIGNAL(clicked()), this, SLOT(switchPatternMode()));
connect(usePatternInverted, SIGNAL(clicked()), this, SLOT(switchPatternMode()));
}
 
void Tpalette::updateCList()
269,9 → 275,19
else if (number == 2)
{
if (transpCalcPattern->isChecked())
emit NewGradient(6);
{
if (usePatternInverted->isChecked())
emit NewGradient(7);
else
emit NewGradient(6);
}
else
emit NewGradient(3);
{
if (usePatternInverted->isChecked())
emit NewGradient(8);
else
emit NewGradient(3);
}
}
else
emit NewGradient(0);
346,10 → 362,19
void Tpalette::switchPatternMode()
{
if (transpCalcPattern->isChecked())
emit NewGradient(6);
{
if (usePatternInverted->isChecked())
emit NewGradient(7);
else
emit NewGradient(6);
}
else
emit NewGradient(3);
 
{
if (usePatternInverted->isChecked())
emit NewGradient(8);
else
emit NewGradient(3);
}
}
 
void Tpalette::editGradientVector()
/trunk/Scribus/scribus/ui/transparencypalette.ui
7,7 → 7,7
<x>0</x>
<y>0</y>
<width>236</width>
<height>363</height>
<height>373</height>
</rect>
</property>
<property name="windowTitle">
362,12 → 362,6
<string>Pattern</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>2</number>
</property>
<property name="margin">
<number>5</number>
</property>
<item>
<widget class="QListWidget" name="patternBox">
<property name="movement">
424,6 → 418,13
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="usePatternInverted">
<property name="text">
<string>Use inverted Pattern</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
/trunk/Scribus/scribus/pageitem_imageframe.cpp
181,7 → 181,7
else
p->setGradientMask(VGradient::radial, FPoint(GrMaskStartX * mscalex, GrMaskStartY * mscaley), FPoint(GrMaskEndX * mscalex, GrMaskEndY * mscaley), FPoint(GrMaskFocalX * mscalex, GrMaskFocalY * mscaley), GrMaskScale, GrMaskSkew);
}
else if ((GrMask == 3) || (GrMask == 6))
else if ((GrMask == 3) || (GrMask == 6) || (GrMask == 7) || (GrMask == 8))
{
if ((patternMaskVal.isEmpty()) || (!m_Doc->docPatterns.contains(patternMaskVal)))
p->setMaskMode(0);
190,8 → 190,12
p->setPatternMask(&m_Doc->docPatterns[patternMaskVal], patternMaskScaleX * mscalex, patternMaskScaleY * mscaley, patternMaskOffsetX, patternMaskOffsetY, patternMaskRotation, patternMaskSkewX, patternMaskSkewY, patternMaskMirrorX, patternMaskMirrorY);
if (GrMask == 3)
p->setMaskMode(2);
else if (GrMask == 6)
p->setMaskMode(4);
else if (GrMask == 7)
p->setMaskMode(5);
else
p->setMaskMode(4);
p->setMaskMode(6);
}
}
else
/trunk/Scribus/scribus/plugins/import/ai/importaiplugin.cpp
19,6 → 19,7
#include "undomanager.h"
#include "util_formats.h"
 
#include <QApplication>
#include <QMessageBox>
 
int importai_getPluginAPIVersion()
164,6 → 165,7
fT.close();
if (tempBuf.startsWith("%PDF"))
{
qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
QMessageBox msgBox(ScCore->primaryMainWindow());
msgBox.setText( tr("This file contains 2 versions of the data."));
msgBox.setInformativeText( tr("Choose which one should be imported"));
181,6 → 183,7
QMessageBox::warning(ScCore->primaryMainWindow(), CommonStrings::trWarning, tr("The PDF Import plugin could not be found"), 1, 0, 0);
return false;
}
qApp->changeOverrideCursor(QCursor(Qt::WaitCursor));
bool success = fmt->loadFile(fileName, flags);
if (activeTransaction)
{
194,6 → 197,7
QMessageBox::warning(ScCore->primaryMainWindow(), CommonStrings::trWarning, tr("The file could not be imported"), 1, 0, 0);
return success;
}
qApp->changeOverrideCursor(QCursor(Qt::WaitCursor));
}
}
}
/trunk/Scribus/scribus/plugins/import/pdf/slaoutput.cpp
13,11 → 13,7
m_doc = doc;
m_Elements = Elements;
m_groupStack.clear();
groupEntry gElements;
gElements.forSoftMask = gFalse;
gElements.alpha = gFalse;
gElements.maskName = "";
m_groupStack.push(gElements);
pushGroup();
m_clipStack.clear();
m_currentMask = "";
m_importedColors = importedColors;
139,11 → 135,7
void SlaOutputDev::beginTransparencyGroup(GfxState *state, double *bbox, GfxColorSpace * /*blendingColorSpace*/, GBool /*isolated*/, GBool /*knockout*/, GBool forSoftMask)
{
// qDebug() << "Start Group";
groupEntry gElements;
gElements.forSoftMask = forSoftMask;
gElements.alpha = gFalse;
gElements.maskName = "";
m_groupStack.push(gElements);
pushGroup("", forSoftMask);
}
 
void SlaOutputDev::endTransparencyGroup(GfxState *state)
190,16 → 182,7
}
}
if (m_groupStack.count() != 0)
{
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
}
applyMask(ite);
}
if (m_groupStack.count() != 0)
{
212,10 → 195,21
}
}
 
void SlaOutputDev::setSoftMask(GfxState * /*state*/, double * /*bbox*/, GBool alpha, Function * /*transferFunc*/, GfxColor * /*backdropColor*/)
void SlaOutputDev::setSoftMask(GfxState * /*state*/, double * /*bbox*/, GBool alpha, Function *transferFunc, GfxColor * /*backdropColor*/)
{
if (m_groupStack.count() != 0)
{
double lum = 0;
double lum2 = 0;
if (transferFunc)
transferFunc->transform(&lum, &lum2);
else
lum2 = lum;
if (lum == lum2)
m_groupStack.top().inverted = false;
else
m_groupStack.top().inverted = true;
// qDebug() << "Inverted Softmask" << m_groupStack.top().inverted;
m_groupStack.top().maskName = m_currentMask;
m_groupStack.top().alpha = alpha;
}
258,14 → 252,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
clipEntry clp;
clp.ClipCoords = out.copy();
273,11 → 260,7
clp.grStackDepth = grStackDepth;
m_clipStack.push(clp);
m_doc->GroupCounter++;
groupEntry gElements;
gElements.forSoftMask = gFalse;
gElements.alpha = gFalse;
gElements.maskName = "";
m_groupStack.push(gElements);
pushGroup();
}
 
void SlaOutputDev::eoClip(GfxState *state)
309,14 → 292,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
clipEntry clp;
clp.ClipCoords = out.copy();
324,11 → 300,7
clp.grStackDepth = grStackDepth;
m_clipStack.push(clp);
m_doc->GroupCounter++;
groupEntry gElements;
gElements.forSoftMask = gFalse;
gElements.alpha = gFalse;
gElements.maskName = "";
m_groupStack.push(gElements);
pushGroup();
}
 
void SlaOutputDev::stroke(GfxState *state)
417,9 → 389,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->setLineEnd(PLineEnd);
ite->setLineJoin(PLineJoin);
ite->setWidthHeight(wh.x(),wh.y());
429,14 → 399,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
}
}
471,9 → 434,7
ite->setLineShade(100);
ite->setFillEvenOdd(true);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->setLineEnd(PLineEnd);
ite->setLineJoin(PLineJoin);
ite->setWidthHeight(wh.x(),wh.y());
483,14 → 444,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
}
}
576,9 → 530,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->setLineEnd(PLineEnd);
ite->setLineJoin(PLineJoin);
ite->setTextFlowMode(PageItem::TextFlowDisabled);
590,14 → 542,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
return gTrue;
}
691,9 → 636,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->setLineEnd(PLineEnd);
ite->setLineJoin(PLineJoin);
ite->setTextFlowMode(PageItem::TextFlowDisabled);
705,14 → 648,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
return gTrue;
}
747,9 → 683,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->setLineEnd(PLineEnd);
ite->setLineJoin(PLineJoin);
ite->setTextFlowMode(PageItem::TextFlowDisabled);
758,14 → 692,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
// qDebug() << "Mesh of" << shading->getNPatches() << "Patches";
for (int i = 0; i < shading->getNPatches(); i++)
889,6 → 816,7
groupEntry gElements;
gElements.forSoftMask = gFalse;
gElements.alpha = gFalse;
gElements.inverted = false;
gElements.maskName = "";
gElements.Items.clear();
m_groupStack.push(gElements);
906,11 → 834,6
m_ctm = QTransform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]);
QTransform mm = QTransform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5]);
QTransform mmx = mm * m_ctm;
// qDebug() << "Pattern Fill";
// qDebug() << "mat" << mat[0] << mat[1] << mat[2] << mat[3] << mat[4] << mat[5];
// qDebug() << "pmat" << pmat[0] << pmat[1] << pmat[2] << pmat[3] << pmat[4] << pmat[5];
// qDebug() << "ctm" << ctm[0] << ctm[1] << ctm[2] << ctm[3] << ctm[4] << ctm[5];
// qDebug() << "cumulated ctm" << mmx;
gfx = new Gfx(xref, this, resDict, catalog, &box, NULL);
gfx->display(str);
gElements = m_groupStack.pop();
955,8 → 878,6
state->getClipBBox(&xmin, &ymin, &xmax, &ymax);
QRectF crect = QRectF(QPointF(xmin, ymin), QPointF(xmax, ymax));
crect = crect.normalized();
// qDebug() << "Crect" << crect;
// qDebug() << "Xoffs" << crect.x() - (pmat[4] / fabs(pmat[0])) << "Yoffs" << crect.y() - (m_doc->currentPage()->height() - (pmat[5] / fabs(pmat[3])));
QString output = QString("M %1 %2").arg(0.0).arg(0.0);
output += QString("L %1 %2").arg(crect.width()).arg(0.0);
output += QString("L %1 %2").arg(crect.width()).arg(crect.height());
973,9 → 894,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->setLineEnd(PLineEnd);
ite->setLineJoin(PLineJoin);
ite->setTextFlowMode(PageItem::TextFlowDisabled);
982,20 → 901,12
ite->GrType = 8;
ite->setPattern(id);
ite->setPatternTransform(fabs(pmat[0]) * 100, fabs(pmat[3]) * 100, mmx.dx() - ctm[4], mmx.dy() - ctm[5], 0, -1 * pmat[1], pmat[2]);
// ite->setPatternTransform(fabs(pmat[0]) * 100, fabs(pmat[3]) * 100, pmat[4], -1 * pmat[5], 0, -1 * pmat[1], pmat[2]);
m_doc->AdjustItemSize(ite);
m_Elements->append(ite);
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
delete gfx;
return gTrue;
1074,7 → 985,7
yCoor = yCoor + ctm[5] - (fabs(sy) * height);
else
yCoor = yCoor + ctm[5];
int z = m_doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, xCoor , yCoor, fabs(sx) * width, fabs(sy) * height, 0, CurrColorFill, CurrColorStroke, true);
int z = m_doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, xCoor , yCoor, fabs(sx) * width, fabs(sy) * height, 0, CommonStrings::None, CommonStrings::None, true);
PageItem* ite = m_doc->Items->at(z);
ite->SetRectFrame();
m_doc->setRedrawBounding(ite);
1084,9 → 995,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->tempImageFile = new QTemporaryFile(QDir::tempPath() + "/scribus_temp_pdf_XXXXXX.png");
ite->tempImageFile->open();
QString fileName = getLongPathName(ite->tempImageFile->fileName());
1104,14 → 1013,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
delete imgStr;
delete[] buffer;
1182,7 → 1084,7
yCoor = yCoor + ctm[5] - (fabs(sy) * height);
else
yCoor = yCoor + ctm[5];
int z = m_doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, xCoor , yCoor, fabs(sx) * width, fabs(sy) * height, 0, CurrColorFill, CurrColorStroke, true);
int z = m_doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, xCoor , yCoor, fabs(sx) * width, fabs(sy) * height, 0, CommonStrings::None, CommonStrings::None, true);
PageItem* ite = m_doc->Items->at(z);
ite->SetRectFrame();
m_doc->setRedrawBounding(ite);
1192,9 → 1094,7
ite->setLineShade(100);
ite->setFillEvenOdd(false);
ite->setFillTransparency(1.0 - state->getFillOpacity());
ite->setLineTransparency(1.0 - state->getStrokeOpacity());
ite->setFillBlendmode(getBlendMode(state));
ite->setLineBlendmode(getBlendMode(state));
ite->tempImageFile = new QTemporaryFile(QDir::tempPath() + "/scribus_temp_pdf_XXXXXX.png");
ite->tempImageFile->open();
QString fileName = getLongPathName(ite->tempImageFile->fileName());
1212,14 → 1112,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
delete imgStr;
delete[] buffer;
1581,14 → 1474,7
if (m_groupStack.count() != 0)
{
m_groupStack.top().Items.append(ite);
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
applyMask(ite);
}
delete fontPath;
}
1599,11 → 1485,7
void SlaOutputDev::beginTextObject(GfxState *state)
{
// qDebug() << "Begin Text Object";
groupEntry gElements;
gElements.forSoftMask = gFalse;
gElements.alpha = gFalse;
gElements.maskName = "";
m_groupStack.push(gElements);
pushGroup();
}
 
void SlaOutputDev::endTextObject(GfxState *state)
1628,16 → 1510,7
m_Elements->append(tmpSel->itemAt(as));
}
if (m_groupStack.count() != 0)
{
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
ite->setMaskType(3);
else
ite->setMaskType(6);
}
}
applyMask(ite);
}
if (m_groupStack.count() != 0)
{
1851,3 → 1724,37
return mode;
}
 
void SlaOutputDev::applyMask(PageItem *ite)
{
if (m_groupStack.count() != 0)
{
if (!m_groupStack.top().maskName.isEmpty())
{
ite->setPatternMask(m_groupStack.top().maskName);
if (m_groupStack.top().alpha)
{
if (m_groupStack.top().inverted)
ite->setMaskType(8);
else
ite->setMaskType(3);
}
else
{
if (m_groupStack.top().inverted)
ite->setMaskType(7);
else
ite->setMaskType(6);
}
}
}
}
 
void SlaOutputDev::pushGroup(QString maskName, GBool forSoftMask, GBool alpha, bool inverted)
{
groupEntry gElements;
gElements.forSoftMask = forSoftMask;
gElements.alpha = alpha;
gElements.inverted = inverted;
gElements.maskName = maskName;
m_groupStack.push(gElements);
}
/trunk/Scribus/scribus/plugins/import/pdf/importpdfplugin.cpp
19,6 → 19,7
#include "undomanager.h"
#include "util_formats.h"
#include "util.h"
#include <QApplication>
#include <QMessageBox>
 
 
207,7 → 208,9
}
else
{
qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
QMessageBox::warning(ScCore->primaryMainWindow(), CommonStrings::trWarning, tr("The Import plugin cannot handle Postscript files"), 1, 0, 0);
qApp->changeOverrideCursor(QCursor(Qt::WaitCursor));
return false;
}
}
/trunk/Scribus/scribus/plugins/import/pdf/importpdf.cpp
331,25 → 331,25
Object obj;
GooString *s1;
Dict *infoDict = info.getDict();
if (infoDict->lookup("Title", &obj )->isString())
if (infoDict->lookup((char*)"Title", &obj )->isString())
{
s1 = obj.getString();
m_Doc->documentInfo().setTitle(UnicodeParsedString(obj.getString()));
obj.free();
}
if (infoDict->lookup("Author", &obj )->isString())
if (infoDict->lookup((char*)"Author", &obj )->isString())
{
s1 = obj.getString();
m_Doc->documentInfo().setAuthor(UnicodeParsedString(obj.getString()));
obj.free();
}
if (infoDict->lookup("Subject", &obj )->isString())
if (infoDict->lookup((char*)"Subject", &obj )->isString())
{
s1 = obj.getString();
m_Doc->documentInfo().setSubject(UnicodeParsedString(obj.getString()));
obj.free();
}
if (infoDict->lookup("Keywords", &obj )->isString())
if (infoDict->lookup((char*)"Keywords", &obj )->isString())
{
s1 = obj.getString();
m_Doc->documentInfo().setKeywords(UnicodeParsedString(obj.getString()));
/trunk/Scribus/scribus/plugins/import/pdf/slaoutput.h
162,6 → 162,8
QString getColor(GfxColorSpace *color_space, GfxColor *color);
QString convertPath(GfxPath *path);
int getBlendMode(GfxState *state);
void applyMask(PageItem *ite);
void pushGroup(QString maskName = "", GBool forSoftMask = gFalse, GBool alpha = gFalse, bool inverted = false);
bool pathIsClosed;
bool firstLayer;
QString CurrColorFill;
184,6 → 186,7
GBool forSoftMask;
GBool alpha;
QString maskName;
bool inverted;
};
QStack<groupEntry> m_groupStack;
QString m_currentMask;