|
Krita Source Code Documentation
|
#include <kis_selection_mask.h>
Inheritance diagram for KisSelectionMask:Public Member Functions | |
| bool | accept (KisNodeVisitor &v) override |
| void | accept (KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override |
| bool | active () const |
| QRect | changeRect (const QRect &rect, PositionToFilthy pos=N_FILTHY) const override |
| KisNodeSP | clone () const override |
| bool | decorationsVisible () const override |
| QRect | exactBounds () const override |
| QRect | extent () const override |
| QIcon | icon () const override |
| KisSelectionMask (const KisSelectionMask &rhs) | |
| KisSelectionMask (KisImageWSP image, const QString &name=QString()) | |
| QRect | needRect (const QRect &rect, PositionToFilthy pos=N_FILTHY) const override |
| void | notifySelectionChangedCompressed () |
| Private (KisSelectionMask *_q) | |
| KisBaseNode::PropertyList | sectionModelProperties () const override |
| void | setActive (bool active) |
| void | setDecorationsVisible (bool value) |
| void | setDecorationsVisible (bool value, bool update) override |
| virtual void | setDecorationsVisible (bool value, bool update)=0 |
| void | setDirty (const QVector< QRect > &rects) override |
| void | setSectionModelProperties (const KisBaseNode::PropertyList &properties) override |
| void | setSelection (KisSelectionSP selection) |
| Set the selection of this adjustment layer to a copy of selection. | |
| void | setVisible (bool visible, bool isLoading=false) override |
| void | slotConfigChanged () |
| void | slotConfigChangedImpl (bool blockUpdates) |
| void | slotSelectionChangedCompressed () |
| ~KisSelectionMask () override | |
Public Member Functions inherited from Private | |
| Private (KisCanvas2 *c) | |
Public Member Functions inherited from KisEffectMask | |
| void | apply (KisPaintDeviceSP projection, const QRect &applyRect, const QRect &needRect, PositionToFilthy maskPos, KisRenderPassFlags flags) const |
| KisEffectMask (const KisEffectMask &rhs) | |
| KisEffectMask (KisImageWSP image, const QString &name) | |
| ~KisEffectMask () override | |
Public Member Functions inherited from KisMask | |
| bool | allowAsChild (KisNodeSP node) const override |
| const KoColorSpace * | colorSpace () const override |
| const KoCompositeOp * | compositeOp () const override |
| QImage | createThumbnail (qint32 w, qint32 h, Qt::AspectRatioMode aspectRatioMode=Qt::IgnoreAspectRatio) override |
| void | initSelection (KisLayerSP parentLayer) |
| initSelection initializes an empty selection | |
| void | initSelection (KisPaintDeviceSP copyFromDevice, KisLayerSP parentLayer) |
| initSelection initializes the selection for the mask from the given paint device. | |
| void | initSelection (KisSelectionSP copyFrom, KisLayerSP parentLayer) |
| initSelection initializes the selection for the mask from the given selection's projection. | |
| void | initSelectionImpl (KisSelectionSP copyFrom, KisLayerSP parentLayer, KisPaintDeviceSP copyFromDevice, KisImageWSP image) |
| KisMask (const KisMask &rhs) | |
| KisMask (KisImageWSP image, const QString &name) | |
| virtual QRect | nonDependentExtent () const |
| KisPaintDeviceSP | original () const override |
| KisPaintDeviceSP | paintDevice () const override |
| Private (KisMask *_q) | |
| KisPaintDeviceSP | projection () const override |
| KisAbstractProjectionPlaneSP | projectionPlane () const override |
| void | select (const QRect &rc, quint8 selectedness=MAX_SELECTED) |
| KisSelectionSP | selection () const |
| void | setImage (KisImageWSP image) override |
| void | setSelection (KisSelectionSP selection) |
| void | setX (qint32 x) override |
| void | setY (qint32 y) override |
| bool | supportsLodPainting () const override |
| void | testingInitSelection (const QRect &rect, KisLayerSP parentLayer) |
| int | thumbnailSeqNo () const override |
| qint32 | x () const override |
| qint32 | y () const override |
| ~KisMask () override | |
Public Member Functions inherited from KisNode | |
| KisNodeSP | at (quint32 index) const |
| KisBusyProgressIndicator * | busyProgressIndicator () const |
| quint32 | childCount () const |
| QList< KisNodeSP > | childNodes (const QStringList &nodeTypes, const KoProperties &properties) const |
| const KisNode * | findSymmetricClone (const KisNode *srcRoot, const KisNode *dstRoot, const KisNode *srcTarget) |
| KisNodeSP | firstChild () const |
| virtual KisPaintDeviceList | getLodCapableDevices () const |
| KisNodeGraphListener * | graphListener () const |
| int | graphSequenceNumber () const |
| void | handleKeyframeChannelFrameAboutToBeRemoved (const KisKeyframeChannel *channel, int time) |
| virtual void | handleKeyframeChannelFrameAdded (const KisKeyframeChannel *channel, int time) |
| virtual void | handleKeyframeChannelFrameChange (const KisKeyframeChannel *channel, int time) |
| void | handleKeyframeChannelFrameHasBeenRemoved (const KisKeyframeChannel *channel, int time) |
| KisFrameChangeUpdateRecipe | handleKeyframeChannelUpdateImpl (const KisKeyframeChannel *channel, int time) |
| int | index (const KisNodeSP node) const |
| void | invalidateFrames (const KisTimeSpan &range, const QRect &rect) |
| KisNode (const KisNode &rhs) | |
| KisNode (KisImageWSP image) | |
| KisNodeSP | lastChild () const |
| KisNodeSP | nextSibling () const |
| KisNodeProgressProxy * | nodeProgressProxy () const |
| KisNodeSP | parent () const |
| KisNodeSP | prevSibling () const |
| Private (KisNode *node) | |
| void | processDuplicatedClones (const KisNode *srcDuplicationRoot, const KisNode *dstDuplicationRoot, KisNode *node) |
| virtual KisProjectionLeafSP | projectionLeaf () const |
| void | requestTimeSwitch (int time) |
| virtual void | setDirty () |
| void | setDirty (const KisRegion ®ion) |
| void | setDirty (const QRect &rect) |
| void | setDirtyDontResetAnimationCache () |
| void | setDirtyDontResetAnimationCache (const QRect &rect) |
| void | setDirtyDontResetAnimationCache (const QVector< QRect > &rects) |
| setDirtyDontResetAnimationCache does almost the same thing as usual setDirty() call, but doesn't reset the animation cache (since onion skins are not used when rendering animation. | |
| void | setGraphListener (KisNodeGraphListener *graphListener) |
| void | setImage (KisImageWSP newImage) override |
| virtual void | syncLodCache () |
| ~KisNode () override | |
Public Member Functions inherited from KisBaseNode | |
| bool | belongsToIsolatedGroup () const |
| bool | check (const KoProperties &properties) const |
| bool | collapsed () const |
| int | colorLabelIndex () const |
| virtual KisPaintDeviceSP | colorSampleSourceDevice () const |
| const QString & | compositeOpId () const |
| virtual QImage | createThumbnailForFrame (qint32 w, qint32 h, int time, Qt::AspectRatioMode aspectRatioMode=Qt::IgnoreAspectRatio) |
| void | enableAnimation () |
| KisKeyframeChannel * | getKeyframeChannel (const QString &id) const |
| KisKeyframeChannel * | getKeyframeChannel (const QString &id, bool create) |
| bool | hasEditablePaintDevice () const |
| KisImageWSP | image () const |
| bool | isAnimated () const |
| bool | isEditable (bool checkVisibility=true) const |
| virtual bool | isFakeNode () const |
| bool | isIsolatedRoot () const |
| bool | isPinnedToTimeline () const |
| QMap< QString, KisKeyframeChannel * > | keyframeChannels () const |
| KisBaseNode (const KisBaseNode &rhs) | |
| KisBaseNode (KisImageWSP image) | |
| void | mergeNodeProperties (const KoProperties &properties) |
| QString | name () const |
| const KoProperties & | nodeProperties () const |
| quint8 | opacity () const |
| quint8 | percentOpacity () const |
| Private (const Private &rhs) | |
| Private (KisImageWSP p_image) | |
| void | setCollapsed (bool collapsed) |
| void | setColorLabelIndex (int index) |
| void | setCompositeOpId (const QString &compositeOpId) |
| void | setName (const QString &name) |
| void | setNodeProperty (const QString &name, const QVariant &value) |
| void | setOpacity (quint8 val) |
| void | setPercentOpacity (quint8 val) |
| void | setPinnedToTimeline (bool pinned) |
| virtual void | setUserLocked (bool l) |
| void | setUuid (const QUuid &id) |
| bool | supportsLodMoves () const |
| virtual void | updateSettings () |
| bool | userLocked () const |
| QUuid | uuid () const |
| virtual bool | visible (bool recursive=false) const |
| ~KisBaseNode () override | |
Public Member Functions inherited from KisShared | |
| bool | deref () |
| bool | ref () |
| int | refCount () |
| QAtomicInt * | sharedWeakReference () |
Public Member Functions inherited from KisIndirectPaintingSupport | |
| bool | hasTemporaryTarget () const |
| KisIndirectPaintingSupport () | |
| void | mergeToLayer (KisNodeSP layer, KUndo2Command *parentCommand, const KUndo2MagicString &transactionText, int timedID) |
| virtual void | mergeToLayerThreaded (KisNodeSP layer, KUndo2Command *parentCommand, const KUndo2MagicString &transactionText, int timedID, QVector< KisRunnableStrokeJobData * > *jobs) |
| virtual void | setCurrentColor (const KoColor &color) |
| void | setTemporaryChannelFlags (const QBitArray &channelFlags) |
| void | setTemporaryCompositeOp (const QString &id) |
| void | setTemporaryOpacity (qreal o) |
| void | setTemporarySelection (KisSelectionSP selection) |
| void | setTemporaryTarget (KisPaintDeviceSP t) |
| void | setupTemporaryPainter (KisPainter *painter) const |
| virtual bool | supportsNonIndirectPainting () const |
| KisPaintDeviceSP | temporaryTarget () const |
| FinalMergeSuspenderSP | trySuspendFinalMerge () |
| virtual | ~KisIndirectPaintingSupport () |
Public Member Functions inherited from KisDecoratedNodeInterface | |
| void | setDecorationsVisible (bool value) |
| virtual | ~KisDecoratedNodeInterface () |
Protected Member Functions | |
| void | flattenSelectionProjection (KisSelectionSP selection, const QRect &dirtyRect) const override |
| void | mergeInMaskInternal (KisPaintDeviceSP projection, KisSelectionSP effectiveSelection, const QRect &applyRect, const QRect &preparedNeedRect, KisNode::PositionToFilthy maskPos, KisRenderPassFlags flags) const override |
| bool | paintsOutsideSelection () const override |
Protected Member Functions inherited from KisMask | |
| void | apply (KisPaintDeviceSP projection, const QRect &applyRect, const QRect &needRect, PositionToFilthy maskPos, KisRenderPassFlags flags) const |
| void | baseNodeChangedCallback () override |
| virtual QRect | decorateRect (KisPaintDeviceSP &src, KisPaintDeviceSP &dst, const QRect &rc, PositionToFilthy maskPos, KisRenderPassFlags flags) const |
| KisKeyframeChannel * | requestKeyframeChannel (const QString &id) override |
| bool | supportsKeyframeChannel (const QString &id) override |
Protected Member Functions inherited from KisNode | |
| virtual QRect | accessRect (const QRect &rect, PositionToFilthy pos=N_FILTHY) const |
| void | addKeyframeChannel (KisKeyframeChannel *channel) override |
| void | baseNodeChangedCallback () override |
| void | baseNodeCollapsedChangedCallback () override |
| void | baseNodeInvalidateAllFramesCallback () override |
| virtual void | childNodeChanged (KisNodeSP changedChildNode) |
| virtual KisFrameChangeUpdateRecipe | handleKeyframeChannelFrameAboutToBeRemovedImpl (const KisKeyframeChannel *channel, int time) |
| void | notifyParentVisibilityChanged (bool value) override |
| KisBaseNodeSP | parentCallback () const override |
Protected Member Functions inherited from KisBaseNode | |
| void | setSupportsLodMoves (bool value) |
Protected Member Functions inherited from KisShared | |
| KisShared () | |
| ~KisShared () | |
Protected Member Functions inherited from KisIndirectPaintingSupport | |
| void | lockTemporaryTargetForWrite () const |
| void | mergeToLayerImpl (KisPaintDeviceSP dst, KUndo2Command *parentCommand, const KUndo2MagicString &transactionText, int timedID, bool cleanResources, WriteLockerSP sharedWriteLock, QVector< KisRunnableStrokeJobData * > *jobs) |
| void | releaseResources () |
| QString | temporaryCompositeOp () const |
| virtual void | writeMergeData (KisPainter *painter, KisPaintDeviceSP src, const QRect &rc) |
Private Attributes | |
| Private *const | m_d |
Additional Inherited Members | |
Public Types inherited from KisNode | |
| enum | PositionToFilthy { N_ABOVE_FILTHY = 0x08 , N_FILTHY_PROJECTION = 0x20 , N_FILTHY = 0x40 , N_BELOW_FILTHY = 0x80 } |
Public Types inherited from KisBaseNode | |
| typedef QList< Property > | PropertyList |
Public Types inherited from KisIndirectPaintingSupport | |
| using | FinalMergeSuspenderSP = QSharedPointer<FinalMergeSuspender> |
Signals inherited from KisNode | |
| void | sigNodeChangedInternal () |
Signals inherited from KisBaseNode | |
| void | keyframeChannelAdded (KisKeyframeChannel *channel) |
| void | opacityChanged (quint8 value) |
Protected Types inherited from KisIndirectPaintingSupport | |
| using | WriteLockerSP = QSharedPointer<WriteLocker> |
An selection mask is a single channel mask that applies a particular selection to the layer the mask belongs to. A selection can contain both vector and pixel selection components.
Definition at line 32 of file kis_selection_mask.cpp.
| KisSelectionMask::KisSelectionMask | ( | KisImageWSP | image, |
| const QString & | name = QString() ) |
Create an empty selection mask. There is filter and no layer associated with this mask.
Definition at line 51 of file kis_selection_mask.cpp.
References connect(), KisSignalCompressor::FIRST_ACTIVE, KisImageConfigNotifier::instance(), m_d, setActive(), KisBaseNode::setSupportsLodMoves(), slotConfigChanged(), and slotSelectionChangedCompressed().
|
override |
Definition at line 80 of file kis_selection_mask.cpp.
References m_d.
| KisSelectionMask::KisSelectionMask | ( | const KisSelectionMask & | rhs | ) |
Definition at line 67 of file kis_selection_mask.cpp.
References connect(), KisImageConfigNotifier::instance(), m_d, KisSignalCompressor::POSTPONE, slotConfigChanged(), and slotSelectionChangedCompressed().
|
overridevirtual |
Accept the KisNodeVisitor (for the Visitor design pattern), should call the correct function on the KisNodeVisitor for this node type, so you need to override it for all leaf classes in the node inheritance hierarchy.
return false if the visitor could not successfully act on this node instance.
Reimplemented from KisNode.
Definition at line 156 of file kis_selection_mask.cpp.
References v.
|
overridevirtual |
Accept the KisNodeVisitor (for the Visitor design pattern), should call the correct function on the KisProcessingVisitor for this node type, so you need to override it for all leaf classes in the node inheritance hierarchy.
The processing visitor differs from node visitor in the way that it accepts undo adapter, that allows the processing to be multithreaded
Reimplemented from KisNode.
Definition at line 161 of file kis_selection_mask.cpp.
References KisProcessingVisitor::visit().
| bool KisSelectionMask::active | ( | ) | const |
Definition at line 190 of file kis_selection_mask.cpp.
References KoProperties::boolProperty(), and KisBaseNode::nodeProperties().
|
overridevirtual |
Some filters will cause a change of pixels those are outside a requested rect. E.g. we change a rect of 2x2, then we want to apply a convolution filter with kernel 4x4 (changeRect is (2+2*3)x(2+2*3)=8x8) to that area. The rect that should be updated on the layer will be exactly 8x8. More than that the needRect for that update will be 14x14. See needRect.
Reimplemented from KisMask.
Definition at line 233 of file kis_selection_mask.cpp.
|
inlineoverridevirtual |
Implements KisNode.
Definition at line 38 of file kis_selection_mask.h.
|
overridevirtual |
Implements KisDecoratedNodeInterface.
Definition at line 275 of file kis_selection_mask.cpp.
References KisSelection::isVisible, and KisMask::selection.
|
overridevirtual |
Returns the exact bounds of where the actual data resides in this node.
Reimplemented from KisMask.
Definition at line 265 of file kis_selection_mask.cpp.
References extent().
|
overridevirtual |
The extent and bounds of the mask are those of the selection inside
Reimplemented from KisMask.
Definition at line 241 of file kis_selection_mask.cpp.
References KisDefaultBoundsBase::bounds(), KisPaintDevice::defaultBounds(), KisBaseNode::extent(), KisNode::parent, KisSelection::pixelSelection, KisBaseNode::projection(), and KisMask::selection.
|
overrideprotectedvirtual |
A special callback for calling selection->updateProjection() during the projection calculation process. Some masks (e.g. selection masks) don't need it, because they do it separately.
Reimplemented from KisMask.
Definition at line 302 of file kis_selection_mask.cpp.
References KisMask::selection.
|
overridevirtual |
Reimplemented from KisEffectMask.
Definition at line 86 of file kis_selection_mask.cpp.
References KisIconUtils::loadIcon().
|
overrideprotectedvirtual |
Reimplemented from KisMask.
Definition at line 90 of file kis_selection_mask.cpp.
References KisPainter::bitBlt(), KisPaintDevice::defaultBounds(), KisCachedPaintDevice::Guard::device(), KisDefaultBoundsBase::externalFrameActive(), KisPixelSelection::invert(), KisSelection::isVisible, m_d, KisPaintDevice::makeCloneFromRough(), KisSelection::pixelSelection, KisMask::projection(), s1, KisSelection::selectedRect(), KisMask::selection, KisPaintDevice::setDefaultPixel(), and KisPainter::setSelection().
|
overridevirtual |
Some filters need pixels outside the current processing rect to compute the new value (for instance, convolution filters) See changeRect See accessRect
Reimplemented from KisMask.
Definition at line 225 of file kis_selection_mask.cpp.
| void KisSelectionMask::notifySelectionChangedCompressed | ( | ) |
This method works like the one in KisSelection, but it compressed the incoming events instead of processing each of them separately.
Definition at line 270 of file kis_selection_mask.cpp.
References m_d.
|
overrideprotectedvirtual |
Reimplemented from KisMask.
Definition at line 136 of file kis_selection_mask.cpp.
|
inline |
Definition at line 35 of file kis_selection_mask.cpp.
|
overridevirtual |
Return a the properties of this base node (locked, visible etc, with the right icons for their representation and their state.
Subclasses can extend this list with new properties, like opacity for layers or visualized for masks.
The order of properties is, unfortunately, for now, important, so take care which properties superclasses of your class define.
KisBaseNode defines visible = 0, locked = 1 KisLayer defines opacity = 2, compositeOp = 3 KisMask defines active = 2 (KisMask does not inherit kislayer)
Reimplemented from KisBaseNode.
Definition at line 166 of file kis_selection_mask.cpp.
References active(), KisLayerPropertiesIcons::getProperty(), KisBaseNode::sectionModelProperties(), and KisLayerPropertiesIcons::selectionActive.
| void KisSelectionMask::setActive | ( | bool | active | ) |
WARNING: we have a direct link to the image here, but we must not use it for notification until we are a part of the node graph! Notifications should be emitted iff we have graph listener link set up.
Definition at line 195 of file kis_selection_mask.cpp.
References active(), KisMask::baseNodeChangedCallback(), KisUndoAdapter::emitSelectionChanged(), KisNode::graphListener, KisBaseNode::image, KisNode::parent, KisLayer::selectionMask(), setActive(), KisBaseNode::setNodeProperty(), and KisImage::undoAdapter().
| void KisDecoratedNodeInterface::setDecorationsVisible | ( | bool | value | ) |
Convenience override for setDecorationsVisible()
Definition at line 38 of file KisDecoratedNodeInterface.cpp.
|
overridevirtual |
Enable or disable writing decorative information into layer stack.
Implements KisDecoratedNodeInterface.
Definition at line 280 of file kis_selection_mask.cpp.
References decorationsVisible(), extent(), KisMask::selection, KisNode::setDirty(), KisSelection::setVisible(), and value().
|
virtual |
Enable or disable writing decorative information into layer stack.
Implements KisDecoratedNodeInterface.
Add the given rects to the set of dirty rects for this node; this percolates up to parent nodes all the way to the root node.
Reimplemented from KisNode.
Definition at line 293 of file kis_selection_mask.cpp.
References KisBaseNode::image, KisImage::overlaySelectionMask(), and KisNode::setDirty().
|
overridevirtual |
Change the section model properties.
Reimplemented from KisBaseNode.
Definition at line 173 of file kis_selection_mask.cpp.
References KisBaseNode::properties, setActive(), and KisBaseNode::setSectionModelProperties().
| void KisSelectionMask::setSelection | ( | KisSelectionSP | selection | ) |
Set the selection of this adjustment layer to a copy of selection.
Definition at line 141 of file kis_selection_mask.cpp.
References KoColorSpaceRegistry::alpha8(), bounds, KisPainter::end(), KisFillPainter::fillRect(), KisBaseNode::image, KoColorSpaceRegistry::instance(), MAX_SELECTED, KisMask::selection, KisNode::setDirty(), and KisMask::setSelection().
|
overridevirtual |
Set the visible status of this node. Visible nodes are active in the graph (except for selections masks which can be active while hidden), that is to say, they are taken into account when merging. Invisible nodes play no role in the final image , but will be modified when modifying all layers, for instance when cropping.
Toggling the visibility of a node will not automatically lead to recomposition.
| visible | the new visibility state |
| isLoading | if true, the property is set during loading. |
Reimplemented from KisBaseNode.
Definition at line 179 of file kis_selection_mask.cpp.
References KisMask::selection, KisBaseNode::setNodeProperty(), KisSelection::setVisible(), and KisBaseNode::visible().
| void KisSelectionMask::slotConfigChanged | ( | ) |
| void KisSelectionMask::slotConfigChangedImpl | ( | bool | blockUpdates | ) |
| void KisSelectionMask::slotSelectionChangedCompressed | ( | ) |
| KisCachedSelection KisSelectionMask::cachedSelection |
Definition at line 42 of file kis_selection_mask.cpp.
|
private |
Definition at line 91 of file kis_selection_mask.h.
| KoColor KisSelectionMask::maskColor |
Definition at line 44 of file kis_selection_mask.cpp.
| KisCachedPaintDevice KisSelectionMask::paintDeviceCache |
Definition at line 41 of file kis_selection_mask.cpp.
| KisSelectionMask* KisSelectionMask::q |
Definition at line 40 of file kis_selection_mask.cpp.
| KisThreadSafeSignalCompressor* KisSelectionMask::updatesCompressor |
Definition at line 43 of file kis_selection_mask.cpp.