Author: jghali Date: Sun Feb 25 04:24:22 2018 New Revision: 22409 URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22409 Log: reduce indentation level in importColorsFromFile() by exiting early when possible
Modified:
trunk/Scribus/scribus/util_color.cpp
Modified: trunk/Scribus/scribus/util_color.cpp
URL:
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22409&path=/trunk/Scribus/scribus/util_color.cpp
==============================================================================
--- trunk/Scribus/scribus/util_color.cpp (original)
+++ trunk/Scribus/scribus/util_color.cpp Sun Feb 25 04:24:22 2018
@@ -624,34 +624,56 @@
bool importColorsFromFile(QString fileName, ColorList &EditColors,
QHash<QString, VGradient> *dialogGradients, bool merge)
{
+ if (fileName.isEmpty())
+ return false;
int oldCount = EditColors.count();
- if (!fileName.isEmpty())
- {
- QFileInfo fi = QFileInfo(fileName);
- QString ext = fi.suffix().toLower();
- if (extensionIndicatesEPSorPS(ext))
+
+ QFileInfo fi = QFileInfo(fileName);
+ QString ext = fi.suffix().toLower();
+ if (extensionIndicatesEPSorPS(ext))
+ {
+ QString tmp, FarNam;
+ double c, m, y, k;
+ ScColor cc;
+ QFile f(fileName);
+ if (f.open(QIODevice::ReadOnly))
{
- QString tmp, FarNam;
- double c, m, y, k;
- ScColor cc;
- QFile f(fileName);
- if (f.open(QIODevice::ReadOnly))
+ bool isAtend = false;
+ QDataStream ts(&f);
+ while (!ts.atEnd())
{
- bool isAtend = false;
- QDataStream ts(&f);
- while (!ts.atEnd())
+ tmp = readLineFromDataStream(ts);
+ if ((tmp.startsWith("%%CMYKCustomColor")) ||
(tmp.startsWith("%%CMYKProcessColor")))
{
- tmp = readLineFromDataStream(ts);
- if
((tmp.startsWith("%%CMYKCustomColor")) ||
(tmp.startsWith("%%CMYKProcessColor")))
+ if (tmp.contains("(atend)"))
+ isAtend = true;
+ else
{
- if (tmp.contains("(atend)"))
- isAtend = true;
- else
- {
- if
(tmp.startsWith("%%CMYKCustomColor"))
- tmp =
tmp.remove(0,18);
- else if
(tmp.startsWith("%%CMYKProcessColor"))
- tmp =
tmp.remove(0,19);
+ if
(tmp.startsWith("%%CMYKCustomColor"))
+ tmp = tmp.remove(0,18);
+ else if
(tmp.startsWith("%%CMYKProcessColor"))
+ tmp = tmp.remove(0,19);
+ ScTextStream ts2(&tmp,
QIODevice::ReadOnly);
+ ts2 >> c >> m >> y >> k;
+ FarNam = ts2.readAll();
+ FarNam = FarNam.trimmed();
+ FarNam = FarNam.remove(0,1);
+ FarNam =
FarNam.remove(FarNam.length()-1,1);
+ FarNam = FarNam.simplified();
+ cc = ScColor(qRound(255 * c),
qRound(255 * m), qRound(255 * y), qRound(255 * k));
+ cc.setSpotColor(true);
+ if (!FarNam.isEmpty())
+
EditColors.tryAddColor(FarNam, cc);
+ while (!ts.atEnd())
+ {
+ quint64 oldPos =
ts.device()->pos();
+ tmp =
readLineFromDataStream(ts);
+ if
(!tmp.startsWith("%%+"))
+ {
+
ts.device()->seek(oldPos);
+ break;
+ }
+ tmp = tmp.remove(0,3);
ScTextStream ts2(&tmp,
QIODevice::ReadOnly);
ts2 >> c >> m >> y >> k;
FarNam = ts2.readAll();
@@ -663,40 +685,39 @@
cc.setSpotColor(true);
if (!FarNam.isEmpty())
EditColors.tryAddColor(FarNam, cc);
- while (!ts.atEnd())
- {
- quint64 oldPos
= ts.device()->pos();
- tmp =
readLineFromDataStream(ts);
- if
(!tmp.startsWith("%%+"))
- {
-
ts.device()->seek(oldPos);
- break;
- }
- tmp =
tmp.remove(0,3);
- ScTextStream
ts2(&tmp, QIODevice::ReadOnly);
- ts2 >> c >> m
>> y >> k;
- FarNam =
ts2.readAll();
- FarNam =
FarNam.trimmed();
- FarNam =
FarNam.remove(0,1);
- FarNam =
FarNam.remove(FarNam.length()-1,1);
- FarNam =
FarNam.simplified();
- cc =
ScColor(qRound(255 * c), qRound(255 * m), qRound(255 * y), qRound(255 * k));
-
cc.setSpotColor(true);
- if
(!FarNam.isEmpty())
-
EditColors.tryAddColor(FarNam, cc);
- }
}
}
- if
((tmp.startsWith("%%RGBCustomColor")) || (tmp.startsWith("%%RGBProcessColor")))
+ }
+ if ((tmp.startsWith("%%RGBCustomColor")) ||
(tmp.startsWith("%%RGBProcessColor")))
+ {
+ if (tmp.contains("(atend)"))
+ isAtend = true;
+ else
{
- if (tmp.contains("(atend)"))
- isAtend = true;
- else
- {
- if
(tmp.startsWith("%%RGBCustomColor"))
- tmp =
tmp.remove(0,17);
- else if
(tmp.startsWith("%%RGBProcessColor"))
- tmp =
tmp.remove(0,18);
+ if
(tmp.startsWith("%%RGBCustomColor"))
+ tmp = tmp.remove(0,17);
+ else if
(tmp.startsWith("%%RGBProcessColor"))
+ tmp = tmp.remove(0,18);
+ ScTextStream ts2(&tmp,
QIODevice::ReadOnly);
+ ts2 >> c >> m >> y;
+ FarNam = ts2.readAll();
+ FarNam = FarNam.trimmed();
+ FarNam = FarNam.remove(0,1);
+ FarNam =
FarNam.remove(FarNam.length()-1,1);
+ FarNam = FarNam.simplified();
+ cc = ScColor(qRound(255 * c),
qRound(255 * m), qRound(255 * y));
+ if (!FarNam.isEmpty())
+
EditColors.tryAddColor(FarNam, cc);
+ while (!ts.atEnd())
+ {
+ quint64 oldPos =
ts.device()->pos();
+ tmp =
readLineFromDataStream(ts);
+ if
(!tmp.startsWith("%%+"))
+ {
+
ts.device()->seek(oldPos);
+ break;
+ }
+ tmp = tmp.remove(0,3);
ScTextStream ts2(&tmp,
QIODevice::ReadOnly);
ts2 >> c >> m >> y;
FarNam = ts2.readAll();
@@ -707,431 +728,561 @@
cc = ScColor(qRound(255
* c), qRound(255 * m), qRound(255 * y));
if (!FarNam.isEmpty())
EditColors.tryAddColor(FarNam, cc);
- while (!ts.atEnd())
- {
- quint64 oldPos
= ts.device()->pos();
- tmp =
readLineFromDataStream(ts);
- if
(!tmp.startsWith("%%+"))
- {
-
ts.device()->seek(oldPos);
- break;
- }
- tmp =
tmp.remove(0,3);
- ScTextStream
ts2(&tmp, QIODevice::ReadOnly);
- ts2 >> c >> m
>> y;
- FarNam =
ts2.readAll();
- FarNam =
FarNam.trimmed();
- FarNam =
FarNam.remove(0,1);
- FarNam =
FarNam.remove(FarNam.length()-1,1);
- FarNam =
FarNam.simplified();
- cc =
ScColor(qRound(255 * c), qRound(255 * m), qRound(255 * y));
- if
(!FarNam.isEmpty())
-
EditColors.tryAddColor(FarNam, cc);
- }
- }
- }
- if (tmp.startsWith("%%EndComments"))
- {
- if (!isAtend)
- break;
+ }
}
}
- f.close();
+ if (tmp.startsWith("%%EndComments"))
+ {
+ if (!isAtend)
+ break;
+ }
+ }
+ f.close();
+ }
+ }
+ else
+ {
+ QStringList allFormatsV =
LoadSavePlugin::getExtensionsForColors();
+ if (allFormatsV.contains(ext))
+ {
+ FileLoader fl(fileName);
+ int testResult = fl.testFile();
+ if (testResult != -1)
+ {
+ ColorList LColors;
+ if (fl.readColors(LColors))
+ {
+ ColorList::Iterator it;
+ for (it = LColors.begin(); it !=
LColors.end(); ++it)
+ {
+
EditColors.tryAddColor(it.key(), it.value());
+ }
+ return (EditColors.count() != oldCount);
+ }
}
}
- else
+ if (ext == "acb") // Adobe color book
format
{
- QStringList allFormatsV =
LoadSavePlugin::getExtensionsForColors();
- if (allFormatsV.contains(ext))
+ QFile fiC(fileName);
+ if (fiC.open(QIODevice::ReadOnly))
{
- FileLoader fl(fileName);
- int testResult = fl.testFile();
- if (testResult != -1)
+ ScColor lf = ScColor();
+ quint16 vers = 0;
+ quint32 signature;
+ QDataStream ts(&fiC);
+ ts.setByteOrder(QDataStream::BigEndian);
+ ts >> signature;
+ ts >> vers;
+ if ((signature == 0x38424342) && (vers == 1))
{
- ColorList LColors;
- if (fl.readColors(LColors))
+ quint16 vendor, numcolors, colType;
+ ts >> vendor;
+// QString title =
readAdobeUniCodeString(ts);
+// QString prefix =
readAdobeUniCodeString(ts);
+// QString postfix =
readAdobeUniCodeString(ts);
+// QString description =
readAdobeUniCodeString(ts);
+ ts >> numcolors;
+ ts.skipRawData(4);
+ ts >> colType;
+ for (quint16 cc = 0; cc < numcolors;
cc++)
{
- ColorList::Iterator it;
- for (it = LColors.begin(); it
!= LColors.end(); ++it)
- {
-
EditColors.tryAddColor(it.key(), it.value());
- }
- return (EditColors.count() !=
oldCount);
+ QString name =
readAdobeUniCodeString(ts);
+ if (vendor == 3000)
+ name.prepend("ANPA");
+ else if (vendor == 3001)
+
name.prepend("Focoltone");
+ else if (vendor == 3002)
+
name.prepend("PantoneCoated");
+ else if (vendor == 3003)
+
name.prepend("PantoneProcess");
+ else if (vendor == 3004)
+
name.prepend("PantoneProSlim");
+ else if (vendor == 3005)
+
name.prepend("PantoneUncoated");
+ else if (vendor == 3006)
+ name.prepend("Toyo");
+ else if (vendor == 3007)
+
name.prepend("Trumatch");
+ else if (vendor == 3008)
+ name.prepend("HKSE");
+ else if (vendor == 3009)
+ name.prepend("HKSK");
+ else if (vendor == 3010)
+ name.prepend("HKSN");
+ else if (vendor == 3011)
+ name.prepend("HKSZ");
+ else if (vendor == 3012)
+ name.prepend("DIC");
+ else if (vendor == 3020)
+
name.prepend("PantonePastelCoated");
+ else if (vendor == 3021)
+
name.prepend("PantonePastelUncoated");
+ else if (vendor == 3022)
+
name.prepend("PantoneMetallic");
+ ts.skipRawData(6);
+ quint8 componentR, componentG,
componentB, componentK;
+ ts >> componentR >> componentG
>> componentB;
+ if (colType == 2)
+ ts >> componentK;
+ if (!name.isEmpty())
+ {
+ bool validColor = false;
+ if (colType == 0)
// RBG
+ {
+
lf.setRgbColor(componentR, componentG, componentB);
+ validColor =
true;
+ }
+ else if (colType == 2)
// CMYK
+ {
+ lf.setColor(255
- componentR, 255 - componentG, 255 - componentB, 255 - componentK);
+ validColor =
true;
+ }
+ if (validColor)
+ {
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+
EditColors.tryAddColor(name, lf);
+ }
+ }
+ }
+ fiC.close();
+ }
+ else // try
AutoCAD XML format
+ {
+ fiC.close();
+ QByteArray docBytes("");
+ loadRawText(fileName, docBytes);
+ QString docText("");
+ docText = QString::fromUtf8(docBytes);
+ QDomDocument docu("scridoc");
+ if (!docu.setContent(docText))
+ return false;
+ QDomElement elem =
docu.documentElement();
+ QDomNode PAGE = elem.firstChild();
+ while(!PAGE.isNull())
+ {
+ QDomElement pg =
PAGE.toElement();
+ if (pg.tagName() == "colorPage")
+ {
+ QDomNode colNode =
pg.firstChild();
+ while(!colNode.isNull())
+ {
+ QDomElement cg
= colNode.toElement();
+ if
(cg.tagName() == "colorEntry")
+ {
+ int r
(0), g(0), b(0);
+ QString
colorName = "";
+
QDomNode colEntry = cg.firstChild();
+
while(!colEntry.isNull())
+ {
+
QDomElement cc = colEntry.toElement();
+
if (cc.tagName() == "colorName")
+
colorName = cc.text();
+
else if (cc.tagName() == "RGB8")
+
{
+
QDomNode colVal = cc.firstChild();
+
while(!colVal.isNull())
+
{
+
QDomElement cv = colVal.toElement();
+
if (cv.tagName() == "red")
+
r = cv.text().toInt();
+
else if (cv.tagName() == "green")
+
g = cv.text().toInt();
+
else if (cv.tagName() == "blue")
+
b = cv.text().toInt();
+
colVal = colVal.nextSibling();
+
}
+
}
+
colEntry = colEntry.nextSibling();
+ }
+ if
(!colorName.isEmpty())
+ {
+
lf.setRgbColor(r, g, b);
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+
EditColors.tryAddColor(colorName, lf);
+ }
+ }
+ colNode =
colNode.nextSibling();
+ }
+ }
+ PAGE = PAGE.nextSibling();
}
}
}
- if (ext == "acb") // Adobe color
book format
+ }
+ else if (ext == "aco") // Adobe color swatch
format
+ {
+ QFile fiC(fileName);
+ if (fiC.open(QIODevice::ReadOnly))
{
- QFile fiC(fileName);
- if (fiC.open(QIODevice::ReadOnly))
+ ScColor lf = ScColor();
+ QDataStream ts(&fiC);
+ ts.setByteOrder(QDataStream::BigEndian);
+ quint16 vers = 0;
+ ts >> vers;
+ if (vers == 1)
{
- ScColor lf = ScColor();
- quint16 vers = 0;
- quint32 signature;
- QDataStream ts(&fiC);
- ts.setByteOrder(QDataStream::BigEndian);
- ts >> signature;
- ts >> vers;
- if ((signature == 0x38424342) && (vers
== 1))
+ quint16 count1 = 0;
+ quint16 count2 = 0;
+ ts >> count1;
+ qint64 pos = ts.device()->pos();
+ if (pos + count1 * 10 < fiC.size())
{
- quint16 vendor, numcolors,
colType;
- ts >> vendor;
-// QString title =
readAdobeUniCodeString(ts);
-// QString prefix =
readAdobeUniCodeString(ts);
-// QString postfix =
readAdobeUniCodeString(ts);
-// QString description =
readAdobeUniCodeString(ts);
- ts >> numcolors;
- ts.skipRawData(4);
- ts >> colType;
- for (quint16 cc = 0; cc <
numcolors; cc++)
- {
- QString name =
readAdobeUniCodeString(ts);
- if (vendor == 3000)
-
name.prepend("ANPA");
- else if (vendor == 3001)
-
name.prepend("Focoltone");
- else if (vendor == 3002)
-
name.prepend("PantoneCoated");
- else if (vendor == 3003)
-
name.prepend("PantoneProcess");
- else if (vendor == 3004)
-
name.prepend("PantoneProSlim");
- else if (vendor == 3005)
-
name.prepend("PantoneUncoated");
- else if (vendor == 3006)
-
name.prepend("Toyo");
- else if (vendor == 3007)
-
name.prepend("Trumatch");
- else if (vendor == 3008)
-
name.prepend("HKSE");
- else if (vendor == 3009)
-
name.prepend("HKSK");
- else if (vendor == 3010)
-
name.prepend("HKSN");
- else if (vendor == 3011)
-
name.prepend("HKSZ");
- else if (vendor == 3012)
-
name.prepend("DIC");
- else if (vendor == 3020)
-
name.prepend("PantonePastelCoated");
- else if (vendor == 3021)
-
name.prepend("PantonePastelUncoated");
- else if (vendor == 3022)
-
name.prepend("PantoneMetallic");
- ts.skipRawData(6);
- quint8 componentR,
componentG, componentB, componentK;
- ts >> componentR >>
componentG >> componentB;
- if (colType == 2)
- ts >>
componentK;
- if (!name.isEmpty())
- {
- bool validColor
= false;
- if (colType ==
0) // RBG
+ ts.skipRawData(count1 * 10);
+ ts >> vers >> count2;
+ if ((vers == 2) && (count1 ==
count2))
+ {
+ for (quint16 cc = 0; cc
< count2; cc++)
+ {
+ quint16 colType;
+ quint16
componentR, componentG, componentB, componentK;
+ ts >> colType
>> componentR >> componentG >> componentB >> componentK;
+ QString name =
readAdobeUniCodeString(ts);
+ if
(!name.isEmpty())
{
-
lf.setRgbColor(componentR, componentG, componentB);
-
validColor = true;
+ bool
validColor = false;
+ if
(colType == 0) // RBG
+ {
+
lf.setRgbColor(componentR >> 8, componentG >> 8, componentB >> 8);
+
validColor = true;
+ }
+ else if
(colType == 1) // HSB
+ {
+
uchar hc, sc, bc;
+
hc = componentR >> 8;
+
sc = componentG >> 8;
+
bc = componentB >> 8;
+
HSVTORGB(hc, sc, bc);
+
lf.setRgbColor(hc, sc, bc);
+
validColor = true;
+ }
+ else if
(colType == 2) // CMYK
+ {
+
lf.setColor(255 - (componentR >> 8), 255 - (componentG >> 8), 255 - (componentB
>> 8), 255 - (componentK >> 8));
+
validColor = true;
+ }
+ else if
(colType == 8) // Grayscale
+ {
+
lf.setColor(0, 0, 0, qRound((componentK / 10000.0) * 255));
+
validColor = true;
+ }
+ if
(validColor)
+ {
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+
EditColors.tryAddColor(name, lf);
+ }
}
- else if
(colType == 2) // CMYK
+ }
+ }
+ }
+ else
+ {
+ QFileInfo fiCinf(fileName);
+ QString baseName =
fiCinf.baseName();
+ baseName.replace(" ", "_");
+ for (quint16 cc = 0; cc <
count1; cc++)
+ {
+ quint16 colType;
+ quint16 componentR,
componentG, componentB, componentK;
+ ts >> colType >>
componentR >> componentG >> componentB >> componentK;
+ bool validColor = false;
+ if (colType == 0)
// RBG
+ {
+
lf.setRgbColor(componentR >> 8, componentG >> 8, componentB >> 8);
+ validColor =
true;
+ }
+ else if (colType == 1)
// HSB
+ {
+ uchar hc, sc,
bc;
+ hc = componentR
>> 8;
+ sc = componentG
>> 8;
+ bc = componentB
>> 8;
+ HSVTORGB(hc,
sc, bc);
+
lf.setRgbColor(hc, sc, bc);
+ validColor =
true;
+ }
+ else if (colType == 2)
// CMYK
+ {
+ lf.setColor(255
- (componentR >> 8), 255 - (componentG >> 8), 255 - (componentB >> 8), 255 -
(componentK >> 8));
+ validColor =
true;
+ }
+ else if (colType == 8)
// Grayscale
+ {
+ lf.setColor(0,
0, 0, qRound((componentK / 10000.0) * 255));
+ validColor =
true;
+ }
+ if (validColor)
+ {
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+ QString name =
baseName+lf.name().toUpper();
+
EditColors.tryAddColor(name, lf);
+ }
+ }
+ }
+ }
+ fiC.close();
+ }
+ }
+ else if (ext == "ase") // Adobe swatch
exchange format
+ {
+ QFile fiC(fileName);
+ if (fiC.open(QIODevice::ReadOnly))
+ {
+ ScColor lf = ScColor();
+ QDataStream ts(&fiC);
+ ts.setByteOrder(QDataStream::BigEndian);
+
ts.setFloatingPointPrecision(QDataStream::SinglePrecision);
+ quint16 vers1 = 0;
+ quint16 vers2 = 0;
+ quint32 signature;
+ ts >> signature;
+ ts >> vers1 >> vers2;
+ if ((signature == 0x41534546) && (vers1 == 1)
&& (vers2 == 0))
+ {
+ QString blockName;
+ quint32 numBlocks;
+ ts >> numBlocks;
+ for (quint32 n = 0; n < numBlocks; n++)
+ {
+ quint16 blockType;
+ quint32 blockLen;
+ ts >> blockType;
+ ts >> blockLen;
+ if (blockType == 0xC001)
+ blockName =
readAdobeUniCodeString16(ts);
+ else if (blockType == 0x0001)
+ {
+ if (blockName.isEmpty())
+ blockName =
fi.baseName();
+ QString Cname =
readAdobeUniCodeString16(ts);
+ quint32 clrType;
+ quint16 spotMode;
+ ts >> clrType;
+ if (clrType ==
0x52474220) // RGB
+ {
+ float r, g, b;
+ ts >> r >> g >>
b;
+ ts >> spotMode;
+
lf.setRgbColorF(r, g, b);
+
lf.setSpotColor(spotMode == 1);
+
lf.setRegistrationColor(false);
+ if
(Cname.isEmpty())
{
-
lf.setColor(255 - componentR, 255 - componentG, 255 - componentB, 255 -
componentK);
-
validColor = true;
+ Cname =
blockName + QString("#%1%2%3").arg(qRound(255 *
r),2,16,QChar('0')).arg(qRound(255 * g),2,16,QChar('0')).arg(qRound(255 *
b),2,16,QChar('0')).toUpper();
+
Cname.replace(" ","_");
}
- if (validColor)
+
EditColors.tryAddColor(Cname, lf);
+ }
+ else if (clrType ==
0x434D594B) // CMYK
+ {
+ float c, m, y,
k;
+ ts >> c >> m >>
y >> k;
+ ts >> spotMode;
+ lf.setColorF(c,
m, y, k);
+
lf.setSpotColor(spotMode == 1);
+
lf.setRegistrationColor(false);
+ if
(Cname.isEmpty())
{
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
-
EditColors.tryAddColor(name, lf);
+ Cname =
blockName + QString("#%1%2%3%4").arg(qRound(255 *
c),2,16,QChar('0')).arg(qRound(255 * m),2,16,QChar('0')).arg(qRound(255 *
y),2,16,QChar('0')).arg(qRound(255 * k),2,16,QChar('0')).toUpper();
+
Cname.replace(" ","_");
}
- }
- }
- fiC.close();
+
EditColors.tryAddColor(Cname, lf);
+ }
+ else if (clrType ==
0x47726179) // Gray
+ {
+ float g;
+ ts >> g;
+ ts >> spotMode;
+ lf.setColorF(0,
0, 0, g);
+
lf.setSpotColor(spotMode == 1);
+
lf.setRegistrationColor(false);
+ if
(Cname.isEmpty())
+ {
+ Cname =
blockName + QString("#000000%1").arg(qRound(255 * g),2,16,QChar('0')).toUpper();
+
Cname.replace(" ","_");
+ }
+
EditColors.tryAddColor(Cname, lf);
+ }
+ else if (clrType ==
0x4C414220) // Lab
+ {
+ float L, a, b;
+ ts >> L >> a >>
b;
+ ts >> spotMode;
+
lf.setLabColor(L * 100.0, a, b);
+
lf.setSpotColor(spotMode == 1);
+
lf.setRegistrationColor(false);
+ if
(Cname.isEmpty())
+ {
+ Cname =
blockName + QString("_%1_%2_%3").arg(qRound(L *
100)).arg(qRound(a)).arg(qRound(b));
+
Cname.replace(" ","_");
+ }
+
EditColors.tryAddColor(Cname, lf);
+ }
+ }
}
- else
// try AutoCAD XML format
+ }
+ fiC.close();
+ }
+ }
+ else if (ext == "skp") // Sk1 palette
+ {
+ QFile fiC(fileName);
+ if (fiC.open(QIODevice::ReadOnly))
+ {
+ bool isCMYK = false;
+ QByteArray docBytes("");
+ loadRawText(fileName, docBytes);
+ QString docText("");
+ docText = QString::fromUtf8(docBytes);
+ QDomDocument docu("scridoc");
+ docu.setContent(docText);
+ ScColor lf = ScColor();
+ QDomElement elem = docu.documentElement();
+ QDomNode PAGE = elem.firstChild();
+ while(!PAGE.isNull())
+ {
+ QDomElement pg = PAGE.toElement();
+ if(pg.tagName() == "description")
{
- fiC.close();
- QByteArray docBytes("");
- loadRawText(fileName, docBytes);
+ if (pg.attribute("type", "") ==
"CMYK")
+ isCMYK = true;
+ }
+ if(pg.tagName() == "color")
+ {
+ QString Cname;
+ if (isCMYK)
+ {
+ double c, m, y, k;
+ c = pg.attribute("c",
"0").toDouble();
+ m = pg.attribute("m",
"0").toDouble();
+ y = pg.attribute("y",
"0").toDouble();
+ k = pg.attribute("k",
"0").toDouble();
+ Cname =
pg.attribute("name", "");
+ if (!Cname.isEmpty())
+ {
+ lf.setColorF(c,
m, y, k);
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+
EditColors.tryAddColor(Cname, lf);
+ }
+ }
+ else
+ {
+ double r, g, b;
+ r = pg.attribute("r",
"0").toDouble();
+ g = pg.attribute("g",
"0").toDouble();
+ b = pg.attribute("b",
"0").toDouble();
+ Cname =
pg.attribute("name", "");
+ if (!Cname.isEmpty())
+ {
+
lf.setRgbColorF(r, g, b);
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+
EditColors.tryAddColor(Cname, lf);
+ }
+ }
+ }
+ PAGE=PAGE.nextSibling();
+ }
+ }
+ fiC.close();
+ }
+ else if (ext == "sbz")
+ {
+ ScZipHandler *uz = new ScZipHandler();
+ if (uz->open(fileName))
+ {
+ if (uz->contains("swatchbook.xml"))
+ {
+ QByteArray docBytes;
+ if (uz->read("swatchbook.xml",
docBytes))
+ {
QString docText("");
docText =
QString::fromUtf8(docBytes);
QDomDocument docu("scridoc");
- if (!docu.setContent(docText))
- return false;
- QDomElement elem =
docu.documentElement();
- QDomNode PAGE =
elem.firstChild();
- while(!PAGE.isNull())
- {
- QDomElement pg =
PAGE.toElement();
- if (pg.tagName() ==
"colorPage")
- {
- QDomNode
colNode = pg.firstChild();
-
while(!colNode.isNull())
+ if (docu.setContent(docText))
+ {
+ QDomElement docElem =
docu.documentElement();
+ for(QDomElement drawPag
= docElem.firstChildElement(); !drawPag.isNull(); drawPag =
drawPag.nextSiblingElement())
+ {
+ if
(drawPag.tagName() == "materials")
{
-
QDomElement cg = colNode.toElement();
- if
(cg.tagName() == "colorEntry")
+
for(QDomElement spf = drawPag.firstChildElement(); !spf.isNull(); spf =
spf.nextSiblingElement() )
{
-
int r (0), g(0), b(0);
-
QString colorName = "";
-
QDomNode colEntry = cg.firstChild();
-
while(!colEntry.isNull())
+
if (spf.tagName() == "color")
{
-
QDomElement cc = colEntry.toElement();
-
if (cc.tagName() == "colorName")
-
colorName = cc.text();
-
else if (cc.tagName() == "RGB8")
+
bool isSpot = spf.attribute("usage") == "spot";
+
QString colorName = "";
+
ScColor tmp;
+
tmp.setRegistrationColor(false);
+
for(QDomElement spp = spf.firstChildElement(); !spp.isNull(); spp =
spp.nextSiblingElement() )
{
-
QDomNode colVal = cc.firstChild();
-
while(!colVal.isNull())
+
if (spp.tagName() == "metadata")
{
-
QDomElement cv = colVal.toElement();
-
if (cv.tagName() == "red")
-
r = cv.text().toInt();
-
else if (cv.tagName() == "green")
-
g = cv.text().toInt();
-
else if (cv.tagName() == "blue")
-
b = cv.text().toInt();
-
colVal = colVal.nextSibling();
+
for(QDomElement spm = spp.firstChildElement();
!spm.isNull(); spm = spm.nextSiblingElement() )
+
{
+
if (spm.tagName() == "dc:identifier")
+
colorName = spm.text();
+
}
+
}
+
else if (spp.tagName() == "values")
+
{
+
QString colorVals = spp.text();
+
ScTextStream CoE(&colorVals, QIODevice::ReadOnly);
+
if (spp.attribute("model") == "Lab")
+
{
+
double inC[3];
+
CoE >> inC[0];
+
CoE >> inC[1];
+
CoE >> inC[2];
+
tmp.setLabColor(inC[0], inC[1], inC[2]);
+
tmp.setSpotColor(isSpot);
+
}
+
else if (spp.attribute("model") == "CMYK")
+
{
+
double c, m, y, k;
+
CoE >> c >> m >> y >> k;
+
tmp.setColorF(c, m, y, k);
+
tmp.setSpotColor(isSpot);
+
}
+
else if (spp.attribute("model") == "RGB")
+
{
+
double r, g, b;
+
CoE >> r >> g >> b;
+
tmp.setRgbColorF(r, g, b);
+
tmp.setSpotColor(false);
+
}
}
}
-
colEntry = colEntry.nextSibling();
-
}
-
if (!colorName.isEmpty())
-
{
-
lf.setRgbColor(r, g, b);
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
-
EditColors.tryAddColor(colorName, lf);
+
if (!colorName.isEmpty())
+
EditColors.tryAddColor(colorName, tmp);
}
}
- colNode
= colNode.nextSibling();
}
}
- PAGE =
PAGE.nextSibling();
}
}
}
}
- else if (ext == "aco") // Adobe color
swatch format
+ delete uz;
+ }
+ else // try
for OpenOffice, Viva and our own format
+ {
+ QFile fiC(fileName);
+ if (fiC.open(QIODevice::ReadOnly))
{
- QFile fiC(fileName);
- if (fiC.open(QIODevice::ReadOnly))
+ QString ColorEn, Cname;
+ int Rval, Gval, Bval, Kval;
+ ScTextStream tsC(&fiC);
+ ColorEn = tsC.readLine();
+ bool cus = false;
+ if (ColorEn.contains("OpenOffice"))
+ cus = true;
+ if ((ColorEn.startsWith("<?xml version=")) ||
(ColorEn.contains("VivaColors")))
{
- ScColor lf = ScColor();
- QDataStream ts(&fiC);
- ts.setByteOrder(QDataStream::BigEndian);
- quint16 vers = 0;
- ts >> vers;
- if (vers == 1)
- {
- quint16 count1 = 0;
- quint16 count2 = 0;
- ts >> count1;
- qint64 pos = ts.device()->pos();
- if (pos + count1 * 10 <
fiC.size())
- {
- ts.skipRawData(count1 *
10);
- ts >> vers >> count2;
- if ((vers == 2) &&
(count1 == count2))
- {
- for (quint16 cc
= 0; cc < count2; cc++)
- {
- quint16
colType;
- quint16
componentR, componentG, componentB, componentK;
- ts >>
colType >> componentR >> componentG >> componentB >> componentK;
- QString
name = readAdobeUniCodeString(ts);
- if
(!name.isEmpty())
- {
-
bool validColor = false;
-
if (colType == 0) // RBG
-
{
-
lf.setRgbColor(componentR >> 8, componentG >> 8, componentB >> 8);
-
validColor = true;
-
}
-
else if (colType == 1) // HSB
-
{
-
uchar hc, sc, bc;
-
hc = componentR >> 8;
-
sc = componentG >> 8;
-
bc = componentB >> 8;
-
HSVTORGB(hc, sc, bc);
-
lf.setRgbColor(hc, sc, bc);
-
validColor = true;
-
}
-
else if (colType == 2) // CMYK
-
{
-
lf.setColor(255 - (componentR >> 8), 255 - (componentG >> 8), 255 -
(componentB >> 8), 255 - (componentK >> 8));
-
validColor = true;
-
}
-
else if (colType == 8) // Grayscale
-
{
-
lf.setColor(0, 0, 0, qRound((componentK / 10000.0) * 255));
-
validColor = true;
-
}
-
if (validColor)
-
{
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
-
EditColors.tryAddColor(name, lf);
-
}
- }
- }
- }
- }
- else
- {
- QFileInfo
fiCinf(fileName);
- QString baseName =
fiCinf.baseName();
- baseName.replace(" ",
"_");
- for (quint16 cc = 0; cc
< count1; cc++)
- {
- quint16 colType;
- quint16
componentR, componentG, componentB, componentK;
- ts >> colType
>> componentR >> componentG >> componentB >> componentK;
- bool validColor
= false;
- if (colType ==
0) // RBG
- {
-
lf.setRgbColor(componentR >> 8, componentG >> 8, componentB >> 8);
-
validColor = true;
- }
- else if
(colType == 1) // HSB
- {
- uchar
hc, sc, bc;
- hc =
componentR >> 8;
- sc =
componentG >> 8;
- bc =
componentB >> 8;
-
HSVTORGB(hc, sc, bc);
-
lf.setRgbColor(hc, sc, bc);
-
validColor = true;
- }
- else if
(colType == 2) // CMYK
- {
-
lf.setColor(255 - (componentR >> 8), 255 - (componentG >> 8), 255 - (componentB
>> 8), 255 - (componentK >> 8));
-
validColor = true;
- }
- else if
(colType == 8) // Grayscale
- {
-
lf.setColor(0, 0, 0, qRound((componentK / 10000.0) * 255));
-
validColor = true;
- }
- if (validColor)
- {
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
- QString
name = baseName+lf.name().toUpper();
-
EditColors.tryAddColor(name, lf);
- }
- }
- }
- }
- fiC.close();
- }
- }
- else if (ext == "ase") // Adobe swatch
exchange format
- {
- QFile fiC(fileName);
- if (fiC.open(QIODevice::ReadOnly))
- {
- ScColor lf = ScColor();
- QDataStream ts(&fiC);
- ts.setByteOrder(QDataStream::BigEndian);
-
ts.setFloatingPointPrecision(QDataStream::SinglePrecision);
- quint16 vers1 = 0;
- quint16 vers2 = 0;
- quint32 signature;
- ts >> signature;
- ts >> vers1 >> vers2;
- if ((signature == 0x41534546) && (vers1
== 1) && (vers2 == 0))
- {
- QString blockName;
- quint32 numBlocks;
- ts >> numBlocks;
- for (quint32 n = 0; n <
numBlocks; n++)
- {
- quint16 blockType;
- quint32 blockLen;
- ts >> blockType;
- ts >> blockLen;
- if (blockType == 0xC001)
- blockName =
readAdobeUniCodeString16(ts);
- else if (blockType ==
0x0001)
- {
- if
(blockName.isEmpty())
-
blockName = fi.baseName();
- QString Cname =
readAdobeUniCodeString16(ts);
- quint32 clrType;
- quint16
spotMode;
- ts >> clrType;
- if (clrType ==
0x52474220) // RGB
- {
- float
r, g, b;
- ts >> r
>> g >> b;
- ts >>
spotMode;
-
lf.setRgbColorF(r, g, b);
-
lf.setSpotColor(spotMode == 1);
-
lf.setRegistrationColor(false);
- if
(Cname.isEmpty())
- {
-
Cname = blockName + QString("#%1%2%3").arg(qRound(255 *
r),2,16,QChar('0')).arg(qRound(255 * g),2,16,QChar('0')).arg(qRound(255 *
b),2,16,QChar('0')).toUpper();
-
Cname.replace(" ","_");
- }
-
EditColors.tryAddColor(Cname, lf);
- }
- else if
(clrType == 0x434D594B) // CMYK
- {
- float
c, m, y, k;
- ts >> c
>> m >> y >> k;
- ts >>
spotMode;
-
lf.setColorF(c, m, y, k);
-
lf.setSpotColor(spotMode == 1);
-
lf.setRegistrationColor(false);
- if
(Cname.isEmpty())
- {
-
Cname = blockName + QString("#%1%2%3%4").arg(qRound(255 *
c),2,16,QChar('0')).arg(qRound(255 * m),2,16,QChar('0')).arg(qRound(255 *
y),2,16,QChar('0')).arg(qRound(255 * k),2,16,QChar('0')).toUpper();
-
Cname.replace(" ","_");
- }
-
EditColors.tryAddColor(Cname, lf);
- }
- else if
(clrType == 0x47726179) // Gray
- {
- float g;
- ts >> g;
- ts >>
spotMode;
-
lf.setColorF(0, 0, 0, g);
-
lf.setSpotColor(spotMode == 1);
-
lf.setRegistrationColor(false);
- if
(Cname.isEmpty())
- {
-
Cname = blockName + QString("#000000%1").arg(qRound(255 *
g),2,16,QChar('0')).toUpper();
-
Cname.replace(" ","_");
- }
-
EditColors.tryAddColor(Cname, lf);
- }
- else if
(clrType == 0x4C414220) // Lab
- {
- float
L, a, b;
- ts >> L
>> a >> b;
- ts >>
spotMode;
-
lf.setLabColor(L * 100.0, a, b);
-
lf.setSpotColor(spotMode == 1);
-
lf.setRegistrationColor(false);
- if
(Cname.isEmpty())
- {
-
Cname = blockName + QString("_%1_%2_%3").arg(qRound(L *
100)).arg(qRound(a)).arg(qRound(b));
-
Cname.replace(" ","_");
- }
-
EditColors.tryAddColor(Cname, lf);
- }
- }
- }
- }
- fiC.close();
- }
- }
- else if (ext == "skp") // Sk1 palette
- {
- QFile fiC(fileName);
- if (fiC.open(QIODevice::ReadOnly))
- {
- bool isCMYK = false;
QByteArray docBytes("");
loadRawText(fileName, docBytes);
QString docText("");
@@ -1140,360 +1291,210 @@
docu.setContent(docText);
ScColor lf = ScColor();
QDomElement elem =
docu.documentElement();
+ QString dTag = "";
+ dTag = elem.tagName();
+ QString nameMask = "%1";
+ nameMask = elem.attribute("mask", "%1");
QDomNode PAGE = elem.firstChild();
- while(!PAGE.isNull())
+ while (!PAGE.isNull())
{
QDomElement pg =
PAGE.toElement();
- if(pg.tagName() ==
"description")
- {
- if
(pg.attribute("type", "") == "CMYK")
- isCMYK = true;
- }
- if(pg.tagName() == "color")
- {
- QString Cname;
- if (isCMYK)
- {
- double c, m, y,
k;
- c =
pg.attribute("c", "0").toDouble();
- m =
pg.attribute("m", "0").toDouble();
- y =
pg.attribute("y", "0").toDouble();
- k =
pg.attribute("k", "0").toDouble();
- Cname =
pg.attribute("name", "");
- if
(!Cname.isEmpty())
+ if (pg.tagName()=="COLOR" &&
pg.attribute("NAME")!=CommonStrings::None)
+ {
+ if
(pg.hasAttribute("SPACE"))
+ {
+ QString space =
pg.attribute("SPACE");
+ if (space ==
"CMYK")
{
-
lf.setColorF(c, m, y, k);
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
-
EditColors.tryAddColor(Cname, lf);
+ double
c = pg.attribute("C", "0").toDouble() / 100.0;
+ double
m = pg.attribute("M", "0").toDouble() / 100.0;
+ double
y = pg.attribute("Y", "0").toDouble() / 100.0;
+ double
k = pg.attribute("K", "0").toDouble() / 100.0;
+
lf.setCmykColorF(c, m, y, k);
}
- }
- else
- {
- double r, g, b;
- r =
pg.attribute("r", "0").toDouble();
- g =
pg.attribute("g", "0").toDouble();
- b =
pg.attribute("b", "0").toDouble();
- Cname =
pg.attribute("name", "");
- if
(!Cname.isEmpty())
+ else if (space
== "RGB")
{
+ double
r = pg.attribute("R", "0").toDouble() / 255.0;
+ double
g = pg.attribute("G", "0").toDouble() / 255.0;
+ double
b = pg.attribute("B", "0").toDouble() / 255.0;
lf.setRgbColorF(r, g, b);
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
-
EditColors.tryAddColor(Cname, lf);
}
- }
- }
- PAGE=PAGE.nextSibling();
- }
- }
- fiC.close();
- }
- else if (ext == "sbz")
- {
- ScZipHandler *uz = new ScZipHandler();
- if (uz->open(fileName))
- {
- if (uz->contains("swatchbook.xml"))
- {
- QByteArray docBytes;
- if (uz->read("swatchbook.xml",
docBytes))
- {
- QString docText("");
- docText =
QString::fromUtf8(docBytes);
- QDomDocument
docu("scridoc");
- if
(docu.setContent(docText))
- {
- QDomElement
docElem = docu.documentElement();
- for(QDomElement
drawPag = docElem.firstChildElement(); !drawPag.isNull(); drawPag =
drawPag.nextSiblingElement())
- {
- if
(drawPag.tagName() == "materials")
- {
-
for(QDomElement spf = drawPag.firstChildElement(); !spf.isNull(); spf =
spf.nextSiblingElement() )
-
{
-
if (spf.tagName() == "color")
-
{
-
bool isSpot = spf.attribute("usage") == "spot";
-
QString colorName = "";
-
ScColor tmp;
-
tmp.setRegistrationColor(false);
-
for(QDomElement spp = spf.firstChildElement(); !spp.isNull();
spp = spp.nextSiblingElement() )
-
{
-
if (spp.tagName() == "metadata")
-
{
-
for(QDomElement spm = spp.firstChildElement();
!spm.isNull(); spm = spm.nextSiblingElement() )
-
{
-
if (spm.tagName() == "dc:identifier")
-
colorName = spm.text();
-
}
-
}
-
else if (spp.tagName() == "values")
-
{
-
QString colorVals = spp.text();
-
ScTextStream CoE(&colorVals,
QIODevice::ReadOnly);
-
if (spp.attribute("model") == "Lab")
-
{
-
double inC[3];
-
CoE >> inC[0];
-
CoE >> inC[1];
-
CoE >> inC[2];
-
tmp.setLabColor(inC[0], inC[1], inC[2]);
-
tmp.setSpotColor(isSpot);
-
}
-
else if (spp.attribute("model") == "CMYK")
-
{
-
double c, m, y, k;
-
CoE >> c >> m >> y >> k;
-
tmp.setColorF(c, m, y, k);
-
tmp.setSpotColor(isSpot);
-
}
-
else if (spp.attribute("model") == "RGB")
-
{
-
double r, g, b;
-
CoE >> r >> g >> b;
-
tmp.setRgbColorF(r, g, b);
-
tmp.setSpotColor(false);
-
}
-
}
-
}
-
if (!colorName.isEmpty())
-
EditColors.tryAddColor(colorName, tmp);
-
}
-
}
- }
- }
- }
- }
- }
- }
- delete uz;
- }
- else
// try for OpenOffice, Viva and our own format
- {
- QFile fiC(fileName);
- if (fiC.open(QIODevice::ReadOnly))
- {
- QString ColorEn, Cname;
- int Rval, Gval, Bval, Kval;
- ScTextStream tsC(&fiC);
- ColorEn = tsC.readLine();
- bool cus = false;
- if (ColorEn.contains("OpenOffice"))
- cus = true;
- if ((ColorEn.startsWith("<?xml
version=")) || (ColorEn.contains("VivaColors")))
- {
- QByteArray docBytes("");
- loadRawText(fileName, docBytes);
- QString docText("");
- docText =
QString::fromUtf8(docBytes);
- QDomDocument docu("scridoc");
- docu.setContent(docText);
- ScColor lf = ScColor();
- QDomElement elem =
docu.documentElement();
- QString dTag = "";
- dTag = elem.tagName();
- QString nameMask = "%1";
- nameMask =
elem.attribute("mask", "%1");
- QDomNode PAGE =
elem.firstChild();
- while (!PAGE.isNull())
- {
- QDomElement pg =
PAGE.toElement();
- if
(pg.tagName()=="COLOR" && pg.attribute("NAME")!=CommonStrings::None)
- {
- if
(pg.hasAttribute("SPACE"))
- {
- QString
space = pg.attribute("SPACE");
- if
(space == "CMYK")
- {
-
double c = pg.attribute("C", "0").toDouble() / 100.0;
-
double m = pg.attribute("M", "0").toDouble() / 100.0;
-
double y = pg.attribute("Y", "0").toDouble() / 100.0;
-
double k = pg.attribute("K", "0").toDouble() / 100.0;
-
lf.setCmykColorF(c, m, y, k);
- }
- else if
(space == "RGB")
- {
-
double r = pg.attribute("R", "0").toDouble() / 255.0;
-
double g = pg.attribute("G", "0").toDouble() / 255.0;
-
double b = pg.attribute("B", "0").toDouble() / 255.0;
-
lf.setRgbColorF(r, g, b);
- }
- else if
(space == "Lab")
- {
-
double L = pg.attribute("L", "0").toDouble();
-
double a = pg.attribute("A", "0").toDouble();
-
double b = pg.attribute("B", "0").toDouble();
-
lf.setLabColor(L, a, b);
- }
- }
- else if
(pg.hasAttribute("CMYK"))
-
lf.setNamedColor(pg.attribute("CMYK"));
- else if
(pg.hasAttribute("RGB"))
-
lf.fromQColor(QColor(pg.attribute("RGB")));
- else
+ else if (space
== "Lab")
{
double
L = pg.attribute("L", "0").toDouble();
double
a = pg.attribute("A", "0").toDouble();
double
b = pg.attribute("B", "0").toDouble();
lf.setLabColor(L, a, b);
}
- if
(pg.hasAttribute("Spot"))
-
lf.setSpotColor(static_cast<bool>(pg.attribute("Spot").toInt()));
- else
-
lf.setSpotColor(false);
- if
(pg.hasAttribute("Register"))
-
lf.setRegistrationColor(static_cast<bool>(pg.attribute("Register").toInt()));
- else
-
lf.setRegistrationColor(false);
-
EditColors.tryAddColor(pg.attribute("NAME"), lf);
- }
- else if (pg.tagName()
== "Gradient")
- {
- if
(dialogGradients != NULL)
+ }
+ else if
(pg.hasAttribute("CMYK"))
+
lf.setNamedColor(pg.attribute("CMYK"));
+ else if
(pg.hasAttribute("RGB"))
+
lf.fromQColor(QColor(pg.attribute("RGB")));
+ else
+ {
+ double L =
pg.attribute("L", "0").toDouble();
+ double a =
pg.attribute("A", "0").toDouble();
+ double b =
pg.attribute("B", "0").toDouble();
+
lf.setLabColor(L, a, b);
+ }
+ if
(pg.hasAttribute("Spot"))
+
lf.setSpotColor(static_cast<bool>(pg.attribute("Spot").toInt()));
+ else
+
lf.setSpotColor(false);
+ if
(pg.hasAttribute("Register"))
+
lf.setRegistrationColor(static_cast<bool>(pg.attribute("Register").toInt()));
+ else
+
lf.setRegistrationColor(false);
+
EditColors.tryAddColor(pg.attribute("NAME"), lf);
+ }
+ else if (pg.tagName() ==
"Gradient")
+ {
+ if (dialogGradients !=
NULL)
+ {
+ VGradient gra =
VGradient(VGradient::linear);
+
gra.clearStops();
+ QDomNode grad =
pg.firstChild();
+
while(!grad.isNull())
{
-
VGradient gra = VGradient(VGradient::linear);
-
gra.clearStops();
-
QDomNode grad = pg.firstChild();
-
while(!grad.isNull())
- {
-
QDomElement stop = grad.toElement();
-
QString name = stop.attribute("NAME");
-
double ramp = ScCLocale::toDoubleC(stop.attribute("RAMP"), 0.0);
-
int shade = stop.attribute("SHADE", "100").toInt();
-
double opa = ScCLocale::toDoubleC(stop.attribute("TRANS"), 1.0);
-
QColor color;
-
if (name == CommonStrings::None)
-
color = QColor(255, 255, 255, 0);
-
else
-
{
-
const ScColor& col = EditColors[name];
-
color = ScColorEngine::getShadeColorProof(col, NULL, shade);
-
}
-
gra.addStop(color, ramp, 0.5, opa, name, shade);
-
grad = grad.nextSibling();
- }
- if
((!dialogGradients->contains(pg.attribute("Name"))) || (merge))
-
dialogGradients->insert(pg.attribute("Name"), gra);
+
QDomElement stop = grad.toElement();
+ QString
name = stop.attribute("NAME");
+ double
ramp = ScCLocale::toDoubleC(stop.attribute("RAMP"), 0.0);
+ int
shade = stop.attribute("SHADE", "100").toInt();
+ double
opa = ScCLocale::toDoubleC(stop.attribute("TRANS"), 1.0);
+ QColor
color;
+ if
(name == CommonStrings::None)
+
color = QColor(255, 255, 255, 0);
else
{
-
QString tmp;
-
QString name = pg.attribute("Name");
-
name += "("+tmp.setNum(dialogGradients->count())+")";
-
dialogGradients->insert(name, gra);
+
const ScColor& col = EditColors[name];
+
color = ScColorEngine::getShadeColorProof(col, NULL, shade);
}
+
gra.addStop(color, ramp, 0.5, opa, name, shade);
+ grad =
grad.nextSibling();
}
- }
- else if
(pg.tagName()=="draw:color" && pg.attribute("draw:name")!=CommonStrings::None)
- {
- if
(pg.hasAttribute("draw:color"))
-
lf.setNamedColor(pg.attribute("draw:color"));
+ if
((!dialogGradients->contains(pg.attribute("Name"))) || (merge))
+
dialogGradients->insert(pg.attribute("Name"), gra);
+ else
+ {
+ QString
tmp;
+ QString
name = pg.attribute("Name");
+ name +=
"("+tmp.setNum(dialogGradients->count())+")";
+
dialogGradients->insert(name, gra);
+ }
+ }
+ }
+ else if
(pg.tagName()=="draw:color" && pg.attribute("draw:name")!=CommonStrings::None)
+ {
+ if
(pg.hasAttribute("draw:color"))
+
lf.setNamedColor(pg.attribute("draw:color"));
+ lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+ QString nam =
pg.attribute("draw:name");
+ if (!nam.isEmpty())
+
EditColors.tryAddColor(nam, lf);
+ }
+ else if (dTag == "VivaColors")
+ {
+ int cVal = 0;
+ int mVal = 0;
+ int yVal = 0;
+ int kVal = 0;
+ QString nam =
nameMask.arg(pg.attribute("name"));
+ if
(pg.attribute("type") == "cmyk")
+ {
+ QDomNode
colNode = pg.firstChild();
+
while(!colNode.isNull())
+ {
+
QDomElement colVal = colNode.toElement();
+ if
(colVal.tagName() == "cyan")
+
cVal = colVal.text().toInt();
+ if
(colVal.tagName() == "magenta")
+
mVal = colVal.text().toInt();
+ if
(colVal.tagName() == "yellow")
+
yVal = colVal.text().toInt();
+ if
(colVal.tagName() == "key")
+
kVal = colVal.text().toInt();
+ colNode
= colNode.nextSibling();
+ }
+
lf.setColorF(cVal / 100.0, mVal / 100.0, yVal / 100.0, kVal / 100.0);
lf.setSpotColor(false);
lf.setRegistrationColor(false);
- QString nam =
pg.attribute("draw:name");
if
(!nam.isEmpty())
EditColors.tryAddColor(nam, lf);
}
- else if (dTag ==
"VivaColors")
- {
- int cVal = 0;
- int mVal = 0;
- int yVal = 0;
- int kVal = 0;
- QString nam =
nameMask.arg(pg.attribute("name"));
- if
(pg.attribute("type") == "cmyk")
+ else if
(pg.attribute("type") == "rgb")
+ {
+ QDomNode
colNode = pg.firstChild();
+
while(!colNode.isNull())
{
-
QDomNode colNode = pg.firstChild();
-
while(!colNode.isNull())
- {
-
QDomElement colVal = colNode.toElement();
-
if (colVal.tagName() == "cyan")
-
cVal = colVal.text().toInt();
-
if (colVal.tagName() == "magenta")
-
mVal = colVal.text().toInt();
-
if (colVal.tagName() == "yellow")
-
yVal = colVal.text().toInt();
-
if (colVal.tagName() == "key")
-
kVal = colVal.text().toInt();
-
colNode = colNode.nextSibling();
- }
-
lf.setColorF(cVal / 100.0, mVal / 100.0, yVal / 100.0, kVal / 100.0);
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
- if
(!nam.isEmpty())
-
EditColors.tryAddColor(nam, lf);
+
QDomElement colVal = colNode.toElement();
+ if
(colVal.tagName() == "red")
+
cVal = colVal.text().toInt();
+ if
(colVal.tagName() == "green")
+
mVal = colVal.text().toInt();
+ if
(colVal.tagName() == "blue")
+
yVal = colVal.text().toInt();
+ colNode
= colNode.nextSibling();
}
- else if
(pg.attribute("type") == "rgb")
- {
-
QDomNode colNode = pg.firstChild();
-
while(!colNode.isNull())
- {
-
QDomElement colVal = colNode.toElement();
-
if (colVal.tagName() == "red")
-
cVal = colVal.text().toInt();
-
if (colVal.tagName() == "green")
-
mVal = colVal.text().toInt();
-
if (colVal.tagName() == "blue")
-
yVal = colVal.text().toInt();
-
colNode = colNode.nextSibling();
- }
-
lf.setRgbColor(cVal, mVal, yVal);
-
lf.setSpotColor(false);
-
lf.setRegistrationColor(false);
- if
(!nam.isEmpty())
-
EditColors.tryAddColor(nam, lf);
- }
- }
- PAGE=PAGE.nextSibling();
- }
+
lf.setRgbColor(cVal, mVal, yVal);
+
lf.setSpotColor(false);
+
lf.setRegistrationColor(false);
+ if
(!nam.isEmpty())
+
EditColors.tryAddColor(nam, lf);
+ }
+ }
+ PAGE=PAGE.nextSibling();
}
- else
+ }
+ else
+ {
+ QString paletteName = "";
+ QString dummy;
+ if (ColorEn.startsWith("GIMP Palette"))
{
- QString paletteName = "";
- QString dummy;
- if (ColorEn.startsWith("GIMP
Palette"))
- {
- ColorEn =
tsC.readLine();
- ScTextStream
CoE(&ColorEn, QIODevice::ReadOnly);
- CoE >> dummy >>
paletteName;
- }
- while (!tsC.atEnd())
- {
- ScColor tmp;
- ColorEn =
tsC.readLine();
- if (ColorEn.length()>0
&& ColorEn[0]==QChar('#'))
- continue;
- ScTextStream
CoE(&ColorEn, QIODevice::ReadOnly);
- CoE >> Rval;
- CoE >> Gval;
- CoE >> Bval;
- if (cus)
- {
- CoE >> Kval;
- Cname =
CoE.readAll().trimmed();
-
tmp.setColor(Rval, Gval, Bval, Kval);
- }
+ ColorEn = tsC.readLine();
+ ScTextStream CoE(&ColorEn,
QIODevice::ReadOnly);
+ CoE >> dummy >> paletteName;
+ }
+ while (!tsC.atEnd())
+ {
+ ScColor tmp;
+ ColorEn = tsC.readLine();
+ if (ColorEn.length()>0 &&
ColorEn[0]==QChar('#'))
+ continue;
+ ScTextStream CoE(&ColorEn,
QIODevice::ReadOnly);
+ CoE >> Rval;
+ CoE >> Gval;
+ CoE >> Bval;
+ if (cus)
+ {
+ CoE >> Kval;
+ Cname =
CoE.readAll().trimmed();
+ tmp.setColor(Rval,
Gval, Bval, Kval);
+ }
+ else
+ {
+ Cname =
CoE.readAll().trimmed();
+ tmp.setRgbColor(Rval,
Gval, Bval);
+ }
+ if (Cname == "Untitled")
+ Cname = "";
+ if (Cname.length() == 0)
+ {
+ if (!cus)
+ Cname =
paletteName +
QString("#%1%2%3").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).toUpper();
else
- {
- Cname =
CoE.readAll().trimmed();
-
tmp.setRgbColor(Rval, Gval, Bval);
- }
- if (Cname == "Untitled")
- Cname = "";
- if (Cname.length() == 0)
- {
- if (!cus)
- Cname =
paletteName +
QString("#%1%2%3").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).toUpper();
- else
- Cname =
paletteName +
QString("#%1%2%3%4").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).arg(Kval,2,16).toUpper();
- Cname.replace("
","0");
- }
-
EditColors.tryAddColor(Cname, tmp);
- }
+ Cname =
paletteName +
QString("#%1%2%3%4").arg(Rval,2,16).arg(Gval,2,16).arg(Bval,2,16).arg(Kval,2,16).toUpper();
+ Cname.replace(" ","0");
+ }
+ EditColors.tryAddColor(Cname,
tmp);
}
- fiC.close();
}
+ fiC.close();
}
}
}
+
return (EditColors.count() != oldCount);
}
_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit
