55 , m_LensZoom(0.0, 0.0)
56 , m_NeedLensZoom(
false)
61 , m_NeedUpdateContent(
false)
62 , m_NeedUpdateLayout(
true)
63 , m_NeedUpdateSelection(
false)
77 string vertex_shader_gs =
"#version 120\n"
78 "varying vec4 color;\n"
82 "if (abs(gl_Color.r-gl_Color.g) > 0.01 || abs(gl_Color.g-gl_Color.b) > 0.01) {\n"
83 "float c = dot(gl_Color.rgb, vec3(0.299, 0.587, 0.114));\n"
84 "color = vec4(c, c, c, gl_Color.a);\n"
86 "gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
89 string fragment_shader =
"#version 120\n"
90 "varying vec4 color\n;"
93 "gl_FragColor = color;\n"
95 m_MonochromeShader.CreateShader(vertex_shader_gs, fragment_shader);
156 const TVPRect& rc,
bool reset_model_limit )
277 tt = tooltip->Render();
292 sel_rc =
TModelRect(left, bottom, right, top);
313 m_MonochromeShader.MakeCurrent();
324 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
357 off =
min(off, rcV.
Top());
447 m_MonochromeShader.Release();
510 if (
nullptr != p_areas) {
542 gl.
BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
543 gl.
Color4f(1.0f, 1.0f, 1.0f, 0.9f);
551 (
float)rc_r.
Right() + 1.0f, (
float)rc_r.
Top());
557 (
float)rc_f.
Right() + 1.0f, (
float)rc_f.
Top());
656 feat_viewport.
SetTop(ruler_b);
661 ruler_viewport.
SetLeft(ruler_l);
672 TVPRect ruler_viewport, feat_viewport;
716 if ( !reset_model_limit ) {
void SetImageInfo(TImageInfo *info)
Optional image info structure to return data to (cgi) caller.
void SetSelectedFeats(const TSelectedGlyphs &feats)
void SetInputObject(SConstScopedObject &obj)
virtual void Update(bool layout_only)
Update content and layout including the bounding box.
virtual CRef< CSeqGlyph > HitTest(const TModelPoint &p)
Hit testing.
void UpdateGridStep(int step)
void SetExternalGlyphs(const CSeqGlyph::TObjects &objs)
void SetSelectedCDSFeats(const TSelectedGlyphs &cds_feats)
void SetNonAsnInput(const INonAsnTrackData &data)
virtual bool Intersects(const TModelRect &rect, TConstObjects &objs) const
Intersect testing.
void SetConfig(CRef< CSeqGraphicConfig > conf)
void LoadProfile(const string &profile_str)
set track profile and load settings.
void PrepareContext(CGlPane &pane, bool horz, bool flipped)
void SetOverviewCutoff(int cutoff)
void SetSeqDS(CSGSequenceDS *ds)
CGlPane * GetGlPane()
inline method implementations
const TModelRange & GetVisibleRange() const
void SetSelectionColor(const CRgbaColor &c)
void SetViewWidth(TSeqPos view_width)
void SetSelLabelColor(const CRgbaColor &c)
class CRgbaColor provides a simple abstraction for managing colors.
void Render(CGlPane &pane)
void GetHTMLActiveAreas(CSeqGlyph::TAreaVector *p_areas) const
void LoadSettings(const CSeqGraphicConfig &g_config)
int GetMainRulerLabelStep() const
TVPPoint GetSize(int max_num=0) const
void SetSeqLength(TSeqPos len)
CRulerPanel inline methods.
void SetOrientation(bool horz, bool flip)
objects::CScope & GetScope(void) const
Get the scope from the handle.
TSeqPos GetSequenceLength() const
void UpdateSelection(CSeqGlyph *glyph)
const TSelectedGlyphs & GetSelectedCDSFeats() const
const TSelectedGlyphs & GetSelectedFeats() const
void SelectSelection(const CSeqGlyph::TConstObjects &glyphs)
void SetScope(objects::CScope *scope)
virtual void GetTooltip(const TModelPoint &, ITooltipFormatter &tt, string &t_title) const
Get the tooltip if available.
virtual TModelUnit GetHeight() const
void Draw() const
render the layout.
list< CRef< CSeqGlyph > > TObjects
list< CConstRef< CSeqGlyph > > TConstObjects
const CRgbaColor & GetBkColor() const
CRef< CGlTextureFont > GetCommentFont() const
const string & GetColorTheme() const
TAreaVector m_ActiveAreas
CSelectionVisitor m_SelManager
CRef< CSeqGlyph > HitTest(int x, int y)
CIRef< ISGDataSourceContext > m_DSContext
void GetTooltip(int x, int y, string &tt, string &t_title)
CRef< CSGSequenceDS > m_DS
void SelectObjByRect(const TVPRect &rc)
void SetViewWidth(TSeqPos view_width)
void x_AdjustToMinScale(bool round_to_base)
CRef< CFeaturePanel > m_FeatPanel
void SetNonAsnInput(const INonAsnTrackData &data)
void SetExternalGlyphs(const CSeqGlyph::TObjects &objs)
void SetLensZoom(int x, int y)
zoom 10x at the given screen coordinates.
void Resize(const TVPRect &rc)
void UpdateConfig(CRef< CSeqGraphicConfig > config)
bool m_NeedUpdateSelection
void SetHorizontal(bool b_horz, bool b_flip, const TVPRect &rc, bool reset_model_limit=false)
CSeqGraphicRenderer(bool cgi_mode)
void x_SetupModelLimits(bool reset_model_limit)
void SetInputObject(SConstScopedObject &obj)
TSeqPos Screen2Seq(TVPUnit x, TVPUnit y)
pixels to sequence translation.
void x_Draw(TImageInfo *p_areas)
TSeqPos Screen2SeqWidth(TVPUnit vp)
CRef< CSeqGraphicConfig > m_ConfigSettings
CRenderingContext m_RenderingCtx
void x_DrawVectorGraphics(TImageInfo *p_areas)
void ZoomOnRange(const TModelRange &range, bool round_to_base=false)
zoom to the given range.
virtual void GetHTMLActiveAreas(TAreaVector *p_areas) const
Get html active areas.
unsigned int TSeqPos
Type for sequence locations and lengths.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define NCBI_CATCH(message)
Catch CExceptions as well This macro is deprecated - use *_X or *_XX variant instead of it.
void SetModelLimitsRect(const TModelRect &R)
void SetViewport(const TVPRect &R)
virtual void Enable(GLenum glstate)=0
virtual void UseProgram(GLuint program)=0
For shaders. Only works with OpenGL 2.0+.
virtual void BlendFunc(GLenum sfactor, GLenum dfactor)=0
Options to be used when GL_BLEND is enabled.
TModelUnit UnProjectWidth(TVPUnit vp_w) const
TModelPoint UnProject(TVPUnit m_x, TVPUnit m_y) const
void Offset(T d_x, T d_y)
IRender & GetGl()
convenience function for getting current render manager
TVPRect & GetViewport(void)
CGlRect< TVPUnit > TVPRect
void SetScale(TModelUnit scale_x, TModelUnit scale_y, TModelPoint p_center)
TModelUnit UnProjectX(TVPUnit m_x) const
void ZoomRect(const TModelRect &r)
TModelRect & GetModelLimitsRect(void)
void SetZoomFactor(TModelUnit factor=2.0)
bool PtInRect(T x, T y) const
static bool CheckGlError()
Check if there are any OpenGL errors.
TModelUnit UnProjectHeight(TVPUnit vp_h) const
TModelUnit UnProjectY(TVPUnit m_y) const
void EnableZoom(bool en_x, bool en_y)
void Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
void SetVert(T bottom, T top)
void SetVisibleRect(const TModelRect &R)
void ZoomIn(TModelUnit x, TModelUnit y, int options=fZoomXY)
void SetAdjustToLimits(bool adjust_x, bool adjust_y)
TModelRect & GetVisibleRect(void)
CGlRect< TModelUnit > TModelRect
virtual void Disable(GLenum glstate)=0
glDisable()
TModelUnit GetScaleX(void) const
TModelUnit GetScaleY(void) const
void SetExactOrthoProjection(bool exact_projection)
void SetHorz(T left, T right)
virtual void Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)=0
Rect() functions also do Begin() and End() (as in OpenGL)
void EnableOffset(bool b_en=true)
Offset is used as a workaround for OpenGL precision problems emerging when size of visible range is s...
float GetBlue(void) const
float GetGreen(void) const
static CIRef< ITooltipFormatter > CreateTooltipFormatter(ETooltipFormatters)
factory for requested tooltip formatter creation
float GetRed(void) const
Get specific channels in floating point values.
@ eTooltipFormatter_Html
generated table is HTML attributes (no CSS) based, generate NCBI URLs are absolute (recommended for G...
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
position_type GetToOpen(void) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
range(_Ty, _Ty) -> range< _Ty >
const TModelUnit kEpsilon
Small constant to test against 0.
const TModelUnit kLenseZoomFactor
const TModelUnit kZoomFactorX
const TVPUnit kMaxPixelsBase