本文整理汇总了C++中CFX_RectF::bottom方法的典型用法代码示例。如果您正苦于以下问题:C++ CFX_RectF::bottom方法的具体用法?C++ CFX_RectF::bottom怎么用?C++ CFX_RectF::bottom使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFX_RectF
的用法示例。
在下文中一共展示了CFX_RectF::bottom方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetPopupPosMenu
bool IFWL_Widget::GetPopupPosMenu(FX_FLOAT fMinHeight,
FX_FLOAT fMaxHeight,
const CFX_RectF& rtAnchor,
CFX_RectF& rtPopup) {
FX_FLOAT fx = 0;
FX_FLOAT fy = 0;
if (GetStylesEx() & FWL_STYLEEXT_MNU_Vert) {
bool bLeft = m_pProperties->m_rtWidget.left < 0;
FX_FLOAT fRight = rtAnchor.right() + rtPopup.width;
TransformTo(nullptr, fx, fy);
if (fRight + fx > 0.0f || bLeft) {
rtPopup.Set(rtAnchor.left - rtPopup.width, rtAnchor.top, rtPopup.width,
rtPopup.height);
} else {
rtPopup.Set(rtAnchor.right(), rtAnchor.top, rtPopup.width,
rtPopup.height);
}
} else {
FX_FLOAT fBottom = rtAnchor.bottom() + rtPopup.height;
TransformTo(nullptr, fx, fy);
if (fBottom + fy > 0.0f) {
rtPopup.Set(rtAnchor.left, rtAnchor.top - rtPopup.height, rtPopup.width,
rtPopup.height);
} else {
rtPopup.Set(rtAnchor.left, rtAnchor.bottom(), rtPopup.width,
rtPopup.height);
}
}
rtPopup.Offset(fx, fy);
return true;
}
示例2: RefreshToolTipPos
void CFWL_ToolTipImp::RefreshToolTipPos() {
if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_TTP_NoAnchor) == 0) {
CFX_RectF rtPopup;
CFX_RectF rtWidget(m_pProperties->m_rtWidget);
CFX_RectF rtAnchor(m_rtAnchor);
rtPopup.Set(0, 0, 0, 0);
FX_FLOAT fx = rtAnchor.Center().x + 20;
FX_FLOAT fy = rtAnchor.Center().y + 20;
rtPopup.Set(fx, fy, rtWidget.Width(), rtWidget.Height());
FX_FLOAT fScreenWidth = 0;
FX_FLOAT fScreenHeight = 0;
GetScreenSize(fScreenWidth, fScreenHeight);
if (rtPopup.bottom() > fScreenHeight) {
rtPopup.Offset(0, fScreenHeight - rtPopup.bottom());
}
if (rtPopup.right() > fScreenWidth) {
rtPopup.Offset(fScreenWidth - rtPopup.right(), 0);
}
if (rtPopup.left < 0) {
rtPopup.Offset(0 - rtPopup.left, 0);
}
if (rtPopup.top < 0) {
rtPopup.Offset(0, 0 - rtPopup.top);
}
SetWidgetRect(rtPopup);
Update();
}
}
示例3: RenderWidget
void CXFA_FFLine::RenderWidget(CFX_Graphics* pGS,
CFX_Matrix* pMatrix,
uint32_t dwStatus) {
if (!IsMatchVisibleStatus(dwStatus)) {
return;
}
CXFA_Value value = m_pDataAcc->GetFormValue();
if (!value) {
return;
}
CXFA_Line lineObj = value.GetLine();
FX_ARGB lineColor = 0xFF000000;
int32_t iStrokeType = 0;
FX_FLOAT fLineWidth = 1.0f;
FX_BOOL bSlope = lineObj.GetSlop();
int32_t iCap = 0;
CXFA_Edge edge = lineObj.GetEdge();
if (edge) {
if (edge.GetPresence() != XFA_ATTRIBUTEENUM_Visible) {
return;
}
lineColor = edge.GetColor();
iStrokeType = edge.GetStrokeType();
fLineWidth = edge.GetThickness();
iCap = edge.GetCapType();
}
CFX_Matrix mtRotate;
GetRotateMatrix(mtRotate);
if (pMatrix) {
mtRotate.Concat(*pMatrix);
}
CFX_RectF rtLine;
GetRectWithoutRotate(rtLine);
if (CXFA_Margin mgWidget = m_pDataAcc->GetMargin()) {
XFA_RectWidthoutMargin(rtLine, mgWidget);
}
GetRectFromHand(rtLine, lineObj.GetHand(), fLineWidth);
CFX_Path linePath;
linePath.Create();
if (bSlope && rtLine.right() > 0.0f && rtLine.bottom() > 0.0f) {
linePath.AddLine(rtLine.right(), rtLine.top, rtLine.left, rtLine.bottom());
} else {
linePath.AddLine(rtLine.left, rtLine.top, rtLine.right(), rtLine.bottom());
}
CFX_Color color(lineColor);
pGS->SaveGraphState();
pGS->SetLineWidth(fLineWidth, TRUE);
XFA_StrokeTypeSetLineDash(pGS, iStrokeType, iCap);
pGS->SetStrokeColor(&color);
pGS->SetLineCap(XFA_LineCapToFXGE(iCap));
pGS->StrokePath(&linePath, &mtRotate);
pGS->RestoreGraphState();
}
示例4: DoAlignment
void CFDE_TextOut::DoAlignment(const CFX_RectF& rect) {
FX_BOOL bVertical = !!(m_dwStyles & FDE_TTOSTYLE_VerticalLayout);
FX_FLOAT fLineStopS = bVertical ? rect.right() : rect.bottom();
int32_t iLines = m_ttoLines.GetSize();
if (iLines < 1)
return;
FDE_TTOPIECE* pFirstPiece = m_ttoLines.GetPtrAt(iLines - 1)->GetPtrAt(0);
if (!pFirstPiece)
return;
FX_FLOAT fLineStopD =
bVertical ? pFirstPiece->rtPiece.right() : pFirstPiece->rtPiece.bottom();
FX_FLOAT fInc = fLineStopS - fLineStopD;
if (m_iAlignment >= FDE_TTOALIGNMENT_CenterLeft &&
m_iAlignment < FDE_TTOALIGNMENT_BottomLeft) {
fInc /= 2.0f;
} else if (m_iAlignment < FDE_TTOALIGNMENT_CenterLeft) {
fInc = 0.0f;
}
if (fInc < 1.0f)
return;
for (int32_t i = 0; i < iLines; i++) {
CFDE_TTOLine* pLine = m_ttoLines.GetPtrAt(i);
int32_t iPieces = pLine->GetSize();
for (int32_t j = 0; j < iPieces; j++) {
FDE_TTOPIECE* pPiece = pLine->GetPtrAt(j);
if (bVertical)
pPiece->rtPiece.left += fInc;
else
pPiece->rtPiece.top += fInc;
}
}
}
示例5: DoAlignment
void CFDE_TextOut::DoAlignment(const CFX_RectF& rect) {
if (m_ttoLines.empty())
return;
bool bVertical = !!(m_dwStyles & FDE_TTOSTYLE_VerticalLayout);
FX_FLOAT fLineStopS = bVertical ? rect.right() : rect.bottom();
FDE_TTOPIECE* pFirstPiece = m_ttoLines.back().GetPtrAt(0);
if (!pFirstPiece)
return;
FX_FLOAT fLineStopD =
bVertical ? pFirstPiece->rtPiece.right() : pFirstPiece->rtPiece.bottom();
FX_FLOAT fInc = fLineStopS - fLineStopD;
if (m_iAlignment >= FDE_TTOALIGNMENT_CenterLeft &&
m_iAlignment < FDE_TTOALIGNMENT_BottomLeft) {
fInc /= 2.0f;
} else if (m_iAlignment < FDE_TTOALIGNMENT_CenterLeft) {
fInc = 0.0f;
}
if (fInc < 1.0f)
return;
for (auto& line : m_ttoLines) {
int32_t iPieces = line.GetSize();
for (int32_t j = 0; j < iPieces; j++) {
FDE_TTOPIECE* pPiece = line.GetPtrAt(j);
if (bVertical)
pPiece->rtPiece.left += fInc;
else
pPiece->rtPiece.top += fInc;
}
}
}
示例6: LoadText
void CFDE_TextOut::LoadText(const FX_WCHAR* pwsStr,
int32_t iLength,
const CFX_RectF& rect) {
FX_WCHAR* pStr = m_wsText.GetBuffer(iLength);
int32_t iTxtLength = iLength;
ExpandBuffer(iTxtLength, 0);
bool bHotKey = !!(m_dwStyles & FDE_TTOSTYLE_HotKey);
bool bVertical = !!(m_dwStyles & FDE_TTOSTYLE_VerticalLayout);
bool bLineWrap = !!(m_dwStyles & FDE_TTOSTYLE_LineWrap);
FX_FLOAT fLineStep =
(m_fLineSpace > m_fFontSize) ? m_fLineSpace : m_fFontSize;
FX_FLOAT fLineStop = bVertical ? rect.left : rect.bottom();
m_fLinePos = bVertical ? rect.right() : rect.top;
if (bVertical) {
fLineStep = -fLineStep;
}
m_hotKeys.RemoveAll();
int32_t iStartChar = 0;
int32_t iChars = 0;
int32_t iPieceWidths = 0;
uint32_t dwBreakStatus;
FX_WCHAR wch;
bool bRet = false;
while (iTxtLength-- > 0) {
wch = *pwsStr++;
if (bHotKey && wch == L'&' && *(pStr - 1) != L'&') {
if (iTxtLength > 0)
m_hotKeys.Add(iChars);
continue;
}
*pStr++ = wch;
iChars++;
dwBreakStatus = m_pTxtBreak->AppendChar(wch);
if (dwBreakStatus > FX_TXTBREAK_PieceBreak) {
bool bEndofLine =
RetriecePieces(dwBreakStatus, iStartChar, iPieceWidths, false, rect);
if (bEndofLine && (bLineWrap || (dwBreakStatus > FX_TXTBREAK_LineBreak &&
!bLineWrap))) {
iPieceWidths = 0;
m_iCurLine++;
m_fLinePos += fLineStep;
}
if ((bVertical && m_fLinePos + fLineStep < fLineStop) ||
(!bVertical && m_fLinePos + fLineStep > fLineStop)) {
int32_t iCurLine = bEndofLine ? m_iCurLine - 1 : m_iCurLine;
m_ttoLines[iCurLine].SetNewReload(true);
bRet = true;
break;
}
}
}
dwBreakStatus = m_pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
if (dwBreakStatus > FX_TXTBREAK_PieceBreak && !bRet) {
RetriecePieces(dwBreakStatus, iStartChar, iPieceWidths, false, rect);
}
m_pTxtBreak->ClearBreakPieces();
m_pTxtBreak->Reset();
m_wsText.ReleaseBuffer(iLength);
}
示例7: if
void CFDE_TxtEdtPage::NormalizePt2Rect(CFX_PointF& ptF,
const CFX_RectF& rtF,
FX_FLOAT fTolerance) const {
if (rtF.Contains(ptF.x, ptF.y)) {
return;
}
if (ptF.x < rtF.left) {
ptF.x = rtF.left;
} else if (ptF.x >= rtF.right()) {
ptF.x = rtF.right() - fTolerance;
}
if (ptF.y < rtF.top) {
ptF.y = rtF.top;
} else if (ptF.y >= rtF.bottom()) {
ptF.y = rtF.bottom() - fTolerance;
}
}
示例8: GetPopupPosGeneral
bool IFWL_Widget::GetPopupPosGeneral(FX_FLOAT fMinHeight,
FX_FLOAT fMaxHeight,
const CFX_RectF& rtAnchor,
CFX_RectF& rtPopup) {
FX_FLOAT fx = 0;
FX_FLOAT fy = 0;
TransformTo(nullptr, fx, fy);
if (rtAnchor.bottom() + fy > 0.0f) {
rtPopup.Set(rtAnchor.left, rtAnchor.top - rtPopup.height, rtPopup.width,
rtPopup.height);
} else {
rtPopup.Set(rtAnchor.left, rtAnchor.bottom(), rtPopup.width,
rtPopup.height);
}
rtPopup.Offset(fx, fy);
return true;
}
示例9: GetPopupPosComboBox
bool IFWL_Widget::GetPopupPosComboBox(FX_FLOAT fMinHeight,
FX_FLOAT fMaxHeight,
const CFX_RectF& rtAnchor,
CFX_RectF& rtPopup) {
FX_FLOAT fx = 0;
FX_FLOAT fy = 0;
FX_FLOAT fPopHeight = rtPopup.height;
if (rtPopup.height > fMaxHeight)
fPopHeight = fMaxHeight;
else if (rtPopup.height < fMinHeight)
fPopHeight = fMinHeight;
FX_FLOAT fWidth = std::max(rtAnchor.width, rtPopup.width);
FX_FLOAT fBottom = rtAnchor.bottom() + fPopHeight;
TransformTo(nullptr, fx, fy);
if (fBottom + fy > 0.0f)
rtPopup.Set(rtAnchor.left, rtAnchor.top - fPopHeight, fWidth, fPopHeight);
else
rtPopup.Set(rtAnchor.left, rtAnchor.bottom(), fWidth, fPopHeight);
rtPopup.Offset(fx, fy);
return true;
}
示例10: TransformRect
void CFX_Matrix::TransformRect(CFX_RectF& rect) const {
FX_FLOAT right = rect.right(), bottom = rect.bottom();
TransformRect(rect.left, right, bottom, rect.top);
rect.width = right - rect.left;
rect.height = bottom - rect.top;
}
示例11: DrawLine
void CFDE_TextOut::DrawLine(const FDE_TTOPIECE* pPiece, CFDE_Pen*& pPen) {
FX_BOOL bUnderLine = !!(m_dwStyles & FDE_TTOSTYLE_Underline);
FX_BOOL bStrikeOut = !!(m_dwStyles & FDE_TTOSTYLE_Strikeout);
FX_BOOL bHotKey = !!(m_dwStyles & FDE_TTOSTYLE_HotKey);
FX_BOOL bVertical = !!(m_dwStyles & FDE_TTOSTYLE_VerticalLayout);
if (!bUnderLine && !bStrikeOut && !bHotKey)
return;
if (!pPen) {
pPen = new CFDE_Pen;
pPen->SetColor(m_TxtColor);
}
std::unique_ptr<CFDE_Path> pPath(new CFDE_Path);
int32_t iLineCount = 0;
CFX_RectF rtText = pPiece->rtPiece;
CFX_PointF pt1, pt2;
if (bUnderLine) {
if (bVertical) {
pt1.x = rtText.left;
pt1.y = rtText.top;
pt2.x = rtText.left;
pt2.y = rtText.bottom();
} else {
pt1.x = rtText.left;
pt1.y = rtText.bottom();
pt2.x = rtText.right();
pt2.y = rtText.bottom();
}
pPath->AddLine(pt1, pt2);
iLineCount++;
}
if (bStrikeOut) {
if (bVertical) {
pt1.x = rtText.left + rtText.width * 2.0f / 5.0f;
pt1.y = rtText.top;
pt2.x = pt1.x;
pt2.y = rtText.bottom();
} else {
pt1.x = rtText.left;
pt1.y = rtText.bottom() - rtText.height * 2.0f / 5.0f;
pt2.x = rtText.right();
pt2.y = pt1.y;
}
pPath->AddLine(pt1, pt2);
iLineCount++;
}
if (bHotKey) {
int32_t iHotKeys = m_hotKeys.GetSize();
int32_t iCount = GetCharRects(pPiece);
if (iCount > 0) {
for (int32_t i = 0; i < iHotKeys; i++) {
int32_t iCharIndex = m_hotKeys.GetAt(i);
if (iCharIndex >= pPiece->iStartChar &&
iCharIndex < pPiece->iStartChar + pPiece->iChars) {
CFX_RectF rect = m_rectArray.GetAt(iCharIndex - pPiece->iStartChar);
if (bVertical) {
pt1.x = rect.left;
pt1.y = rect.top;
pt2.x = rect.left;
pt2.y = rect.bottom();
} else {
pt1.x = rect.left;
pt1.y = rect.bottom();
pt2.x = rect.right();
pt2.y = rect.bottom();
}
pPath->AddLine(pt1, pt2);
iLineCount++;
}
}
}
}
if (iLineCount > 0)
m_pRenderDevice->DrawPath(pPen, 1, pPath.get(), &m_Matrix);
}
示例12: CalcTextSize
void CFDE_TextOut::CalcTextSize(const FX_WCHAR* pwsStr,
int32_t iLength,
CFX_RectF& rect) {
ASSERT(m_pFont && m_fFontSize >= 1.0f);
SetLineWidth(rect);
m_iTotalLines = 0;
const FX_WCHAR* pStr = pwsStr;
FX_BOOL bHotKey = !!(m_dwStyles & FDE_TTOSTYLE_HotKey);
FX_BOOL bVertical = !!(m_dwStyles & FDE_TTOSTYLE_VerticalLayout);
FX_FLOAT fWidth = 0.0f;
FX_FLOAT fHeight = 0.0f;
FX_FLOAT fStartPos = bVertical ? rect.bottom() : rect.right();
uint32_t dwBreakStatus = 0;
FX_WCHAR wPreChar = 0;
FX_WCHAR wch;
FX_WCHAR wBreak = 0;
while (iLength-- > 0) {
wch = *pStr++;
if (wBreak == 0 && (wch == L'\n' || wch == L'\r')) {
wBreak = wch;
m_pTxtBreak->SetParagraphBreakChar(wch);
}
if (bHotKey && wch == L'&' && wPreChar != L'&') {
wPreChar = wch;
continue;
}
dwBreakStatus = m_pTxtBreak->AppendChar(wch);
if (dwBreakStatus > FX_TXTBREAK_PieceBreak) {
RetrieveLineWidth(dwBreakStatus, fStartPos, fWidth, fHeight);
}
wPreChar = 0;
}
dwBreakStatus = m_pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
if (dwBreakStatus > FX_TXTBREAK_PieceBreak) {
RetrieveLineWidth(dwBreakStatus, fStartPos, fWidth, fHeight);
}
m_pTxtBreak->Reset();
FX_FLOAT fInc = rect.Height() - fHeight;
if (bVertical) {
fInc = rect.Width() - fHeight;
}
if (m_iAlignment >= FDE_TTOALIGNMENT_CenterLeft &&
m_iAlignment < FDE_TTOALIGNMENT_BottomLeft) {
fInc /= 2.0f;
} else if (m_iAlignment < FDE_TTOALIGNMENT_CenterLeft) {
fInc = 0.0f;
}
if (bVertical) {
rect.top += fStartPos;
rect.left += fInc;
rect.width = fHeight;
rect.height = std::min(fWidth, rect.Height());
} else {
rect.left += fStartPos;
rect.top += fInc;
rect.width = std::min(fWidth, rect.Width());
rect.height = fHeight;
if (m_dwStyles & FDE_TTOSTYLE_LastLineHeight) {
rect.height -= m_fLineSpace - m_fFontSize;
}
}
}