svg_patch.diff

Steven Bell -, 2007-12-19 07:54 AM

Download (2.67 KB)

View differences:

src/app/composer/qgscomposer.cpp (working copy)
37 37
#include <QSettings>
38 38
#include <QIcon>
39 39
#include <QPixmap>
40
#include <Q3Picture>
40
#include <QSvgGenerator>
41 41
#include <QToolBar>
42 42
#include <QImageWriter>
43 43
#include <QCheckBox>
......
773 773
void QgsComposer::on_mActionExportAsSVG_activated(void)
774 774
{
775 775

  
776
// QT 4 QPicture does not support export to SVG, so we're still using Q3Picture.
777
// When QGIS moves to Qt 4.3, we can use QSvgGenerator instead.
778

  
779 776
  QString myQSettingsLabel = "/UI/displaySVGWarning";
780 777
  QSettings myQSettings;
781 778

  
......
791 788
    m->setCheckBoxQSettingsLabel(myQSettingsLabel);
792 789
    m->setMessageAsHtml(tr("<p>The SVG export function in Qgis has several "
793 790
                           "problems due to bugs and deficiencies in the "
794
                           "Qt4 svg code. Of note, text does not "
795
                           "appear in the SVG file and there are problems "
796
                           "with the map bounding box clipping other items "
797
                           "such as the legend or scale bar.</p>"
791
                           "Qt4 svg code. In particular, there are problems "
792
                           "with layers not being clipped to the map"
793
                           "bounding box.</p>"
798 794
                           "If you require a vector-based output file from "
799 795
                           "Qgis it is suggested that you try printing "
800 796
                           "to PostScript if the SVG output is not "
......
822 818
  mView->setScene(0);//don't redraw the scene on the display while we render
823 819
  mComposition->setPlotStyle ( QgsComposition::Print );
824 820

  
825
  Q3Picture pic;
826
  QPainter p(&pic);
827
  QRectF renderArea(0,0, (mComposition->paperWidth() * mComposition->scale()), (mComposition->paperHeight() * mComposition->scale()) );
821
  QSvgGenerator generator;
822
  generator.setFileName(myOutputFileNameQString);
823
  generator.setSize(QSize( (int)mComposition->paperWidth(), (int)mComposition->paperHeight() ));
824
  generator.setResolution((int)(mComposition->resolution() / 25.4)); //because the rendering is done in mm, convert the dpi
828 825

  
826
  QPainter p(&generator);
827
  QRectF renderArea(0,0, mComposition->paperWidth(), mComposition->paperHeight());
829 828
  mComposition->canvas()->render(&p, renderArea);
830 829
  p.end();
831 830

  
832 831
  mComposition->setPlotStyle ( QgsComposition::Preview );
833 832
  mView->setScene(mComposition->canvas()); //now that we're done, set the view to show the scene again
834 833

  
835
  QRect br = pic.boundingRect();
836

  
837
  pic.save ( myOutputFileNameQString, "svg" );
838

  
839 834
}
840 835

  
841 836