Hi,
Where can i write this code?
I want to implement highlight and underline annotations manually using this method
page.AddAnnotMarkup(index1, index2, TYPE);
Instead of this method
pdfView.vSetSelMarkup(TYPE);
I tried something like that but the
page.ObjsGetCharIndex(pt)
method always return -1:
@Override
public void OnPDFSelecting(Canvas canvas, int[] rect1, int[] rect2) {
Paint paint = new Paint();
paint.setColor(Color.parseColor(mSelectingColor));
if (rect2[1] > rect1[3]) {
canvas.drawCircle(rect1[0], rect1[1], 5, paint);
canvas.drawCircle(rect2[2], rect2[3], 5, paint);
mTargetPosition = pdfView.vGetPos(rect1[0], rect1[1]);
mStartSelectedTextX = rect1[0];
mStartSelectedTextY = rect1[1];
mEndSelectedTextX = rect2[2];
mEndSelectedTextY = rect2[3];
} else {
canvas.drawCircle(rect2[0], rect2[1], 5, paint);
canvas.drawCircle(rect1[2], rect1[3], 5, paint);
mTargetPosition = pdfView.vGetPos(rect2[0], rect2[1]);
mStartSelectedTextX = rect2[0];
mStartSelectedTextY = rect2[1];
mEndSelectedTextX = rect1[2];
mEndSelectedTextY = rect1[3];
}
}
@Override
public void OnPDFSelectEnd() {
PDFView.PDFPos pos = pdfView.vGetPos((int) mStartSelectedTextX, (int) mStartSelectedTextY);
PDFVPage vPage = pdfView.vGetPage(pos.pageno);
Page page = vPage.GetPage();
int index1 = -1, index2 = -1;
if (page != null) {
float pt[] = new float[2];
pt[0] = mStartSelectedTextX;
pt[1] = mStartSelectedTextY;
index1 = page.ObjsGetCharIndex(pt);
pt[0] = vPage.ToPDFX(mEndSelectedTextX, pdfView.vGetX());
pt[1] = vPage.ToPDFY(mEndSelectedTextY, pdfView.vGetY());
index2 = page.ObjsGetCharIndex(pt);
}
if (index1 != -1 && index2 != -1) {
boolean result = page.AddAnnotMarkup(index1, index2, Constants.HIGHLIGHT_TYPE);
pdfView.vRenderSync(vPage);
pdfSave();
setAnnotationColor(Color.parseColor(mHighlightColor));
mPdfReaderListener.onHighlightEnd(result,
mTargetPosition.pageno + 1,
mHighlightColor,
mStartSelectedTextX, mStartSelectedTextY,
mEndSelectedTextX, mEndSelectedTextY);
}
}
Kindly advice