Mercurial > mercurial > hgweb_kaigo.hg.cgi
diff horori/searcher/src/utils.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/searcher/src/utils.cpp Mon May 24 21:32:58 2021 +0900 @@ -0,0 +1,105 @@ +// Filename : utils.cpp +// Last Change: 2020-06-26 金 09:16:48. +// +#include <wx/wx.h> +#include <wx/dir.h> +#include <wx/wfstream.h> +#include <wx/zstream.h> +#include <wx/tarstrm.h> +#include <wx/regex.h> +#include "utils.h" + +wxRect Geo2Rect(wxString geo) +{ + long w, h, x, y; + wxString sw = geo.BeforeFirst('x'); + wxString sh = geo.AfterFirst('x').BeforeFirst('+'); + wxString sx = geo.AfterFirst('+').BeforeFirst('+'); + wxString sy = geo.AfterLast('+'); + + sw.ToLong(&w, 10); + sh.ToLong(&h, 10); + sx.ToLong(&x, 10); + sy.ToLong(&y, 10); + + return wxRect((int)x, (int)y, (int)w, (int)h); +} + +wxRect ZeroRect() +{ + wxRect rect(wxPoint(0, 0), wxPoint(0, 0)); + return rect; +} + +bool TarDir(wxString dir, wxString tarfile) +{ + if (!wxDirExists(dir)) { + wxMessageBox(wxT("bad directoy")); + return false; + } + + wxDir d(dir); + if (!d.IsOpened()) return false; + + wxFFileOutputStream out(tarfile); + wxTarOutputStream tar(out); + + wxString filename; + bool cont = d.GetFirst(&filename, wxEmptyString, wxDIR_FILES); + while (cont) { + wxFFileInputStream in(dir + wxFILE_SEP_PATH + filename); + tar.PutNextEntry(filename); + tar.Write(in); + cont = d.GetNext(&filename); + } + tar.Close(); + return true; +} + +bool Gzip(wxString infile, wxString gzfile) +{ + wxFileInputStream istream(infile); + wxFileOutputStream ostream(gzfile); + wxZlibOutputStream zstream(ostream, -1, wxZLIB_GZIP); + + zstream.Write(istream); + zstream.Close(); + return true; +} + +wxString XoR(wxString s, int x) +{ + wxString t; + for (int i = 0; i < s.Len(); i++) { + t += wxString::Format(wxT("%c"), s[i].GetValue() ^ x); + } + return t; +} + +bool IsHiragana(wxString s) +{ + wxString hiragana = wxT("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっ "); + wxRegEx reHiragana(wxT("^[") + hiragana + wxT("]+$")); + + if (reHiragana.Matches(s)) return true; + return false; +} + +bool IsKatakana(wxString s) +{ + wxString katakana = wxT("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲコザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッ "); + wxRegEx reKatakana(wxT("^[") + katakana + wxT("]+$")); + + if (reKatakana.Matches(s)) return true; + return false; +} + +wxString Hiragara2Katakana(wxString s) +{ + wxString hiragana = wxT("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょっ "); + wxString katakana = wxT("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲコザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッ "); + for (int i = 0; i < hiragana.Len(); i++) + s.Replace(hiragana[i], katakana[i], true); + return s; +} +