You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
(31) |
Jul
(37) |
Aug
(20) |
Sep
(20) |
Oct
(16) |
Nov
(10) |
Dec
(16) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
(11) |
May
(136) |
Jun
(61) |
Jul
(42) |
Aug
(21) |
Sep
(25) |
Oct
(43) |
Nov
(5) |
Dec
(24) |
2008 |
Jan
|
Feb
|
Mar
(2) |
Apr
(11) |
May
|
Jun
|
Jul
(51) |
Aug
(6) |
Sep
|
Oct
|
Nov
(21) |
Dec
(35) |
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(35) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
From: Fridrich S. <str...@us...> - 2010-06-06 22:14:17
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv9361/src/lib Removed Files: WPGGradient.h Log Message: fixing distcheck errors --- WPGGradient.h DELETED --- |
From: Fridrich S. <str...@us...> - 2010-06-06 21:59:00
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv5699 Modified Files: WPG2Parser.cpp Log Message: Fixing a logical error Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.105 retrieving revision 1.106 diff -u -d -r1.105 -r1.106 --- WPG2Parser.cpp 6 Jun 2010 21:23:25 -0000 1.105 +++ WPG2Parser.cpp 6 Jun 2010 21:58:51 -0000 1.106 @@ -645,7 +645,7 @@ WPXPropertyList tmpStyle = m_style; - if (context.compoundFilled) + if (!context.compoundFilled) tmpStyle.insert("draw:fill", "none"); if(context.compoundWindingRule) @@ -1330,7 +1330,7 @@ WPXPropertyList tmpStyle = m_style; - if (objCh.filled) + if (!objCh.filled) tmpStyle.insert("draw:fill", "none"); bool insideCompound = m_groupStack.empty() ? false : @@ -1428,7 +1428,7 @@ WPXPropertyList tmpStyle = m_style; - if (objCh.filled) + if (!objCh.filled) tmpStyle.insert("draw:fill", "none"); bool insideCompound = m_groupStack.empty() ? false : @@ -1505,7 +1505,7 @@ WPXPropertyList tmpStyle = m_style; - if (objCh.filled) + if (!objCh.filled) tmpStyle.insert("draw:fill", "none"); long x1 = (m_doublePrecision) ? readS32() : readS16(); @@ -1554,7 +1554,7 @@ WPXPropertyList tmpStyle = m_style; - if (objCh.filled) + if (!objCh.filled) tmpStyle.insert("draw:fill", "none"); long cx = (m_doublePrecision) ? readS32() : readS16(); |
From: Fridrich S. <str...@us...> - 2010-06-06 21:23:33
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv31469 Modified Files: WPG2Parser.cpp Log Message: trying to tweak a bit the styles Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.104 retrieving revision 1.105 diff -u -d -r1.104 -r1.105 --- WPG2Parser.cpp 6 Jun 2010 21:06:16 -0000 1.104 +++ WPG2Parser.cpp 6 Jun 2010 21:23:25 -0000 1.105 @@ -643,16 +643,16 @@ return; WPGGroupContext& context = m_groupStack.top(); - if(context.compoundWindingRule) - m_style.insert("svg:fill-rule", "nonzero"); - else - m_style.insert("svg:fill-rule", "evenodd"); - WPXPropertyList tmpStyle = m_style; if (context.compoundFilled) tmpStyle.insert("draw:fill", "none"); + if(context.compoundWindingRule) + tmpStyle.insert("svg:fill-rule", "nonzero"); + else + tmpStyle.insert("svg:fill-rule", "evenodd"); + m_painter->setStyle( context.compoundFilled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); if (context.compoundClosed) @@ -1381,9 +1381,9 @@ if (count > 2) { if(objCh.windingRule) - m_style.insert("svg:fill-rule", "nonzero"); + tmpStyle.insert("svg:fill-rule", "nonzero"); else - m_style.insert("svg:fill-rule", "evenodd"); + tmpStyle.insert("svg:fill-rule", "evenodd"); m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); @@ -1487,9 +1487,9 @@ { // otherwise draw directly if(objCh.windingRule) - m_style.insert("svg:fill-rule", "nonzero"); + tmpStyle.insert("svg:fill-rule", "nonzero"); else - m_style.insert("svg:fill-rule", "evenodd"); + tmpStyle.insert("svg:fill-rule", "evenodd"); m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); m_painter->drawPath(path); } |
From: Fridrich S. <str...@us...> - 2010-06-06 21:06:24
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv27614/src/lib Modified Files: WPG2Parser.cpp Log Message: Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.103 retrieving revision 1.104 diff -u -d -r1.103 -r1.104 --- WPG2Parser.cpp 4 Jun 2010 15:19:00 -0000 1.103 +++ WPG2Parser.cpp 6 Jun 2010 21:06:16 -0000 1.104 @@ -648,7 +648,12 @@ else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( context.compoundFilled ? m_gradient : ::WPXPropertyListVector(), m_style ); + WPXPropertyList tmpStyle = m_style; + + if (context.compoundFilled) + tmpStyle.insert("draw:fill", "none"); + + m_painter->setStyle( context.compoundFilled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); if (context.compoundClosed) { @@ -1323,6 +1328,11 @@ parseCharacterization(&objCh); m_matrix = objCh.matrix; + WPXPropertyList tmpStyle = m_style; + + if (objCh.filled) + tmpStyle.insert("draw:fill", "none"); + bool insideCompound = m_groupStack.empty() ? false : m_groupStack.top().isCompoundPolygon(); @@ -1374,7 +1384,9 @@ m_style.insert("svg:fill-rule", "nonzero"); else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); + + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); + if (objCh.filled || objCh.closed) m_painter->drawPolygon(points); else @@ -1382,7 +1394,8 @@ } else { - m_painter->setStyle( ::WPXPropertyListVector(), m_style ); + + m_painter->setStyle( ::WPXPropertyListVector(), tmpStyle ); m_painter->drawPolyline(points); } } @@ -1413,6 +1426,11 @@ parseCharacterization(&objCh); m_matrix = objCh.matrix; + WPXPropertyList tmpStyle = m_style; + + if (objCh.filled) + tmpStyle.insert("draw:fill", "none"); + bool insideCompound = m_groupStack.empty() ? false : m_groupStack.top().isCompoundPolygon(); @@ -1472,7 +1490,7 @@ m_style.insert("svg:fill-rule", "nonzero"); else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); m_painter->drawPath(path); } } @@ -1485,6 +1503,11 @@ parseCharacterization(&objCh); m_matrix = objCh.matrix; + WPXPropertyList tmpStyle = m_style; + + if (objCh.filled) + tmpStyle.insert("draw:fill", "none"); + long x1 = (m_doublePrecision) ? readS32() : readS16(); long y1 = (m_doublePrecision) ? readS32() : readS16(); TRANSFORM_XY(x1,y1); @@ -1510,7 +1533,7 @@ propList.insert("svg:rx", (TO_DOUBLE(rx)/m_xres)); propList.insert("svg:ry", (TO_DOUBLE(ry)/m_yres)); - m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); m_painter->drawRectangle(propList); WPG_DEBUG_MSG((" X1 : %li\n", x1)); @@ -1529,6 +1552,11 @@ parseCharacterization(&objCh); m_matrix = objCh.matrix; + WPXPropertyList tmpStyle = m_style; + + if (objCh.filled) + tmpStyle.insert("draw:fill", "none"); + long cx = (m_doublePrecision) ? readS32() : readS16(); long cy = (m_doublePrecision) ? readS32() : readS16(); TRANSFORM_XY(cx,cy); @@ -1552,7 +1580,7 @@ if (objCh.rotate) propList.insert("libwpg:rotate", objCh.rotationAngle, WPX_GENERIC); - m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), tmpStyle ); m_painter->drawEllipse(propList); WPG_DEBUG_MSG((" Center point x : %li\n", cx)); |
From: Fridrich S. <str...@us...> - 2010-06-06 19:25:00
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv4023/src/lib Modified Files: WPGBitmap.cpp Log Message: Implement --with-dummy-bitmaps for purposes of svg validation runs Index: WPGBitmap.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGBitmap.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- WPGBitmap.cpp 7 Sep 2009 09:50:15 -0000 1.27 +++ WPGBitmap.cpp 6 Jun 2010 19:24:52 -0000 1.28 @@ -27,6 +27,10 @@ #include "WPGBitmap.h" #include "libwpg_utils.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #define DUMP_BITMAP 0 #if DUMP_BITMAP @@ -146,11 +150,16 @@ if (d->dib.size() || d->height <= 0 || d->width <= 0) return d->dib; +#ifndef OUTPUT_DUMMY_BITMAPS unsigned tmpPixelSize = (unsigned)(d->height * d->width); if (tmpPixelSize < (unsigned)d->height) // overflow return d->dib; +#else + unsigned tmpPixelSize = 1; +#endif unsigned tmpBufferPosition = 0; + unsigned tmpDIBImageSize = tmpPixelSize * 4; if (tmpPixelSize > tmpDIBImageSize) // overflow !!! return d->dib; @@ -173,8 +182,13 @@ // Create DIB Info header writeU32(tmpDIBBuffer, tmpBufferPosition, 40); // Size +#ifndef OUTPUT_DUMMY_BITMAPS writeU32(tmpDIBBuffer, tmpBufferPosition, width()); // Width writeU32(tmpDIBBuffer, tmpBufferPosition, height()); // Height +#else + writeU32(tmpDIBBuffer, tmpBufferPosition, 1); // Width + writeU32(tmpDIBBuffer, tmpBufferPosition, 1); // Height +#endif writeU16(tmpDIBBuffer, tmpBufferPosition, 1); // Planes writeU16(tmpDIBBuffer, tmpBufferPosition, 32); // BitCount writeU32(tmpDIBBuffer, tmpBufferPosition, 0); // Compression @@ -188,6 +202,7 @@ // Write DIB Image data +#ifndef OUTPUT_DUMMY_BITMAPS int i = 0; int j = 0; if (d->vFlip) for (i = 0; i < d->height && tmpBufferPosition < tmpDIBFileSize; i++) @@ -232,6 +247,13 @@ WPG_DEBUG_MSG(("WPGBitmap: DIB file size = %i\n", tmpBufferPosition - 1)); +#else + writeU8(tmpDIBBuffer, tmpBufferPosition, 0x7F); + writeU8(tmpDIBBuffer, tmpBufferPosition, 0x7F); + writeU8(tmpDIBBuffer, tmpBufferPosition, 0x7F); + writeU8(tmpDIBBuffer, tmpBufferPosition, 0x7F); +#endif + d->dib.append(tmpDIBBuffer, tmpDIBFileSize); // temporary for debug - dump the binary bmp (need to have write access in the current directory |
From: Fridrich S. <str...@us...> - 2010-06-06 19:25:00
|
Update of /cvsroot/libwpg/libwpg In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv4023 Modified Files: configure.in Log Message: Implement --with-dummy-bitmaps for purposes of svg validation runs Index: configure.in =================================================================== RCS file: /cvsroot/libwpg/libwpg/configure.in,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- configure.in 3 Jun 2010 08:02:02 -0000 1.20 +++ configure.in 6 Jun 2010 19:24:52 -0000 1.21 @@ -98,6 +98,18 @@ AC_SUBST(WPG2RAW_WIN32_RESOURCE) AC_SUBST(WPG2SVG_WIN32_RESOURCE) +test_dummy_bitmaps=false +AC_ARG_WITH(dummy_bitmaps, + [ --with-dummy-bitmaps Output dummy bitmaps of 1x1 pixels instead of the real bitmaps (speeds up the validation test)], + if test "x$withval" = xyes; then + test_dummy_bitmaps=true + fi +) +if test "x$test_dummy_bitmaps" = "xtrue"; then + AC_DEFINE([OUTPUT_DUMMY_BITMAPS], [1], [Whether to output dummy bitmaps instead of the real ones]) +fi + + test_docs=true if test "$native_win32" = yes; then test_docs=false |
From: Fridrich S. <str...@us...> - 2010-06-04 15:19:08
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv13027/src/lib Modified Files: WPG2Parser.cpp WPGXParser.cpp WPGXParser.h Log Message: Fixing rotation angles Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.102 retrieving revision 1.103 diff -u -d -r1.102 -r1.103 --- WPG2Parser.cpp 4 Jun 2010 09:01:38 -0000 1.102 +++ WPG2Parser.cpp 4 Jun 2010 15:19:00 -0000 1.103 @@ -165,7 +165,7 @@ unsigned long objectId; unsigned long lockFlags; - long rotationAngle; + double rotationAngle; long sxcos; long sycos; long kxsin; @@ -193,7 +193,7 @@ framed(true), objectId(0), lockFlags(0), - rotationAngle(0), + rotationAngle(0.0), sxcos(0), sycos(0), kxsin(0), @@ -1256,7 +1256,7 @@ if(ch->hasObjectId) ch->objectId = readU16(); if(ch->objectId >> 15) ch->objectId = ((ch->objectId & 0x7fff) << 16) | readU16(); - if(ch->rotate) ch->rotationAngle = readS32(); + if(ch->rotate) ch->rotationAngle = fixedPointToDouble(readU32()); if(ch->rotate || ch->scale) { @@ -1550,7 +1550,7 @@ propList.insert("svg:rx", (TO_DOUBLE(radx) / m_xres)); propList.insert("svg:ry", (TO_DOUBLE(rady) / m_xres)); if (objCh.rotate) - propList.insert("libwpg:rotate", (double)(objCh.rotationAngle)); + propList.insert("libwpg:rotate", objCh.rotationAngle, WPX_GENERIC); m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); m_painter->drawEllipse(propList); Index: WPGXParser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGXParser.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- WPGXParser.cpp 30 Dec 2008 08:53:57 -0000 1.18 +++ WPGXParser.cpp 4 Jun 2010 15:19:00 -0000 1.19 @@ -27,6 +27,15 @@ #include "WPGXParser.h" +double fixedPointToDouble(const unsigned int fixedPointNumber) +{ + short fixedPointNumberIntegerPart = (short)((fixedPointNumber & 0xFFFF0000) >> 16); + double fixedPointNumberFractionalPart = (double)((double)(fixedPointNumber & 0x0000FFFF)/(double)0xFFFF); + return ((fixedPointNumberIntegerPart >= 0) ? + ((double)fixedPointNumberIntegerPart + fixedPointNumberFractionalPart) : + ((double)fixedPointNumberIntegerPart - fixedPointNumberFractionalPart)); +} + WPGXParser::WPGXParser(WPXInputStream *input, libwpg::WPGPaintInterface* painter): m_input(input), m_painter(painter), m_colorPalette(std::map<int,libwpg::WPGColor>()) { Index: WPGXParser.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGXParser.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- WPGXParser.h 28 Nov 2008 11:53:03 -0000 1.16 +++ WPGXParser.h 4 Jun 2010 15:19:00 -0000 1.17 @@ -34,6 +34,8 @@ #include <map> +double fixedPointToDouble(unsigned int fixedPointNumber); + class WPGXParser { public: @@ -49,7 +51,7 @@ int readS32(); unsigned int readVariableLengthInteger(); WPGXParser& operator=(const WPGXParser& parser); - + protected: WPXInputStream* m_input; libwpg::WPGPaintInterface* m_painter; |
From: Fridrich S. <str...@us...> - 2010-06-04 09:23:21
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv966/src/lib Modified Files: WPGSVGGenerator.cpp Log Message: Empty gradient array means that object is not filled Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- WPGSVGGenerator.cpp 4 Jun 2010 09:00:53 -0000 1.35 +++ WPGSVGGenerator.cpp 4 Jun 2010 09:23:13 -0000 1.36 @@ -85,7 +85,7 @@ m_gradient = gradient; - if(propList["draw:fill"] && propList["draw:fill"]->getStr() == "gradient") + if(propList["draw:fill"] && propList["draw:fill"]->getStr() == "gradient" && m_gradient.count()) { double angle = (m_style["draw:angle"] ? m_style["draw:angle"]->getDouble() : 0.0); |
From: Fridrich S. <str...@us...> - 2010-06-04 09:01:46
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv27434/src/lib Modified Files: WPG2Parser.cpp Log Message: Fix some issues with styles output Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.101 retrieving revision 1.102 diff -u -d -r1.101 -r1.102 --- WPG2Parser.cpp 3 Jun 2010 08:02:03 -0000 1.101 +++ WPG2Parser.cpp 4 Jun 2010 09:01:38 -0000 1.102 @@ -1012,7 +1012,7 @@ std::vector<double> positions; WPG_DEBUG_MSG((" Gradient colors : %d\n", count)); - if (count > 0) // try not to run into signedness/unsignedness issues in second for cycle + if (count > 0) { for(unsigned i = 0; i < count; i++) { @@ -1105,22 +1105,25 @@ std::vector<double> positions; WPG_DEBUG_MSG((" Gradient colors : %d\n", count)); - for(unsigned i = 0; i < count; i++) + if (count > 0) { - unsigned char red = (m_doublePrecision) ? readU16()>>8 : readU8(); - unsigned char green = (m_doublePrecision) ? readU16()>>8 : readU8(); - unsigned char blue = (m_doublePrecision) ? readU16()>>8 : readU8(); - unsigned char alpha = 0xff - (m_doublePrecision) ? readU16()>>8 : readU8(); - libwpg::WPGColor color(red, green, blue, alpha); - colors.push_back(color); - WPG_DEBUG_MSG((" Color #%d (RGBA): %d %d %d %d\n", i+1, red, green, blue, alpha)); - } + for(unsigned i = 0; i < count; i++) + { + unsigned char red = (m_doublePrecision) ? readU16()>>8 : readU8(); + unsigned char green = (m_doublePrecision) ? readU16()>>8 : readU8(); + unsigned char blue = (m_doublePrecision) ? readU16()>>8 : readU8(); + unsigned char alpha = 0xff - (m_doublePrecision) ? readU16()>>8 : readU8(); + libwpg::WPGColor color(red, green, blue, alpha); + colors.push_back(color); + WPG_DEBUG_MSG((" Color #%d (RGBA): %d %d %d %d\n", i+1, red, green, blue, alpha)); + } - for(unsigned j = 0; j < count-1; j++) - { - unsigned pos = readU16(); - positions.push_back(TO_DOUBLE(pos)); - WPG_DEBUG_MSG((" Position #%d : %d\n", j+1, pos)); + for(unsigned j = 0; j < count-1; j++) + { + unsigned pos = readU16(); + positions.push_back(TO_DOUBLE(pos)); + WPG_DEBUG_MSG((" Position #%d : %d\n", j+1, pos)); + } } // looks like Corel Presentations only create 2 colors gradient @@ -1507,7 +1510,7 @@ propList.insert("svg:rx", (TO_DOUBLE(rx)/m_xres)); propList.insert("svg:ry", (TO_DOUBLE(ry)/m_yres)); - m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), ::WPXPropertyList() ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); m_painter->drawRectangle(propList); WPG_DEBUG_MSG((" X1 : %li\n", x1)); @@ -1549,9 +1552,8 @@ if (objCh.rotate) propList.insert("libwpg:rotate", (double)(objCh.rotationAngle)); - m_painter->setStyle( 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) */); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); + m_painter->drawEllipse(propList); WPG_DEBUG_MSG((" Center point x : %li\n", cx)); WPG_DEBUG_MSG((" Center point y : %li\n", cy)); |
From: Fridrich S. <str...@us...> - 2010-06-04 09:01:02
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv26943/src/lib Modified Files: WPGSVGGenerator.cpp Log Message: Fix a badly formed xml in svg output Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- WPGSVGGenerator.cpp 7 Sep 2009 09:41:29 -0000 1.34 +++ WPGSVGGenerator.cpp 4 Jun 2010 09:00:53 -0000 1.35 @@ -93,22 +93,11 @@ m_outputSink << " <linearGradient id=\"grad" << m_gradientIndex++ << "\" >\n"; for(unsigned c = 0; c < m_gradient.count(); c++) { - // round to nearest percentage - // int ofs = (int)((100.0*m_gradient.stopOffset(c))+0.5); - m_outputSink << " <stop offset=\"" << m_gradient[c]["svg:offset"]->getStr().cstr() << "\""; 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; - - // reset stream formatting - m_outputSink << std::dec; - m_outputSink.width(old_stream_size); } m_outputSink << " </linearGradient>\n"; |
From: Fridrich S. <str...@us...> - 2010-06-03 08:02:13
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv28744/src/lib Modified Files: WPG2Parser.cpp Log Message: Miscellaneous little things Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.100 retrieving revision 1.101 diff -u -d -r1.100 -r1.101 --- WPG2Parser.cpp 7 Sep 2009 09:41:29 -0000 1.100 +++ WPG2Parser.cpp 3 Jun 2010 08:02:03 -0000 1.101 @@ -888,7 +888,7 @@ if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now return; } - WPG_DEBUG_MSG((" Line cap : %d\n", style)); +// WPG_DEBUG_MSG((" Line cap : %d\n", style)); } void WPG2Parser::handleLineJoin() @@ -902,7 +902,7 @@ if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now return; } - WPG_DEBUG_MSG((" Line join : %d\n", style)); +// WPG_DEBUG_MSG((" Line join : %d\n", style)); } void WPG2Parser::handleBrushGradient() |
From: Fridrich S. <str...@us...> - 2010-06-03 08:02:11
|
Update of /cvsroot/libwpg/libwpg In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv28744 Modified Files: configure.in Log Message: Miscellaneous little things Index: configure.in =================================================================== RCS file: /cvsroot/libwpg/libwpg/configure.in,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- configure.in 24 Nov 2008 10:16:19 -0000 1.19 +++ configure.in 3 Jun 2010 08:02:02 -0000 1.20 @@ -7,7 +7,7 @@ WPG_MINOR_VERSION=2 WPG_MICRO_VERSION=0 -LIBWPD_REQUIRED_VERSION=0.9.0 +LIBWPD_REQUIRED_VERSION="0.9.0" WPG_VERSION="$WPG_MAJOR_VERSION.$WPG_MINOR_VERSION.$WPG_MICRO_VERSION" |
From: Fridrich S. <str...@us...> - 2009-09-11 23:13:35
|
Update of /cvsroot/libwpg/libwpg/src/conv/svg In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31257/src/conv/svg Modified Files: wpg2svg.cpp Log Message: missing include Index: wpg2svg.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/conv/svg/wpg2svg.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- wpg2svg.cpp 24 Nov 2008 10:16:19 -0000 1.6 +++ wpg2svg.cpp 11 Sep 2009 23:13:17 -0000 1.7 @@ -25,6 +25,7 @@ #include <iostream> #include <sstream> +#include <stdio.h> #include <string.h> #include "libwpg.h" #include <libwpd-stream/libwpd-stream.h> |
From: Fridrich S. <str...@us...> - 2009-09-07 15:17:04
|
Update of /cvsroot/libwpg/perfectspot/src/odg In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15132/src/odg Modified Files: OdgExporter.cxx OdgExporter.hxx Log Message: adapting perfectspot to the status of the libwpg code Index: OdgExporter.cxx =================================================================== RCS file: /cvsroot/libwpg/perfectspot/src/odg/OdgExporter.cxx,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- OdgExporter.cxx 5 Dec 2008 15:18:24 -0000 1.11 +++ OdgExporter.cxx 7 Sep 2009 15:16:52 -0000 1.12 @@ -242,10 +242,9 @@ mpHandler->endDocument(); } -void OdgExporter::setStyle(const libwpg::WPGDashArray& pen, const libwpg::WPGGradient& gradient, const ::WPXPropertyList & propList) +void OdgExporter::setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList & propList) { mxStyle = propList; - mxDashArray = pen; mxGradient = gradient; } @@ -495,7 +494,7 @@ void OdgExporter::writeGraphicsStyle() { - if(!(mxStyle["libwpg:stroke-solid"] && mxStyle["libwpg:stroke-solid"]->getInt()) && (mxDashArray.count() >=2 ) ) + if(!mxStyle["libwpg:stroke-solid"]->getInt() && (mxDashArray.count() >=2 ) ) { // ODG only supports dashes with the same length of spaces inbetween // here we take the first space and assume everything else the same @@ -532,7 +531,7 @@ pDrawGradientElement->addAttribute("draw:name", sValue); // ODG angle unit is 0.1 degree - double angle = -mxGradient.angle(); + double angle = mxStyle["draw:angle"] ? -mxStyle["draw:angle"]->getDouble() : 0.0; while(angle < 0) angle += 360; while(angle > 360) @@ -541,8 +540,8 @@ sValue.sprintf("%i", (unsigned)(angle*10)); pDrawGradientElement->addAttribute("draw:angle", sValue); - pDrawGradientElement->addAttribute("draw:start-color", mxGradient.stopColor(0).cstr()); - pDrawGradientElement->addAttribute("draw:end-color", mxGradient.stopColor(1).cstr()); + pDrawGradientElement->addAttribute("draw:start-color", mxGradient[0]["svg:stop-color"]->getStr().cstr()); + pDrawGradientElement->addAttribute("draw:end-color", mxGradient[1]["svg:stop-color"]->getStr().cstr()); pDrawGradientElement->addAttribute("draw:start-intensity", "100%"); pDrawGradientElement->addAttribute("draw:end-intensity", "100%"); pDrawGradientElement->addAttribute("draw:border", "0%"); @@ -562,7 +561,8 @@ if(!(mxStyle["draw:stroke"] && mxStyle["draw:stroke"]->getStr() == "none") && mxStyle["svg:stroke-width"] && mxStyle["svg:stroke-width"]->getDouble() > 0.0) { - pStyleGraphicsPropertiesElement->addAttribute("svg:stroke-width", mxStyle["svg:stroke-width"]->getStr()); + if (mxStyle["svg:stroke-width"]) + pStyleGraphicsPropertiesElement->addAttribute("svg:stroke-width", mxStyle["svg:stroke-width"]->getStr()); if (mxStyle["svg:stroke-color"]) pStyleGraphicsPropertiesElement->addAttribute("svg:stroke-color", mxStyle["svg:stroke-color"]->getStr()); @@ -570,7 +570,9 @@ pStyleGraphicsPropertiesElement->addAttribute("svg:stroke-opacity", mxStyle["svg:stroke-opacity"]->getStr()); - if(!mxStyle["libwpg:stroke-solid"] || !mxStyle["libwpg:stroke-solid"]->getInt()) + if(mxStyle["libwpg:stroke-solid"] && mxStyle["libwpg:stroke-solid"]->getInt()) + pStyleGraphicsPropertiesElement->addAttribute("draw:stroke", "solid"); + else { pStyleGraphicsPropertiesElement->addAttribute("draw:stroke", "dash"); sValue.sprintf("Dash_%i", miDashIndex-1); Index: OdgExporter.hxx =================================================================== RCS file: /cvsroot/libwpg/perfectspot/src/odg/OdgExporter.hxx,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- OdgExporter.hxx 5 Dec 2008 15:18:24 -0000 1.7 +++ OdgExporter.hxx 7 Sep 2009 15:16:52 -0000 1.8 @@ -22,7 +22,6 @@ /* "This product is not manufactured, approved, or supported by * Corel Corporation or Corel Corporation Limited." */ - #ifndef __ODGEXPORTER_HXX__ #define __ODGEXPORTER_HXX__ @@ -47,7 +46,7 @@ void startEmbeddedGraphics(const ::WPXPropertyList& /*propList*/) {} void endEmbeddedGraphics() {} - void setStyle(const libwpg::WPGDashArray& dashArray, const libwpg::WPGGradient& gradient, const ::WPXPropertyList &propList); + void setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); void drawRectangle(const ::WPXPropertyList &propList); void drawEllipse(const ::WPXPropertyList &propList); @@ -73,7 +72,7 @@ ::WPXPropertyList mxStyle; libwpg::WPGDashArray mxDashArray; - libwpg::WPGGradient mxGradient; + ::WPXPropertyListVector mxGradient; int miGradientIndex; int miDashIndex; int miGraphicsStyleIndex; |
From: Fridrich S. <str...@us...> - 2009-09-07 15:17:01
|
Update of /cvsroot/libwpg/perfectspot/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15132/src Modified Files: renderer.cpp Log Message: adapting perfectspot to the status of the libwpg code Index: renderer.cpp =================================================================== RCS file: /cvsroot/libwpg/perfectspot/src/renderer.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- renderer.cpp 5 Dec 2008 15:18:24 -0000 1.18 +++ renderer.cpp 7 Sep 2009 15:16:52 -0000 1.19 @@ -52,7 +52,7 @@ void startEmbeddedGraphics(const ::WPXPropertyList& /*propList*/) {} void endEmbeddedGraphics() {} - void setStyle(const libwpg::WPGDashArray& pen, const libwpg::WPGGradient& gradient, const ::WPXPropertyList &propList); + void setStyle(const WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); void drawRectangle(const ::WPXPropertyList &propList); void drawEllipse(const ::WPXPropertyList& propList); @@ -84,7 +84,7 @@ m_zoomY = m_target->viewport().height() / height; } -void Painter::setStyle(const libwpg::WPGDashArray& dashArray, const libwpg::WPGGradient& gradient, const ::WPXPropertyList &propList) +void Painter::setStyle(const WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) { QPen ppen(Qt::SolidLine); @@ -98,7 +98,7 @@ QColor cPen(propList["svg:stroke-color"]->getStr().cstr()); ppen.setColor(cPen); } - +#if 0 if(!propList["libwpg:stroke-solid"] || !propList["libwpg:stroke-solid"]->getInt()) { QVector<qreal> dashes; @@ -106,7 +106,7 @@ dashes.append(dashArray.at(i)); ppen.setDashPattern(dashes); } - +#endif m_target->setPen(ppen); QBrush pbrush(Qt::SolidPattern); @@ -127,14 +127,14 @@ { QLinearGradient pgradient(0, 0, 0, 1); for(unsigned c = 0; c < gradient.count(); c++) - pgradient.setColorAt(gradient.stopOffset(c), QColor(gradient.stopColor(c).cstr())); + pgradient.setColorAt(gradient[c]["svg:stop-offset"]->getDouble(), QColor(gradient[c]["svg:stop-color"]->getStr().cstr())); #if QT_VERSION >= 0x040300 pgradient.setCoordinateMode(QLinearGradient::ObjectBoundingMode); #endif pbrush = QBrush(pgradient); #if QT_VERSION >= 0x040300 QMatrix matrix; - matrix.rotate(gradient.angle()); + matrix.rotate(propList["draw:angle"] ? -propList["draw:angle"]->getDouble() : 0.0); pbrush.setMatrix(matrix); #endif } |
From: Fridrich S. <str...@us...> - 2009-09-07 12:27:15
|
Update of /cvsroot/libwpg/libwpg In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv30410 Added Files: THIS_PROJECT_IS_INDEED_ACTIVELY_DEVELOPED Log Message: Fight FUD and misunderstanding --- NEW FILE: THIS_PROJECT_IS_INDEED_ACTIVELY_DEVELOPED --- Don't be deceived, whatever anybody tries to tell you, we are still working on libwpg. In case of doubt, there is a list lib...@li... (subscription needed) that might give you more answers :) |
From: Fridrich S. <str...@us...> - 2009-09-07 12:09:41
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28827/src/lib Modified Files: WPG1Parser.cpp Log Message: Since now the resolution matters we are trying to get it right (hopefully) Index: WPG1Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG1Parser.cpp,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- WPG1Parser.cpp 7 Sep 2009 09:41:29 -0000 1.61 +++ WPG1Parser.cpp 7 Sep 2009 12:09:32 -0000 1.62 @@ -708,9 +708,9 @@ // Sanity checks if(hres <= 0) - hres = 1200; + hres = 72; if(vres <= 0) - vres = 1200; + vres = 72; if (width < 0) width = 0; if (height < 0) @@ -720,6 +720,7 @@ // Bitmap Type 1 does not specify position // Assume on the corner (0,0) + libwpg::WPGBitmap bitmap(width, height, vres, hres); ::WPXPropertyList propList; propList.insert("svg:x", 0.0); @@ -770,9 +771,9 @@ // Sanity checks if(hres <= 0) - hres = 1200; + hres = 72; if(vres <= 0) - vres = 1200; + vres = 72; if (width < 0) width = 0; if (height < 0) @@ -791,10 +792,10 @@ libwpg::WPGBitmap bitmap(width, height, vres, hres); ::WPXPropertyList propList; - propList.insert("svg:x", (double)xs1/1200.0); - propList.insert("svg:y", (double)(ys1)/1200.0); - propList.insert("svg:width", (double)(xs2-xs1)/1200.0); - propList.insert("svg:height", (double)(ys2-ys1)/1200.0); + propList.insert("svg:x", (double)xs1/(double)hres); + propList.insert("svg:y", (double)(ys1)/(double)vres); + propList.insert("svg:width", (double)(xs2-xs1)/(double)hres); + propList.insert("svg:height", (double)(ys2-ys1)/(double)vres); propList.insert("libwpg:mime-type", "image/bmp"); std::vector<unsigned char> buffer; |
From: Fridrich S. <str...@us...> - 2009-09-07 09:50:27
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv1769/src/lib Modified Files: WPGBitmap.cpp Log Message: Actually use different numbers for binary dumps if there are several bitmaps in the file Index: WPGBitmap.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGBitmap.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- WPGBitmap.cpp 7 Sep 2009 09:41:29 -0000 1.26 +++ WPGBitmap.cpp 7 Sep 2009 09:50:15 -0000 1.27 @@ -27,7 +27,7 @@ #include "WPGBitmap.h" #include "libwpg_utils.h" -#define DUMP_BITMAP 1 +#define DUMP_BITMAP 0 #if DUMP_BITMAP static unsigned bitmapId = 0; @@ -238,7 +238,7 @@ #if DUMP_BITMAP std::ostringstream filename; filename << "binarydump" << bitmapId++ << ".bmp"; - FILE *f = fopen("binarydump.bmp", "wb"); + FILE *f = fopen(filename.str().c_str(), "wb"); if (f) { for (unsigned k = 0; k < tmpDIBFileSize; k++) |
From: Fridrich S. <str...@us...> - 2009-09-07 09:41:42
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32646/src/lib Modified Files: WPG1Parser.cpp WPG2Parser.cpp WPG2Parser.h WPGBitmap.cpp WPGBitmap.h WPGPaintInterface.h WPGSVGGenerator.cpp WPGSVGGenerator.h Log Message: Adding the image resolutions to the generated DIB + starting to rework the dash-array to remove the public accessibility of the class Index: WPG2Parser.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.h,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- WPG2Parser.h 7 Sep 2009 08:10:18 -0000 1.36 +++ WPG2Parser.h 7 Sep 2009 09:41:29 -0000 1.37 @@ -163,6 +163,7 @@ private: void handleStartWPG(); void handleEndWPG(); + void handleFormSettings(); void handleLayer(); void handleCompoundPolygon(); @@ -177,6 +178,8 @@ void handlePenStyle(); void handlePenSize(); void handleDPPenSize(); + void handleLineCap(); + void handleLineJoin(); void handleBrushGradient(); void handleDPBrushGradient(); void handleBrushForeColor(); Index: WPGBitmap.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGBitmap.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- WPGBitmap.h 28 Nov 2008 11:53:03 -0000 1.11 +++ WPGBitmap.h 7 Sep 2009 09:41:29 -0000 1.12 @@ -36,7 +36,7 @@ class WPGBitmap { public: - WPGBitmap(int width, int height, bool verticalFlip=false, bool horizontalFlip=false); + WPGBitmap(int width, int height, int verticalResolution, int horizontalResolution, bool verticalFlip=false, bool horizontalFlip=false); WPGBitmap(const WPGBitmap&); @@ -51,7 +51,13 @@ // return height in pixel int height() const; + + // return vertical resolution in pixels per inch + int vres() const; + // return horizontal resolution in pixels per inch + int hres() const; + void setPixel(int x, int y, const WPGColor& color); const ::WPXBinaryData& getDIB() const; Index: WPGSVGGenerator.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.h,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- WPGSVGGenerator.h 7 Sep 2009 08:10:18 -0000 1.21 +++ WPGSVGGenerator.h 7 Sep 2009 09:41:29 -0000 1.22 @@ -47,7 +47,7 @@ void startEmbeddedGraphics(const ::WPXPropertyList & /*propList*/) {} void endEmbeddedGraphics() {} - void setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); + void setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); void drawRectangle(const ::WPXPropertyList& propList); void drawEllipse(const ::WPXPropertyList& propList); @@ -57,7 +57,6 @@ void drawImageObject(const ::WPXPropertyList &propList, const ::WPXBinaryData& binaryData); private: - libwpg::WPGDashArray m_dashArray; ::WPXPropertyListVector m_gradient; ::WPXPropertyList m_style; int m_gradientIndex; Index: WPGBitmap.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGBitmap.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- WPGBitmap.cpp 3 Dec 2008 23:05:05 -0000 1.25 +++ WPGBitmap.cpp 7 Sep 2009 09:41:29 -0000 1.26 @@ -27,7 +27,7 @@ #include "WPGBitmap.h" #include "libwpg_utils.h" -#define DUMP_BITMAP 0 +#define DUMP_BITMAP 1 #if DUMP_BITMAP static unsigned bitmapId = 0; @@ -62,17 +62,21 @@ public: int width; int height; + int vRes; + int hRes; bool vFlip; bool hFlip; WPGColor* pixels; ::WPXBinaryData dib; - Private(int w, int h): width(w), height(h), vFlip(false), hFlip(false), pixels(0), dib() {} + Private(int w, int h): width(w), height(h), vRes(72), hRes(72), vFlip(false), hFlip(false), pixels(0), dib() {} }; -libwpg::WPGBitmap::WPGBitmap(int w, int h, bool verticalFlip, bool horizontalFlip) : +libwpg::WPGBitmap::WPGBitmap(int w, int h, int verticalResolution, int horizontalResolution, bool verticalFlip, bool horizontalFlip) : d(new Private(w, h)) { + d->vRes = verticalResolution; + d->hRes = horizontalResolution; d->vFlip = verticalFlip; d->hFlip = horizontalFlip; d->pixels = new WPGColor[w*h]; @@ -119,6 +123,16 @@ return d->height; } +int libwpg::WPGBitmap::vres() const +{ + return d->vRes; +} + +int libwpg::WPGBitmap::hres() const +{ + return d->hRes; +} + void libwpg::WPGBitmap::setPixel(int x, int y, const libwpg::WPGColor& color) { if((x < 0) || (y <0) || (x >= d->width) || (y >= d->height)) @@ -165,8 +179,8 @@ writeU16(tmpDIBBuffer, tmpBufferPosition, 32); // BitCount writeU32(tmpDIBBuffer, tmpBufferPosition, 0); // Compression writeU32(tmpDIBBuffer, tmpBufferPosition, tmpDIBImageSize); // SizeImage - writeU32(tmpDIBBuffer, tmpBufferPosition, 0); // XPelsPerMeter - writeU32(tmpDIBBuffer, tmpBufferPosition, 0); // YPelsPerMeter + writeU32(tmpDIBBuffer, tmpBufferPosition, (int)(hres()*100.0/2.54)); // XPelsPerMeter + writeU32(tmpDIBBuffer, tmpBufferPosition, (int)(vres()*100.0/2.54)); // YPelsPerMeter writeU32(tmpDIBBuffer, tmpBufferPosition, 0); // ColorsUsed writeU32(tmpDIBBuffer, tmpBufferPosition, 0); // ColorsImportant Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -u -d -r1.33 -r1.34 --- WPGSVGGenerator.cpp 7 Sep 2009 08:10:18 -0000 1.33 +++ WPGSVGGenerator.cpp 7 Sep 2009 09:41:29 -0000 1.34 @@ -47,7 +47,7 @@ } -libwpg::WPGSVGGenerator::WPGSVGGenerator(std::ostream & output_sink): m_dashArray(libwpg::WPGDashArray()), m_gradient(), m_style(), m_gradientIndex(1), m_outputSink(output_sink) +libwpg::WPGSVGGenerator::WPGSVGGenerator(std::ostream & output_sink): m_gradient(), m_style(), m_gradientIndex(1), m_outputSink(output_sink) { } @@ -79,12 +79,10 @@ m_outputSink << "</svg>\n"; } -void libwpg::WPGSVGGenerator::setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) +void libwpg::WPGSVGGenerator::setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) { m_style = propList; - m_dashArray = dashArray; - m_gradient = gradient; if(propList["draw:fill"] && propList["draw:fill"]->getStr() == "gradient") @@ -278,6 +276,7 @@ if(!m_style["draw:stroke"] || !(m_style["draw:stroke"]->getStr() == "solid")) { +#if 0 if (m_dashArray.count()) { m_outputSink << "stroke-dasharray: "; @@ -289,6 +288,7 @@ } m_outputSink << "; "; } +#endif } if(m_style["draw:fill"] && m_style["draw:fill"]->getStr() == "none") Index: WPGPaintInterface.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGPaintInterface.h,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- WPGPaintInterface.h 7 Sep 2009 08:10:18 -0000 1.19 +++ WPGPaintInterface.h 7 Sep 2009 09:41:29 -0000 1.20 @@ -40,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 ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) = 0; + virtual void setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) = 0; virtual void startLayer(const ::WPXPropertyList& propList) = 0; Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.99 retrieving revision 1.100 diff -u -d -r1.99 -r1.100 --- WPG2Parser.cpp 7 Sep 2009 08:10:18 -0000 1.99 +++ WPG2Parser.cpp 7 Sep 2009 09:41:29 -0000 1.100 @@ -277,7 +277,7 @@ { { 0x01, "Start WPG", &WPG2Parser::handleStartWPG }, { 0x02, "End WPG", &WPG2Parser::handleEndWPG }, - { 0x03, "Form Settings", 0 }, // ignored + { 0x03, "Form Settings", &WPG2Parser::handleFormSettings }, { 0x04, "Ruler Settings", 0 }, // ignored { 0x05, "Grid Settings", 0 }, // ignored { 0x06, "Layer", &WPG2Parser::handleLayer }, @@ -314,8 +314,8 @@ { 0x2a, "Pen Pattern", 0 }, { 0x2b, "Pen Size", &WPG2Parser::handlePenSize }, { 0x2c, "DP Pen Size", &WPG2Parser::handleDPPenSize }, - { 0x2d, "Line Cap", 0 }, - { 0x2e, "Line Join", 0 }, + { 0x2d, "Line Cap", &WPG2Parser::handleLineCap }, + { 0x2e, "Line Join", &WPG2Parser::handleLineJoin }, { 0x2f, "Brush Gradient", &WPG2Parser::handleBrushGradient }, { 0x30, "DP Brush Gradient", &WPG2Parser::handleDPBrushGradient }, { 0x31, "Brush Fore Color", &WPG2Parser::handleBrushForeColor }, @@ -514,7 +514,7 @@ m_width = (imageX2 > imageX1 ) ? imageX2-imageX1 : imageX1-imageX2; m_height = (imageY2 > imageY1) ? imageY2-imageY1 : imageY1-imageY2; - WPG_DEBUG_MSG(("StartWPG\n")); + WPG_DEBUG_MSG(("StartWPG 2\n")); WPG_DEBUG_MSG((" Horizontal unit of measure : %d pixels/inch\n", horizontalUnit)); WPG_DEBUG_MSG((" Vertical unit of measure : %d pixels/inch\n", verticalUnit)); WPG_DEBUG_MSG((" Data precision : %d (%s)\n", precision, describePrecision(precision))); @@ -584,6 +584,28 @@ m_exit = true; } +void WPG2Parser::handleFormSettings() +{ +#ifdef DEBUG + unsigned int w = (m_doublePrecision) ? readU32() : readU16(); + unsigned int h = (m_doublePrecision) ? readU32() : readU16(); + double width = (TO_DOUBLE(w)) / m_xres; + double height = (TO_DOUBLE(h)) / m_yres; + m_input->seek(((m_doublePrecision) ? 4 : 2), WPX_SEEK_CUR); + unsigned int ml = (m_doublePrecision) ? readU32() : readU16(); + unsigned int mr = (m_doublePrecision) ? readU32() : readU16(); + unsigned int mt = (m_doublePrecision) ? readU32() : readU16(); + unsigned int mb = (m_doublePrecision) ? readU32() : readU16(); + double margL = (TO_DOUBLE(ml)) / m_xres; + double margR = (TO_DOUBLE(mr)) / m_xres; + double margT = (TO_DOUBLE(mt)) / m_xres; + double margB = (TO_DOUBLE(mb)) / m_xres; + + WPG_DEBUG_MSG(("Form Settings: width: %f height : %f\n", width, height)); + WPG_DEBUG_MSG(("Form Margins: left: %f right : %f top: %f bottom: %f\n", margL, margR, margT, margB)); +#endif +} + void WPG2Parser::handleLayer() { if (!m_graphicsStarted) @@ -626,7 +648,7 @@ else m_style.insert("svg:fill-rule", "evenodd"); - m_painter->setStyle( context.compoundFramed ? m_dashArray : libwpg::WPGDashArray(), context.compoundFilled ? m_gradient : ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( context.compoundFilled ? m_gradient : ::WPXPropertyListVector(), m_style ); if (context.compoundClosed) { @@ -710,8 +732,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned char red = readU8(); unsigned char green = readU8(); unsigned char blue = readU8(); @@ -726,8 +753,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } // we just ignore the least significant 8 bits unsigned char red = (m_doublePrecision) ? readU16()>>8 : readU8(); unsigned char green = (m_doublePrecision) ? readU16()>>8 : readU8(); @@ -790,8 +822,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned int style = readU16(); m_dashArray = m_dashArrayStyles[style]; @@ -807,8 +844,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned int width = readU16(); m_style.insert("svg:stroke-width", (TO_DOUBLE(width) / m_xres)); @@ -820,8 +862,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned long width = readU32(); m_style.insert("svg:stroke-width", TO_DOUBLE(width) / m_xres / 256); @@ -830,12 +877,45 @@ WPG_DEBUG_MSG((" Width: %li\n", width)); } -void WPG2Parser::handleBrushGradient() +void WPG2Parser::handleLineCap() { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } + WPG_DEBUG_MSG((" Line cap : %d\n", style)); +} + +void WPG2Parser::handleLineJoin() +{ + if (!m_graphicsStarted) + return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } + WPG_DEBUG_MSG((" Line join : %d\n", style)); +} + +void WPG2Parser::handleBrushGradient() +{ + if (!m_graphicsStarted) return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned angleFraction = readU16(); unsigned angleInteger = readU16(); unsigned xref = readU16(); @@ -864,8 +944,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned angleFraction = readU16(); unsigned angleInteger = readU16(); unsigned xref = readU16(); @@ -894,8 +979,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned char gradientType = readU8(); WPG_DEBUG_MSG((" Gradient type : %d (%s)\n", gradientType, describeGradient(gradientType))); @@ -982,8 +1072,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } unsigned char gradientType = readU8(); WPG_DEBUG_MSG((" Gradient type : %d (%s)\n", gradientType, describeGradient(gradientType))); @@ -1115,8 +1210,13 @@ { if (!m_graphicsStarted) return; - if (!m_groupStack.empty() && m_groupStack.top().isCompoundPolygon()) - return; + if(!m_groupStack.empty()) + { + if (m_groupStack.top().isCompoundPolygon()) + return; + if (m_groupStack.top().parentType == 0x01) // we don't handle Page Attributes for now + return; + } #ifdef DEBUG unsigned int pattern = readU16(); #endif @@ -1197,6 +1297,9 @@ WPG_DEBUG_MSG((" rotate : %s\n", (ch->rotate ? "yes" : "no"))); WPG_DEBUG_MSG((" hasObjectId : %s\n", (ch->hasObjectId ? "yes" : "no"))); WPG_DEBUG_MSG((" editLock : %s\n", (ch->editLock ? "yes" : "no"))); + WPG_DEBUG_MSG((" closed : %s\n", (ch->closed ? "yes" : "no"))); + WPG_DEBUG_MSG((" framed : %s\n", (ch->framed ? "yes" : "no"))); + WPG_DEBUG_MSG((" filled : %s\n", (ch->filled ? "yes" : "no"))); #ifdef DEBUG if(ch->editLock) WPG_DEBUG_MSG((" lock flags : 0x%x\n", (unsigned)ch->lockFlags)); if(ch->hasObjectId) WPG_DEBUG_MSG((" object ID : 0x%x\n", (unsigned)ch->objectId)); @@ -1268,7 +1371,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 : ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); if (objCh.filled || objCh.closed) m_painter->drawPolygon(points); else @@ -1276,7 +1379,7 @@ } else { - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( ::WPXPropertyListVector(), m_style ); m_painter->drawPolyline(points); } } @@ -1366,7 +1469,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 : ::WPXPropertyListVector(), m_style ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), m_style ); m_painter->drawPath(path); } } @@ -1404,7 +1507,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 : ::WPXPropertyListVector(), ::WPXPropertyList() ); + m_painter->setStyle( objCh.filled ? m_gradient : ::WPXPropertyListVector(), ::WPXPropertyList() ); m_painter->drawRectangle(propList); WPG_DEBUG_MSG((" X1 : %li\n", x1)); @@ -1446,7 +1549,7 @@ if (objCh.rotate) propList.insert("libwpg:rotate", (double)(objCh.rotationAngle)); - m_painter->setStyle( objCh.framed ? m_dashArray : libwpg::WPGDashArray(), objCh.filled ? m_gradient : ::WPXPropertyListVector(), ::WPXPropertyList() ); + m_painter->setStyle( 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) */); @@ -1495,8 +1598,12 @@ m_bitmap.y1 = TO_DOUBLE(ys1) / m_yres; m_bitmap.x2 = TO_DOUBLE(xs2) / m_xres; m_bitmap.y2 = TO_DOUBLE(ys2) / m_yres; - m_bitmap.hres = hres; - m_bitmap.vres = vres; + if (hres == 0) + hres = 72; + m_bitmap.hres = hres; + if (vres == 0) + vres = 72; + m_bitmap.vres = vres; WPG_DEBUG_MSG((" x1 : %li\n", x1)); WPG_DEBUG_MSG((" y1 : %li\n", y1)); Index: WPG1Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG1Parser.cpp,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- WPG1Parser.cpp 7 Sep 2009 08:10:18 -0000 1.60 +++ WPG1Parser.cpp 7 Sep 2009 09:41:29 -0000 1.61 @@ -391,7 +391,7 @@ point.insert("svg:y", (double)(m_height-ey)/1200.0); points.append(point); - m_painter->setStyle(m_dashArray, m_gradient, m_style); + m_painter->setStyle(m_gradient, m_style); m_painter->drawPolyline(points); @@ -418,7 +418,7 @@ points.append(point); } - m_painter->setStyle(m_dashArray, ::WPXPropertyListVector(), m_style); + m_painter->setStyle(::WPXPropertyListVector(), m_style); m_painter->drawPolyline(points); @@ -441,7 +441,7 @@ propList.insert("svg:width", (double)w/1200.0); propList.insert("svg:height",(double)h/1200.0); - m_painter->setStyle(m_dashArray, m_gradient, m_style); + m_painter->setStyle(m_gradient, m_style); m_painter->drawRectangle(propList); @@ -469,7 +469,7 @@ points.append(point); } - m_painter->setStyle(m_dashArray, m_gradient, m_style); + m_painter->setStyle(m_gradient, m_style); m_painter->drawPolygon(points); @@ -493,7 +493,7 @@ int endAngle = readS16(); unsigned flags = readU16(); #endif - m_painter->setStyle(m_dashArray, m_gradient, m_style); + m_painter->setStyle(m_gradient, m_style); m_painter->drawEllipse(propList); @@ -541,7 +541,7 @@ } - m_painter->setStyle(m_dashArray, m_gradient, m_style); + m_painter->setStyle(m_gradient, m_style); m_painter->drawPath(path); @@ -720,7 +720,7 @@ // Bitmap Type 1 does not specify position // Assume on the corner (0,0) - libwpg::WPGBitmap bitmap(width, height); + libwpg::WPGBitmap bitmap(width, height, vres, hres); ::WPXPropertyList propList; propList.insert("svg:x", 0.0); propList.insert("svg:y", 0.0); @@ -789,7 +789,7 @@ long ys2 = (y1 <= y2) ? y2 : y1; WPG_DEBUG_MSG(("%li %li %li %li\n", xs1, ys1, xs2, ys2)); - libwpg::WPGBitmap bitmap(width, height); + libwpg::WPGBitmap bitmap(width, height, vres, hres); ::WPXPropertyList propList; propList.insert("svg:x", (double)xs1/1200.0); propList.insert("svg:y", (double)(ys1)/1200.0); |
From: Fridrich S. <str...@us...> - 2009-09-07 09:41:39
|
Update of /cvsroot/libwpg/libwpg/src/conv/raw In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32646/src/conv/raw Modified Files: wpg2raw.cpp Log Message: Adding the image resolutions to the generated DIB + starting to rework the dash-array to remove the public accessibility of the class Index: wpg2raw.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/conv/raw/wpg2raw.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- wpg2raw.cpp 7 Sep 2009 08:10:18 -0000 1.23 +++ wpg2raw.cpp 7 Sep 2009 09:41:28 -0000 1.24 @@ -44,7 +44,7 @@ void startEmbeddedGraphics(const ::WPXPropertyList& propList); void endEmbeddedGraphics(); - void setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); + void setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList); void drawRectangle(const ::WPXPropertyList &propList); void drawEllipse(const ::WPXPropertyList& propList); @@ -135,7 +135,7 @@ printf("RawPainter::endEmbeddedGraphics \n"); } -void RawPainter::setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) +void RawPainter::setStyle(const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) { printf("RawPainter::setStyle(gradient: (%s), %s)\n", getPropString(gradient).cstr(), getPropString(propList).cstr()); } |
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 |
From: Fridrich S. <str...@us...> - 2009-09-07 08:10:31
|
Update of /cvsroot/libwpg/libwpg/src/conv/raw In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19570/src/conv/raw Modified Files: wpg2raw.cpp Log Message: Trying to finish the 0.2.0 series release Index: wpg2raw.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/conv/raw/wpg2raw.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- wpg2raw.cpp 5 Dec 2008 15:17:25 -0000 1.22 +++ wpg2raw.cpp 7 Sep 2009 08:10:18 -0000 1.23 @@ -44,7 +44,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); @@ -135,15 +135,9 @@ printf("RawPainter::endEmbeddedGraphics \n"); } -void RawPainter::setStyle(const libwpg::WPGDashArray& dashArray, const libwpg::WPGGradient& gradient, const ::WPXPropertyList &propList) +void RawPainter::setStyle(const libwpg::WPGDashArray& dashArray, const ::WPXPropertyListVector& gradient, const ::WPXPropertyList &propList) { - libwpg::WPGGradient tmpGradient = gradient; - printf("RawPainter::setStyle(%s)\n", getPropString(propList).cstr()); - - if(propList["draw:fill"] && propList["draw:fill"]->getStr() == "gradient") - for(unsigned c = 0; c < tmpGradient.count(); c++) - printf(" Gradient stop %d: %f RGB %s Opacity %f\n", c+1, - tmpGradient.stopOffset(c), tmpGradient.stopColor(c).cstr(), tmpGradient.stopOpacity(c)); + printf("RawPainter::setStyle(gradient: (%s), %s)\n", getPropString(gradient).cstr(), getPropString(propList).cstr()); } void RawPainter::drawRectangle(const ::WPXPropertyList &propList) |
From: Fridrich S. <str...@us...> - 2008-12-30 08:54:09
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15431/src/lib Modified Files: WPG1Parser.cpp WPG2Parser.cpp WPGHeader.cpp WPGInternalStream.cpp WPGInternalStream.h WPGSVGGenerator.cpp WPGXParser.cpp WPGraphics.cpp WPGraphics.h Log Message: adapting to the non-use of size_t in libwpd Index: WPGXParser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGXParser.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- WPGXParser.cpp 28 Nov 2008 11:53:03 -0000 1.17 +++ WPGXParser.cpp 30 Dec 2008 08:53:57 -0000 1.18 @@ -42,7 +42,7 @@ { if (!m_input || m_input->atEOS()) return (unsigned char)0; - size_t numBytesRead; + unsigned long numBytesRead; unsigned char const * p = m_input->read(sizeof(unsigned char), numBytesRead); if (p && numBytesRead == 1) Index: WPGHeader.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGHeader.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- WPGHeader.cpp 16 Nov 2007 20:19:26 -0000 1.6 +++ WPGHeader.cpp 30 Dec 2008 08:53:57 -0000 1.7 @@ -67,7 +67,7 @@ { input->seek(0, WPX_SEEK_SET); - size_t n = 0; + unsigned long n = 0; unsigned char * prefix = (unsigned char *) input->read(26, n); if(n < 26) return false; Index: WPGraphics.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGraphics.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- WPGraphics.h 24 Nov 2008 10:16:19 -0000 1.13 +++ WPGraphics.h 30 Dec 2008 08:53:57 -0000 1.14 @@ -27,7 +27,6 @@ #define __WPGRAPHICS_H__ #include <libwpd/WPXString.h> -#include <stdio.h> class WPXInputStream; @@ -44,10 +43,10 @@ static bool isSupported(WPXInputStream* input); static bool parse(WPXInputStream* input, WPGPaintInterface* painter, WPGFileFormat fileFormat = WPG_AUTODETECT); - static bool parse(const unsigned char* data, const size_t size, WPGPaintInterface* painter, WPGFileFormat fileFormat = WPG_AUTODETECT); + static bool parse(const unsigned char* data, unsigned long size, WPGPaintInterface* painter, WPGFileFormat fileFormat = WPG_AUTODETECT); static bool generateSVG(WPXInputStream* input, WPXString& output, WPGFileFormat fileFormat = WPG_AUTODETECT); - static bool generateSVG(const unsigned char* data, const size_t size, WPXString& output, WPGFileFormat fileFormat = WPG_AUTODETECT); + static bool generateSVG(const unsigned char* data, unsigned long size, WPXString& output, WPGFileFormat fileFormat = WPG_AUTODETECT); }; } // namespace libwpg Index: WPGraphics.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGraphics.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- WPGraphics.cpp 24 Nov 2008 10:16:19 -0000 1.15 +++ WPGraphics.cpp 30 Dec 2008 08:53:57 -0000 1.16 @@ -156,7 +156,7 @@ return retval; } -bool libwpg::WPGraphics::parse(const unsigned char* data, const size_t size, libwpg::WPGPaintInterface* painter, libwpg::WPGFileFormat fileFormat) +bool libwpg::WPGraphics::parse(const unsigned char* data, unsigned long size, libwpg::WPGPaintInterface* painter, libwpg::WPGFileFormat fileFormat) { WPGInternalInputStream tmpStream(data, size); return libwpg::WPGraphics::parse(&tmpStream, painter, fileFormat); @@ -180,7 +180,7 @@ return result; } -bool libwpg::WPGraphics::generateSVG(const unsigned char* data, const size_t size, WPXString& output, libwpg::WPGFileFormat fileFormat) +bool libwpg::WPGraphics::generateSVG(const unsigned char* data, unsigned long size, WPXString& output, libwpg::WPGFileFormat fileFormat) { WPGInternalInputStream tmpStream(data, size); return libwpg::WPGraphics::generateSVG(&tmpStream, output, fileFormat); Index: WPGInternalStream.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGInternalStream.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- WPGInternalStream.cpp 23 Nov 2007 21:32:38 -0000 1.6 +++ WPGInternalStream.cpp 30 Dec 2008 08:53:57 -0000 1.7 @@ -25,7 +25,7 @@ #include "WPGInternalStream.h" -WPGInternalInputStream::WPGInternalInputStream(const unsigned char *data, const size_t size) : +WPGInternalInputStream::WPGInternalInputStream(const unsigned char *data, unsigned long size) : WPXInputStream(), m_offset(0), m_size(size), @@ -40,7 +40,7 @@ delete [] m_tmpBuf; } -const unsigned char * WPGInternalInputStream::read(size_t numBytes, size_t &numBytesRead) +const unsigned char * WPGInternalInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) { numBytesRead = 0; @@ -64,7 +64,7 @@ return 0; m_tmpBuf = new unsigned char[numBytesToRead]; - for (size_t i=0; (long)i<(long)numBytesToRead; i++) + for (unsigned long i=0; (long)i<(long)numBytesToRead; i++) { m_tmpBuf[i] = m_data[m_offset]; m_offset++; Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- WPGSVGGenerator.cpp 10 Dec 2008 12:54:28 -0000 1.31 +++ WPGSVGGenerator.cpp 30 Dec 2008 08:53:57 -0000 1.32 @@ -103,7 +103,7 @@ m_outputSink << " <stop offset=\"" << ofs << "%\""; // set stream to %02x formatting - size_t old_stream_size = m_outputSink.width(2); + unsigned long old_stream_size = m_outputSink.width(2); m_outputSink << std::hex; m_outputSink << " stop-color=\"" << color.cstr() << "\""; Index: WPGInternalStream.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGInternalStream.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- WPGInternalStream.h 19 Oct 2007 19:09:09 -0000 1.4 +++ WPGInternalStream.h 30 Dec 2008 08:53:57 -0000 1.5 @@ -29,20 +29,20 @@ class WPGInternalInputStream : public WPXInputStream { public: - WPGInternalInputStream(const unsigned char *data, const size_t size); + WPGInternalInputStream(const unsigned char *data, unsigned long size); virtual ~WPGInternalInputStream(); virtual bool isOLEStream() { return false; } virtual WPXInputStream * getDocumentOLEStream(const char* /*name*/) { return 0; } - const virtual unsigned char *read(size_t numBytes, size_t &numBytesRead); + const virtual unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); virtual int seek(long offset, WPX_SEEK_TYPE seekType); virtual long tell(); virtual bool atEOS(); private: long m_offset; - const size_t m_size; + unsigned long m_size; const unsigned char *m_data; unsigned char *m_tmpBuf; WPGInternalInputStream(const WPGInternalInputStream&); Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.97 retrieving revision 1.98 diff -u -d -r1.97 -r1.98 --- WPG2Parser.cpp 10 Dec 2008 12:54:28 -0000 1.97 +++ WPG2Parser.cpp 30 Dec 2008 08:53:57 -0000 1.98 @@ -1908,7 +1908,7 @@ { if (!m_graphicsStarted) return; - if ((size_t)m_binaryData.objectIndex >= m_binaryData.mimeTypes.size()) + if ((unsigned long)m_binaryData.objectIndex >= m_binaryData.mimeTypes.size()) return; unsigned accessoryDataLength = readU16(); m_input->seek(accessoryDataLength, WPX_SEEK_CUR); @@ -1935,8 +1935,8 @@ if (f) { const char *tmpBinaryBuffer = binaryData.getDataBuffer(); - const size_t tmpBufferSize = binaryData.size(); - for (size_t k = 0; k < tmpBufferSize; k++) + unsigned long tmpBufferSize = binaryData.size(); + for (unsigned long k = 0; k < tmpBufferSize; k++) fprintf(f, "%c",tmpBinaryBuffer[k]); fclose(f); } Index: WPG1Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG1Parser.cpp,v retrieving revision 1.58 retrieving revision 1.59 diff -u -d -r1.58 -r1.59 --- WPG1Parser.cpp 5 Dec 2008 15:17:25 -0000 1.58 +++ WPG1Parser.cpp 30 Dec 2008 08:53:57 -0000 1.59 @@ -730,7 +730,7 @@ std::vector<unsigned char> buffer; decodeRLE(buffer, width, height, depth); - if (buffer.size() && buffer.size() == (size_t)((width*depth + 7)/8)*height) + if (buffer.size() && buffer.size() == (unsigned long)((width*depth + 7)/8)*height) { fillPixels(bitmap, &buffer[0], width, height, depth); m_painter->drawImageObject(propList, bitmap.getDIB()); @@ -799,7 +799,7 @@ std::vector<unsigned char> buffer; decodeRLE(buffer, width, height, depth); - if (buffer.size() && buffer.size() == (size_t)((width*depth + 7)/8)*height) + if (buffer.size() && buffer.size() == (unsigned long)((width*depth + 7)/8)*height) { fillPixels(bitmap, &buffer[0], width, height, depth); m_painter->drawImageObject(propList, bitmap.getDIB()); |
From: Fridrich S. <str...@us...> - 2008-12-30 08:54:03
|
Update of /cvsroot/libwpg/libwpg In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15431 Modified Files: .cvsignore libwpg.spec.in Log Message: adapting to the non-use of size_t in libwpd Index: .cvsignore =================================================================== RCS file: /cvsroot/libwpg/libwpg/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- .cvsignore 24 Aug 2007 11:10:21 -0000 1.3 +++ .cvsignore 30 Dec 2008 08:53:57 -0000 1.4 @@ -2,6 +2,7 @@ Makefile aclocal.m4 autom4te.cache +*config.cache config.guess config.h.in config.sub Index: libwpg.spec.in =================================================================== RCS file: /cvsroot/libwpg/libwpg/libwpg.spec.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- libwpg.spec.in 25 Jul 2008 11:25:14 -0000 1.12 +++ libwpg.spec.in 30 Dec 2008 08:53:57 -0000 1.13 @@ -11,7 +11,7 @@ Group: System Environment/Libraries URL: http://libwpg.sf.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot -BuildRequires: libwpd-devel >= 0.8.0, gcc-c++, libstdc++-devel, pkgconfig >= 0.9.0 +BuildRequires: libwpd-devel >= 0.9.0, gcc-c++, libstdc++-devel, pkgconfig >= 0.9.0 License: LGPL Prefix: %{prefix} @@ -28,8 +28,8 @@ Currently supported: raw svg %package devel -Requires: libwpg >= @WPG_MAJOR_VERSION@.@WPG_MINOR_VERSION@.0 -Requires: libwpd-devel >= 0.8.0 +Requires: %{name} >= %{version} +Requires: libwpd-devel >= 0.9.0 Summary: Files for developing with libwpg. Group: Development/Libraries @@ -38,7 +38,7 @@ %if %{!?_without_docs:1}%{?_without_docs:0} %package docs -Requires: libwpg >= @WPG_MAJOR_VERSION@.@WPG_MINOR_VERSION@.0 +Requires: %{name} >= %{version} BuildRequires: doxygen Summary: Documentation of libwpg API Group: Development/Documentation |
From: Fridrich S. <str...@us...> - 2008-12-10 12:54:41
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv16525/src/lib Modified Files: WPG2Parser.cpp WPGGradient.cpp WPGGradient.h WPGSVGGenerator.cpp Log Message: move gradient angle from WPGGradient class to the general style (we will get rid of WPGGradient soon) Index: WPG2Parser.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPG2Parser.cpp,v retrieving revision 1.96 retrieving revision 1.97 diff -u -d -r1.96 -r1.97 --- WPG2Parser.cpp 5 Dec 2008 15:17:25 -0000 1.96 +++ WPG2Parser.cpp 10 Dec 2008 12:54:28 -0000 1.97 @@ -947,7 +947,7 @@ double tanangle = tan(angle); double ref = (tanangle < 1e2 && tanangle > -1e2) ? (yref+xref*tanangle)/(1+tanangle) : xref; libwpg::WPGGradient gradient; - gradient.setAngle(-m_gradientAngle); // upside down + 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()); if((m_gradientRef["svg:x"]->getInt() != 65535) && (m_gradientRef["svg:y"]->getInt() != 65535)) @@ -1018,7 +1018,7 @@ double tanangle = tan(angle); double ref = (tanangle<1e2) ? (yref+xref*tanangle)/(1+tanangle) : xref; libwpg::WPGGradient gradient; - gradient.setAngle(-m_gradientAngle); // upside down + 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)) Index: WPGGradient.h =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGGradient.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- WPGGradient.h 3 Dec 2008 23:05:05 -0000 1.5 +++ WPGGradient.h 10 Dec 2008 12:54:28 -0000 1.6 @@ -45,10 +45,6 @@ WPGGradient& operator=(const WPGGradient&); - double angle() const; // in radiant - - void setAngle(double angle); - unsigned count() const; double stopOffset(unsigned index) const; Index: WPGGradient.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGGradient.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- WPGGradient.cpp 5 Dec 2008 15:17:25 -0000 1.9 +++ WPGGradient.cpp 10 Dec 2008 12:54:28 -0000 1.10 @@ -46,11 +46,9 @@ { public: WPGGradientPrivate() : - gradientStops(), - angle(0.0) {}; + gradientStops() {}; std::vector<WPGGradientStop> gradientStops; - double angle; }; } // namespace libwpg @@ -68,27 +66,15 @@ libwpg::WPGGradient::WPGGradient(const libwpg::WPGGradient& g) : d(new libwpg::WPGGradientPrivate()) { - d->angle = g.d->angle; d->gradientStops = g.d->gradientStops; } libwpg::WPGGradient& libwpg::WPGGradient::operator=(const libwpg::WPGGradient& g) { - d->angle = g.d->angle; d->gradientStops = g.d->gradientStops; return *this; } -double libwpg::WPGGradient::angle() const -{ - return d->angle; -} - -void libwpg::WPGGradient::setAngle(double a) -{ - d->angle = a; -} - unsigned libwpg::WPGGradient::count() const { return d->gradientStops.size(); Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- WPGSVGGenerator.cpp 5 Dec 2008 15:17:25 -0000 1.30 +++ WPGSVGGenerator.cpp 10 Dec 2008 12:54:28 -0000 1.31 @@ -89,7 +89,7 @@ if(propList["draw:fill"] && propList["draw:fill"]->getStr() == "gradient") { - double angle = m_gradient.angle(); + double angle = (m_style["draw:angle"] ? m_style["draw:angle"]->getDouble() : 0.0); m_outputSink << "<defs>\n"; m_outputSink << " <linearGradient id=\"grad" << m_gradientIndex++ << "\" >\n"; |