|
Krita Source Code Documentation
|
#include <psd_layer_section.h>
Classes | |
| struct | GlobalLayerMaskInfo |
Public Member Functions | |
| PSDLayerMaskSection (const PSDHeader &header) | |
| bool | read (QIODevice &io) |
| bool | write (QIODevice &io, KisNodeSP rootLayer, psd_compression_type compressionType) |
| ~PSDLayerMaskSection () | |
Public Attributes | |
| QString | error |
| PsdAdditionalLayerInfoBlock | globalInfoSection |
| GlobalLayerMaskInfo | globalLayerMaskInfo |
| bool | hasTransparency {false} |
| QVector< PSDLayerRecord * > | layers |
| qint16 | nLayers {0} |
Private Member Functions | |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> | |
| bool | readGlobalMask (QIODevice &io) |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> | |
| bool | readLayerInfoImpl (QIODevice &io) |
| bool | readPsdImpl (QIODevice &io) |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> | |
| bool | readTiffImpl (QIODevice &io) |
| void | writePsdImpl (QIODevice &io, KisNodeSP rootLayer, psd_compression_type compressionType) |
| template<psd_byte_order byteOrder = psd_byte_order::psdBigEndian> | |
| void | writeTiffImpl (QIODevice &io, KisNodeSP rootLayer, psd_compression_type compressionType) |
Private Attributes | |
| const PSDHeader | m_header |
Definition at line 22 of file psd_layer_section.h.
| PSDLayerMaskSection::PSDLayerMaskSection | ( | const PSDHeader & | header | ) |
Definition at line 54 of file psd_layer_section.cpp.
| PSDLayerMaskSection::~PSDLayerMaskSection | ( | ) |
Definition at line 60 of file psd_layer_section.cpp.
References layers.
| bool PSDLayerMaskSection::read | ( | QIODevice & | io | ) |
Definition at line 65 of file psd_layer_section.cpp.
References PSDHeader::byteOrder, m_header, psdLittleEndian, readPsdImpl(), readTiffImpl(), PSDHeader::tiffStyleLayerBlock, and warnKrita.
|
private |
Definition at line 327 of file psd_layer_section.cpp.
References PSDLayerMaskSection::GlobalLayerMaskInfo::colorComponents, dbgFile, error, globalLayerMaskInfo, PSDLayerMaskSection::GlobalLayerMaskInfo::kind, PSDLayerMaskSection::GlobalLayerMaskInfo::opacity, and PSDLayerMaskSection::GlobalLayerMaskInfo::overlayColorSpace.
|
private |
Definition at line 91 of file psd_layer_section.cpp.
References ChannelInfo::channelDataLength, ChannelInfo::channelDataStart, ChannelInfo::channelId, PSDLayerRecord::channelInfoRecords, PSDLayerRecord::channelRect(), ChannelInfo::compressionType, dbgFile, error, hasTransparency, KIS_ASSERT_RECOVER, layers, m_header, PSDLayerRecord::nChannels, nLayers, RLE, ChannelInfo::rleRowLengths, SAFE_READ_EX, SETUP_OFFSET_VERIFIER, PSDHeader::tiffStyleLayerBlock, PSDHeader::version, and warnKrita.
|
private |
PSD files created in some weird web applications may have invalid layer-mask-block-size set. Just do a simple sanity check to catch this case
Newer versions of PSD have layers info block wrapped into 'Lr16' or 'Lr32' additional section, while the main block is absent.
Here we pass the callback which should be used when such additional section is recognized.
Definition at line 219 of file psd_layer_section.cpp.
References PSDLayerMaskSection::GlobalLayerMaskInfo::colorComponents, dbgFile, error, globalInfoSection, globalLayerMaskInfo, PSDLayerMaskSection::GlobalLayerMaskInfo::kind, m_header, PSDLayerMaskSection::GlobalLayerMaskInfo::opacity, PSDLayerMaskSection::GlobalLayerMaskInfo::overlayColorSpace, psdBigEndian, psdread(), PsdAdditionalLayerInfoBlock::read(), readLayerInfoImpl(), SAFE_READ_EX, PsdAdditionalLayerInfoBlock::setExtraLayerInfoBlockHandler(), PSDHeader::version, and warnKrita.
|
private |
Just like PSD, new versions of PSD have layers info block wrapped into 'Lr16' or 'Lr32' additional section, while the main block is absent. Additionally, the global mask info is stored in a separate "LMsk" block.
So, instead of having special handling, we just ship everything to the additional layer info block handlers
Definition at line 378 of file psd_layer_section.cpp.
References dbgFile, globalInfoSection, PsdAdditionalLayerInfoBlock::read(), PsdAdditionalLayerInfoBlock::setExtraLayerInfoBlockHandler(), and PsdAdditionalLayerInfoBlock::setUserMaskInfoBlockHandler().
| bool PSDLayerMaskSection::write | ( | QIODevice & | io, |
| KisNodeSP | rootLayer, | ||
| psd_compression_type | compressionType ) |
Definition at line 604 of file psd_layer_section.cpp.
References PSDHeader::byteOrder, error, m_header, PREPEND_METHOD, psdLittleEndian, PSDHeader::tiffStyleLayerBlock, writePsdImpl(), and writeTiffImpl().
|
private |
For fill layers we save their internal selection as a separate transparency mask
Definition at line 629 of file psd_layer_section.cpp.
References KoShape::absoluteTransformation(), addBackgroundIfNeeded(), PSDLayerRecord::addPathShapeToPSDPath(), KisPaintLayer::alphaLocked(), KoShape::background(), PSDLayerRecord::blendModeKey, PSDLayerRecord::bottom, psd_layer_type_shape::boundingBox, KoSvgTextShape::boundingRect(), psd_layer_type_shape::bounds, ChannelInfo::channelId, PSDLayerRecord::channelInfoRecords, KisPainter::checkDeviceHasTransparency(), PSDLayerRecord::clipping, KoColorSpace::colorChannelCount(), KisBaseNode::colorLabelIndex(), KisImage::colorSpace(), KisBaseNode::colorSpace(), composite_op_to_psd_blendmode(), KisBaseNode::compositeOpId(), PsdTextDataConverter::convertToPSDTextEngineData(), KoSvgTextShapeMarkupConverter::convertToSvg(), psd_layer_solid_color::cs, KoSvgText::AutoValue::customValue, KisSharedPtr< T >::data(), dbgFile, KisPaintDevice::defaultPixel(), KisTxt2Utils::defaultTxt2(), psd_layer_type_shape::engineData, PsdTextDataConverter::errors(), KisPaintDevice::exactBounds(), fetchLayerStyleXmlData(), PSDLayerRecord::fillConfig, psd_vector_stroke_data::fillEnabled, PSDLayerRecord::fillType, KisNodeFilterInterface::filter(), findOnlyTransparencyMask(), flattenNodes(), FlattenedNode::FOLDER_OPEN, psd_vector_origination_data::getASL(), psd_layer_solid_color::getASLXML(), psd_layer_gradient_fill::getASLXML(), psd_layer_pattern_fill::getASLXML(), psd_vector_stroke_data::getASLXML(), globalInfoSection, KoGradientBackground::gradient(), KisSelection::hasNonEmptyShapeSelection(), KisImage::height(), KoSvgText::HorizontalTB, KisBaseNode::image, psd_layer_gradient_fill::imageHeight, psd_layer_gradient_fill::imageWidth, KoSvgTextProperties::InlineSizeId, KisSelectionBasedLayer::internalSelection(), PSDLayerRecord::irrelevant, KoSvgText::AutoValue::isAuto, KisBaseNode::isFakeNode(), psd_layer_type_shape::isHorizontal, PSDLayerRecord::isPassThrough, PSDLayerRecord::labelColor, PSDLayerRecord::layerName, layers, PSDLayerRecord::left, psd_layer_solid_color::loadFromConfig(), psd_layer_gradient_fill::loadFromConfig(), psd_layer_pattern_fill::loadFromConfig(), psd_vector_stroke_data::loadFromShapeStroke(), m_header, mergePatternsXMLSection(), KisBaseNode::name(), PSDLayerRecord::nChannels, FlattenedNode::node, KisBaseNode::opacity(), PSDLayerRecord::opacity, OPACITY_OPAQUE_U8, KoColor::opacityU8(), KisBaseNode::original(), psd_vector_origination_data::originBoxCorners, psd_vector_origination_data::originShapeBBox, psd_vector_origination_data::originType, KoPathShape::outlineRect(), KoSvgTextShape::outlineRect(), p, KisBaseNode::paintDevice(), KisGroupLayer::passThroughMode, psd_vector_mask::path, KoPathShape::pathShapeId(), psd_layer_pattern_fill::pattern, psd_layer_pattern_fill::patternID, ResourceType::Patterns, KoPathShape::pointCount(), KisBaseNode::projection(), KoSvgTextProperties::property(), psd_bounding_divider, psd_closed_folder, psd_fill_gradient, psd_fill_pattern, psd_fill_solid_color, psd_open_folder, psd_other, psdBigEndian, FlattenedNode::RASTER_LAYER, psd_vector_stroke_data::resolution, PSDLayerRecord::right, SAFE_WRITE_EX, FlattenedNode::SECTION_DIVIDER, KisMask::selection, psd_layer_solid_color::setColor(), psd_layer_gradient_fill::setFromQGradient(), KoShapeContainer::shapes(), KisSelection::shapeSelection, KoSvgTextShape::shapesInside, KoShape::stroke(), psd_vector_stroke_data::strokeEnabled, psd_layer_type_shape::text, psd_layer_type_shape::textIndex, KoSvgTextShape::textProperties(), PSDLayerRecord::textShape, PSDLayerRecord::top, psd_layer_type_shape::transform, psd_vector_origination_data::transform, PSDLayerRecord::transparencyProtected, PsdAdditionalLayerInfoBlock::txt2Data, FlattenedNode::type, psd_vector_origination_data::typeToName, KisTxt2Utils::tyShFromTxt2(), PSDLayerRecord::vectorMask, PSDLayerRecord::vectorOriginationData, PSDLayerRecord::vectorStroke, KisBaseNode::visible(), PSDLayerRecord::visible, PsdTextDataConverter::warnings(), KisImage::width(), PSDLayerRecord::write(), PsdAdditionalLayerInfoBlock::writePattBlockEx(), PsdAdditionalLayerInfoBlock::writeTxt2BlockEx(), KoSvgTextShape::writingMode(), KisImage::xRes(), and KisImage::yRes().
|
private |
Definition at line 1024 of file psd_layer_section.cpp.
References addBackgroundIfNeeded(), KisPaintLayer::alphaLocked(), PSDLayerRecord::blendModeKey, PSDLayerRecord::bottom, ChannelInfo::channelId, PSDLayerRecord::channelInfoRecords, PSDLayerRecord::clipping, KoColorSpace::colorChannelCount(), KisBaseNode::colorLabelIndex(), KisBaseNode::colorSpace(), composite_op_to_psd_blendmode(), KisBaseNode::compositeOpId(), KisSharedPtr< T >::data(), dbgFile, KisPaintDevice::exactBounds(), fetchLayerStyleXmlData(), flattenNodes(), FlattenedNode::FOLDER_OPEN, globalInfoSection, PSDLayerRecord::irrelevant, PSDLayerRecord::isPassThrough, PSDLayerRecord::labelColor, PSDLayerRecord::layerName, layers, PSDLayerRecord::left, m_header, mergePatternsXMLSection(), KisBaseNode::name(), PSDLayerRecord::nChannels, KisBaseNode::opacity(), PSDLayerRecord::opacity, KisGroupLayer::passThroughMode, KisBaseNode::projection(), psd_bounding_divider, psd_closed_folder, psd_open_folder, psd_other, FlattenedNode::RASTER_LAYER, PSDLayerRecord::right, SAFE_WRITE_EX, FlattenedNode::SECTION_DIVIDER, PSDLayerRecord::top, PSDLayerRecord::transparencyProtected, KisBaseNode::visible(), PSDLayerRecord::visible, PSDLayerRecord::write(), and PsdAdditionalLayerInfoBlock::writePattBlockEx().
| QString PSDLayerMaskSection::error |
Definition at line 31 of file psd_layer_section.h.
| PsdAdditionalLayerInfoBlock PSDLayerMaskSection::globalInfoSection |
Definition at line 49 of file psd_layer_section.h.
| GlobalLayerMaskInfo PSDLayerMaskSection::globalLayerMaskInfo |
Definition at line 48 of file psd_layer_section.h.
| bool PSDLayerMaskSection::hasTransparency {false} |
Definition at line 34 of file psd_layer_section.h.
| QVector<PSDLayerRecord *> PSDLayerMaskSection::layers |
Definition at line 38 of file psd_layer_section.h.
|
private |
Definition at line 63 of file psd_layer_section.h.
| qint16 PSDLayerMaskSection::nLayers {0} |
Definition at line 36 of file psd_layer_section.h.