reference/ocr-new/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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
class BitMap{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
 public:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
  friend MapStatus convertMap(RLEMap *,BitMap*,Point,Point);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
  friend MapStatus convertMap(BitMap *,RLEMap*,Point,Point);
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
  BitMap();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
  ~BitMap();
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 & imageLength() 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
    {return fImageLength;};
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
  int & imageWidth()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
    {return fImageWidth;};
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
  readBit(Point  p);
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
  MapStatus & status()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
    {return fStatus; };
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
  uchar * row(int i);         // returns a pointer to row i
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
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
  // 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
    43
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
  MapStatus readMap(char * filename);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
  MapStatus writeMap(char * filename);   // not done
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
  // Write out BitMap format for TCL/TK display
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
  MapStatus writeTclMap(char * filename, Point  ul, Point  lr, int scaledown);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
  // Detect skew Angle 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
  Angle skewAngle();
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
  //Rotate the map designated angle.  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
  MapStatus rotateMap(Angle angl); 
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
  // Return a ratio of black pixels to white pixels
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
  // scaled to 255 0 = all white 255=all black
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
  short int grayScale(Point  ul, Point  lr);
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
  // number of black pixels in bounding box
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
  const int BitMap::pixelsInRegion( Point ul, Point lr);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
  int BitMap::minThickness(Point  ul,  Point  lr);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
private:
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
	int fImageWidth;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
	int fImageLength;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    68
	MapStatus fStatus;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    69
	uchar ** fMapData;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    71
} ;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    72
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    75
#endif
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    78