本文整理汇总了C++中DisplayModel::GetPadding方法的典型用法代码示例。如果您正苦于以下问题:C++ DisplayModel::GetPadding方法的具体用法?C++ DisplayModel::GetPadding怎么用?C++ DisplayModel::GetPadding使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DisplayModel
的用法示例。
在下文中一共展示了DisplayModel::GetPadding方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ScrollTo
void LinkHandler::ScrollTo(PageDestination *dest)
{
assert(owner && owner->linkHandler == this);
int pageNo = dest->GetDestPageNo();
if (pageNo <= 0)
return;
if (owner->dm->AsChmEngine()) {
owner->dm->AsChmEngine()->GoToDestination(dest);
return;
}
DisplayModel *dm = owner->dm;
PointI scroll(-1, 0);
RectD rect = dest->GetDestRect();
if (rect.IsEmpty()) {
// PDF: /XYZ top left
// scroll to rect.TL()
PointD scrollD = dm->engine->Transform(rect.TL(), pageNo, dm->ZoomReal(), dm->Rotation());
scroll = scrollD.Convert<int>();
// default values for the coordinates mean: keep the current position
if (DEST_USE_DEFAULT == rect.x)
scroll.x = -1;
if (DEST_USE_DEFAULT == rect.y) {
PageInfo *pageInfo = dm->GetPageInfo(dm->CurrentPageNo());
scroll.y = -(pageInfo->pageOnScreen.y - dm->GetPadding()->top);
scroll.y = max(scroll.y, 0); // Adobe Reader never shows the previous page
}
}
else if (rect.dx != DEST_USE_DEFAULT && rect.dy != DEST_USE_DEFAULT) {
// PDF: /FitR left bottom right top
RectD rectD = dm->engine->Transform(rect, pageNo, dm->ZoomReal(), dm->Rotation());
scroll = rectD.TL().Convert<int>();
// Rect<float> rectF = dm->engine->Transform(rect, pageNo, 1.0, dm->rotation()).Convert<float>();
// zoom = 100.0f * min(owner->canvasRc.dx / rectF.dx, owner->canvasRc.dy / rectF.dy);
}
else if (rect.y != DEST_USE_DEFAULT) {
// PDF: /FitH top or /FitBH top
PointD scrollD = dm->engine->Transform(rect.TL(), pageNo, dm->ZoomReal(), dm->Rotation());
scroll.y = max(scrollD.Convert<int>().y, 0); // Adobe Reader never shows the previous page
// zoom = FitBH ? ZOOM_FIT_CONTENT : ZOOM_FIT_WIDTH
}
// else if (Fit || FitV) zoom = ZOOM_FIT_PAGE
// else if (FitB || FitBV) zoom = ZOOM_FIT_CONTENT
/* // ignore author-set zoom settings (at least as long as there's no way to overrule them)
if (zoom != INVALID_ZOOM) {
// TODO: adjust the zoom level before calculating the scrolling coordinates
dm->zoomTo(zoom);
UpdateToolbarState(owner);
}
// */
dm->GoToPage(pageNo, scroll.y, true, scroll.x);
}