Mercurial > mercurial > hgweb_kaigo.hg.cgi
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/horori/eraline/src/eraline.cpp Mon May 24 21:32:58 2021 +0900 @@ -0,0 +1,172 @@ +/* eraline.cpp + * Last Change: 2021-02-10 水 12:00:54. + * by T.Mutoh + * + * > eraline y h in.tif out.tif + * > eraline -v x h in.tif out.tif + */ +#include "wx/wxprec.h" + +#include <wx/wx.h> +#include <wx/app.h> +#include <wx/cmdline.h> + +wxString inimg; +wxString outimg; + +static const wxCmdLineEntryDesc cmdLineDesc[] = { + {wxCMD_LINE_SWITCH, "h", "help", "show this help message", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP}, + {wxCMD_LINE_SWITCH, "d", "dummy", "a dummy switch", wxCMD_LINE_VAL_NONE, 0}, + {wxCMD_LINE_SWITCH, "v", "vertical", "a secret switch", wxCMD_LINE_VAL_NONE, wxCMD_LINE_HIDDEN}, + // ... your other command line options here... + + wxCMD_LINE_DESC_END +}; + +void erase(int y, int h) { + wxImage img(inimg, wxBITMAP_TYPE_TIFF); + + int r, g, b; + int th = 38; + int p = 0; + /* + for (int x = 0; x < img.GetWidth(); x++) { + r = (int)img.GetRed(x, y); + g = (int)img.GetGreen(x, y); + b = (int)img.GetBlue(x, y); + //wxString buf = wxString::Format("%d %d %d -> ", r, g, b); + //wxPrintf(buf); + + r += (int)img.GetRed(x, y - 1); + g += (int)img.GetGreen(x, y - 1); + b += (int)img.GetBlue(x, y - 1); + + r += (int)img.GetRed(x, y + 1); + g += (int)img.GetGreen(x, y + 1); + b += (int)img.GetBlue(x, y + 1); + + r /= 3; + g /= 3; + b /= 3; + img.SetRGB(x, y, (unsigned char)r, (unsigned char)g, (unsigned char)b); + + //buf = wxString::Format("%d %d %d\n", r, g, b); + //wxPrintf(buf); + } + */ + /* + switch (h) { + case 1: + break; + + case 2: + break; + + case 3: + break; + + case 4: + for (int x = 0; x < img.GetWidth(); x++) { + r = (int)img.GetRed(x, y - 1); + g = (int)img.GetGreen(x, y - 1); + b = (int)img.GetBlue(x, y - 1); + if (r > th && g > th && b > th - 1) p++; + + for (int d = 0; d < 4; d++) { + r = (int)img.GetRed(x, y + d); + g = (int)img.GetGreen(x, y + d); + b = (int)img.GetBlue(x, y + d); + if (r < th && g < th && b < th - 1) p++; + } + + r = (int)img.GetRed(x, y + 4); + g = (int)img.GetGreen(x, y + 4); + b = (int)img.GetBlue(x, y + 4); + if (r > th && g > th && b > th - 4) p++; + + if (p == 6) { + for (int d = 0; d < 4; d++) + img.SetRGB(x, y + d, 0, 0, 0); + } + } + break; + + default: + break; + } + */ + for (int x = 0; x < img.GetWidth(); x++) { + bool bt, bb; + r = (int)img.GetRed(x, y - 1); + g = (int)img.GetGreen(x, y - 1); + b = (int)img.GetBlue(x, y - 1); + if (r > th && g > th && b > th - 1) bt = true; + + r = (int)img.GetRed(x, y + h); + g = (int)img.GetGreen(x, y + h); + b = (int)img.GetBlue(x, y + h); + if (r > th && g > th && b > th - 1) bb = true; + + if (bt && bb) { + for (int d = 0; d < h; d++) + img.SetRGB(x, y + d, 0, 0, 0); + } + } + + img.SetOption(wxIMAGE_OPTION_TIFF_COMPRESSION, 5); + img.SetOption(wxIMAGE_OPTION_TIFF_BITSPERSAMPLE, 1); + img.SaveFile(outimg); +} + +int main(int argc, char **argv) { + wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "program"); + + wxInitializer initializer; + if (!initializer) { + fprintf(stderr, "Failed to initialize the wxWidgets library, aborting."); + return -1; + } + + wxCmdLineParser parser(cmdLineDesc, argc, argv); + + wxImage::AddHandler(new wxTIFFHandler); + + /* + switch (parser.Parse()) { + case -1: + // help was given, terminating + wxPuts("help"); + break; + + case 0: + // everything is ok; proceed + if (parser.Found("d")) { + wxPrintf("Dummy switch was given...\n"); + } + if (parser.Found("v")) { + wxPrintf("Vertical switch was given... %s\n", argv[0]); + int t = wxAtoi(argv[2]); + int d = wxAtoi(argv[3]); + inimg = argv[4]; + outimg = argv[5]; + //v1(t); + } + break; + + default: + wxPrintf("??? switch was given... \n"); + break; + } + */ + + int y = wxAtoi(argv[1]); + int h = wxAtoi(argv[2]); + inimg = argv[3]; + outimg = argv[4]; + + erase(y, h); + + return 0; +} + +