Mercurial > mercurial > hgweb_kaigo.hg.cgi
comparison horori/merger/src/merger.cpp @ 0:aaaa401818a1 draft
first commit.
author | pyon <pyon@macmini> |
---|---|
date | Mon, 24 May 2021 21:32:58 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:aaaa401818a1 |
---|---|
1 // Filename : merger.cpp | |
2 // Last Change: 2020-05-21 木 15:18:24. | |
3 // | |
4 #include <wx/dir.h> | |
5 #include <wx/textfile.h> | |
6 #include <wx/msgdlg.h> | |
7 #include <wx/fileconf.h> | |
8 #include <wx/html/htmprint.h> | |
9 | |
10 #include "utils.h" | |
11 #include "merger.h" | |
12 | |
13 MergeFrame::MergeFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) | |
14 : wxFrame(parent, id, title, pos, size, style) | |
15 { | |
16 CreateControls(); | |
17 SetAccelerator(); | |
18 LoadDefaultParams(); | |
19 InitializeControlsValue(); | |
20 | |
21 m_zoom = 102; | |
22 | |
23 // Connect Events | |
24 m_filePicker->Connect(wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler(MergeFrame::OnFileChanged), NULL, this); | |
25 m_buttonSet->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnMaskLocSet), NULL, this); | |
26 m_dataViewListCtrlParam->Connect(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler(MergeFrame::OnSelectData), NULL, this); | |
27 m_buttonWrite->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnWrite), NULL, this); | |
28 m_buttonPrint->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnPrint), NULL, this); | |
29 m_buttonPrintAll->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnPrintAll), NULL, this); | |
30 m_buttonAclS->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnAclS), NULL, this); | |
31 } | |
32 | |
33 MergeFrame::~MergeFrame() | |
34 { | |
35 m_filePicker->Disconnect(wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler(MergeFrame::OnFileChanged), NULL, this); | |
36 m_buttonSet->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnMaskLocSet), NULL, this); | |
37 m_dataViewListCtrlParam->Disconnect(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler(MergeFrame::OnSelectData), NULL, this); | |
38 m_buttonWrite->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnWrite), NULL, this); | |
39 m_buttonPrint->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnPrint), NULL, this); | |
40 m_buttonPrintAll->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnPrintAll), NULL, this); | |
41 m_buttonAclS->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MergeFrame::OnAclS), NULL, this); | |
42 } | |
43 | |
44 /* Functions */ | |
45 void MergeFrame::CreateControls() | |
46 { | |
47 this->SetIcon(wxIcon(wxT("sample"))); | |
48 this->SetSizeHints(wxDefaultSize, wxDefaultSize); | |
49 this->SetBackgroundColour(wxColour(240, 140, 100)); | |
50 | |
51 wxGridBagSizer* gbSizer = new wxGridBagSizer(0, 0); | |
52 gbSizer->SetFlexibleDirection(wxBOTH); | |
53 gbSizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED); | |
54 | |
55 m_staticTextCSV = new wxStaticText(this, wxID_ANY, wxT("CSVファイル"), wxDefaultPosition, wxDefaultSize, 0); | |
56 gbSizer->Add(m_staticTextCSV, wxGBPosition(0, 0), wxGBSpan(1, 1), wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5); | |
57 | |
58 m_filePicker = new wxFilePickerCtrl(this, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.csv"), wxDefaultPosition, wxSize(400, -1), wxFLP_CHANGE_DIR|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN|wxFLP_SMALL|wxFLP_USE_TEXTCTRL); | |
59 gbSizer->Add(m_filePicker, wxGBPosition(0, 1), wxGBSpan(1, 1), wxALL|wxALIGN_CENTER_VERTICAL, 5); | |
60 | |
61 m_gauge = new wxGauge(this, wxID_ANY, 40, wxDefaultPosition, wxSize(100, 20), wxGA_HORIZONTAL); | |
62 m_gauge->SetValue(0); | |
63 gbSizer->Add(m_gauge, wxGBPosition(0, 2), wxGBSpan(1, 1), wxALIGN_CENTER_VERTICAL|wxALL, 5); | |
64 | |
65 m_staticTextSpl = new wxStaticText(this, wxID_ANY, wxT("特記"), wxDefaultPosition, wxDefaultSize, 0); | |
66 gbSizer->Add(m_staticTextSpl, wxGBPosition(1, 0), wxGBSpan(1, 1), wxALL|wxALIGN_RIGHT, 5); | |
67 | |
68 m_lookwinSpl = new LookWindow(this, wxID_ANY, wxDefaultPosition, wxSize(1000, 150), 0); | |
69 gbSizer->Add(m_lookwinSpl, wxGBPosition(1, 1), wxGBSpan(1, 1), wxALL|wxALIGN_CENTER_VERTICAL, 5); | |
70 | |
71 m_staticTextOpn1 = new wxStaticText(this, wxID_ANY, wxT("意見書1"), wxDefaultPosition, wxDefaultSize, 0); | |
72 gbSizer->Add(m_staticTextOpn1, wxGBPosition(2, 0), wxGBSpan(1, 1), wxALL|wxALIGN_RIGHT, 5); | |
73 | |
74 m_lookwinOpn1 = new LookWindow(this, wxID_ANY, wxDefaultPosition, wxSize(1000, 150), 0); | |
75 gbSizer->Add(m_lookwinOpn1, wxGBPosition(2, 1), wxGBSpan(1, 1), wxALL|wxALIGN_CENTER_VERTICAL, 5); | |
76 | |
77 m_staticTextOpn2 = new wxStaticText(this, wxID_ANY, wxT("意見書2"), wxDefaultPosition, wxDefaultSize, 0); | |
78 gbSizer->Add(m_staticTextOpn2, wxGBPosition(3, 0), wxGBSpan(2, 1), wxALL|wxALIGN_RIGHT, 5); | |
79 | |
80 m_lookwinOpn2 = new LookWindow(this, wxID_ANY, wxDefaultPosition, wxSize(1000, 450), 0); | |
81 gbSizer->Add(m_lookwinOpn2, wxGBPosition(3, 1), wxGBSpan(3, 1), wxALL|wxALIGN_CENTER_VERTICAL, 5); | |
82 | |
83 m_buttonAclS = new wxButton(this, ID_NEXT, wxT("Acl_S"), wxDefaultPosition, wxDefaultSize, 0); | |
84 m_buttonAclS->Hide(); | |
85 gbSizer->Add(m_buttonAclS, wxGBPosition(4, 2), wxGBSpan(1, 1), wxALL, 5); | |
86 | |
87 m_buttonSet = new wxButton(this, wxID_ANY, wxT("マスク位置セット"), wxDefaultPosition, wxSize(100, -1), 0); | |
88 m_buttonSet->SetBackgroundColour(wxColour(255, 180, 150)); | |
89 gbSizer->Add(m_buttonSet, wxGBPosition(5, 2), wxGBSpan(1, 1), wxALL|wxALIGN_BOTTOM, 5); | |
90 | |
91 m_staticTextMask = new wxStaticText(this, wxID_ANY, wxT("マスク位置"), wxDefaultPosition, wxDefaultSize, 0); | |
92 gbSizer->Add(m_staticTextMask, wxGBPosition(6, 0), wxGBSpan(3, 1), wxALL|wxALIGN_RIGHT, 5); | |
93 | |
94 m_dataViewListCtrlParam = new wxDataViewListCtrl(this, wxID_ANY, wxDefaultPosition, wxSize(1000, 300), wxDV_ROW_LINES); | |
95 m_dataViewListColumnNo = m_dataViewListCtrlParam->AppendTextColumn(wxT("No"), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_CENTER), 0); | |
96 m_dataViewListColumnHno = m_dataViewListCtrlParam->AppendTextColumn(wxT("被保険者番号"), wxDATAVIEW_CELL_INERT, 100, static_cast<wxAlignment>(wxALIGN_CENTER), 0); | |
97 m_dataViewListColumnName = m_dataViewListCtrlParam->AppendTextColumn(wxT(" 氏名"), wxDATAVIEW_CELL_INERT, 120, static_cast<wxAlignment>(wxALIGN_LEFT), wxDATAVIEW_COL_RESIZABLE); | |
98 m_dataViewListColumnX1 = m_dataViewListCtrlParam->AppendTextColumn(wxT("x1 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
99 m_dataViewListColumnY1 = m_dataViewListCtrlParam->AppendTextColumn(wxT("y1 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
100 m_dataViewListColumnW1 = m_dataViewListCtrlParam->AppendTextColumn(wxT("w1 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
101 m_dataViewListColumnH1 = m_dataViewListCtrlParam->AppendTextColumn(wxT("h1 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
102 m_dataViewListColumnX2 = m_dataViewListCtrlParam->AppendTextColumn(wxT("x2 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
103 m_dataViewListColumnY2 = m_dataViewListCtrlParam->AppendTextColumn(wxT("y2 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
104 m_dataViewListColumnW2 = m_dataViewListCtrlParam->AppendTextColumn(wxT("w2 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
105 m_dataViewListColumnH2 = m_dataViewListCtrlParam->AppendTextColumn(wxT("h2 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
106 m_dataViewListColumnX3 = m_dataViewListCtrlParam->AppendTextColumn(wxT("x3 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
107 m_dataViewListColumnY3 = m_dataViewListCtrlParam->AppendTextColumn(wxT("y3 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
108 m_dataViewListColumnW3 = m_dataViewListCtrlParam->AppendTextColumn(wxT("w3 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
109 m_dataViewListColumnH3 = m_dataViewListCtrlParam->AppendTextColumn(wxT("h3 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
110 m_dataViewListColumnX4 = m_dataViewListCtrlParam->AppendTextColumn(wxT("x4 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
111 m_dataViewListColumnY4 = m_dataViewListCtrlParam->AppendTextColumn(wxT("y4 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
112 m_dataViewListColumnW4 = m_dataViewListCtrlParam->AppendTextColumn(wxT("w4 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
113 m_dataViewListColumnH4 = m_dataViewListCtrlParam->AppendTextColumn(wxT("h4 "), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_RIGHT), 0); | |
114 m_dataViewListColumnTime = m_dataViewListCtrlParam->AppendTextColumn(wxT("修正時刻"), wxDATAVIEW_CELL_INERT, 40, static_cast<wxAlignment>(wxALIGN_CENTER), 0); | |
115 m_dataViewListCtrlParam->SetAlternateRowColour(wxColour(255, 200, 180)) ; | |
116 gbSizer->Add(m_dataViewListCtrlParam, wxGBPosition(6, 1), wxGBSpan(4, 1), wxALL|wxEXPAND, 5); | |
117 | |
118 m_buttonWrite = new wxButton(this, wxID_ANY, wxT("設定保存"), wxDefaultPosition, wxSize(100, -1), 0); | |
119 m_buttonWrite->SetBackgroundColour(wxColour(255, 160, 120)); | |
120 gbSizer->Add(m_buttonWrite, wxGBPosition(6, 2), wxGBSpan(1, 1), wxALL, 5); | |
121 | |
122 gbSizer->Add(0, 210, wxGBPosition(7, 2), wxGBSpan(1, 1), wxEXPAND, 5); | |
123 | |
124 m_buttonPrint = new wxButton(this, wxID_ANY, wxT("印刷"), wxDefaultPosition, wxSize(100, -1), 0); | |
125 m_buttonPrint->SetBackgroundColour(wxColour(255, 205, 255)); | |
126 gbSizer->Add(m_buttonPrint, wxGBPosition(8, 2), wxGBSpan(1, 1), wxALL|wxALIGN_LEFT|wxALIGN_BOTTOM, 5); | |
127 | |
128 m_buttonPrintAll = new wxButton(this, wxID_ANY, wxT("すべて印刷"), wxDefaultPosition, wxSize(100, -1), 0); | |
129 m_buttonPrintAll->SetBackgroundColour(wxColour(255, 175, 255)); | |
130 gbSizer->Add(m_buttonPrintAll, wxGBPosition(9, 2), wxGBSpan(1, 1), wxALL|wxALIGN_BOTTOM, 5); | |
131 | |
132 this->SetSizer(gbSizer); | |
133 this->Layout(); | |
134 | |
135 this->Centre(wxBOTH); | |
136 } | |
137 | |
138 void MergeFrame::SetAccelerator() | |
139 { | |
140 wxAcceleratorEntry entries[1]; | |
141 entries[0].Set(wxACCEL_NORMAL, (int)'S', ID_NEXT); | |
142 /* | |
143 entries[1].Set(wxACCEL_NORMAL, WXK_F1, wxID_HELP); | |
144 entries[2].Set(wxACCEL_CTRL, (int)'Q', wxID_CLOSE); | |
145 */ | |
146 wxAcceleratorTable accel(1, entries); | |
147 SetAcceleratorTable(accel); | |
148 } | |
149 | |
150 | |
151 void MergeFrame::InitializeControlsValue() | |
152 { | |
153 m_filePicker->SetPath(m_csv); | |
154 | |
155 wxString file = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("testpattern.tif"); | |
156 | |
157 m_lookwinSpl->SetDefaultFile(file); | |
158 m_lookwinSpl->SetDefaultParams(m_rectSplLWin, 1); | |
159 | |
160 m_lookwinOpn1->SetDefaultFile(file); | |
161 m_lookwinOpn1->SetDefaultParams(m_rectOpn1LWin, 1); | |
162 | |
163 m_lookwinOpn2->SetDefaultFile(file); | |
164 m_lookwinOpn2->SetDefaultParams(m_rectOpn2LWin, 2); | |
165 } | |
166 | |
167 void MergeFrame::LoadDefaultParams() | |
168 { | |
169 wxString conf_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("merger.conf"); | |
170 wxFileConfig* conf = new wxFileConfig(wxT("MyApp"), wxT("T.Mutoh"), conf_file, wxEmptyString, wxCONFIG_USE_LOCAL_FILE); | |
171 | |
172 conf->SetPath(wxT("/Misc")); | |
173 conf->Read(wxT("workdir"), &m_workdir); | |
174 conf->Read(wxT("csv"), &m_csv); | |
175 | |
176 wxString buf; | |
177 | |
178 conf->SetPath(wxT("/LookWin")); | |
179 conf->Read(wxT("spl"), &buf); | |
180 m_rectSplLWin = Geo2Rect(buf); | |
181 | |
182 conf->Read(wxT("opn1"), &buf); | |
183 m_rectOpn1LWin = Geo2Rect(buf); | |
184 | |
185 conf->Read(wxT("opn2"), &buf); | |
186 m_rectOpn2LWin = Geo2Rect(buf); | |
187 | |
188 | |
189 conf->SetPath(wxT("/Mask")); | |
190 conf->Read(wxT("spl"), &buf); | |
191 m_rectSplMask = Geo2Rect(buf); | |
192 | |
193 conf->Read(wxT("opn1"), &buf); | |
194 m_rectOpn1Mask = Geo2Rect(buf); | |
195 | |
196 conf->Read(wxT("opn2"), &buf); | |
197 m_rectOpn2Mask = Geo2Rect(buf); | |
198 | |
199 conf->Read(wxT("opn3"), &buf); | |
200 m_rectOpn3Mask = Geo2Rect(buf); | |
201 | |
202 delete conf; | |
203 } | |
204 | |
205 void MergeFrame::MaskLocSet() | |
206 { | |
207 wxString x, y, w, h; | |
208 | |
209 int r = m_dataViewListCtrlParam->GetSelectedRow(); | |
210 | |
211 m_lookwinSpl->GetMaskLoc(1, &x, &y, &w, &h); | |
212 m_dataViewListCtrlParam->SetTextValue(x, r, 3); | |
213 m_dataViewListCtrlParam->SetTextValue(y, r, 4); | |
214 m_dataViewListCtrlParam->SetTextValue(w, r, 5); | |
215 m_dataViewListCtrlParam->SetTextValue(h, r, 6); | |
216 | |
217 m_lookwinOpn1->GetMaskLoc(1, &x, &y, &w, &h); | |
218 m_dataViewListCtrlParam->SetTextValue(x, r, 7); | |
219 m_dataViewListCtrlParam->SetTextValue(y, r, 8); | |
220 m_dataViewListCtrlParam->SetTextValue(w, r, 9); | |
221 m_dataViewListCtrlParam->SetTextValue(h, r, 10); | |
222 | |
223 m_lookwinOpn2->GetMaskLoc(1, &x, &y, &w, &h); | |
224 m_dataViewListCtrlParam->SetTextValue(x, r, 11); | |
225 m_dataViewListCtrlParam->SetTextValue(y, r, 12); | |
226 m_dataViewListCtrlParam->SetTextValue(w, r, 13); | |
227 m_dataViewListCtrlParam->SetTextValue(h, r, 14); | |
228 | |
229 m_lookwinOpn2->GetMaskLoc(2, &x, &y, &w, &h); | |
230 m_dataViewListCtrlParam->SetTextValue(x, r, 15); | |
231 m_dataViewListCtrlParam->SetTextValue(y, r, 16); | |
232 m_dataViewListCtrlParam->SetTextValue(w, r, 17); | |
233 m_dataViewListCtrlParam->SetTextValue(h, r, 18); | |
234 | |
235 wxDateTime now = wxDateTime::Now(); | |
236 wxString nowstr = now.Format(wxT("%H:%M:%S"), wxDateTime::GMT9 ).c_str(); | |
237 m_dataViewListCtrlParam->SetTextValue(nowstr, r, 19); | |
238 } | |
239 | |
240 void MergeFrame::ShowImages() | |
241 { | |
242 int r = m_dataViewListCtrlParam->GetSelectedRow(); | |
243 wxString dirno = m_dataViewListCtrlParam->GetTextValue(r, 0); | |
244 | |
245 wxRect mask1, mask2, mask3, mask4; | |
246 GetItemMaskLoc(r, &mask1, &mask2, &mask3, &mask4); | |
247 | |
248 wxString dir = m_workdir + wxFILE_SEP_PATH + dirno; | |
249 wxArrayString files; | |
250 wxDir::GetAllFiles(dir, &files, wxT("*.tif"), wxDIR_FILES); | |
251 | |
252 m_lookwinSpl->LoadImage(files[2]); | |
253 m_lookwinOpn1->LoadImage(files[4]); | |
254 m_lookwinOpn2->LoadImage(files[3]); | |
255 | |
256 m_lookwinSpl->SetMaskLoc(mask1, ZeroRect()); | |
257 m_lookwinOpn1->SetMaskLoc(mask2, ZeroRect()); | |
258 m_lookwinOpn2->SetMaskLoc(mask3, mask4); | |
259 | |
260 m_lookwinSpl->DoMask1(); | |
261 m_lookwinOpn1->DoMask1(); | |
262 m_lookwinOpn2->DoMask1(); | |
263 m_lookwinOpn2->DoMask2(); | |
264 } | |
265 | |
266 void MergeFrame::SaveParams() | |
267 { | |
268 if (m_dataViewListCtrlParam->GetItemCount() == 0) { | |
269 wxMessageBox(wxT("no item.")); | |
270 return; | |
271 } | |
272 | |
273 wxArrayString lines; | |
274 for (int r = 0; r < m_dataViewListCtrlParam->GetItemCount(); r++) { | |
275 wxArrayString cols; | |
276 for (int i = 0; i < 20; i++) { | |
277 cols.Add(m_dataViewListCtrlParam->GetTextValue(r, i)); | |
278 } | |
279 lines.Add(wxJoin(cols, ',', '\\')); | |
280 } | |
281 | |
282 wxTextFile file; | |
283 file.Open(m_filePicker->GetPath()); | |
284 file.Clear(); | |
285 for (int i = 0; i < lines.GetCount(); i++) { | |
286 file.AddLine(lines[i]); | |
287 } | |
288 file.Write(); | |
289 file.Close(); | |
290 } | |
291 | |
292 void MergeFrame::DoRealMask(wxString file, wxString maskfile, wxRect mask1, wxRect mask2) | |
293 { | |
294 wxCopyFile(file, maskfile, true); | |
295 wxImage img_org(file, wxBITMAP_TYPE_TIFF); | |
296 img_org.SetRGB(mask1, 255, 255, 255); | |
297 img_org.SetRGB(mask2, 255, 255, 255); | |
298 wxImage img_out = img_org.GetSubImage(wxRect(40, 0, 2400, 3508)); | |
299 img_out.SetOption(wxIMAGE_OPTION_TIFF_COMPRESSION, 5); | |
300 img_out.SaveFile(maskfile); | |
301 } | |
302 | |
303 void MergeFrame::GetItemMaskLoc(int r, wxRect* mask1, wxRect* mask2, wxRect* mask3, wxRect* mask4) | |
304 { | |
305 wxString x1 = m_dataViewListCtrlParam->GetTextValue(r, 3); | |
306 wxString y1 = m_dataViewListCtrlParam->GetTextValue(r, 4); | |
307 wxString w1 = m_dataViewListCtrlParam->GetTextValue(r, 5); | |
308 wxString h1 = m_dataViewListCtrlParam->GetTextValue(r, 6); | |
309 *mask1 = Geo2Rect(wxString::Format(wxT("%sx%s+%s+%s"), w1, h1, x1, y1)); | |
310 | |
311 wxString x2 = m_dataViewListCtrlParam->GetTextValue(r, 7); | |
312 wxString y2 = m_dataViewListCtrlParam->GetTextValue(r, 8); | |
313 wxString w2 = m_dataViewListCtrlParam->GetTextValue(r, 9); | |
314 wxString h2 = m_dataViewListCtrlParam->GetTextValue(r, 10); | |
315 *mask2 = Geo2Rect(wxString::Format(wxT("%sx%s+%s+%s"), w2, h2, x2, y2)); | |
316 | |
317 wxString x3 = m_dataViewListCtrlParam->GetTextValue(r, 11); | |
318 wxString y3 = m_dataViewListCtrlParam->GetTextValue(r, 12); | |
319 wxString w3 = m_dataViewListCtrlParam->GetTextValue(r, 13); | |
320 wxString h3 = m_dataViewListCtrlParam->GetTextValue(r, 14); | |
321 *mask3 = Geo2Rect(wxString::Format(wxT("%sx%s+%s+%s"), w3, h3, x3, y3)); | |
322 | |
323 wxString x4 = m_dataViewListCtrlParam->GetTextValue(r, 15); | |
324 wxString y4 = m_dataViewListCtrlParam->GetTextValue(r, 16); | |
325 wxString w4 = m_dataViewListCtrlParam->GetTextValue(r, 17); | |
326 wxString h4 = m_dataViewListCtrlParam->GetTextValue(r, 18); | |
327 *mask4 = Geo2Rect(wxString::Format(wxT("%sx%s+%s+%s"), w4, h4, x4, y4)); | |
328 } | |
329 | |
330 | |
331 /* Event Handlers */ | |
332 void MergeFrame::OnAclS(wxCommandEvent& WXUNUSED(event)) | |
333 { | |
334 int r = m_dataViewListCtrlParam->GetSelectedRow(); | |
335 if (r == wxNOT_FOUND) return; | |
336 | |
337 MaskLocSet(); | |
338 if (r == m_dataViewListCtrlParam->GetItemCount() - 1) return; | |
339 | |
340 m_dataViewListCtrlParam->SelectRow(r + 1); | |
341 if (r > 3) m_dataViewListCtrlParam->LineDown(); | |
342 ShowImages(); | |
343 } | |
344 | |
345 void MergeFrame::OnFileChanged(wxFileDirPickerEvent& WXUNUSED(event)) | |
346 { | |
347 m_dataViewListCtrlParam->DeleteAllItems(); | |
348 | |
349 wxTextFile file; | |
350 file.Open(m_filePicker->GetPath()); | |
351 wxVector<wxVariant> data; | |
352 | |
353 for (int i = 0; i < file.GetLineCount(); i++) { | |
354 wxArrayString buf = wxSplit(file.GetLine(i), ',', '\\'); | |
355 | |
356 data.push_back(wxVariant(buf[0])); | |
357 | |
358 data.push_back(wxVariant(buf[1])); | |
359 data.push_back(wxVariant(buf[2])); | |
360 | |
361 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectSplMask.x))); // x1 | |
362 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectSplMask.y))); // y1 | |
363 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectSplMask.width))); // w1 | |
364 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectSplMask.height))); // h2 | |
365 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn1Mask.x))); // x2 | |
366 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn1Mask.y))); // y2 | |
367 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn1Mask.width))); // w2 | |
368 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn1Mask.height))); // h2 | |
369 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn2Mask.x))); // x3 | |
370 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn2Mask.y))); // y3 | |
371 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn2Mask.width))); // w3 | |
372 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn2Mask.height))); // h3 | |
373 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn3Mask.x))); // x4 | |
374 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn3Mask.y))); // y4 | |
375 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn3Mask.width))); // w4 | |
376 data.push_back(wxVariant(wxString::Format(wxT("%d"), m_rectOpn3Mask.height))); // h4 | |
377 data.push_back(wxVariant(wxEmptyString)); // changed time | |
378 | |
379 for (int j = 3; j < buf.GetCount(); j++) data[j] = buf[j]; | |
380 m_dataViewListCtrlParam->AppendItem(data); | |
381 | |
382 data.clear(); | |
383 } | |
384 file.Close(); | |
385 | |
386 m_dataViewListCtrlParam->SelectRow(0); | |
387 ShowImages(); | |
388 } | |
389 | |
390 void MergeFrame::OnMaskLocSet(wxCommandEvent& WXUNUSED(event)) | |
391 { | |
392 MaskLocSet(); | |
393 } | |
394 | |
395 void MergeFrame::OnSelectData(wxDataViewEvent& WXUNUSED(event)) | |
396 { | |
397 ShowImages(); | |
398 } | |
399 | |
400 void MergeFrame::OnWrite(wxCommandEvent& WXUNUSED(event)) | |
401 { | |
402 SaveParams(); | |
403 wxMessageBox(wxT("data saved.")); | |
404 } | |
405 | |
406 void MergeFrame::OnPrint(wxCommandEvent& WXUNUSED(event)) | |
407 { | |
408 wxString html = wxT("<html><body>\n"); | |
409 | |
410 int r = m_dataViewListCtrlParam->GetSelectedRow(); | |
411 if (r == wxNOT_FOUND) { | |
412 wxMessageBox(wxT("no item selected.")); | |
413 return; | |
414 } | |
415 wxString dirno = m_dataViewListCtrlParam->GetTextValue(r, 0); | |
416 | |
417 wxRect mask1, mask2, mask3, mask4; | |
418 GetItemMaskLoc(r, &mask1, &mask2, &mask3, &mask4); | |
419 | |
420 wxString dir = m_workdir + wxFILE_SEP_PATH + dirno; | |
421 wxArrayString files; | |
422 wxDir::GetAllFiles(dir, &files, wxT("*.tif"), wxDIR_FILES); | |
423 | |
424 wxString temp1 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_1.jpg"), r); | |
425 wxString temp2 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_2.tif"), r); | |
426 wxString temp3 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_3.tif"), r); | |
427 wxString temp4 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_4.tif"), r); | |
428 | |
429 wxCopyFile(m_workdir + wxFILE_SEP_PATH + wxT("_") + dirno + wxT(".jpg"), temp1); | |
430 DoRealMask(files[2], temp2, mask1, ZeroRect()); | |
431 DoRealMask(files[3], temp3, mask3, mask4); | |
432 DoRealMask(files[4], temp4, mask2, ZeroRect()); | |
433 | |
434 wxString imgsz = wxString::Format(wxT("\" width=\"%d\" height=\"%d\""), 750 * m_zoom / 100, 1060 * m_zoom / 100); | |
435 | |
436 html += wxT("<img src=\"" + temp1 + imgsz + "/>\n"); | |
437 html += wxT("<img src=\"" + temp2 + imgsz + "/>\n"); | |
438 html += wxT("<img src=\"" + temp3 + imgsz + "/>\n"); | |
439 html += wxT("<img src=\"" + temp4 + imgsz + "/>\n"); | |
440 html += wxT("</body></html>"); | |
441 | |
442 // start printing | |
443 wxPrintDialogData pd; | |
444 wxPrinter p(&pd); | |
445 | |
446 wxHtmlPrintout hpout(wxT("Merger")); | |
447 hpout.SetMargins(-5, -5, -5, -5, 0); | |
448 hpout.SetHtmlText(html, wxEmptyString, false); | |
449 | |
450 if (!p.Print(NULL, &hpout, true)) { | |
451 if (wxPrinter::GetLastError() == wxPRINTER_ERROR) | |
452 wxMessageBox(wxT("print problem.")); | |
453 else | |
454 wxMessageBox(wxT("print canceled.")); | |
455 } | |
456 } | |
457 | |
458 void MergeFrame::OnPrintAll(wxCommandEvent& WXUNUSED(event)) | |
459 { | |
460 int n = m_dataViewListCtrlParam->GetItemCount(); | |
461 m_gauge->SetRange(n); | |
462 m_gauge->SetValue(0); | |
463 | |
464 wxString html = wxT("<html><body>\n"); | |
465 int page = 1; | |
466 for (int r = 0; r < n; r++) { | |
467 wxString dirno = m_dataViewListCtrlParam->GetTextValue(r, 0); | |
468 | |
469 wxRect mask1, mask2, mask3, mask4; | |
470 GetItemMaskLoc(r, &mask1, &mask2, &mask3, &mask4); | |
471 | |
472 wxString dir = m_workdir + wxFILE_SEP_PATH + dirno; | |
473 wxArrayString files; | |
474 wxDir::GetAllFiles(dir, &files, wxT("*.tif"), wxDIR_FILES); | |
475 | |
476 wxString temp1 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_1.jpg"), r); | |
477 wxString temp2 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_2.tif"), r); | |
478 wxString temp3 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_3.tif"), r); | |
479 wxString temp4 = m_workdir + wxFILE_SEP_PATH + wxString::Format(wxT("temp%02d_4.tif"), r); | |
480 | |
481 wxCopyFile(m_workdir + wxFILE_SEP_PATH + wxT("_") + dirno + wxT(".jpg"), temp1); | |
482 DoRealMask(files[2], temp2, mask1, ZeroRect()); | |
483 DoRealMask(files[3], temp3, mask3, mask4); | |
484 DoRealMask(files[4], temp4, mask2, ZeroRect()); | |
485 | |
486 wxString imgszl = wxString::Format(wxT("\" width=\"%d\" height=\"%d\""), 750 * m_zoom / 100, 1060 * m_zoom / 100); | |
487 wxString imgszr = wxString::Format(wxT("\" width=\"%d\" height=\"%d\""), 750 * m_zoom / 100, 1040 * m_zoom / 100); | |
488 | |
489 html += wxT("<font size=-2>"); | |
490 html += wxT("<p align=left>"); | |
491 html += wxT("<img src=\"" + temp1 + imgszl + "/>\n"); | |
492 html += wxT("<img src=\"" + temp2 + imgszr + "/>\n"); | |
493 html += wxT("</p>"); | |
494 | |
495 html += wxT("<p align=left>"); | |
496 html += wxString::Format(wxT(" - %02d -"), page++); | |
497 html += wxT("</p>"); | |
498 | |
499 html += wxT("<p align=right>"); | |
500 html += wxT("<img src=\"" + temp3 + imgszl + "/>\n"); | |
501 html += wxT("<img src=\"" + temp4 + imgszr + "/>\n"); | |
502 html += wxT("</p>"); | |
503 | |
504 html += wxT("<p align=left>"); | |
505 html += wxString::Format(wxT(" - %02d -"), page++); | |
506 html += wxT("</p>"); | |
507 html += wxT("</font>"); | |
508 | |
509 m_gauge->SetValue(r + 1); | |
510 } | |
511 html += wxT("</body></html>"); | |
512 m_gauge->SetValue(0); | |
513 | |
514 // start printing | |
515 wxPrintDialogData pd; | |
516 wxPrinter p(&pd); | |
517 | |
518 wxHtmlPrintout hpout(wxT("Merger - batch mode")); | |
519 hpout.SetMargins(-5, -5, -5, -5, 0); | |
520 hpout.SetHtmlText(html, wxEmptyString, false); | |
521 | |
522 if (!p.Print(NULL, &hpout, true)) { | |
523 if (wxPrinter::GetLastError() == wxPRINTER_ERROR) | |
524 wxMessageBox(wxT("print problem.")); | |
525 else | |
526 wxMessageBox(wxT("print canceled.")); | |
527 } | |
528 | |
529 wxMessageDialog dlg(this, wxT("設定を保存しますか?"), wxT("Question ?"), wxYES_NO); | |
530 if (dlg.ShowModal() == wxID_YES) { | |
531 SaveParams(); | |
532 wxMessageBox(wxT("data saved.")); | |
533 } | |
534 } | |
535 |