forked from xiaoyifang/Capture2Text
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Furigana.h
66 lines (47 loc) · 1.96 KB
/
Furigana.h
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
/*
Copyright (C) 2010-2017 Christopher Brochtrup
This file is part of Capture2Text.
Capture2Text 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.
Capture2Text 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 Capture2Text. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef FURIGANA_H
#define FURIGANA_H
#include "allheaders.h"
#include "pix_internal.h"
class Furigana
{
public:
static bool eraseFuriganaVertical(PIX *pixs, float scaleFactor, int *numTextLines);
static bool eraseFuriganaHorizontal(PIX *pixs, float scaleFactor, int *numTextLines);
private:
// Span of lines that contain foreground text. Used during furigana removal.
struct FuriganaSpan
{
int start;
int end;
int getLength() { return abs(end - start) + 1; }
FuriganaSpan(int s, int e)
{
start = s;
end = e;
}
};
Furigana();
// Minimum number of foreground pixels that a line must contain for it to be part of a span.
// Needed because sometimes furigana does not have a perfect gap between the text and itself.
static const float FURIGANA_MIN_FG_PIX_PER_LINE;
// Minimum width of a span (in pixels) for it to be included in the span list.
static const float FURIGANA_MIN_WIDTH;
static bool eraseAreaLeftToRight(PIX *pixs, int x, int width);
static bool eraseAreaTopToBottom(PIX *pixs, int y, int height);
static bool averageLargestSpans(PIX *pixs, float scaleFactor);
};
#endif // FURIGANA_H