本文整理汇总了C++中CFX_RectF::IsEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ CFX_RectF::IsEmpty方法的具体用法?C++ CFX_RectF::IsEmpty怎么用?C++ CFX_RectF::IsEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFX_RectF
的用法示例。
在下文中一共展示了CFX_RectF::IsEmpty方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ChangeSelected
void IFWL_ComboList::ChangeSelected(int32_t iSel) {
if (!m_pProperties->m_pDataProvider)
return;
IFWL_ListBoxDP* pData =
static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
CFWL_ListItem* hItem = pData->GetItem(this, iSel);
CFX_RectF rtInvalidate;
rtInvalidate.Reset();
CFWL_ListItem* hOld = GetSelItem(0);
int32_t iOld = pData->GetItemIndex(this, hOld);
if (iOld == iSel)
return;
if (iOld > -1) {
GetItemRect(iOld, rtInvalidate);
SetSelItem(hOld, false);
}
if (hItem) {
CFX_RectF rect;
GetItemRect(iSel, rect);
rtInvalidate.Union(rect);
CFWL_ListItem* hSel = pData->GetItem(this, iSel);
SetSelItem(hSel, true);
}
if (!rtInvalidate.IsEmpty())
Repaint(&rtInvalidate);
}
示例2: DoRender
FDE_RENDERSTATUS CFDE_RenderContext::DoRender(IFX_Pause* pPause) {
if (m_pRenderDevice == NULL) {
return FDE_RENDERSTATUS_Failed;
}
if (m_pIterator == NULL) {
return FDE_RENDERSTATUS_Failed;
}
Lock();
FDE_RENDERSTATUS eStatus = FDE_RENDERSTATUS_Paused;
CFX_Matrix rm;
rm.SetReverse(m_Transform);
CFX_RectF rtDocClip = m_pRenderDevice->GetClipRect();
if (rtDocClip.IsEmpty()) {
rtDocClip.left = rtDocClip.top = 0;
rtDocClip.width = (FX_FLOAT)m_pRenderDevice->GetWidth();
rtDocClip.height = (FX_FLOAT)m_pRenderDevice->GetHeight();
}
rm.TransformRect(rtDocClip);
IFDE_VisualSet* pVisualSet;
FDE_HVISUALOBJ hVisualObj;
CFX_RectF rtObj;
int32_t iCount = 0;
while (TRUE) {
hVisualObj = m_pIterator->GetNext(pVisualSet);
if (hVisualObj == NULL || pVisualSet == NULL) {
eStatus = FDE_RENDERSTATUS_Done;
break;
}
rtObj.Empty();
pVisualSet->GetRect(hVisualObj, rtObj);
if (!rtDocClip.IntersectWith(rtObj)) {
continue;
}
switch (pVisualSet->GetType()) {
case FDE_VISUALOBJ_Text:
RenderText((IFDE_TextSet*)pVisualSet, hVisualObj);
iCount += 5;
break;
case FDE_VISUALOBJ_Path:
RenderPath((IFDE_PathSet*)pVisualSet, hVisualObj);
iCount += 20;
break;
case FDE_VISUALOBJ_Widget:
iCount += 10;
break;
case FDE_VISUALOBJ_Canvas:
FXSYS_assert(FALSE);
break;
default:
break;
}
if (iCount >= 100 && pPause != NULL && pPause->NeedToPauseNow()) {
eStatus = FDE_RENDERSTATUS_Paused;
break;
}
}
Unlock();
return m_eStatus = eStatus;
}
示例3: DrawChild
void CFWL_WidgetMgrDelegate::DrawChild(IFWL_Widget* parent,
const CFX_RectF& rtClip,
CFX_Graphics* pGraphics,
const CFX_Matrix* pMatrix) {
if (!parent)
return;
FX_BOOL bFormDisable = m_pWidgetMgr->IsFormDisabled();
IFWL_Widget* pNextChild = m_pWidgetMgr->GetFirstChildWidget(parent);
while (pNextChild) {
IFWL_Widget* child = pNextChild;
pNextChild = m_pWidgetMgr->GetNextSiblingWidget(child);
if (child->GetStates() & FWL_WGTSTATE_Invisible)
continue;
CFX_RectF rtWidget;
child->GetWidgetRect(rtWidget);
if (rtWidget.IsEmpty())
continue;
CFX_Matrix widgetMatrix;
CFX_RectF clipBounds(rtWidget);
if (!bFormDisable)
child->GetMatrix(widgetMatrix, TRUE);
if (pMatrix)
widgetMatrix.Concat(*pMatrix);
if (!bFormDisable) {
widgetMatrix.TransformPoint(clipBounds.left, clipBounds.top);
clipBounds.Intersect(rtClip);
if (clipBounds.IsEmpty())
continue;
pGraphics->SaveGraphState();
pGraphics->SetClipRect(clipBounds);
}
widgetMatrix.Translate(rtWidget.left, rtWidget.top, TRUE);
IFWL_WidgetDelegate* pDelegate = child->SetDelegate(nullptr);
if (pDelegate) {
if (m_pWidgetMgr->IsFormDisabled() ||
IsNeedRepaint(child, &widgetMatrix, rtClip)) {
pDelegate->OnDrawWidget(pGraphics, &widgetMatrix);
}
}
if (!bFormDisable)
pGraphics->RestoreGraphState();
DrawChild(child, clipBounds, pGraphics,
bFormDisable ? &widgetMatrix : pMatrix);
child = m_pWidgetMgr->GetNextSiblingWidget(child);
}
}
示例4: OnMouseMoveEx
void CFWL_DateTimeCalendarImpDelegate::OnMouseMoveEx(CFWL_MsgMouse* pMsg) {
if (m_pOwner->m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect) {
return;
}
FX_BOOL bRepaint = FALSE;
CFX_RectF rtInvalidate;
rtInvalidate.Set(0, 0, 0, 0);
if (m_pOwner->m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) {
int32_t iHover = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy);
bRepaint = m_pOwner->m_iHovered != iHover;
if (bRepaint) {
if (m_pOwner->m_iHovered > 0) {
m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate);
}
if (iHover > 0) {
CFX_RectF rtDay;
m_pOwner->GetDayRect(iHover, rtDay);
if (rtInvalidate.IsEmpty()) {
rtInvalidate = rtDay;
} else {
rtInvalidate.Union(rtDay);
}
}
}
m_pOwner->m_iHovered = iHover;
CFWL_Event_DtpHoverChanged ev;
ev.hoverday = iHover;
m_pOwner->DispatchEvent(&ev);
} else {
bRepaint = m_pOwner->m_iHovered > 0;
if (bRepaint) {
m_pOwner->GetDayRect(m_pOwner->m_iHovered, rtInvalidate);
}
m_pOwner->m_iHovered = -1;
}
if (bRepaint && !rtInvalidate.IsEmpty()) {
m_pOwner->Repaint(&rtInvalidate);
}
}
示例5: OnDrawWidget
void CFWL_WidgetMgrDelegate::OnDrawWidget(IFWL_Widget* pWidget,
CFX_Graphics* pGraphics,
const CFX_Matrix* pMatrix) {
if (!pWidget || !pGraphics)
return;
CFX_Graphics* pTemp = DrawWidgetBefore(pWidget, pGraphics, pMatrix);
CFX_RectF clipCopy;
pWidget->GetWidgetRect(clipCopy);
clipCopy.left = clipCopy.top = 0;
if (bUseOffscreenDirect(pWidget)) {
DrawWidgetAfter(pWidget, pGraphics, clipCopy, pMatrix);
return;
}
CFX_RectF clipBounds;
#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ || \
_FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_ANDROID_
IFWL_WidgetDelegate* pDelegate = pWidget->SetDelegate(nullptr);
pDelegate->OnDrawWidget(pTemp, pMatrix);
pGraphics->GetClipRect(clipBounds);
clipCopy = clipBounds;
#elif _FX_OS_ == _FX_MACOSX_
if (m_pWidgetMgr->IsFormDisabled()) {
IFWL_WidgetDelegate* pDelegate = pWidget->SetDelegate(nullptr);
pDelegate->OnDrawWidget(pTemp, pMatrix);
pGraphics->GetClipRect(clipBounds);
clipCopy = clipBounds;
} else {
clipBounds.Set(pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d);
const_cast<CFX_Matrix*>(pMatrix)->SetIdentity(); // FIXME: const cast.
IFWL_WidgetDelegate* pDelegate = pWidget->SetDelegate(nullptr);
pDelegate->OnDrawWidget(pTemp, pMatrix);
}
#endif // _FX_OS_ == _FX_MACOSX_
if (!m_pWidgetMgr->IsFormDisabled()) {
CFX_RectF rtClient;
pWidget->GetClientRect(rtClient);
clipBounds.Intersect(rtClient);
}
if (!clipBounds.IsEmpty())
DrawChild(pWidget, clipBounds, pTemp, pMatrix);
DrawWidgetAfter(pWidget, pGraphics, clipCopy, pMatrix);
m_pWidgetMgr->ResetRedrawCounts(pWidget);
}
示例6: ChangeSelected
void CFWL_ComboList::ChangeSelected(int32_t iSel) {
CFWL_ListItem* hItem = GetItem(this, iSel);
CFWL_ListItem* hOld = GetSelItem(0);
int32_t iOld = GetItemIndex(this, hOld);
if (iOld == iSel)
return;
CFX_RectF rtInvalidate;
if (iOld > -1) {
if (CFWL_ListItem* hOldItem = GetItem(this, iOld))
rtInvalidate = hOldItem->GetRect();
SetSelItem(hOld, false);
}
if (hItem) {
if (CFWL_ListItem* hOldItem = GetItem(this, iSel))
rtInvalidate.Union(hOldItem->GetRect());
CFWL_ListItem* hSel = GetItem(this, iSel);
SetSelItem(hSel, true);
}
if (!rtInvalidate.IsEmpty())
RepaintRect(rtInvalidate);
}
示例7: IsNeedRepaint
FX_BOOL CFWL_WidgetMgrDelegate::IsNeedRepaint(IFWL_Widget* pWidget,
CFX_Matrix* pMatrix,
const CFX_RectF& rtDirty) {
CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget);
if (pItem && pItem->iRedrawCounter > 0) {
pItem->iRedrawCounter = 0;
return TRUE;
}
CFX_RectF rtWidget;
pWidget->GetWidgetRect(rtWidget);
rtWidget.left = rtWidget.top = 0;
pMatrix->TransformRect(rtWidget);
if (!rtWidget.IntersectWith(rtDirty))
return FALSE;
IFWL_Widget* pChild =
CFWL_WidgetMgr::GetInstance()->GetFirstChildWidget(pWidget);
if (!pChild)
return TRUE;
CFX_RectF rtChilds;
rtChilds.Empty();
FX_BOOL bChildIntersectWithDirty = FALSE;
FX_BOOL bOrginPtIntersectWidthChild = FALSE;
FX_BOOL bOrginPtIntersectWidthDirty =
rtDirty.Contains(rtWidget.left, rtWidget.top);
static FWL_NEEDREPAINTHITDATA hitPoint[kNeedRepaintHitPoints];
FXSYS_memset(hitPoint, 0, sizeof(hitPoint));
FX_FLOAT fxPiece = rtWidget.width / kNeedRepaintHitPiece;
FX_FLOAT fyPiece = rtWidget.height / kNeedRepaintHitPiece;
hitPoint[2].hitPoint.x = hitPoint[6].hitPoint.x = rtWidget.left;
hitPoint[0].hitPoint.x = hitPoint[3].hitPoint.x = hitPoint[7].hitPoint.x =
hitPoint[10].hitPoint.x = fxPiece + rtWidget.left;
hitPoint[1].hitPoint.x = hitPoint[4].hitPoint.x = hitPoint[8].hitPoint.x =
hitPoint[11].hitPoint.x = fxPiece * 2 + rtWidget.left;
hitPoint[5].hitPoint.x = hitPoint[9].hitPoint.x =
rtWidget.width + rtWidget.left;
hitPoint[0].hitPoint.y = hitPoint[1].hitPoint.y = rtWidget.top;
hitPoint[2].hitPoint.y = hitPoint[3].hitPoint.y = hitPoint[4].hitPoint.y =
hitPoint[5].hitPoint.y = fyPiece + rtWidget.top;
hitPoint[6].hitPoint.y = hitPoint[7].hitPoint.y = hitPoint[8].hitPoint.y =
hitPoint[9].hitPoint.y = fyPiece * 2 + rtWidget.top;
hitPoint[10].hitPoint.y = hitPoint[11].hitPoint.y =
rtWidget.height + rtWidget.top;
do {
CFX_RectF rect;
pChild->GetWidgetRect(rect);
CFX_RectF r = rect;
r.left += rtWidget.left;
r.top += rtWidget.top;
if (r.IsEmpty())
continue;
if (r.Contains(rtDirty))
return FALSE;
if (!bChildIntersectWithDirty && r.IntersectWith(rtDirty))
bChildIntersectWithDirty = TRUE;
if (bOrginPtIntersectWidthDirty && !bOrginPtIntersectWidthChild)
bOrginPtIntersectWidthChild = rect.Contains(0, 0);
if (rtChilds.IsEmpty())
rtChilds = rect;
else if (!(pChild->GetStates() & FWL_WGTSTATE_Invisible))
rtChilds.Union(rect);
for (int32_t i = 0; i < kNeedRepaintHitPoints; i++) {
if (hitPoint[i].bNotContainByDirty || hitPoint[i].bNotNeedRepaint)
continue;
if (!rtDirty.Contains(hitPoint[i].hitPoint)) {
hitPoint[i].bNotContainByDirty = true;
continue;
}
if (r.Contains(hitPoint[i].hitPoint))
hitPoint[i].bNotNeedRepaint = true;
}
pChild = CFWL_WidgetMgr::GetInstance()->GetNextSiblingWidget(pChild);
} while (pChild);
if (!bChildIntersectWithDirty)
return TRUE;
if (bOrginPtIntersectWidthDirty && !bOrginPtIntersectWidthChild)
return TRUE;
if (rtChilds.IsEmpty())
return TRUE;
int32_t repaintPoint = kNeedRepaintHitPoints;
for (int32_t i = 0; i < kNeedRepaintHitPoints; i++) {
if (hitPoint[i].bNotNeedRepaint)
repaintPoint--;
}
if (repaintPoint > 0)
return TRUE;
pMatrix->TransformRect(rtChilds);
if (rtChilds.Contains(rtDirty) || rtChilds.Contains(rtWidget))
return FALSE;
return TRUE;
}