48 #include <wx/wxchar.h>
49 #include <wx/dcclient.h>
53 #define AXIS_AREA_W 50
54 #define AXIS_AREA_H 30
66 m_BackColor(0.95
f, 1.0
f, 0.95
f),
69 m_VertSelHandler(
eVert),
75 m_Gen.SetIntegerMode(
true,
true);
76 m_Gen.EnableOneBased(
true,
true);
77 m_Grid.EnableIntegerCentering(
true);
84 fMatrixArea, &m_MatrixPane);
88 fMatrixArea, &m_MatrixPane);
92 fMatrixArea, &m_MatrixPane);
103 if (pan_mode ==
"lmouse") {
197 if (!phyWidget->
GetDS() ||
203 render_total.
Start();
210 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
216 phyWidget->
GetDS()) {
242 phyWidget->
GetDS()) {
253 #ifdef ATTRIB_MENU_SUPPORT
338 fabs(
l.Right() -
r.Right()) +
340 fabs(
l.Bottom() -
r.Bottom());
342 float m =
l.Width() +
l.Height() +
r.Width() +
r.Height();
344 float delta_pct =
delta/m;
346 return delta_pct < 0.0001f;
352 m_History.push_back(p);
353 m_BackForwardPos = 0;
358 if (m_BackForwardPos < m_History.size()) {
359 m_History.erase(m_History.begin() + m_BackForwardPos +1,
363 m_History.push_back(p);
364 m_BackForwardPos = m_History.size() - 1;
399 phyWidget->Refresh();
414 phyWidget->Refresh();
422 m_rcMatrix.
Init(0, 0, GetClientSize().GetWidth() - 1, GetClientSize().GetHeight() - 1);
463 phyWidget->
GetDS()) {
474 phyWidget->
GetDS()) {
533 gl.
BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
594 default:
_ASSERT(
false);
return -1;
631 return GetClientSize().GetHeight() - 1 - y;
640 return GetClientSize().GetHeight() - 1 - y;
656 phyWidget->Refresh();
660 #if defined(__WXMAC__)
694 default:
_ASSERT(
false);
return -1;
704 default:
_ASSERT(
false);
return -1;
713 renderer->SetRegenerateTexture(
true);
782 default:
_ASSERT(
false);
return -1;
800 return GetClientSize().GetHeight() - 1 - y;
826 bool handled =
false;
836 wxPoint pos = evt.GetPosition();
CEvent - generic event implementation TODO TODO - Attachments.
static CGuiRegistry & GetInstance()
access the application-wide singleton
CRegistryReadView GetReadView(const string §ion) const
get a read-only view at a particular level.
const TRangeColl & GetSelection() const
void Render(CGlPane &Pane)
CMouseZoomHandler provides support for mouse-driven zoom and pan operations.
virtual bool IsScaleMode() const
virtual EPanMode GetPanMode() const
virtual void Render(CGlPane &Pane)
CTreeGraphicsModel & GetModel()
Get model for rendering.
void OnLeftDown(wxMouseEvent &evt)
TVPRect m_rcMatrix
rectangle in OpenGL coordinates
virtual void MMHH_Scroll(TModelUnit d_x, TModelUnit d_y)
void OnSize(wxSizeEvent &event)
virtual void FireCBEvent(void)
virtual TModelUnit MMHH_GetScale(IMinimapHandlerHost::EMMScaleType type)
void GoBack()
move to view position prior to most recent zoom/pan
virtual void MZHH_EndOp()
virtual int x_GetAreaByVPPos(TVPUnit vp_x, TVPUnit vp_y)
virtual CTooltipInfo TTHH_GetTooltip(const wxRect &rect)
Return the contents to be displayed in the tool tip.
virtual void SHH_SetCursor(const wxCursor &cursor)
virtual void MZHH_SetScale(TModelUnit scale, const TModelPoint &point)
void SetCurrRendererIdx(int idx)
void RenderPdf(CRef< CPdf > pdf, bool render_tooltips)
CPhyloTreeWidget * x_GetWidget() const
virtual void MMHH_EndOp()
virtual string TTHH_NeedTooltip(const wxPoint &pt)
Return id of the underlying element to dispaly a tooltip, otherwise "".
const TRangeColl & GetQuerySelection() const
CLinearSelHandler m_HorzSelHandler
virtual TModelUnit MZHH_GetScale(IMouseZoomHandlerHost::EScaleType type)
IAlnMarkHandlerHost implementation.
IPhyloTreeRender * GetCurrRenderer(void)
virtual void x_Render(void)
CGlWidgetPane overridables.
void AddRenderer(CRef< IPhyloTreeRender > &&renderer)
void RemoveCurrentDataSource()
CMouseZoomHandler m_MouseZoomHandler
virtual void MZHH_Scroll(TModelUnit d_x, TModelUnit d_y)
virtual I3DTexture * MMHH_GetTexture(float &xcoord_limit, float &ycoord_limit)
gets a texture and its coordinate limits for the minmap
void UpdatePane(const TModelRect &r)
void GoForward()
return to view position that you just left through 'GoBack()'
const TRangeColl & GetSubjectSelection() const
virtual TVPUnit MZHH_GetVPPosByY(int y) const
converts window coord to Viewport coord
CGlTextureFont * m_pLblFont
void x_RenderMouseZoomHandler(CGlPane &pane)
virtual void SHH_OnChanged()
ISelHandlerHost implementation.
virtual void HMGH_UpdateLimits(bool force_redraw=false)
virtual void HMGH_OnRefresh(void)
a chnage that requires a redraw but no GL buffer updates
virtual TVPUnit HMGH_GetVPPosByY(int y) const
virtual bool x_GrabFocus()
void SaveCurrentView()
Record current zoom/pan so that user can undo/redo navigation.
virtual void Update(void)
virtual void HMGH_OnChanged(void)
a topology or selection (color) change (requires update to buffers
void SetupHardcopyRender()
virtual TVPUnit MMHH_GetVPPosByY(int y) const
converts window coord to Viewport coord
bool CanGoForward() const
Return true if there are saved view positions you can nav forward to.
virtual void MZHH_ZoomRect(const TModelRect &rc)
void x_AdjustToMasterPane(CGlPane &pane, bool b_model_x, bool b_model_y)
adjusts limits and visible rect of the given pane to the master pane
virtual TModelUnit SHH_GetModelByWindow(int z, EOrientation orient)
virtual void SoftUpdate(void)
CLinearSelHandler m_VertSelHandler
virtual void x_OnShowPopup()
virtual TVPUnit SHH_GetWindowByModel(TModelUnit z, EOrientation orient)
CMinimapHandler m_MinimapHandler
virtual void FireEditEvent(EPhyloTreeEditCommand ec)
virtual void MZHH_ZoomPoint(const TModelPoint &point, TModelUnit factor)
TreeNavHistory m_NavHistory
virtual TVPPoint GetPortSize(void)
returns size of the master pane in screen coordinates
bool CanGoBack() const
Return true if there are previous view positions you can nav back to.
TZoomBehavior GetZoomBehavior(const string &renderer)
CRgbaColor & SetColor(TPhyloTreeObject obj, TPhyloTreeColors col)
CTreeGraphicsModel & GetGraphicsModel()
Get model for rendering.
class CRegistryReadView provides a nested hierarchical view at a particular key.
string GetString(const string &key, const string &default_val=kEmptyStr) const
class CRgbaColor provides a simple abstraction for managing colors.
void SetHorizontal(bool b_horz, ELabelPlacement place=eDefault, ELabelAlign aln=eAln_Center)
void SetRenderTooltips(bool b)
static TTreeIdx Null()
Return the index value that represents a NULL node.
TTreeIdx GetRootIdx() const
Return the index of the root node.
@ eWidgetSelectionChanged
a view has been destroyed
Interface IMinimapHandlerHost represents a context in which CMinimapHandler functions.
Interface IMouseZoomHandlerHost represents a context in which CMouseZoomHandler functions.
virtual void RenderPdf(CGlPane &pane, CPhyloTreeDataSource &ds, CRef< CPdf > pdf)
CTooltipInfo TTHH_GetTooltip(const wxRect &rect)
string TTHH_NeedTooltip(const wxPoint &pt)
I3DTexture * GetTexture(float &xcoord_limit, float &ycoord_limit)
virtual void RemoveCurrentDataSource()
void ComputeViewingLimits(CGlPane &pane, bool force_square=false, bool init_collision_info=true)
Compute the optimal viewing pane size so that the tree occupies the entire viewing area,...
virtual void BufferedRender(CGlPane &pane, CPhyloTreeDataSource &ds, bool init_collision_info=true, bool select_edge=false)
virtual void Layout(CPhyloTreeDataSource &ds, CGlPane &p)
virtual void RenderForHardcopy(CGlPane &pane, CPhyloTreeDataSource &ds)
void SetModelLimitsRect(const TModelRect &R)
void SetViewport(const TVPRect &R)
virtual void Enable(GLenum glstate)=0
CGlPoint< TVPUnit > TVPPoint
virtual void BlendFunc(GLenum sfactor, GLenum dfactor)=0
Options to be used when GL_BLEND is enabled.
TVPUnit ProjectX(TModelUnit m_x) const
IRender & GetGl()
convenience function for getting current render manager
TVPRect & GetViewport(void)
TVPUnit ProjectY(TModelUnit m_y) const
TModelUnit UnProjectX(TVPUnit m_x) const
TModelRect & GetModelLimitsRect(void)
bool PtInRect(T x, T y) const
TModelUnit GetZoomAllScaleY(void) const
TModelUnit UnProjectY(TVPUnit m_y) const
TModelUnit GetMinScaleY(void) const
TModelUnit GetZoomAllScaleX(void) const
void SetVert(T bottom, T top)
void SetVisibleRect(const TModelRect &R)
EProjectionMode GetProjMode(void) const
TModelRect & GetVisibleRect(void)
virtual void Disable(GLenum glstate)=0
glDisable()
TModelUnit GetMinScaleX(void) const
TModelUnit GetScaleX(void) const
TModelUnit GetScaleY(void) const
void SetHorz(T left, T right)
float GetBlue(void) const
float GetGreen(void) const
float GetAlpha(void) const
virtual bool Send(CEvent *evt, EDispatch disp_how=eDispatch_Default, int pool_name=ePool_Default)
Sends an event synchronously.
float GetRed(void) const
Get specific channels in floating point values.
@ eEvent_Message
message from one class to another
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
double Elapsed(void) const
Return time elapsed since first Start() or last Restart() call (in seconds).
void Start(void)
Start the timer.
Defines: CTimeFormat - storage class for time format.
Int4 delta(size_t dimension_, const Int4 *score_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
double f(double x_, const double &y_)
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
size_t m_BackForwardPos
position in history
void Reset(const CGlPane &p)
void Add(const CGlPane &p)
bool EqualPanes(const CGlPane &lhs, const CGlPane &rhs) const
bool CanGoForward() const
std::vector< CGlPane > m_History
void SetFocus(CRef< objects::CSeq_entry > entry)