summaryrefslogtreecommitdiffstats
path: root/krita/core/tiles/kis_tileddatamanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'krita/core/tiles/kis_tileddatamanager.h')
-rw-r--r--krita/core/tiles/kis_tileddatamanager.h233
1 files changed, 0 insertions, 233 deletions
diff --git a/krita/core/tiles/kis_tileddatamanager.h b/krita/core/tiles/kis_tileddatamanager.h
deleted file mode 100644
index 20d78085..00000000
--- a/krita/core/tiles/kis_tileddatamanager.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 2004 Boudewijn Rempt <[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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#ifndef KIS_TILEDDATAMANAGER_H_
-#define KIS_TILEDDATAMANAGER_H_
-
-#include <tqglobal.h>
-#include <tqvaluevector.h>
-
-#include <ksharedptr.h>
-
-#include "kis_tile_global.h"
-#include "kis_tile.h"
-#include "kis_memento.h"
-
-class KisTiledDataManager;
-typedef KSharedPtr<KisTiledDataManager> KisTiledDataManagerSP;
-
-class KisDataManager;
-typedef KSharedPtr<KisDataManager> KisDataManagerSP;
-
-class KisTiledIterator;
-class KisTiledRandomAccessor;
-class KoStore;
-
-class KisTileDataWrapper : public KShared {
- KisTile* m_tile;
- TQ_INT32 m_offset;
-public:
- KisTileDataWrapper(KisTile* tile, TQ_INT32 offset);
- virtual ~KisTileDataWrapper();
- TQ_UINT8* data() const { return m_tile->data() + m_offset; }
-};
-
-typedef KSharedPtr<KisTileDataWrapper> KisTileDataWrapperSP;
-
-/**
- * KisTiledDataManager implements the interface that KisDataManager defines
- *
- * The interface definition is enforced by KisDataManager calling all the methods
- * which must also be defined in KisTiledDataManager. It is not allowed to change the interface
- * as other datamangers may also rely on the same interface.
- *
- * * Storing undo/redo data
- * * Offering ordered and unordered iterators over rects of pixels
- * * (eventually) efficiently loading and saving data in a format
- * that may allow deferred loading.
- *
- * A datamanager knows nothing about the type of pixel data except
- * how many TQ_UINT8's a single pixel takes.
- */
-
-class KisTiledDataManager : public KShared {
-
-protected:
- KisTiledDataManager(TQ_UINT32 pixelSize, const TQ_UINT8 *defPixel);
- ~KisTiledDataManager();
- KisTiledDataManager(const KisTiledDataManager &dm);
- KisTiledDataManager & operator=(const KisTiledDataManager &dm);
-
-
-protected:
- // Allow the baseclass of iterators acces to the interior
- // derived iterator classes must go through KisTiledIterator
- friend class KisTiledIterator;
- friend class KisTiledRandomAccessor;
-
-protected:
-
- void setDefaultPixel(const TQ_UINT8 *defPixel);
- const TQ_UINT8 * defaultPixel() const { return m_defPixel;};
-
- KisMementoSP getMemento();
- void rollback(KisMementoSP memento);
- void rollforward(KisMementoSP memento);
-
- // For debugging use.
- bool hasCurrentMemento() const { return m_currentMemento != 0; }
-
-protected:
- /**
- * Reads and writes the tiles from/onto a KoStore (which is simply a file within a zip file)
- *
- */
- bool write(KoStore *store);
- bool read(KoStore *store);
-
-protected:
-
- TQ_UINT32 pixelSize();
-
- void extent(TQ_INT32 &x, TQ_INT32 &y, TQ_INT32 &w, TQ_INT32 &h) const;
- TQRect extent() const;
-
- void setExtent(TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h);
-
-protected:
-
- void clear(TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h, TQ_UINT8 clearValue);
- void clear(TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h, const TQ_UINT8 *clearPixel);
- void clear();
-
-
-protected:
-
- void paste(KisDataManagerSP data, TQ_INT32 sx, TQ_INT32 sy, TQ_INT32 dx, TQ_INT32 dy,
- TQ_INT32 w, TQ_INT32 h);
-
-
-protected:
-
-
- /**
- * Get a read-only pointer to pixel (x, y).
- */
- const TQ_UINT8* pixel(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * Get a read-write pointer to pixel (x, y).
- */
- TQ_UINT8* writablePixel(TQ_INT32 x, TQ_INT32 y);
-
- /**
- * write the specified data to x, y. There is no checking on pixelSize!
- */
- void setPixel(TQ_INT32 x, TQ_INT32 y, const TQ_UINT8 * data);
-
-
- /**
- * Copy the bytes in the specified rect to a vector. The caller is responsible
- * for managing the vector.
- */
- void readBytes(TQ_UINT8 * bytes,
- TQ_INT32 x, TQ_INT32 y,
- TQ_INT32 w, TQ_INT32 h);
- /**
- * Copy the bytes in the vector to the specified rect. If there are bytes left
- * in the vector after filling the rect, they will be ignored. If there are
- * not enough bytes, the rest of the rect will be filled with the default value
- * given (by default, 0);
- */
- void writeBytes(const TQ_UINT8 * bytes,
- 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);
-
- // For debugging use
- TQ_INT32 numTiles() const;
-
-private:
-
- TQ_UINT32 m_pixelSize;
- TQ_UINT32 m_numTiles;
- KisTile *m_defaultTile;
- KisTile **m_hashTable;
- KisMementoSP m_currentMemento;
- TQ_INT32 m_extentMinX;
- TQ_INT32 m_extentMinY;
- TQ_INT32 m_extentMaxX;
- TQ_INT32 m_extentMaxY;
- TQ_UINT8 *m_defPixel;
-
-private:
-
- void ensureTileMementoed(TQ_INT32 col, TQ_INT32 row, TQ_UINT32 tileHash, const KisTile *refTile);
- KisTile *getOldTile(TQ_INT32 col, TQ_INT32 row, KisTile *def);
- KisTile *getTile(TQ_INT32 col, TQ_INT32 row, bool writeAccess);
- TQ_UINT32 calcTileHash(TQ_INT32 col, TQ_INT32 row);
- void updateExtent(TQ_INT32 col, TQ_INT32 row);
- void recalculateExtent();
- void deleteTiles(const KisMemento::DeletedTile *deletedTileList);
- TQ_INT32 xToCol(TQ_INT32 x) const;
- TQ_INT32 yToRow(TQ_INT32 y) const;
- void getContiguousColumnsAndRows(TQ_INT32 x, TQ_INT32 y, TQ_INT32 *columns, TQ_INT32 *rows);
- TQ_UINT8* pixelPtr(TQ_INT32 x, TQ_INT32 y, bool writable);
- KisTileDataWrapperSP pixelPtrSafe(TQ_INT32 x, TQ_INT32 y, bool writable);
-};
-
-
-inline TQ_UINT32 KisTiledDataManager::pixelSize()
-{
- return m_pixelSize;
-}
-
-inline TQ_INT32 KisTiledDataManager::xToCol(TQ_INT32 x) const
-{
- if (x >= 0) {
- return x / KisTile::WIDTH;
- } else {
- return -(((-x - 1) / KisTile::WIDTH) + 1);
- }
-}
-
-inline TQ_INT32 KisTiledDataManager::yToRow(TQ_INT32 y) const
-{
- if (y >= 0) {
- return y / KisTile::HEIGHT;
- } else {
- return -(((-y - 1) / KisTile::HEIGHT) + 1);
- }
-}
-
-// during development the following line helps to check the interface is correct
-// it should be safe to keep it here even during normal compilation
-#include "kis_datamanager.h"
-
-#endif // KIS_TILEDDATAMANAGER_H_
-