reference/ocr-simple/BitMap.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 _BITMAP_H
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#define _BITMAP_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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
/** A BitMap representation stores image in an array of unsigned character
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
    arrays.  There is one uchar array per row.  Each bit of the uchar 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
    represents a pixel.
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
class RLEMap;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
class Point;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
class BitMap;
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
extern void byteprint(char d);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
extern void bitprint(char d, int x);
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
class BitMap{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
 public:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
  friend MapStatus convertMap(RLEMap *,BitMap*,Point,Point);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
  BitMap();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
  ~BitMap();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
  int & imageLength() 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
    {return fImageLength;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
  int & imageWidth()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
    {return fImageWidth;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
  MapStatus & status()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
    {return fStatus; };
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
  uchar * row(int i);         // returns a pointer to row i
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
  // I/O operations.  readMap and writeMap are from/to 2 level TIFF files
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
  MapStatus readMap(char * filename);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
  MapStatus writeMap(char * filename);   // not done
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
  // Write out BitMap format for TCL/TK display
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
  MapStatus writeTclMap(char * filename, Point & ul, Point & lr, int scaledown);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
  // Detect skew Angle 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
  Angle skewAngle();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
  //Rotate the map designated angle.  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
  MapStatus rotateMap(Angle angl); 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    51
  // Return a ratio of black pixels to white pixels
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
  // scaled to 255 0 = all white 255=all black
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
  // number of black pixels in bounding box
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    56
  int BitMap::pixelsInRegion(Point  ul, Point lr);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
private:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    60
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
	int fImageWidth;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
	int fImageLength;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
	MapStatus fStatus;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    64
	uchar ** fMapData;
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
} ;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
#endif