115 gl.
BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
116 gl.
Enable(GL_LINE_SMOOTH);
117 gl.
Hint(GL_LINE_SMOOTH_HINT, GL_NICEST);
119 gl.
Enable(GL_POLYGON_SMOOTH);
120 gl.
Hint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
151 const IHitElement& first_elem = elems.front().GetHitElem();
152 const IHitElement& last_elem = elems.back().GetHitElem();
163 if ( (to1 < rcv1_clip.
GetFrom() && from2 > rcv2_clip.
GetTo()) ||
164 (from1 > rcv1_clip.
GetTo() && to2 < rcv2_clip.
GetFrom()) ) {
176 if (from1 == -1 || from2 == -1) {
188 if ( (to1 < rcv1_clip.
GetFrom() && from2 > rcv2_clip.
GetTo()) ||
189 (from1 > rcv1_clip.
GetTo() && to2 < rcv2_clip.
GetFrom()) ) {
255 objs.reserve(aligns.
size());
267 ITERATE(TGlyphs, it_G, glyphs) {
271 if(std::find(sel_aligns.begin(), sel_aligns.end(), align)
272 != sel_aligns.end()) {
298 if (seq_fit1 &&
m_DS->GetQueryHandle()) {
304 for (
TSeqPos bp = 0; bp != seq1.length(); bp++) {
311 if (seq_fit2 &&
m_DS->GetSubjectHandle()) {
317 for (
TSeqPos bp = 0; bp != seq2.length(); bp++) {
325 if (seq_fit1 && seq_fit2 &&
326 m_DS->GetQueryHandle() &&
m_DS->GetSubjectHandle()) {
340 const IHitElement& first_elem = elems.front().GetHitElem();
341 const IHitElement& last_elem = elems.back().GetHitElem();
355 if ( (to1 < rcv1_clip.
GetFrom() && from2 > rcv2_clip.
GetTo()) ||
356 (from1 > rcv1_clip.
GetTo() && to2 < rcv2_clip.
GetFrom()) ) {
369 if (from1 == -1 || from2 == -1) {
381 if ( (to1 < rcv1_clip.
GetFrom() && from2 > rcv2_clip.
GetTo()) ||
382 (from1 > rcv1_clip.
GetTo() && to2 < rcv2_clip.
GetFrom()) ) {
399 if (seq1[bp] != seq2[bp] || (from1 + pos) % 10 == 0) {
408 if (seq1[bp] != seq2[bp]) {
409 gl.
Color4f(1.0f, 0.0f, 0.0f, alpha);
411 gl.
Color4f(0.7f, 0.7f, 0.7f, alpha);
459 gl.
Begin(GL_TRIANGLE_STRIP);
478 size_t clip_bounds = 0;
479 size_t clip_cross = 0;
480 size_t elements_rendered = 0;
507 const IHitElement& first_elem = elems.front().GetHitElem();
508 const IHitElement& last_elem = elems.back().GetHitElem();
550 CHitGlyph::TElemGlyphCont::const_iterator itE = elems.begin();
551 CHitGlyph::TElemGlyphCont::const_iterator itE_end = elems.end();
553 range1.
SetTo(itE->GetHitElem().GetQueryStart() +
554 itE->GetHitElem().GetQueryLength());
555 range2.
SetTo(itE->GetHitElem().GetSubjectStart() +
556 itE->GetHitElem().GetSubjectLength());
561 for ( ; itE != itE_end; ++itE) {
589 range1 += elem_range1;
590 range2 += elem_range2;
592 x_to1 = x_elem1_stop;
593 x_to2 = x_elem2_stop;
603 CRgbaColor& clr = itE->IsSelected() ? sel_color :
604 (is_mixed ? minus_color : plus_color);
606 x_elem2_start, x_elem2_stop);
610 range1 = elem_range1;
611 range2 = elem_range2;
613 x_from1 = x_elem1_start;
614 x_from2 = x_elem2_start;
615 x_to1 = x_elem1_stop;
616 x_to2 = x_elem2_stop;
622 x_from1, x_to1, x_from2, x_to2);
625 x_from1, x_to1, x_from2, x_to2);
643 double Range = MaxV - MinV;
644 double logRange =
log10(Range);
645 logRange = ceil(logRange) - 1;
646 double Step = pow(10.0, logRange);
649 double BaseStep = Step;
650 double nTicks = Range / BaseStep;
655 nTicks = Range / BaseStep;
void SetObjectSelection(const vector< const objects::CSeq_align * > sel_aligns)
virtual ~CCrossPanelIR(void)
double x_SelectBaseStep(double MinV, double MaxV) const
void x_DrawCrossedPanel(CGlPane &pane, const CRgbaColor &color, TModelUnit x_from1, TModelUnit x_to1, TModelUnit x_from2, TModelUnit x_to2)
void GetObjectSelection(TConstObjects &objs) const
void x_DrawCrossAlignment(CGlPane &pane)
void x_GetSequence(const objects::CBioseq_Handle &handle, TSeqPos from, TSeqPos to, string &buffer) const
TModelUnit x_Seq2Lim1(TModelUnit seq)
void SetDataSource(ICrossAlnDataSource *ds)
void ResetObjectSelection()
CConstRef< objects::CObject_id > m_ColorScoreId
CIRef< ICrossAlnDataSource > m_DS
TModelUnit x_Lim2Seq2(TModelUnit lim)
void x_DrawSequence(CGlPane &pane)
TModelUnit x_Lim2Seq1(TModelUnit lim)
virtual void Render(CGlPane &pane)
bool x_IsSeqLettersFit1() const
void ColorByScore(CConstRef< objects::CObject_id > score_id)
CHitMatrixGraph::THitGlyphVector THitGlyphVector
TModelRect HitTest(CGlPane &pane, int x, int y, bool select=false)
CGlTextureFont m_Font_Fixed12
TModelUnit x_Seq2Lim2(TModelUnit seq)
bool x_IsSeqLettersFit2() const
void SetLimits(TVPRect rcm1, TModelRect rcv1, TVPRect rcm2, TModelRect rcv2)
CHitElemGlyph is a simple graphical object representing a Hit Element.
void SetSelected(bool b_set)
CHitGlyph is a simple graphical object representing a Hit as a set of corresponding Hit Elements.
const IHit & GetHit() const
vector< CHitElemGlyph > TElemGlyphCont
const TElemGlyphSet & GetSelectedGlyphs() const
void SelectGlyph(const CHitGlyph &glyph)
virtual void DeleteGlyphs()
const THitGlyphVector & GetGlyphs() const
virtual void CreateGlyph(const IHit &hit_elem)
vector< CHitGlyph * > THitGlyphVector
void ResetGlyphSelection()
class CRgbaColor provides a simple abstraction for managing colors.
virtual TSeqPos GetQueryLength() const =0
virtual const IHit & GetHit() const =0
virtual TSignedSeqPos GetQueryStart() const =0
virtual TSeqPos GetSubjectLength() const =0
virtual objects::ENa_strand GetSubjectStrand() const =0
virtual objects::ENa_strand GetQueryStrand() const =0
virtual TSignedSeqPos GetSubjectStart() const =0
IHitMatrixDataSource - abstract Data Source for Hit Matrix Widget.
virtual const THitAdapterCont & GetHits() const =0
vector< IHit * > THitAdapterCont
virtual const objects::CSeq_align * GetSeqAlign() const =0
iterator_bool insert(const value_type &val)
static const TModelUnit kSeqMapBarHeight
static const int sc_StepK[]
static const TModelUnit kClipMultiple
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
virtual void Enable(GLenum glstate)=0
virtual void Begin(GLenum mode)=0
Start rendering.
virtual void BlendFunc(GLenum sfactor, GLenum dfactor)=0
Options to be used when GL_BLEND is enabled.
void Color3f(GLfloat r, GLfloat g, GLfloat b)
IRender & GetGl()
convenience function for getting current render manager
void Vertex2d(GLdouble x, GLdouble y)
TVPRect & GetViewport(void)
TModelUnit UnProjectX(TVPUnit m_x) const
virtual void End()=0
Finish rendering (create buffer and send to renderer)
TModelUnit UnProjectHeight(TVPUnit vp_h) const
TModelUnit UnProjectY(TVPUnit m_y) const
void Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
virtual TModelUnit TextHeight(void) const
virtual void TextOut(const char *text) const
TextOut interface Write the specified text and set up state and transformation as needed.
TModelRect & GetVisibleRect(void)
CGlRect< TModelUnit > TModelRect
virtual void Disable(GLenum glstate)=0
glDisable()
virtual void Hint(GLenum target, GLenum mode)=0
virtual void LineWidth(GLfloat w)=0
Set line width for drawing: glLineWidth()
TModelUnit GetScaleX(void) const
TModelUnit GetOffsetX() const
vector< CConstRef< CObject > > TConstObjects
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
void Reset(void)
Reset reference object.
position_type GetLength(void) const
bool IntersectingWith(const TThisType &r) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
void Start(void)
Start the timer.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
void SetTo(TTo value)
Assign a value to To data member.
where boath are integers</td > n< td ></td > n</tr > n< tr > n< td > tse</td > n< td > optional</td > n< td > String</td > n< td class=\"description\"> TSE option controls what blob is orig
const GenericPointer< typename T::ValueType > T2 value
Defines: CTimeFormat - storage class for time format.
static const sljit_gpr r1
static const sljit_gpr r2
@ eIntersects
intersection found
EIntersectResult IntersectRayQuad(const CVect3< Data > &origin, const CVect3< Data > &dir, const CVect3< Data > &vert0, const CVect3< Data > &vert1, const CVect3< Data > &vert2, const CVect3< Data > &vert3, CVect3< Data > &intersect_pt, bool cull_test=false)
IntersectRayQuad() computes the intersection point of a ray collided with a quad.