Hugintrunk  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
PreviewIdentifyTool Class Reference

Visually connect the image numbers with the image on the preview. More...

#include <PreviewIdentifyTool.h>

Inheritance diagram for PreviewIdentifyTool:
Inheritance graph

Public Member Functions

 PreviewIdentifyTool (ToolHelper *helper, GLPreviewFrame *owner, bool showNumbers)
 constructor More...
 
 ~PreviewIdentifyTool ()
 
void Activate ()
 Switch on a tool. More...
 
void ImagesUnderMouseChangedEvent ()
 Notify when the images directly underneath the mouse pointer have changed. More...
 
void AfterDrawImagesEvent ()
 Draw (using OpenGL) images above the others. More...
 
bool BeforeDrawImageEvent (unsigned int image)
 Draw what the tool requires just before a given image is drawn. More...
 
void ShowImageNumber (unsigned int image)
 Notification for when moving the mouse on an image button. More...
 
void StopShowingImages ()
 Notification for when moving the mouse off an image button. More...
 
void MouseButtonEvent (wxMouseEvent &e)
 Show control point editor if mouse is over two images. More...
 
void MouseMoveEvent (double x, double y, wxMouseEvent &e)
 Notify when the mouse pointer has moved over the panorama preview. More...
 
void KeypressEvent (int keycode, int modifiers, int pressed)
 
void setConstantOn (bool constant_on_in)
 
void UpdateWithNewImageSet (std::set< unsigned int > new_image_set)
 
void ForceRedraw ()
 
- Public Member Functions inherited from Tool
 Tool (ToolHelper *helper)
 Construct keeping a pointer to a PreviewToolHelper. More...
 
virtual ~Tool ()
 
virtual void MouseWheelEvent (wxMouseEvent &e)
 Notify of a mouse wheel event on the panorama preview. More...
 
virtual void KeypressEvent (int keycode, int modifiers, bool pressed)
 Notify of a Keypress event. More...
 
virtual void BeforeDrawImagesEvent ()
 Draw using OpenGL anything the tool requires underneath the images. More...
 
virtual void ReallyAfterDrawImagesEvent ()
 Draw (using OpenGL) the overlays, e.g. crop highlights, guides. More...
 
virtual void AfterDrawImageEvent (unsigned int image)
 Notification called just after the image was drawn normally. More...
 
virtual void MarkDirty ()
 

Private Member Functions

void HighlightColour (unsigned int index, unsigned int count, unsigned char &red, unsigned char &green, unsigned char &blue)
 Generate a colour given how many colours we need and an index. More...
 
void StopUpdating ()
 
void ContinueUpdating ()
 

Private Attributes

std::set< unsigned int > m_image_set
 Set of image numbers of the images we are displaying highlighted. More...
 
GLPreviewFramem_preview_frame
 
unsigned int m_mouse_over_image
 The image the user last placed their mouse over the button for. More...
 
bool m_mouse_is_over_button
 
bool m_stopUpdating
 
bool m_holdLeft
 
bool m_holdControl
 
bool m_constantOn
 
bool m_showNumbers
 

Static Private Attributes

static bool texture_created = false
 
static unsigned int circle_border_tex
 OpenGL texture name for the circular border texture. More...
 
static unsigned int rectangle_border_tex
 OpenGL texture name for the rectangular border texture. More...
 
static unsigned int font_tex
 OpenGL texture name for the font texture. More...
 
static unsigned int font_list
 OpenGL call list id for font. More...
 
static std::vector< int > m_glyphWidth
 glyph width for font More...
 

Additional Inherited Members

- Protected Attributes inherited from Tool
ToolHelperhelper
 The PreviewToolHelper that uses the same preview window and panorama as the tool should. More...
 

Detailed Description

Visually connect the image numbers with the image on the preview.

There are two ways it does this:

  1. When the user moves the mouse pointer over a image button, the image is highlighted in the preview.
  2. When the user moves the mouse pointer over the preview, the image under the pointer are highlighted with matching colours over the buttons.

The highlighted images are drawn on top of the other images, with a coloured border. If the mouse is over exactly two images, a click opens the control point editor with those two images shown.

Definition at line 43 of file PreviewIdentifyTool.h.

Constructor & Destructor Documentation

PreviewIdentifyTool::PreviewIdentifyTool ( ToolHelper helper,
GLPreviewFrame owner,
bool  showNumbers 
)

constructor

Parameters
helperpointer to ToolHelper class for managing Tool notifications
ownerpointer to GLPreviewFrame, needed for updating the color of the image buttons
showNumberstrue, if the image number should be shown above the images, this image show code works only for the preview, not for the panosphere and mosaic plane so pass the correct parameter depending on the underlying GLRenderer/GLViewer class

Definition at line 95 of file PreviewIdentifyTool.cpp.

References circle_border_inner, circle_border_outer, circle_border_peak, circle_border_tex, circle_middle, circle_ts, circle_ts_multiple, font_list, font_tex, FONT_TEXTURE_HEIGHT, GenerateFontTexture(), m_constantOn, m_glyphWidth, m_holdControl, m_holdLeft, m_preview_frame, m_showNumbers, m_stopUpdating, rect_ts, rectangle_border_tex, and texture_created.

PreviewIdentifyTool::~PreviewIdentifyTool ( )

Member Function Documentation

void PreviewIdentifyTool::Activate ( )
virtual

Switch on a tool.

Inherited classes also register events they want to respond to with the PreviewToolHelper. As events are lost when the tool is deactivated without notification to the PreviewTool, things from the last activation can be cleaned up here too.

Implements Tool.

Definition at line 262 of file PreviewIdentifyTool.cpp.

References ToolHelper::DRAW_OVER_IMAGES, Tool::helper, ToolHelper::IMAGES_UNDER_MOUSE_CHANGE, ImagesUnderMouseChangedEvent(), m_image_set, m_mouse_is_over_button, ToolHelper::MOUSE_MOVE, ToolHelper::MOUSE_PRESS, and ToolHelper::NotifyMe().

void PreviewIdentifyTool::AfterDrawImagesEvent ( )
virtual
bool PreviewIdentifyTool::BeforeDrawImageEvent ( unsigned int  image)
virtual

Draw what the tool requires just before a given image is drawn.

This can be used to modify how the images are drawn, prevent drawing of the image, or change the order of the image drawing (with another event to draw the image when it is needed).

Returns
false if the tool does not want the image drawn normally, or true when the image should be drawn normally.

Reimplemented from Tool.

Definition at line 546 of file PreviewIdentifyTool.cpp.

References DEBUG_ASSERT, and m_image_set.

void PreviewIdentifyTool::ContinueUpdating ( )
private
void PreviewIdentifyTool::ForceRedraw ( )
void PreviewIdentifyTool::HighlightColour ( unsigned int  index,
unsigned int  count,
unsigned char &  red,
unsigned char &  green,
unsigned char &  blue 
)
private

Generate a colour given how many colours we need and an index.

Definition at line 586 of file PreviewIdentifyTool.cpp.

References DEBUG_ASSERT.

Referenced by AfterDrawImagesEvent().

void PreviewIdentifyTool::ImagesUnderMouseChangedEvent ( )
virtual

Notify when the images directly underneath the mouse pointer have changed.

It is monitored by the PreviewToolHelper.

Reimplemented from Tool.

Definition at line 375 of file PreviewIdentifyTool.cpp.

References ToolHelper::GetImageNumbersUnderMouse(), Tool::helper, m_image_set, m_preview_frame, m_stopUpdating, ToolHelper::SetStatusMessage(), and GLPreviewFrame::UpdateIdentifyTools().

Referenced by Activate(), ContinueUpdating(), and MouseButtonEvent().

void PreviewIdentifyTool::KeypressEvent ( int  keycode,
int  modifiers,
int  pressed 
)

Definition at line 346 of file PreviewIdentifyTool.cpp.

References ContinueUpdating(), m_holdControl, and StopUpdating().

void PreviewIdentifyTool::MouseButtonEvent ( wxMouseEvent &  e)
virtual
void PreviewIdentifyTool::MouseMoveEvent ( double  x,
double  y,
wxMouseEvent &  e 
)
virtual

Notify when the mouse pointer has moved over the panorama preview.

The coordinates are in the space of the panorama output at full size, with no output cropping.

Parameters
xThe horizontal position of the mouse pointer in panorama pixels.
yThe vertical position of the mouse pointer in panorama pixels.
eThe event created by wxWidgets.

Reimplemented from Tool.

Definition at line 305 of file PreviewIdentifyTool.cpp.

References ContinueUpdating(), m_constantOn, m_holdControl, m_holdLeft, m_stopUpdating, and StopUpdating().

void PreviewIdentifyTool::setConstantOn ( bool  constant_on_in)
void PreviewIdentifyTool::ShowImageNumber ( unsigned int  image)

Notification for when moving the mouse on an image button.

Parameters
imagethe image number of the image the mouse is on.

Definition at line 554 of file PreviewIdentifyTool.cpp.

References DEBUG_ASSERT, ForceRedraw(), Tool::helper, m_image_set, m_mouse_is_over_button, m_mouse_over_image, and ToolHelper::NotifyMeBeforeDrawing().

void PreviewIdentifyTool::StopShowingImages ( )
void PreviewIdentifyTool::StopUpdating ( )
private
void PreviewIdentifyTool::UpdateWithNewImageSet ( std::set< unsigned int >  new_image_set)

Member Data Documentation

unsigned int PreviewIdentifyTool::circle_border_tex
staticprivate

OpenGL texture name for the circular border texture.

Definition at line 83 of file PreviewIdentifyTool.h.

Referenced by AfterDrawImagesEvent(), PreviewIdentifyTool(), and ~PreviewIdentifyTool().

unsigned int PreviewIdentifyTool::font_list
staticprivate

OpenGL call list id for font.

Definition at line 89 of file PreviewIdentifyTool.h.

Referenced by AfterDrawImagesEvent(), PreviewIdentifyTool(), and ~PreviewIdentifyTool().

unsigned int PreviewIdentifyTool::font_tex
staticprivate

OpenGL texture name for the font texture.

Definition at line 87 of file PreviewIdentifyTool.h.

Referenced by AfterDrawImagesEvent(), PreviewIdentifyTool(), and ~PreviewIdentifyTool().

bool PreviewIdentifyTool::m_constantOn
private
std::vector< int > PreviewIdentifyTool::m_glyphWidth
staticprivate

glyph width for font

Definition at line 91 of file PreviewIdentifyTool.h.

Referenced by AfterDrawImagesEvent(), and PreviewIdentifyTool().

bool PreviewIdentifyTool::m_holdControl
private

Definition at line 107 of file PreviewIdentifyTool.h.

Referenced by KeypressEvent(), MouseMoveEvent(), and PreviewIdentifyTool().

bool PreviewIdentifyTool::m_holdLeft
private

Definition at line 105 of file PreviewIdentifyTool.h.

Referenced by MouseButtonEvent(), MouseMoveEvent(), and PreviewIdentifyTool().

std::set<unsigned int> PreviewIdentifyTool::m_image_set
private

Set of image numbers of the images we are displaying highlighted.

Definition at line 94 of file PreviewIdentifyTool.h.

Referenced by Activate(), AfterDrawImagesEvent(), BeforeDrawImageEvent(), ImagesUnderMouseChangedEvent(), MouseButtonEvent(), ShowImageNumber(), StopShowingImages(), StopUpdating(), and UpdateWithNewImageSet().

bool PreviewIdentifyTool::m_mouse_is_over_button
private

Definition at line 98 of file PreviewIdentifyTool.h.

Referenced by Activate(), ShowImageNumber(), and StopShowingImages().

unsigned int PreviewIdentifyTool::m_mouse_over_image
private

The image the user last placed their mouse over the button for.

Definition at line 97 of file PreviewIdentifyTool.h.

Referenced by ShowImageNumber(), and StopShowingImages().

GLPreviewFrame* PreviewIdentifyTool::m_preview_frame
private
bool PreviewIdentifyTool::m_showNumbers
private

Definition at line 110 of file PreviewIdentifyTool.h.

Referenced by AfterDrawImagesEvent(), and PreviewIdentifyTool().

bool PreviewIdentifyTool::m_stopUpdating
private
unsigned int PreviewIdentifyTool::rectangle_border_tex
staticprivate

OpenGL texture name for the rectangular border texture.

Definition at line 85 of file PreviewIdentifyTool.h.

Referenced by AfterDrawImagesEvent(), PreviewIdentifyTool(), and ~PreviewIdentifyTool().

bool PreviewIdentifyTool::texture_created = false
staticprivate

Definition at line 81 of file PreviewIdentifyTool.h.

Referenced by PreviewIdentifyTool(), and ~PreviewIdentifyTool().


The documentation for this class was generated from the following files: