/* * The copyright in this software is being made available under the 2-clauses * BSD License, included below. This software may be subject to other third * party and contributor rights, including patent rights, and no such rights * are granted under this license. * * Copyright (c) 2007, Digital Signal Processing Laboratory, Universita'  degli studi di Perugia (UPG), Italy * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #include "OPJViewer.h" // ---------------------------------------------------------------------------- // OPJDecoderDialog // ---------------------------------------------------------------------------- IMPLEMENT_CLASS(OPJDecoderDialog, wxPropertySheetDialog) BEGIN_EVENT_TABLE(OPJDecoderDialog, wxPropertySheetDialog) EVT_CHECKBOX(OPJDECO_ENABLEDECO, OPJDecoderDialog::OnEnableDeco) #ifdef USE_JPWL EVT_CHECKBOX(OPJDECO_ENABLEJPWL, OPJDecoderDialog::OnEnableJPWL) #endif // USE_JPWL END_EVENT_TABLE() OPJDecoderDialog::OPJDecoderDialog(wxWindow* win, int dialogType) { SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY); Create(win, wxID_ANY, wxT("Decoder settings"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE| (int) wxPlatform::IfNot(wxOS_WINDOWS_CE, wxRESIZE_BORDER) ); CreateButtons(wxOK | wxCANCEL | (int)wxPlatform::IfNot(wxOS_WINDOWS_CE, wxHELP)); m_settingsNotebook = GetBookCtrl(); wxPanel* mainSettings = CreateMainSettingsPage(m_settingsNotebook); wxPanel* jpeg2000Settings = CreatePart1SettingsPage(m_settingsNotebook); if (!wxGetApp().m_enabledeco) jpeg2000Settings->Enable(false); wxPanel* mjpeg2000Settings = CreatePart3SettingsPage(m_settingsNotebook); if (!wxGetApp().m_enabledeco) mjpeg2000Settings->Enable(false); #ifdef USE_JPWL wxPanel* jpwlSettings = CreatePart11SettingsPage(m_settingsNotebook); if (!wxGetApp().m_enabledeco) jpwlSettings->Enable(false); #endif // USE_JPWL m_settingsNotebook->AddPage(mainSettings, wxT("Display"), false); m_settingsNotebook->AddPage(jpeg2000Settings, wxT("JPEG 2000"), false); m_settingsNotebook->AddPage(mjpeg2000Settings, wxT("MJPEG 2000"), false); #ifdef USE_JPWL m_settingsNotebook->AddPage(jpwlSettings, wxT("JPWL"), false); #endif // USE_JPWL LayoutDialog(); } OPJDecoderDialog::~OPJDecoderDialog() { } wxPanel* OPJDecoderDialog::CreateMainSettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // sub top sizer wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL); // add decoding enabling check box subtopSizer->Add( m_enabledecoCheck = new wxCheckBox(panel, OPJDECO_ENABLEDECO, wxT("Enable decoding"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 5); m_enabledecoCheck->SetValue(wxGetApp().m_enabledeco); // add parsing enabling check box subtopSizer->Add( m_enableparseCheck = new wxCheckBox(panel, OPJDECO_ENABLEPARSE, wxT("Enable parsing"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 5); m_enableparseCheck->SetValue(wxGetApp().m_enableparse); // resize settings, column wxString choices[] = {wxT("Don't resize"), wxT("Low quality"), wxT("High quality")}; m_resizeBox = new wxRadioBox(panel, OPJDECO_RESMETHOD, wxT("Resize method"), wxDefaultPosition, wxDefaultSize, WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_ROWS); m_resizeBox->SetSelection(wxGetApp().m_resizemethod + 1); subtopSizer->Add(m_resizeBox, 0, wxGROW | wxALL, 5); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } wxPanel* OPJDecoderDialog::CreatePart3SettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // add some space //topSizer->AddSpacer(5); // sub top sizer wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL); // frame settings, column wxStaticBox* frameBox = new wxStaticBox(panel, wxID_ANY, wxT("Frame")); wxBoxSizer* frameSizer = new wxStaticBoxSizer(frameBox, wxVERTICAL); // selected frame number, row wxBoxSizer* framenumSizer = new wxBoxSizer(wxHORIZONTAL); // add some text framenumSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Displayed frame:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); // add some horizontal space framenumSizer->Add(5, 5, 1, wxALL, 0); // add the value control framenumSizer->Add( m_framenumCtrl = new wxSpinCtrl(panel, OPJDECO_FRAMENUM, wxString::Format(wxT("%d"), wxGetApp().m_framenum), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 1, 100000, wxGetApp().m_framenum), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5); frameSizer->Add(framenumSizer, 0, wxGROW | wxALL, 5); subtopSizer->Add(frameSizer, 0, wxGROW | wxALL, 5); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } wxPanel* OPJDecoderDialog::CreatePart1SettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // add some space //topSizer->AddSpacer(5); // sub top sizer wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL); // resolutions settings, column wxStaticBox* resolutionBox = new wxStaticBox(panel, wxID_ANY, wxT("Resolutions")); wxBoxSizer* resolutionSizer = new wxStaticBoxSizer(resolutionBox, wxVERTICAL); // reduce factor sizer, row wxBoxSizer* reduceSizer = new wxBoxSizer(wxHORIZONTAL); // add some text reduceSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Reduce factor:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); // add some horizontal space reduceSizer->Add(5, 5, 1, wxALL, 0); // add the value control reduceSizer->Add( m_reduceCtrl = new wxSpinCtrl(panel, OPJDECO_REDUCEFACTOR, wxString::Format(wxT("%d"), wxGetApp().m_reducefactor), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 0, 10000, wxGetApp().m_reducefactor), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5); resolutionSizer->Add(reduceSizer, 0, wxGROW | wxALL, 5); subtopSizer->Add(resolutionSizer, 0, wxGROW | wxALL, 5); // quality layer settings, column wxStaticBox* layerBox = new wxStaticBox(panel, wxID_ANY, wxT("Layers")); wxBoxSizer* layerSizer = new wxStaticBoxSizer(layerBox, wxVERTICAL); // quality layers sizer, row wxBoxSizer* qualitySizer = new wxBoxSizer(wxHORIZONTAL); // add some text qualitySizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Quality layers:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); // add some horizontal space qualitySizer->Add(5, 5, 1, wxALL, 0); // add the value control qualitySizer->Add( m_layerCtrl = new wxSpinCtrl(panel, OPJDECO_QUALITYLAYERS, wxString::Format(wxT("%d"), wxGetApp().m_qualitylayers), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 0, 100000, wxGetApp().m_qualitylayers), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5); layerSizer->Add(qualitySizer, 0, wxGROW | wxALL, 5); subtopSizer->Add(layerSizer, 0, wxGROW | wxALL, 5); // component settings, column wxStaticBox* compoBox = new wxStaticBox(panel, wxID_ANY, wxT("Components")); wxBoxSizer* compoSizer = new wxStaticBoxSizer(compoBox, wxVERTICAL); // quality layers sizer, row wxBoxSizer* numcompsSizer = new wxBoxSizer(wxHORIZONTAL); // add some text numcompsSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Component displayed:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); // add some horizontal space numcompsSizer->Add(5, 5, 1, wxALL, 0); // add the value control numcompsSizer->Add( m_numcompsCtrl = new wxSpinCtrl(panel, OPJDECO_NUMCOMPS, wxString::Format(wxT("%d"), wxGetApp().m_components), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 0, 100000, wxGetApp().m_components), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5); m_numcompsCtrl->Enable(true); compoSizer->Add(numcompsSizer, 0, wxGROW | wxALL, 5); subtopSizer->Add(compoSizer, 0, wxGROW | wxALL, 5); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } #ifdef USE_JPWL wxPanel* OPJDecoderDialog::CreatePart11SettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // add some space //topSizer->AddSpacer(5); // sub top sizer wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL); // add JPWL enabling check box subtopSizer->Add( m_enablejpwlCheck = new wxCheckBox(panel, OPJDECO_ENABLEJPWL, wxT("Enable JPWL"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 5); m_enablejpwlCheck->SetValue(wxGetApp().m_enablejpwl); // component settings, column wxStaticBox* compoBox = new wxStaticBox(panel, wxID_ANY, wxT("Components")); wxBoxSizer* compoSizer = new wxStaticBoxSizer(compoBox, wxVERTICAL); // expected components sizer, row wxBoxSizer* expcompsSizer = new wxBoxSizer(wxHORIZONTAL); // add some text expcompsSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Expected comps.:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); // add some horizontal space expcompsSizer->Add(5, 5, 1, wxALL, 0); // add the value control expcompsSizer->Add( m_expcompsCtrl = new wxSpinCtrl(panel, OPJDECO_EXPCOMPS, wxString::Format(wxT("%d"), wxGetApp().m_expcomps), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 1, 100000, wxGetApp().m_expcomps), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5); m_expcompsCtrl->Enable(wxGetApp().m_enablejpwl); compoSizer->Add(expcompsSizer, 0, wxGROW | wxALL, 5); subtopSizer->Add(compoSizer, 0, wxGROW | wxALL, 5); // tiles settings, column wxStaticBox* tileBox = new wxStaticBox(panel, wxID_ANY, wxT("Tiles")); wxBoxSizer* tileSizer = new wxStaticBoxSizer(tileBox, wxVERTICAL); // maximum tiles sizer, row wxBoxSizer* maxtileSizer = new wxBoxSizer(wxHORIZONTAL); // add some text maxtileSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Max. no. of tiles:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 5); // add some horizontal space maxtileSizer->Add(5, 5, 1, wxALL, 0); // add the value control maxtileSizer->Add( m_maxtilesCtrl = new wxSpinCtrl(panel, OPJDECO_MAXTILES, wxString::Format(wxT("%d"), wxGetApp().m_maxtiles), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 1, 100000, wxGetApp().m_maxtiles), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5); m_maxtilesCtrl->Enable(wxGetApp().m_enablejpwl); tileSizer->Add(maxtileSizer, 0, wxGROW | wxALL, 5); subtopSizer->Add(tileSizer, 0, wxGROW | wxALL, 5); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } void OPJDecoderDialog::OnEnableJPWL(wxCommandEvent& event) { if (event.IsChecked()) { wxLogMessage(wxT("JPWL enabled")); m_expcompsCtrl->Enable(true); m_maxtilesCtrl->Enable(true); } else { wxLogMessage(wxT("JPWL disabled")); m_expcompsCtrl->Enable(false); m_maxtilesCtrl->Enable(false); } } #endif // USE_JPWL void OPJDecoderDialog::OnEnableDeco(wxCommandEvent& event) { size_t pp; if (event.IsChecked()) { wxLogMessage(wxT("Decoding enabled")); m_resizeBox->Enable(true); // enable all tabs except ourselves for (pp = 0; pp < m_settingsNotebook->GetPageCount(); pp++) { if (m_settingsNotebook->GetPageText(pp) != wxT("Display")) m_settingsNotebook->GetPage(pp)->Enable(true); } } else { wxLogMessage(wxT("Decoding disabled")); m_resizeBox->Enable(false); // disable all tabs except ourselves for (pp = 0; pp < m_settingsNotebook->GetPageCount(); pp++) { if (m_settingsNotebook->GetPageText(pp) != wxT("Display")) m_settingsNotebook->GetPage(pp)->Enable(false); } } } // ---------------------------------------------------------------------------- // OPJEncoderDialog // ---------------------------------------------------------------------------- IMPLEMENT_CLASS(OPJEncoderDialog, wxPropertySheetDialog) BEGIN_EVENT_TABLE(OPJEncoderDialog, wxPropertySheetDialog) EVT_CHECKBOX(OPJENCO_ENABLECOMM, OPJEncoderDialog::OnEnableComm) EVT_CHECKBOX(OPJENCO_ENABLEINDEX, OPJEncoderDialog::OnEnableIdx) EVT_CHECKBOX(OPJENCO_ENABLEPOC, OPJEncoderDialog::OnEnablePoc) EVT_RADIOBUTTON(OPJENCO_RATERADIO, OPJEncoderDialog::OnRadioQualityRate) EVT_RADIOBUTTON(OPJENCO_QUALITYRADIO, OPJEncoderDialog::OnRadioQualityRate) #ifdef USE_JPWL EVT_CHECKBOX(OPJENCO_ENABLEJPWL, OPJEncoderDialog::OnEnableJPWL) EVT_CHOICE(OPJENCO_HPROT, OPJEncoderDialog::OnHprotSelect) EVT_CHOICE(OPJENCO_PPROT, OPJEncoderDialog::OnPprotSelect) EVT_CHOICE(OPJENCO_SENSI, OPJEncoderDialog::OnSensiSelect) #endif // USE_JPWL END_EVENT_TABLE() OPJEncoderDialog::OPJEncoderDialog(wxWindow* win, int dialogType) { SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY); Create(win, wxID_ANY, wxT("Encoder settings"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE| (int) wxPlatform::IfNot(wxOS_WINDOWS_CE, wxRESIZE_BORDER) ); CreateButtons(wxOK | wxCANCEL | (int)wxPlatform::IfNot(wxOS_WINDOWS_CE, wxHELP)); m_settingsNotebook = GetBookCtrl(); wxPanel* jpeg2000_1Settings = CreatePart1_1SettingsPage(m_settingsNotebook); wxPanel* jpeg2000_2Settings = CreatePart1_2SettingsPage(m_settingsNotebook); wxPanel* mainSettings = CreateMainSettingsPage(m_settingsNotebook); #ifdef USE_JPWL wxPanel* jpwlSettings = CreatePart11SettingsPage(m_settingsNotebook); #endif // USE_JPWL #ifdef USE_JPWL m_settingsNotebook->AddPage(jpwlSettings, wxT("JPWL"), false); #endif // USE_JPWL m_settingsNotebook->AddPage(jpeg2000_1Settings, wxT("JPEG 2000 - 1"), false); m_settingsNotebook->AddPage(jpeg2000_2Settings, wxT("JPEG 2000 - 2"), false); m_settingsNotebook->AddPage(mainSettings, wxT("General"), false); LayoutDialog(); } OPJEncoderDialog::~OPJEncoderDialog() { } wxPanel* OPJEncoderDialog::CreateMainSettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // sub top sizer wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } #ifdef USE_JPWL wxPanel* OPJEncoderDialog::CreatePart11SettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); int specno; // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // add JPWL enabling check box topSizer->Add( m_enablejpwlCheck = new wxCheckBox(panel, OPJENCO_ENABLEJPWL, wxT("Enable JPWL"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL | wxALIGN_CENTER, 5); m_enablejpwlCheck->SetValue(wxGetApp().m_enablejpwle); // sub top sizer wxFlexGridSizer *subtopSizer = new wxFlexGridSizer(2, 3, 3); // header settings, column wxStaticBox* headerBox = new wxStaticBox(panel, wxID_ANY, wxT("Header protection")); wxBoxSizer* headerSizer = new wxStaticBoxSizer(headerBox, wxVERTICAL); // info sizer, row wxBoxSizer* info1Sizer = new wxBoxSizer(wxHORIZONTAL); // add some text info1Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Type")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); // add some horizontal space info1Sizer->Add(3, 3, 1, wxALL, 0); // add some text info1Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Tile part")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); headerSizer->Add(info1Sizer, 0, wxGROW | wxALL, 0); // specify specs wxString hprotvalues[] = {wxT("None"), wxT("Pred."), wxT("CRC16"), wxT("CRC32"), wxT("RS37"), wxT("RS38"), wxT("RS40"), wxT("RS43"), wxT("RS45"), wxT("RS48"), wxT("RS51"), wxT("RS53"), wxT("RS56"), wxT("RS64"), wxT("RS75"), wxT("RS80"), wxT("RS85"), wxT("RS96"), wxT("RS112"), wxT("RS128")}; for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) { // tile+hprot sizer, row wxBoxSizer* tilehprotSizer = new wxBoxSizer(wxHORIZONTAL); // add the value selection tilehprotSizer->Add( m_hprotChoice[specno] = new wxChoice(panel, OPJENCO_HPROT, wxDefaultPosition, wxSize(60, wxDefaultCoord), WXSIZEOF(hprotvalues), hprotvalues), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); m_hprotChoice[specno]->SetSelection(wxGetApp().m_hprotsel[specno]); // add some horizontal space tilehprotSizer->Add(3, 3, 1, wxALL, 0); // add the value control tilehprotSizer->Add( m_htileCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_HTILE, wxString::Format(wxT("%d"), wxGetApp().m_htileval[specno]), wxDefaultPosition, wxSize(45, wxDefaultCoord), wxSP_ARROW_KEYS, 0, JPWL_MAXIMUM_TILES - 1, 0), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); headerSizer->Add(tilehprotSizer, 0, wxGROW | wxALL, 0); } wxCommandEvent event1; OnHprotSelect(event1); subtopSizer->Add(headerSizer, 0, wxGROW | wxALL, 3); // packet settings, column wxStaticBox* packetBox = new wxStaticBox(panel, wxID_ANY, wxT("Packet protection")); wxBoxSizer* packetSizer = new wxStaticBoxSizer(packetBox, wxVERTICAL); // info sizer, row wxBoxSizer* info2Sizer = new wxBoxSizer(wxHORIZONTAL); // add some text info2Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Type")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); // add some horizontal space info2Sizer->Add(3, 3, 1, wxALL, 0); // add some text info2Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Tile part")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); // add some horizontal space info2Sizer->Add(3, 3, 1, wxALL, 0); // add some text info2Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Packet")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); packetSizer->Add(info2Sizer, 0, wxGROW | wxALL, 0); // specify specs wxString pprotvalues[] = {wxT("None"), wxT("Pred."), wxT("CRC16"), wxT("CRC32"), wxT("RS37"), wxT("RS38"), wxT("RS40"), wxT("RS43"), wxT("RS45"), wxT("RS48"), wxT("RS51"), wxT("RS53"), wxT("RS56"), wxT("RS64"), wxT("RS75"), wxT("RS80"), wxT("RS85"), wxT("RS96"), wxT("RS112"), wxT("RS128")}; for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) { // tile+pprot sizer, row wxBoxSizer* tilepprotSizer = new wxBoxSizer(wxHORIZONTAL); // add the value selection tilepprotSizer->Add( m_pprotChoice[specno] = new wxChoice(panel, OPJENCO_PPROT, wxDefaultPosition, wxSize(60, wxDefaultCoord), WXSIZEOF(pprotvalues), pprotvalues), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); m_pprotChoice[specno]->SetSelection(wxGetApp().m_pprotsel[specno]); // add some horizontal space tilepprotSizer->Add(3, 3, 1, wxALL, 0); // add the value control tilepprotSizer->Add( m_ptileCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_PTILE, wxString::Format(wxT("%d"), wxGetApp().m_ptileval[specno]), wxDefaultPosition, wxSize(45, wxDefaultCoord), wxSP_ARROW_KEYS, 0, JPWL_MAXIMUM_TILES - 1, 0), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); // add some horizontal space tilepprotSizer->Add(3, 3, 1, wxALL, 0); // add the value control tilepprotSizer->Add( m_ppackCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_PPACK, wxString::Format(wxT("%d"), wxGetApp().m_ppackval[specno]), wxDefaultPosition, wxSize(50, wxDefaultCoord), wxSP_ARROW_KEYS, 0, 2047, 0), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); packetSizer->Add(tilepprotSizer, 0, wxGROW | wxALL, 0); } wxCommandEvent event2; OnPprotSelect(event2); subtopSizer->Add(packetSizer, 0, wxGROW | wxALL, 3); // sensitivity settings, column wxStaticBox* sensiBox = new wxStaticBox(panel, wxID_ANY, wxT("Sensitivity")); wxBoxSizer* sensiSizer = new wxStaticBoxSizer(sensiBox, wxVERTICAL); // info sizer, row wxBoxSizer* info3Sizer = new wxBoxSizer(wxHORIZONTAL); // add some text info3Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Type")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); // add some horizontal space info3Sizer->Add(3, 3, 1, wxALL, 0); // add some text info3Sizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Tile part")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 1); sensiSizer->Add(info3Sizer, 0, wxGROW | wxALL, 0); // specify specs wxString sensivalues[] = {wxT("None"), wxT("RELATIVE ERROR"), wxT("MSE"), wxT("MSE REDUCTION"), wxT("PSNR INCREMENT"), wxT("MAXERR"), wxT("TSE")}; for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) { // tile+sensi sizer, row wxBoxSizer* tilesensiSizer = new wxBoxSizer(wxHORIZONTAL); // add the value selection tilesensiSizer->Add( m_sensiChoice[specno] = new wxChoice(panel, OPJENCO_SENSI, wxDefaultPosition, wxSize(110, wxDefaultCoord), WXSIZEOF(sensivalues), sensivalues), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); m_sensiChoice[specno]->SetSelection(wxGetApp().m_sensisel[specno]); // add some horizontal space tilesensiSizer->Add(3, 3, 1, wxALL, 0); // add the value control tilesensiSizer->Add( m_stileCtrl[specno] = new wxSpinCtrl(panel, OPJENCO_STILE, wxString::Format(wxT("%d"), wxGetApp().m_stileval[specno]), wxDefaultPosition, wxSize(45, wxDefaultCoord), wxSP_ARROW_KEYS, 0, JPWL_MAXIMUM_TILES - 1, 0), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 1); sensiSizer->Add(tilesensiSizer, 0, wxGROW | wxALL, 0); } wxCommandEvent event3; OnSensiSelect(event3); subtopSizer->Add(sensiSizer, 0, wxGROW | wxALL, 3); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } #endif // USE_JPWL wxPanel* OPJEncoderDialog::CreatePart1_1SettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // add some space //topSizer->AddSpacer(5); // sub top sizer wxFlexGridSizer *subtopSizer = new wxFlexGridSizer(2, 3, 3); // image settings, column wxStaticBox* imageBox = new wxStaticBox(panel, wxID_ANY, wxT("Image")); wxBoxSizer* imageSizer = new wxStaticBoxSizer(imageBox, wxVERTICAL); // subsampling factor sizer, row wxBoxSizer* subsSizer = new wxBoxSizer(wxHORIZONTAL); // add some text subsSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Subsampling:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space subsSizer->Add(3, 3, 1, wxALL, 0); // add the value control subsSizer->Add( m_subsamplingCtrl = new wxTextCtrl(panel, OPJENCO_SUBSAMPLING, wxGetApp().m_subsampling, wxDefaultPosition, wxSize(80, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); imageSizer->Add(subsSizer, 0, wxGROW | wxALL, 3); // origin sizer, row wxBoxSizer* imorigSizer = new wxBoxSizer(wxHORIZONTAL); // add some text imorigSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Origin:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space imorigSizer->Add(3, 3, 1, wxALL, 0); // add the value control imorigSizer->Add( m_originCtrl = new wxTextCtrl(panel, OPJENCO_IMORIG, wxGetApp().m_origin, wxDefaultPosition, wxSize(80, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); imageSizer->Add(imorigSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(imageSizer, 0, wxGROW | wxALL, 3); // layer settings, column wxStaticBox* layerBox = new wxStaticBox(panel, wxID_ANY, wxT("Layers/compression")); wxBoxSizer* layerSizer = new wxStaticBoxSizer(layerBox, wxVERTICAL); // rate factor sizer, row wxBoxSizer* rateSizer = new wxBoxSizer(wxHORIZONTAL); // add some text /*rateSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Rate values:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);*/ // add the radio button rateSizer->Add( m_rateRadio = new wxRadioButton(panel, OPJENCO_RATERADIO, wxT("&Rate values"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP), 0, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL ); m_rateRadio->SetValue(!(wxGetApp().m_enablequality)); // add some horizontal space rateSizer->Add(3, 3, 1, wxALL, 0); // add the value control rateSizer->Add( m_rateCtrl = new wxTextCtrl(panel, OPJENCO_RATEFACTOR, wxGetApp().m_rates, wxDefaultPosition, wxSize(100, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); if (wxGetApp().m_enablequality == true) m_rateCtrl->Enable(false); layerSizer->Add(rateSizer, 0, wxGROW | wxALL, 3); // quality factor sizer, row wxBoxSizer* qualitySizer = new wxBoxSizer(wxHORIZONTAL); // add some text /*qualitySizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Quality values:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3);*/ // add the radio button qualitySizer->Add( m_qualityRadio = new wxRadioButton(panel, OPJENCO_QUALITYRADIO, wxT("&Quality values"), wxDefaultPosition, wxDefaultSize), 0, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL ); m_qualityRadio->SetValue(wxGetApp().m_enablequality); // add some horizontal space qualitySizer->Add(3, 3, 1, wxALL, 0); // add the value control qualitySizer->Add( m_qualityCtrl = new wxTextCtrl(panel, OPJENCO_QUALITYFACTOR, wxGetApp().m_quality, wxDefaultPosition, wxSize(100, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); if (wxGetApp().m_enablequality == false) m_qualityCtrl->Enable(false); layerSizer->Add(qualitySizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(layerSizer, 0, wxGROW | wxALL, 3); // wavelet settings, column wxStaticBox* transformBox = new wxStaticBox(panel, wxID_ANY, wxT("Transforms")); wxBoxSizer* transformSizer = new wxStaticBoxSizer(transformBox, wxVERTICAL); // multiple component check box transformSizer->Add( m_mctCheck = new wxCheckBox(panel, OPJENCO_ENABLEMCT, wxT("Multiple component"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_mctCheck->SetValue(wxGetApp().m_multicomp); // irreversible wavelet check box transformSizer->Add( m_irrevCheck = new wxCheckBox(panel, OPJENCO_ENABLEIRREV, wxT("Irreversible wavelet"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_irrevCheck->SetValue(wxGetApp().m_irreversible); // resolution number sizer, row wxBoxSizer* resnumSizer = new wxBoxSizer(wxHORIZONTAL); // add some text resnumSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Resolutions:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space resnumSizer->Add(3, 3, 1, wxALL, 0); // add the value control resnumSizer->Add( m_resolutionsCtrl = new wxSpinCtrl(panel, OPJENCO_RESNUMBER, wxString::Format(wxT("%d"), wxGetApp().m_resolutions), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 1, 256, 6), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); transformSizer->Add(resnumSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(transformSizer, 0, wxGROW | wxALL, 3); // codestream settings, column wxStaticBox* codestreamBox = new wxStaticBox(panel, wxID_ANY, wxT("Codestream")); wxBoxSizer* codestreamSizer = new wxStaticBoxSizer(codestreamBox, wxVERTICAL); // codeblock sizer, row wxBoxSizer* codeblockSizer = new wxBoxSizer(wxHORIZONTAL); // add some text codeblockSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Codeblocks size:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space codeblockSizer->Add(3, 3, 1, wxALL, 0); // add the value control codeblockSizer->Add( m_cbsizeCtrl = new wxTextCtrl(panel, OPJENCO_CODEBLOCKSIZE, wxGetApp().m_cbsize, wxDefaultPosition, wxSize(100, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); codestreamSizer->Add(codeblockSizer, 0, wxGROW | wxALL, 3); // precinct sizer, row wxBoxSizer* precinctSizer = new wxBoxSizer(wxHORIZONTAL); // add some text precinctSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Precincts size:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space precinctSizer->Add(3, 3, 1, wxALL, 0); // add the value control precinctSizer->Add( m_prsizeCtrl = new wxTextCtrl(panel, OPJENCO_PRECINCTSIZE, wxGetApp().m_prsize, wxDefaultPosition, wxSize(100, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); codestreamSizer->Add(precinctSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(codestreamSizer, 0, wxGROW | wxALL, 3); // tile settings, column wxStaticBox* tileBox = new wxStaticBox(panel, wxID_ANY, wxT("Tiles")); wxBoxSizer* tileSizer = new wxStaticBoxSizer(tileBox, wxVERTICAL); // tile size sizer, row wxBoxSizer* tilesizeSizer = new wxBoxSizer(wxHORIZONTAL); // add some text tilesizeSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Size:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space tilesizeSizer->Add(3, 3, 1, wxALL, 0); // add the value control tilesizeSizer->Add( m_tsizeCtrl = new wxTextCtrl(panel, OPJENCO_TILESIZE, wxGetApp().m_tsize, wxDefaultPosition, wxSize(80, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); tileSizer->Add(tilesizeSizer, 0, wxGROW | wxALL, 3); // tile origin sizer, row wxBoxSizer* tilorigSizer = new wxBoxSizer(wxHORIZONTAL); // add some text tilorigSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Origin:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space tilorigSizer->Add(3, 3, 1, wxALL, 0); // add the value control tilorigSizer->Add( m_toriginCtrl = new wxTextCtrl(panel, OPJENCO_TILORIG, wxGetApp().m_torigin, wxDefaultPosition, wxSize(80, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); tileSizer->Add(tilorigSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(tileSizer, 0, wxGROW | wxALL, 3); // progression and profile settings, column wxString choices[] = {wxT("LRCP"), wxT("RLCP"), wxT("RPCL"), wxT("PCRL"), wxT("CPRL"), wxT("DCI2K24"), wxT("DCI2K48"), wxT("DCI4K")}; progressionBox = new wxRadioBox(panel, OPJENCO_PROGRESSION, wxT("Progression order/profile"), wxDefaultPosition, wxDefaultSize, WXSIZEOF(choices), choices, 3, wxRA_SPECIFY_COLS); progressionBox->SetSelection(wxGetApp().m_progression); subtopSizer->Add(progressionBox, 0, wxGROW | wxALL, 3); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } wxPanel* OPJEncoderDialog::CreatePart1_2SettingsPage(wxWindow* parent) { wxPanel* panel = new wxPanel(parent, wxID_ANY); // top sizer wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL); // add some space //topSizer->AddSpacer(5); // sub top sizer wxFlexGridSizer *subtopSizer = new wxFlexGridSizer(2, 3, 3); // resilience settings, column wxStaticBox* resilBox = new wxStaticBox(panel, wxID_ANY, wxT("Error resilience")); wxBoxSizer* resilSizer = new wxStaticBoxSizer(resilBox, wxVERTICAL); // resil2 sizer, row wxBoxSizer* resil2Sizer = new wxBoxSizer(wxHORIZONTAL); // SOP check box resil2Sizer->Add( m_sopCheck = new wxCheckBox(panel, OPJENCO_ENABLESOP, wxT("SOP"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_sopCheck->SetValue(wxGetApp().m_enablesop); // EPH check box resil2Sizer->Add( m_ephCheck = new wxCheckBox(panel, OPJENCO_ENABLEEPH, wxT("EPH"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_ephCheck->SetValue(wxGetApp().m_enableeph); resilSizer->Add(resil2Sizer, 0, wxGROW | wxALL, 3); // separation resilSizer->Add(new wxStaticLine(panel, wxID_ANY), 0, wxEXPAND | wxLEFT | wxRIGHT, 3); // resil3 sizer, row wxFlexGridSizer* resil3Sizer = new wxFlexGridSizer(3, 3, 3); // BYPASS check box resil3Sizer->Add( m_enablebypassCheck = new wxCheckBox(panel, OPJENCO_ENABLEBYPASS, wxT("BYPASS"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enablebypassCheck->SetValue(wxGetApp().m_enablebypass); // RESET check box resil3Sizer->Add( m_enableresetCheck = new wxCheckBox(panel, OPJENCO_ENABLERESET, wxT("RESET"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enableresetCheck->SetValue(wxGetApp().m_enablereset); // RESTART check box resil3Sizer->Add( m_enablerestartCheck = new wxCheckBox(panel, OPJENCO_ENABLERESTART, wxT("RESTART"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enablerestartCheck->SetValue(wxGetApp().m_enablerestart); // VSC check box resil3Sizer->Add( m_enablevscCheck = new wxCheckBox(panel, OPJENCO_ENABLEVSC, wxT("VSC"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enablevscCheck->SetValue(wxGetApp().m_enablevsc); // ERTERM check box resil3Sizer->Add( m_enableertermCheck = new wxCheckBox(panel, OPJENCO_ENABLEERTERM, wxT("ERTERM"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enableertermCheck->SetValue(wxGetApp().m_enableerterm); // SEGMARK check box resil3Sizer->Add( m_enablesegmarkCheck = new wxCheckBox(panel, OPJENCO_ENABLESEGMARK, wxT("SEGMARK"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enablesegmarkCheck->SetValue(wxGetApp().m_enablesegmark); resilSizer->Add(resil3Sizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(resilSizer, 0, wxGROW | wxALL, 3); // ROI settings, column wxStaticBox* roiBox = new wxStaticBox(panel, wxID_ANY, wxT("Region Of Interest")); wxBoxSizer* roiSizer = new wxStaticBoxSizer(roiBox, wxVERTICAL); // component number sizer, row wxBoxSizer* roicompSizer = new wxBoxSizer(wxHORIZONTAL); // add some text roicompSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Component:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space roicompSizer->Add(3, 3, 1, wxALL, 0); // add the value control roicompSizer->Add( /*m_layerCtrl =*/ new wxSpinCtrl(panel, OPJENCO_ROICOMP, wxT("0"), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 0, 256, 0), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); roiSizer->Add(roicompSizer, 0, wxGROW | wxALL, 3); // upshift sizer, row wxBoxSizer* roishiftSizer = new wxBoxSizer(wxHORIZONTAL); // add some text roishiftSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Upshift:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space roishiftSizer->Add(3, 3, 1, wxALL, 0); // add the value control roishiftSizer->Add( /*m_layerCtrl =*/ new wxSpinCtrl(panel, OPJENCO_ROISHIFT, wxT("0"), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 0, 37, 0), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); roiSizer->Add(roishiftSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(roiSizer, 0, wxGROW | wxALL, 3); // POC settings, column wxStaticBox* pocBox = new wxStaticBox(panel, wxID_ANY, wxT("POC")); wxBoxSizer* pocSizer = new wxStaticBoxSizer(pocBox, wxVERTICAL); // POC check box pocSizer->Add( m_enablepocCheck = new wxCheckBox(panel, OPJENCO_ENABLEPOC, wxT("Enabled (tn=rs,cs,le,re,ce,pr)"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enablepocCheck->SetValue(wxGetApp().m_enablepoc); // POC sizer, row wxBoxSizer* pocspecSizer = new wxBoxSizer(wxHORIZONTAL); // add some text pocspecSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Changes:")), 0, wxALL | wxALIGN_TOP, 3); // add some horizontal space pocspecSizer->Add(3, 3, 1, wxALL, 0); // add the value control pocspecSizer->Add( m_pocCtrl = new wxTextCtrl(panel, OPJENCO_POCSPEC, wxGetApp().m_poc, wxDefaultPosition, wxSize(140, 60), wxTE_LEFT | wxTE_MULTILINE), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); m_pocCtrl->Enable(wxGetApp().m_enablepoc); pocSizer->Add(pocspecSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(pocSizer, 0, wxGROW | wxALL, 3); // Comment settings, column wxStaticBox* commentBox = new wxStaticBox(panel, wxID_ANY, wxT("Comment")); wxBoxSizer* commentSizer = new wxStaticBoxSizer(commentBox, wxVERTICAL); // commenting check box commentSizer->Add( m_enablecommCheck = new wxCheckBox(panel, OPJENCO_ENABLECOMM, wxT("Enabled (empty to reset)"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enablecommCheck->SetValue(wxGetApp().m_enablecomm); // add some horizontal space commentSizer->Add(3, 3, 1, wxALL, 0); // add the value control commentSizer->Add( m_commentCtrl = new wxTextCtrl(panel, OPJENCO_COMMENTTEXT, wxGetApp().m_comment, wxDefaultPosition, wxSize(wxDefaultCoord, 60), wxTE_LEFT | wxTE_MULTILINE), 0, wxGROW | wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); m_commentCtrl->Enable(wxGetApp().m_enablecomm); subtopSizer->Add(commentSizer, 0, wxGROW | wxALL, 3); // Index file settings, column wxStaticBox* indexBox = new wxStaticBox(panel, wxID_ANY, wxT("Indexing")); wxBoxSizer* indexSizer = new wxStaticBoxSizer(indexBox, wxVERTICAL); // indexing check box indexSizer->Add( m_enableidxCheck = new wxCheckBox(panel, OPJENCO_ENABLEINDEX, wxT("Enabled"), wxDefaultPosition, wxDefaultSize), 0, wxGROW | wxALL, 3); m_enableidxCheck->SetValue(wxGetApp().m_enableidx); // index file sizer, row wxBoxSizer* indexnameSizer = new wxBoxSizer(wxHORIZONTAL); // add some text indexnameSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&File name:")), 0, wxALL | wxALIGN_CENTER_VERTICAL, 3); // add some horizontal space indexnameSizer->Add(3, 3, 1, wxALL, 0); // add the value control indexnameSizer->Add( m_indexCtrl = new wxTextCtrl(panel, OPJENCO_INDEXNAME, wxGetApp().m_index, wxDefaultPosition, wxSize(120, wxDefaultCoord), wxTE_LEFT), 0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 3); m_indexCtrl->Enable(wxGetApp().m_enableidx); indexSizer->Add(indexnameSizer, 0, wxGROW | wxALL, 3); subtopSizer->Add(indexSizer, 0, wxGROW | wxALL, 3); topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5); // assign top and fit it panel->SetSizer(topSizer); topSizer->Fit(panel); return panel; } void OPJEncoderDialog::OnEnableComm(wxCommandEvent& event) { if (event.IsChecked()) { wxLogMessage(wxT("Comment enabled")); m_commentCtrl->Enable(true); } else { wxLogMessage(wxT("Comment disabled")); m_commentCtrl->Enable(false); } } void OPJEncoderDialog::OnEnableIdx(wxCommandEvent& event) { if (event.IsChecked()) { wxLogMessage(wxT("Index enabled")); m_indexCtrl->Enable(true); } else { wxLogMessage(wxT("Index disabled")); m_indexCtrl->Enable(false); } } void OPJEncoderDialog::OnEnablePoc(wxCommandEvent& event) { if (event.IsChecked()) { wxLogMessage(wxT("POC enabled")); m_pocCtrl->Enable(true); } else { wxLogMessage(wxT("POC disabled")); m_pocCtrl->Enable(false); } } void OPJEncoderDialog::OnRadioQualityRate(wxCommandEvent& event) { if (event.GetId() == OPJENCO_QUALITYRADIO) { wxLogMessage(wxT("Quality selected")); m_rateCtrl->Enable(false); m_qualityCtrl->Enable(true); } else { wxLogMessage(wxT("Rate selected")); m_rateCtrl->Enable(true); m_qualityCtrl->Enable(false); } } #ifdef USE_JPWL void OPJEncoderDialog::OnEnableJPWL(wxCommandEvent& event) { int specno; if (event.IsChecked()) { wxLogMessage(wxT("JPWL enabled")); for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) { m_hprotChoice[specno]->Enable(true); m_htileCtrl[specno]->Enable(true); m_pprotChoice[specno]->Enable(true); m_ptileCtrl[specno]->Enable(true); m_ppackCtrl[specno]->Enable(true); m_sensiChoice[specno]->Enable(true); m_stileCtrl[specno]->Enable(true); } OnHprotSelect(event); OnPprotSelect(event); OnSensiSelect(event); } else { wxLogMessage(wxT("JPWL disabled")); for (specno = 0; specno < MYJPWL_MAX_NO_TILESPECS; specno++) { m_hprotChoice[specno]->Enable(false); m_htileCtrl[specno]->Enable(false); m_pprotChoice[specno]->Enable(false); m_ptileCtrl[specno]->Enable(false); m_ppackCtrl[specno]->Enable(false); m_sensiChoice[specno]->Enable(false); m_stileCtrl[specno]->Enable(false); } } } void OPJEncoderDialog::OnHprotSelect(wxCommandEvent& event) { int specno; // deactivate properly for (specno = MYJPWL_MAX_NO_TILESPECS - 1; specno >= 0; specno--) { if (!m_hprotChoice[specno]->GetSelection()) { m_hprotChoice[specno]->Enable(false); m_htileCtrl[specno]->Enable(false); } else break; } if (specno < (MYJPWL_MAX_NO_TILESPECS - 1)) { m_hprotChoice[specno + 1]->Enable(true); m_htileCtrl[specno + 1]->Enable(true); } //wxLogMessage(wxT("hprot changed: %d"), specno); } void OPJEncoderDialog::OnPprotSelect(wxCommandEvent& event) { int specno; // deactivate properly for (specno = MYJPWL_MAX_NO_TILESPECS - 1; specno >= 0; specno--) { if (!m_pprotChoice[specno]->GetSelection()) { m_pprotChoice[specno]->Enable(false); m_ptileCtrl[specno]->Enable(false); m_ppackCtrl[specno]->Enable(false); } else break; } if (specno < (MYJPWL_MAX_NO_TILESPECS - 1)) { m_pprotChoice[specno + 1]->Enable(true); m_ptileCtrl[specno + 1]->Enable(true); m_ppackCtrl[specno + 1]->Enable(true); } //wxLogMessage(wxT("pprot changed: %d"), specno); } void OPJEncoderDialog::OnSensiSelect(wxCommandEvent& event) { int specno; // deactivate properly for (specno = MYJPWL_MAX_NO_TILESPECS - 1; specno >= 0; specno--) { if (!m_sensiChoice[specno]->GetSelection()) { m_sensiChoice[specno]->Enable(false); m_stileCtrl[specno]->Enable(false); } else break; } if (specno < (MYJPWL_MAX_NO_TILESPECS - 1)) { m_sensiChoice[specno + 1]->Enable(true); m_stileCtrl[specno + 1]->Enable(true); } //wxLogMessage(wxT("sprot changed: %d"), specno); } #endif // USE_JPWL