From: <da...@us...> - 2008-02-18 23:19:41
|
Revision: 2896 http://hugin.svn.sourceforge.net/hugin/?rev=2896&view=rev Author: dangelo Date: 2008-02-18 15:19:37 -0800 (Mon, 18 Feb 2008) Log Message: ----------- Loading images should now properly detect which images should share a lens and which not. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-02-18 23:18:22 UTC (rev 2895) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-02-18 23:19:37 UTC (rev 2896) @@ -233,7 +233,7 @@ DECLARE_EVENT_TABLE() }; -void getLensDataFromUser(wxWindow * parent, SrcPanoImage & srcImg, +bool getLensDataFromUser(wxWindow * parent, SrcPanoImage & srcImg, double & focalLength, double & cropFactor); #endif // _MAINFRAME_H Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-02-18 23:18:22 UTC (rev 2895) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-02-18 23:19:37 UTC (rev 2896) @@ -217,7 +217,11 @@ #endif // if no similar image found, ask user if (! ok) { - getLensDataFromUser(MainFrame::Get(), srcImg, focalLength, cropFactor); + if (!getLensDataFromUser(MainFrame::Get(), srcImg, focalLength, cropFactor)) { + // assume a standart lens + srcImg.setHFOV(50); + srcImg.setExifCropFactor(1); + } } if( srcImg.getSize().x == 0) { @@ -234,31 +238,44 @@ SrcPanoImage other = pano.getSrcImage(i); // force reading of exif data, as it is currently not stored in the // Panorama data class - other.readEXIF(focalLength, cropFactor, false); - if (other.getSize() == srcImg.getSize() - && other.getExifModel() == srcImg.getExifModel() - && other.getExifMake() == srcImg.getExifMake() - && other.getExifFocalLength() == srcImg.getExifFocalLength() - ) - { - matchingLensNr = pano.getImage(i).getLensNr(); - // copy data from other image, just keep - // the file name and reload the exif data (for exposure) - double ev = srcImg.getExposureValue(); - srcImg = pano.getSrcImage(i); - srcImg.setFilename(filename); - srcImg.setExposureValue(ev); - break; + if (other.readEXIF(focalLength, cropFactor, false)) { + if (other.getSize() == srcImg.getSize() + && other.getExifModel() == srcImg.getExifModel() + && other.getExifMake() == srcImg.getExifMake() + && other.getExifFocalLength() == srcImg.getExifFocalLength() + ) + { + matchingLensNr = pano.getImage(i).getLensNr(); + // copy data from other image, just keep + // the file name and reload the exif data (for exposure) + double ev = srcImg.getExposureValue(); + srcImg = pano.getSrcImage(i); + srcImg.setFilename(filename); + srcImg.setExposureValue(ev); + break; + } + } else { + // no exiv information, just check image size. + if (other.getSize() == srcImg.getSize() ) { + matchingLensNr = pano.getImage(i).getLensNr(); + // copy data from other image, just keep + // the file name + srcImg = pano.getSrcImage(i); + srcImg.setFilename(filename); + break; + } } } if (matchingLensNr == -1) { // create and add new lens Lens lens; + lens.setImageSize(srcImg.getSize()); matchingLensNr = pano.addLens(lens); } PanoImage img(filename, srcImg.getSize().x, srcImg.getSize().y, (unsigned int) matchingLensNr); + srcImg.setLensNr(matchingLensNr); int imgNr = pano.addImage(img, vars); pano.setSrcImage(imgNr, srcImg); if (imgNr == 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-02-24 19:10:14
|
Revision: 2907 http://hugin.svn.sourceforge.net/hugin/?rev=2907&view=rev Author: dangelo Date: 2008-02-24 11:10:12 -0800 (Sun, 24 Feb 2008) Log Message: ----------- Only update control point list window when the window is opened. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h Modified: hugin/trunk/src/hugin1/hugin/CPListFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2008-02-22 21:01:58 UTC (rev 2906) +++ hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2008-02-24 19:10:12 UTC (rev 2907) @@ -376,6 +376,7 @@ } // update list. updateList(); + /* // force a nice size int nrCol = m_verbose ? 9 : 5; for (int col=0; col < nrCol ; col++) { @@ -386,6 +387,7 @@ if(width != -1) m_list->SetColumnWidth(col, width); } + */ } void CPListFrame::SetCPItem(int i, const ControlPoint & p) @@ -553,15 +555,9 @@ void CPListFrame::OnClose(wxCloseEvent& event) { DEBUG_DEBUG("OnClose"); - // do not close, just hide if we're not forced - if (event.CanVeto()) { - event.Veto(); - Hide(); - DEBUG_DEBUG("hiding"); - } else { - DEBUG_DEBUG("closing"); - Destroy(); - } + m_mainFrame->OnCPListFrameClosed(); + DEBUG_DEBUG("closing"); + Destroy(); } void CPListFrame::OnDeleteButton(wxCommandEvent & e) Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-02-22 21:01:58 UTC (rev 2906) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-02-24 19:10:12 UTC (rev 2907) @@ -152,8 +152,8 @@ EVT_MENU(XRCID("action_finetune_all_cp"), MainFrame::OnFineTuneAll) // EVT_BUTTON(XRCID("action_finetune_all_cp"), MainFrame::OnFineTuneAll) - EVT_MENU(XRCID("ID_CP_TABLE"), MainFrame::OnToggleCPFrame) - EVT_BUTTON(XRCID("ID_CP_TABLE"),MainFrame::OnToggleCPFrame) + EVT_MENU(XRCID("ID_CP_TABLE"), MainFrame::OnShowCPFrame) + EVT_BUTTON(XRCID("ID_CP_TABLE"),MainFrame::OnShowCPFrame) EVT_MENU(XRCID("action_add_images"), MainFrame::OnAddImages) EVT_BUTTON(XRCID("action_add_images"), MainFrame::OnAddImages) @@ -1102,16 +1102,25 @@ preview_frame->OnUpdate(dummy); } -void MainFrame::OnToggleCPFrame(wxCommandEvent & e) +void MainFrame::OnShowCPFrame(wxCommandEvent & e) { DEBUG_TRACE(""); - if (cp_frame->IsIconized()) { - cp_frame->Iconize(false); + if (cp_frame) { + if (cp_frame->IsIconized()) { + cp_frame->Iconize(false); + } + cp_frame->Show(); + cp_frame->Raise(); + } else { + cp_frame = new CPListFrame(this, pano); + cp_frame->Show(); } - cp_frame->Show(); - cp_frame->Raise(); } +void MainFrame::OnCPListFrameClosed() +{ + cp_frame = 0; +} void MainFrame::OnOptimize(wxCommandEvent & e) { Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-02-22 21:01:58 UTC (rev 2906) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-02-24 19:10:12 UTC (rev 2907) @@ -147,6 +147,8 @@ bool increaseProgress(double delta, const std::string & msg); void setMessage(const std::string & msg); + void OnCPListFrameClosed(); + wxString getProjectName(); protected: @@ -179,7 +181,7 @@ void OnFineTuneAll(wxCommandEvent & e); void OnApplyTemplate(wxCommandEvent & e); // void OnToggleOptimizeFrame(wxCommandEvent & e); - void OnToggleCPFrame(wxCommandEvent & e); + void OnShowCPFrame(wxCommandEvent & e); void UpdatePanels(wxCommandEvent & e); void OnSize(wxSizeEvent &e); void enableTools(bool option); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-04-03 01:13:50
|
Revision: 2987 http://hugin.svn.sourceforge.net/hugin/?rev=2987&view=rev Author: gpatters1 Date: 2008-04-02 18:13:46 -0700 (Wed, 02 Apr 2008) Log Message: ----------- [1893971]: Only display control points in CP tab if one point is selected in CP list. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp hugin/trunk/src/hugin1/hugin/CPListFrame.h Modified: hugin/trunk/src/hugin1/hugin/CPListFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2008-04-02 21:21:45 UTC (rev 2986) +++ hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2008-04-03 01:13:46 UTC (rev 2987) @@ -243,7 +243,8 @@ BEGIN_EVENT_TABLE(CPListFrame, wxFrame) EVT_CLOSE(CPListFrame::OnClose) - EVT_LIST_ITEM_SELECTED(XRCID("cp_list_frame_list"), CPListFrame::OnCPListSelect) + EVT_LIST_ITEM_SELECTED(XRCID("cp_list_frame_list"), CPListFrame::OnCPListSelectionChanged) + EVT_LIST_ITEM_DESELECTED(XRCID("cp_list_frame_list"), CPListFrame::OnCPListSelectionChanged) EVT_LIST_COL_CLICK(XRCID("cp_list_frame_list"), CPListFrame::OnCPListHeaderClick) EVT_LIST_COL_END_DRAG(XRCID("cp_list_frame_list"), CPListFrame::OnColumnWidthChange) EVT_BUTTON(XRCID("cp_list_delete"), CPListFrame::OnDeleteButton) @@ -434,18 +435,6 @@ } -void CPListFrame::OnCPListSelect(wxListEvent & ev) -{ - if (m_freeze) - return; - - int t = ev.GetIndex(); - if (t >=0) { - int cp = m_list->GetItemData(t); - m_mainFrame->ShowCtrlPoint((unsigned int) cp); - } -} - void CPListFrame::updateList() { const CPVector & cps = m_pano.getCtrlPoints(); @@ -716,3 +705,21 @@ int colNum = e.GetColumn(); wxConfigBase::Get()->Write( wxString::Format(wxT("/CPListFrame/ColumnWidth%d"),colNum), m_list->GetColumnWidth(colNum) ); } + + +void CPListFrame::OnCPListSelectionChanged(wxListEvent & e) +{ + DEBUG_TRACE(e.GetIndex()); + int itemsSelected = m_list->GetSelectedItemCount(); + DEBUG_DEBUG("selected control points: " << itemsSelected); + if (1 == itemsSelected) { + int cp = e.GetIndex(); + m_mainFrame->ShowCtrlPoint((unsigned int) cp); + } else if (0 == itemsSelected) { + DEBUG_DEBUG("nothing to do"); + } else if (itemsSelected > 1) { + DEBUG_DEBUG("Multiselection nothing to do"); + } + +} + Modified: hugin/trunk/src/hugin1/hugin/CPListFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPListFrame.h 2008-04-02 21:21:45 UTC (rev 2986) +++ hugin/trunk/src/hugin1/hugin/CPListFrame.h 2008-04-03 01:13:46 UTC (rev 2987) @@ -51,7 +51,7 @@ void SetCPItem(int i, const PT::ControlPoint & p); - void OnCPListSelect(wxListEvent & e); + void OnCPListSelectionChanged(wxListEvent & e); void OnCPListHeaderClick(wxListEvent & e); void OnDeleteButton(wxCommandEvent & e); void OnFineTuneButton(wxCommandEvent & e); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-04-03 05:21:17
|
Revision: 2990 http://hugin.svn.sourceforge.net/hugin/?rev=2990&view=rev Author: gpatters1 Date: 2008-04-02 22:21:13 -0700 (Wed, 02 Apr 2008) Log Message: ----------- [1871633]: Display pair specific control point number in global control points list. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp hugin/trunk/src/hugin1/hugin/CPListFrame.h Modified: hugin/trunk/src/hugin1/hugin/CPListFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2008-04-03 05:01:27 UTC (rev 2989) +++ hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2008-04-03 05:21:13 UTC (rev 2990) @@ -290,11 +290,12 @@ m_list->InsertColumn( 7, _("Alignment"), wxLIST_FORMAT_LEFT, 80); m_list->InsertColumn( 8, _("Distance"), wxLIST_FORMAT_RIGHT, 80); } else { - m_list->InsertColumn( 0, _("#"), wxLIST_FORMAT_RIGHT, 25); + m_list->InsertColumn( 0, _("G CP#"), wxLIST_FORMAT_RIGHT, 25); m_list->InsertColumn( 1, _("left Img."), wxLIST_FORMAT_RIGHT, 65); m_list->InsertColumn( 2, _("right Img."), wxLIST_FORMAT_RIGHT, 65); - m_list->InsertColumn( 3, _("Alignment"), wxLIST_FORMAT_LEFT, 80); - m_list->InsertColumn( 4, _("Distance"), wxLIST_FORMAT_RIGHT, 80); + m_list->InsertColumn( 3, _("P CP#"), wxLIST_FORMAT_RIGHT, 25); + m_list->InsertColumn( 4, _("Alignment"), wxLIST_FORMAT_LEFT, 80); + m_list->InsertColumn( 5, _("Distance"), wxLIST_FORMAT_RIGHT, 80); } //get saved width @@ -415,6 +416,17 @@ break; } + // Map the Global CP number to a local "Pair" CP number + string pairId = makePairId(p.image1Nr,p.image2Nr); + if (m_localIds.count(pairId)) { + m_localIds[pairId]++; + } else { + m_localIds[pairId] = 0; + } + + int localId = m_localIds[pairId]; + DEBUG_INFO ("Global ID: " << i << " -> Local ID: " << localId); + if (m_verbose) { m_list->SetItem(i,0,wxString::Format(wxT("%d"),i)); m_list->SetItem(i,1,wxString::Format(wxT("%d"),p.image1Nr)); @@ -429,8 +441,9 @@ m_list->SetItem(i,0,wxString::Format(wxT("%d"),i)); m_list->SetItem(i,1,wxString::Format(wxT("%d"),p.image1Nr)); m_list->SetItem(i,2,wxString::Format(wxT("%d"),p.image2Nr)); - m_list->SetItem(i,3,mode); - m_list->SetItem(i,4,wxString::Format(wxT("%.2f"),p.error)); + m_list->SetItem(i,3,wxString::Format(wxT("%d"),localId)); + m_list->SetItem(i,4,mode); + m_list->SetItem(i,5,wxString::Format(wxT("%.2f"),p.error)); } } @@ -447,6 +460,11 @@ m_sortCol = 0; m_sortAscend = true; + + // Rebuild the global->local CP map on each update as CPs might have been + // removed. + m_localIds.clear(); + SortList(); int nrCP = cps.size(); @@ -482,8 +500,8 @@ if (!m_verbose) { colRightImg = 2; - colMode = 3; - colError = 4; + colMode = 4; + colError = 5; } DEBUG_TRACE("sorting column " << m_sortCol); @@ -723,3 +741,20 @@ } + +std::string CPListFrame::makePairId(unsigned int id1, unsigned int id2) +{ + // Control points from same image pair, regardless of which is left or right + // are counted the same so return the identical hash id. + std::ostringstream oss; + + if (id1 < id2) { + oss << id1 << "_" << id2; + } else if (id2 < id1) { + oss << id2 << "_" << id1; + } else { + // Control points are from same image. + oss << id1; + } + return oss.str(); +} Modified: hugin/trunk/src/hugin1/hugin/CPListFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPListFrame.h 2008-04-03 05:01:27 UTC (rev 2989) +++ hugin/trunk/src/hugin1/hugin/CPListFrame.h 2008-04-03 05:21:13 UTC (rev 2990) @@ -63,6 +63,8 @@ void OnClose(wxCloseEvent& event); + std::string makePairId(unsigned int id1, unsigned int id2); + MainFrame * m_mainFrame; PT::Panorama & m_pano; wxListCtrl * m_list; @@ -78,6 +80,8 @@ // disable list updates.. bool m_freeze; + std::map<std::string, int> m_localIds; + // needed for receiving events. DECLARE_EVENT_TABLE(); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-04-07 22:58:38
|
Revision: 3001 http://hugin.svn.sourceforge.net/hugin/?rev=3001&view=rev Author: gpatters1 Date: 2008-04-07 15:58:33 -0700 (Mon, 07 Apr 2008) Log Message: ----------- [1871645]: restore creation of horizontal constraints. All projections with exception of Rectilinear are bias to create vertical constrains. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp hugin/trunk/src/hugin1/hugin/CPEditorPanel.h Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2008-04-06 20:06:09 UTC (rev 3000) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2008-04-07 22:58:33 UTC (rev 3001) @@ -591,12 +591,22 @@ // keep line until user chooses new mode point.mode = m_cpModeChoice->GetSelection(); } else { + // Most projections will have a bias to creating vertical + // constraints. + float vertBias = getVerticalCPBias(); + bool hor = abs(p1.x - p2.x) > (abs(p1.y - p2.y) * vertBias); switch (m_leftRot) { case CPImageCtrl::ROT0: case CPImageCtrl::ROT180: + if (hor) + point.mode = PT::ControlPoint::Y; + else point.mode = PT::ControlPoint::X; break; default: + if (hor) + point.mode = PT::ControlPoint::X; + else point.mode = PT::ControlPoint::Y; break; } @@ -620,6 +630,25 @@ MainFrame::Get()->SetStatusText(_("new control point added")); } + +const float CPEditorPanel::getVerticalCPBias() +{ + PanoramaOptions opts = m_pano->getOptions(); + PanoramaOptions::ProjectionFormat projFormat = opts.getProjection(); + float bias; + switch (projFormat) + { + case PanoramaOptions::RECTILINEAR: + bias = 1.0; + break; + default: + bias = 2.0; + break; + } + return bias; +} + + void CPEditorPanel::ClearSelection() { if (m_selectedPoint == UINT_MAX) { Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.h 2008-04-06 20:06:09 UTC (rev 3000) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.h 2008-04-07 22:58:33 UTC (rev 3001) @@ -171,6 +171,7 @@ int searchWidth, vigra_ext::CorrelationResult & tunedPos); + const float getVerticalCPBias(); // event handler functions void OnMyButtonClicked(wxCommandEvent &e); void OnCPEvent(CPEvent &ev); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-04-08 05:32:56
|
Revision: 3002 http://hugin.svn.sourceforge.net/hugin/?rev=3002&view=rev Author: dangelo Date: 2008-04-07 22:32:51 -0700 (Mon, 07 Apr 2008) Log Message: ----------- fixed [ 1902885 ] 0.7.0-svn2884 OSX - iPhoto drag and drop > crash! (patch by Onur) Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-04-07 22:58:33 UTC (rev 3001) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-04-08 05:32:51 UTC (rev 3002) @@ -82,28 +82,29 @@ bool PanoDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames) { DEBUG_TRACE("OnDropFiles"); + MainFrame * mf = MainFrame::Get(); + if (!mf) return false; + if (!m_imageOnly && filenames.GetCount() == 1) { wxFileName file(filenames[0]); if (file.GetExt().CmpNoCase(wxT("pto")) == 0 || file.GetExt().CmpNoCase(wxT("ptp")) == 0 || file.GetExt().CmpNoCase(wxT("pts")) == 0 ) { - MainFrame * mf = MainFrame::Get(); - if (mf) { - // load project - if (mf->CloseProject(true)) { - mf->LoadProjectFile(file.GetFullPath()); - // remove old images from cache - ImageCache::getInstance().flush(); - } + // load project + if (mf->CloseProject(true)) { + mf->LoadProjectFile(file.GetFullPath()); + // remove old images from cache + ImageCache::getInstance().flush(); } return true; } } + // try to add as images std::vector<std::string> filesv; for (unsigned int i=0; i< filenames.GetCount(); i++) { - wxFileName file(filenames[0]); + wxFileName file(filenames[i]); if (file.GetExt().CmpNoCase(wxT("jpg")) == 0 || file.GetExt().CmpNoCase(wxT("jpeg")) == 0 || @@ -120,9 +121,12 @@ filesv.push_back((const char *)filenames[i].mb_str(*wxConvFileName)); } } - GlobalCmdHist::getInstance().addCommand( - new PT::wxAddImagesCmd(pano,filesv) - ); + // we got some images to add. + if (filesv.size() > 0) { + // use a Command to ensure proper undo and updating of GUI parts + wxBusyCursor(); + GlobalCmdHist::getInstance().addCommand(new wxAddImagesCmd(mf->getPano(),filesv)); + } return true; } @@ -173,7 +177,7 @@ //WX_DEFINE_ARRAY() MainFrame::MainFrame(wxWindow* parent, Panorama & pano) - : pano(pano), m_doRestoreLayout(false), cp_frame(0), m_help(0) + : cp_frame(0), pano(pano), m_doRestoreLayout(false), m_help(0) { m_progressMax = 1; m_progress = 0; Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-04-07 22:58:33 UTC (rev 3001) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-04-08 05:32:51 UTC (rev 3002) @@ -102,8 +102,8 @@ */ // virtual void panoramaChanged(PT::Panorama &pano); void panoramaImagesChanged(PT::Panorama &pano, const PT::UIntSet & imgNr); + PT::Panorama & getPano() { return pano; } - // called when a control point in CPListFrame is selected void ShowCtrlPoint(unsigned int cpNr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-04-08 05:57:20
|
Revision: 3003 http://hugin.svn.sourceforge.net/hugin/?rev=3003&view=rev Author: dangelo Date: 2008-04-07 22:57:18 -0700 (Mon, 07 Apr 2008) Log Message: ----------- proper fix for crash when dropping images on OSX. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-04-08 05:32:51 UTC (rev 3002) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-04-08 05:57:18 UTC (rev 3003) @@ -125,7 +125,7 @@ if (filesv.size() > 0) { // use a Command to ensure proper undo and updating of GUI parts wxBusyCursor(); - GlobalCmdHist::getInstance().addCommand(new wxAddImagesCmd(mf->getPano(),filesv)); + GlobalCmdHist::getInstance().addCommand(new wxAddImagesCmd(pano,filesv)); } return true; } Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-04-08 05:32:51 UTC (rev 3002) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-04-08 05:57:18 UTC (rev 3003) @@ -102,7 +102,6 @@ */ // virtual void panoramaChanged(PT::Panorama &pano); void panoramaImagesChanged(PT::Panorama &pano, const PT::UIntSet & imgNr); - PT::Panorama & getPano() { return pano; } // called when a control point in CPListFrame is selected void ShowCtrlPoint(unsigned int cpNr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-04-20 09:23:07
|
Revision: 3027 http://hugin.svn.sourceforge.net/hugin/?rev=3027&view=rev Author: dangelo Date: 2008-04-20 02:18:03 -0700 (Sun, 20 Apr 2008) Log Message: ----------- added donation menu item + tip of the day Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt hugin/trunk/src/hugin1/hugin/xrc/main_menu.xrc Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-04-20 07:35:39 UTC (rev 3026) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-04-20 09:18:03 UTC (rev 3027) @@ -146,6 +146,7 @@ EVT_MENU(XRCID("action_show_tip"), MainFrame::OnTipOfDay) EVT_MENU(XRCID("action_show_shortcuts"), MainFrame::OnKeyboardHelp) EVT_MENU(XRCID("action_show_faq"), MainFrame::OnFAQ) + EVT_MENU(XRCID("action_show_donate"), MainFrame::OnShowDonate) EVT_MENU(XRCID("action_show_prefs"), MainFrame::OnShowPrefs) EVT_MENU(XRCID("ID_EDITUNDO"), MainFrame::OnUndo) EVT_MENU(XRCID("ID_EDITREDO"), MainFrame::OnRedo) @@ -956,6 +957,11 @@ DEBUG_TRACE(""); } +void MainFrame::OnShowDonate(wxCommandEvent & e) +{ + wxLaunchDefaultBrowser(wxT("http://sourceforge.net/project/project_donations.php?group_id=77506")); +} + void MainFrame::OnAbout(wxCommandEvent & e) { DEBUG_TRACE(""); Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-04-20 07:35:39 UTC (rev 3026) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-04-20 09:18:03 UTC (rev 3027) @@ -186,6 +186,7 @@ void enableTools(bool option); void DisplayHelp(wxString section); + void OnShowDonate(wxCommandEvent &e); // update progress display bool displayProgress(); Modified: hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in 2008-04-20 07:35:39 UTC (rev 3026) +++ hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in 2008-04-20 09:18:03 UTC (rev 3027) @@ -45,6 +45,5 @@ Hugin is licenced under the GPL 2<br> <b>Copyright (C) 2004-2008</b> by the authors. </center> - </body> </html> Modified: hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt 2008-04-20 07:35:39 UTC (rev 3026) +++ hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt 2008-04-20 09:18:03 UTC (rev 3027) @@ -13,6 +13,7 @@ _("Horizontal or vertical control point pairs can be set by selecting the same image on both sides of the control points tab.") _("Control points should be placed on static objects. Avoid placing them people, trees and other moving or deforming objects.") _("Images can also be added to hugin via drag and drop.") +_("If you like hugin, consider donating at http://sourceforge.net/project/project_donations.php?group_id=77506") _("Spread control points as far as possible. Close control points do not define the relative orientation between images well.") _("The Fine Tune button can be used to find a better position for the point in the right image for an already selected point.") _("Editing the panorama in multiple layers with The Gimp or Photoshop offers many creative possibilities.") Modified: hugin/trunk/src/hugin1/hugin/xrc/main_menu.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/main_menu.xrc 2008-04-20 07:35:39 UTC (rev 3026) +++ hugin/trunk/src/hugin1/hugin/xrc/main_menu.xrc 2008-04-20 09:18:03 UTC (rev 3027) @@ -86,10 +86,6 @@ </object> <object class="wxMenu" name="help_menu"> <label>&Help</label> - <object class="wxMenuItem" name="action_show_about"> - <label>&About</label> - <help>About program</help> - </object> <object class="wxMenuItem" name="action_show_help"> <label>&Help</label> <accel>F1</accel> @@ -107,6 +103,15 @@ <label>&FAQ</label> <help>Frequently Asked Questions</help> </object> + <object class="separator"/> + <object class="wxMenuItem" name="action_show_about"> + <label>&About</label> + <help>About program</help> + </object> + <object class="wxMenuItem" name="action_show_donate"> + <label>&Donate</label> + <help>If you like hugin and want to see further improvements, please consider donating to the hugin project.</help> + </object> </object> </object> -</resource> +</resource> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-06-17 02:55:28
|
Revision: 3133 http://hugin.svn.sourceforge.net/hugin/?rev=3133&view=rev Author: gpatters1 Date: 2008-06-16 19:55:26 -0700 (Mon, 16 Jun 2008) Log Message: ----------- [1987741] Optimizing with no images enabled in preview and use selected images checked no longer crashes. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.cpp Modified: hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2008-06-16 21:28:16 UTC (rev 3132) +++ hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2008-06-17 02:55:26 UTC (rev 3133) @@ -176,6 +176,12 @@ { // use only selected images. imgs = m_pano->getActiveImages(); + if (imgs.size() == 0) { + // FIXME: pop up a dialog here alerting user no images are selected + // in preview, yet use only selected images is checked. We are in + // a string freeze at the moment. + return; + } } else { for (unsigned int i = 0 ; i < m_pano->getNrOfImages(); i++) { imgs.insert(i); Modified: hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.cpp 2008-06-16 21:28:16 UTC (rev 3132) +++ hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.cpp 2008-06-17 02:55:26 UTC (rev 3133) @@ -159,6 +159,10 @@ if (m_only_active_images_cb->IsChecked()) { // use only selected images. imgs = m_pano->getActiveImages(); + if (imgs.size() == 0) { + //FIXME: Pop-up a dialog stating no images have been selected for optimization. + return; + } } else { for (unsigned int i = 0 ; i < m_pano->getNrOfImages(); i++) { imgs.insert(i); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-06-22 19:58:31
|
Revision: 3141 http://hugin.svn.sourceforge.net/hugin/?rev=3141&view=rev Author: gpatters1 Date: 2008-06-22 12:58:06 -0700 (Sun, 22 Jun 2008) Log Message: ----------- [1241846] Optimizer defaults to custom preset on loading of existing projects. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePanel.h Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-06-22 19:04:21 UTC (rev 3140) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2008-06-22 19:58:06 UTC (rev 3141) @@ -638,6 +638,7 @@ ); DEBUG_DEBUG("project contains " << pano.getNrOfImages() << " after load"); opt_panel->setOptimizeVector(pano.getOptimizeVector()); + opt_panel->setModeCustom(); SetStatusText(_("Project opened")); config->Write(wxT("/actualPath"), path); // remember for later this->SetTitle(fname.GetName() + wxT(".") + fname.GetExt() + wxT(" - hugin")); Modified: hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2008-06-22 19:04:21 UTC (rev 3140) +++ hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2008-06-22 19:58:06 UTC (rev 3141) @@ -412,6 +412,14 @@ } + +void OptimizePanel::setModeCustom() +{ + DEBUG_TRACE("Setting optmizer preset to custom"); + m_mode_cb->SetSelection(OPT_CUSTOM); +} + + void OptimizePanel::setOptimizeVector(const OptimizeVector & optvec) { DEBUG_ASSERT((int)optvec.size() == (int)m_yaw_list->GetCount()); Modified: hugin/trunk/src/hugin1/hugin/OptimizePanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePanel.h 2008-06-22 19:04:21 UTC (rev 3140) +++ hugin/trunk/src/hugin1/hugin/OptimizePanel.h 2008-06-22 19:58:06 UTC (rev 3141) @@ -64,6 +64,9 @@ /** run the optimizer */ void OnOptimizeButton(wxCommandEvent & e); + /** updates the display to custom mode **/ + void setModeCustom(); + protected: void OnClose(wxCloseEvent& e); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-07-05 21:16:10
|
Revision: 3168 http://hugin.svn.sourceforge.net/hugin/?rev=3168&view=rev Author: gpatters1 Date: 2008-07-05 14:16:04 -0700 (Sat, 05 Jul 2008) Log Message: ----------- [1890064] - Fix for crash when images were moving around. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp Modified: hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp 2008-07-05 18:36:27 UTC (rev 3167) +++ hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp 2008-07-05 21:16:04 UTC (rev 3168) @@ -30,6 +30,7 @@ // standard hugin include #include "panoinc.h" +#include "base_wx/platform.h" #include <vigra/inspectimage.hxx> #include <vigra/transformimage.hxx> @@ -643,7 +644,8 @@ { DEBUG_TRACE("setting Image " << file); imageFilename = file; - if (imageFilename != "") { + wxString fn(imageFilename.c_str(),HUGIN_CONV_FILENAME); + if (wxFileName::FileExists(fn)) { m_img = ImageCache::getInstance().getImage(imageFilename); editState = NO_SELECTION; m_imgRotation = imgRot; Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-07-05 18:36:27 UTC (rev 3167) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-07-05 21:16:04 UTC (rev 3168) @@ -233,6 +233,14 @@ } } + // check the image hasn't disappeared on us since the HFOV dialog was + // opened + wxString fn(srcImg.getFilename().c_str(),HUGIN_CONV_FILENAME); + if (!wxFileName::FileExists(fn)) { + DEBUG_INFO("Image: " << fn.mb_str() << " has disappeared, skipping..."); + continue; + } + // FIXME: check if the exif information // indicates this image matches a already used lens for (unsigned int i=0; i < pano.getNrOfImages(); i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2008-07-12 23:19:12
|
Revision: 3190 http://hugin.svn.sourceforge.net/hugin/?rev=3190&view=rev Author: gpatters1 Date: 2008-07-12 16:19:10 -0700 (Sat, 12 Jul 2008) Log Message: ----------- [1987509] Set enblend/enfuse executables to false if the entry fields are empty in the preferences dialog. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp hugin/trunk/src/hugin1/hugin/PreferencesDialog.h Modified: hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp 2008-07-12 22:43:33 UTC (rev 3189) +++ hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp 2008-07-12 23:19:10 UTC (rev 3190) @@ -227,13 +227,32 @@ DEBUG_TRACE("end dtor"); } + +void PreferencesDialog::VerifyEntryData() { + // Check that valid information is in the entry fields + wxString buffer; + buffer = XRCCTRL(*this, "prefs_enblend_EnblendExe", wxTextCtrl)->GetValue(); + if (buffer == wxEmptyString) { + DEBUG_WARN("Enblend executable field empty, defaulting to false"); + XRCCTRL(*this, "prefs_enblend_EnblendExe", wxTextCtrl)->SetValue(wxT("false")); + } + buffer = XRCCTRL(*this, "prefs_enblend_EnfuseExe", wxTextCtrl)->GetValue(); + if (buffer == wxEmptyString) { + DEBUG_WARN("Enfuse executable field empty, defaulting to false"); + XRCCTRL(*this, "prefs_enblend_EnfuseExe", wxTextCtrl)->SetValue(wxT("false")); + } +} + + void PreferencesDialog::OnApply(wxCommandEvent & e) { + VerifyEntryData(); UpdateConfigData(); } void PreferencesDialog::OnOk(wxCommandEvent & e) { + VerifyEntryData(); UpdateConfigData(); this->EndModal(wxOK); } Modified: hugin/trunk/src/hugin1/hugin/PreferencesDialog.h =================================================================== --- hugin/trunk/src/hugin1/hugin/PreferencesDialog.h 2008-07-12 22:43:33 UTC (rev 3189) +++ hugin/trunk/src/hugin1/hugin/PreferencesDialog.h 2008-07-12 23:19:10 UTC (rev 3190) @@ -55,6 +55,9 @@ /** Window to Config */ void UpdateConfigData(); + /** Check config entry for errors **/ + void VerifyEntryData(); + protected: void OnOk(wxCommandEvent & e); void OnApply(wxCommandEvent & e); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |