Hi,
We suggest you to save the page and the start char index of the search results.
Then to be able to highlight them, you can add the following method to
OnPageDisplayed listener
private void highlightResults(Canvas canvas){
Paint mSearchPaint = new Paint();
mSearchPaint.setARGB((Global.findPrimaryColor>>24)&0xFF, (Global.findPrimaryColor>>16)&0xFF, (Global.findPrimaryColor>>8)&0xFF,
Global.findPrimaryColor&0xFF );
mSearchPaint.setStyle(Paint.Style.FILL);
float[] mSearchDrawRect = new float[4];
VPage vPage = m_layout.vGetPage(PDFGetCurrPage());
mSearchDrawRect[0] = vPage.GetVX(mSearchRect[0]) - m_layout.vGetX();
mSearchDrawRect[1] = vPage.GetVY(mSearchRect[3]) - m_layout.vGetY();
mSearchDrawRect[2] = vPage.GetVX(mSearchRect[2]) - m_layout.vGetX(
);
mSearchDrawRect[3] = vPage.GetVY(mSearchRect[1]) - m_layout.vGetY();
canvas.drawRect(mSearchDrawRect[0], mSearchDrawRect[1], mSearchDrawRect[2], mSearchDrawRect[3],
mSearchPaint);
}
To be able to calculate
mSearchRect (the rect of the word to highlight) you can take as a reference the below method (it's used in the demo project when PDFFind is called)
private void find_draw( Canvas canvas, VPage page, int index, Paint paint, int scrollx, int scrolly )
{
int ichar = m_finder.GetFirstChar(index);
int ichar_end = ichar + m_str.length();
float rect[] = new float[4];
float rect_word[] = new float[4];
float rect_draw[] = new float[4];
m_page.ObjsGetCharRect(ichar, rect);
rect_word[0] = rect[0];
rect_word[1] = rect[1];
rect_word[2] = rect[2];
rect_word[3] = rect[3];
ichar++;
while( ichar < ichar_end )
{
m_page.ObjsGetCharRect(ichar, rect);
float gap = (rect[3] - rect[1])/2;
if( rect_word[1] == rect[1] && rect_word[3] == rect[3] &&
rect_word[2] + gap > rect[0] && rect_word[0] - gap < rect[2] )
{
if( rect_word[0] > rect[0] ) rect_word[0] = rect[0];
if( rect_word[2] < rect[2] ) rect_word[2] = rect[2];
}
else
{
rect_draw[0] = page.GetVX(rect_word[0]) - scrollx;
rect_draw[1] = page.GetVY(rect_word[3]) - scrolly;
rect_draw[2] = page.GetVX(rect_word[2]) - scrollx;
rect_draw[3] = page.GetVY(rect_word[1]) - scrolly;
canvas.drawRect(rect_draw[0], rect_draw[1], rect_draw[2], rect_draw[3], paint);
rect_word[0] = rect[0];
rect_word[1] = rect[1];
rect_word[2] = rect[2];
rect_word[3] = rect[3];
}
ichar++;
}
rect_draw[0] = page.GetVX(rect_word[0]) - scrollx;
rect_draw[1] = page.GetVY(rect_word[3]) - scrolly;
rect_draw[2] = page.GetVX(rect_word[2]) - scrollx;
rect_draw[3] = page.GetVY(rect_word[1]) - scrolly;
canvas.drawRect(rect_draw[0], rect_draw[1], rect_draw[2], rect_draw[3], paint);
}