void CFWL_CheckBoxTP::DrawSignStar(CFX_Graphics* pGraphics, const CFX_RectF* pRtSign, FX_ARGB argbFill, CFX_Matrix* pMatrix) { CFX_Path path; path.Create(); FX_FLOAT fBottom = pRtSign->bottom(); FX_FLOAT fRadius = (pRtSign->top - fBottom) / (1 + (FX_FLOAT)cos(FX_PI / 5.0f)); CFX_PointF ptCenter; ptCenter.Set((pRtSign->left + pRtSign->right()) / 2.0f, (pRtSign->top + fBottom) / 2.0f); FX_FLOAT px[5], py[5]; FX_FLOAT fAngel = FX_PI / 10.0f; for (int32_t i = 0; i < 5; i++) { px[i] = ptCenter.x + fRadius * (FX_FLOAT)cos(fAngel); py[i] = ptCenter.y + fRadius * (FX_FLOAT)sin(fAngel); fAngel += FX_PI * 2 / 5.0f; } path.MoveTo(px[0], py[0]); int32_t nNext = 0; for (int32_t j = 0; j < 5; j++) { nNext += 2; if (nNext >= 5) { nNext -= 5; } path.LineTo(px[nNext], py[nNext]); } CFX_Color crFill(argbFill); pGraphics->SaveGraphState(); pGraphics->SetFillColor(&crFill); pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); pGraphics->RestoreGraphState(); }
FX_BOOL CFWL_ToolTipContainer::ProcessEnter(CFWL_EvtMouse* pEvt, IFWL_Widget* pOwner) { if (HasToolTip(pEvt->m_pDstTarget)) { if (NULL == m_pToolTipImp) { CFWL_WidgetImpProperties prop; prop.m_pDataProvider = m_ToolTipDp; prop.m_pOwner = pOwner; CFX_RectF rtTooltip; rtTooltip.Set(150, 150, 100, 50); prop.m_rtWidget = rtTooltip; IFWL_ToolTip* pToolTip = IFWL_ToolTip::Create(prop, nullptr); pToolTip->Initialize(); m_pToolTipImp = static_cast<CFWL_ToolTipImp*>(pToolTip->GetImpl()); m_pToolTipImp->ModifyStylesEx(FWL_STYLEEXT_TTP_Multiline, 0); m_pToolTipImp->SetStates(FWL_WGTSTATE_Invisible, TRUE); } if (pCurTarget->IsShowed()) { CFX_WideString wsCaption; pCurTarget->GetCaption(wsCaption); if (!wsCaption.IsEmpty()) { m_ToolTipDp->m_wsCaption = wsCaption; } CFX_RectF rt; rt.Reset(); CFX_SizeF sz; sz.Reset(); pCurTarget->GetToolTipSize(sz); if (sz.x > 0 && sz.y > 0) { rt.width = sz.x; rt.height = sz.y; } else { CFX_RectF r; m_pToolTipImp->GetWidgetRect(r, TRUE); rt.width = r.width; rt.height = r.height; } CFX_PointF pt; pt.Set(pEvt->m_fx, pEvt->m_fy); if (pCurTarget->GetToolTipPos(pt) == FWL_ERR_Succeeded) { rt.left = pt.x; rt.top = pt.y; m_pToolTipImp->ModifyStylesEx(FWL_STYLEEXT_TTP_NoAnchor, 0); } else { CFX_RectF rtAnchor; pCurTarget->GetWidget()->GetClientRect(rtAnchor); pCurTarget->GetWidget()->TransformTo(NULL, rtAnchor.left, rtAnchor.top); m_pToolTipImp->SetAnchor(rtAnchor); m_pToolTipImp->ModifyStylesEx(0, FWL_STYLEEXT_TTP_NoAnchor); } m_pToolTipImp->SetWidgetRect(rt); m_pToolTipImp->Update(); m_pToolTipImp->Show(); } return TRUE; } return FALSE; }
FX_BOOL CXFA_FFTextEdit::OnRButtonUp(FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) { if (!CXFA_FFField::OnRButtonUp(dwFlags, fx, fy)) { return FALSE; } CFX_PointF pt; pt.Set(fx, fy); GetDoc()->GetDocProvider()->PopupMenu(this, pt, NULL); return TRUE; }