diff --git a/include/wx/dcsvg.h b/include/wx/dcsvg.h index 6b1b0fdd72..63ebb96463 100644 --- a/include/wx/dcsvg.h +++ b/include/wx/dcsvg.h @@ -16,7 +16,7 @@ #if wxUSE_SVG -#define wxSVGVersion wxT("v0100") +#define wxSVGVersion wxT("v0101") #ifdef __BORLANDC__ #pragma warn -8008 diff --git a/src/common/dcsvg.cpp b/src/common/dcsvg.cpp index c35129be85..a26754f2c9 100644 --- a/src/common/dcsvg.cpp +++ b/src/common/dcsvg.cpp @@ -294,9 +294,7 @@ wxSVGBitmapEmbedHandler::ProcessBitmap(const wxBitmap& bmp, // write image meta information wxString s; - s += wxString::Format(" <image x=\"%d\" y=\"%d\" " - "width=\"%dpx\" height=\"%dpx\" " - "title=\"Image from wxSVG\"\n", + s += wxString::Format(" <image x=\"%d\" y=\"%d\" width=\"%dpx\" height=\"%dpx\"", x, y, bmp.GetWidth(), bmp.GetHeight()); s += wxString::Format(" id=\"image%d\" " "xlink:href=\"data:image/png;base64,\n", @@ -309,7 +307,7 @@ wxSVGBitmapEmbedHandler::ProcessBitmap(const wxBitmap& bmp, if (i < data.size() - WRAP) s += data.Mid(i, WRAP) + "\n"; else - s += data.Mid(i, s.size() - i) + "\"\n/>"; // last line + s += data.Mid(i, s.size() - i) + "\"\n />\n"; // last line } // write to the SVG file @@ -349,11 +347,9 @@ wxSVGBitmapFileHandler::ProcessBitmap(const wxBitmap& bmp, // reference the bitmap from the SVG doc wxString s; - s += wxString::Format(" <image x=\"%d\" y=\"%d\" " - "width=\"%dpx\" height=\"%dpx\" " - "title=\"Image from wxSVG\"\n", + s += wxString::Format(" <image x=\"%d\" y=\"%d\" width=\"%dpx\" height=\"%dpx\"", x, y, bmp.GetWidth(), bmp.GetHeight()); - s += wxString::Format(" xlink:href=\"%s\">\n</image>\n", sPNG); + s += wxString::Format(" xlink:href=\"%s\"/>\n", sPNG); // write to the SVG file const wxCharBuffer buf = s.utf8_str(); @@ -421,21 +417,13 @@ void wxSVGFileDCImpl::Init (const wxString &filename, int Width, int Height, m_filename = filename; m_sub_images = 0; wxString s; - s = wxT("<?xml version=\"1.0\" standalone=\"no\"?>\n"); - write(s); - s = wxT("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\"\n"); - write(s); - s = wxT("\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"); - write(s); - s = wxT("<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n"); - write(s); - s.Printf( wxT(" width=\"%scm\" height=\"%scm\" viewBox=\"0 0 %d %d \">\n"), NumStr(float(Width)/dpi*2.54), NumStr(float(Height)/dpi*2.54), Width, Height ); - write(s); - s = wxT("<title>") + title + wxT("</title>\n"); - write(s); - s = wxString (wxT("<desc>Picture generated by wxSVG ")) + wxSVGVersion + wxT("</desc>\n"); - write(s); - s = wxT("<g style=\"fill:black; stroke:black; stroke-width:1\">\n"); + s += wxS("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"); + s += wxS("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n\n"); + s += wxS("<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\""); + s += wxString::Format(wxS(" width=\"%scm\" height=\"%scm\" viewBox=\"0 0 %d %d\">\n"), NumStr(float(Width) / dpi*2.54), NumStr(float(Height) / dpi*2.54), Width, Height); + s += wxString::Format(wxS("<title>%s</title>\n"), title); + s += wxString(wxS("<desc>Picture generated by wxSVG ")) + wxSVGVersion + wxS("</desc>\n\n"); + s += wxS("<g style=\"fill:black; stroke:black; stroke-width:1\">\n"); write(s); } } @@ -514,14 +502,14 @@ void wxSVGFileDCImpl::DoDrawLines(int n, const wxPoint points[], wxCoord xoffset } } -void wxSVGFileDCImpl::DoDrawPoint (wxCoord x1, wxCoord y1) +void wxSVGFileDCImpl::DoDrawPoint(wxCoord x1, wxCoord y1) { wxString s; NewGraphicsIfNeeded(); - s = wxT("<g style = \"stroke-linecap:round;\" > \n"); + s = wxS("<g style=\"stroke-linecap:round;\">\n"); write(s); - DoDrawLine ( x1,y1,x1,y1 ); - s = wxT("</g>"); + DoDrawLine(x1, y1, x1, y1); + s = wxS("</g>\n"); write(s); } @@ -663,16 +651,15 @@ void wxSVGFileDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoo DoDrawRoundedRectangle(x, y, width, height, 0); } -void wxSVGFileDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius ) - +void wxSVGFileDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius) { NewGraphicsIfNeeded(); wxString s; - s.Printf ( wxT(" <rect x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" rx=\"%s\" %s"), - x, y, width, height, NumStr(radius) , wxGetBrushFill(m_brush)); + s = wxString::Format(wxS(" <rect x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" rx=\"%s\"%s"), + x, y, width, height, NumStr(radius), wxGetBrushFill(m_brush)); - s += wxT(" /> \n"); + s += wxS("/>\n"); write(s); CalcBoundingBox(x, y); @@ -684,22 +671,22 @@ void wxSVGFileDCImpl::DoDrawPolygon(int n, const wxPoint points[], wxPolygonFillMode fillStyle) { NewGraphicsIfNeeded(); - wxString s, sTmp; - s = wxT("<polygon style=\""); - if ( fillStyle == wxODDEVEN_RULE ) - s += wxT("fill-rule:evenodd; "); + wxString s; + + s = wxS(" <polygon style=\""); + if (fillStyle == wxODDEVEN_RULE) + s += wxS("fill-rule:evenodd;"); else - s += wxT("fill-rule:nonzero; "); + s += wxS("fill-rule:nonzero;"); - s += wxT("\"") + wxGetBrushFill(m_brush) + wxT("\npoints=\""); + s += wxS("\"") + wxGetBrushFill(m_brush) + wxS(" points=\""); - for (int i = 0; i < n; i++) + for (int i = 0; i < n; i++) { - sTmp.Printf ( wxT("%d,%d"), points [i].x+xoffset, points[i].y+yoffset ); - s += sTmp + wxT("\n"); - CalcBoundingBox ( points [i].x+xoffset, points[i].y+yoffset); + s += wxString::Format(wxS("%d %d "), points[i].x + xoffset, points[i].y + yoffset); + CalcBoundingBox(points[i].x + xoffset, points[i].y + yoffset); } - s += wxT("\" /> \n"); + s += wxS("\"/>\n"); write(s); }