File: profile.h

package info (click to toggle)
ocrad 0.17-4
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 624 kB
  • ctags: 687
  • sloc: cpp: 7,809; sh: 161; makefile: 149
file content (67 lines) | stat: -rw-r--r-- 2,351 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*  GNU Ocrad - Optical Character Recognition program
    Copyright (C) 2003, 2004, 2005, 2006, 2007 Antonio Diaz Diaz.

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

class Profile
  {
public:
  enum Type { left, top, right, bottom, height, width };

private:
  const Bitmap * _bitmap;	// Bitmap to witch this profile belongs
  Type type;
  int _limit, _max, _min, _mean;
  signed char _isconcave, _isconvex, _isflat, _isflats,
              _ispit, _istpit, _isupit, _isvpit, _istip;
  std::vector< int > data;
  void initialize() throw();
  int mean() throw();

public:
  Profile( const Bitmap & b, Type t ) throw();

//  const Bitmap * bitmap() const throw() { return _bitmap; }

  int limit() throw() { if( _limit < 0 ) initialize(); return _limit; }
  int max() throw();
  int max( int l, int r = -1 ) throw();
  int min() throw();
  int min( int l, int r = -1 ) throw();
  int operator[]( int i ) throw();
  int pos( int p ) throw() { return ( ( samples() - 1 ) * p ) / 100; }
  int range() throw() { return max() - min(); }
  int samples() throw() { if( _limit < 0 ) initialize(); return data.size(); }

  int  area( int l = 0, int r = -1 ) throw();
  bool increasing( int i = 1 ) throw();
  bool decreasing( int i = 1 ) throw();
  bool isconcave() throw();
  bool isconvex() throw();
  bool isflat() throw();
  bool isflats() throw();
  bool ispit() throw();
  bool iscpit( const int cpos = 50 ) throw();
  bool islpit() throw();
  bool istpit() throw();
  bool isupit() throw();
  bool isvpit() throw();
  bool istip() throw();
  bool isctip( const int cpos = 50 ) throw();
  int  imaximum() throw();
  int  iminimum( int m = 0, int th = -1 ) throw();
  int  minima( int th = -1 ) throw();
  bool straight( int * dy ) throw();
  };