reference/ocr-new/RLEMap.h
author viric@llimona
Thu, 18 May 2006 23:12:51 +0200
changeset 0 6b8091ca909a
permissions -rw-r--r--
Init from working directory of svn repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     1
#ifndef _RLEMap_H
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#define _RLEMap_H
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
#include "system.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
#include "RLEPair.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
#include <math.h>
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
/* The RLEMap Class is a run length encoded representation of a bitmap
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
   The I/O functions defined for this class read and write data from 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
   TIFF format files using the Silicon Graphics TIFF library.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
class RLEMap{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
	public:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    17
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    18
	// Constructor, Destructor and copy functions
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
      	RLEMap();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
       ~RLEMap();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
	// Selector and Modifier functions
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
	int & imageLength();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
	int & imageWidth();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
	inline int pixels_between(int start, int finish, int row_num){
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
	  return fMapData[row_num]->pixelsBetween(start, finish);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
	};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
	MapStatus & status();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
	
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
	void display_intervals(char* color);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
        void display_intervals(char* window, double scaleFactor, 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
			       char * color);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
	ListElement* FindNearHorizDot(int startCol, int startRow, int endRow);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
	ListElement* FindNearVertDot(int startCol, int endCol, 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
				     int startRow, int endRow);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
	// I/O operations.  Read and Write are from/to 2 level TIFF files
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    41
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
	  MapStatus readMap(char * filename);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
	MapStatus writeMap(char * filename);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
	// Data Access and low level manipulation functions  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
	 // Access a row of the Map 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
	 // usage: rmap[i] returns row i of the RLEMap.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
	 // row performs the same function  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
	RLEPairs  * operator [](int i);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
	RLEPairs * row(int i);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    51
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
	 int pixelsInRegion(Point  ul, Point  lr);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
	short int grayScale(Point  ul, Point  lr);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    54
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    55
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    56
	void tilt_and_slant(double, int);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
	int deskew(); 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
	void tilt(double , int);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
	void slant(double, int);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    60
	void tilt_row(int, int, RLEPairs** , double, int);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
	RLEPairs ** fMapData;    
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
	// Array length = fImageLength One list
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
	// for each row	
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    64
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    65
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    66
	  // prints RLEMap representation for row range
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
	void printPairs(int startRow, int endRow);  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    68
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    69
private:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
	// Size and status info
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    71
	int fImageLength;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    72
	int fImageWidth;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    73
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    74
	MapStatus fStatus;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    75
};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    76
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    77
void printMap(RLEMap * map);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    78
void testpixelsBetween(RLEMap * map);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    79
double get_skew(RLEMap*);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    80
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    81
#endif
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    82
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    83
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    84
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    85
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    86
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    87
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    88
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    89
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    90
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    91
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    92
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    93
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    94
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    95
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    96
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    97
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    98
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    99
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   100
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   101
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   102
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   103
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   104
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   105