本章主要介绍mupdf标注渲染,接口是fz_run_page_widgets ,下面是具体实现过程。
接口说明请参考mupdf源码分析(九)显示之页面渲染的fz_run_page_contents接口。
接口实现是通过pdf_run_page_widgets->pdf_run_page_widgets_with_usage接口实现。
1,处理cookie->progress_max
if (cookie && cookie->progress_max != (size_t)-1)
{//不超过progress_max
int count = 1;
for (widget = page->widgets; widget; widget = widget->next)
count++;
cookie->progress_max += count;
}
2,遍历每一个小部件并计入cookie
for (widget = page->widgets; widget; widget = widget->next)
{
/* Check the cookie for aborting */
if (cookie)
{
if (cookie->abort)//终止
break;
cookie->progress++;//进度数
}
//处理单个小部件,调用标注接口处理
pdf_run_annot_with_usage(ctx, doc, page, widget, dev, ctm, usage, cookie);
}