Definition at line 92 of file psd_saver.cpp.
93{
95
98 }
99
102
106
107
114
117
120
121 if (colordef.first ==
COLORMODE_UNKNOWN || colordef.second == 0 || colordef.second == 32) {
125 }
128
129 dbgFile <<
"header" << header << io.pos();
130
131 if (!header.
write(io)) {
132 dbgFile <<
"Failed to write header. Error:" << header.
error << io.pos();
134 }
135
136
138
139
141 if (annotation) {
142 colorModeBlock.duotoneSpecification = annotation->annotation();
143 }
144
145 dbgFile <<
"colormode block" << io.pos();
146 if (!colorModeBlock.write(io)) {
147 dbgFile <<
"Failed to write colormode block. Error:" << colorModeBlock.error << io.pos();
149 }
150
151
153
156 while (it != endIt) {
158 if (!annotation || annotation->type().isEmpty()) {
159 dbgFile <<
"Warning: empty annotation";
160 it++;
161 continue;
162 }
163
164 dbgFile <<
"Annotation:" << annotation->type() << annotation->description();
165
166 if (annotation->type().startsWith(QString("PSD Resource Block:"))) {
168 if (resourceBlock) {
171 }
172 }
173
174 it++;
175 }
176
177
178 {
184 block->resource = resInfo;
186 }
187
188
189 {
194 }
198 }
203 block->resource = gridGuidesInfo;
205 }
206
207
208 {
213 block->resource = profileInfo;
215
216 }
217
218 dbgFile <<
"resource section" << io.pos();
219 if (!resourceSection.
write(io)) {
220 dbgFile <<
"Failed to write resource section. Error:" << resourceSection.
error << io.pos();
222 }
223
224
225
227
228 if (haveLayers) {
229
231 layerSection.hasTransparency = true;
232
234 dbgFile <<
"failed to write layer section. Error:" << layerSection.error << io.pos();
236 }
237 }
238 else {
239
240 dbgFile <<
"No layers, saving empty layers/mask block" << io.pos();
242 }
243
244
245 dbgFile <<
"Saving composited image" << io.pos();
247
249 dbgFile <<
"Failed to write image data. Error:" << imagedata.error;
251 }
252
254}
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
QMap< PSDResourceID, PSDResourceBlock * > resources
bool write(QIODevice &io)
#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()
References KisImage::annotation(), KisImage::beginAnnotations(), KoColorSpace::channelCount(), PSDHeader::channelDepth, KisPainter::checkDeviceHasTransparency(), KisNode::childCount(), KoColorSpace::colorChannelCount(), KoColorSpace::colorDepthId(), PSDHeader::colormode, COLORMODE_UNKNOWN, KoColorSpace::colorModelId(), colormodelid_to_psd_colormode(), KisImage::colorSpace(), KisImage::convertImageColorSpace(), KisSharedPtr< T >::data(), dbgFile, PSDColorModeBlock::duotoneSpecification, KisImage::endAnnotations(), PSDHeader::error, PSDLayerMaskSection::error, PSDImageResourceSection::error, PSDColorModeBlock::error, PSDImageData::error, ImportExportCodes::ErrorWhileWriting, ImportExportCodes::Failure, KisNode::firstChild(), PSDImageResourceSection::GRID_GUIDE, KisDocument::guidesConfig, PSDLayerMaskSection::hasTransparency, KisImage::height(), PSDHeader::height, KisGuidesConfig::horizontalGuideLines(), GRID_GUIDE_1032::horizontalGuides, RESN_INFO_1005::hRes, ICC_PROFILE_1039::icc, PSDImageResourceSection::ICC_PROFILE, KoID::id(), PSDResourceBlock::identifier, INCH_TO_POINT(), KoColorSpaceRegistry::instance(), KoColorConversionTransformation::internalConversionFlags(), ImportExportCodes::InternalError, KoColorConversionTransformation::internalRenderingIntent(), KIS_ASSERT_RECOVER_RETURN_VALUE, m_doc, m_image, MAX_PSD_SIZE, PSDHeader::nChannels, ImportExportCodes::OK, KisImage::profile(), KisImage::projection(), KisBaseNode::projection(), KisLayer::projection(), psdwrite(), KoColorProfile::rawData(), PSDImageResourceSection::RESN_INFO, PSDImageResourceSection::resources, RLE, KisImage::rootLayer(), PSDHeader::signature, PSDHeader::version, KisGuidesConfig::verticalGuideLines(), GRID_GUIDE_1032::verticalGuides, RESN_INFO_1005::vRes, KisImage::waitForDone(), KisImage::width(), PSDHeader::width, PSDHeader::write(), PSDImageResourceSection::write(), PSDColorModeBlock::write(), PSDLayerMaskSection::write(), PSDImageData::write(), KisImage::xRes(), and KisImage::yRes().