From: Fridrich S. <str...@us...> - 2009-09-07 08:10:32
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19570/src/lib Modified Files: Makefile.am WPG1Parser.cpp WPG1Parser.h WPG2Parser.cpp WPG2Parser.h WPGPaintInterface.h WPGSVGGenerator.cpp WPGSVGGenerator.h libwpg.h.in Log Message: Trying to finish the 0.2.0 series release Index: WPG2Parser.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.h,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- WPG2Parser.h 5 Dec 2008 15:17:25 -0000 1.35 +++ WPG2Parser.h 7 Sep 2009 08:10:18 -0000 1.36 @@ -29,7 +29,6 @@ #define __WPG2PARSER_H__ #include "WPGXParser.h" -#include "WPGGradient.h" #include "WPGDashArray.h" #include "WPGBitmap.h" #include <libwpd/libwpd.h> @@ -220,8 +219,8 @@ libwpg::WPGColor m_brushForeColor; libwpg::WPGColor m_brushBackColor; libwpg::WPGDashArray m_dashArray; - libwpg::WPGGradient m_gradient; - std::map<unsigned int,libwpg::WPGDashArray> m_penStyles; + ::WPXPropertyListVector m_gradient; + std::map<unsigned int,libwpg::WPGDashArray> m_dashArrayStyles; bool m_layerOpened; unsigned int m_layerId; WPG2TransformMatrix m_matrix; Index: WPG1Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG1Parser.cpp,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -r1.59 -r1.60 --- WPG1Parser.cpp 30 Dec 2008 08:53:57 -0000 1.59 +++ WPG1Parser.cpp 7 Sep 2009 08:10:18 -0000 1.60 @@ -209,7 +209,7 @@ m_penForeColor = libwpg::WPGColor(0,0,0); m_penBackColor = libwpg::WPGColor(0,0,0); m_style.insert("svg:stroke-width", 0.001); -// m_pen.height = 0.001; + // m_dashArray.height = 0.001; m_style.insert("libwpg:stroke-solid", true); m_dashArray = libwpg::WPGDashArray(); m_brushForeColor = libwpg::WPGColor(0,0,0); @@ -418,7 +418,7 @@ points.append(point); } - m_painter->setStyle(m_dashArray, libwpg::WPGGradient(), m_style); + m_painter->setStyle(m_dashArray, ::WPXPropertyListVector(), m_style); m_painter->drawPolyline(points); @@ -498,9 +498,9 @@ m_painter->drawEllipse(propList); WPG_DEBUG_MSG(("Ellipse\n")); - WPG_DEBUG_MSG((" Center point: %f,%f\n", propList["svg:cx"]->getDouble(), propList["svg:cy"]->getDouble())); - WPG_DEBUG_MSG((" Radius x: %f\n", propList["svg:rx"]->getDouble())); - WPG_DEBUG_MSG((" Radius y: %f\n", propList["svg:ry"]->getDouble())); + WPG_DEBUG_MSG((" Center point: %s,%s\n", propList["svg:cx"]->getStr().cstr(), propList["svg:cy"]->getStr().cstr())); + WPG_DEBUG_MSG((" Radius x: %s\n", propList["svg:rx"]->getStr().cstr())); + WPG_DEBUG_MSG((" Radius y: %s\n", propList["svg:ry"]->getStr().cstr())); } void WPG1Parser::handleCurvedPolyline() @@ -722,8 +722,8 @@ // Assume on the corner (0,0) libwpg::WPGBitmap bitmap(width, height); ::WPXPropertyList propList; - propList.insert("svg:x", 0.0f); - propList.insert("svg:y", 0.0f); + propList.insert("svg:x", 0.0); + propList.insert("svg:y", 0.0); propList.insert("svg:width", (double)width/(double)hres); propList.insert("svg:height", (double)height/(double)vres); propList.insert("libwpg:mime-type", "image/bmp"); Index: WPGSVGGenerator.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- WPGSVGGenerator.h 5 Dec 2008 15:17:26 -0000 1.20 +++ WPGSVGGenerator.h 7 Sep 2009 08:10:18 -0000 1.21 @@ -47,7 +47,7 @@ void startEmbeddedGraphics(const ::WPXPropertyList & /*propList*/) {} void endEmbeddedGraphics() {} - void setStyle(const libwpg::WPGDashArray& dashArray, const libwpg::WPGGradient& gradient, const ::WPXPropertyList &propList); + void setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); void drawRectangle(const ::WPXPropertyList& propList); void drawEllipse(const ::WPXPropertyList& propList); @@ -58,7 +58,7 @@ private: libwpg::WPGDashArray m_dashArray; - libwpg::WPGGradient m_gradient; + ::WPXPropertyListVector m_gradient; ::WPXPropertyList m_style; int m_gradientIndex; void writeStyle(bool isClosed=true); Index: WPG1Parser.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG1Parser.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- WPG1Parser.h 5 Dec 2008 15:17:25 -0000 1.22 +++ WPG1Parser.h 7 Sep 2009 08:10:18 -0000 1.23 @@ -29,9 +29,9 @@ #define __WPG1PARSER_H__ #include "WPGXParser.h" -#include "WPGGradient.h" #include "WPGDashArray.h" #include "WPGBitmap.h" +#include <libwpd/libwpd.h> #include <vector> class WPG1Parser : public WPGXParser @@ -79,7 +79,7 @@ libwpg::WPGColor m_brushForeColor; libwpg::WPGColor m_brushBackColor; libwpg::WPGDashArray m_dashArray; - libwpg::WPGGradient m_gradient; + ::WPXPropertyListVector m_gradient; }; #endif // __WPG1PARSER_H__ Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- WPGSVGGenerator.cpp 30 Dec 2008 08:53:57 -0000 1.32 +++ WPGSVGGenerator.cpp 7 Sep 2009 08:10:18 -0000 1.33 @@ -47,7 +47,7 @@ } -libwpg::WPGSVGGenerator::WPGSVGGenerator(std::ostream & output_sink): m_dashArray(), m_gradient(), m_style(), m_gradientIndex(1), m_outputSink(output_sink) +libwpg::WPGSVGGenerator::WPGSVGGenerator(std::ostream & output_sink): m_dashArray(libwpg::WPGDashArray()), m_gradient(), m_style(), m_gradientIndex(1), m_outputSink(output_sink) { } @@ -79,7 +79,7 @@ m_outputSink << "</svg>\n"; } -void libwpg::WPGSVGGenerator::setStyle(const libwpg::WPGDashArray& dashArray, const libwpg::WPGGradient& gradient, const ::WPXPropertyList &propList) +void libwpg::WPGSVGGenerator::setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) { m_style = propList; @@ -96,21 +96,18 @@ for(unsigned c = 0; c < m_gradient.count(); c++) { // round to nearest percentage - int ofs = (int)((100.0*m_gradient.stopOffset(c))+0.5); + // int ofs = (int)((100.0*m_gradient.stopOffset(c))+0.5); - ::WPXString color = m_gradient.stopColor(c); - double opacity = m_gradient.stopOpacity(c); + m_outputSink << " <stop offset=\"" << m_gradient[c]["svg:offset"]->getStr().cstr() << "\""; - m_outputSink << " <stop offset=\"" << ofs << "%\""; + m_outputSink << " stop-color=\"" << m_gradient[c]["svg:stop-color"]->getStr().cstr() << "\""; + m_outputSink << " stop-opacity=\"" << m_gradient[c]["svg:stop-opacity"]->getStr().cstr() << "\" />" << std::endl; + + m_outputSink << " <stop offset=\"" << m_gradient[c]["svg:offset"]->getStr().cstr() << "%\""; // set stream to %02x formatting unsigned long old_stream_size = m_outputSink.width(2); m_outputSink << std::hex; - m_outputSink << " stop-color=\"" << color.cstr() << "\""; - if (opacity != 0.0) - m_outputSink << " stop-opacity=\"" << doubleToString(opacity) << "\""; - m_outputSink << " />\n"; - // reset stream formatting m_outputSink << std::dec; m_outputSink.width(old_stream_size); @@ -118,7 +115,7 @@ m_outputSink << " </linearGradient>\n"; // not a simple horizontal gradient - if(angle != -90.0) + if(angle != -90) { m_outputSink << " <linearGradient xlink:href=\"#grad" << m_gradientIndex-1 << "\""; m_outputSink << " id=\"grad" << m_gradientIndex++ << "\" "; @@ -268,11 +265,10 @@ { m_outputSink << "style=\""; -// ::WPXString color = m_dashArray.foreColor; -// double opacity = m_dashArray.foreOpacity; - m_outputSink << "stroke-width: " << doubleToString(72*m_style["svg:stroke-width"]->getDouble()) << "; "; + if (m_style["svg:stroke-width"]) + m_outputSink << "stroke-width: " << doubleToString(72*m_style["svg:stroke-width"]->getDouble()) << "; "; - if(m_style["svg:stroke-width"]->getDouble() > 0.0 || m_style["libwpg:stroke-solid"]->getInt()) + if((m_style["svg:stroke-width"] && m_style["svg:stroke-width"]->getDouble() > 0.0) || (m_style["draw:stroke"] && m_style["draw:stroke"]->getStr() == "solid")) { if (m_style["svg:stroke-color"]) m_outputSink << "stroke: " << m_style["svg:stroke-color"]->getStr().cstr() << "; "; @@ -280,31 +276,36 @@ m_outputSink << "stroke-opacity: " << doubleToString(m_style["svg:stroke-opacity"]->getDouble()) << "; "; } - if(!m_style["libwpg:stroke-solid"]->getInt()) + if(!m_style["draw:stroke"] || !(m_style["draw:stroke"]->getStr() == "solid")) { - m_outputSink << "stroke-dasharray: "; - for(unsigned i = 0; i < m_dashArray.count(); i++) + if (m_dashArray.count()) { - m_outputSink << doubleToString(72*m_dashArray.at(i)*(m_style["svg:stroke-width"]->getDouble())); - if(i < m_dashArray.count()-1) - m_outputSink << ", "; + m_outputSink << "stroke-dasharray: "; + for(unsigned i = 0; i < m_dashArray.count(); i++) + { + m_outputSink << doubleToString(72*m_dashArray.at(i)*m_style["svg:stroke_width"]->getDouble()); + if(i < m_dashArray.count()-1) + m_outputSink << ", "; + } + m_outputSink << "; "; } - m_outputSink << "; "; } - if(!isClosed || (m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "none")) + if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "none") m_outputSink << "fill: none; "; - else - { + + if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "bitmap") if(m_style["svg:fill-rule"]) m_outputSink << "fill-rule: " << m_style["svg:fill-rule"]->getStr().cstr() << "; "; + if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "gradient") + m_outputSink << "fill: url(#grad" << m_gradientIndex-1 << "); "; if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "gradient") m_outputSink << "fill: url(#grad" << m_gradientIndex-1 << "); "; - if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "solid" && m_style["draw:fill-color"]) + if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "solid") + if (m_style["draw:fill-color"]) m_outputSink << "fill: " << m_style["draw:fill-color"]->getStr().cstr() << "; "; - } m_outputSink << "\""; // style } Index: WPGPaintInterface.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGPaintInterface.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- WPGPaintInterface.h 5 Dec 2008 15:17:25 -0000 1.18 +++ WPGPaintInterface.h 7 Sep 2009 08:10:18 -0000 1.19 @@ -29,7 +29,6 @@ #include <libwpd/libwpd.h> #include "WPGDashArray.h" -#include "WPGGradient.h" namespace libwpg { @@ -41,7 +40,7 @@ // none of the other callback functions will be called before this function is called virtual void startGraphics(const ::WPXPropertyList &propList) = 0; - virtual void setStyle(const WPGDashArray& dashArray, const WPGGradient& gradient, const ::WPXPropertyList &propList) = 0; + virtual void setStyle(const WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) = 0; virtual void startLayer(const ::WPXPropertyList& propList) = 0; Index: Makefile.am =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/Makefile.am,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- Makefile.am 5 Dec 2008 15:17:25 -0000 1.35 +++ Makefile.am 7 Sep 2009 08:10:18 -0000 1.36 @@ -24,7 +24,6 @@ libwpg.h \ WPGraphics.h \ WPGDashArray.h \ - WPGGradient.h \ WPGPaintInterface.h AM_CXXFLAGS = $(LIBWPG_CXXFLAGS) $(DEBUG_CXXFLAGS) @@ -34,9 +33,8 @@ libwpg_@WPG_MAJOR_VERSION@_@WPG_MINOR_VERSION@_la_LDFLAGS = $(version_info) -export-dynamic $(no_undefined) libwpg_@WPG_MAJOR_VERSION@_@WPG_MINOR_VERSION@_la_SOURCES = \ WPGraphics.cpp \ - WPGColor.cpp \ WPGDashArray.cpp \ - WPGGradient.cpp \ + WPGColor.cpp \ WPGHeader.cpp \ WPGSVGGenerator.cpp \ WPGXParser.cpp \ @@ -47,7 +45,6 @@ libwpg.h \ libwpg_utils.h \ WPGColor.h \ - WPGGradient.h \ WPGHeader.h \ WPGSVGGenerator.h \ WPGXParser.h \ Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.98 retrieving revision 1.99 diff -u -d -r1.98 -r1.99 --- WPG2Parser.cpp 30 Dec 2008 08:53:57 -0000 1.98 +++ WPG2Parser.cpp 7 Sep 2009 08:10:18 -0000 1.99 @@ -224,10 +224,10 @@ m_brushBackColor(0xff,0xff,0xff), m_dashArray(), m_gradient(), - m_penStyles(), + m_dashArrayStyles(), m_layerOpened(false), m_layerId(0), m_matrix(), - m_gradientAngle(0.0f), + m_gradientAngle(0.0), m_gradientRef(), m_groupStack(), m_compoundMatrix(), @@ -242,6 +242,7 @@ m_binaryId(0), m_embedded(isEmbedded) { + m_style.insert("draw:fill", "solid"); // default style m_penForeColor = ::libwpg::WPGColor(0,0,0); m_penBackColor = ::libwpg::WPGColor(0xff,0xff,0xff); @@ -565,7 +566,7 @@ libwpg::WPGDashArray dashArray; for(int j = 0; j < segments; j++, i++) dashArray.add(WPG2_defaultPenDashes[i]*3.6/218.0); - m_penStyles[styleNo] = dashArray; + m_dashArrayStyles[styleNo] = dashArray; styleNo++; } m_graphicsStarted = true; @@ -625,7 +626,7 @@ else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( context.compoundFramed ? m_dashArray : libwpg::WPGDashArray(), context.compoundFilled ? m_gradient : libwpg::WPGGradient(), m_style ); + m_painter->setStyle( context.compoundFramed ? m_dashArray : libwpg::WPGDashArray(), context.compoundFilled ? m_gradient : ::WPXPropertyListVector(), m_style ); if (context.compoundClosed) { @@ -651,7 +652,7 @@ dashArray.add(TO_DOUBLE(p)*3.6/218.0); dashArray.add(TO_DOUBLE(q)*3.6/218.0); } - m_penStyles[style] = dashArray; + m_dashArrayStyles[style] = dashArray; WPG_DEBUG_MSG((" Style : %d\n", style)); WPG_DEBUG_MSG((" Segment pairs : %d\n", segments)); @@ -733,6 +734,8 @@ unsigned char blue = (m_doublePrecision) ? readU16()>>8 : readU8(); unsigned char alpha = 0xff - (m_doublePrecision) ? readU16()>>8 : readU8(); + m_style.insert("svg:stroke-color", libwpg::WPGColor(red, green, blue, alpha).getColorString()); + m_style.insert("svg:stroke-opacity", libwpg::WPGColor(red, green, blue, alpha).getOpacity(), WPX_PERCENT); m_penForeColor = libwpg::WPGColor(red, green, blue, alpha); WPG_DEBUG_MSG((" Foreground color (RGBA): %d %d %d %d\n", red, green, blue, alpha)); @@ -744,6 +747,7 @@ return; if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) return; +#if 0 unsigned char red = readU8(); unsigned char green = readU8(); unsigned char blue = readU8(); @@ -751,10 +755,12 @@ m_penBackColor = libwpg::WPGColor(red, green, blue, alpha); + m_dashArray.backColor = libwpg::WPGColor(red, green, blue, alpha); m_style.insert("svg:stroke-color", m_penForeColor.getColorString()); m_style.insert("svg:stroke-opacity", m_penForeColor.getOpacity(), WPX_PERCENT); WPG_DEBUG_MSG((" Background color (RGBA): %d %d %d %d\n", red, green, blue, alpha)); +#endif } void WPG2Parser::handleDPPenBackColor() @@ -763,6 +769,7 @@ return; if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) return; +#if 0 // we just ignore the least significant 8 bits unsigned int red = (m_doublePrecision) ? readU16()>>8 : readU8(); unsigned int green = (m_doublePrecision) ? readU16()>>8 : readU8(); @@ -771,10 +778,12 @@ m_penBackColor = libwpg::WPGColor(red, green, blue, alpha); + m_dashArray.backColor = libwpg::WPGColor(red, green, blue, alpha); m_style.insert("svg:stroke-color", m_penForeColor.getColorString()); m_style.insert("svg:stroke-opacity", m_penForeColor.getOpacity(), WPX_PERCENT); WPG_DEBUG_MSG((" Background color (RGBA): %d %d %d %d\n", red, green, blue, alpha)); +#endif } void WPG2Parser::handlePenStyle() @@ -785,8 +794,10 @@ return; unsigned int style = readU16(); - m_dashArray = m_penStyles[style]; - m_style.insert("libwpg:stroke-solid", !style); + m_dashArray = m_dashArrayStyles[style]; + + if (!style) + m_style.insert("draw:stroke", "solid"); WPG_DEBUG_MSG((" Pen style : %d\n", style)); WPG_DEBUG_MSG((" Segments : %d\n", m_dashArray.count())); @@ -799,13 +810,10 @@ if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) return; unsigned int width = readU16(); -// unsigned int height = readU16(); - m_style.insert("svg:stroke-width", TO_DOUBLE(width) / m_xres) -// m_pen.height = TO_DOUBLE(height) / m_yres; + m_style.insert("svg:stroke-width", (TO_DOUBLE(width) / m_xres)); WPG_DEBUG_MSG((" Width: %d\n", width)); -// WPG_DEBUG_MSG((" Height: %d\n", height)); } void WPG2Parser::handleDPPenSize() @@ -815,13 +823,11 @@ if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) return; unsigned long width = readU32(); -// unsigned long height = readU32(); m_style.insert("svg:stroke-width", TO_DOUBLE(width) / m_xres / 256); // m_pen.height = TO_DOUBLE(height) / m_yres / 256; WPG_DEBUG_MSG((" Width: %li\n", width)); -// WPG_DEBUG_MSG((" Height: %li\n", height)); } void WPG2Parser::handleBrushGradient() @@ -946,12 +952,26 @@ double angle = m_gradientAngle*M_PI/180.0; double tanangle = tan(angle); double ref = (tanangle < 1e2 && tanangle > -1e2) ? (yref+xref*tanangle)/(1+tanangle) : xref; - libwpg::WPGGradient gradient; - m_style.insert("draw:gradient", -m_gradientAngle); // upside down - gradient.addStop(0, colors[1].getColorString(), colors[0].getOpacity()); - gradient.addStop(ref, colors[0].getColorString(), colors[0].getOpacity()); + ::WPXPropertyListVector gradient; + m_style.insert("draw:angle", (int)(-m_gradientAngle)); // upside down + WPXPropertyList propList; + propList.insert("svg:offset", 0.0, WPX_PERCENT); + propList.insert("svg:stop-color", colors[1].getColorString()); + propList.insert("svg:stop-opacity", colors[1].getOpacity(), WPX_PERCENT); + gradient.append(propList); + propList.clear(); + propList.insert("svg:offset", ref, WPX_PERCENT); + propList.insert("svg:stop-color", colors[0].getColorString()); + propList.insert("svg:stop-opacity", colors[0].getOpacity(), WPX_PERCENT); + gradient.append(propList); + propList.clear(); if((m_gradientRef["svg:x"]->getInt() != 65535) && (m_gradientRef["svg:y"]->getInt() != 65535)) - gradient.addStop(1, colors[1].getColorString(), colors[1].getOpacity()); + { + propList.insert("svg:offset", 1.0, WPX_PERCENT); + propList.insert("svg:stop-color", colors[1].getColorString()); + propList.insert("svg:stop-opacity", colors[1].getOpacity(), WPX_PERCENT); + gradient.append(propList); + } m_gradient = gradient; m_style.insert("draw:fill", "gradient"); } @@ -1017,15 +1037,30 @@ double angle = m_gradientAngle*M_PI/180.0; double tanangle = tan(angle); double ref = (tanangle<1e2) ? (yref+xref*tanangle)/(1+tanangle) : xref; - libwpg::WPGGradient gradient; - m_style.insert("draw:gradient", -m_gradientAngle); // upside down - gradient.addStop(0, colors[1].getColorString(), colors[1].getOpacity()); - gradient.addStop(ref, colors[0].getColorString(), colors[0].getOpacity()); - if((m_gradientRef["svg:x"]->getInt() != 65535) && (m_gradientRef["svg:y"]->getInt() != 65536)) - gradient.addStop(1, colors[1].getColorString(), colors[1].getOpacity()); + ::WPXPropertyListVector gradient; + m_style.insert("draw:angle", (int)(-m_gradientAngle)); + + WPXPropertyList propList; + propList.insert("svg:offset", 0.0, WPX_PERCENT); + propList.insert("svg:stop-color", colors[1].getColorString()); + propList.insert("svg:stop-opacity", colors[1].getOpacity(), WPX_PERCENT); + gradient.append(propList); + propList.clear(); + propList.insert("svg:offset", ref, WPX_PERCENT); + propList.insert("svg:stop-color", colors[0].getColorString()); + propList.insert("svg:stop-opacity", colors[0].getOpacity(), WPX_PERCENT); + gradient.append(propList); + propList.clear(); + if((m_gradientRef["svg:x"]->getInt() != 65535) && (m_gradientRef["svg:y"]->getInt() != 65535)) + { + propList.insert("svg:offset", 1.0, WPX_PERCENT); + propList.insert("svg:stop-color", colors[1].getColorString()); + propList.insert("svg:stop-opacity", colors[1].getOpacity(), WPX_PERCENT); + gradient.append(propList); + } m_gradient = gradient; - m_style.insert("draw:fill", "gradient"); } + m_style.insert("draw:fill", "gradient"); } } @@ -1035,6 +1070,7 @@ return; if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) return; +#if 0 unsigned char red = readU8(); unsigned char green = readU8(); unsigned char blue = readU8(); @@ -1042,13 +1078,12 @@ m_brushBackColor = libwpg::WPGColor(red, green, blue, alpha); - m_style.insert("draw:fill-color", m_brushForeColor.getColorString()); - m_style.insert("draw:opacity", m_brushForeColor.getOpacity(), WPX_PERCENT); - - if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "none") - m_style.insert("draw:fill", "solid"); + m_gradient.backColor = libwpg::WPGColor(red, green, blue, alpha); + if(m_gradient.style == libwpg::WPGGradient::NoBrush) + m_gradient.style = libwpg::WPGGradient::Solid; WPG_DEBUG_MSG((" Backround color (RGBA): %d %d %d %d\n", red, green, blue, alpha)); +#endif } void WPG2Parser::handleDPBrushBackColor() @@ -1057,6 +1092,7 @@ return; if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) return; +#if 0 // we just ignore the least significant 8 bits unsigned int red = (m_doublePrecision) ? readU16()>>8 : readU8(); unsigned int green = (m_doublePrecision) ? readU16()>>8 : readU8(); @@ -1072,6 +1108,7 @@ m_style.insert("draw:fill", "solid"); WPG_DEBUG_MSG((" Background color (RGBA): %d %d %d %d\n", red, green, blue, alpha)); +#endif } void WPG2Parser::handleBrushPattern() @@ -1231,7 +1268,7 @@ m_style.insert("svg:fill-rule", "nonzero"); else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : libwpg::WPGGradient(), m_style ); + m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); if (objCh.filled || objCh.closed) m_painter->drawPolygon(points); else @@ -1239,7 +1276,7 @@ } else { - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), libwpg::WPGGradient(), m_style ); + m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), ::WPXPropertyListVector(), m_style ); m_painter->drawPolyline(points); } } @@ -1329,7 +1366,7 @@ m_style.insert("svg:fill-rule", "nonzero"); else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : libwpg::WPGGradient(), m_style ); + m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); m_painter->drawPath(path); } } @@ -1367,7 +1404,7 @@ propList.insert("svg:rx", (TO_DOUBLE(rx)/m_xres)); propList.insert("svg:ry", (TO_DOUBLE(ry)/m_yres)); - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : libwpg::WPGGradient(), m_style ); + m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : ::WPXPropertyListVector(), ::WPXPropertyList() ); m_painter->drawRectangle(propList); WPG_DEBUG_MSG((" X1 : %li\n", x1)); @@ -1409,7 +1446,7 @@ if (objCh.rotate) propList.insert("libwpg:rotate", (double)(objCh.rotationAngle)); - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : libwpg::WPGGradient(), m_style ); + m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : ::WPXPropertyListVector(), ::WPXPropertyList() ); m_painter->drawEllipse(propList /* TODO: fix this: libwpg::WPGPoint((double)ix/m_xres, (double)iy/m_yres), libwpg::WPGPoint((double)ex/m_xres, (double)ey/m_yres) */); Index: libwpg.h.in =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/libwpg.h.in,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- libwpg.h.in 5 Dec 2008 15:17:26 -0000 1.13 +++ libwpg.h.in 7 Sep 2009 08:10:18 -0000 1.14 @@ -36,6 +36,5 @@ #include "WPGPaintInterface.h" #include "WPGDashArray.h" -#include "WPGGradient.h" #endif |