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;
+}
+