15#include <QDomDocument>
19#include <QScopedPointer>
119 newShapes.append(sh->cloneShape());
147 if (shape->coordIsClear(coord) ==
true) {
166 shape->paint(painter);
181 shape->paintStroke(painter);
188 QPointF centerPoint(viewSize*0.5, viewSize*0.5);
190 QTransform transform;
191 transform.translate(centerPoint.x(), centerPoint.y());
193 transform.translate(-centerPoint.x(), -centerPoint.y());
195 qreal scale = viewSize/(
maskSize().width());
196 transform.scale(scale, scale);
203 QPointF centerPoint(viewSize*0.5, viewSize*0.5);
205 QTransform transform;
206 qreal scale = viewSize/(
maskSize().width());
207 transform.scale(1/scale, 1/scale);
209 transform.translate(centerPoint.x(), centerPoint.y());
211 transform.translate(-centerPoint.x(), -centerPoint.y());
218 Q_UNUSED(resourcesInterface);
220 if (!dev->isOpen()) dev->open(QIODevice::ReadOnly);
222 d->
data = dev->readAll();
228 warnFlake <<
"Cannot load gamut mask" <<
name() <<
"there is no filename set";
232 if (
d->
data.isNull()) {
234 if (file.size() == 0) {
235 warnFlake <<
"Cannot load gamut mask" <<
name() <<
"there is no data available";
239 file.open(QIODevice::ReadOnly);
240 d->
data = file.readAll();
244 QBuffer buf(&
d->
data);
245 buf.open(QBuffer::ReadOnly);
248 if (!store || store->bad())
return false;
250 bool storeOpened = store->open(
"gamutmask.svg");
251 if (!storeOpened) {
return false; }
254 data.resize(store->size());
255 QByteArray ba = store->read(store->size());
258 if (ba.size() == 0) {
269 if (xmlDocument.isNull()) {
272 <<
" In line: " << errorLine <<
", column: " << errorColumn << Qt::endl
273 <<
" Error message: " << errorMsg << Qt::endl;
274 errorFlake <<
"Parsing error in the main document at line" << errorLine
275 <<
", column" << errorColumn << Qt::endl
276 <<
"Error message: " << errorMsg;
300 if (store->open(
"preview.png")) {
302 previewDev.
open(QIODevice::ReadOnly);
304 QImage preview = QImage();
305 preview.load(&previewDev,
"PNG");
308 (
void)store->close();
327 shapes.append(maskShape->koShape());
336 if (!store || store->
bad())
return false;
342 if (!store->
open(
"gamutmask.svg")) {
347 storeDev.
open(QIODevice::WriteOnly);
355 if (!store->
close()) {
return false; }
358 if (!store->
open(
"preview.png")) {
363 previewDev.
open(QIODevice::WriteOnly);
365 image().save(&previewDev,
"PNG");
366 if (!store->
close()) {
return false; }
384 QMap<QString, QVariant> m =
metadata();
385 return m[
"description"].toString();
420 targetVector.clear();
424 targetVector.append(maskShape);
bool coordIsClear(const QPointF &coord) const
void paintStroke(QPainter &painter)
void paint(QPainter &painter)
The resource type for gamut masks used by the artistic color selector.
void paint(QPainter &painter, bool preview)
QTransform viewToMaskTransform(qreal viewSize)
void setPreviewMaskShapes(QList< KoShape * > shapes)
bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override
QTransform maskToViewTransform(qreal viewSize)
void setMaskShapes(QList< KoShape * > shapes)
KoResourceSP clone() const override
QString defaultFileExtension() const override
void setRotation(int rotation)
void paintStroke(QPainter &painter, bool preview)
void setMaskShapesToVector(QList< KoShape * > shapes, QVector< KoGamutMaskShape * > &targetVector)
void setDescription(QString description)
bool coordIsClear(const QPointF &coord, bool preview)
void setTitle(QString title)
QString description() const
bool saveToDevice(QIODevice *dev) const override
QList< KoShape * > koShapes() const
virtual void paintStroke(QPainter &painter) const
paintStroke paints the shape's stroked outline
static bool compareShapeZIndex(KoShape *s1, KoShape *s2)
QTransform absoluteTransformation() const
virtual void paint(QPainter &painter) const =0
Paint the shape fill The class extending this one is responsible for painting itself....
virtual bool hitTest(const QPointF &position) const
Check if the shape is hit on position.
bool open(OpenMode m) override
static KoStore * createStore(const QString &fileName, Mode mode, const QByteArray &appIdentification=QByteArray(), Backend backend=Auto, bool writeMimetype=true)
bool open(const QString &name)
static QDomDocument createDocumentFromSvg(QIODevice *device, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0)
QString documentTitle() const
QList< KoShape * > parseSvg(const QDomElement &e, QSizeF *fragmentSize=0)
Parses a svg fragment, returning the list of top level child shapes.
void setResolution(const QRectF boundsInPixels, qreal pixelsPerInch)
QString documentDescription() const
Implements exporting shapes to SVG.
void setDocumentDescription(QString description)
bool save(QIODevice &outputDevice, const QSizeF &pageSize)
Writes svg to specified output device.
void setDocumentTitle(QString title)
#define KIS_ASSERT_RECOVER_RETURN_VALUE(cond, val)
typedef void(QOPENGLF_APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer)
QSharedPointer< KoResource > KoResourceSP
QVector< KoGamutMaskShape * > maskShapes
QVector< KoGamutMaskShape * > previewShapes
void setValid(bool valid)
void setName(const QString &name)
void addMetaData(QString key, QVariant value)
store the given key, value pair in the resource
void setImage(const QImage &image)
QMap< QString, QVariant > metadata