summaryrefslogtreecommitdiffstats
path: root/kooka/kookaimage.h
diff options
context:
space:
mode:
Diffstat (limited to 'kooka/kookaimage.h')
-rw-r--r--kooka/kookaimage.h170
1 files changed, 170 insertions, 0 deletions
diff --git a/kooka/kookaimage.h b/kooka/kookaimage.h
new file mode 100644
index 00000000..84018d4d
--- /dev/null
+++ b/kooka/kookaimage.h
@@ -0,0 +1,170 @@
+/***************************************************************************
+ kookaimage.h - Kooka's Image
+ -------------------
+ begin : Thu Nov 20 2001
+ copyright : (C) 1999 by Klaas Freitag
+ email : freitag@suse.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This file may be distributed and/or modified under the terms of the *
+ * GNU General Public License version 2 as published by the Free Software *
+ * Foundation and appearing in the file COPYING included in the *
+ * packaging of this file. *
+ *
+ * As a special exception, permission is given to link this program *
+ * with any version of the KADMOS ocr/icr engine of reRecognition GmbH, *
+ * Kreuzlingen and distribute the resulting executable without *
+ * including the source code for KADMOS in the source distribution. *
+ *
+ * As a special exception, permission is given to link this program *
+ * with any edition of Qt, and distribute the resulting executable, *
+ * without including the source code for Qt in the source distribution. *
+ * *
+ ***************************************************************************/
+
+
+
+#ifndef KOOKAIMAGE_H
+#define KOOKAIMAGE_H
+#include <kurl.h>
+#include <qimage.h>
+#include <qptrlist.h>
+#include <qvaluevector.h>
+#include <qrect.h>
+
+#include <kfilemetainfo.h>
+
+class KFileItem;
+
+/**
+ * @author Klaas Freitag
+ *
+ * class that represents an image, very much as QImage. But this one can contain
+ * multiple pages.
+ */
+
+typedef enum { MaxCut, MediumCut } TileMode;
+
+class KookaImage: public QImage
+{
+public:
+
+ KookaImage( );
+ /**
+ * creating a subimage for a parent image.
+ * @param subNo contains the sequence number of subimages to create.
+ * @param p is the parent image.
+ */
+ KookaImage( int subNo, KookaImage *p );
+ KookaImage( const QImage& img );
+
+ KookaImage& operator=(const KookaImage& );
+ KookaImage& operator=(const QImage& );
+ /**
+ * load an image from a KURL. This method reads the entire file and sets
+ * the values for subimage count.
+ */
+ bool loadFromUrl( const KURL& );
+
+ ~KookaImage();
+
+ /**
+ * the amount of subimages. This is 0 if there are no subimages.
+ */
+ int subImagesCount() const;
+
+ /**
+ * the parent image.
+ */
+ KookaImage* parentImage() const;
+
+ /**
+ * returns true if this is a subimage.
+ */
+ bool isSubImage() const;
+
+ /**
+ * extracts the correct subimage according to the number given in the constructor.
+ */
+ void extractNow();
+
+ KURL url() const;
+ QString localFileName( ) const;
+
+ /**
+ * Set and get the KFileItem of the image. Note that the KFileItem pointer returned
+ * may be zero.
+ */
+ KFileItem* fileItem() const;
+ void setFileItem( KFileItem* );
+
+ /**
+ * @return the KFileMetaInfo
+ **/
+ const KFileMetaInfo fileMetaInfo( );
+
+ /**
+ * set the url of the kooka image. Note that loadFromUrl sets this
+ * url automatically.
+ */
+ void setUrl( const KURL& url )
+ { m_url = url; }
+
+ /**
+ * checks if the image is file bound ie. was loaded from file. If this
+ * method returns false, fileMetaInfo and FileItem are undefined.
+ */
+ bool isFileBound()const { return m_fileBound; }
+
+ /**
+ * Create tiles on the given image. That is just cut the image in parts
+ * while non of the parts is larger than maxSize and store the rect list.
+ * The parameters rows and cols contain the number of rows and cols after
+ * tiling. If both are one, the image is smaller than maxSize, thus the
+ * left-top tile is index 1,1.
+ * Use getTile() to read the QRect list.
+ */
+ int cutToTiles( const QSize maxSize, int& rows, int& cols, TileMode mode = MaxCut );
+
+ /**
+ * read tiles from the tile list. The image needs to be tiled by method
+ * cutToTiles before.
+ */
+ QRect getTileRect( int rowPos, int colPos ) const;
+
+ /**
+ * retrieve the sub number of this image.
+ */
+ int subNumber() const { return m_subNo; }
+
+private:
+ int m_subImages;
+ bool loadTiffDir( const QString&, int );
+
+ /* if subNo is 0, the image is the one and only. If it is larger than 0, the
+ * parent contains the filename */
+ int m_subNo;
+
+ /* In case being a subimage */
+ KookaImage *m_parent;
+ KURL m_url;
+ /* Fileitem if available */
+ KFileItem *m_fileItem;
+ bool m_fileBound;
+
+ QValueVector<QRect> m_tileVector;
+ int m_tileCols; /* number of tile columns */
+};
+
+
+class KookaImageList: public QPtrList<KookaImage>
+{
+public:
+ KookaImageList() {}
+ ~KookaImageList() {}
+};
+
+
+#endif