Browse Source

Use a menu bar instead of a context menu

tags/v5.0.0^2
ArsenArsen 5 years ago
parent
commit
e258a1c852
No known key found for this signature in database
GPG Key ID: C631EC9C50708CF4
  1. 6
      KShare.pro
  2. 60
      cropeditor/cropscene.cpp
  3. 6
      cropeditor/cropscene.hpp
  4. 14
      cropeditor/drawing/dotitem.cpp
  5. 18
      cropeditor/drawing/dotitem.hpp
  6. 13
      icon.qrc
  7. 11
      icons/NOTICE.md
  8. 1
      icons/accept.svg
  9. 1
      icons/arrow.svg
  10. BIN
      icons/blur.png
  11. 87
      icons/blur.svg
  12. 1
      icons/cancel.svg
  13. 1
      icons/circle.svg
  14. 1
      icons/delete.svg
  15. 1
      icons/erase.svg
  16. 70
      icons/fontsettings.svg
  17. 63
      icons/line.svg
  18. 1
      icons/pencil.svg
  19. 1
      icons/rectangle.svg
  20. 1
      icons/settings.svg
  21. 70
      icons/text.svg

6
KShare.pro

@ -4,12 +4,12 @@
#
#-------------------------------------------------
QT += core gui network widgets
QT += core gui network widgets svg
TARGET = KShare
TEMPLATE = app
CONFIG += c++11
CONFIG += c++11 thread
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
@ -39,7 +39,6 @@ SOURCES += main.cpp\
uploaders/customuploader.cpp \
notifications.cpp \
hotkeying.cpp \
cropeditor/drawing/dotitem.cpp \
cropeditor/settings/brushpenselection.cpp \
cropeditor/drawing/bluritem.cpp \
cropeditor/drawing/pathitem.cpp \
@ -84,7 +83,6 @@ HEADERS += mainwindow.hpp \
notifications.hpp \
hotkeying.hpp \
cropeditor/drawing/drawitem.hpp \
cropeditor/drawing/dotitem.hpp \
cropeditor/settings/brushpenselection.hpp \
cropeditor/drawing/bluritem.hpp \
cropeditor/drawing/pathitem.hpp \

60
cropeditor/cropscene.cpp

@ -11,7 +11,6 @@
#include <QTimer>
#include <cropeditor/drawing/arrowitem.hpp>
#include <cropeditor/drawing/bluritem.hpp>
#include <cropeditor/drawing/dotitem.hpp>
#include <cropeditor/drawing/ellipseitem.hpp>
#include <cropeditor/drawing/eraseritem.hpp>
#include <cropeditor/drawing/lineitem.hpp>
@ -34,18 +33,19 @@ CropScene::CropScene(QObject *parent, QPixmap pixmap)
static_cast<Qt::BrushStyle>(settings::settings().value("brushStyle", static_cast<int>(Qt::SolidPattern)).toInt()));
menu = new QMenuBar;
addDrawingAction(menu, "Dot", [] { return new DotItem; });
addDrawingAction(menu, "Path", [] { return new PathItem; });
addDrawingAction(menu, "Blur", [] { return new BlurItem; });
addDrawingAction(menu, "Straight line", [] { return new LineItem; });
addDrawingAction(menu, "Text", [] { return new TextItem; });
addDrawingAction(menu, "Rectangle", [] { return new RectItem; });
addDrawingAction(menu, "Ellipse", [] { return new EllipseItem; });
addDrawingAction(menu, "Arrow", [] { return new ArrowItem; });
addDrawingAction(menu, "Free draw", ":/icons/pencil.svg", [] { return new PathItem; });
addDrawingAction(menu, "Blur", ":/icons/blur.png", [] { return new BlurItem; });
addDrawingAction(menu, "Straight line", ":/icons/line.svg", [] { return new LineItem; });
addDrawingAction(menu, "Text", ":/icons/text.svg", [] { return new TextItem; });
addDrawingAction(menu, "Rectangle", ":/icons/rectangle.svg", [] { return new RectItem; });
addDrawingAction(menu, "Ellipse", ":/icons/circle.svg", [] { return new EllipseItem; });
addDrawingAction(menu, "Arrow", ":/icons/arrow.svg", [] { return new ArrowItem; });
menu->addSeparator();
addDrawingAction(menu, "Eraser", [] { return new EraserItem; });
QAction *clear = menu->addAction("Clear all drawing");
addDrawingAction(menu, "Eraser", ":/icons/erase.svg", [] { return new EraserItem; });
QAction *clear = menu->addAction("");
clear->setToolTip("Clear all drawing");
clear->setIcon(QIcon(":/icons/delete.svg"));
connect(clear, &QAction::triggered, [&] {
auto its = items();
for (auto i : its) {
@ -66,7 +66,8 @@ CropScene::CropScene(QObject *parent, QPixmap pixmap)
menu->addSeparator();
QAction *settings = new QAction;
settings->setText("Settings");
settings->setToolTip("Settings");
settings->setIcon(QIcon(":/icons/settings.svg"));
menu->addSeparator();
display = menu->addAction(drawingName);
display->setDisabled(true);
@ -75,7 +76,25 @@ CropScene::CropScene(QObject *parent, QPixmap pixmap)
BrushPenSelection(this).exec();
show();
});
QAction *font = menu->addAction("");
font->setIcon(QIcon(":/icons/fontsettings.svg"));
connect(font, &QAction::triggered, this, &CropScene::fontAsk);
menu->addAction(settings);
menu->addSeparator();
QAction *confirm = menu->addAction("");
confirm->setToolTip("Confirm");
confirm->setIcon(QIcon(":/icons/accept.svg"));
connect(confirm, &QAction::triggered, [this] { done(true); });
menu->addAction(confirm);
QAction *cancel = menu->addAction("");
cancel->setToolTip("Cancel");
cancel->setIcon(QIcon(":/icons/cancel.svg"));
connect(cancel, &QAction::triggered, [this] { done(false); });
menu->addAction(cancel);
QPolygonF cursorPoly;
cursorPoly << QPoint(-10, 0) //
<< QPoint(10, 0) //
@ -108,7 +127,6 @@ CropScene::CropScene(QObject *parent, QPixmap pixmap)
hint->setPos(5, 5);
hint->setZValue(2);
hint->setVisible(settings::settings().value("crophint", true).toBool());
connect(menu->addAction("Set Font"), &QAction::triggered, this, &CropScene::fontAsk);
QPolygonF poly;
QRect prect = pixmap.rect();
@ -156,6 +174,7 @@ void CropScene::setDrawingSelection(QString name, std::function<DrawItem *()> dr
drawingSelectionMaker = drawAction;
drawingSelection = drawAction();
drawingName = name;
display->setText(drawingName);
if (drawingSelection)
if (!drawingSelection->init(this)) setDrawingSelection("None", [] { return nullptr; });
}
@ -163,8 +182,7 @@ void CropScene::setDrawingSelection(QString name, std::function<DrawItem *()> dr
QGraphicsItem *CropScene::whichItem(QPointF scenePos) {
for (auto item : items()) {
if (item->sceneBoundingRect().contains(scenePos))
if (item != polyItem && item != rect && item != cursorItem && item->zValue() != -1 && item != proxyMenu)
return item;
if (item != polyItem && item != rect && item != cursorItem && item->zValue() != -1) return item;
}
return nullptr;
}
@ -281,7 +299,7 @@ void CropScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
void CropScene::mousePressEvent(QGraphicsSceneMouseEvent *e) {
if (e->modifiers() & Qt::AltModifier) {
auto item = whichItem(cursorItem->scenePos());
if (item) removeItem(item);
if (item && item != proxyMenu) removeItem(item);
}
QGraphicsScene::mousePressEvent(e);
@ -307,13 +325,13 @@ void CropScene::wheelEvent(QGraphicsSceneWheelEvent *event) {
QGraphicsScene::wheelEvent(event);
}
void CropScene::addDrawingAction(QMenuBar *menu, QString name, std::function<DrawItem *()> item) {
QAction *action = menu->addAction(name);
connect(action, &QAction::triggered, [this, &menu, action, item, name](bool) { setDrawingSelection(name, item); });
void CropScene::addDrawingAction(QMenuBar *menu, QString name, QString icon, std::function<DrawItem *()> item) {
QAction *action = menu->addAction("");
action->setToolTip(name);
action->setIcon(QIcon(icon));
connect(action, &QAction::triggered, [this, menu, action, item, name](bool) { setDrawingSelection(name, item); });
}
static QPoint contextOffset(5, 5);
void CropScene::keyReleaseEvent(QKeyEvent *event) {
if (((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && !drawingSelection) || event->key() == Qt::Key_Escape)
done(event->key() != Qt::Key_Escape);

6
cropeditor/cropscene.hpp

@ -54,11 +54,13 @@ protected:
void wheelEvent(QGraphicsSceneWheelEvent *event) override; // WHEEEEEEL
void keyReleaseEvent(QKeyEvent *e) override;
private slots:
void done(bool notEsc = true);
private:
void updateMag();
void initMagnifierGrid();
void addDrawingAction(QMenuBar *menu, QString name, std::function<DrawItem *()> item);
void done(bool notEsc);
void addDrawingAction(QMenuBar *menu, QString name, QString icon, std::function<DrawItem *()> item);
bool fullscreen;
QPointF cursorPos;
std::function<DrawItem *()> drawingSelectionMaker;

14
cropeditor/drawing/dotitem.cpp

@ -1,14 +0,0 @@
#include "dotitem.hpp"
DotItem::DotItem() {
}
DotItem::~DotItem() {
}
void DotItem::mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene) {
scene->addEllipse(e->pos().x() - 1.5, e->pos().y() - 1.5, 3, 3, scene->pen(), scene->brush())->setPos(scene->cursorPosition());
}
void DotItem::mouseDragEndEvent(QGraphicsSceneMouseEvent *, CropScene *) {
}

18
cropeditor/drawing/dotitem.hpp

@ -1,18 +0,0 @@
#ifndef DOTITEM_HPP
#define DOTITEM_HPP
#include "../cropscene.hpp"
#include "drawitem.hpp"
class DotItem : public DrawItem {
public:
DotItem();
~DotItem();
QString name() {
return "Dots (drag to add)";
}
void mouseDragEvent(QGraphicsSceneMouseEvent *e, CropScene *scene);
void mouseDragEndEvent(QGraphicsSceneMouseEvent *e, CropScene *scene);
};
#endif // DOTITEM_HPP

13
icon.qrc

@ -3,5 +3,18 @@
<file>icons/icon.png</file>
<file>icons/icon.svg</file>
<file>icons/icon.ico</file>
<file>icons/pencil.svg</file>
<file>icons/rectangle.svg</file>
<file>icons/line.svg</file>
<file>icons/text.svg</file>
<file>icons/delete.svg</file>
<file>icons/arrow.svg</file>
<file>icons/circle.svg</file>
<file>icons/settings.svg</file>
<file>icons/fontsettings.svg</file>
<file>icons/erase.svg</file>
<file>icons/blur.png</file>
<file>icons/accept.svg</file>
<file>icons/cancel.svg</file>
</qresource>
</RCC>

11
icons/NOTICE.md

@ -0,0 +1,11 @@
The following icons are from [iconmonstr](https://iconmonstr.com/):
* [pencil.svg](https://iconmonstr.com/pencil-9/)
* [rectangle.svg](https://iconmonstr.com/square-4/)
* [circle.svg](https://iconmonstr.com/circle-2/)
* [arrow.svg](https://iconmonstr.com/arrow-19/)
* [delete.svg](https://iconmonstr.com/x-mark-12/)
* [settings.svg](https://iconmonstr.com/gear-1/)
* [erase.svg](https://iconmonstr.com/x-mark-4/)
* [accept.svg](https://iconmonstr.com/checkbox-21/)
* [cancel.svg](https://iconmonstr.com/x-mark-8/)

1
icons/accept.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm-1.959 17l-4.5-4.319 1.395-1.435 3.08 2.937 7.021-7.183 1.422 1.409-8.418 8.591z"/></svg>

After

Width:  |  Height:  |  Size: 257 B

1
icons/arrow.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12.068.016l-3.717 3.698 5.263 5.286h-13.614v6h13.614l-5.295 5.317 3.718 3.699 11.963-12.016z"/></svg>

After

Width:  |  Height:  |  Size: 194 B

BIN
icons/blur.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

87
icons/blur.svg

@ -0,0 +1,87 @@
<?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="1024"
height="1024"
viewBox="0 0 270.93333 270.93334"
version="1.1"
id="svg8"
sodipodi:docname="TEXT.svg"
inkscape:version="0.92.1 r">
<defs
id="defs2">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Blur"
id="filter8705">
<feGaussianBlur
stdDeviation="20 20"
result="blur"
id="feGaussianBlur8703" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.5"
inkscape:cx="883.00002"
inkscape:cy="511.99997"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1055"
inkscape:window-x="1971"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-26.06665)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:361.58081055px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.03952026"
x="5.47505"
y="298.96558"
id="text4544"
transform="scale(1.0496228,0.95272321)"><tspan
sodipodi:role="line"
id="tspan4542"
x="5.47505"
y="618.87982"
style="stroke-width:9.03952026" /></text>
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:33.86666667;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill;filter:url(#filter8705)"
id="rect6112"
width="237.06667"
height="237.06667"
x="16.933334"
y="42.999985" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

1
icons/cancel.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 3.752l-4.423-3.752-7.771 9.039-7.647-9.008-4.159 4.278c2.285 2.885 5.284 5.903 8.362 8.708l-8.165 9.447 1.343 1.487c1.978-1.335 5.981-4.373 10.205-7.958 4.304 3.67 8.306 6.663 10.229 8.006l1.449-1.278-8.254-9.724c3.287-2.973 6.584-6.354 8.831-9.245z"/></svg>

After

Width:  |  Height:  |  Size: 354 B

1
icons/circle.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12z"/></svg>

After

Width:  |  Height:  |  Size: 250 B

1
icons/delete.svg

@ -0,0 +1 @@
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd"><path d="M7 5h17v16h-17l-7-7.972 7-8.028zm7 6.586l-2.586-2.586-1.414 1.414 2.586 2.586-2.586 2.586 1.414 1.414 2.586-2.586 2.586 2.586 1.414-1.414-2.586-2.586 2.586-2.586-1.414-1.414-2.586 2.586z"/></svg>

After

Width:  |  Height:  |  Size: 307 B

1
icons/erase.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm4.151 17.943l-4.143-4.102-4.117 4.159-1.833-1.833 4.104-4.157-4.162-4.119 1.833-1.833 4.155 4.102 4.106-4.16 1.849 1.849-4.1 4.141 4.157 4.104-1.849 1.849z"/></svg>

After

Width:  |  Height:  |  Size: 332 B

70
icons/fontsettings.svg

@ -0,0 +1,70 @@
<?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="1024"
height="1024"
viewBox="0 0 270.93333 270.93334"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r"
sodipodi:docname="TEXT.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-185.71429"
inkscape:cy="668.06025"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1055"
inkscape:window-x="1971"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-26.06665)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:361.58081055px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.03952026"
x="5.47505"
y="298.96558"
id="text4544"
transform="scale(1.0496228,0.95272321)"><tspan
sodipodi:role="line"
x="5.47505"
y="298.96558"
style="stroke-width:9.03952026"
id="tspan6108">F</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

63
icons/line.svg

@ -0,0 +1,63 @@
<?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="1024"
height="1024"
viewBox="0 0 270.93333 270.93334"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r"
sodipodi:docname="line.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-185.71429"
inkscape:cy="489.32508"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1055"
inkscape:window-x="1971"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-26.06665)">
<path
style="fill:none;stroke:#000000;stroke-width:33.86666667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 251.36911,45.621885 19.564228,277.44475 Z"
id="path4492"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

1
icons/pencil.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M18.363 8.464l1.433 1.431-12.67 12.669-7.125 1.436 1.439-7.127 12.665-12.668 1.431 1.431-12.255 12.224-.726 3.584 3.584-.723 12.224-12.257zm-.056-8.464l-2.815 2.817 5.691 5.692 2.817-2.821-5.693-5.688zm-12.318 18.718l11.313-11.316-.705-.707-11.313 11.314.705.709z"/></svg>

After

Width:  |  Height:  |  Size: 364 B

1
icons/rectangle.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M22 2v20h-20v-20h20zm2-2h-24v24h24v-24z"/></svg>

After

Width:  |  Height:  |  Size: 140 B

1
icons/settings.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 13.616v-3.232c-1.651-.587-2.694-.752-3.219-2.019v-.001c-.527-1.271.1-2.134.847-3.707l-2.285-2.285c-1.561.742-2.433 1.375-3.707.847h-.001c-1.269-.526-1.435-1.576-2.019-3.219h-3.232c-.582 1.635-.749 2.692-2.019 3.219h-.001c-1.271.528-2.132-.098-3.707-.847l-2.285 2.285c.745 1.568 1.375 2.434.847 3.707-.527 1.271-1.584 1.438-3.219 2.02v3.232c1.632.58 2.692.749 3.219 2.019.53 1.282-.114 2.166-.847 3.707l2.285 2.286c1.562-.743 2.434-1.375 3.707-.847h.001c1.27.526 1.436 1.579 2.019 3.219h3.232c.582-1.636.75-2.69 2.027-3.222h.001c1.262-.524 2.12.101 3.698.851l2.285-2.286c-.744-1.563-1.375-2.433-.848-3.706.527-1.271 1.588-1.44 3.221-2.021zm-12 2.384c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z"/></svg>

After

Width:  |  Height:  |  Size: 811 B

70
icons/text.svg

@ -0,0 +1,70 @@
<?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="1024"
height="1024"
viewBox="0 0 270.93333 270.93334"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r"
sodipodi:docname="TEXT.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-185.71429"
inkscape:cy="489.32508"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1055"
inkscape:window-x="1971"
inkscape:window-y="25"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-26.06665)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:339.72497559px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:8.49312496"
x="13.554875"
y="292.58246"
id="text4544"
transform="scale(1.0446886,0.95722304)"><tspan
sodipodi:role="line"
id="tspan4542"
x="13.554875"
y="292.58246"
style="stroke-width:8.49312496">A</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Loading…
Cancel
Save