mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-02-18 20:50:50 +01:00
Extract image tool
This commit is contained in:
parent
9de47cc183
commit
475103f5d5
@ -438,7 +438,7 @@ void PDFPrecompiledPageGenerator::performImagePainting(const QImage& image)
|
||||
matrix.map(QPointF(1.0, 1.0)),
|
||||
matrix.map(QPointF(0.0, 1.0)),
|
||||
matrix.map(QPointF(0.5, 0.5)),
|
||||
});
|
||||
}, image);
|
||||
|
||||
if (isTransparencyGroupActive())
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ void PDFSnapInfo::addPageMediaBox(const QRectF& mediaBox)
|
||||
addLine(tl, bl);
|
||||
}
|
||||
|
||||
void PDFSnapInfo::addImage(const std::array<QPointF, 5>& points)
|
||||
void PDFSnapInfo::addImage(const std::array<QPointF, 5>& points, const QImage& image)
|
||||
{
|
||||
m_snapPoints.insert(m_snapPoints.cend(), {
|
||||
SnapPoint(SnapType::ImageCorner, points[0]),
|
||||
@ -61,6 +61,15 @@ void PDFSnapInfo::addImage(const std::array<QPointF, 5>& points)
|
||||
{
|
||||
addLine(points[i], points[(i + 1) % 4]);
|
||||
}
|
||||
|
||||
SnapImage snapImage;
|
||||
snapImage.imagePath.moveTo(points[0]);
|
||||
snapImage.imagePath.lineTo(points[1]);
|
||||
snapImage.imagePath.lineTo(points[2]);
|
||||
snapImage.imagePath.lineTo(points[3]);
|
||||
snapImage.imagePath.lineTo(points[0]);
|
||||
snapImage.image = image;
|
||||
m_snapImages.emplace_back(qMove(snapImage));
|
||||
}
|
||||
|
||||
void PDFSnapInfo::addLine(const QPointF& start, const QPointF& end)
|
||||
@ -140,6 +149,7 @@ bool PDFSnapper::isSnappingAllowed(PDFInteger pageIndex) const
|
||||
void PDFSnapper::updateSnappedPoint(const QPointF& mousePoint)
|
||||
{
|
||||
m_snappedPoint = std::nullopt;
|
||||
m_snappedImage = std::nullopt;
|
||||
m_mousePoint = mousePoint;
|
||||
|
||||
// Iterate trough all points, check, if some satisfies condition
|
||||
@ -151,7 +161,17 @@ void PDFSnapper::updateSnappedPoint(const QPointF& mousePoint)
|
||||
if (distanceSquared < toleranceSquared && isSnappingAllowed(snapPoint.pageIndex))
|
||||
{
|
||||
m_snappedPoint = snapPoint;
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Iterate trough all images, check, if some is under mouse cursor
|
||||
for (const ViewportSnapImage& snapImage : m_snapImages)
|
||||
{
|
||||
if (snapImage.viewportPath.contains(mousePoint))
|
||||
{
|
||||
m_snappedImage = snapImage;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -220,6 +240,32 @@ void PDFSnapper::buildSnapPoints(const PDFWidgetSnapshot& snapshot)
|
||||
updateSnappedPoint(m_mousePoint);
|
||||
}
|
||||
|
||||
void PDFSnapper::buildSnapImages(const PDFWidgetSnapshot& snapshot)
|
||||
{
|
||||
// First, clear all snap images
|
||||
m_snapImages.clear();
|
||||
|
||||
// Second, create snapping points from snapshot
|
||||
for (const PDFWidgetSnapshot::SnapshotItem& item : snapshot.items)
|
||||
{
|
||||
if (!item.compiledPage)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const PDFSnapInfo* info = item.compiledPage->getSnapInfo();
|
||||
for (const PDFSnapInfo::SnapImage& snapImage : info->getSnapImages())
|
||||
{
|
||||
ViewportSnapImage viewportSnapImage;
|
||||
viewportSnapImage.image = snapImage.image;
|
||||
viewportSnapImage.imagePath = snapImage.imagePath;
|
||||
viewportSnapImage.pageIndex = item.pageIndex;
|
||||
viewportSnapImage.viewportPath = item.pageToDeviceMatrix.map(snapImage.imagePath);
|
||||
m_snapImages.emplace_back(qMove(viewportSnapImage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int PDFSnapper::getSnapPointTolerance() const
|
||||
{
|
||||
return m_snapPointTolerance;
|
||||
@ -240,6 +286,16 @@ QPointF PDFSnapper::getSnappedPoint() const
|
||||
return m_mousePoint;
|
||||
}
|
||||
|
||||
const PDFSnapper::ViewportSnapImage* PDFSnapper::getSnappedImage() const
|
||||
{
|
||||
if (m_snappedImage.has_value())
|
||||
{
|
||||
return &*m_snappedImage;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void PDFSnapper::setReferencePoint(PDFInteger pageIndex, QPointF pagePoint)
|
||||
{
|
||||
m_currentPage = pageIndex;
|
||||
@ -252,4 +308,15 @@ void PDFSnapper::clearReferencePoint()
|
||||
m_referencePoint = std::nullopt;
|
||||
}
|
||||
|
||||
void PDFSnapper::clear()
|
||||
{
|
||||
clearReferencePoint();
|
||||
|
||||
m_snapPoints.clear();
|
||||
m_snapImages.clear();
|
||||
m_snappedPoint = std::nullopt;
|
||||
m_snappedImage = std::nullopt;
|
||||
m_mousePoint = QPointF();
|
||||
}
|
||||
|
||||
} // namespace pdf
|
||||
|
@ -20,6 +20,9 @@
|
||||
|
||||
#include "pdfglobal.h"
|
||||
|
||||
#include <QImage>
|
||||
#include <QPainterPath>
|
||||
|
||||
#include <array>
|
||||
#include <optional>
|
||||
|
||||
@ -63,6 +66,12 @@ public:
|
||||
QPointF point;
|
||||
};
|
||||
|
||||
struct SnapImage
|
||||
{
|
||||
QPainterPath imagePath;
|
||||
QImage image;
|
||||
};
|
||||
|
||||
/// Adds page media box. Media box must be in page coordinates.
|
||||
/// \param mediaBox Media box
|
||||
void addPageMediaBox(const QRectF& mediaBox);
|
||||
@ -71,7 +80,8 @@ public:
|
||||
/// points are defined - four corners and center.
|
||||
/// \param points Four corner points in clockwise order, fifth point is center,
|
||||
/// all in page coordinates.
|
||||
void addImage(const std::array<QPointF, 5>& points);
|
||||
/// \param image Image
|
||||
void addImage(const std::array<QPointF, 5>& points, const QImage& image);
|
||||
|
||||
/// Adds line and line center points
|
||||
/// \param start Start point of line, in page coordinates
|
||||
@ -84,9 +94,14 @@ public:
|
||||
/// Returns lines
|
||||
const std::vector<QLineF>& getLines() const { return m_snapLines; }
|
||||
|
||||
/// Returns snap images (together with painter path in page coordinates,
|
||||
/// in which image is painted).
|
||||
const std::vector<SnapImage>& getSnapImages() const { return m_snapImages; }
|
||||
|
||||
private:
|
||||
std::vector<SnapPoint> m_snapPoints;
|
||||
std::vector<QLineF> m_snapLines;
|
||||
std::vector<SnapImage> m_snapImages;
|
||||
};
|
||||
|
||||
/// Snap engine, which handles snapping of points on the page.
|
||||
@ -95,6 +110,18 @@ class PDFSnapper
|
||||
public:
|
||||
PDFSnapper();
|
||||
|
||||
struct ViewportSnapPoint : public PDFSnapInfo::SnapPoint
|
||||
{
|
||||
QPointF viewportPoint;
|
||||
PDFInteger pageIndex;
|
||||
};
|
||||
|
||||
struct ViewportSnapImage : public PDFSnapInfo::SnapImage
|
||||
{
|
||||
PDFInteger pageIndex;
|
||||
QPainterPath viewportPath;
|
||||
};
|
||||
|
||||
/// Sets snap point pixel size
|
||||
/// \param snapPointPixelSize Snap point diameter in pixels
|
||||
void setSnapPointPixelSize(int snapPointPixelSize) { m_snapPointPixelSize = snapPointPixelSize; }
|
||||
@ -111,7 +138,7 @@ public:
|
||||
/// \param pageIndex Page index to be tested for allowing snapping
|
||||
bool isSnappingAllowed(PDFInteger pageIndex) const;
|
||||
|
||||
/// Updates snapped point using given information. If current page is set, it means, we are
|
||||
/// Updates snapped point/image using given information. If current page is set, it means, we are
|
||||
/// using snapping info from current page, and if we are hovering at different page,
|
||||
/// then nothing happens. Otherwise, other page snap info is used to update snapped point.
|
||||
/// If mouse point distance from some snap point is lesser than tolerance, then new snap is set.
|
||||
@ -126,6 +153,10 @@ public:
|
||||
/// \param snapshot Widget snapshot
|
||||
void buildSnapPoints(const PDFWidgetSnapshot& snapshot);
|
||||
|
||||
/// Builds snap images from the widget snapshot.
|
||||
/// \param snapshot Widget snapshot
|
||||
void buildSnapImages(const PDFWidgetSnapshot& snapshot);
|
||||
|
||||
/// Returns current snap point tolerance (while aiming with the mouse cursor,
|
||||
/// when mouse cursor is at most tolerance distance from some snap point,
|
||||
/// it is snapped.
|
||||
@ -138,6 +169,10 @@ public:
|
||||
/// mouse cursor position is returned.
|
||||
QPointF getSnappedPoint() const;
|
||||
|
||||
/// Returns snapped image. If no image is present at mouse cursor, then
|
||||
/// nullptr is returned.
|
||||
const ViewportSnapImage* getSnappedImage() const;
|
||||
|
||||
/// Sets current page index and reference point
|
||||
/// \param pageIndex Page index
|
||||
/// \param pagePoint Page point
|
||||
@ -146,14 +181,10 @@ public:
|
||||
/// Resets reference point (and current page)
|
||||
void clearReferencePoint();
|
||||
|
||||
/// Clears all snapped data, including snap points, images and referenced data.
|
||||
void clear();
|
||||
|
||||
private:
|
||||
|
||||
struct ViewportSnapPoint : public PDFSnapInfo::SnapPoint
|
||||
{
|
||||
QPointF viewportPoint;
|
||||
PDFInteger pageIndex;
|
||||
};
|
||||
|
||||
struct SnappedPoint
|
||||
{
|
||||
PDFInteger pageIndex = -1;
|
||||
@ -161,7 +192,9 @@ private:
|
||||
};
|
||||
|
||||
std::vector<ViewportSnapPoint> m_snapPoints;
|
||||
std::vector<ViewportSnapImage> m_snapImages;
|
||||
std::optional<ViewportSnapPoint> m_snappedPoint;
|
||||
std::optional<ViewportSnapImage> m_snappedImage;
|
||||
QPointF m_mousePoint;
|
||||
std::optional<QPointF> m_referencePoint;
|
||||
PDFInteger m_currentPage = -1;
|
||||
|
@ -709,6 +709,7 @@ PDFToolManager::PDFToolManager(PDFDrawWidgetProxy* proxy, Actions actions, QObje
|
||||
m_predefinedTools[SelectTextTool] = new PDFSelectTextTool(proxy, actions.selectTextToolAction, actions.copyTextAction, actions.selectAllAction, actions.deselectAction, this);
|
||||
m_predefinedTools[MagnifierTool] = new PDFMagnifierTool(proxy, actions.magnifierAction, this);
|
||||
m_predefinedTools[ScreenshotTool] = new PDFScreenshotTool(proxy, actions.screenshotToolAction, this);
|
||||
m_predefinedTools[ExtractImageTool] = new PDFExtractImageTool(proxy, actions.extractImageAction, this);
|
||||
|
||||
for (PDFWidgetTool* tool : m_predefinedTools)
|
||||
{
|
||||
@ -952,12 +953,12 @@ PDFPickTool::PDFPickTool(PDFDrawWidgetProxy* proxy, PDFPickTool::Mode mode, QObj
|
||||
m_mode(mode),
|
||||
m_pageIndex(-1)
|
||||
{
|
||||
setCursor(Qt::BlankCursor);
|
||||
setCursor((m_mode == Mode::Images) ? Qt::CrossCursor : Qt::BlankCursor);
|
||||
m_snapper.setSnapPointPixelSize(PDFWidgetUtils::scaleDPI_x(proxy->getWidget(), 10));
|
||||
m_snapper.setSnapPointTolerance(m_snapper.getSnapPointPixelSize());
|
||||
|
||||
connect(proxy, &PDFDrawWidgetProxy::drawSpaceChanged, this, &PDFPickTool::buildSnapPoints);
|
||||
connect(proxy, &PDFDrawWidgetProxy::pageImageChanged, this, &PDFPickTool::buildSnapPoints);
|
||||
connect(proxy, &PDFDrawWidgetProxy::drawSpaceChanged, this, &PDFPickTool::buildSnapData);
|
||||
connect(proxy, &PDFDrawWidgetProxy::pageImageChanged, this, &PDFPickTool::buildSnapData);
|
||||
}
|
||||
|
||||
void PDFPickTool::drawPage(QPainter* painter,
|
||||
@ -988,26 +989,37 @@ void PDFPickTool::drawPage(QPainter* painter,
|
||||
painter->fillRect(selectionRectangle, selectionColor);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_mode == Mode::Images && m_snapper.getSnappedImage())
|
||||
{
|
||||
const PDFSnapper::ViewportSnapImage* snappedImage = m_snapper.getSnappedImage();
|
||||
QColor selectionColor(Qt::blue);
|
||||
selectionColor.setAlphaF(0.25);
|
||||
painter->fillPath(snappedImage->viewportPath, selectionColor);
|
||||
}
|
||||
}
|
||||
|
||||
void PDFPickTool::drawPostRendering(QPainter* painter, QRect rect) const
|
||||
{
|
||||
m_snapper.drawSnapPoints(painter);
|
||||
if (m_mode != Mode::Images)
|
||||
{
|
||||
m_snapper.drawSnapPoints(painter);
|
||||
|
||||
QPoint snappedPoint = m_snapper.getSnappedPoint().toPoint();
|
||||
QPoint hleft = snappedPoint;
|
||||
QPoint hright = snappedPoint;
|
||||
QPoint vtop = snappedPoint;
|
||||
QPoint vbottom = snappedPoint;
|
||||
QPoint snappedPoint = m_snapper.getSnappedPoint().toPoint();
|
||||
QPoint hleft = snappedPoint;
|
||||
QPoint hright = snappedPoint;
|
||||
QPoint vtop = snappedPoint;
|
||||
QPoint vbottom = snappedPoint;
|
||||
|
||||
hleft.setX(0);
|
||||
hright.setX(rect.width());
|
||||
vtop.setY(0);
|
||||
vbottom.setY(rect.height());
|
||||
hleft.setX(0);
|
||||
hright.setX(rect.width());
|
||||
vtop.setY(0);
|
||||
vbottom.setY(rect.height());
|
||||
|
||||
painter->setPen(Qt::black);
|
||||
painter->drawLine(hleft, hright);
|
||||
painter->drawLine(vtop, vbottom);
|
||||
painter->setPen(Qt::black);
|
||||
painter->drawLine(hleft, hright);
|
||||
painter->drawLine(vtop, vbottom);
|
||||
}
|
||||
}
|
||||
|
||||
void PDFPickTool::mousePressEvent(QWidget* widget, QMouseEvent* event)
|
||||
@ -1017,41 +1029,52 @@ void PDFPickTool::mousePressEvent(QWidget* widget, QMouseEvent* event)
|
||||
|
||||
if (event->button() == Qt::LeftButton)
|
||||
{
|
||||
// Try to perform pick
|
||||
QPointF pagePoint;
|
||||
PDFInteger pageIndex = getProxy()->getPageUnderPoint(m_snapper.getSnappedPoint().toPoint(), &pagePoint);
|
||||
if (pageIndex != -1 && // We have picked some point on page
|
||||
(m_pageIndex == -1 || m_pageIndex == pageIndex)) // We are under current page
|
||||
if (m_mode != Mode::Images)
|
||||
{
|
||||
m_pageIndex = pageIndex;
|
||||
m_pickedPoints.push_back(pagePoint);
|
||||
m_snapper.setReferencePoint(pageIndex, pagePoint);
|
||||
|
||||
// Emit signal about picked point
|
||||
emit pointPicked(pageIndex, pagePoint);
|
||||
|
||||
if (m_mode == Mode::Rectangles && m_pickedPoints.size() == 2)
|
||||
// Try to perform pick point
|
||||
QPointF pagePoint;
|
||||
PDFInteger pageIndex = getProxy()->getPageUnderPoint(m_snapper.getSnappedPoint().toPoint(), &pagePoint);
|
||||
if (pageIndex != -1 && // We have picked some point on page
|
||||
(m_pageIndex == -1 || m_pageIndex == pageIndex)) // We are under current page
|
||||
{
|
||||
QPointF first = m_pickedPoints.front();
|
||||
QPointF second = m_pickedPoints.back();
|
||||
m_pageIndex = pageIndex;
|
||||
m_pickedPoints.push_back(pagePoint);
|
||||
m_snapper.setReferencePoint(pageIndex, pagePoint);
|
||||
|
||||
const qreal xMin = qMin(first.x(), second.x());
|
||||
const qreal xMax = qMax(first.x(), second.x());
|
||||
const qreal yMin = qMin(first.y(), second.y());
|
||||
const qreal yMax = qMax(first.y(), second.y());
|
||||
// Emit signal about picked point
|
||||
emit pointPicked(pageIndex, pagePoint);
|
||||
|
||||
QRectF pageRectangle(xMin, yMin, xMax - xMin, yMax - yMin);
|
||||
emit rectanglePicked(pageIndex, pageRectangle);
|
||||
if (m_mode == Mode::Rectangles && m_pickedPoints.size() == 2)
|
||||
{
|
||||
QPointF first = m_pickedPoints.front();
|
||||
QPointF second = m_pickedPoints.back();
|
||||
|
||||
// We must reset tool, to pick next rectangle
|
||||
resetTool();
|
||||
const qreal xMin = qMin(first.x(), second.x());
|
||||
const qreal xMax = qMax(first.x(), second.x());
|
||||
const qreal yMin = qMin(first.y(), second.y());
|
||||
const qreal yMax = qMax(first.y(), second.y());
|
||||
|
||||
QRectF pageRectangle(xMin, yMin, xMax - xMin, yMax - yMin);
|
||||
emit rectanglePicked(pageIndex, pageRectangle);
|
||||
|
||||
// We must reset tool, to pick next rectangle
|
||||
resetTool();
|
||||
}
|
||||
|
||||
buildSnapData();
|
||||
getProxy()->repaintNeeded();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Try to perform pick image
|
||||
if (const PDFSnapper::ViewportSnapImage* snappedImage = m_snapper.getSnappedImage())
|
||||
{
|
||||
emit imagePicked(snappedImage->image);
|
||||
}
|
||||
|
||||
buildSnapPoints();
|
||||
getProxy()->repaintNeeded();
|
||||
}
|
||||
}
|
||||
else if (event->button() == Qt::RightButton)
|
||||
else if (event->button() == Qt::RightButton && m_mode != Mode::Images)
|
||||
{
|
||||
// Reset tool to enable new picking (right button means reset the tool)
|
||||
resetTool();
|
||||
@ -1083,13 +1106,14 @@ void PDFPickTool::setActiveImpl(bool active)
|
||||
|
||||
if (active)
|
||||
{
|
||||
buildSnapPoints();
|
||||
buildSnapData();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Reset tool to reinitialize it for future use. If tool
|
||||
// is activated, then it should be in initial state.
|
||||
resetTool();
|
||||
m_snapper.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1099,18 +1123,27 @@ void PDFPickTool::resetTool()
|
||||
m_pageIndex = -1;
|
||||
m_snapper.clearReferencePoint();
|
||||
|
||||
buildSnapPoints();
|
||||
buildSnapData();
|
||||
getProxy()->repaintNeeded();
|
||||
}
|
||||
|
||||
void PDFPickTool::buildSnapPoints()
|
||||
void PDFPickTool::buildSnapData()
|
||||
{
|
||||
if (!isActive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_snapper.buildSnapPoints(getProxy()->getSnapshot());
|
||||
if (m_mode == Mode::Images)
|
||||
{
|
||||
// Snap images
|
||||
m_snapper.buildSnapImages(getProxy()->getSnapshot());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Snap points
|
||||
m_snapper.buildSnapPoints(getProxy()->getSnapshot());
|
||||
}
|
||||
}
|
||||
|
||||
PDFScreenshotTool::PDFScreenshotTool(PDFDrawWidgetProxy* proxy, QAction* action, QObject* parent) :
|
||||
@ -1143,4 +1176,33 @@ void PDFScreenshotTool::onRectanglePicked(PDFInteger pageIndex, QRectF pageRecta
|
||||
}
|
||||
}
|
||||
|
||||
PDFExtractImageTool::PDFExtractImageTool(PDFDrawWidgetProxy* proxy, QAction* action, QObject* parent) :
|
||||
BaseClass(proxy, action, parent),
|
||||
m_pickTool(nullptr)
|
||||
{
|
||||
m_pickTool = new PDFPickTool(proxy, PDFPickTool::Mode::Images, this);
|
||||
addTool(m_pickTool);
|
||||
connect(m_pickTool, &PDFPickTool::imagePicked, this, &PDFExtractImageTool::onImagePicked);
|
||||
}
|
||||
|
||||
void PDFExtractImageTool::updateActions()
|
||||
{
|
||||
// Jakub Melka: We do not call base class implementation here, because
|
||||
// we must verify we have right to extract content (this tool extracts content)
|
||||
|
||||
if (QAction* action = getAction())
|
||||
{
|
||||
action->setChecked(isActive());
|
||||
action->setEnabled(getDocument() && getDocument()->getStorage().getSecurityHandler()->isAllowed(PDFSecurityHandler::Permission::CopyContent));
|
||||
}
|
||||
}
|
||||
|
||||
void PDFExtractImageTool::onImagePicked(const QImage& image)
|
||||
{
|
||||
if (!image.isNull())
|
||||
{
|
||||
QApplication::clipboard()->setImage(image, QClipboard::Clipboard);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace pdf
|
||||
|
@ -308,13 +308,14 @@ public:
|
||||
signals:
|
||||
void pointPicked(PDFInteger pageIndex, QPointF pagePoint);
|
||||
void rectanglePicked(PDFInteger pageIndex, QRectF pageRectangle);
|
||||
void imagePicked(const QImage& image);
|
||||
|
||||
protected:
|
||||
virtual void setActiveImpl(bool active) override;
|
||||
|
||||
private:
|
||||
void resetTool();
|
||||
void buildSnapPoints();
|
||||
void buildSnapData();
|
||||
|
||||
Mode m_mode;
|
||||
PDFSnapper m_snapper;
|
||||
@ -345,6 +346,31 @@ private:
|
||||
PDFPickTool* m_pickTool;
|
||||
};
|
||||
|
||||
/// Tool that extracts image from page and copies it to the clipboard,
|
||||
/// using image original size (not zoomed size from widget area)
|
||||
class PDFFORQTLIBSHARED_EXPORT PDFExtractImageTool : public PDFWidgetTool
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
using BaseClass = PDFWidgetTool;
|
||||
|
||||
public:
|
||||
/// Constructs new extract image tool
|
||||
/// \param proxy Draw widget proxy
|
||||
/// \param action Tool activation action
|
||||
/// \param parent Parent object
|
||||
explicit PDFExtractImageTool(PDFDrawWidgetProxy* proxy, QAction* action, QObject* parent);
|
||||
|
||||
protected:
|
||||
virtual void updateActions() override;
|
||||
|
||||
private:
|
||||
void onImagePicked(const QImage& image);
|
||||
|
||||
PDFPickTool* m_pickTool;
|
||||
};
|
||||
|
||||
/// Manager used for managing tools, their activity, availability
|
||||
/// and other settings. It also defines a predefined set of tools,
|
||||
/// available for various purposes (text searching, magnifier tool etc.)
|
||||
@ -366,6 +392,7 @@ public:
|
||||
QAction* copyTextAction = nullptr;
|
||||
QAction* magnifierAction = nullptr;
|
||||
QAction* screenshotToolAction = nullptr;
|
||||
QAction* extractImageAction = nullptr;
|
||||
};
|
||||
|
||||
/// Construct new text search tool
|
||||
@ -385,6 +412,7 @@ public:
|
||||
SelectTextTool,
|
||||
MagnifierTool,
|
||||
ScreenshotTool,
|
||||
ExtractImageTool,
|
||||
ToolEnd
|
||||
};
|
||||
|
||||
|
@ -42,5 +42,6 @@
|
||||
<file>resources/stop.svg</file>
|
||||
<file>resources/magnifier.svg</file>
|
||||
<file>resources/screenshot-tool.svg</file>
|
||||
<file>resources/extract-image.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@ -191,6 +191,7 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget* parent) :
|
||||
ui->mainToolBar->addAction(ui->actionSelectText);
|
||||
ui->mainToolBar->addAction(ui->actionMagnifier);
|
||||
ui->mainToolBar->addAction(ui->actionScreenshot);
|
||||
ui->mainToolBar->addAction(ui->actionExtractImage);
|
||||
|
||||
connect(ui->actionZoom_In, &QAction::triggered, this, [this] { m_pdfWidget->getDrawWidgetProxy()->performOperation(pdf::PDFDrawWidgetProxy::ZoomIn); });
|
||||
connect(ui->actionZoom_Out, &QAction::triggered, this, [this] { m_pdfWidget->getDrawWidgetProxy()->performOperation(pdf::PDFDrawWidgetProxy::ZoomOut); });
|
||||
@ -255,6 +256,7 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget* parent) :
|
||||
actions.copyTextAction = ui->actionCopyText;
|
||||
actions.magnifierAction = ui->actionMagnifier;
|
||||
actions.screenshotToolAction = ui->actionScreenshot;
|
||||
actions.extractImageAction = ui->actionExtractImage;
|
||||
m_toolManager = new pdf::PDFToolManager(m_pdfWidget->getDrawWidgetProxy(), actions, this, this);
|
||||
m_pdfWidget->setToolManager(m_toolManager);
|
||||
updateMagnifierToolSettings();
|
||||
|
@ -88,6 +88,7 @@
|
||||
</property>
|
||||
<addaction name="actionMagnifier"/>
|
||||
<addaction name="actionScreenshot"/>
|
||||
<addaction name="actionExtractImage"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionRendering_Errors"/>
|
||||
<addaction name="separator"/>
|
||||
@ -486,6 +487,18 @@
|
||||
<string>Screenshot</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionExtractImage">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="pdfforqtviewer.qrc">
|
||||
<normaloff>:/resources/extract-image.svg</normaloff>:/resources/extract-image.svg</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Extract Image</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources>
|
||||
|
321
PdfForQtViewer/resources/extract-image.svg
Normal file
321
PdfForQtViewer/resources/extract-image.svg
Normal file
@ -0,0 +1,321 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="30mm"
|
||||
height="30mm"
|
||||
viewBox="0 0 30 30"
|
||||
version="1.1"
|
||||
id="svg5291"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="extract-image.svg">
|
||||
<defs
|
||||
id="defs5285">
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect975"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect967"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect963"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect959"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect891"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 15 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="30 : 15 : 1"
|
||||
inkscape:persp3d-origin="15 : 10 : 1"
|
||||
id="perspective5921" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="15.999999"
|
||||
inkscape:cx="107.4567"
|
||||
inkscape:cy="-24.152196"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2035"
|
||||
inkscape:window-x="-13"
|
||||
inkscape:window-y="-13"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5288">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Melka</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Vrstva 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-267)">
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot5913"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
|
||||
id="flowRegion5915"><rect
|
||||
id="rect5917"
|
||||
width="129.22377"
|
||||
height="91.747108"
|
||||
x="-13.788582"
|
||||
y="-33.515606" /></flowRegion><flowPara
|
||||
id="flowPara5919" /></flowRoot> <rect
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="rect839"
|
||||
width="21.44504"
|
||||
height="17.937128"
|
||||
x="1.964431"
|
||||
y="269.59152" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.5231773,284.72995 -0.099219,-5.32474"
|
||||
id="path845"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 8.7643231,284.79609 8.6320314,279.47135"
|
||||
id="path847"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.310938,284.59766 -0.297656,-5.2586"
|
||||
id="path849"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.4239583,279.40521 -0.8598956,1.32291"
|
||||
id="path851"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.2916669,281.42266 -0.7276042,1.12447"
|
||||
id="path853"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.3578127,283.27474 -1.0914062,1.25677"
|
||||
id="path855"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.4239583,279.40521 1.3229169,1.2237"
|
||||
id="path857"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.2916669,281.42266 1.2567708,1.15755"
|
||||
id="path859"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.3578127,283.27474 1.190625,0.89297"
|
||||
id="path861"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.6320314,279.47135 -0.9591146,1.38907"
|
||||
id="path863"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.6320314,279.47135 0.8598961,1.15756"
|
||||
id="path865"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.6320314,281.4888 -0.8929687,0.89297"
|
||||
id="path867"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.6320314,281.4888 0.8598961,0.79375"
|
||||
id="path869"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.4335939,283.14245 -0.6945312,0.99218"
|
||||
id="path871"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.4335939,283.14245 1.289844,1.25677"
|
||||
id="path873"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.013282,279.33906 -0.727605,1.45521"
|
||||
id="path875"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.013282,279.33906 1.058333,1.35599"
|
||||
id="path877"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.211719,281.22422 -0.777213,1.35599"
|
||||
id="path879"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.211719,281.22422 1.223698,1.38906"
|
||||
id="path881"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.261329,283.2582 -0.859896,1.37253"
|
||||
id="path883"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 11.261329,283.2582 1.637109,1.10795"
|
||||
id="path885"
|
||||
inkscape:connector-curvature="0" />
|
||||
<ellipse
|
||||
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="path887"
|
||||
cx="18.462955"
|
||||
cy="274.27063"
|
||||
rx="2.9352217"
|
||||
ry="2.8194661" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 3.7183874,284.62876 c 0.022905,0.0382 0.046302,0.0772 0.079041,0.0971 0.03274,0.0199 0.071717,0.0199 0.1143279,0.024 0.042611,0.004 0.089399,0.0119 0.1474068,0.0315 0.058007,0.0196 0.1281781,0.0507 0.2068384,0.0661 0.07866,0.0153 0.1644089,0.0153 0.2380693,0.0233 0.07366,0.008 0.1360229,0.0236 0.2142472,0.0352 0.078224,0.0116 0.171785,0.0194 0.34697,0.0507 0.1751849,0.0313 0.4324366,0.0859 0.6860219,0.12081 0.2535852,0.0349 0.5030367,0.0505 0.7758104,0.074 0.2727737,0.0234 0.5690007,0.0546 0.7874224,0.0701 0.2184216,0.0155 0.358738,0.0155 0.5146453,0.0155 0.1559074,0 0.3274052,0 0.8185131,0 0.4911078,0 1.3018252,0 1.8043855,0.0158 0.50256,0.0158 0.697449,0.0469 0.826312,0.0623 0.128862,0.0154 0.191224,0.0154 0.257482,0.0154 0.06626,0 0.136421,0 0.237761,0 0.101339,0 0.23386,0 0.323508,0 0.08965,0 0.136418,0 0.183191,0 0.04677,0 0.09354,0 0.13275,-0.004 0.03921,-0.004 0.07039,-0.0121 0.101338,-0.0156 0.03095,-0.004 0.06213,-0.004 0.09741,-0.008 0.03528,-0.004 0.07425,-0.012 0.116931,-0.0156 0.04268,-0.004 0.08945,-0.004 0.128679,-0.0122 0.03923,-0.009 0.07041,-0.0242 0.132518,-0.0312 0.06211,-0.007 0.155649,-0.007 0.222132,-0.0196 0.06648,-0.0126 0.105462,-0.036 0.155909,-0.0468 0.05045,-0.0108 0.112809,-0.0108 0.171538,-0.0231 0.05873,-0.0124 0.1133,-0.0358 0.15201,-0.0468 0.03871,-0.011 0.0621,-0.011 0.08574,-0.0154 0.02364,-0.004 0.04703,-0.0122 0.07795,-0.0156 0.03092,-0.003 0.0699,-0.003 0.109004,-0.0201 0.0391,-0.0167 0.0781,-0.0479 0.101348,-0.0623 0.02325,-0.0144 0.03105,-0.0144 0.04664,-0.0144 0.01559,0 0.03898,0 0.08186,0 0.04288,0 0.105236,0 0.226064,0 0.120829,0 0.300122,0 0.41705,0 0.116929,0 0.1715,0 0.214376,0 0.04288,0 0.07406,0 0.09744,0 0.02338,0 0.03897,0 0.05482,-0.005 0.01585,-0.005 0.03144,-0.0125 0.07015,-0.0156 0.03872,-0.003 0.101082,-0.003 0.186831,-0.003 0.08575,0 0.194884,0 0.417052,0 0.222168,0 0.557368,0 0.791229,0 0.233861,0 0.366382,0 0.45603,0 0.08965,0 0.136417,0 0.163701,0 0.02728,0 0.03508,0 0.04288,0 0.0078,0 0.0156,0 0.02338,-0.005 0.0078,-0.005 0.01558,-0.013 0.02729,-0.0156 0.01171,-0.003 0.0273,-0.003 0.05068,-0.0195 0.02338,-0.0169 0.05458,-0.0481 0.08205,-0.0712 0.02747,-0.0231 0.05086,-0.0387 0.07431,-0.0499 0.02345,-0.0112 0.04684,-0.019 0.06137,-0.0356 0.01453,-0.0166 0.02233,-0.04 0.03872,-0.0502 0.01639,-0.0101 0.03978,-0.0101 0.05536,-0.0153 0.01558,-0.005 0.02338,-0.013 0.03534,-0.0203 0.01196,-0.007 0.02755,-0.0151 0.05484,-0.0266 0.02729,-0.0115 0.06627,-0.0271 0.10134,-0.0429 0.03507,-0.0157 0.06625,-0.0313 0.08548,-0.0384 0.01923,-0.007 0.02703,-0.007 0.03482,-0.0122 0.0078,-0.005 0.01558,-0.013 0.02729,-0.0156 0.01171,-0.003 0.0273,-0.003 0.05068,-0.003 0.02338,0 0.05457,0 0.09354,0 0.03898,0 0.08575,0 0.116928,0 0.03118,0 0.04677,0 0.06975,0.004 0.02298,0.004 0.05418,0.0119 0.08965,0.0156 0.03547,0.004 0.07445,0.004 0.104601,0.0117 0.03015,0.008 0.05354,0.0236 0.07016,0.0312 0.01662,0.008 0.02442,0.008 0.0435,0.0117 0.01908,0.004 0.05029,0.0119 0.09356,0.0156 0.04327,0.004 0.09784,0.004 0.147707,0.0156 0.04987,0.012 0.09664,0.0354 0.13642,0.0468 0.03978,0.0114 0.07096,0.0114 0.106038,0.0114 0.03507,0 0.07406,0 0.179292,0 0.105238,0 0.276735,0 0.389766,0 0.113031,0 0.167602,0 0.206578,0 0.03898,0 0.06237,0 0.07796,0 0.01559,0 0.02339,0 0.04247,0.004 0.01908,0.004 0.05029,0.0119 0.08106,0.0237 0.03077,0.0117 0.06195,0.0273 0.09783,0.0349 0.03588,0.008 0.07486,0.008 0.09688,0.0114 0.02202,0.004 0.02987,0.0117 0.05365,0.0276 0.02378,0.0158 0.06275,0.0392 0.113976,0.0588 0.05122,0.0195 0.113583,0.0351 0.151644,0.0505 0.03806,0.0154 0.0536,0.0309 0.08893,0.0584 0.03533,0.0275 0.08991,0.0665 0.120809,0.0896 0.03089,0.0232 0.03874,0.031 0.06314,0.039 0.0244,0.008 0.0634,0.0158 0.09333,0.0386 0.02993,0.0228 0.05333,0.0618 0.07437,0.0817 0.02105,0.0199 0.03664,0.0199 0.05557,0.024 0.01893,0.004 0.04235,0.012 0.09201,0.0776 0.04966,0.0656 0.127614,0.19036 0.178267,0.27217 0.05065,0.0818 0.07405,0.1208 0.08598,0.15493 0.01193,0.0341 0.01193,0.0653 0.02391,0.0902 0.01199,0.0249 0.03537,0.0405 0.04677,0.0546 0.0114,0.014 0.0114,0.0297 0.02386,0.043 0.01246,0.0133 0.03588,0.0211 0.0577,0.0284"
|
||||
id="path889"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:path-effect="#path-effect891"
|
||||
inkscape:original-d="m 3.7183874,284.62876 c 0.026032,0.0363 0.049418,0.0753 0.070158,0.11693 0.041623,-0.003 0.0806,-0.003 0.1169305,0 0.049418,0.005 0.09619,0.0129 0.1403164,0.0234 0.072804,0.0285 0.1429624,0.0597 0.2104748,0.0935 0.088395,-0.003 0.1741437,-0.003 0.2572469,0 0.065009,0.0129 0.1273715,0.0285 0.1870888,0.0468 0.09619,0.005 0.1897342,0.013 0.2806329,0.0234 0.2598928,0.0519 0.5171398,0.10649 0.7717406,0.1637 0.2520977,0.0129 0.5015492,0.0285 0.7483549,0.0468 0.2988697,0.0285 0.5950932,0.0597 0.8886711,0.0935 0.1429624,-0.003 0.2832788,-0.003 0.4209495,0 0.174144,-0.003 0.3456418,-0.003 0.5144939,0 0.8133636,-0.003 1.624081,-0.003 2.4321533,0 0.19753,0.0285 0.392414,0.0597 0.584652,0.0935 0.06501,-0.003 0.127372,-0.003 0.187089,0 0.0728,-0.003 0.142962,-0.003 0.210474,0 0.135167,-0.003 0.267688,-0.003 0.397564,0 0.04942,-0.003 0.09619,-0.003 0.140316,0 0.04942,-0.003 0.09619,-0.003 0.140317,0 0.03383,-0.0104 0.06501,-0.0182 0.09354,-0.0234 0.03383,-0.003 0.06501,-0.003 0.09354,0 0.04162,-0.0104 0.0806,-0.0182 0.116931,-0.0234 0.04942,-0.003 0.09619,-0.003 0.140316,0 0.03383,-0.0182 0.06501,-0.0338 0.09354,-0.0468 0.09619,-0.003 0.189734,-0.003 0.280633,0 0.04162,-0.026 0.0806,-0.0494 0.11693,-0.0702 0.06501,-0.003 0.127372,-0.003 0.187089,0 0.05721,-0.026 0.111781,-0.0494 0.163702,-0.0702 0.02603,-0.003 0.04942,-0.003 0.07016,0 0.02603,-0.0104 0.04942,-0.0182 0.07016,-0.0234 0.04162,-0.003 0.0806,-0.003 0.11693,0 0.04162,-0.0338 0.0806,-0.065 0.116931,-0.0935 0.01044,-0.003 0.01824,-0.003 0.02339,0 0.02603,-0.003 0.04942,-0.003 0.07016,0 0.06501,-0.003 0.127371,-0.003 0.187088,0 0.18194,-0.003 0.361233,-0.003 0.53788,0 0.05721,-0.003 0.111781,-0.003 0.163703,0 0.03383,-0.003 0.06501,-0.003 0.09354,0 0.01824,-0.003 0.03383,-0.003 0.04677,0 0.01824,-0.0104 0.03383,-0.0182 0.04677,-0.0234 0.06501,-0.003 0.127372,-0.003 0.187089,0 0.111781,-0.003 0.220916,-0.003 0.327405,0 0.337847,-0.003 0.673047,-0.003 1.005602,0 0.135167,-0.003 0.267688,-0.003 0.397563,0 0.04942,-0.003 0.09619,-0.003 0.140317,0 0.01044,-0.003 0.01824,-0.003 0.02339,0 0.01044,-0.003 0.01824,-0.003 0.02339,0 0.01044,-0.0104 0.01824,-0.0182 0.02339,-0.0234 0.01824,-0.003 0.03383,-0.003 0.04677,0 0.03383,-0.0338 0.06501,-0.065 0.09354,-0.0935 0.02603,-0.0182 0.04942,-0.0338 0.07016,-0.0468 0.02603,-0.0104 0.04942,-0.0182 0.07016,-0.0234 0.01044,-0.026 0.01824,-0.0494 0.02339,-0.0702 0.02603,-0.003 0.04942,-0.003 0.07016,0 0.01044,-0.0104 0.01824,-0.0182 0.02339,-0.0234 0.01824,-0.0104 0.03383,-0.0182 0.04677,-0.0234 0.04162,-0.0182 0.0806,-0.0338 0.11693,-0.0468 0.03383,-0.0182 0.06501,-0.0338 0.09355,-0.0468 0.01044,-0.003 0.01824,-0.003 0.02339,0 0.01044,-0.0104 0.01824,-0.0182 0.02339,-0.0234 0.01824,-0.003 0.03383,-0.003 0.04677,0 0.03383,-0.003 0.06501,-0.003 0.09354,0 0.04942,-0.003 0.09619,-0.003 0.140317,0 0.01824,-0.003 0.03383,-0.003 0.04677,0 0.03383,0.005 0.06501,0.0129 0.09354,0.0234 0.04162,-0.003 0.0806,-0.003 0.116931,0 0.02603,0.0129 0.04942,0.0285 0.07016,0.0468 0.01044,-0.003 0.01824,-0.003 0.02339,0 0.03383,0.005 0.06501,0.0129 0.09355,0.0234 0.05721,-0.003 0.111781,-0.003 0.163702,0 0.04942,0.0207 0.09619,0.0441 0.140317,0.0702 0.03383,-0.003 0.06501,-0.003 0.09354,0 0.04162,-0.003 0.0806,-0.003 0.116931,0 0.174144,-0.003 0.345641,-0.003 0.514493,0 0.05721,-0.003 0.111781,-0.003 0.163703,0 0.02603,-0.003 0.04942,-0.003 0.07016,0 0.01044,-0.003 0.01824,-0.003 0.02339,0 0.03383,0.005 0.06501,0.0129 0.09354,0.0234 0.03383,0.0129 0.06501,0.0285 0.09354,0.0468 0.04162,-0.003 0.0806,-0.003 0.11693,0 0.01044,0.005 0.01824,0.0129 0.02339,0.0234 0.04162,0.0207 0.0806,0.0441 0.11693,0.0702 0.06501,0.0129 0.127372,0.0285 0.187089,0.0468 0.01824,0.013 0.03383,0.0285 0.04677,0.0468 0.05721,0.0363 0.111781,0.0753 0.163703,0.11693 0.01044,0.005 0.01824,0.0129 0.02339,0.0234 0.04162,0.005 0.0806,0.0129 0.116931,0.0234 0.02603,0.0363 0.04942,0.0753 0.07016,0.11693 0.01824,-0.003 0.03383,-0.003 0.04677,0 0.02603,0.005 0.04942,0.0129 0.07016,0.0234 0.0806,0.12208 0.158553,0.2468 0.233861,0.37417 0.02603,0.0363 0.04942,0.0753 0.07016,0.11693 0.0026,0.0285 0.0026,0.0597 0,0.0935 0.02603,0.0129 0.04942,0.0285 0.07016,0.0468 0.0026,0.0129 0.0026,0.0285 0,0.0468 0.02603,0.005 0.04942,0.0129 0.07016,0.0234" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 3.320824,285.08479 c 0.026032,0 0.049418,0 0.071383,0.0135 0.021965,0.0135 0.045367,0.0408 0.075293,0.0626 0.029926,0.0218 0.065005,0.0374 0.099659,0.0587 0.034655,0.0213 0.06975,0.0486 0.1167167,0.0798 0.046967,0.0313 0.1054411,0.0663 0.1579747,0.0994 0.052534,0.0331 0.099321,0.0643 0.1503107,0.0916 0.05099,0.0274 0.1055574,0.0507 0.1659126,0.078 0.060355,0.0273 0.1266289,0.0585 0.1927927,0.0916 0.066164,0.0331 0.1324323,0.0682 0.2088421,0.0974 0.07641,0.0292 0.1621589,0.0526 0.2478304,0.078 0.085672,0.0254 0.1714203,0.0527 0.2981264,0.0917 0.1267061,0.039 0.2943147,0.0897 0.4271924,0.11873 0.1328777,0.0291 0.2303278,0.0369 0.3195583,0.0546 0.08923,0.0177 0.171092,0.045 0.255282,0.0624 0.08419,0.0174 0.1699477,0.0252 0.2498226,0.033 0.079875,0.008 0.1539411,0.0156 0.2119728,0.0275 0.058032,0.0118 0.1009067,0.0274 0.1443693,0.035 0.043463,0.008 0.086338,0.008 0.1487004,0.008 0.062363,0 0.1442141,0 0.1948844,0 0.05067,0 0.070157,0 0.080463,0.002 0.010305,0.002 0.014254,0.006 0.019512,0.008 0.00526,0.002 0.00916,0.002 0.016953,0.002 0.00779,0 0.019489,0 0.035345,-0.005 0.015857,-0.005 0.035345,-0.0123 0.056516,-0.0156 0.021171,-0.003 0.044557,-0.003 0.068159,-0.005 0.023602,-0.002 0.046907,-0.006 0.06622,-0.008 0.019314,-0.002 0.034903,-0.002 0.066084,-0.002 0.031182,0 0.077954,0 0.1851398,0 0.1071863,0 0.2747866,0 0.397679,-0.004 0.1228925,-0.004 0.2008463,-0.0118 0.2552981,-0.0156 0.054452,-0.004 0.085634,-0.004 0.1304572,-0.004 0.044823,0 0.1032886,0 0.1792933,0 0.076005,0 0.1695492,0 0.2358099,0 0.066261,0 0.1052367,0 0.140117,0.002 0.03488,0.002 0.066075,0.006 0.099398,0.008 0.033323,0.002 0.068402,0.002 0.1226414,0.01 0.054239,0.008 0.1282949,0.0236 0.1966402,0.0352 0.068345,0.0116 0.1307201,0.0194 0.193077,0.0272 0.062357,0.008 0.1247318,0.0156 0.1890498,0.0234 0.064318,0.008 0.1305895,0.0156 0.1946801,0.0274 0.064091,0.0118 0.1264546,0.0274 0.1892136,0.035 0.06276,0.008 0.125121,0.008 0.189254,0.0116 0.06413,0.004 0.130401,0.0118 0.183194,0.0156 0.05279,0.004 0.09177,0.004 0.128802,0.004 0.03703,0 0.0721,0 0.120824,0 0.04872,0 0.111085,0 0.157859,0 0.04677,0 0.07795,0 0.110363,0.008 0.03241,0.008 0.06749,0.0237 0.09939,0.0312 0.0319,0.008 0.05918,0.008 0.08382,0.008"
|
||||
id="path957"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:path-effect="#path-effect959"
|
||||
inkscape:original-d="m 3.320824,285.08479 c 0.026032,-0.003 0.049418,-0.003 0.070158,0 0.026032,0.0246 0.049418,0.0519 0.070158,0.0818 0.037725,0.0129 0.072804,0.0285 0.1052375,0.0468 0.037725,0.0246 0.072804,0.0519 0.1052372,0.0818 0.061111,0.0324 0.1195763,0.0675 0.1753957,0.10524 0.049418,0.0285 0.09619,0.0597 0.1403165,0.0935 0.057213,0.0207 0.1117809,0.0441 0.1637025,0.0702 0.068906,0.0285 0.1351671,0.0597 0.1987817,0.0935 0.068907,0.0324 0.1351671,0.0675 0.1987817,0.10524 0.088395,0.0207 0.174144,0.0441 0.257247,0.0702 0.088395,0.0246 0.1741437,0.0519 0.2572469,0.0819 0.1702462,0.048 0.3378465,0.0987 0.502801,0.15201 0.1000876,0.005 0.1975297,0.0129 0.2923259,0.0234 0.084497,0.0246 0.1663486,0.0519 0.245554,0.0818 0.088395,0.005 0.1741437,0.0129 0.257247,0.0234 0.076702,0.005 0.1507577,0.0129 0.2221677,0.0234 0.04552,0.0129 0.088395,0.0285 0.1286234,0.0468 0.04552,-0.003 0.088395,-0.003 0.1286235,0 0.084497,-0.003 0.1663483,-0.003 0.245554,0 0.022135,-0.003 0.041622,-0.003 0.058465,0 0.00654,10e-4 0.01044,0.005 0.011692,0.0117 0.00654,-0.003 0.010441,-0.003 0.011692,0 0.014338,-0.003 0.026032,-0.003 0.035079,0 0.022135,-0.0104 0.041623,-0.0182 0.058465,-0.0234 0.026032,-0.003 0.049418,-0.003 0.070158,0 0.026032,-0.007 0.049418,-0.0104 0.070158,-0.0117 0.018238,-0.003 0.033827,-0.003 0.046772,0 0.049418,-0.003 0.09619,-0.003 0.1403165,0 0.1702461,-0.003 0.3378464,-0.003 0.5028009,0 0.080599,-0.0104 0.1585529,-0.0182 0.2338607,-0.0234 0.033827,-0.003 0.065009,-0.003 0.093545,0 0.061111,-0.003 0.1195761,-0.003 0.1753955,0 0.09619,-0.003 0.1897345,-0.003 0.2806329,0 0.041623,-0.003 0.080599,-0.003 0.1169305,0 0.033827,0.001 0.065009,0.005 0.093545,0.0117 0.037725,-0.003 0.072804,-0.003 0.1052372,0 0.076702,0.0129 0.1507578,0.0285 0.222168,0.0468 0.065009,0.005 0.1273715,0.0129 0.1870885,0.0234 0.065009,0.005 0.1273717,0.0129 0.1870887,0.0234 0.068907,0.005 0.1351669,0.0129 0.1987817,0.0234 0.065008,0.0129 0.1273717,0.0285 0.1870887,0.0468 0.06501,-0.003 0.127372,-0.003 0.187089,0 0.06891,0.005 0.135167,0.0129 0.198782,0.0234 0.04162,-0.003 0.0806,-0.003 0.11693,0 0.03773,-0.003 0.0728,-0.003 0.105238,0 0.06501,-0.003 0.127371,-0.003 0.187088,0 0.03383,-0.003 0.06501,-0.003 0.09354,0 0.03773,0.0129 0.07281,0.0285 0.105238,0.0468 0.02993,-0.003 0.05721,-0.003 0.08185,0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 19.609232,285.59928 c 0.05089,0.0431 0.101573,0.0859 0.132392,0.11663 0.03082,0.0307 0.04251,0.0502 0.08177,0.0916 0.03926,0.0414 0.105527,0.10374 0.183291,0.19316 0.07776,0.0894 0.167412,0.20634 0.261105,0.31372 0.09369,0.10738 0.191133,0.20483 0.259227,0.2768 0.06809,0.072 0.107088,0.11875 0.148059,0.16559 0.04097,0.0468 0.08386,0.0936 0.109031,0.12259 0.02518,0.029 0.03297,0.0407 0.05136,0.053 0.01839,0.0123 0.04566,0.024 0.06055,0.0314 0.01489,0.007 0.01886,0.0114 0.02272,0.0153 0.0039,0.004 0.0078,0.008 0.0118,0.0118"
|
||||
id="path961"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:path-effect="#path-effect963"
|
||||
inkscape:original-d="m 19.609232,285.59928 c 0.05332,0.0402 0.103985,0.0831 0.152009,0.12863 0.01434,0.0168 0.02603,0.0363 0.03508,0.0585 0.06891,0.0597 0.135166,0.12208 0.198781,0.18709 0.09229,0.11429 0.181939,0.23122 0.26894,0.35079 0.100088,0.0948 0.19753,0.19224 0.292326,0.29233 0.04162,0.0441 0.0806,0.0909 0.116931,0.14031 0.04552,0.0441 0.08839,0.0909 0.128623,0.14032 0.01044,0.009 0.01824,0.0207 0.02339,0.0351 0.02993,0.009 0.05721,0.0207 0.08185,0.0351 0.0065,0.001 0.01044,0.005 0.01169,0.0117 0.0065,10e-4 0.01044,0.005 0.01169,0.0117" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 18.007285,285.66944 c 0.05439,0.0622 0.108971,0.12454 0.145896,0.16919 0.03693,0.0446 0.05643,0.0719 0.09159,0.11495 0.03516,0.043 0.08584,0.10148 0.130816,0.14841 0.04497,0.0469 0.08396,0.082 0.120846,0.1189 0.03688,0.0369 0.07197,0.0759 0.111076,0.11498 0.03911,0.0391 0.08199,0.0781 0.116858,0.11488 0.03486,0.0368 0.06216,0.0719 0.08032,0.0918 0.01816,0.0199 0.02599,0.0238 0.03915,0.0353 0.01316,0.0115 0.0326,0.0309 0.04423,0.0426 0.01163,0.0116 0.0156,0.0156 0.01946,0.0195 0.0039,0.004 0.0078,0.008 0.01307,0.01 0.0052,0.002 0.0092,0.002 0.01043,0.002"
|
||||
id="path965"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:path-effect="#path-effect967"
|
||||
inkscape:original-d="m 18.007285,285.66944 c 0.05721,0.0597 0.111781,0.12208 0.163703,0.18709 0.02213,0.0246 0.04162,0.0519 0.05846,0.0818 0.05332,0.0558 0.103985,0.11429 0.152009,0.1754 0.04162,0.0324 0.0806,0.0675 0.116931,0.10523 0.03772,0.0363 0.0728,0.0753 0.105237,0.11694 0.04552,0.0363 0.0884,0.0753 0.128624,0.11693 0.02993,0.0324 0.05721,0.0675 0.08185,0.10523 0.01044,10e-4 0.01823,0.005 0.02339,0.0117 0.02213,0.0169 0.04162,0.0363 0.05847,0.0585 0.0065,10e-4 0.01044,0.005 0.01169,0.0117 0.0065,0.001 0.01044,0.005 0.01169,0.0117 0.0065,-0.003 0.01044,-0.003 0.01169,0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 3.7183874,284.62876 c -0.04622,0.0476 -0.095074,0.0979 -0.1247472,0.1263 -0.029673,0.0284 -0.040496,0.0338 -0.06012,0.0499 -0.019624,0.016 -0.047201,0.0436 -0.063735,0.0587 -0.016535,0.0151 -0.022045,0.0151 -0.027592,0.0166 -0.00555,0.001 -0.010808,0.007 -0.02168,0.0131 -0.010872,0.006 -0.027258,0.0118 -0.049749,0.0302 -0.022491,0.0184 -0.050068,0.0515 -0.068992,0.0714 -0.018924,0.0199 -0.029747,0.0253 -0.038387,0.0304 -0.00864,0.005 -0.013901,0.0103 -0.02279,0.0239 -0.00889,0.0136 -0.0199,0.0356 -0.035569,0.0529 -0.01567,0.0173 -0.037865,0.0284 -0.05271,0.0414 -0.014845,0.013 -0.020347,0.0295 -0.025104,0.0408 -0.00476,0.0113 -0.010019,0.0166 -0.014187,0.0277 -0.00417,0.0111 -0.00417,0.0276 -0.00564,0.0387 -0.00147,0.0111 -0.00673,0.0163 -0.010898,0.0302 -0.00417,0.0139 -0.00417,0.0359 -0.011117,0.0552 -0.00695,0.0193 -0.023468,0.0358 -0.033064,0.0579 -0.0096,0.022 -0.0096,0.0496 -0.011065,0.0662 -0.00147,0.0166 -0.00673,0.0218 -0.010899,0.0357 -0.00417,0.0139 -0.00417,0.036 -0.00667,0.0633 -0.0025,0.0273 -0.00802,0.0604 -0.011027,0.0937 -0.00301,0.0332 -0.00301,0.0663 -0.00696,0.0861 -0.00395,0.0198 -0.014777,0.0252 -0.021948,0.0303 -0.00717,0.005 -0.00717,0.0101 -0.00717,0.0158 0,0.006 0,0.0107 0,0.0247 0,0.014 0,0.036 0,0.0498 0,0.0138 0,0.0188 0,0.0246 0,0.006 0,0.0107 -0.0045,0.0217 -0.0045,0.011 -0.015506,0.0275 -0.022041,0.0388 -0.00653,0.0113 -0.00653,0.0163 -0.00653,0.033 0,0.0167 0,0.0443 0,0.0609 0,0.0166 0,0.0216 0,0.0273 0,0.006 0,0.0108 -0.00147,0.0165 -0.00147,0.006 -0.00673,0.011 -0.010899,0.0276 -0.00417,0.0166 -0.00417,0.0442 -0.00605,0.0631 -0.00189,0.0189 -0.00754,0.0302 -0.011097,0.047 -0.00355,0.0168 -0.00355,0.0388 -0.00765,0.0553 -0.00409,0.0164 -0.0153,0.0277 -0.02214,0.0414 -0.00684,0.0138 -0.00684,0.0303 -0.011561,0.0493 -0.00472,0.019 -0.015731,0.041 -0.022042,0.0577 -0.00631,0.0166 -0.00631,0.028 -0.010404,0.039 -0.00409,0.0109 -0.0153,0.0222 -0.02214,0.0359 -0.00684,0.0138 -0.00684,0.0303 -0.00684,0.0414 0,0.0111 0,0.0161 -0.00147,0.0218 -0.00147,0.006 -0.00673,0.011 -0.013127,0.0218 -0.0064,0.0108 -0.011899,0.0273 -0.016622,0.0372 -0.00472,0.01 -0.010233,0.01 -0.016198,0.0136 -0.00596,0.004 -0.011623,0.0151 -0.018729,0.0293"
|
||||
id="path973"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:path-effect="#path-effect975"
|
||||
inkscape:original-d="m 3.7183874,284.62876 c -0.046192,0.0476 -0.095029,0.0979 -0.1465122,0.1508 -0.00838,0.003 -0.019402,0.008 -0.033073,0.0165 -0.024916,0.0249 -0.052476,0.0525 -0.082682,0.0827 -0.00287,-0.003 -0.00838,-0.003 -0.016536,0 -0.00287,0.003 -0.00838,0.008 -0.016537,0.0165 -0.013891,0.003 -0.030427,0.008 -0.049609,0.0165 -0.024916,0.0304 -0.052476,0.0635 -0.082682,0.0992 -0.00838,0.003 -0.019402,0.008 -0.033073,0.0165 -0.00287,0.003 -0.00838,0.008 -0.016536,0.0165 -0.00838,0.0194 -0.019402,0.0414 -0.033073,0.0661 -0.019402,0.008 -0.041451,0.0194 -0.066146,0.0331 -0.00287,0.0139 -0.00838,0.0304 -0.016536,0.0496 -0.00287,0.003 -0.00838,0.008 -0.016537,0.0165 0.00265,0.0139 0.00265,0.0304 0,0.0496 -0.00287,0.003 -0.00838,0.008 -0.016536,0.0165 0.00265,0.0194 0.00265,0.0414 0,0.0661 -0.013891,0.0139 -0.030427,0.0304 -0.049609,0.0496 0.00265,0.0249 0.00265,0.0525 0,0.0827 -0.00287,0.003 -0.00838,0.008 -0.016536,0.0165 0.00265,0.0194 0.00265,0.0415 0,0.0661 -0.00287,0.0304 -0.00838,0.0635 -0.016536,0.0992 0.00265,0.0304 0.00265,0.0635 0,0.0992 -0.00838,0.003 -0.019402,0.008 -0.033073,0.0165 0.00265,0.003 0.00265,0.008 0,0.0165 0.00265,0.003 0.00265,0.008 0,0.0165 0.00265,0.0194 0.00265,0.0414 0,0.0661 0.00265,0.003 0.00265,0.008 0,0.0165 0.00265,0.003 0.00265,0.008 0,0.0165 -0.00838,0.0139 -0.019402,0.0304 -0.033073,0.0496 0.00265,0.003 0.00265,0.008 0,0.0165 0.00265,0.0249 0.00265,0.0525 0,0.0827 0.00265,0.003 0.00265,0.008 0,0.0165 0.00265,0.003 0.00265,0.008 0,0.0165 -0.00287,0.003 -0.00838,0.008 -0.016536,0.0165 0.00265,0.0249 0.00265,0.0525 0,0.0827 -0.00287,0.008 -0.00838,0.0194 -0.016536,0.0331 0.00265,0.0194 0.00265,0.0414 0,0.0661 -0.00838,0.008 -0.019402,0.0194 -0.033073,0.0331 0.00265,0.0139 0.00265,0.0304 0,0.0496 -0.00838,0.0194 -0.019402,0.0414 -0.033073,0.0661 0.00265,0.008 0.00265,0.0194 0,0.0331 -0.00838,0.008 -0.019402,0.0194 -0.033073,0.0331 0.00265,0.0139 0.00265,0.0304 0,0.0496 0.00265,0.003 0.00265,0.008 0,0.0165 -0.00287,0.003 -0.00838,0.008 -0.016536,0.0165 -0.00287,0.0139 -0.00838,0.0304 -0.016536,0.0496 -0.00287,-0.003 -0.00838,-0.003 -0.016537,0 -0.00287,0.008 -0.00838,0.0194 -0.016536,0.0331" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 17.164845,288.93021 6.746875,2.4474 -3.208073,0.76067 -0.529167,2.64584 -3.009635,-5.72162"
|
||||
id="path981"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 20.703647,292.13828 4.57671,3.90289"
|
||||
id="path983"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 31 KiB |
Loading…
x
Reference in New Issue
Block a user