2 * Copyright (c) 2007, Digital Signal Processing Laboratory, Universita'� degli studi di Perugia (UPG), Italy
\r
3 * All rights reserved.
\r
5 * Redistribution and use in source and binary forms, with or without
\r
6 * modification, are permitted provided that the following conditions
\r
8 * 1. Redistributions of source code must retain the above copyright
\r
9 * notice, this list of conditions and the following disclaimer.
\r
10 * 2. Redistributions in binary form must reproduce the above copyright
\r
11 * notice, this list of conditions and the following disclaimer in the
\r
12 * documentation and/or other materials provided with the distribution.
\r
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
\r
15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\r
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
\r
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
\r
18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
\r
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
\r
20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
\r
21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
\r
22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
\r
23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
\r
24 * POSSIBILITY OF SUCH DAMAGE.
\r
26 #include "OPJViewer.h"
\r
28 // ----------------------------------------------------------------------------
\r
30 // ----------------------------------------------------------------------------
\r
32 IMPLEMENT_CLASS(OPJDecoderDialog, wxPropertySheetDialog)
\r
34 BEGIN_EVENT_TABLE(OPJDecoderDialog, wxPropertySheetDialog)
\r
35 EVT_CHECKBOX(OPJDECO_ENABLEDECO, OPJDecoderDialog::OnEnableDeco)
\r
37 EVT_CHECKBOX(OPJDECO_ENABLEJPWL, OPJDecoderDialog::OnEnableJPWL)
\r
41 OPJDecoderDialog::OPJDecoderDialog(wxWindow* win, int dialogType)
\r
43 SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
\r
45 Create(win, wxID_ANY, wxT("Decoder settings"),
\r
46 wxDefaultPosition, wxDefaultSize,
\r
47 wxDEFAULT_DIALOG_STYLE| (int) wxPlatform::IfNot(wxOS_WINDOWS_CE, wxRESIZE_BORDER)
\r
50 CreateButtons(wxOK | wxCANCEL | (int)wxPlatform::IfNot(wxOS_WINDOWS_CE, wxHELP));
\r
52 m_settingsNotebook = GetBookCtrl();
\r
54 wxPanel* mainSettings = CreateMainSettingsPage(m_settingsNotebook);
\r
55 wxPanel* jpeg2000Settings = CreatePart1SettingsPage(m_settingsNotebook);
\r
56 if (!wxGetApp().m_enabledeco)
\r
57 jpeg2000Settings->Enable(false);
\r
58 wxPanel* mjpeg2000Settings = CreatePart3SettingsPage(m_settingsNotebook);
\r
59 if (!wxGetApp().m_enabledeco)
\r
60 mjpeg2000Settings->Enable(false);
\r
62 wxPanel* jpwlSettings = CreatePart11SettingsPage(m_settingsNotebook);
\r
63 if (!wxGetApp().m_enabledeco)
\r
64 jpwlSettings->Enable(false);
\r
67 m_settingsNotebook->AddPage(mainSettings, wxT("Display"), false);
\r
68 m_settingsNotebook->AddPage(jpeg2000Settings, wxT("JPEG 2000"), false);
\r
69 m_settingsNotebook->AddPage(mjpeg2000Settings, wxT("MJPEG 2000"), false);
\r
71 m_settingsNotebook->AddPage(jpwlSettings, wxT("JPWL"), false);
\r
77 OPJDecoderDialog::~OPJDecoderDialog()
\r
81 wxPanel* OPJDecoderDialog::CreateMainSettingsPage(wxWindow* parent)
\r
83 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
86 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
89 wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
\r
91 // add decoding enabling check box
\r
93 m_enabledecoCheck = new wxCheckBox(panel, OPJDECO_ENABLEDECO, wxT("Enable decoding"), wxDefaultPosition, wxDefaultSize),
\r
94 0, wxGROW | wxALL, 5);
\r
95 m_enabledecoCheck->SetValue(wxGetApp().m_enabledeco);
\r
97 // add parsing enabling check box
\r
99 m_enableparseCheck = new wxCheckBox(panel, OPJDECO_ENABLEPARSE, wxT("Enable parsing"), wxDefaultPosition, wxDefaultSize),
\r
100 0, wxGROW | wxALL, 5);
\r
101 m_enableparseCheck->SetValue(wxGetApp().m_enableparse);
\r
103 // resize settings, column
\r
104 wxString choices[] = {wxT("Don't resize"), wxT("Low quality"), wxT("High quality")};
\r
105 m_resizeBox = new wxRadioBox(panel, OPJDECO_RESMETHOD,
\r
106 wxT("Resize method"),
\r
107 wxDefaultPosition, wxDefaultSize,
\r
111 wxRA_SPECIFY_ROWS);
\r
112 m_resizeBox->SetSelection(wxGetApp().m_resizemethod + 1);
\r
114 subtopSizer->Add(m_resizeBox, 0, wxGROW | wxALL, 5);
\r
116 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
118 // assign top and fit it
\r
119 panel->SetSizer(topSizer);
\r
120 topSizer->Fit(panel);
\r
125 wxPanel* OPJDecoderDialog::CreatePart3SettingsPage(wxWindow* parent)
\r
127 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
130 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
133 //topSizer->AddSpacer(5);
\r
136 wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
\r
138 // frame settings, column
\r
139 wxStaticBox* frameBox = new wxStaticBox(panel, wxID_ANY, wxT("Frame"));
\r
140 wxBoxSizer* frameSizer = new wxStaticBoxSizer(frameBox, wxVERTICAL);
\r
142 // selected frame number, row
\r
143 wxBoxSizer* framenumSizer = new wxBoxSizer(wxHORIZONTAL);
\r
146 framenumSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Displayed frame:")),
\r
147 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
\r
149 // add some horizontal space
\r
150 framenumSizer->Add(5, 5, 1, wxALL, 0);
\r
152 // add the value control
\r
153 framenumSizer->Add(
\r
154 m_framenumCtrl = new wxSpinCtrl(panel, OPJDECO_FRAMENUM,
\r
155 wxString::Format(wxT("%d"), wxGetApp().m_framenum),
\r
156 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
158 1, 100000, wxGetApp().m_framenum),
\r
159 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
\r
161 frameSizer->Add(framenumSizer, 0, wxGROW | wxALL, 5);
\r
163 subtopSizer->Add(frameSizer, 0, wxGROW | wxALL, 5);
\r
165 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
167 // assign top and fit it
\r
168 panel->SetSizer(topSizer);
\r
169 topSizer->Fit(panel);
\r
174 wxPanel* OPJDecoderDialog::CreatePart1SettingsPage(wxWindow* parent)
\r
176 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
179 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
182 //topSizer->AddSpacer(5);
\r
185 wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
\r
187 // resolutions settings, column
\r
188 wxStaticBox* resolutionBox = new wxStaticBox(panel, wxID_ANY, wxT("Resolutions"));
\r
189 wxBoxSizer* resolutionSizer = new wxStaticBoxSizer(resolutionBox, wxVERTICAL);
\r
191 // reduce factor sizer, row
\r
192 wxBoxSizer* reduceSizer = new wxBoxSizer(wxHORIZONTAL);
\r
195 reduceSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Reduce factor:")),
\r
196 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
\r
198 // add some horizontal space
\r
199 reduceSizer->Add(5, 5, 1, wxALL, 0);
\r
201 // add the value control
\r
203 m_reduceCtrl = new wxSpinCtrl(panel, OPJDECO_REDUCEFACTOR,
\r
204 wxString::Format(wxT("%d"), wxGetApp().m_reducefactor),
\r
205 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
207 0, 10000, wxGetApp().m_reducefactor),
\r
208 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
\r
210 resolutionSizer->Add(reduceSizer, 0, wxGROW | wxALL, 5);
\r
212 subtopSizer->Add(resolutionSizer, 0, wxGROW | wxALL, 5);
\r
214 // quality layer settings, column
\r
215 wxStaticBox* layerBox = new wxStaticBox(panel, wxID_ANY, wxT("Layers"));
\r
216 wxBoxSizer* layerSizer = new wxStaticBoxSizer(layerBox, wxVERTICAL);
\r
218 // quality layers sizer, row
\r
219 wxBoxSizer* qualitySizer = new wxBoxSizer(wxHORIZONTAL);
\r
222 qualitySizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Quality layers:")),
\r
223 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
\r
225 // add some horizontal space
\r
226 qualitySizer->Add(5, 5, 1, wxALL, 0);
\r
228 // add the value control
\r
230 m_layerCtrl = new wxSpinCtrl(panel, OPJDECO_QUALITYLAYERS,
\r
231 wxString::Format(wxT("%d"), wxGetApp().m_qualitylayers),
\r
232 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
234 0, 100000, wxGetApp().m_qualitylayers),
\r
235 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
\r
237 layerSizer->Add(qualitySizer, 0, wxGROW | wxALL, 5);
\r
239 subtopSizer->Add(layerSizer, 0, wxGROW | wxALL, 5);
\r
241 // component settings, column
\r
242 wxStaticBox* compoBox = new wxStaticBox(panel, wxID_ANY, wxT("Components"));
\r
243 wxBoxSizer* compoSizer = new wxStaticBoxSizer(compoBox, wxVERTICAL);
\r
245 // quality layers sizer, row
\r
246 wxBoxSizer* numcompsSizer = new wxBoxSizer(wxHORIZONTAL);
\r
249 numcompsSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Component displayed:")),
\r
250 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
\r
252 // add some horizontal space
\r
253 numcompsSizer->Add(5, 5, 1, wxALL, 0);
\r
255 // add the value control
\r
256 numcompsSizer->Add(
\r
257 m_numcompsCtrl = new wxSpinCtrl(panel, OPJDECO_NUMCOMPS,
\r
258 wxString::Format(wxT("%d"), wxGetApp().m_components),
\r
259 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
261 0, 100000, wxGetApp().m_components),
\r
262 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
\r
263 m_numcompsCtrl->Enable(true);
\r
265 compoSizer->Add(numcompsSizer, 0, wxGROW | wxALL, 5);
\r
267 subtopSizer->Add(compoSizer, 0, wxGROW | wxALL, 5);
\r
269 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
271 // assign top and fit it
\r
272 panel->SetSizer(topSizer);
\r
273 topSizer->Fit(panel);
\r
279 wxPanel* OPJDecoderDialog::CreatePart11SettingsPage(wxWindow* parent)
\r
281 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
284 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
287 //topSizer->AddSpacer(5);
\r
290 wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
\r
292 // add JPWL enabling check box
\r
294 m_enablejpwlCheck = new wxCheckBox(panel, OPJDECO_ENABLEJPWL, wxT("Enable JPWL"), wxDefaultPosition, wxDefaultSize),
\r
295 0, wxGROW | wxALL, 5);
\r
296 m_enablejpwlCheck->SetValue(wxGetApp().m_enablejpwl);
\r
298 // component settings, column
\r
299 wxStaticBox* compoBox = new wxStaticBox(panel, wxID_ANY, wxT("Components"));
\r
300 wxBoxSizer* compoSizer = new wxStaticBoxSizer(compoBox, wxVERTICAL);
\r
302 // expected components sizer, row
\r
303 wxBoxSizer* expcompsSizer = new wxBoxSizer(wxHORIZONTAL);
\r
306 expcompsSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Expected comps.:")),
\r
307 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
\r
309 // add some horizontal space
\r
310 expcompsSizer->Add(5, 5, 1, wxALL, 0);
\r
312 // add the value control
\r
313 expcompsSizer->Add(
\r
314 m_expcompsCtrl = new wxSpinCtrl(panel, OPJDECO_EXPCOMPS,
\r
315 wxString::Format(wxT("%d"), wxGetApp().m_expcomps),
\r
316 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
318 1, 100000, wxGetApp().m_expcomps),
\r
319 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
\r
320 m_expcompsCtrl->Enable(wxGetApp().m_enablejpwl);
\r
322 compoSizer->Add(expcompsSizer, 0, wxGROW | wxALL, 5);
\r
324 subtopSizer->Add(compoSizer, 0, wxGROW | wxALL, 5);
\r
326 // tiles settings, column
\r
327 wxStaticBox* tileBox = new wxStaticBox(panel, wxID_ANY, wxT("Tiles"));
\r
328 wxBoxSizer* tileSizer = new wxStaticBoxSizer(tileBox, wxVERTICAL);
\r
330 // maximum tiles sizer, row
\r
331 wxBoxSizer* maxtileSizer = new wxBoxSizer(wxHORIZONTAL);
\r
334 maxtileSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Max. no. of tiles:")),
\r
335 0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
\r
337 // add some horizontal space
\r
338 maxtileSizer->Add(5, 5, 1, wxALL, 0);
\r
340 // add the value control
\r
342 m_maxtilesCtrl = new wxSpinCtrl(panel, OPJDECO_MAXTILES,
\r
343 wxString::Format(wxT("%d"), wxGetApp().m_maxtiles),
\r
344 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
346 1, 100000, wxGetApp().m_maxtiles),
\r
347 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
\r
348 m_maxtilesCtrl->Enable(wxGetApp().m_enablejpwl);
\r
350 tileSizer->Add(maxtileSizer, 0, wxGROW | wxALL, 5);
\r
352 subtopSizer->Add(tileSizer, 0, wxGROW | wxALL, 5);
\r
354 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
356 // assign top and fit it
\r
357 panel->SetSizer(topSizer);
\r
358 topSizer->Fit(panel);
\r
363 void OPJDecoderDialog::OnEnableDeco(wxCommandEvent& event)
\r
367 if (event.IsChecked()) {
\r
368 wxLogMessage(wxT("Decoding enabled"));
\r
369 m_resizeBox->Enable(true);
\r
370 // enable all tabs except ourselves
\r
371 for (pp = 0; pp < m_settingsNotebook->GetPageCount(); pp++) {
\r
372 if (m_settingsNotebook->GetPageText(pp) != wxT("Display"))
\r
373 m_settingsNotebook->GetPage(pp)->Enable(true);
\r
376 wxLogMessage(wxT("Decoding disabled"));
\r
377 m_resizeBox->Enable(false);
\r
378 // disable all tabs except ourselves
\r
379 for (pp = 0; pp < m_settingsNotebook->GetPageCount(); pp++) {
\r
380 if (m_settingsNotebook->GetPageText(pp) != wxT("Display"))
\r
381 m_settingsNotebook->GetPage(pp)->Enable(false);
\r
387 void OPJDecoderDialog::OnEnableJPWL(wxCommandEvent& event)
\r
389 if (event.IsChecked()) {
\r
390 wxLogMessage(wxT("JPWL enabled"));
\r
391 m_expcompsCtrl->Enable(true);
\r
392 m_maxtilesCtrl->Enable(true);
\r
394 wxLogMessage(wxT("JPWL disabled"));
\r
395 m_expcompsCtrl->Enable(false);
\r
396 m_maxtilesCtrl->Enable(false);
\r
406 // ----------------------------------------------------------------------------
\r
407 // OPJEncoderDialog
\r
408 // ----------------------------------------------------------------------------
\r
410 IMPLEMENT_CLASS(OPJEncoderDialog, wxPropertySheetDialog)
\r
412 BEGIN_EVENT_TABLE(OPJEncoderDialog, wxPropertySheetDialog)
\r
413 EVT_CHECKBOX(OPJENCO_ENABLECOMM, OPJEncoderDialog::OnEnableComm)
\r
414 EVT_CHECKBOX(OPJENCO_ENABLEINDEX, OPJEncoderDialog::OnEnableIdx)
\r
415 EVT_CHECKBOX(OPJENCO_ENABLEPOC, OPJEncoderDialog::OnEnablePoc)
\r
416 EVT_RADIOBUTTON(OPJENCO_RATERADIO, OPJEncoderDialog::OnRadioQualityRate)
\r
417 EVT_RADIOBUTTON(OPJENCO_QUALITYRADIO, OPJEncoderDialog::OnRadioQualityRate)
\r
419 EVT_CHECKBOX(OPJENCO_ENABLEJPWL, OPJEncoderDialog::OnEnableJPWL)
\r
420 EVT_CHOICE(OPJENCO_HPROT, OPJEncoderDialog::OnHprotSelect)
\r
421 EVT_CHOICE(OPJENCO_PPROT, OPJEncoderDialog::OnPprotSelect)
\r
422 EVT_CHOICE(OPJENCO_SENSI, OPJEncoderDialog::OnSensiSelect)
\r
426 OPJEncoderDialog::OPJEncoderDialog(wxWindow* win, int dialogType)
\r
428 SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
\r
430 Create(win, wxID_ANY, wxT("Encoder settings"),
\r
431 wxDefaultPosition, wxDefaultSize,
\r
432 wxDEFAULT_DIALOG_STYLE| (int) wxPlatform::IfNot(wxOS_WINDOWS_CE, wxRESIZE_BORDER)
\r
435 CreateButtons(wxOK | wxCANCEL | (int)wxPlatform::IfNot(wxOS_WINDOWS_CE, wxHELP));
\r
437 m_settingsNotebook = GetBookCtrl();
\r
439 wxPanel* jpeg2000_1Settings = CreatePart1_1SettingsPage(m_settingsNotebook);
\r
440 wxPanel* jpeg2000_2Settings = CreatePart1_2SettingsPage(m_settingsNotebook);
\r
441 wxPanel* mainSettings = CreateMainSettingsPage(m_settingsNotebook);
\r
443 wxPanel* jpwlSettings = CreatePart11SettingsPage(m_settingsNotebook);
\r
447 m_settingsNotebook->AddPage(jpwlSettings, wxT("JPWL"), false);
\r
449 m_settingsNotebook->AddPage(jpeg2000_1Settings, wxT("JPEG 2000 - 1"), false);
\r
450 m_settingsNotebook->AddPage(jpeg2000_2Settings, wxT("JPEG 2000 - 2"), false);
\r
451 m_settingsNotebook->AddPage(mainSettings, wxT("General"), false);
\r
456 OPJEncoderDialog::~OPJEncoderDialog()
\r
460 wxPanel* OPJEncoderDialog::CreateMainSettingsPage(wxWindow* parent)
\r
462 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
465 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
468 wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
\r
470 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
472 // assign top and fit it
\r
473 panel->SetSizer(topSizer);
\r
474 topSizer->Fit(panel);
\r
480 wxPanel* OPJEncoderDialog::CreatePart11SettingsPage(wxWindow* parent)
\r
482 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
486 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
488 // add JPWL enabling check box
\r
490 m_enablejpwlCheck = new wxCheckBox(panel, OPJENCO_ENABLEJPWL, wxT("Enable JPWL"),
\r
491 wxDefaultPosition, wxDefaultSize),
\r
492 0, wxGROW | wxALL | wxALIGN_CENTER, 5);
\r
493 m_enablejpwlCheck->SetValue(wxGetApp().m_enablejpwle);
\r
496 wxFlexGridSizer *subtopSizer = new wxFlexGridSizer(2, 3, 3);
\r
498 // header settings, column
\r
499 wxStaticBox* headerBox = new wxStaticBox(panel, wxID_ANY, wxT("Header protection"));
\r
500 wxBoxSizer* headerSizer = new wxStaticBoxSizer(headerBox, wxVERTICAL);
\r
503 wxBoxSizer* info1Sizer = new wxBoxSizer(wxHORIZONTAL);
\r
506 info1Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
508 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
510 // add some horizontal space
\r
511 info1Sizer->Add(3, 3, 1, wxALL, 0);
\r
514 info1Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
516 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
518 headerSizer->Add(info1Sizer, 0, wxGROW | wxALL, 0);
\r
521 wxString hprotvalues[] = {wxT("None"), wxT("Pred."), wxT("CRC16"), wxT("CRC32"),
\r
522 wxT("RS37"), wxT("RS38"), wxT("RS40"), wxT("RS43"), wxT("RS45"), wxT("RS48"),
\r
523 wxT("RS51"), wxT("RS53"), wxT("RS56"), wxT("RS64"), wxT("RS75"), wxT("RS80"),
\r
524 wxT("RS85"), wxT("RS96"), wxT("RS112"), wxT("RS128")};
\r
525 for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) {
\r
527 // tile+hprot sizer, row
\r
528 wxBoxSizer* tilehprotSizer = new wxBoxSizer(wxHORIZONTAL);
\r
530 // add the value selection
\r
531 tilehprotSizer->Add(
\r
532 m_hprotChoice[specno] = new wxChoice(panel, OPJENCO_HPROT,
\r
533 wxDefaultPosition, wxSize(60, wxDefaultCoord),
\r
534 WXSIZEOF(hprotvalues), hprotvalues),
\r
535 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
536 m_hprotChoice[specno]->SetSelection(wxGetApp().m_hprotsel[specno]);
\r
538 // add some horizontal space
\r
539 tilehprotSizer->Add(3, 3, 1, wxALL, 0);
\r
541 // add the value control
\r
542 tilehprotSizer->Add(
\r
543 m_htileCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_HTILE,
\r
544 wxString::Format(wxT("%d"), wxGetApp().m_htileval[specno]),
\r
545 wxDefaultPosition, wxSize(45, wxDefaultCoord),
\r
547 0, JPWL_MAXIMUM_TILES - 1, 0),
\r
548 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
550 headerSizer->Add(tilehprotSizer, 0, wxGROW | wxALL, 0);
\r
553 wxCommandEvent event1;
\r
554 OnHprotSelect(event1);
\r
556 subtopSizer->Add(headerSizer, 0, wxGROW | wxALL, 3);
\r
558 // packet settings, column
\r
559 wxStaticBox* packetBox = new wxStaticBox(panel, wxID_ANY, wxT("Packet protection"));
\r
560 wxBoxSizer* packetSizer = new wxStaticBoxSizer(packetBox, wxVERTICAL);
\r
563 wxBoxSizer* info2Sizer = new wxBoxSizer(wxHORIZONTAL);
\r
566 info2Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
568 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
570 // add some horizontal space
\r
571 info2Sizer->Add(3, 3, 1, wxALL, 0);
\r
574 info2Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
576 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
578 // add some horizontal space
\r
579 info2Sizer->Add(3, 3, 1, wxALL, 0);
\r
582 info2Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
584 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
586 packetSizer->Add(info2Sizer, 0, wxGROW | wxALL, 0);
\r
589 wxString pprotvalues[] = {wxT("None"), wxT("Pred."), wxT("CRC16"), wxT("CRC32"),
\r
590 wxT("RS37"), wxT("RS38"), wxT("RS40"), wxT("RS43"), wxT("RS45"), wxT("RS48"),
\r
591 wxT("RS51"), wxT("RS53"), wxT("RS56"), wxT("RS64"), wxT("RS75"), wxT("RS80"),
\r
592 wxT("RS85"), wxT("RS96"), wxT("RS112"), wxT("RS128")};
\r
593 for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) {
\r
595 // tile+pprot sizer, row
\r
596 wxBoxSizer* tilepprotSizer = new wxBoxSizer(wxHORIZONTAL);
\r
598 // add the value selection
\r
599 tilepprotSizer->Add(
\r
600 m_pprotChoice[specno] = new wxChoice(panel, OPJENCO_PPROT,
\r
601 wxDefaultPosition, wxSize(60, wxDefaultCoord),
\r
602 WXSIZEOF(pprotvalues), pprotvalues),
\r
603 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
604 m_pprotChoice[specno]->SetSelection(wxGetApp().m_pprotsel[specno]);
\r
606 // add some horizontal space
\r
607 tilepprotSizer->Add(3, 3, 1, wxALL, 0);
\r
609 // add the value control
\r
610 tilepprotSizer->Add(
\r
611 m_ptileCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_PTILE,
\r
612 wxString::Format(wxT("%d"), wxGetApp().m_ptileval[specno]),
\r
613 wxDefaultPosition, wxSize(45, wxDefaultCoord),
\r
615 0, JPWL_MAXIMUM_TILES - 1, 0),
\r
616 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
618 // add some horizontal space
\r
619 tilepprotSizer->Add(3, 3, 1, wxALL, 0);
\r
621 // add the value control
\r
622 tilepprotSizer->Add(
\r
623 m_ppackCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_PPACK,
\r
624 wxString::Format(wxT("%d"), wxGetApp().m_ppackval[specno]),
\r
625 wxDefaultPosition, wxSize(50, wxDefaultCoord),
\r
628 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
630 packetSizer->Add(tilepprotSizer, 0, wxGROW | wxALL, 0);
\r
633 wxCommandEvent event2;
\r
634 OnPprotSelect(event2);
\r
636 subtopSizer->Add(packetSizer, 0, wxGROW | wxALL, 3);
\r
638 // sensitivity settings, column
\r
639 wxStaticBox* sensiBox = new wxStaticBox(panel, wxID_ANY, wxT("Sensitivity"));
\r
640 wxBoxSizer* sensiSizer = new wxStaticBoxSizer(sensiBox, wxVERTICAL);
\r
643 wxBoxSizer* info3Sizer = new wxBoxSizer(wxHORIZONTAL);
\r
646 info3Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
648 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
650 // add some horizontal space
\r
651 info3Sizer->Add(3, 3, 1, wxALL, 0);
\r
654 info3Sizer->Add(new wxStaticText(panel, wxID_ANY,
\r
656 0, wxALL | wxALIGN_CENTER_VERTICAL, 1);
\r
658 sensiSizer->Add(info3Sizer, 0, wxGROW | wxALL, 0);
\r
661 wxString sensivalues[] = {wxT("None"), wxT("RELATIVE ERROR"), wxT("MSE"),
\r
662 wxT("MSE REDUCTION"), wxT("PSNR INCREMENT"), wxT("MAXERR"), wxT("TSE")};
\r
663 for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) {
\r
665 // tile+sensi sizer, row
\r
666 wxBoxSizer* tilesensiSizer = new wxBoxSizer(wxHORIZONTAL);
\r
668 // add the value selection
\r
669 tilesensiSizer->Add(
\r
670 m_sensiChoice[specno] = new wxChoice(panel, OPJENCO_SENSI,
\r
671 wxDefaultPosition, wxSize(110, wxDefaultCoord),
\r
672 WXSIZEOF(sensivalues), sensivalues),
\r
673 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
674 m_sensiChoice[specno]->SetSelection(wxGetApp().m_sensisel[specno]);
\r
676 // add some horizontal space
\r
677 tilesensiSizer->Add(3, 3, 1, wxALL, 0);
\r
679 // add the value control
\r
680 tilesensiSizer->Add(
\r
681 m_stileCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_STILE,
\r
682 wxString::Format(wxT("%d"), wxGetApp().m_stileval[specno]),
\r
683 wxDefaultPosition, wxSize(45, wxDefaultCoord),
\r
685 0, JPWL_MAXIMUM_TILES - 1, 0),
\r
686 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1);
\r
688 sensiSizer->Add(tilesensiSizer, 0, wxGROW | wxALL, 0);
\r
691 wxCommandEvent event3;
\r
692 OnSensiSelect(event3);
\r
694 subtopSizer->Add(sensiSizer, 0, wxGROW | wxALL, 3);
\r
696 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
698 // assign top and fit it
\r
699 panel->SetSizer(topSizer);
\r
700 topSizer->Fit(panel);
\r
706 wxPanel* OPJEncoderDialog::CreatePart1_1SettingsPage(wxWindow* parent)
\r
708 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
711 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
714 //topSizer->AddSpacer(5);
\r
717 wxFlexGridSizer *subtopSizer = new wxFlexGridSizer(2, 3, 3);
\r
719 // image settings, column
\r
720 wxStaticBox* imageBox = new wxStaticBox(panel, wxID_ANY, wxT("Image"));
\r
721 wxBoxSizer* imageSizer = new wxStaticBoxSizer(imageBox, wxVERTICAL);
\r
723 // subsampling factor sizer, row
\r
724 wxBoxSizer* subsSizer = new wxBoxSizer(wxHORIZONTAL);
\r
727 subsSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Subsampling:")),
\r
728 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
730 // add some horizontal space
\r
731 subsSizer->Add(3, 3, 1, wxALL, 0);
\r
733 // add the value control
\r
735 m_subsamplingCtrl = new wxTextCtrl(panel, OPJENCO_SUBSAMPLING,
\r
736 wxGetApp().m_subsampling,
\r
737 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
739 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
741 imageSizer->Add(subsSizer, 0, wxGROW | wxALL, 3);
\r
743 // origin sizer, row
\r
744 wxBoxSizer* imorigSizer = new wxBoxSizer(wxHORIZONTAL);
\r
747 imorigSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Origin:")),
\r
748 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
750 // add some horizontal space
\r
751 imorigSizer->Add(3, 3, 1, wxALL, 0);
\r
753 // add the value control
\r
755 m_originCtrl = new wxTextCtrl(panel, OPJENCO_IMORIG,
\r
756 wxGetApp().m_origin,
\r
757 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
759 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
761 imageSizer->Add(imorigSizer, 0, wxGROW | wxALL, 3);
\r
763 subtopSizer->Add(imageSizer, 0, wxGROW | wxALL, 3);
\r
765 // layer settings, column
\r
766 wxStaticBox* layerBox = new wxStaticBox(panel, wxID_ANY, wxT("Layers/compression"));
\r
767 wxBoxSizer* layerSizer = new wxStaticBoxSizer(layerBox, wxVERTICAL);
\r
769 // rate factor sizer, row
\r
770 wxBoxSizer* rateSizer = new wxBoxSizer(wxHORIZONTAL);
\r
773 /*rateSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Rate values:")),
\r
774 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);*/
\r
776 // add the radio button
\r
778 m_rateRadio = new wxRadioButton(panel, OPJENCO_RATERADIO, wxT("&Rate values"),
\r
779 wxDefaultPosition, wxDefaultSize,
\r
781 0, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL
\r
783 m_rateRadio->SetValue(!(wxGetApp().m_enablequality));
\r
785 // add some horizontal space
\r
786 rateSizer->Add(3, 3, 1, wxALL, 0);
\r
788 // add the value control
\r
790 m_rateCtrl = new wxTextCtrl(panel, OPJENCO_RATEFACTOR,
\r
791 wxGetApp().m_rates,
\r
792 wxDefaultPosition, wxSize(100, wxDefaultCoord),
\r
794 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
795 if (wxGetApp().m_enablequality == true)
\r
796 m_rateCtrl->Enable(false);
\r
798 layerSizer->Add(rateSizer, 0, wxGROW | wxALL, 3);
\r
800 // quality factor sizer, row
\r
801 wxBoxSizer* qualitySizer = new wxBoxSizer(wxHORIZONTAL);
\r
804 /*qualitySizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Quality values:")),
\r
805 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);*/
\r
807 // add the radio button
\r
809 m_qualityRadio = new wxRadioButton(panel, OPJENCO_QUALITYRADIO, wxT("&Quality values"),
\r
810 wxDefaultPosition, wxDefaultSize),
\r
811 0, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL
\r
813 m_qualityRadio->SetValue(wxGetApp().m_enablequality);
\r
815 // add some horizontal space
\r
816 qualitySizer->Add(3, 3, 1, wxALL, 0);
\r
818 // add the value control
\r
820 m_qualityCtrl = new wxTextCtrl(panel, OPJENCO_QUALITYFACTOR,
\r
821 wxGetApp().m_quality,
\r
822 wxDefaultPosition, wxSize(100, wxDefaultCoord),
\r
824 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
825 if (wxGetApp().m_enablequality == false)
\r
826 m_qualityCtrl->Enable(false);
\r
828 layerSizer->Add(qualitySizer, 0, wxGROW | wxALL, 3);
\r
830 subtopSizer->Add(layerSizer, 0, wxGROW | wxALL, 3);
\r
832 // wavelet settings, column
\r
833 wxStaticBox* transformBox = new wxStaticBox(panel, wxID_ANY, wxT("Transforms"));
\r
834 wxBoxSizer* transformSizer = new wxStaticBoxSizer(transformBox, wxVERTICAL);
\r
836 // multiple component check box
\r
837 transformSizer->Add(
\r
838 m_mctCheck = new wxCheckBox(panel, OPJENCO_ENABLEMCT, wxT("Multiple component"),
\r
839 wxDefaultPosition, wxDefaultSize),
\r
840 0, wxGROW | wxALL, 3);
\r
841 m_mctCheck->SetValue(wxGetApp().m_multicomp);
\r
843 // irreversible wavelet check box
\r
844 transformSizer->Add(
\r
845 m_irrevCheck = new wxCheckBox(panel, OPJENCO_ENABLEIRREV, wxT("Irreversible wavelet"),
\r
846 wxDefaultPosition, wxDefaultSize),
\r
847 0, wxGROW | wxALL, 3);
\r
848 m_irrevCheck->SetValue(wxGetApp().m_irreversible);
\r
850 // resolution number sizer, row
\r
851 wxBoxSizer* resnumSizer = new wxBoxSizer(wxHORIZONTAL);
\r
854 resnumSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Resolutions:")),
\r
855 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
857 // add some horizontal space
\r
858 resnumSizer->Add(3, 3, 1, wxALL, 0);
\r
860 // add the value control
\r
862 m_resolutionsCtrl = new wxSpinCtrl(panel, OPJENCO_RESNUMBER,
\r
863 wxString::Format(wxT("%d"), wxGetApp().m_resolutions),
\r
864 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
867 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
869 transformSizer->Add(resnumSizer, 0, wxGROW | wxALL, 3);
\r
871 subtopSizer->Add(transformSizer, 0, wxGROW | wxALL, 3);
\r
873 // codestream settings, column
\r
874 wxStaticBox* codestreamBox = new wxStaticBox(panel, wxID_ANY, wxT("Codestream"));
\r
875 wxBoxSizer* codestreamSizer = new wxStaticBoxSizer(codestreamBox, wxVERTICAL);
\r
877 // codeblock sizer, row
\r
878 wxBoxSizer* codeblockSizer = new wxBoxSizer(wxHORIZONTAL);
\r
881 codeblockSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Codeblocks size:")),
\r
882 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
884 // add some horizontal space
\r
885 codeblockSizer->Add(3, 3, 1, wxALL, 0);
\r
887 // add the value control
\r
888 codeblockSizer->Add(
\r
889 m_cbsizeCtrl = new wxTextCtrl(panel, OPJENCO_CODEBLOCKSIZE,
\r
890 wxGetApp().m_cbsize,
\r
891 wxDefaultPosition, wxSize(100, wxDefaultCoord),
\r
893 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
895 codestreamSizer->Add(codeblockSizer, 0, wxGROW | wxALL, 3);
\r
897 // precinct sizer, row
\r
898 wxBoxSizer* precinctSizer = new wxBoxSizer(wxHORIZONTAL);
\r
901 precinctSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Precincts size:")),
\r
902 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
904 // add some horizontal space
\r
905 precinctSizer->Add(3, 3, 1, wxALL, 0);
\r
907 // add the value control
\r
908 precinctSizer->Add(
\r
909 m_prsizeCtrl = new wxTextCtrl(panel, OPJENCO_PRECINCTSIZE,
\r
910 wxGetApp().m_prsize,
\r
911 wxDefaultPosition, wxSize(100, wxDefaultCoord),
\r
913 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
915 codestreamSizer->Add(precinctSizer, 0, wxGROW | wxALL, 3);
\r
917 subtopSizer->Add(codestreamSizer, 0, wxGROW | wxALL, 3);
\r
919 // tile settings, column
\r
920 wxStaticBox* tileBox = new wxStaticBox(panel, wxID_ANY, wxT("Tiles"));
\r
921 wxBoxSizer* tileSizer = new wxStaticBoxSizer(tileBox, wxVERTICAL);
\r
923 // tile size sizer, row
\r
924 wxBoxSizer* tilesizeSizer = new wxBoxSizer(wxHORIZONTAL);
\r
927 tilesizeSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Size:")),
\r
928 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
930 // add some horizontal space
\r
931 tilesizeSizer->Add(3, 3, 1, wxALL, 0);
\r
933 // add the value control
\r
934 tilesizeSizer->Add(
\r
935 m_tsizeCtrl = new wxTextCtrl(panel, OPJENCO_TILESIZE,
\r
936 wxGetApp().m_tsize,
\r
937 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
939 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
941 tileSizer->Add(tilesizeSizer, 0, wxGROW | wxALL, 3);
\r
943 // tile origin sizer, row
\r
944 wxBoxSizer* tilorigSizer = new wxBoxSizer(wxHORIZONTAL);
\r
947 tilorigSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Origin:")),
\r
948 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
950 // add some horizontal space
\r
951 tilorigSizer->Add(3, 3, 1, wxALL, 0);
\r
953 // add the value control
\r
955 m_toriginCtrl = new wxTextCtrl(panel, OPJENCO_TILORIG,
\r
956 wxGetApp().m_torigin,
\r
957 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
959 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
961 tileSizer->Add(tilorigSizer, 0, wxGROW | wxALL, 3);
\r
963 subtopSizer->Add(tileSizer, 0, wxGROW | wxALL, 3);
\r
965 // progression and profile settings, column
\r
966 wxString choices[] = {wxT("LRCP"), wxT("RLCP"), wxT("RPCL"), wxT("PCRL"), wxT("CPRL"),
\r
967 wxT("DCI2K24"), wxT("DCI2K48"), wxT("DCI4K")};
\r
968 progressionBox = new wxRadioBox(panel, OPJENCO_PROGRESSION,
\r
969 wxT("Progression order/profile"),
\r
970 wxDefaultPosition, wxDefaultSize,
\r
974 wxRA_SPECIFY_COLS);
\r
975 progressionBox->SetSelection(wxGetApp().m_progression);
\r
977 subtopSizer->Add(progressionBox, 0, wxGROW | wxALL, 3);
\r
979 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
981 // assign top and fit it
\r
982 panel->SetSizer(topSizer);
\r
983 topSizer->Fit(panel);
\r
988 wxPanel* OPJEncoderDialog::CreatePart1_2SettingsPage(wxWindow* parent)
\r
990 wxPanel* panel = new wxPanel(parent, wxID_ANY);
\r
993 wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
\r
996 //topSizer->AddSpacer(5);
\r
999 wxFlexGridSizer *subtopSizer = new wxFlexGridSizer(2, 3, 3);
\r
1001 // resilience settings, column
\r
1002 wxStaticBox* resilBox = new wxStaticBox(panel, wxID_ANY, wxT("Error resilience"));
\r
1003 wxBoxSizer* resilSizer = new wxStaticBoxSizer(resilBox, wxVERTICAL);
\r
1005 // resil2 sizer, row
\r
1006 wxBoxSizer* resil2Sizer = new wxBoxSizer(wxHORIZONTAL);
\r
1010 m_sopCheck = new wxCheckBox(panel, OPJENCO_ENABLESOP, wxT("SOP"),
\r
1011 wxDefaultPosition, wxDefaultSize),
\r
1012 0, wxGROW | wxALL, 3);
\r
1013 m_sopCheck->SetValue(wxGetApp().m_enablesop);
\r
1017 m_ephCheck = new wxCheckBox(panel, OPJENCO_ENABLEEPH, wxT("EPH"),
\r
1018 wxDefaultPosition, wxDefaultSize),
\r
1019 0, wxGROW | wxALL, 3);
\r
1020 m_ephCheck->SetValue(wxGetApp().m_enableeph);
\r
1022 resilSizer->Add(resil2Sizer, 0, wxGROW | wxALL, 3);
\r
1025 resilSizer->Add(new wxStaticLine(panel, wxID_ANY), 0, wxEXPAND | wxLEFT | wxRIGHT, 3);
\r
1027 // resil3 sizer, row
\r
1028 wxFlexGridSizer* resil3Sizer = new wxFlexGridSizer(3, 3, 3);
\r
1030 // BYPASS check box
\r
1032 m_enablebypassCheck = new wxCheckBox(panel, OPJENCO_ENABLEBYPASS, wxT("BYPASS"),
\r
1033 wxDefaultPosition, wxDefaultSize),
\r
1034 0, wxGROW | wxALL, 3);
\r
1035 m_enablebypassCheck->SetValue(wxGetApp().m_enablebypass);
\r
1037 // RESET check box
\r
1039 m_enableresetCheck = new wxCheckBox(panel, OPJENCO_ENABLERESET, wxT("RESET"),
\r
1040 wxDefaultPosition, wxDefaultSize),
\r
1041 0, wxGROW | wxALL, 3);
\r
1042 m_enableresetCheck->SetValue(wxGetApp().m_enablereset);
\r
1044 // RESTART check box
\r
1046 m_enablerestartCheck = new wxCheckBox(panel, OPJENCO_ENABLERESTART, wxT("RESTART"),
\r
1047 wxDefaultPosition, wxDefaultSize),
\r
1048 0, wxGROW | wxALL, 3);
\r
1049 m_enablerestartCheck->SetValue(wxGetApp().m_enablerestart);
\r
1053 m_enablevscCheck = new wxCheckBox(panel, OPJENCO_ENABLEVSC, wxT("VSC"),
\r
1054 wxDefaultPosition, wxDefaultSize),
\r
1055 0, wxGROW | wxALL, 3);
\r
1056 m_enablevscCheck->SetValue(wxGetApp().m_enablevsc);
\r
1058 // ERTERM check box
\r
1060 m_enableertermCheck = new wxCheckBox(panel, OPJENCO_ENABLEERTERM, wxT("ERTERM"),
\r
1061 wxDefaultPosition, wxDefaultSize),
\r
1062 0, wxGROW | wxALL, 3);
\r
1063 m_enableertermCheck->SetValue(wxGetApp().m_enableerterm);
\r
1065 // SEGMARK check box
\r
1067 m_enablesegmarkCheck = new wxCheckBox(panel, OPJENCO_ENABLESEGMARK, wxT("SEGMARK"),
\r
1068 wxDefaultPosition, wxDefaultSize),
\r
1069 0, wxGROW | wxALL, 3);
\r
1070 m_enablesegmarkCheck->SetValue(wxGetApp().m_enablesegmark);
\r
1072 resilSizer->Add(resil3Sizer, 0, wxGROW | wxALL, 3);
\r
1074 subtopSizer->Add(resilSizer, 0, wxGROW | wxALL, 3);
\r
1076 // ROI settings, column
\r
1077 wxStaticBox* roiBox = new wxStaticBox(panel, wxID_ANY, wxT("Region Of Interest"));
\r
1078 wxBoxSizer* roiSizer = new wxStaticBoxSizer(roiBox, wxVERTICAL);
\r
1080 // component number sizer, row
\r
1081 wxBoxSizer* roicompSizer = new wxBoxSizer(wxHORIZONTAL);
\r
1084 roicompSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Component:")),
\r
1085 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
1087 // add some horizontal space
\r
1088 roicompSizer->Add(3, 3, 1, wxALL, 0);
\r
1090 // add the value control
\r
1091 roicompSizer->Add(
\r
1092 /*m_layerCtrl =*/ new wxSpinCtrl(panel, OPJENCO_ROICOMP,
\r
1094 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
1097 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
1099 roiSizer->Add(roicompSizer, 0, wxGROW | wxALL, 3);
\r
1101 // upshift sizer, row
\r
1102 wxBoxSizer* roishiftSizer = new wxBoxSizer(wxHORIZONTAL);
\r
1105 roishiftSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Upshift:")),
\r
1106 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
1108 // add some horizontal space
\r
1109 roishiftSizer->Add(3, 3, 1, wxALL, 0);
\r
1111 // add the value control
\r
1112 roishiftSizer->Add(
\r
1113 /*m_layerCtrl =*/ new wxSpinCtrl(panel, OPJENCO_ROISHIFT,
\r
1115 wxDefaultPosition, wxSize(80, wxDefaultCoord),
\r
1118 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
1120 roiSizer->Add(roishiftSizer, 0, wxGROW | wxALL, 3);
\r
1122 subtopSizer->Add(roiSizer, 0, wxGROW | wxALL, 3);
\r
1124 // POC settings, column
\r
1125 wxStaticBox* pocBox = new wxStaticBox(panel, wxID_ANY, wxT("POC"));
\r
1126 wxBoxSizer* pocSizer = new wxStaticBoxSizer(pocBox, wxVERTICAL);
\r
1130 m_enablepocCheck = new wxCheckBox(panel, OPJENCO_ENABLEPOC, wxT("Enabled (tn=rs,cs,le,re,ce,pr)"),
\r
1131 wxDefaultPosition, wxDefaultSize),
\r
1132 0, wxGROW | wxALL, 3);
\r
1133 m_enablepocCheck->SetValue(wxGetApp().m_enablepoc);
\r
1136 wxBoxSizer* pocspecSizer = new wxBoxSizer(wxHORIZONTAL);
\r
1139 pocspecSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Changes:")),
\r
1140 0, wxALL | wxALIGN_TOP, 3);
\r
1142 // add some horizontal space
\r
1143 pocspecSizer->Add(3, 3, 1, wxALL, 0);
\r
1145 // add the value control
\r
1146 pocspecSizer->Add(
\r
1147 m_pocCtrl = new wxTextCtrl(panel, OPJENCO_POCSPEC,
\r
1149 wxDefaultPosition, wxSize(140, 60),
\r
1150 wxTE_LEFT | wxTE_MULTILINE),
\r
1151 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
1152 m_pocCtrl->Enable(wxGetApp().m_enablepoc);
\r
1154 pocSizer->Add(pocspecSizer, 0, wxGROW | wxALL, 3);
\r
1156 subtopSizer->Add(pocSizer, 0, wxGROW | wxALL, 3);
\r
1158 // Comment settings, column
\r
1159 wxStaticBox* commentBox = new wxStaticBox(panel, wxID_ANY, wxT("Comment"));
\r
1160 wxBoxSizer* commentSizer = new wxStaticBoxSizer(commentBox, wxVERTICAL);
\r
1162 // commenting check box
\r
1163 commentSizer->Add(
\r
1164 m_enablecommCheck = new wxCheckBox(panel, OPJENCO_ENABLECOMM, wxT("Enabled (empty to reset)"),
\r
1165 wxDefaultPosition, wxDefaultSize),
\r
1166 0, wxGROW | wxALL, 3);
\r
1167 m_enablecommCheck->SetValue(wxGetApp().m_enablecomm);
\r
1169 // add some horizontal space
\r
1170 commentSizer->Add(3, 3, 1, wxALL, 0);
\r
1172 // add the value control
\r
1173 commentSizer->Add(
\r
1174 m_commentCtrl = new wxTextCtrl(panel, OPJENCO_COMMENTTEXT,
\r
1175 wxGetApp().m_comment,
\r
1176 wxDefaultPosition, wxSize(wxDefaultCoord, 60),
\r
1177 wxTE_LEFT | wxTE_MULTILINE),
\r
1178 0, wxGROW | wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
1179 m_commentCtrl->Enable(wxGetApp().m_enablecomm);
\r
1181 subtopSizer->Add(commentSizer, 0, wxGROW | wxALL, 3);
\r
1183 // Index file settings, column
\r
1184 wxStaticBox* indexBox = new wxStaticBox(panel, wxID_ANY, wxT("Indexing"));
\r
1185 wxBoxSizer* indexSizer = new wxStaticBoxSizer(indexBox, wxVERTICAL);
\r
1187 // indexing check box
\r
1189 m_enableidxCheck = new wxCheckBox(panel, OPJENCO_ENABLEINDEX, wxT("Enabled"),
\r
1190 wxDefaultPosition, wxDefaultSize),
\r
1191 0, wxGROW | wxALL, 3);
\r
1192 m_enableidxCheck->SetValue(wxGetApp().m_enableidx);
\r
1194 // index file sizer, row
\r
1195 wxBoxSizer* indexnameSizer = new wxBoxSizer(wxHORIZONTAL);
\r
1198 indexnameSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&File name:")),
\r
1199 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);
\r
1201 // add some horizontal space
\r
1202 indexnameSizer->Add(3, 3, 1, wxALL, 0);
\r
1204 // add the value control
\r
1205 indexnameSizer->Add(
\r
1206 m_indexCtrl = new wxTextCtrl(panel, OPJENCO_INDEXNAME,
\r
1207 wxGetApp().m_index,
\r
1208 wxDefaultPosition, wxSize(120, wxDefaultCoord),
\r
1210 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3);
\r
1211 m_indexCtrl->Enable(wxGetApp().m_enableidx);
\r
1213 indexSizer->Add(indexnameSizer, 0, wxGROW | wxALL, 3);
\r
1215 subtopSizer->Add(indexSizer, 0, wxGROW | wxALL, 3);
\r
1217 topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
\r
1219 // assign top and fit it
\r
1220 panel->SetSizer(topSizer);
\r
1221 topSizer->Fit(panel);
\r
1226 void OPJEncoderDialog::OnEnableComm(wxCommandEvent& event)
\r
1228 if (event.IsChecked()) {
\r
1229 wxLogMessage(wxT("Comment enabled"));
\r
1230 m_commentCtrl->Enable(true);
\r
1232 wxLogMessage(wxT("Comment disabled"));
\r
1233 m_commentCtrl->Enable(false);
\r
1238 void OPJEncoderDialog::OnEnableIdx(wxCommandEvent& event)
\r
1240 if (event.IsChecked()) {
\r
1241 wxLogMessage(wxT("Index enabled"));
\r
1242 m_indexCtrl->Enable(true);
\r
1244 wxLogMessage(wxT("Index disabled"));
\r
1245 m_indexCtrl->Enable(false);
\r
1250 void OPJEncoderDialog::OnEnablePoc(wxCommandEvent& event)
\r
1252 if (event.IsChecked()) {
\r
1253 wxLogMessage(wxT("POC enabled"));
\r
1254 m_pocCtrl->Enable(true);
\r
1256 wxLogMessage(wxT("POC disabled"));
\r
1257 m_pocCtrl->Enable(false);
\r
1262 void OPJEncoderDialog::OnRadioQualityRate(wxCommandEvent& event)
\r
1264 if (event.GetId() == OPJENCO_QUALITYRADIO) {
\r
1265 wxLogMessage(wxT("Quality selected"));
\r
1266 m_rateCtrl->Enable(false);
\r
1267 m_qualityCtrl->Enable(true);
\r
1269 wxLogMessage(wxT("Rate selected"));
\r
1270 m_rateCtrl->Enable(true);
\r
1271 m_qualityCtrl->Enable(false);
\r
1276 void OPJEncoderDialog::OnEnableJPWL(wxCommandEvent& event)
\r
1280 if (event.IsChecked()) {
\r
1281 wxLogMessage(wxT("JPWL enabled"));
\r
1282 for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) {
\r
1283 m_hprotChoice[specno]->Enable(true);
\r
1284 m_htileCtrl[specno]->Enable(true);
\r
1285 m_pprotChoice[specno]->Enable(true);
\r
1286 m_ptileCtrl[specno]->Enable(true);
\r
1287 m_ppackCtrl[specno]->Enable(true);
\r
1288 m_sensiChoice[specno]->Enable(true);
\r
1289 m_stileCtrl[specno]->Enable(true);
\r
1291 OnHprotSelect(event);
\r
1292 OnPprotSelect(event);
\r
1293 OnSensiSelect(event);
\r
1295 wxLogMessage(wxT("JPWL disabled"));
\r
1296 for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) {
\r
1297 m_hprotChoice[specno]->Enable(false);
\r
1298 m_htileCtrl[specno]->Enable(false);
\r
1299 m_pprotChoice[specno]->Enable(false);
\r
1300 m_ptileCtrl[specno]->Enable(false);
\r
1301 m_ppackCtrl[specno]->Enable(false);
\r
1302 m_sensiChoice[specno]->Enable(false);
\r
1303 m_stileCtrl[specno]->Enable(false);
\r
1309 void OPJEncoderDialog::OnHprotSelect(wxCommandEvent& event)
\r
1313 // deactivate properly
\r
1314 for (specno = MYJPWL_MAX_NO_TILESPECS - 1; specno >= 0; specno--) {
\r
1315 if (!m_hprotChoice[specno]->GetSelection()) {
\r
1316 m_hprotChoice[specno]->Enable(false);
\r
1317 m_htileCtrl[specno]->Enable(false);
\r
1321 if (specno < (MYJPWL_MAX_NO_TILESPECS - 1)) {
\r
1322 m_hprotChoice[specno + 1]->Enable(true);
\r
1323 m_htileCtrl[specno + 1]->Enable(true);
\r
1326 //wxLogMessage(wxT("hprot changed: %d"), specno);
\r
1329 void OPJEncoderDialog::OnPprotSelect(wxCommandEvent& event)
\r
1333 // deactivate properly
\r
1334 for (specno = MYJPWL_MAX_NO_TILESPECS - 1; specno >= 0; specno--) {
\r
1335 if (!m_pprotChoice[specno]->GetSelection()) {
\r
1336 m_pprotChoice[specno]->Enable(false);
\r
1337 m_ptileCtrl[specno]->Enable(false);
\r
1338 m_ppackCtrl[specno]->Enable(false);
\r
1342 if (specno < (MYJPWL_MAX_NO_TILESPECS - 1)) {
\r
1343 m_pprotChoice[specno + 1]->Enable(true);
\r
1344 m_ptileCtrl[specno + 1]->Enable(true);
\r
1345 m_ppackCtrl[specno + 1]->Enable(true);
\r
1348 //wxLogMessage(wxT("pprot changed: %d"), specno);
\r
1351 void OPJEncoderDialog::OnSensiSelect(wxCommandEvent& event)
\r
1355 // deactivate properly
\r
1356 for (specno = MYJPWL_MAX_NO_TILESPECS - 1; specno >= 0; specno--) {
\r
1357 if (!m_sensiChoice[specno]->GetSelection()) {
\r
1358 m_sensiChoice[specno]->Enable(false);
\r
1359 m_stileCtrl[specno]->Enable(false);
\r
1363 if (specno < (MYJPWL_MAX_NO_TILESPECS - 1)) {
\r
1364 m_sensiChoice[specno + 1]->Enable(true);
\r
1365 m_stileCtrl[specno + 1]->Enable(true);
\r
1368 //wxLogMessage(wxT("sprot changed: %d"), specno);
\r
1372 #endif // USE_JPWL
\r