PreviewPanel Class Reference

A preview panel that renders the pictures using the panotools library. More...

#include <PreviewPanel.h>

Inheritance diagram for PreviewPanel:

Inheritance graph
List of all members.

Public Types


Public Member Functions

 PreviewPanel ()
bool Create (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxT("panel"))
void Init (PreviewFrame *parent, HuginBase::Panorama *pano)
virtual ~PreviewPanel ()
void panoramaChanged (HuginBase::Panorama &pano)
 Notification about a Panorama change.
void panoramaImagesChanged (HuginBase::Panorama &pano, const HuginBase::UIntSet &imgNr)
 notifies about changes to images
void SetAutoUpdate (bool enabled)
void ForceUpdate ()
void SetBlendMode (BlendMode b)

Private Types

typedef HuginBase::Nona::RemappedPanoImage<
vigra::BRGBImage, vigra::BImage > 

Private Member Functions

void DrawPreview (wxDC &dc)
void updatePreview ()
void mapPreviewImage (unsigned int imgNr)
void OnResize (wxSizeEvent &e)
 recalculate panorama to fit the panel
void OnDraw (wxPaintEvent &event)
void OnMouse (wxMouseEvent &e)
void mousePressRMBEvent (wxMouseEvent &e)
void mousePressLMBEvent (wxMouseEvent &e)
void OnUpdatePreview (wxCommandEvent &e)
void DrawOutline (const std::vector< hugin_utils::FDiff2D > &points, wxDC &dc, int offX, int offY)
void mouse2erect (int xm, int ym, double &xd, double &yd)

Private Attributes

 the model
bool m_autoPreview
vigra::Diff2D m_panoImgSize
wxBitmap * m_panoBitmap
HuginBase::UIntSet m_dirtyImgs
HuginBase::PanoramaOptions opts
SmallRemappedImageCache m_remapCache
BlendMode m_blendMode
wxCursor * m_cursor
bool m_state_rendering
bool m_rerender
bool m_imgsDirty

Detailed Description

A preview panel that renders the pictures using the panotools library.

Lets hope this works out fine..

Definition at line 40 of file PreviewPanel.h.

Member Typedef Documentation

typedef HuginBase::Nona::RemappedPanoImage<vigra::BRGBImage, vigra::BImage> PreviewPanel::RemappedImage [private]

Definition at line 42 of file PreviewPanel.h.

Member Enumeration Documentation

enum PreviewPanel::BlendMode


Definition at line 69 of file PreviewPanel.h.

Constructor & Destructor Documentation

PreviewPanel::PreviewPanel (  ) 


Definition at line 56 of file PreviewPanel.cpp.

PreviewPanel::~PreviewPanel (  )  [virtual]


Definition at line 96 of file PreviewPanel.cpp.

References DEBUG_TRACE, m_cursor, m_pano2erect, m_panoBitmap, pano, and HuginBase::Panorama::removeObserver().

Member Function Documentation

bool PreviewPanel::Create ( wxWindow *  parent,
wxWindowID  id = wxID_ANY,
const wxPoint &  pos = wxDefaultPosition,
const wxSize &  size = wxDefaultSize,
long  style = wxTAB_TRAVERSAL,
const wxString &  name = wxT("panel") 

Definition at line 64 of file PreviewPanel.cpp.

References DEBUG_DEBUG, DEBUG_TRACE, huginApp::Get(), huginApp::GetXRCPath(), m_cursor, and m_state_rendering.

Referenced by PreviewFrame::PreviewFrame().

void PreviewPanel::DrawOutline ( const std::vector< hugin_utils::FDiff2D > &  points,
wxDC &  dc,
int  offX,
int  offY 
) [private]

Definition at line 680 of file PreviewPanel.cpp.

References m_panoImgSize, and hugin_utils::roundi().

void PreviewPanel::DrawPreview ( wxDC &  dc  )  [private]

Definition at line 438 of file PreviewPanel.cpp.

References DEBUG_DEBUG, DEBUG_TRACE, HuginBase::Panorama::getOptions(), vigra_ext::EMoR::h, m_panoBitmap, m_panoImgSize, celeste::min(), and pano.

Referenced by OnDraw(), and updatePreview().

void PreviewPanel::ForceUpdate (  ) 

Definition at line 171 of file PreviewPanel.cpp.

References updatePreview().

Referenced by mousePressLMBEvent(), mousePressRMBEvent(), PreviewFrame::OnAutoPreviewToggle(), PreviewFrame::OnFullScreen(), OnResize(), PreviewFrame::OnUpdate(), panoramaChanged(), and PreviewFrame::updatePano().

void PreviewPanel::Init ( PreviewFrame parent,
HuginBase::Panorama pano 

Definition at line 88 of file PreviewPanel.cpp.

References HuginBase::Panorama::addObserver(), pano, and parentWindow.

Referenced by PreviewFrame::PreviewFrame().

void PreviewPanel::mapPreviewImage ( unsigned int  imgNr  )  [private]

void PreviewPanel::mouse2erect ( int  xm,
int  ym,
double &  xd,
double &  yd 
) [private]

Definition at line 662 of file PreviewPanel.cpp.

References m_pano2erect, m_panoImgSize, and HuginBase::PTools::Transform::transform().

Referenced by mousePressLMBEvent(), mousePressRMBEvent(), and OnMouse().

void PreviewPanel::mousePressLMBEvent ( wxMouseEvent &  e  )  [private]

Definition at line 597 of file PreviewPanel.cpp.

References CommandHistory::addCommand(), DEBUG_DEBUG, DEG_TO_RAD, ForceUpdate(), PanoCommand::GlobalCmdHist::getInstance(), Matrix3::GetRotationPT(), m_autoPreview, mouse2erect(), pano, RAD_TO_DEG, and Matrix3::SetRotationPT().

void PreviewPanel::mousePressRMBEvent ( wxMouseEvent &  e  )  [private]

Definition at line 625 of file PreviewPanel.cpp.

References CommandHistory::addCommand(), DEBUG_DEBUG, DEG_TO_RAD, ForceUpdate(), PanoCommand::GlobalCmdHist::getInstance(), m_autoPreview, mouse2erect(), pano, and RAD_TO_DEG.

void PreviewPanel::OnDraw ( wxPaintEvent &  event  )  [private]

Definition at line 578 of file PreviewPanel.cpp.

References DrawPreview().

void PreviewPanel::OnMouse ( wxMouseEvent &  e  )  [private]

Definition at line 653 of file PreviewPanel.cpp.

References mouse2erect(), and parentWindow.

void PreviewPanel::OnResize ( wxSizeEvent &  e  )  [private]

recalculate panorama to fit the panel

Definition at line 584 of file PreviewPanel.cpp.

References DEBUG_TRACE, ForceUpdate(), m_autoPreview, m_panoImgSize, and m_remapCache.

void PreviewPanel::OnUpdatePreview ( wxCommandEvent &  e  )  [private]

void PreviewPanel::panoramaChanged ( HuginBase::Panorama pano  )  [virtual]

Notification about a Panorama change.

This function will always be called, even when the change could be handled by panoramaImageAdded() or other notify functions.

This allows lazy observers to just listen to panoramaChanged().

Implements HuginBase::PanoramaObserver.

Definition at line 110 of file PreviewPanel.cpp.

References DEBUG_DEBUG, ForceUpdate(), HuginBase::PanoramaOptions::getHFOV(), HuginBase::Panorama::getOptions(), HuginBase::PanoramaOptions::getProjection(), HuginBase::PanoramaOptions::getProjectionParameters(), HuginBase::PanoramaOptions::getVFOV(), m_autoPreview, m_imgsDirty, m_remapCache, opts, HuginBase::PanoramaOptions::outputExposureValue, pano, and updatePreview().

void PreviewPanel::panoramaImagesChanged ( HuginBase::Panorama pano,
const HuginBase::UIntSet imgNr 
) [virtual]

notifies about changes to images

Images might have been added/removed. to find out how many images are still there, use Panorama::getNrOfImages.

pano the panorama object that changed
changed set of changed images

Implements HuginBase::PanoramaObserver.

Definition at line 159 of file PreviewPanel.cpp.

References DEBUG_TRACE, and m_imgsDirty.

void PreviewPanel::SetAutoUpdate ( bool  enabled  ) 

Definition at line 176 of file PreviewPanel.cpp.

References m_autoPreview, and updatePreview().

Referenced by PreviewFrame::OnAutoPreviewToggle(), and PreviewFrame::PreviewFrame().

void PreviewPanel::SetBlendMode ( BlendMode  b  ) 

Definition at line 165 of file PreviewPanel.cpp.

References m_blendMode, and updatePreview().

Referenced by PreviewFrame::OnBlendChoice(), and PreviewFrame::PreviewFrame().

void PreviewPanel::updatePreview (  )  [private]

Definition at line 205 of file PreviewPanel.cpp.

References vigra_ext::applyMapping(), BLEND_COPY, BLEND_DIFFERENCE, HuginBase::Color::CorrectImage(), vigra_ext::EMoR::createEMoRLUT(), vigra_ext::createGammaLUT(), HuginBase::PTools::Transform::createTransform(), DEBUG_DEBUG, DEBUG_ERROR, DEBUG_INFO, DEBUG_TRACE, vigra_ext::destImage(), vigra_ext::destImageRange(), DrawPreview(), HuginBase::BaseSrcPanoImage::EQUIRECTANGULAR, huginApp::Get(), HuginBase::Panorama::getActiveImages(), HuginBase::Color::detail::GetMonitorProfile(), HuginBase::Panorama::getOptions(), HuginBase::PanoramaOptions::getSize(), HuginBase::Panorama::getSrcImage(), huginApp::HasMonitorProfile(), HUGIN_IMGCACHE_MAPPING_FLOAT, HuginBase::Nona::ReduceStitcher< ImageType, AlphaType >::iccProfile, HuginBase::Nona::SimpleStitcher< ImageType, AlphaType >::iccProfile, vigra_ext::INTERP_BILINEAR, HuginBase::PanoramaOptions::interpolator, m_blendMode, m_pano2erect, m_panoBitmap, m_panoImgSize, m_remapCache, m_rerender, m_state_rendering, celeste::max(), celeste::min(), opts, HuginBase::PanoramaOptions::OUTPUT_HDR, HuginBase::PanoramaOptions::outputExposureValue, HuginBase::PanoramaOptions::outputMode, pano, parentWindow, vigra_ext::pow(), HuginBase::PanoramaOptions::remapUsingGPU, HuginBase::BaseSrcPanoImage::RESPONSE_EMOR, HuginBase::BaseSrcPanoImage::RESPONSE_GAMMA, HuginBase::BaseSrcPanoImage::RESPONSE_LINEAR, hugin_utils::round(), HuginBase::PanoramaOptions::setHeight(), HuginBase::BaseSrcPanoImage::setHFOV(), HuginBase::BaseSrcPanoImage::setProjection(), HuginBase::PanoramaOptions::setROI(), HuginBase::SrcPanoImage::setSize(), HuginBase::PanoramaOptions::setWidth(), vigra_ext::srcImage(), vigra_ext::srcImageRange(), HuginBase::Nona::SimpleStitcher< ImageType, AlphaType >::stitch(), HuginBase::Nona::ReduceStitcher< ImageType, AlphaType >::stitch(), and vigra_ext::transformImage().

Referenced by ForceUpdate(), panoramaChanged(), SetAutoUpdate(), and SetBlendMode().

Member Data Documentation

bool PreviewPanel::m_autoPreview [private]

Definition at line 98 of file PreviewPanel.h.

Referenced by mousePressLMBEvent(), mousePressRMBEvent(), OnResize(), panoramaChanged(), and SetAutoUpdate().

BlendMode PreviewPanel::m_blendMode [private]

Definition at line 116 of file PreviewPanel.h.

Referenced by SetBlendMode(), and updatePreview().

wxCursor* PreviewPanel::m_cursor [private]

Definition at line 119 of file PreviewPanel.h.

Referenced by Create(), and ~PreviewPanel().

HuginBase::UIntSet PreviewPanel::m_dirtyImgs [private]

Definition at line 105 of file PreviewPanel.h.

bool PreviewPanel::m_imgsDirty [private]

Definition at line 123 of file PreviewPanel.h.

Referenced by panoramaChanged(), and panoramaImagesChanged().

HuginBase::PTools::Transform* PreviewPanel::m_pano2erect [private]

Definition at line 111 of file PreviewPanel.h.

Referenced by mouse2erect(), updatePreview(), and ~PreviewPanel().

wxBitmap* PreviewPanel::m_panoBitmap [private]

Definition at line 102 of file PreviewPanel.h.

Referenced by DrawPreview(), updatePreview(), and ~PreviewPanel().

vigra::Diff2D PreviewPanel::m_panoImgSize [private]

Definition at line 100 of file PreviewPanel.h.

Referenced by DrawOutline(), DrawPreview(), mouse2erect(), OnResize(), and updatePreview().

SmallRemappedImageCache PreviewPanel::m_remapCache [private]

Definition at line 114 of file PreviewPanel.h.

Referenced by OnResize(), panoramaChanged(), and updatePreview().

bool PreviewPanel::m_rerender [private]

Definition at line 122 of file PreviewPanel.h.

Referenced by updatePreview().

bool PreviewPanel::m_state_rendering [private]

Definition at line 121 of file PreviewPanel.h.

Referenced by Create(), and updatePreview().

HuginBase::PanoramaOptions PreviewPanel::opts [private]

Definition at line 108 of file PreviewPanel.h.

Referenced by panoramaChanged(), and updatePreview().

HuginBase::Panorama* PreviewPanel::pano [private]

the model

Definition at line 96 of file PreviewPanel.h.

Referenced by DrawPreview(), Init(), mousePressLMBEvent(), mousePressRMBEvent(), panoramaChanged(), updatePreview(), and ~PreviewPanel().

PreviewFrame* PreviewPanel::parentWindow [private]

Definition at line 118 of file PreviewPanel.h.

Referenced by Init(), OnMouse(), and updatePreview().

The documentation for this class was generated from the following files:
Generated on 1 Mar 2017 for Hugintrunk by  doxygen 1.4.7