6#ifndef PSD_RESOURCE_BLOCK_H
7#define PSD_RESOURCE_BLOCK_H
9#include "kritapsd_export.h"
16#include <klocalizedstring.h>
58 buf.open(QBuffer::WriteOnly);
86 buffer.open(QBuffer::WriteOnly);
89 qWarning() <<
"Could not copy PSDResourceBlock" << error;
94 buffer.open(QBuffer::ReadOnly);
96 if (!copied->
read(buffer)) {
97 qWarning() <<
"Could not copy PSDResourceBlock" << copied->
error;
108 return resource->displayText();
110 return i18n(
"Unparsed Resource Block");
113 bool read(QIODevice &io);
114 bool write(QIODevice &io)
const;
131 dbgFile <<
"Reading MAC_PRINT_INFO_1001";
149 , hResUnit(PSD_UNIT_INCH)
150 , widthUnit(PSD_UNIT_INCH)
152 , vResUnit(PSD_UNIT_INCH)
153 , heightUnit(PSD_UNIT_INCH)
157 bool interpretBlock(QByteArray data)
override;
158 bool createBlock(QByteArray &data)
override;
172 dbgFile <<
"Reading ALPHA_NAMES_1006";
182 dbgFile <<
"Reading DISPLAY_INFO_1007";
191 dbgFile <<
"Reading CAPTION_1008";
200 dbgFile <<
"Reading BORDER_INFO_1009";
209 dbgFile <<
"Reading BACKGROUND_COL_1010";
218 dbgFile <<
"Reading PRINT_FLAGS_1011";
227 dbgFile <<
"Reading GREY_HALFTONE_1012";
236 dbgFile <<
"Reading COLOR_HALFTONE_1013";
245 dbgFile <<
"Reading DUOTONE_HALFTONE_1014";
254 dbgFile <<
"Reading GREY_XFER_1015";
263 dbgFile <<
"Reading COLOR_XFER_1016";
272 dbgFile <<
"Reading DUOTONE_XFER_1017";
281 dbgFile <<
"Reading DUOTONE_INFO_1018";
290 dbgFile <<
"Reading EFFECTIVE_BW_1019";
299 dbgFile <<
"Reading EPS_OPT_1021";
308 dbgFile <<
"Reading QUICK_MASK_1022";
317 dbgFile <<
"Reading LAYER_STATE_1024";
326 dbgFile <<
"Reading WORKING_PATH_1025";
335 dbgFile <<
"Reading LAYER_GROUP_1026";
344 dbgFile <<
"Reading IPTC_NAA_DATA_1028";
353 dbgFile <<
"Reading IMAGE_MODE_RAW_1029";
362 dbgFile <<
"Reading JPEG_QUAL_1030";
378 dbgFile <<
"Reading GRID_GUIDE_1032";
379 QDataStream ds(data);
380 ds.setByteOrder(QDataStream::BigEndian);
386 ds >> version >> gridHorizontal >> gridVertical >> guidesLength;
388 for (qint32 i=0; i < guidesLength; i++) {
391 ds >> guide >> horizontal;
393 horizontalGuides.append(guide / documentMultiplier);
395 verticalGuides.append(guide / documentMultiplier);
406 size += (horizontalGuides.size() * 5);
407 size += (verticalGuides.size() * 5);
410 psdwrite(buf, (quint32)gridHorizontal);
411 psdwrite(buf, (quint32)gridVertical);
412 psdwrite(buf, quint32(horizontalGuides.size()+verticalGuides.size()));
413 Q_FOREACH(quint32 guide, verticalGuides) {
414 psdwrite(buf, quint32(guide * documentMultiplier));
417 Q_FOREACH(quint32 guide, horizontalGuides) {
418 psdwrite(buf, quint32(guide * documentMultiplier));
433 guidesText.append(QString(
"Grids and Guides version: %1").arg(version));
434 guidesText.append(QString(
"Grids vertical: %1, horizontal: %2")
435 .arg(gridVertical).arg(gridHorizontal));
438 Q_FOREACH(quint32 guide, verticalGuides) {
439 vertical.append(QString::number(guide));
441 Q_FOREACH(quint32 guide, horizontalGuides) {
442 horizontal.append(QString::number(guide));
444 guidesText.append(QString(
"Vertical guides: %1").arg(vertical.join(
", ")));
445 guidesText.append(QString(
"Horizontal guides: %1").arg(horizontal.join(
", ")));
446 return guidesText.join(
"\n");
449 const int documentMultiplier{32};
461 dbgFile <<
"Reading THUMB_RES_1033";
470 dbgFile <<
"Reading COPYRIGHT_FLG_1034";
488 dbgFile <<
"Reading THUMB_RES2_1036";
502 dbgFile <<
"Reading GLOBAL_ANGLE_1037";
504 QDataStream ds(data);
505 ds.setByteOrder(QDataStream::BigEndian);
527 return QString(
"Global Angle: %1").arg(angle);
537 dbgFile <<
"Reading COLOR_SAMPLER_1038";
544 bool interpretBlock(QByteArray data)
override;
545 bool createBlock(QByteArray &data)
override;
554 dbgFile <<
"Reading WATERMARK_1040";
563 dbgFile <<
"Reading ICC_UNTAGGED_1041";
572 dbgFile <<
"Reading EFFECTS_VISIBLE_1042";
581 dbgFile <<
"Reading SPOT_HALFTONE_1043";
590 dbgFile <<
"Reading DOC_IDS_1044";
599 dbgFile <<
"Reading ALPHA_NAMES_UNI_1045";
608 dbgFile <<
"Reading IDX_COL_TAB_CNT_1046";
617 dbgFile <<
"Reading IDX_TRANSPARENT_1047";
630 dbgFile <<
"Reading GLOBAL_ALT_1049";
631 QDataStream ds(data);
632 ds.setByteOrder(QDataStream::BigEndian);
652 return QString(
"Global Altitude: %1").arg(altitude);
662 dbgFile <<
"Reading SLICES_1050";
671 dbgFile <<
"Reading WORKFLOW_URL_UNI_1051";
680 dbgFile <<
"JUMP_TO_XPEP_1052";
698 dbgFile <<
"URL_LIST_UNI_1054";
707 dbgFile <<
"VERSION_INFO_1057";
716 dbgFile <<
"Reading EXIF_DATA_1058";
725 dbgFile <<
"Reading XMP_DATA_1060";
734 dbgFile <<
"PATH_INFO_FIRST_2000";
743 dbgFile <<
"PATH_INFO_LAST_2998";
752 dbgFile <<
"Reading CLIPPING_PATH_2999";
761 dbgFile <<
"Reading PRINT_FLAGS_2_10000";
A data extension mechanism for Krita.
The PSDResourceInterpreter struct interprets the data in a psd resource block.
virtual bool createBlock(QByteArray &)
virtual bool interpretBlock(QByteArray)
void startBlock(QBuffer &buf, PSDImageResourceSection::PSDResourceID id, quint32 size)
virtual QString displayText()
virtual ~PSDInterpretedResource()
~PSDResourceBlock() override
PSDInterpretedResource * resource
KisAnnotation * clone() const Q_DECL_OVERRIDE
QString displayText() const override
displayText: override this to return an interpreted version of the annotation
This file is part of the Krita application in calligra.
std::enable_if_t< std::is_arithmetic< T >::value, bool > psdwrite(QIODevice &io, T v)
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray data) override
QString displayText() override
bool createBlock(QByteArray &data) override
QString displayText() override
bool createBlock(QByteArray &data) override
bool interpretBlock(QByteArray data) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
QList< quint32 > verticalGuides
bool interpretBlock(QByteArray data) override
bool createBlock(QByteArray &data) override
QString displayText() override
QList< quint32 > horizontalGuides
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override
bool interpretBlock(QByteArray) override