16#include <QVersionNumber>
142 if (colorspacename ==
"Grayscale + Alpha") {
143 colorspacename =
"GRAYA";
144 profileProductName.clear();
146 else if (colorspacename ==
"RgbAF32") {
147 colorspacename =
"RGBAF32";
148 profileProductName.clear();
150 else if (colorspacename ==
"RgbAF16") {
151 colorspacename =
"RGBAF16";
152 profileProductName.clear();
154 else if (colorspacename ==
"CMYKA16") {
155 colorspacename =
"CMYKAU16";
157 else if (colorspacename ==
"GrayF32") {
158 colorspacename =
"GRAYAF32";
159 profileProductName.clear();
161 else if (colorspacename ==
"GRAYA16") {
162 colorspacename =
"GRAYAU16";
164 else if (colorspacename ==
"XyzAF16") {
165 colorspacename =
"XYZAF16";
166 profileProductName.clear();
168 else if (colorspacename ==
"XyzAF32") {
169 colorspacename =
"XYZAF32";
170 profileProductName.clear();
172 else if (colorspacename ==
"YCbCrA") {
173 colorspacename =
"YCBCRA8";
175 else if (colorspacename ==
"YCbCrAU16") {
176 colorspacename =
"YCBCRAU16";
201 QString profileProductName;
204 QString colorspacename;
214 if ((attr = imageElement.attribute(
WIDTH)).isNull()) {
220 if ((attr = imageElement.attribute(
HEIGHT)).isNull()) {
230 if (!(attr = imageElement.attribute(
X_RESOLUTION)).isNull()) {
239 if (!(attr = imageElement.attribute(
Y_RESOLUTION)).isNull()) {
246 if ((colorspacename = imageElement.attribute(
COLORSPACE_NAME)).isNull()) {
250 colorspacename =
"RGBA";
253 profileProductName = imageElement.attribute(
PROFILE);
260 if (profileProductName.isNull()) {
271 m_d->
errorMessages << i18n(
"Image specifies an unsupported color model: %1.", colorspacename);
279 proofingConfig->proofingProfile = attr;
281 if (proofingConfig && !(attr = imageElement.attribute(
PROOFINGMODEL)).isNull()) {
282 proofingConfig->proofingModel = attr;
284 if (proofingConfig && !(attr = imageElement.attribute(
PROOFINGDEPTH)).isNull()) {
285 proofingConfig->proofingDepth = attr;
287 if (proofingConfig && !(attr = imageElement.attribute(
PROOFINGINTENT)).isNull()) {
294 if (attr ==
"monitor") {
296 }
else if (attr ==
"paper") {
303 proofingConfig->useBlackPointCompensationFirstTransform = (attr ==
"true");
312 proofingConfig->setLegacyAdaptationState(legacyAdaptationState);
326 for (child = imageElement.lastChild(); !child.isNull(); child = child.previousSibling()) {
327 QDomElement e = child.toElement();
331 QByteArray colorData = QByteArray::fromBase64(e.attribute(
COLORBYTEDATA).toLatin1());
352 dom.appendChild(dom.importNode(node,
true));
353 QDomElement eq = dom.firstChildElement();
358 if (e.tagName().toLower() ==
"animation") {
363 if (proofingConfig) {
367 for (child = imageElement.lastChild(); !child.isNull(); child = child.previousSibling()) {
368 QDomElement e = child.toElement();
369 if (e.tagName() ==
"compositions") {
376 for (child = imageElement.lastChild(); !child.isNull(); child = child.previousSibling()) {
377 QDomElement e = child.toElement();
378 if (e.tagName() ==
"grid") {
380 }
else if (e.tagName() ==
"guides") {
384 }
else if (e.tagName() ==
"assistants") {
386 }
else if (e.tagName() ==
"audio") {
392 for (child = imageElement.lastChild(); !child.isNull(); child = child.previousSibling()) {
393 QDomElement e = child.toElement();
395 for (QDomElement paletteElement = e.lastChildElement(); !paletteElement.isNull();
396 paletteElement = paletteElement.previousSiblingElement()) {
397 QString paletteName = paletteElement.attribute(
"filename");
405 for (child = imageElement.lastChild(); !child.isNull(); child = child.previousSibling()) {
406 QDomElement e = child.toElement();
408 for (QDomElement resourceElement = e.lastChildElement();
409 !resourceElement.isNull();
410 resourceElement = resourceElement.previousSiblingElement())
413 resourceItem.
filename = resourceElement.attribute(
"filename");
414 resourceItem.
md5sum = resourceElement.attribute(
"md5sum");
415 resourceItem.
type = resourceElement.attribute(
"type");
416 resourceItem.
name = resourceElement.attribute(
"name");
424 for (child = imageElement.lastChild(); !child.isNull(); child = child.previousSibling()) {
425 QDomElement e = child.toElement();
427 for (QDomElement annotationElement = e.firstChildElement();
428 !annotationElement.isNull();
429 annotationElement = annotationElement.nextSiblingElement())
431 QString type = annotationElement.attribute(
"type");
432 QString description = annotationElement.attribute(
"description");
447 QString location = external ? QString() : uri;
449 if (store->
hasFile(location)) {
450 if (store->
open(location)) {
451 QByteArray data; data.resize(store->
size());
452 bool res = (store->
read(data.data(), store->
size()) > -1);
458 if (profile && profile->
valid()) {
466 location = external ? QString() : uri;
468 if (store->
hasFile(location)) {
469 if (store->
open(location)) {
470 QByteArray proofingData;
471 proofingData.resize(store->
size());
472 bool proofingProfileRes = (store->
read(proofingData.data(), store->
size())>-1);
476 if (!proofingConfig) {
480 if (proofingProfileRes) {
482 if (proofingProfile->
valid()){
507 location = external ? QString() : uri;
509 if (store->
hasFile(location)) {
511 store->
open(location);
519 location = external ? QString() : uri;
521 if (store->
hasFile(location)) {
524 store->
open(location);
527 device.
open(QIODevice::ReadOnly);
533 QByteArray buf = device.readAll();
534 QBuffer raDevice(&buf);
535 raDevice.open(QIODevice::ReadOnly);
545 warnKrita <<
"WARNING: Couldn't load layer styles library from .kra!";
559 location = external ? QString() : uri;
561 if (store->
hasFile(location)) {
562 store->
open(location);
564 device.
open(QIODevice::ReadOnly);
565 ba = device.readAll();
568 annotation->setAnnotation(ba);
582 QByteArray data = store->
read(store->
size());
583 if (data.size() > 0) {
586 list.append(newPalette);
588 m_d->
warningMessages.append(i18nc(
"Warning message on loading a .kra file",
"Embedded palette is empty and cannot be loaded. The name of the palette: %1", filename));
599 m_d->
warningMessages.append(i18nc(
"Warning message on loading a .kra file",
"Embedded resource cannot be read. The filename of the resource: %1", resourceItem.
filename));
608 m_d->
warningMessages.append(i18nc(
"Warning message on loading a .kra file",
"Embedded resource cannot be imported. The filename of the resource: %1", resourceItem.
filename));
622 QByteArray data = store->
read(store->
size());
623 QDomDocument document;
624 document.setContent(data);
627 QDomElement root = document.documentElement();
629 for (node = root.lastChild(); !node.isNull(); node = node.previousSibling()) {
630 if (node.isElement()) {
631 QDomElement element = node.toElement();
632 if (element.tagName() ==
"StoryboardItemList") {
634 }
else if (element.tagName() ==
"StoryboardCommentList") {
647 QByteArray data = store->
read(store->
size());
648 QDomDocument document;
649 document.setContent(data);
652 QDomElement root = document.documentElement();
662 QByteArray byteData = store->
read(store->
size());
663 QDomDocument xmlDocument;
664 xmlDocument.setContent(byteData);
667 QDomElement root = xmlDocument.documentElement();
675 dom.appendChild(dom.importNode(elem,
true));
676 QDomElement qElement = dom.firstChildElement();
679 if (KisDomUtils::loadValue(qElement,
"masterChannelPath", &fileName)) {
680 fileName = QDir::toNativeSeparators(fileName);
683 fileName = QDir::cleanPath( baseDirectory.filePath(fileName) );
685 QFileInfo info(fileName);
687 if (!info.exists()) {
692 "Audio channel file \"%1\" doesn't exist!\n\n"
695 "Do you want to locate it manually?", info.fileName(), info.absoluteFilePath());
697 int result = QMessageBox::warning(qApp->activeWindow(), i18nc(
"@title:window",
"File not found"), msg, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
699 if (result == QMessageBox::Yes) {
709 document->setAudioTracks(clipFiles);
715 qreal audioVolume = 1.0;
716 if (KisDomUtils::loadValue(qElement,
"audioVolume", &audioVolume)) {
717 document->setAudioVolume(audioVolume);
761 QMap<int ,KisPaintingAssistantHandleSP> handleMap;
770 location = external ? QString() : uri;
772 file_path = location + loadedAssistant.key();
773 assistant->
loadXml(store, handleMap, file_path);
788 QDomNode node = element;
789 qDom.appendChild(qDom.importNode(node,
true));
790 QDomElement rootElement = qDom.firstChildElement();
799 if (KisDomUtils::loadValue(rootElement,
"framerate", &framerate)) {
803 if (KisDomUtils::loadValue(rootElement,
"range", &range)) {
807 if (KisDomUtils::loadValue(rootElement,
"currentTime", ¤tTime)) {
812 int initialFrameNumber = -1;
813 QDomElement exportElement = rootElement.firstChildElement(
"export-settings");
814 if (!exportElement.isNull()) {
815 if (KisDomUtils::loadValue(exportElement,
"sequenceFilePath", &
string)) {
819 if (KisDomUtils::loadValue(exportElement,
"sequenceBaseName", &
string)) {
823 if (KisDomUtils::loadValue(exportElement,
"sequenceInitialFrameNumber", &initialFrameNumber)) {
835 QDomNode node = element.firstChild();
838 if (!node.isNull()) {
840 if (node.isElement()) {
845 if (node.nodeName().toUpper() ==
LAYERS.toUpper() || node.nodeName().toUpper() ==
MASKS.toUpper()) {
846 for (child = node.lastChild(); !child.isNull(); child = child.previousSibling()) {
850 topLevelSelectionMasks << node;
856 if (node->inherits(
"KisLayer") && child.
childNodes().count() > 0) {
857 loadNodes(child.toElement(), image, node);
863 Q_FOREACH (
KisNodeSP node, topLevelSelectionMasks) {
866 if (activeSelectionMask) {
867 m_d->
warningMessages << i18n(
"Two global selection masks in active state found. \"%1\" is kept active, \"%2\" is deactivated", activeSelectionMask->
name(), mask->
name());
871 activeSelectionMask = mask;
892 QString name = element.attribute(
NAME,
"No Name");
894 QUuid
id = QUuid(element.attribute(
UUID, QUuid().toString()));
896 qint32 x = element.attribute(
X,
"0").toInt();
897 qint32 y = element.attribute(
Y,
"0").toInt();
905 dbgFile <<
"No attribute color space for layer: " << name;
909 QString profileProductName = element.attribute(
PROFILE);
915 dbgFile <<
"Searching color space: " << colorspacename << colorspaceModel << colorspaceDepth <<
" for layer: " << name;
918 if (profileProductName.isNull()) {
925 dbgFile <<
"found colorspace" << colorSpace;
927 m_d->
warningMessages << i18n(
"Layer %1 specifies an unsupported color model: %2.", name, colorspacename);
932 const bool visible = element.attribute(
VISIBLE,
"1") ==
"0" ? false :
true;
933 const bool locked = element.attribute(
LOCKED,
"0") ==
"0" ? false :
true;
934 const bool collapsed = element.attribute(
COLLAPSED,
"0") ==
"0" ? false :
true;
935 int colorLabelIndex = element.attribute(
COLOR_LABEL,
"0").toInt();
937 if (colorLabelIndex >= labels.size()) {
938 colorLabelIndex = labels.size() - 1;
945 nodeType = element.attribute(
"layertype");
986 node =
loadFileLayer(element, image, name, opacity, colorSpace);
1012 if (node->inherits(
"KisLayer") || node->inherits(
"KisColorizeMask")) {
1013 QString compositeOpName = element.attribute(
COMPOSITE_OP,
"normal");
1021 i18n(
"Layer \"%1\" has blending mode \"%2\" that has changed its "
1022 "behavior for CMYK color in Krita 5.2. Please check the "
1023 "result and consider enabling legacy \"Additive\" algorithm in "
1024 "Settings->Configure Krita->General->Tools->CMYK blending mode",
1029 if (node->inherits(
"KisLayer")) {
1030 KisLayer* layer = qobject_cast<KisLayer*>(node.
data());
1036 QUuid uuid(uuidString);
1037 if (!uuid.isNull()) {
1039 dumbLayerStyle->setUuid(uuid);
1042 warnKrita <<
"WARNING: Layer style for layer" << layer->
name() <<
"contains invalid UUID" << uuidString;
1047 if (node->inherits(
"KisGroupLayer")) {
1056 if (node->inherits(
"KisShapeLayer")) {
1066 const bool timelineEnabled = element.attribute(
VISIBLE_IN_TIMELINE,
"0") ==
"0" ? false :
true;
1069 if (node->inherits(
"KisPaintLayer")) {
1074 bool onionEnabled = element.attribute(
ONION_SKIN_ENABLED,
"0") ==
"0" ? false :
true;
1078 if (element.attribute(
FILE_NAME).isNull()) {
1085 if (element.hasAttribute(
"selected") && element.attribute(
"selected") ==
"true") {
1098 const QString& name,
const KoColorSpace* cs, quint32 opacity)
1111 QString filename = element.attribute(
"source", QString());
1112 if (filename.isNull())
return 0;
1113 bool scale = (element.attribute(
"scale",
"true") ==
"true");
1114 int scalingMethod = element.attribute(
"scalingmethod",
"-1").toInt();
1115 if (scalingMethod < 0) {
1123 QString scalingFilter = element.attribute(
"scalingfilter",
"Bicubic");
1125 QString documentPath;
1129 QFileInfo info(documentPath);
1130 QString basePath = info.absolutePath();
1133 QString fullPath = QDir(basePath).filePath(QDir::cleanPath(filename));
1135 QString fullPath = filename;
1137 if (!QFileInfo(fullPath).exists()) {
1140 QString msg = i18nc(
1142 "The file associated to a file layer with the name \"%1\" is not found.\n\n"
1145 "Do you want to locate it manually?", name, fullPath);
1147 int result = QMessageBox::warning(qApp->activeWindow(), i18nc(
"@title:window",
"File not found"), msg, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
1149 if (result == QMessageBox::Yes) {
1153 dialog.setDefaultDir(basePath);
1154 QString url = dialog.filename();
1156 if (!QFileInfo(basePath).exists()) {
1160 filename = d.relativeFilePath(url);
1172 const QString& name,
const KoColorSpace* cs, quint32 opacity)
1185 const QString& name,
const KoColorSpace* cs, quint32 opacity)
1192 QString legacy = filtername;
1194 if ((filtername = element.attribute(
FILTER_NAME)).isNull()) {
1196 warnFile <<
"No filter in adjustment layer";
1201 if (filtername==
"brightnesscontrast") {
1202 legacy = filtername;
1203 filtername =
"perchannel";
1205 if (filtername==
"left edge detections"
1206 || filtername==
"right edge detections"
1207 || filtername==
"top edge detections"
1208 || filtername==
"bottom edge detections") {
1209 legacy = filtername;
1210 filtername =
"edge detection";
1215 warnFile <<
"No filter for filtername" << filtername <<
"";
1220 kfc->createLocalResourcesSnapshot();
1221 kfc->setProperty(
"legacy", legacy);
1222 if (legacy==
"brightnesscontrast") {
1238 const QString& name,
const KoColorSpace* cs, quint32 opacity)
1258 const QString& name,
const KoColorSpace* cs, quint32 opacity)
1265 if (generatorname.isNull()) {
1267 warnFile <<
"No generator in generator layer";
1273 warnFile <<
"No generator for generatorname" << generatorname <<
"";
1278 kgc->createLocalResourcesSnapshot();
1291 const QString& name,
const KoColorSpace* cs, quint32 opacity)
1301 if ((element.attribute(
CLONE_FROM)).isNull()) {
1307 layer->setCopyFromInfo(info);
1309 if ((element.attribute(
CLONE_TYPE)).isNull()) {
1327 if ((filtername = element.attribute(
FILTER_NAME)).isNull()) {
1329 warnFile <<
"No filter in filter layer";
1335 warnFile <<
"No filter for filtername" << filtername <<
"";
1340 kfc->createLocalResourcesSnapshot();
1378 bool active = element.attribute(
ACTIVE,
"1") ==
"0" ? false :
true;
1417 for (child = elem.firstChild(); !child.isNull(); child = child.nextSibling()) {
1419 QDomElement e = child.toElement();
1420 QString name = e.attribute(
"name");
1421 bool exportEnabled = e.attribute(
"exportEnabled",
"1") ==
"0" ? false :
true;
1424 composition->setExportEnabled(exportEnabled);
1428 QDomElement e =
value.toElement();
1429 QUuid uuid(e.attribute(
"uuid"));
1430 bool visible = e.attribute(
"visible",
"1") ==
"0" ? false :
true;
1431 composition->setVisible(uuid, visible);
1432 bool collapsed = e.attribute(
"collapsed",
"1") ==
"0" ? false :
true;
1433 composition->setCollapsed(uuid, collapsed);
1444 for (child = elem.firstChild(); !child.isNull(); child = child.nextSibling()) {
1445 QDomElement e = child.toElement();
1446 QString type = e.attribute(
"type");
1447 QString file_name = e.attribute(
"filename");
1457 dom.appendChild(dom.importNode(elem,
true));
1458 QDomElement domElement = dom.firstChildElement();
1469 dom.appendChild(dom.importNode(elem,
true));
1470 QDomElement domElement = dom.firstChildElement();
1480 dom.appendChild(dom.importNode(elem,
true));
1481 QDomElement domElement = dom.firstChildElement();
1492 for (child = elem.firstChild(); !child.isNull(); child = child.nextSibling()) {
1493 QDomElement e = child.toElement();
1494 if (e.tagName() ==
"storyboarditem") {
1507 for (child = elem.firstChild(); !child.isNull(); child = child.nextSibling()) {
1508 QDomElement e = child.toElement();
1509 if (e.tagName() ==
"storyboardcomment") {
1511 if (e.hasAttribute(
"visibility")) {
1512 comment.
visibility = e.attribute(
"visibility").toInt();
1514 if (e.hasAttribute(
"name")) {
1515 comment.
name = e.attribute(
"name");
1526 QDomNode audioClip = xmlElement.firstChild();
1527 if (audioClip.nodeName() ==
"audioClips") {
1528 QDomElement audioClipElement = audioClip.toElement();
1532 for (clip = audioClipElement.firstChild(); !clip.isNull(); clip = clip.nextSibling()) {
1533 QDomElement clipElem = clip.toElement();
1535 if (clipElem.hasAttribute(
"filePath")) {
1536 QFileInfo f(clipElem.attribute(
"filePath"));
1542 if (clipElem.hasAttribute(
"volume")) {
1543 volume = clipElem.attribute(
"volume").toDouble();
1559 for (QDomElement child = elem.firstChildElement(); !child.isNull(); child = child.nextSiblingElement()) {
1560 if (child.nodeName().toLower() ==
"referenceimage") {
1562 reference->setZIndex(layer->shapes().size());
1563 layer->addShape(reference);
1573 QDomNodeList colorNodes = colorElement.childNodes();
1574 colors.reserve(colorNodes.size());
1576 for (
int k = 0; k < colorNodes.size(); k++) {
1577 QDomElement colorElement = colorNodes.at(k).toElement();
1579 colors.push_back(color);
float value(const T *src, size_t ch)
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
const KoID Integer16BitsColorDepthID("U16", ki18n("16-bit integer/channel"))
const KoID CMYKAColorModelID("CMYKA", ki18n("CMYK/Alpha"))
QStringList subtractiveBlendingModesInCmyk()
the list of blendmodes that perform channel-inversion in CMYK color space
const quint8 OPACITY_TRANSPARENT_U8
const quint8 OPACITY_OPAQUE_U8
const QString DESCRIPTION
char nodeType(const KoPathPoint *point)
A data extension mechanism for Krita.
void assignAllLayerStylesToLayers(KisNodeSP root, const QString &storageLocation)
void readFromDevice(QIODevice &device)
KisBaseNode::PropertyList sectionModelProperties() const override
void setEdgeDetectionSize(qreal value)
void setLimitToDeviceBounds(bool value)
void setSectionModelProperties(const KisBaseNode::PropertyList &properties) override
void setUseEdgeDetection(bool value)
void setFuzzyRadius(qreal value)
KUndo2Command * setColorSpace(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags(), KoUpdater *progressUpdater=nullptr)
void setCleanUpAmount(qreal value)
The KisCursorOverrideHijacker class stores all override cursors in a stack, and resets them back afte...
KisUndoStore * createUndoStore()
KoDocumentInfo * documentInfo() const
QString linkedResourcesStorageId() const
KisShapeController * shapeController
void setAudioTracks(QVector< QFileInfo > f)
QString localFilePath() const
void setMirrorAxisConfig(const KisMirrorAxisConfig &config)
void setAssistantsGlobalColor(QColor color)
void setReferenceImagesLayer(KisSharedPtr< KisReferenceImagesLayer > layer, bool updateImage)
QColor assistantsGlobalColor()
QString embeddedResourcesStorageId() const
void setGridConfig(const KisGridConfig &config)
void setAudioVolume(qreal level)
void setGuidesConfig(const KisGuidesConfig &data)
void setPaletteList(const QList< KoColorSetSP > &paletteList, bool emitSignal=false)
setPaletteList replaces the palettes in the document's local resource storage with the list of palett...
void setColorHistory(const QList< KoColor > &colors)
The KisFileLayer class loads a particular file as a layer into the layer stack.
void setFilter(KisFilterConfigurationSP filterConfig, bool checkCompareConfig=true) override
static KisFilterRegistry * instance()
static KisGeneratorRegistry * instance()
static KisResourcesInterfaceSP instance()
bool loadDynamicDataFromXml(const QDomElement &parent)
bool loadFromXml(const QDomElement &parent)
void setExportSequenceBaseName(const QString &baseName)
void switchCurrentTimeAsync(int frameId, SwitchTimeAsyncFlags options=STAO_NONE)
void setDocumentRange(const KisTimeSpan range)
void setFramerate(int fps)
void setExportInitialFrameNumber(const int frameNum)
void setExportSequenceFilePath(const QString &filePath)
KisProofingConfigurationSP defaultProofingconfiguration(bool requestDefault=false)
void addAnnotation(KisAnnotationSP annotation)
KisGroupLayerSP rootLayer() const
const KoColorSpace * colorSpace() const
KisImageAnimationInterface * animationInterface() const
void setDefaultProjectionColor(const KoColor &color)
void setProofingConfiguration(KisProofingConfigurationSP proofingConfig)
setProofingConfiguration, this sets the image's proofing configuration, and signals the proofingConfi...
void addComposition(KisLayerCompositionSP composition)
void setResolution(double xres, double yres)
void convertImageProjectionColorSpace(const KoColorSpace *dstColorSpace)
KisProofingConfigurationSP proofingConfiguration() const
proofingConfiguration
static QString askForAudioFileName(const QString &defaultDir, QWidget *parent)
static QStringList supportedMimeTypes(Direction direction)
void setExternalUri(const QString &uri)
QStringList warningMessages() const
QStringList errorMessages() const
KisNodeSP loadFilterMask(KisImageSP image, const QDomElement &elem)
KisImageSP loadXML(const QDomElement &imageElement)
KisNodeSP loadNodes(const QDomElement &element, KisImageSP image, KisNodeSP parent)
void loadAnimationMetadata(KoStore *store, KisImageSP image)
KisNodeSP loadFileLayer(const QDomElement &elem, KisImageSP image, const QString &name, quint32 opacity, const KoColorSpace *fallbackColorSpace)
KisNodeSP loadShapeLayer(const QDomElement &elem, KisImageSP image, const QString &name, const KoColorSpace *cs, quint32 opacity)
void loadAudioXML(QDomDocument &xmlDoc, QDomElement &xmlElement, KisDocument *kisDoc)
void loadCompositions(const QDomElement &elem, KisImageSP image)
KisNodeSP loadColorizeMask(KisImageSP image, const QDomElement &elem, const KoColorSpace *colorSpace)
void loadAssistantsList(const QDomElement &elem)
void loadStoryboardItemList(const QDomElement &elem)
QStringList errorMessages() const
if empty, loading didn't fail...
KisNodeSP loadCloneLayer(const QDomElement &elem, KisImageSP image, const QString &name, const KoColorSpace *cs, quint32 opacity)
KisNodeSP loadGeneratorLayer(const QDomElement &elem, KisImageSP image, const QString &name, const KoColorSpace *cs, quint32 opacity)
void loadStoryboards(KoStore *store, KisDocument *doc)
KisNodeSP loadPaintLayer(const QDomElement &elem, KisImageSP image, const QString &name, const KoColorSpace *cs, quint32 opacity)
QString imageName() const
QStringList warningMessages() const
if not empty, loading didn't fail, but there are problems
void loadGuides(const QDomElement &elem)
void loadGrid(const QDomElement &elem)
KisNodeSP loadNode(const QDomElement &elem, KisImageSP image)
KisKraLoader(KisDocument *document, int syntaxVersion, const QVersionNumber &kritaVersion)
void loadBinaryData(KoStore *store, KisImageSP image, const QString &uri, bool external)
vKisNodeSP selectedNodes() const
void loadResources(KoStore *store, KisDocument *doc)
void loadMirrorAxis(const QDomElement &elem)
void loadAnimationMetadataFromXML(const QDomElement &element, KisImageSP image)
void loadStoryboardCommentList(const QDomElement &elem)
Q_DECL_DEPRECATED void backCompat_loadAudio(const QDomElement &elem, KisImageSP image, KisDocument *document)
KisNodeSP loadSelectionMask(KisImageSP image, const QDomElement &elem)
StoryboardItemList storyboardItemList() const
KisNodeSP loadTransformMask(KisImageSP image, const QDomElement &elem)
KisNodeSP loadGroupLayer(const QDomElement &elem, KisImageSP image, const QString &name, const KoColorSpace *cs, quint32 opacity)
QList< KoColor > loadKoColors(const QDomElement &elem) const
KisNodeSP loadReferenceImagesLayer(const QDomElement &elem, KisImageSP image)
KisNodeSP loadTransparencyMask(KisImageSP image, const QDomElement &elem)
void loadAssistants(KoStore *store, const QString &uri, bool external)
QList< KisPaintingAssistantSP > assistants() const
StoryboardCommentList storyboardCommentList() const
KisNodeSP loadAdjustmentLayer(const QDomElement &elem, KisImageSP image, const QString &name, const KoColorSpace *cs, quint32 opacity)
void loadAudio(KoStore *store, KisDocument *kisDoc)
static const KoID colorizeEditKeyStrokes
static void setNodeProperty(KisBaseNode::PropertyList *props, const KoID &id, const QVariant &value)
static const KoID colorizeShowColoring
The KisMirrorAxisConfig class stores configuration for the KisMirrorAxis canvas decoration....
bool loadFromXml(const QDomElement &parent)
loadFromXml() function for KisKraLoader
static KisNodeViewColorScheme * instance()
QVector< QColor > allColorLabels() const
static KisPaintingAssistantFactoryRegistry * instance()
virtual KisPaintingAssistant * createPaintingAssistant() const =0
void setAssistantGlobalColorCache(const QColor &color)
virtual int numHandles() const =0
void loadXml(KoStore *store, QMap< int, KisPaintingAssistantHandleSP > &handleMap, QString path)
const QList< KisPaintingAssistantHandleSP > & handles() const
@ Custom
Let artists configure their own.
@ Paper
Whether to use Paper settings (absolute colorimetric, 0% adaptation.)
@ Monitor
Whether to use monitor rendering intent and flags for the second transform.
static KisReferenceImage * fromXml(const QDomElement &elem)
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
QVector< KoResourceSP > resourcesForMD5(const QString md5sum) const
KoResourceSP importResource(const QString &filename, QIODevice *device, const bool allowOverwrite, const QString &storageId=QString("")) override
importResource imports a resource from a QIODevice
void setAntialiased(const bool antialiased)
virtual KoID colorModelId() const =0
virtual quint32 channelCount() const =0
virtual KoID colorDepthId() const =0
static KoColor fromXML(const QDomElement &elt, const QString &channelDepthId)
static const KoCompositeOpRegistry & instance()
void setAboutInfo(const QString &info, const QString &data)
QString aboutInfo(const QString &info) const
const T value(const QString &id) const
T get(const QString &id) const
A simple wrapper object for the main information about the resource.
bool open(OpenMode m) override
QIODevice * device() const
bool hasFile(const QString &fileName) const
bool open(const QString &name)
QByteArray read(qint64 max)
This class stores a list of StoryboardChild objects and provides functionality to manipulate the list...
This file is part of the Krita application in calligra.
void convertColorSpaceNames(QString &colorspacename, QString &profileProductName)
QSharedPointer< T > toQShared(T *ptr)
KisSharedPtr< KisAnnotation > KisAnnotationSP
KisSharedPtr< KisImage > KisImageSP
const QString COLORIZE_CLEANUP
const QString TRANSPARENCY_MASK
const QString COLORIZE_FUZZY_RADIUS
const QString GENERATOR_NAME
const QString FILTER_NAME
const QString PROOFINGPROFILENAME
const QString COLORHISTORY
const QString CANVASPROJECTIONCOLOR
const QString CLONE_FROM_UUID
const QString COLORBYTEDATA
const QString PROOFINGBLACKPOINTCOMPENSATION
const QString ICC_PROOFING_PATH
const QString COLORIZE_EDIT_KEYSTROKES
const QString Y_RESOLUTION
const QString ASSISTANTS_PATH
const QString COLOR_LABEL
const QString PROOFINGDEPTH
const QString ANIMATION_METADATA_PATH
const QString NATIVE_MIMETYPE
const QString LAYER_STYLES_PATH
const QString X_RESOLUTION
const QString STORYBOARD_PATH
const QString ANNOTATIONS_PATH
const QString PROOFINGDISPLAYBLACKPOINTCOMPENSATION
const QString PASS_THROUGH_MODE
const QString COLORIZE_EDGE_DETECTION_SIZE
const QString PROOFINGDISPLAYMODE
const QString COMPOSITE_OP
const QString PROOFINGWARNINGCOLOR
const QString KEYFRAME_FILE
const QString PAINT_LAYER
const QString PROOFINGDISPLAYINTENT
const QString GROUP_LAYER
const QString VISIBLE_IN_TIMELINE
const QString COLORIZE_MASK
QBitArray stringToFlags(const QString &string, int size=-1, char token='0', bool defaultTrue=true)
const QString CHANNEL_LOCK_FLAGS
const QString GLOBALASSISTANTSCOLOR
const QString ANNOTATIONS
const QString TRANSFORM_MASK
const QString COLORIZE_SHOW_COLORING
const QString ONION_SKIN_ENABLED
const QString RESOURCE_PATH
const QString PROOFINGMODEL
const QString REFERENCE_IMAGES_LAYER
const QString COLORIZE_USE_EDGE_DETECTION
const QString PALETTE_PATH
const QString PROOFINGINTENT
const QString ANTIALIASED
const QString FILTER_MASK
const QString MIRROR_AXIS
const QString SIMPLECOLORDATA
const QString PROOFINGADAPTATIONSTATE
const QString CLONE_LAYER
const QString SHAPE_LAYER
const QString GENERATOR_LAYER
const QString COLORSPACE_NAME
const QString SELECTION_MASK
const QString COLORIZE_LIMIT_TO_DEVICE
const QString LAYER_STYLE_UUID
const QString CHANNEL_FLAGS
const QString ADJUSTMENT_LAYER
QColor qStringToQColor(QString colorString)
double toDouble(const QString &str, bool *ok=nullptr)
int toInt(const QString &str, bool *ok=nullptr)
void setPinnedToTimeline(bool pinned)
virtual void setUserLocked(bool l)
void setOpacity(quint8 val)
virtual void setVisible(bool visible, bool loading=false)
virtual void setX(qint32)
void setUuid(const QUuid &id)
virtual void setY(qint32)
void setColorLabelIndex(int index)
void setName(const QString &name)
void setCollapsed(bool collapsed)
void setCompositeOpId(const QString &compositeOpId)
virtual KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const
bool accept(KisNodeVisitor &v) override
void setPassThroughMode(bool value)
StoryboardCommentList storyboardCommentList
QList< KisPaintingAssistantSP > assistants
QMap< KisNode *, QString > keyframeFilenames
QVersionNumber kritaVersion
QVector< QString > paletteFilenames
QMap< KisNode *, QString > layerFilenames
QStringList errorMessages
StoryboardItemList storyboardItemList
QList< KisAnnotationSP > annotations
QStringList warningMessages
QVector< KoResourceSignature > resources
QMap< QString, QString > assistantsFilenames
virtual void setChannelFlags(const QBitArray &channelFlags)
void setLayerStyle(KisPSDLayerStyleSP layerStyle)
bool addNode(KisNodeSP node, KisNodeSP parent=KisNodeSP(), KisNodeAdditionFlags flags=KisNodeAdditionFlag::None)
QList< KisNodeSP > childNodes(const QStringList &nodeTypes, const KoProperties &properties) const
quint32 childCount() const
The KisPSDLayerStyle class implements loading, saving and applying the PSD layer effects.
void setChannelLockFlags(const QBitArray &channelFlags)
void setOnionSkinEnabled(bool state)
void setActive(bool active)
virtual bool valid() const =0
const KoColorSpace * colorSpace(const QString &colorModelId, const QString &colorDepthId, const KoColorProfile *profile)
static KoColorSpaceRegistry * instance()
KoID colorSpaceColorDepthId(const QString &_colorSpaceId) const
KoID colorSpaceColorModelId(const QString &_colorSpaceId) const
const KoColorProfile * createColorProfile(const QString &colorModelId, const QString &colorDepthId, const QByteArray &rawData)
void addProfile(KoColorProfile *profile)