71 return QPair<psd_color_mode, quint16>(colorMode, depth);
77 : m_image(doc->savingImage())
121 if (colordef.first ==
COLORMODE_UNKNOWN || colordef.second == 0 || colordef.second == 32) {
129 dbgFile <<
"header" << header << io.pos();
131 if (!header.
write(io)) {
132 dbgFile <<
"Failed to write header. Error:" << header.
error << io.pos();
145 dbgFile <<
"colormode block" << io.pos();
146 if (!colorModeBlock.
write(io)) {
147 dbgFile <<
"Failed to write colormode block. Error:" << colorModeBlock.
error << io.pos();
156 while (it != endIt) {
158 if (!annotation || annotation->type().isEmpty()) {
159 dbgFile <<
"Warning: empty annotation";
164 dbgFile <<
"Annotation:" << annotation->type() << annotation->description();
166 if (annotation->type().startsWith(QString(
"PSD Resource Block:"))) {
184 block->resource = resInfo;
203 block->resource = gridGuidesInfo;
213 block->resource = profileInfo;
218 dbgFile <<
"resource section" << io.pos();
219 if (!resourceSection.
write(io)) {
220 dbgFile <<
"Failed to write resource section. Error:" << resourceSection.
error << io.pos();
234 dbgFile <<
"failed to write layer section. Error:" << layerSection.
error << io.pos();
240 dbgFile <<
"No layers, saving empty layers/mask block" << io.pos();
245 dbgFile <<
"Saving composited image" << io.pos();
249 dbgFile <<
"Failed to write image data. Error:" << imagedata.
error;
const KoID Float32BitsColorDepthID("F32", ki18n("32-bit float/channel"))
const KoID GrayAColorModelID("GRAYA", ki18n("Grayscale/Alpha"))
const KoID Float16BitsColorDepthID("F16", ki18n("16-bit float/channel"))
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"))
const KoID LABAColorModelID("LABA", ki18n("L*a*b*/Alpha"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
constexpr qreal INCH_TO_POINT(qreal inch)
KisGuidesConfig guidesConfig
const QList< qreal > & verticalGuideLines() const
Returns the list of vertical guide lines.
const QList< qreal > & horizontalGuideLines() const
Returns the list of horizontal guide lines.
vKisAnnotationSP_it endAnnotations()
KisGroupLayerSP rootLayer() const
const KoColorSpace * colorSpace() const
KisAnnotationSP annotation(const QString &type)
void convertImageColorSpace(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
KisPaintDeviceSP projection() const
const KoColorProfile * profile() const
vKisAnnotationSP_it beginAnnotations()
static bool checkDeviceHasTransparency(KisPaintDeviceSP dev)
virtual KoID colorModelId() const =0
virtual quint32 channelCount() const =0
virtual KoID colorDepthId() const =0
virtual quint32 colorChannelCount() const =0
QByteArray duotoneSpecification
bool write(QIODevice &io)
bool write(QIODevice &io, KisPaintDeviceSP dev, bool hasAlpha, psd_compression_type compressionType)
QMap< PSDResourceID, PSDResourceBlock * > resources
bool write(QIODevice &io)
bool write(QIODevice &io, KisNodeSP rootLayer, psd_compression_type compressionType)
KisImportExportErrorCode buildFile(QIODevice &io)
PSDSaver(KisDocument *doc)
This file is part of the Krita application in calligra.
#define KIS_ASSERT_RECOVER_RETURN_VALUE(cond, val)
vKisAnnotationSP::iterator vKisAnnotationSP_it
QPair< psd_color_mode, quint16 > colormodelid_to_psd_colormode(const QString &colorSpaceId, const QString &colorDepthId)
std::enable_if_t< std::is_arithmetic< T >::value, bool > psdwrite(QIODevice &io, T v)
QList< quint32 > verticalGuides
QList< quint32 > horizontalGuides
virtual KisPaintDeviceSP projection() const =0
KisPaintDeviceSP projection() const override
KisNodeSP firstChild() const
quint32 childCount() const
virtual QByteArray rawData() const
static KoColorSpaceRegistry * instance()