reference/ocr-simple/system.cc
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
#include "system.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#include "Point.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
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
// Global Variables
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
Point NOPNT(-1,-1);      // Used for default entries
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
/* Global variables used to fine tune OCR.  These can be adjusted
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
   without recompiling by setting them in link_vars.tcl */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
int NoiseTolerance = 1;      // Minumum number of pixels in a line of text
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
int MinLineSize = 5;        // Minimum number of rows in a line of text
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
int MinVertSeparation = 0;  // Minimum number of rows between lines of text
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
int MinHorizSeparation = 1; // Minimum number of cols between characters
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
int ConfidenceThreshold = 150; //Minimum confidence for some operations
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
int JoinTolerance = 6;        // Max number of pixels joining fused chars.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
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
/* Number of properties in property vector for Components **/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
int numProperties = 30;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
/* Grid size for gray scale analysis */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
int NumHorizDiv = 5;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
int NumVertDiv = 5;
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
// The next four are used in character grouping set in Page::extractComponents
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
/* Group 0 - amo
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
   Group 1 - Descenders yjp
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
   Group 2 - Ascenders JPK
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
   Group 3 - Both descenders and Ascenders ()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
   Group 4 - floaters * - `
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
unsigned int NumCharGroups=5; 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
int MaxVertSize = 50;        // Max vert pixels in char (used for baseline)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
int BaseLineTolerance = 10;  // How far in 1/x of line size from base is okay
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
int TopLineTolerance  = 10; // How far in 1/x of line size from top is okay
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
                                // 20 = 5%, 10 = 10%
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
int MinComponentSize = 16;  // Minimum number of pixels in smallest character
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 CharBitsSet[256];    // Table of number of bits set in each num 0-256
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
                           // Used for determining gray scale and pixel counts
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
/** Some globals set in learn() or readLearnedChars(). These are just starting
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
     values  **/
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
double MaxHWRatio = 0.0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
double MinHWRatio = 1000; 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
int MinWidth = 1000;        // Min component width in learned set
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
Component * LearnedChars;   // Learned character averages  /** NOT USED **/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
Components * LearnedGroups=NULL; //Learned character list array by group type
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
/*** Some values for TCL/TK interface.  These variables can be 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
   set in the file link_vars.tcl without recompiling ***/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
int ENABLE_USER_INTERFACE = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    60
int VERY_LOW_CONFIDENCE = 150;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
int LOW_CONFIDENCE = 200;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
int DISPLAY_LINE_BOUNDARIES = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
int DISPLAY_BOUNDING_BOXES = 0;  // boxes around components 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    64
int SPELLCHECK = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    65
int DISPLAY_IMAGE = 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    66
int DESKEW_METHOD = BITMAP_DESKEW;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
double SCALE_FACTOR = 0.5;
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
void initCharBitsSet()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
// Initializes lookup table for the number of bits set in a uchar
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
  int pixCount;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    73
  for (int c = 0; c<256;c++)
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
	pixCount = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    76
	for (int i = 7; i >=0; i--)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    77
	  pixCount +=((c>>i)&1);      // if this is a black pixel
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    78
	CharBitsSet[c]=pixCount;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    79
      }
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    82
char* backslashify(char* w)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    83
/* backslashes all $ " [] {} () */
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
  int length = strlen(w);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    86
  char* new_word = (char*)malloc(length*2);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    87
  int new_word_pos = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    88
  for(int i = 0; i < length; i++)
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
      if((w[i] == '$') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    91
	 (w[i] == '[') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    92
	 (w[i] == ']') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    93
	 (w[i] == '\\') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    94
	 (w[i] == '{') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    95
	 (w[i] == '}') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    96
	 (w[i] == '(') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    97
	 (w[i] == ')') ||
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    98
	 (w[i] == ';'))
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
	  new_word[new_word_pos] = '\\';
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   101
	  new_word[new_word_pos+1] = w[i];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   102
	  new_word_pos += 2;
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
      else
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   105
	{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   106
	  new_word[new_word_pos] = w[i];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   107
	  new_word_pos += 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   108
	}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   109
    }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   110
  new_word[new_word_pos] = '\0';
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   111
  return new_word;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   112
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   113
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   114
void invertBitsInBuffer(uchar * buf, int size)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   115
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   116
  for(int i = 0; i < size; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   117
    buf[i] = ~buf[i] ;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   118
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   119
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   120
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   121
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   122
short int countBitsSet(uchar c)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   123
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   124
  int pixCount = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   125
/*
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   126
  for (int i = 7; i >=0; i--)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   127
    pixCount +=((c>>i)&1);      // if this is a black pixel
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   128
*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   129
  return CharBitsSet[c];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   130
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   131
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   132
int pixelsBetween(uchar * ar, int start, int end)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   133
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   134
 // Counts the number of black pixels between start and end
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   135
  int startCharNum = start / 8;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   136
  int endCharNum = end / 8 ; 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   137
  int pixCount=0, startOffset, endOffset;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   138
  uchar nextChar;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   139
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   140
  startOffset = start - startCharNum*8;  // first bit of range in first char
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   141
  endOffset = end- endCharNum*8 + 1 ; // first bit after end in last char
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   142
 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   143
     // count the whole characters
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   144
      for (int i = startCharNum + 1; i < endCharNum; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   145
	{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   146
	  nextChar = ar[i];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   147
	  pixCount += countBitsSet(nextChar);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   148
	}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   149
	  // Now add in end peices
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   150
	  // Get our part of the starting character
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   151
	  // Add in just the last part of the  char (get rid of hi bits)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   152
	  nextChar = ar[startCharNum] << startOffset;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   153
	  if (startCharNum != endCharNum )
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   154
             {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   155
	       pixCount += countBitsSet(nextChar);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   156
	       // Get our part of the ending character, 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   157
	       // Add in just the first endOffset bits (get rid of lo bits)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   158
	       nextChar = ar[endCharNum] >> (8 - endOffset);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   159
	       pixCount += countBitsSet(nextChar);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   160
	     }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   161
         else
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   162
	   {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   163
	     // just shift the adjusted starting char
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   164
	     int shift = (8-endOffset)+startOffset;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   165
	     pixCount += countBitsSet(nextChar >> shift);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   166
	   }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   167
  return pixCount;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   168
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   169
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   170
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   171
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   172
void setRange(uchar ar[], int start, int end)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   173
// Sets bits from position start to position end 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   174
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   175
  int startCharNum = start / 8;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   176
  int endCharNum = end / 8 ; 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   177
  int startOffset, endOffset;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   178
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   179
  startOffset = start - startCharNum*8;  // first bit of range in first char
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   180
  endOffset = end- endCharNum*8 + 1 ; // first bit after end in last char
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   181
 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   182
     // set the whole characters
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   183
      for (int i = startCharNum + 1; i < endCharNum; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   184
	{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   185
	  ar[i] = 255;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   186
	}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   187
	  // Now set end peices
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   188
	  if (startCharNum != endCharNum )
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   189
             {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   190
	       ar[startCharNum] |=  (255 >> startOffset);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   191
	       ar[endCharNum] |= (255 << (8 - endOffset));
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   192
	     }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   193
         else  // start and end char are the same
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   194
	   {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   195
	     char mask = 255 >> startOffset;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   196
	     mask  &= 255 << (8-endOffset);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   197
	     ar[endCharNum] |= mask;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   198
	   }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   199
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   200
};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   201
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   202
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   203
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   204
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   205
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   206
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   207
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   208
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   209
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   210
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   211
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   212
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   213
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   214
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   215
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   216
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   217
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   218
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   219
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   220
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   221
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   222
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   223
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   224
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   225
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   226
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   227
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   228
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   229
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   230
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   231