Exemplo n.º 1
0
void ExportWizard::saveSvg()
{
    if (m_ui->svgFilePath->text().isEmpty()) {
        QMessageBox::warning(this, tr("No file selected !"), tr("You need to choose a file path for saving."));
        return;
    }
    QString svgFilePath = m_ui->svgFilePath->text();

    // get the rendering size
    QRect svgRect(m_canvas->sceneRect().toRect());

    // create the SVG writer
    QSvgGenerator generator;
    generator.setFileName(svgFilePath);
    generator.setSize(svgRect.size());
    generator.setResolution(physicalDpiX());
    generator.setViewBox(svgRect);
    generator.setTitle(m_canvas->titleText());
    generator.setDescription(tr("Created with %1").arg(QCoreApplication::applicationName() + " " + QCoreApplication::applicationVersion()));

    // paint over the writer
    QPainter painter(&generator);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, true);
    m_canvas->renderVisible(&painter, svgRect, svgRect, Qt::IgnoreAspectRatio, !m_ui->svgAsIsBox->isChecked());
    painter.end();
}
Exemplo n.º 2
0
void SvgTextC(struct ADrawTag *ctx,
              unsigned int     x,
              unsigned int     y,
              const char      *string,
              const char      *url)
{
    SvgContext  *context = getSvgCtx(ctx);
    unsigned int hw = SvgTextWidth(ctx, string) / 2;

    svgRect(ctx, getSvgBgPen(ctx), x - (hw + 2), y - SvgTextHeight(ctx) + 1, x + hw, y - 1);

    y += getSpace(ctx, SvgHelvetica.descender);

    if(url)
    {
        fprintf(getSvgFile(ctx), "<a xlink:href=\"%s\">", url);
    }

    fprintf(getSvgFile(ctx),
            "<text x=\"%u\" y=\"%u\" textLength=\"%u\" font-family=\"Helvetica\" font-size=\"%u\" fill=\"%s\" text-anchor=\"middle\">",
            x, y, SvgTextWidth(ctx, string), context->fontPoints, context->penColName);
    writeEscaped(ctx, string);
    fprintf(getSvgFile(ctx), "</text>\n");

    if(url)
    {
        fprintf(getSvgFile(ctx), "</a>", url);
    }
}
Exemplo n.º 3
0
void SvgFilledRectangle(struct ADrawTag *ctx,
                        unsigned int x1,
                        unsigned int y1,
                        unsigned int x2,
                        unsigned int y2)
{
    svgRect(ctx, getSvgPen(ctx), x1, y1, x2, y2);
}
Exemplo n.º 4
0
QImage minigis::svgGenerator(QSvgRenderer &render, const QPointF &p, const qreal &ang, const QString &cls,
                             const qreal &svgSize, const quint8 &anchorX, const quint8 &anchorY, QPointF *start)
{
    QRectF rgn = svgRect(render, cls, p, svgSize);

    QPointF mid(rgn.left(), rgn.top());
    if (anchorX != 0 || anchorY != 0) {
        QPointF anchor(rgn.width() * anchorX * 0.01, rgn.height() * anchorY * 0.01);
        rgn.moveTopLeft(rgn.topLeft() - anchor);
        mid = QPointF(rgn.left() + anchor.x(), rgn.top() + anchor.y());
    }
    QTransform tr;
    tr.translate(mid.x(), mid.y()).rotate(ang).translate(-mid.x(), -mid.y());

    return svgGenerator(render, cls, rgn, tr, tr.inverted(), start);
}