26#include <kritaimage_export.h>
59class KRITAIMAGE_EXPORT
KisImage :
public QObject,
103 void setWorkingThreadsLimit(
int value);
108 int workingThreadsLimit()
const;
120 KisImage *clone(
bool exactCopy =
false);
122 void copyFromImage(
const KisImage &rhs);
133 void copyFromImageImpl(
const KisImage &rhs,
int policy);
176 void immediateLockForReadOnly();
210 bool hasOverlaySelectionMask()
const;
221 QString nextLayerName(
const QString &baseName =
"")
const;
238 void resizeImage(
const QRect& newRect);
254 void cropImage(
const QRect& newRect);
263 void purgeUnusedData(
bool isCancellable);
279 void cropNode(
KisNodeSP node,
const QRect& newRect,
const bool activeFrameOnly =
false);
293 void scaleImage(
const QSize &size, qreal xres, qreal yres,
KisFilterStrategy *filterStrategy);
322 void rotateImage(
double radians);
351 void shear(
double angleX,
double angleY);
373 void convertImageProjectionColorSpace(
const KoColorSpace *dstColorSpace);
378 void convertImageColorSpace(
const KoColorSpace *dstColorSpace,
380 KoColorConversionTransformation::ConversionFlags conversionFlags);
388 void unifyLayersColorSpace();
393 void convertLayerColorSpace(
KisNodeSP node,
396 KoColorConversionTransformation::ConversionFlags conversionFlags);
423 bool assignImageProfile(
const KoColorProfile *profile,
bool blockAllUpdates =
false);
471 void setModifiedWithoutUndo();
492 void setResolution(
double xres,
double yres);
499 QPointF documentToPixel(
const QPointF &documentCoord)
const;
506 QPoint documentToImagePixelFloored(
const QPointF &documentCoord)
const;
513 QRectF documentToPixel(
const QRectF &documentRect)
const;
520 QPointF pixelToDocument(
const QPointF &pixelCoord)
const;
528 QPointF pixelToDocument(
const QPoint &pixelCoord)
const;
535 QRectF pixelToDocument(
const QRectF &pixelCoord)
const;
540 qint32 width()
const;
545 qint32 height()
const;
551 return QSize(width(), height());
569 qint32 nlayers()
const;
575 qint32 nHiddenLayers()
const;
581 qint32 nChildLayers()
const;
608 QRect
bounds()
const override;
615 QRect effectiveLodBounds()
const;
618 void notifyLayersChanged();
624 void setDefaultProjectionColor(
const KoColor &color);
629 KoColor defaultProjectionColor()
const;
644 void removeAnnotation(
const QString& type);
657 void notifyAboutToBeDeleted();
666 bool canReselectGlobalSelection();
700 void setWrapAroundModePermitted(
bool value);
710 bool wrapAroundModePermitted()
const;
730 bool wrapAroundModeActive()
const;
737 int currentLevelOfDetail()
const;
744 QPointF mirrorAxesCenter()
const;
750 void setMirrorAxesCenter(
const QPointF &
value)
const;
757 void setAllowMasksOnRootNode(
bool value);
762 bool allowMasksOnRootNode()
const;
771 void explicitRegenerateLevelOfDetail();
805 bool startIsolatedMode(
KisNodeSP node,
bool isolateLayer,
bool isolateGroup);
814 std::optional<KisRelativeContentLightLevelInformation> relativeContentLightLevelInformation()
const;
816 void setRelativeContentLightLevelInformation(
const std::optional<KisRelativeContentLightLevelInformation> clli);
823 std::optional<KisColorVolumeInformation> colorVolumeInformation()
const;
826 void setColorVolumeInformation(
const std::optional<KisColorVolumeInformation> cvi);
835 std::optional<double> hdrReferenceWhiteLightLevel()
const;
838 void setHdrReferenceWhiteLightLevel(
const std::optional<double>
value);
841 void stopIsolatedMode();
846 bool isIsolatingLayer()
const;
847 bool isIsolatingGroup()
const;
1018 bool isIdle(
bool allowLocked =
false);
1036 void barrierLock(
bool readOnly =
false);
1048 bool tryBarrierLock(
bool readOnly =
false);
1195 void initialRefreshGraph();
1226 void requestUndoDuringStroke();
1238 void requestRedoDuringStroke();
1249 void requestStrokeCancellation();
1266 void requestStrokeEnd();
1275 void requestStrokeEndActiveNode();
1289 void resizeImageImpl(
const QRect& newRect,
bool cropLayers);
1295 bool resizeImage,
double angleX,
double angleY,
KisSelectionSP selection);
1297 bool resizeImage,
double angleX,
double angleY,
KisSelectionSP selection);
1304 void setSize(
const QSize& size);
1306 void setProjectionColorSpace(
const KoColorSpace * colorSpace);
float value(const T *src, size_t ch)
void sigLayersChangedAsync()
void refreshHiddenArea(KisNodeSP rootNode, const QRect &preparedArea)
void sigNodeCollapsedChanged()
void sigProfileChanged(const KoColorProfile *profile)
void sigRequestNodeReselection(KisNodeSP activeNode, const KisNodeList &selectedNodes)
void sigStrokeCancellationRequested()
void sigRedoDuringStrokeRequested()
void sigInternalStopIsolatedModeRequested()
void sigIsolatedModeChanged()
void safeRemoveTwoNodes(KisNodeSP node1, KisNodeSP node2)
void sigRemoveNodeAsync(KisNodeSP node)
void sigResolutionChanged(double xRes, double yRes)
void sigColorSpaceChanged(const KoColorSpace *cs)
void sigStrokeEndRequested()
void sigUndoDuringStrokeRequested()
void sigNodeChanged(KisNodeSP node)
void sigAboutToBeDeleted()
void sigStrokeEndRequestedActiveNodeFiltered()
void cropNodes(KisNodeList nodes, const QRect &newRect, const bool activeFrameOnly=false)
void sigImageModifiedWithoutUndo()
void sigProofingConfigChanged()
void sigImageUpdated(const QRect &)
void sigNodeAddedAsync(KisNodeSP node, KisNodeAdditionFlags flags)
KisImage & operator=(const KisImage &rhs)
void sigSizeChanged(const QPointF &oldStillPoint, const QPointF &newStillPoint)
KisKeyframeChannel stores and manages KisKeyframes. Maps units of time to virtual keyframe values....
virtual void notifyProjectionUpdated(const QRect &rc)=0
The KisProofingConfiguration struct Little struct that stores the proofing configuration for a given ...
virtual const KUndo2Command * lastExecutedCommand() const =0
virtual KisPostExecutionUndoAdapter * postExecutionUndoAdapter() const =0
virtual KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy)=0
virtual void endStroke(KisStrokeId id)=0
virtual void addJob(KisStrokeId id, KisStrokeJobData *data)=0
virtual bool cancelStroke(KisStrokeId id)=0
virtual KisProjectionUpdatesFilterCookie addProjectionUpdatesFilter(KisProjectionUpdatesFilterSP filter)=0
virtual void enableDirtyRequests()=0
virtual void notifyBatchUpdateStarted()=0
virtual void disableDirtyRequests()=0
virtual bool hasUpdatesRunning() const =0
virtual void notifyBatchUpdateEnded()=0
virtual void blockUpdates()=0
virtual KisProjectionUpdatesFilterCookie currentProjectionUpdatesFilter() const =0
virtual KisProjectionUpdatesFilterSP removeProjectionUpdatesFilter(KisProjectionUpdatesFilterCookie cookie)=0
virtual void disableUIUpdates()=0
virtual void notifyUIUpdateCompleted(const QRect &rc)=0
virtual void unblockUpdates()=0
void refreshGraphAsync(KisNodeSP root=nullptr, KisProjectionUpdateFlags flags=KisProjectionUpdateFlag::None)
virtual QVector< QRect > enableUIUpdates()=0
static QImage convertToQImage(char *buffer, qint32 width, qint32 height)
save the QImages as png files to directory image_tests
vKisAnnotationSP::iterator vKisAnnotationSP_it
void * KisProjectionUpdatesFilterCookie
virtual void notifySelectionChanged()
virtual void keyframeChannelHasBeenAdded(KisNode *node, KisKeyframeChannel *channel)
virtual KisNode * graphOverlayNode() const
virtual void aboutToRemoveANode(KisNode *parent, int index)
virtual void keyframeChannelAboutToBeRemoved(KisNode *node, KisKeyframeChannel *channel)
virtual void aboutToAddANode(KisNode *parent, int index)
virtual void requestProjectionUpdate(KisNode *node, const QVector< QRect > &rects, KisProjectionUpdateFlags flags)
virtual void nodeHasBeenAdded(KisNode *parent, int index, KisNodeAdditionFlags flags)
virtual void nodeChanged(KisNode *node)
virtual void invalidateFrames(const KisTimeSpan &range, const QRect &rect)
virtual void requestTimeSwitch(int time)
virtual void invalidateAllFrames()
virtual void nodeCollapsedChanged(KisNode *node)