Dear Mrawy,
Try the following implementation (passing directly the rect values to the select end listener):
Change the
OnPDFSelectEnd in
PDFViewListener to:
public void OnPDFSelectEnd(float x1, float y1, float x2, float y2);
In
PDFView.motionSelect change the call to the listener to:
if( m_listener != null ) m_listener.OnPDFSelectEnd(m_holdx, m_holdy, m_movex, m_movey);
And finally change the implementation of the listener itself as:
public void OnPDFSelectEnd(float x1, float y1, float x2, float y2)
{
PDFPos pos = m_view.vGetPos((int)x1, (int)y1);
PDFVPage vpage = m_view.vGetPage(pos.pageno);
Page page = vpage.GetPage();
if( page != null )
{
page.ObjsStart();
float pt[] = new float[2];
pt[0] = pos.x;
pt[1] = pos.y;
int m_index1 = page.ObjsGetCharIndex(pt);
pt[0] = vpage.ToPDFX(x2, m_view.vGetX());
pt[1] = vpage.ToPDFY(y2, m_view.vGetY());
int m_index2 = page.ObjsGetCharIndex(pt);
if( m_index1 > m_index2 )
{
int tmp = m_index1;
m_index1 = m_index2;
m_index2 = tmp;
}
m_index1 = page.ObjsAlignWord(m_index1, -1);
m_index2 = page.ObjsAlignWord(m_index2, 1);
page.AddAnnotMarkup(m_index1, m_index2, 0);
m_view.vRenderSync(vpage);
if( m_listener != null )
m_listener.OnPageModified(vpage.GetPageNo());
}
// if( m_listener != null )
// m_listener.OnSelectEnd(m_view.vGetSel());
}
Note; if you do not have the source code of the jar, please check
here