bool QSvgIOHandlerPrivate::load(QIODevice *device) { if (loaded) return true; if (q->format().isEmpty()) q->canRead(); // # The SVG renderer doesn't handle trailing, unrelated data, so we must // assume that all available data in the device is to be read. bool res = false; QBuffer *buf = qobject_cast<QBuffer *>(device); if (buf) { const QByteArray &ba = buf->data(); res = r.load(QByteArray::fromRawData(ba.constData() + buf->pos(), ba.size() - buf->pos())); buf->seek(ba.size()); } else if (q->format() == "svgz") { res = r.load(device->readAll()); } else { xmlReader.setDevice(device); res = r.load(&xmlReader); } if (res) { defaultSize = QSize(r.viewBox().width(), r.viewBox().height()); loaded = true; } return loaded; }
bool QSvgIOHandlerPrivate::load(QIODevice *device) { if (loaded) return true; if (r->load(device->readAll())) { defaultSize = QSize(r->viewBox().width(), r->viewBox().height()); if (currentSize.isEmpty()) currentSize = defaultSize; } loaded = r->isValid(); return loaded; }
QSvgRenderer* DiagramView::getSvgRenderer(QString filePath) { if (!_svgRendererPool.contains(filePath)) { QSvgRenderer* renderer = new QSvgRenderer(filePath); renderer->setViewBox(renderer->viewBox().adjusted( -NodeItem::OFFSET, -NodeItem::OFFSET, NodeItem::OFFSET, NodeItem::OFFSET)); _svgRendererPool.insert(filePath, renderer); } return _svgRendererPool.value(filePath); }
void QgsComposerArrow::setEndMarker( const QString& svgPath ) { QSvgRenderer r; mEndMarkerFile = svgPath; if ( svgPath.isEmpty() || !r.load( svgPath ) ) { mStopArrowHeadHeight = 0; } else { //calculate mArrowHeadHeight from svg file and mArrowHeadWidth QRect viewBox = r.viewBox(); mStopArrowHeadHeight = mArrowHeadWidth / viewBox.width() * viewBox.height(); } adaptItemSceneRect(); }
void QgsLayoutItemPolyline::setEndSvgMarkerPath( const QString &path ) { QSvgRenderer r; mEndMarkerFile = path; if ( path.isEmpty() || !r.load( path ) ) { mEndArrowHeadHeight = 0; } else { //calculate mArrowHeadHeight from svg file and mArrowHeadWidth QRect viewBox = r.viewBox(); mEndArrowHeadHeight = mArrowHeadWidth / viewBox.width() * viewBox.height(); } updateBoundingRect(); }