Don't convert indexed color ==> rgb color
We can do the convertion when users try to access the colors if needed in the future
This commit is contained in:
@@ -92,7 +92,7 @@ bool XlsxColor::saveToXml(QXmlStreamWriter &writer, const QString &node) const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XlsxColor::loadFromXml(QXmlStreamReader &reader, Styles *styles)
|
bool XlsxColor::loadFromXml(QXmlStreamReader &reader)
|
||||||
{
|
{
|
||||||
QXmlStreamAttributes attributes = reader.attributes();
|
QXmlStreamAttributes attributes = reader.attributes();
|
||||||
|
|
||||||
@@ -101,14 +101,7 @@ bool XlsxColor::loadFromXml(QXmlStreamReader &reader, Styles *styles)
|
|||||||
val.setValue(fromARGBString(colorString));
|
val.setValue(fromARGBString(colorString));
|
||||||
} else if (attributes.hasAttribute(QLatin1String("indexed"))) {
|
} else if (attributes.hasAttribute(QLatin1String("indexed"))) {
|
||||||
int index = attributes.value(QLatin1String("indexed")).toString().toInt();
|
int index = attributes.value(QLatin1String("indexed")).toString().toInt();
|
||||||
if (styles) {
|
val.setValue(index);
|
||||||
//Convert to rgb color is possible
|
|
||||||
QColor c = styles->getColorByIndex(index);
|
|
||||||
if (c.isValid())
|
|
||||||
val.setValue(c);
|
|
||||||
} else {
|
|
||||||
val.setValue(index);
|
|
||||||
}
|
|
||||||
} else if (attributes.hasAttribute(QLatin1String("theme"))) {
|
} else if (attributes.hasAttribute(QLatin1String("theme"))) {
|
||||||
QString theme = attributes.value(QLatin1String("theme")).toString();
|
QString theme = attributes.value(QLatin1String("theme")).toString();
|
||||||
QString tint = attributes.value(QLatin1String("tint")).toString();
|
QString tint = attributes.value(QLatin1String("tint")).toString();
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public:
|
|||||||
operator QVariant() const;
|
operator QVariant() const;
|
||||||
|
|
||||||
bool saveToXml(QXmlStreamWriter &writer, const QString &node=QString()) const;
|
bool saveToXml(QXmlStreamWriter &writer, const QString &node=QString()) const;
|
||||||
bool loadFromXml(QXmlStreamReader &reader, Styles *styles=0);
|
bool loadFromXml(QXmlStreamReader &reader);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVariant val;
|
QVariant val;
|
||||||
|
|||||||
@@ -506,9 +506,9 @@ bool ConditionalFormattingPrivate::readCfRule(QXmlStreamReader &reader, XlsxCfRu
|
|||||||
else if (!rule->attrs.contains(XlsxCfRuleData::A_formula3))
|
else if (!rule->attrs.contains(XlsxCfRuleData::A_formula3))
|
||||||
rule->attrs[XlsxCfRuleData::A_formula3] = f;
|
rule->attrs[XlsxCfRuleData::A_formula3] = f;
|
||||||
} else if (reader.name() == QLatin1String("dataBar")) {
|
} else if (reader.name() == QLatin1String("dataBar")) {
|
||||||
readCfDataBar(reader, rule, styles);
|
readCfDataBar(reader, rule);
|
||||||
} else if (reader.name() == QLatin1String("colorScale")) {
|
} else if (reader.name() == QLatin1String("colorScale")) {
|
||||||
readCfColorScale(reader, rule, styles);
|
readCfColorScale(reader, rule);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (reader.tokenType() == QXmlStreamReader::EndElement
|
if (reader.tokenType() == QXmlStreamReader::EndElement
|
||||||
@@ -519,7 +519,7 @@ bool ConditionalFormattingPrivate::readCfRule(QXmlStreamReader &reader, XlsxCfRu
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConditionalFormattingPrivate::readCfDataBar(QXmlStreamReader &reader, XlsxCfRuleData *rule, Styles *styles)
|
bool ConditionalFormattingPrivate::readCfDataBar(QXmlStreamReader &reader, XlsxCfRuleData *rule)
|
||||||
{
|
{
|
||||||
Q_ASSERT(reader.name() == QLatin1String("dataBar"));
|
Q_ASSERT(reader.name() == QLatin1String("dataBar"));
|
||||||
QXmlStreamAttributes attrs = reader.attributes();
|
QXmlStreamAttributes attrs = reader.attributes();
|
||||||
@@ -538,7 +538,7 @@ bool ConditionalFormattingPrivate::readCfDataBar(QXmlStreamReader &reader, XlsxC
|
|||||||
rule->attrs[XlsxCfRuleData::A_cfvo2] = QVariant::fromValue(data);
|
rule->attrs[XlsxCfRuleData::A_cfvo2] = QVariant::fromValue(data);
|
||||||
} else if (reader.name() == QLatin1String("color")) {
|
} else if (reader.name() == QLatin1String("color")) {
|
||||||
XlsxColor color;
|
XlsxColor color;
|
||||||
color.loadFromXml(reader, styles);
|
color.loadFromXml(reader);
|
||||||
rule->attrs[XlsxCfRuleData::A_color1] = color;
|
rule->attrs[XlsxCfRuleData::A_color1] = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -551,7 +551,7 @@ bool ConditionalFormattingPrivate::readCfDataBar(QXmlStreamReader &reader, XlsxC
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConditionalFormattingPrivate::readCfColorScale(QXmlStreamReader &reader, XlsxCfRuleData *rule, Styles *styles)
|
bool ConditionalFormattingPrivate::readCfColorScale(QXmlStreamReader &reader, XlsxCfRuleData *rule)
|
||||||
{
|
{
|
||||||
Q_ASSERT(reader.name() == QLatin1String("colorScale"));
|
Q_ASSERT(reader.name() == QLatin1String("colorScale"));
|
||||||
|
|
||||||
@@ -569,7 +569,7 @@ bool ConditionalFormattingPrivate::readCfColorScale(QXmlStreamReader &reader, Xl
|
|||||||
rule->attrs[XlsxCfRuleData::A_cfvo2] = QVariant::fromValue(data);
|
rule->attrs[XlsxCfRuleData::A_cfvo2] = QVariant::fromValue(data);
|
||||||
} else if (reader.name() == QLatin1String("color")) {
|
} else if (reader.name() == QLatin1String("color")) {
|
||||||
XlsxColor color;
|
XlsxColor color;
|
||||||
color.loadFromXml(reader, styles);
|
color.loadFromXml(reader);
|
||||||
if (!rule->attrs.contains(XlsxCfRuleData::A_color1))
|
if (!rule->attrs.contains(XlsxCfRuleData::A_color1))
|
||||||
rule->attrs[XlsxCfRuleData::A_color1] = color;
|
rule->attrs[XlsxCfRuleData::A_color1] = color;
|
||||||
else if (!rule->attrs.contains(XlsxCfRuleData::A_color2))
|
else if (!rule->attrs.contains(XlsxCfRuleData::A_color2))
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ public:
|
|||||||
void writeCfVo(QXmlStreamWriter &writer, const XlsxCfVoData& cfvo) const;
|
void writeCfVo(QXmlStreamWriter &writer, const XlsxCfVoData& cfvo) const;
|
||||||
bool readCfVo(QXmlStreamReader &reader, XlsxCfVoData& cfvo);
|
bool readCfVo(QXmlStreamReader &reader, XlsxCfVoData& cfvo);
|
||||||
bool readCfRule(QXmlStreamReader &reader, XlsxCfRuleData *cfRule, Styles *styles);
|
bool readCfRule(QXmlStreamReader &reader, XlsxCfRuleData *cfRule, Styles *styles);
|
||||||
bool readCfDataBar(QXmlStreamReader &reader, XlsxCfRuleData *cfRule, Styles *styles);
|
bool readCfDataBar(QXmlStreamReader &reader, XlsxCfRuleData *cfRule);
|
||||||
bool readCfColorScale(QXmlStreamReader &reader, XlsxCfRuleData *cfRule, Styles *styles);
|
bool readCfColorScale(QXmlStreamReader &reader, XlsxCfRuleData *cfRule);
|
||||||
|
|
||||||
QList<QSharedPointer<XlsxCfRuleData> >cfRules;
|
QList<QSharedPointer<XlsxCfRuleData> >cfRules;
|
||||||
QList<CellRange> ranges;
|
QList<CellRange> ranges;
|
||||||
|
|||||||
+4
-16
@@ -771,7 +771,7 @@ bool Styles::readFont(QXmlStreamReader &reader, Format &format)
|
|||||||
format.setProperty(FormatPrivate::P_Font_Extend, attributes.value(QLatin1String("val")).toString().toInt());
|
format.setProperty(FormatPrivate::P_Font_Extend, attributes.value(QLatin1String("val")).toString().toInt());
|
||||||
} else if (reader.name() == QLatin1String("color")) {
|
} else if (reader.name() == QLatin1String("color")) {
|
||||||
XlsxColor color;
|
XlsxColor color;
|
||||||
color.loadFromXml(reader, this);
|
color.loadFromXml(reader);
|
||||||
format.setProperty(FormatPrivate::P_Font_Color, color);
|
format.setProperty(FormatPrivate::P_Font_Color, color);
|
||||||
} else if (reader.name() == QLatin1String("sz")) {
|
} else if (reader.name() == QLatin1String("sz")) {
|
||||||
int sz = attributes.value(QLatin1String("val")).toString().toInt();
|
int sz = attributes.value(QLatin1String("val")).toString().toInt();
|
||||||
@@ -1004,7 +1004,7 @@ bool Styles::readSubBorder(QXmlStreamReader &reader, const QString &name, Format
|
|||||||
reader.readNextStartElement();
|
reader.readNextStartElement();
|
||||||
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
if (reader.tokenType() == QXmlStreamReader::StartElement) {
|
||||||
if (reader.name() == QLatin1String("color"))
|
if (reader.name() == QLatin1String("color"))
|
||||||
color.loadFromXml(reader, this);
|
color.loadFromXml(reader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1225,20 +1225,6 @@ bool Styles::readIndexedColors(QXmlStreamReader &reader)
|
|||||||
|
|
||||||
bool Styles::loadFromXmlFile(QIODevice *device)
|
bool Styles::loadFromXmlFile(QIODevice *device)
|
||||||
{
|
{
|
||||||
{
|
|
||||||
//Try load colors part first!
|
|
||||||
QXmlStreamReader reader(device);
|
|
||||||
while (!reader.atEnd()) {
|
|
||||||
QXmlStreamReader::TokenType token = reader.readNext();
|
|
||||||
if (token == QXmlStreamReader::StartElement) {
|
|
||||||
if (reader.name() == QLatin1String("colors")) {
|
|
||||||
readColors(reader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
device->seek(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
QXmlStreamReader reader(device);
|
QXmlStreamReader reader(device);
|
||||||
while (!reader.atEnd()) {
|
while (!reader.atEnd()) {
|
||||||
QXmlStreamReader::TokenType token = reader.readNext();
|
QXmlStreamReader::TokenType token = reader.readNext();
|
||||||
@@ -1259,6 +1245,8 @@ bool Styles::loadFromXmlFile(QIODevice *device)
|
|||||||
|
|
||||||
} else if (reader.name() == QLatin1String("dxfs")) {
|
} else if (reader.name() == QLatin1String("dxfs")) {
|
||||||
readDxfs(reader);
|
readDxfs(reader);
|
||||||
|
} else if (reader.name() == QLatin1String("colors")) {
|
||||||
|
readColors(reader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user