annotate horori/eraline/src/eraline.cpp @ 0:aaaa401818a1 draft

first commit.
author pyon <pyon@macmini>
date Mon, 24 May 2021 21:32:58 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
1 /* eraline.cpp
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
2 * Last Change: 2021-02-10 水 12:00:54.
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
3 * by T.Mutoh
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
4 *
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
5 * > eraline y h in.tif out.tif
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
6 * > eraline -v x h in.tif out.tif
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
7 */
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
8 #include "wx/wxprec.h"
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
9
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
10 #include <wx/wx.h>
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
11 #include <wx/app.h>
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
12 #include <wx/cmdline.h>
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
13
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
14 wxString inimg;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
15 wxString outimg;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
16
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
17 static const wxCmdLineEntryDesc cmdLineDesc[] = {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
18 {wxCMD_LINE_SWITCH, "h", "help", "show this help message", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP},
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
19 {wxCMD_LINE_SWITCH, "d", "dummy", "a dummy switch", wxCMD_LINE_VAL_NONE, 0},
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
20 {wxCMD_LINE_SWITCH, "v", "vertical", "a secret switch", wxCMD_LINE_VAL_NONE, wxCMD_LINE_HIDDEN},
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
21 // ... your other command line options here...
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
22
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
23 wxCMD_LINE_DESC_END
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
24 };
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
25
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
26 void erase(int y, int h) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
27 wxImage img(inimg, wxBITMAP_TYPE_TIFF);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
28
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
29 int r, g, b;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
30 int th = 38;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
31 int p = 0;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
32 /*
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
33 for (int x = 0; x < img.GetWidth(); x++) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
34 r = (int)img.GetRed(x, y);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
35 g = (int)img.GetGreen(x, y);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
36 b = (int)img.GetBlue(x, y);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
37 //wxString buf = wxString::Format("%d %d %d -> ", r, g, b);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
38 //wxPrintf(buf);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
39
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
40 r += (int)img.GetRed(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
41 g += (int)img.GetGreen(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
42 b += (int)img.GetBlue(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
43
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
44 r += (int)img.GetRed(x, y + 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
45 g += (int)img.GetGreen(x, y + 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
46 b += (int)img.GetBlue(x, y + 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
47
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
48 r /= 3;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
49 g /= 3;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
50 b /= 3;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
51 img.SetRGB(x, y, (unsigned char)r, (unsigned char)g, (unsigned char)b);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
52
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
53 //buf = wxString::Format("%d %d %d\n", r, g, b);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
54 //wxPrintf(buf);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
55 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
56 */
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
57 /*
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
58 switch (h) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
59 case 1:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
60 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
61
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
62 case 2:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
63 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
64
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
65 case 3:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
66 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
67
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
68 case 4:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
69 for (int x = 0; x < img.GetWidth(); x++) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
70 r = (int)img.GetRed(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
71 g = (int)img.GetGreen(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
72 b = (int)img.GetBlue(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
73 if (r > th && g > th && b > th - 1) p++;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
74
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
75 for (int d = 0; d < 4; d++) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
76 r = (int)img.GetRed(x, y + d);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
77 g = (int)img.GetGreen(x, y + d);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
78 b = (int)img.GetBlue(x, y + d);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
79 if (r < th && g < th && b < th - 1) p++;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
80 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
81
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
82 r = (int)img.GetRed(x, y + 4);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
83 g = (int)img.GetGreen(x, y + 4);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
84 b = (int)img.GetBlue(x, y + 4);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
85 if (r > th && g > th && b > th - 4) p++;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
86
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
87 if (p == 6) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
88 for (int d = 0; d < 4; d++)
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
89 img.SetRGB(x, y + d, 0, 0, 0);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
90 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
91 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
92 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
93
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
94 default:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
95 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
96 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
97 */
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
98 for (int x = 0; x < img.GetWidth(); x++) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
99 bool bt, bb;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
100 r = (int)img.GetRed(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
101 g = (int)img.GetGreen(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
102 b = (int)img.GetBlue(x, y - 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
103 if (r > th && g > th && b > th - 1) bt = true;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
104
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
105 r = (int)img.GetRed(x, y + h);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
106 g = (int)img.GetGreen(x, y + h);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
107 b = (int)img.GetBlue(x, y + h);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
108 if (r > th && g > th && b > th - 1) bb = true;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
109
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
110 if (bt && bb) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
111 for (int d = 0; d < h; d++)
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
112 img.SetRGB(x, y + d, 0, 0, 0);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
113 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
114 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
115
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
116 img.SetOption(wxIMAGE_OPTION_TIFF_COMPRESSION, 5);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
117 img.SetOption(wxIMAGE_OPTION_TIFF_BITSPERSAMPLE, 1);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
118 img.SaveFile(outimg);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
119 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
120
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
121 int main(int argc, char **argv) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
122 wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "program");
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
123
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
124 wxInitializer initializer;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
125 if (!initializer) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
126 fprintf(stderr, "Failed to initialize the wxWidgets library, aborting.");
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
127 return -1;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
128 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
129
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
130 wxCmdLineParser parser(cmdLineDesc, argc, argv);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
131
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
132 wxImage::AddHandler(new wxTIFFHandler);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
133
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
134 /*
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
135 switch (parser.Parse()) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
136 case -1:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
137 // help was given, terminating
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
138 wxPuts("help");
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
139 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
140
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
141 case 0:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
142 // everything is ok; proceed
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
143 if (parser.Found("d")) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
144 wxPrintf("Dummy switch was given...\n");
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
145 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
146 if (parser.Found("v")) {
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
147 wxPrintf("Vertical switch was given... %s\n", argv[0]);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
148 int t = wxAtoi(argv[2]);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
149 int d = wxAtoi(argv[3]);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
150 inimg = argv[4];
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
151 outimg = argv[5];
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
152 //v1(t);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
153 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
154 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
155
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
156 default:
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
157 wxPrintf("??? switch was given... \n");
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
158 break;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
159 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
160 */
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
161
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
162 int y = wxAtoi(argv[1]);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
163 int h = wxAtoi(argv[2]);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
164 inimg = argv[3];
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
165 outimg = argv[4];
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
166
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
167 erase(y, h);
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
168
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
169 return 0;
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
170 }
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
171
aaaa401818a1 first commit.
pyon <pyon@macmini>
parents:
diff changeset
172