summaryrefslogtreecommitdiffstats
path: root/krita/core/kis_paint_device.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-06-26 00:29:37 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-06-26 00:29:37 +0000
commit2785103a6bd4de55bd26d79e34d0fdd4b329a73a (patch)
treec2738b1095bfdb263da27bc1391403d829522a14 /krita/core/kis_paint_device.h
parentf008adb5a77e094eaf6abf3fc0f36958e66896a5 (diff)
downloadkoffice-2785103a6bd4de55bd26d79e34d0fdd4b329a73a.tar.gz
koffice-2785103a6bd4de55bd26d79e34d0fdd4b329a73a.zip
Remove krita* in preparation for name switch from Krita to Chalk
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1238361 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'krita/core/kis_paint_device.h')
-rw-r--r--krita/core/kis_paint_device.h597
1 files changed, 0 insertions, 597 deletions
diff --git a/krita/core/kis_paint_device.h b/krita/core/kis_paint_device.h
deleted file mode 100644
index 653c013a..00000000
--- a/krita/core/kis_paint_device.h
+++ /dev/null
@@ -1,597 +0,0 @@
-/*
- * copyright (c) 2002 patrick julien <[email protected]>
- *
- * this program is free software; you can redistribute it and/or modify
- * it under the terms of the gnu general public license as published by
- * the free software foundation; either version 2 of the license, or
- * (at your option) any later version.
- *
- * this program is distributed in the hope that it will be useful,
- * but without any warranty; without even the implied warranty of
- * merchantability or fitness for a particular purpose. see the
- * gnu general public license for more details.
- *
- * you should have received a copy of the gnu general public license
- * along with this program; if not, write to the free software
- * foundation, inc., 675 mass ave, cambridge, ma 02139, usa.
- */
-#ifndef KIS_PAINT_DEVICE_IMPL_H_
-#define KIS_PAINT_DEVICE_IMPL_H_
-
-#include <tqcolor.h>
-#include <tqobject.h>
-#include <tqpixmap.h>
-#include <tqptrlist.h>
-#include <tqrect.h>
-#include <tqvaluelist.h>
-#include <tqstring.h>
-
-#include "kis_types.h"
-#include "kdebug.h"
-#include "kis_global.h"
-#include "kis_image.h"
-#include "kis_colorspace.h"
-#include "kis_canvas_controller.h"
-#include "kis_color.h"
-#include <koffice_export.h>
-
-class DCOPObject;
-
-class TQImage;
-class TQSize;
-class TQPoint;
-class TQWMatrix;
-class TQTimer;
-
-class KNamedCommand;
-
-class KoStore;
-
-class KisExifInfo;
-class KisHLineIteratorPixel;
-class KisImage;
-class KisRectIteratorPixel;
-class KisVLineIteratorPixel;
-class KisRandomAccessorPixel;
-class KisRandomSubAccessorPixel;
-class KisUndoAdapter;
-class KisFilter;
-class KisDataManager;
-typedef KSharedPtr<KisDataManager> KisDataManagerSP;
-
-class KisMemento;
-typedef KSharedPtr<KisMemento> KisMementoSP;
-
-
-/**
- * A paint device contains the actual pixel data and offers methods
- * to read and write pixels. A paint device has an integer x,y position
- * (i.e., are not positioned on the image with sub-pixel accuracy).
- * A KisPaintDevice doesn't have any fixed size, the size change dynamicaly
- * when pixels are accessed by an iterator.
- */
-class KRITACORE_EXPORT KisPaintDevice
- : public TQObject
- , public KShared
-{
-
- Q_OBJECT
- TQ_OBJECT
-
-public:
-
- /**
- * Create a new paint device with the specified colorspace.
- *
- * @param colorSpace the colorspace of this paint device
- * @param name for debugging purposes
- */
- KisPaintDevice(KisColorSpace * colorSpace, const char * name = 0);
-
- /**
- * Create a new paint device with the specified colorspace. The
- * tqparentLayer will be notified of changes to this paint device.
- *
- * @param tqparentLayer the layer that contains this paint device.
- * @param colorSpace the colorspace of this paint device
- * @param name for debugging purposes
- */
- KisPaintDevice(KisLayer *tqparentLayer, KisColorSpace * colorSpace, const char * name = 0);
-
- KisPaintDevice(const KisPaintDevice& rhs);
- virtual ~KisPaintDevice();
- virtual DCOPObject *dcopObject();
-
- void lock(bool lock) { m_lock = lock; }
-
-public:
-
- /**
- * Write the pixels of this paint device into the specified file store.
- */
- virtual bool write(KoStore *store);
-
- /**
- * Fill this paint device with the pixels from the specified file store.
- */
- virtual bool read(KoStore *store);
-
-public:
-
- /**
- * Moves the device to these new coordinates (so no incremental move or so)
- */
- virtual void move(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Convenience method for the above
- */
- virtual void move(const TQPoint& pt);
-
- /**
- * Move the paint device to the specified location and make it possible to
- * undo the move.
- */
- virtual KNamedCommand * moveCommand(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Returns true of x,y is within the extent of this paint device
- */
- bool tqcontains(TQ_INT32 x, TQ_INT32 y) const;
-
- /**
- * Convenience method for the above
- */
- bool tqcontains(const TQPoint& pt) const;
-
- /**
- * Retrieve the bounds of the paint device. The size is not exact,
- * but may be larger if the underlying datamanager works that way.
- * For instance, the tiled datamanager keeps the extent to the nearest
- * multiple of 64.
- */
- virtual void extent(TQ_INT32 &x, TQ_INT32 &y, TQ_INT32 &w, TQ_INT32 &h) const;
- virtual TQRect extent() const;
-
- /**
- * XXX: This should be a temporay hack, awaiting a proper fix.
- *
- * Indicates whether the extent really represents the extent. For example,
- * the KisBackground checkerboard pattern is generated by filling the
- * default tile but it will return an empty extent.
- */
- bool extentIsValid() const;
-
- /// Convience method for the above
- void setExtentIsValid(bool isValid);
-
- /**
- * Get the exact bounds of this paint device. This may be very slow,
- * especially on larger paint devices because it does a linear scanline search.
- */
- virtual void exactBounds(TQ_INT32 &x, TQ_INT32 &y, TQ_INT32 &w, TQ_INT32 &h) const;
- virtual TQRect exactBounds() const;
- virtual TQRect exactBoundsOldMethod() const;
- virtual TQRect exactBoundsImprovedOldMethod() const;
-
- /**
- * Cut the paint device down to the specified rect
- */
- void crop(TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h);
-
- /// Convience method for the above
- void crop(TQRect r);
-
- /**
- * Complete erase the current paint device. Its size will become 0.
- */
- virtual void clear();
-
- /**
- * Fill the given rectangle with the given pixel.
- */
- void fill(TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h, const TQ_UINT8 *fillPixel);
-
- /**
- * Read the bytes representing the rectangle described by x, y, w, h into
- * data. If data is not big enough, Krita will gladly overwrite the rest
- * of your precious memory.
- *
- * Since this is a copy, you need to make sure you have enough memory.
- *
- * Reading from areas not previously initialized will read the default
- * pixel value into data but not initialize that region.
- */
- virtual void readBytes(TQ_UINT8 * data, TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h);
-
- /**
- * Copy the bytes in data into the rect specified by x, y, w, h. If the
- * data is too small or uninitialized, Krita will happily read parts of
- * memory you never wanted to be read.
- *
- * If the data is written to areas of the paint device not previously initialized,
- * the paint device will grow.
- */
- virtual void writeBytes(const TQ_UINT8 * data, TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h);
-
- /**
- * Get the number of contiguous columns starting at x, valid for all values
- * of y between minY and maxY.
- */
- TQ_INT32 numContiguousColumns(TQ_INT32 x, TQ_INT32 minY, TQ_INT32 maxY);
-
- /**
- * Get the number of contiguous rows starting at y, valid for all values
- * of x between minX and maxX.
- */
- TQ_INT32 numContiguousRows(TQ_INT32 y, TQ_INT32 minX, TQ_INT32 maxX);
-
- /**
- * Get the row stride at pixel (x, y). This is the number of bytes to add to a
- * pointer to pixel (x, y) to access (x, y + 1).
- */
- TQ_INT32 rowStride(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Get a read-only pointer to pixel (x, y).
- */
- KDE_DEPRECATED const TQ_UINT8* pixel(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Get a read-write pointer to pixel (x, y).
- */
- KDE_DEPRECATED TQ_UINT8* writablePixel(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Converts the paint device to a different colorspace
- */
- virtual void convertTo(KisColorSpace * dstColorSpace, TQ_INT32 renderingIntent = INTENT_PERCEPTUAL);
-
- /**
- * Changes the profile of the colorspace of this paint device to the given
- * profile. If the given profile is 0, nothing happens.
- */
- virtual void setProfile(KisProfile * profile);
-
- /**
- * Fill this paint device with the data from img; starting at (offsetX, offsetY)
- * @param srcProfileName name of the RGB profile to interpret the img as. "" is interpreted as sRGB
- */
- virtual void convertFromTQImage(const TQImage& img, const TQString &srcProfileName, TQ_INT32 offsetX = 0, TQ_INT32 offsetY = 0);
-
- /**
- * Create an RGBA TQImage from a rectangle in the paint device.
- *
- * @param x Left coordinate of the rectangle
- * @param y Top coordinate of the rectangle
- * @param w Width of the rectangle in pixels
- * @param h Height of the rectangle in pixels
- * @param dstProfile RGB profile to use in conversion. May be 0, in which
- * case it's up to the colour strategy to choose a profile (most
- * like sRGB).
- * @param exposure The exposure setting used to render a preview of a high dynamic range image.
- */
- virtual TQImage convertToTQImage(KisProfile * dstProfile, TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h, float exposure = 0.0f);
-
- /**
- * Create an RGBA TQImage from a rectangle in the paint device. The rectangle is defined by the tqparent image's bounds.
- *
- * @param dstProfile RGB profile to use in conversion. May be 0, in which
- * case it's up to the colour strategy to choose a profile (most
- * like sRGB).
- * @param exposure The exposure setting used to render a preview of a high dynamic range image.
- */
- virtual TQImage convertToTQImage(KisProfile * dstProfile, float exposure = 0.0f);
-
- /**
- * Creates a paint device thumbnail of the paint device, retaining the aspect ratio.
- * The width and height of the returned device won't exceed \p maxw and \p maxw, but they may be smaller.
- */
-
- KisPaintDeviceSP createThumbnailDevice(TQ_INT32 w, TQ_INT32 h);
-
- /**
- * Creates a thumbnail of the paint device, retaining the aspect ratio.
- * The width and height of the returned TQImage won't exceed \p maxw and \p maxw, but they may be smaller.
- * The colors are not corrected for display!
- */
- virtual TQImage createThumbnail(TQ_INT32 maxw, TQ_INT32 maxh);
-
-
- /**
- * Fill c and opacity with the values found at x and y.
- *
- * The color values will be transformed from the profile of
- * this paint device to the display profile.
- *
- * @return true if the operation was succesful.
- */
- bool pixel(TQ_INT32 x, TQ_INT32 y, TQColor *c, TQ_UINT8 *opacity);
-
-
- /**
- * Fill kc with the values found at x and y. This method differs
- * from the above in using KisColor, which can be of any colorspace
- *
- * The color values will be transformed from the profile of
- * this paint device to the display profile.
- *
- * @return true if the operation was succesful.
- */
- bool pixel(TQ_INT32 x, TQ_INT32 y, KisColor * kc);
-
- /**
- * Return the KisColor of the pixel at x,y.
- */
- KisColor colorAt(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Set the specified pixel to the specified color. Note that this
- * bypasses KisPainter. the PaintDevice is here used as an equivalent
- * to TQImage, not TQPixmap. This means that this is not undoable; also,
- * there is no compositing with an existing value at this location.
- *
- * The color values will be transformed from the display profile to
- * the paint device profile.
- *
- * Note that this will use 8-bit values and may cause a significant
- * degradation when used on 16-bit or hdr quality images.
- *
- * @return true if the operation was succesful
- *
- */
- bool setPixel(TQ_INT32 x, TQ_INT32 y, const TQColor& c, TQ_UINT8 opacity);
-
- bool setPixel(TQ_INT32 x, TQ_INT32 y, const KisColor& kc);
-
- KisColorSpace * colorSpace() const;
-
- KisDataManagerSP dataManager() const;
-
- /**
- * Replace the pixel data, color strategy, and profile.
- */
- void setData(KisDataManagerSP data, KisColorSpace * colorSpace);
-
- /**
- * The X offset of the paint device
- */
- TQ_INT32 getX() const;
-
- /**
- * The Y offset of the paint device
- */
- TQ_INT32 getY() const;
-
- /**
- * Return the X offset of the paint device
- */
- void setX(TQ_INT32 x);
-
- /**
- * Return the Y offset of the paint device
- */
- void setY(TQ_INT32 y);
-
-
- /**
- * Return the number of bytes a pixel takes.
- */
- virtual TQ_INT32 pixelSize() const;
-
- /**
- * Return the number of channels a pixel takes
- */
- virtual TQ_INT32 nChannels() const;
-
- /**
- * Return the image that contains this paint device, or 0 if it is not
- * part of an image. This is the same as calling tqparentLayer()->image().
- */
- KisImage *image() const;
-
- /**
- * Returns the KisLayer that contains this paint device, or 0 if this is not
- * part of a layer.
- */
- KisLayer *tqparentLayer() const;
-
- /**
- * Set the KisLayer that contains this paint device, or 0 if this is not
- * part of a layer.
- */
- void setParentLayer(KisLayer *tqparentLayer);
-
- /**
- * Add the specified rect top the tqparent layer (if present)
- */
- virtual void setDirty(const TQRect & rc);
-
- /**
- * Set the tqparent layer completely dirty, if this paint device has one.
- */
- virtual void setDirty();
-
-
- /**
- * Mirror the device along the X axis
- */
- void mirrorX();
- /**
- * Mirror the device along the Y axis
- */
- void mirrorY();
-
- KisMementoSP getMemento();
- void rollback(KisMementoSP memento);
- void rollforward(KisMementoSP memento);
-
- /**
- * This function return an iterator which points to the first pixel of an rectangle
- */
- KisRectIteratorPixel createRectIterator(TQ_INT32 left, TQ_INT32 top, TQ_INT32 w, TQ_INT32 h, bool writable);
-
- /**
- * This function return an iterator which points to the first pixel of a horizontal line
- */
- KisHLineIteratorPixel createHLineIterator(TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, bool writable);
-
- /**
- * This function return an iterator which points to the first pixel of a vertical line
- */
- KisVLineIteratorPixel createVLineIterator(TQ_INT32 x, TQ_INT32 y, TQ_INT32 h, bool writable);
-
- /**
- * This function creates a random accessor which allow to randomly access any pixels on
- * the paint device.
- * <b>Note:</b> random access is way slower than iterators, allways use iterators whenever
- * you can
- */
- KisRandomAccessorPixel createRandomAccessor(TQ_INT32 x, TQ_INT32 y, bool writable);
-
- /**
- * This function create a random accessor which can easily access to sub pixel values.
- */
- KisRandomSubAccessorPixel createRandomSubAccessor();
-
- /** Get the current selection or create one if this paintdevice hasn't got a selection yet. */
- KisSelectionSP selection();
-
- /** Adds the specified selection to the currently active selection for this paintdevice */
- void addSelection(KisSelectionSP selection);
-
- /** Subtracts the specified selection from the currently active selection for this paindevice */
- void subtractSelection(KisSelectionSP selection);
-
- /** Whether there is a valid selection for this paintdevice. */
- bool hasSelection();
-
- /** Whether the previous selection was deselected. */
- bool selectionDeselected();
-
- /** Deselect the selection for this paintdevice. */
- void deselect();
-
- /** Reinstates the old selection */
- void reselect();
-
- /** Clear the selected pixels from the paint device */
- void clearSelection();
-
- /**
- * Apply a tqmask to the image data, i.e. multiply each pixel's opacity by its
- * selectedness in the tqmask.
- */
- void applySelectionMask(KisSelectionSP tqmask);
-
- /**
- * Sets the selection of this paint device to the new selection,
- * returns the old selection, if there was an old selection,
- * otherwise 0
- */
- KisSelectionSP setSelection(KisSelectionSP selection);
-
- /**
- * Notify the owning image that the current selection has changed.
- */
- void emitSelectionChanged();
-
- /**
- * Notify the owning image that the current selection has changed.
- *
- * @param r the area for which the selection has changed
- */
- void emitSelectionChanged(const TQRect& r);
-
-
- KisUndoAdapter *undoAdapter() const;
-
- /**
- * Return the exifInfo associated with this layer. If no exif infos are
- * available, the function will create it.
- */
- KisExifInfo* exifInfo();
- /**
- * This function return true if the layer has exif info associated with it.
- */
- bool hasExifInfo() { return m_exifInfo != 0; }
-signals:
- void positionChanged(KisPaintDeviceSP device);
- void ioProgress(TQ_INT8 percentage);
- void profileChanged(KisProfile * profile);
-
-private slots:
-
- void runBackgroundFilters();
-
-private:
- KisPaintDevice& operator=(const KisPaintDevice&);
-
-protected:
- KisDataManagerSP m_datamanager;
-
-private:
- /* The KisLayer that contains this paint device, or 0 if this is not
- * part of a layer.
- */
- KisLayer *m_parentLayer;
-
- bool m_extentIsValid;
-
- TQ_INT32 m_x;
- TQ_INT32 m_y;
- KisColorSpace * m_colorSpace;
- // Cached for quick access
- TQ_INT32 m_pixelSize;
- TQ_INT32 m_nChannels;
-
- // Whether the selection is active
- bool m_hasSelection;
- bool m_selectionDeselected;
-
- // Contains the actual selection. For now, there can be only
- // one selection per layer. XXX: is this a limitation?
- KisSelectionSP m_selection;
-
- DCOPObject * m_dcop;
-
- KisExifInfo* m_exifInfo;
-
- TQValueList<KisFilter*> m_longRunningFilters;
- TQTimer * m_longRunningFilterTimer;
-
- bool m_lock;
-};
-
-inline TQ_INT32 KisPaintDevice::pixelSize() const
-{
- Q_ASSERT(m_pixelSize > 0);
- return m_pixelSize;
-}
-
-inline TQ_INT32 KisPaintDevice::nChannels() const
-{
- Q_ASSERT(m_nChannels > 0);
- return m_nChannels;
-;
-}
-
-inline KisColorSpace * KisPaintDevice::colorSpace() const
-{
- Q_ASSERT(m_colorSpace != 0);
- return m_colorSpace;
-}
-
-
-inline TQ_INT32 KisPaintDevice::getX() const
-{
- return m_x;
-}
-
-inline TQ_INT32 KisPaintDevice::getY() const
-{
- return m_y;
-}
-
-#endif // KIS_PAINT_DEVICE_IMPL_H_
-