本文整理汇总了C++中TRect::IsEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ TRect::IsEmpty方法的具体用法?C++ TRect::IsEmpty怎么用?C++ TRect::IsEmpty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TRect
的用法示例。
在下文中一共展示了TRect::IsEmpty方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Clip
EXPORT_C void CHuiCanvasGc::Clip(const TRect& aClipRect)
{
if (!iGc)
{
return;
}
switch (iClipMode)
{
case EHuiCanvasClipModeNormal:
case EHuiCanvasClipModeDelayed:
{
if (iClippingRegion.Count())
{
CancelClipping();
}
if (!aClipRect.IsEmpty())
{
iTempRegion.Clear();
iTempRegion.AddRect(aClipRect);
ClipRegion(iTempRegion);
}
break;
}
case EHuiCanvasClipModeNone:
default:
{
// Do nothing
break;
}
}
}
示例2: TestAddRect
void TestRRegion::TestAddRect()
{
RRegion rgn;
TInt index,i;
if (!rect[0].IsEmpty())
{
for(index=0;index<4;index++)
{
for(i=0;i<=index;i++)
rgn.AddRect(rect[index]);
test(rgn.Count()==(index+1));
}
test(rgn.BoundingRect()==bounds);
if (!xrect.IsEmpty())
{
rgn.AddRect(xrect);
TInt count = rgn.Count();
test( (count > 4) && (count <= 9) );
}
}
rgn.AddRect(bounds);
test(rgn.Count()==1);
rgn.Close();
}
示例3: IsClipped
CHuiCanvasGc::TClipRectVisibility CHuiCanvasGc::IsClipped(const TRect& aRect, const TRegion& aClippingRegion) const
{
TClipRectVisibility isClipped = EFullyOutside;
if (!aClippingRegion.Count())
{
return EFullyInside;
}
if (!aRect.IsEmpty() && aClippingRegion.Count())
{
#if 0
TBool test = EFalse;
if (test)
{
for (TInt i=0; i<aClippingRegion.Count(); i++)
{
#ifdef _DEBUG
RDebug::Print(_L("aClippingRegion Rect: %d %d %d %d"),
aClippingRegion[i].iTl.iX,
aClippingRegion[i].iTl.iY,
aClippingRegion[i].iBr.iX,
aClippingRegion[i].iBr.iY);
#endif
}
}
#endif
if (aClippingRegion.Intersects(aRect))
{
iTempRegion.Clear();
iTempRegion2.Clear();
iTempRegion.AddRect(aRect);
iTempRegion2.Intersection(aClippingRegion, iTempRegion);
iTempRegion2.Tidy();
// Assume it is only partially inside region -> Clipped
isClipped = EPartialOverlap;
if (iTempRegion2.Count() == 1)
{
if (iTempRegion2[0] == aRect)
{
// Fully inside region -> Not clipped
isClipped = EFullyInside;
}
}
}
else
{
// No overlap -> aRect is completely outside region -> Clipped
isClipped = EFullyOutside;
}
}
return isClipped;
}
示例4: CheckRectRegion
void TestRRegion::CheckRectRegion(const TRegion& region,const TRect& rect)
// Check the region matches the rectangle
{
const TRect* rlist;
if (rect.IsEmpty())
test(region.Count()==0);
else
{
test(region.Count()==1);
rlist=region.RectangleList();
test(rlist[0]==rect);
test(region[0]==rect);
}
}
示例5: DrawThumb
void TScrollBar::DrawThumb(TDrawContext& context)
{
TRect thumbArea;
GetThumbArea(thumbArea);
TRect thumb;
GetThumb(thumb);
if (context.GetDepth() < 8)
{
context.SetStipple(TGraphicsUtils::GetGrayStipple());
context.SetForeColor(kBlackColor);
context.SetBackColor(kWhiteColor);
}
else
context.SetForeColor(kMediumGrayColor);
if (thumb.IsEmpty())
{
context.PaintRect(thumbArea);
}
else
{
if (IsVertical())
{
TRect r(thumbArea.left, thumbArea.top, thumbArea.right, thumb.top);
context.PaintRect(r);
r.Set(thumb.left, thumb.bottom, thumbArea.right, thumbArea.bottom);
context.PaintRect(r);
}
else
{
TRect r(thumbArea.left, thumbArea.top, thumb.left, thumbArea.bottom);
context.PaintRect(r);
r.Set(thumb.right, thumbArea.top, thumbArea.right, thumbArea.bottom);
context.PaintRect(r);
}
TGraphicsUtils::Draw3DBorderAndInset(context, thumb);
context.SetForeColor(kLightGrayColor);
context.PaintRect(thumb);
}
}
示例6: PrepareSpriteForDisplayL
/**
* Prepares the sprite in the set of type aSpriteType to be displayed at
* aSpritePos with size aSpriteSize. The sprite will be resized as necessary under the
* restriction of aSpriteResizeMode.
*/
EXPORT_C void CSpriteSet::PrepareSpriteForDisplayL(TInt aSpriteType, const TPoint& aSpritePos, const TSize& aSpriteSize, TSpriteResizeMode aSpriteResizeMode)
{
__ASSERT_DEBUG((aSpriteType >= 0) && (aSpriteType < iSourceMembers.Count()),Panic(EEgulPanicInvalidSpriteIndex));
__ASSERT_DEBUG((aSpriteSize.iWidth >= 0) && (aSpriteSize.iHeight >= 0),Panic(EEgulPanicNegativeSpriteSize));
iSpritePosition = aSpritePos;
iMainFbsBitGc->SetOrigin(TPoint(0,0));
TSize spriteSize(aSpriteSize);
const TSize sourceSize(iSourceMembers[aSpriteType]->Bitmap()->SizeInPixels());
AdjustSpriteSizeAccordingToResizeMode(spriteSize, sourceSize, aSpriteResizeMode);
User::LeaveIfError(iMainBmpDevice->Resize(spriteSize));
User::LeaveIfError(iMaskBmpDevice->Resize(spriteSize));
iMainFbsBitGc->Resized();
iMaskFbsBitGc->Resized();
iMaskFbsBitGc->SetBrushColor(KRgbBlack);
iMaskFbsBitGc->Clear();
const TRect translatedClipRect(iClippingRect.iTl - aSpritePos, iClippingRect.Size());
if(!translatedClipRect.IsEmpty())
iMaskFbsBitGc->SetClippingRect(translatedClipRect);
TInternalSpriteResizeMode resizeMode = EHSameVSame;
ComputeInternalResizeMode(resizeMode,aSpriteResizeMode,sourceSize,spriteSize);
RenderSprite(aSpriteType,resizeMode,sourceSize,spriteSize);
iMaskFbsBitGc->CancelClippingRect();
iMainFbsBitGc->SetOrigin(-aSpritePos);
}
示例7: Paint
void TFuncSpecView::Paint(TDC& dc, bool erase, TRect& rect)
{
TSwitchMinApp* theApp = TYPESAFE_DOWNCAST(GetApplication(), TSwitchMinApp);
if (theApp) {
// Only paint if we're printing and we have something to paint, otherwise do nothing.
//
if (theApp->Printing && theApp->Printer && !rect.IsEmpty()) {
// Use pageSize to get the size of the window to render into. For a Window it's the client area,
// for a printer it's the printer DC dimensions and for print preview it's the layout window.
//
TSize pageSize(rect.right - rect.left, rect.bottom - rect.top);
TPrintDialog::TData& printerData = theApp->Printer->GetSetup();
// Get area we can draw in
TRect drawingArea(swdoc->PaintHeader(dc, rect, "", 0, 0, false), rect.BottomRight());
TEXTMETRIC tm;
dc.SelectObject(TFont("Arial", -12));
if (!dc.GetTextMetrics(tm)) {
dc.SelectObject(TFont("Arial", -12));
dc.GetTextMetrics(tm);
}
int fHeight=tm.tmHeight+tm.tmExternalLeading;
unsigned long inputs=swdoc->GetSystem()->GetInputs();
XPosVector xpos;
uint divider;
char* data;
Print_CreateWidths(xpos, divider, dc);
if (xpos.back().x < rect.Size().cx) { // put space in structure to stretch across page
uint spacing=(rect.Size().cx - xpos.back().x)/(xpos.size()+1);
uint space_inc=spacing;
for(XPosVector::size_type i=0; i<xpos.size(); i++) {
if (i==inputs) { // after inputs section, increase divider
divider += space_inc;
space_inc += spacing;
}
xpos[i].x += space_inc;
space_inc += spacing;
}
}
data=new char[xpos.size()];
unsigned long PagesDown=1+pow(2,inputs)/( (drawingArea.Size().cy/fHeight) - 2); // 2 lines for header and horz divider
unsigned long PagesAcross=1+xpos.back().x/drawingArea.Size().cx;
unsigned long Pages=1+PagesDown*PagesAcross;
// Compute the number of pages to print.
//
printerData.MinPage = 1;
printerData.MaxPage = Pages;
int fromPage = printerData.FromPage == -1 ? 1 : printerData.FromPage;
int toPage = printerData.ToPage == -1 ? 1 : printerData.ToPage;
int currentPage = fromPage;
TPoint p;
dc.SelectObject(TPen(TColor::Black));
while (currentPage <= toPage) {
swdoc->PaintHeader(dc, rect, "Specification", currentPage, Pages, true);
if (currentPage==1) Print_Summary(dc, drawingArea);
else {
// Calculate origin of line by page number
// x
int col=((currentPage-2) ) % PagesAcross;
p.x=drawingArea.left - col * drawingArea.Size().cx;
// y
int row=floor((currentPage-2)/PagesAcross);
p.y=drawingArea.top/* - row * drawingArea.Size().cy*/;
// Calculate starting and ending input states
CELL_TYPE state, stateEnd;
state=(row*(drawingArea.Size().cy-fHeight))/fHeight;
stateEnd=state+(drawingArea.Size().cy-fHeight)/fHeight;
if (stateEnd >= (pow(2,inputs)-1) ) stateEnd=pow(2,inputs)-1;
//
// Draw header and lines
// Vertical
if ( ((p.x+divider) > drawingArea.left) && ((p.x+divider)<drawingArea.right) ) {
dc.MoveTo(p.x+divider, p.y);
dc.LineTo(p.x+divider, p.y+((stateEnd-state)+3)*fHeight);
}
// Labels
for(XPosVector::size_type i=0; i<xpos.size(); i++)
dc.TextOut(TPoint(xpos[i].x, p.y), xpos[i].s.c_str());
p.y += fHeight;
// Horizontal
dc.MoveTo(drawingArea.left, p.y + fHeight/2);
dc.LineTo(p.x+xpos.back().x, p.y + fHeight/2);
//.........这里部分代码省略.........
示例8: Paint
//
// Paint routine for Window, Printer, and PrintPreview for a TEdit/TListBox client.
//
void poundsMDIChild::Paint (TDC& dc, BOOL, TRect& rect)
{
poundsApp *theApp = TYPESAFE_DOWNCAST(GetApplication(), poundsApp);
if (theApp) {
// Only paint if we're printing and we have something to paint, otherwise do nothing.
if (theApp->Printing && theApp->Printer && !rect.IsEmpty()) {
// Use pageSize to get the size of the window to render into. For a Window it's the client area,
// for a printer it's the printer DC dimensions and for print preview it's the layout window.
TSize pageSize(rect.right - rect.left, rect.bottom - rect.top);
HFONT hFont = (HFONT)GetClientWindow()->GetWindowFont();
TFont font("Arial", -12);
if (hFont == 0)
dc.SelectObject(font);
else
dc.SelectObject(TFont(hFont));
TEXTMETRIC tm;
int fHeight = (dc.GetTextMetrics(tm) == TRUE) ? tm.tmHeight + tm.tmExternalLeading : 10;
// How many lines of this font can we fit on a page.
int linesPerPage = MulDiv(pageSize.cy, 1, fHeight);
if (linesPerPage) {
TPrintDialog::TData &printerData = theApp->Printer->GetSetup();
int maxPg = 1;
// Get the client class window (this is the contents we're going to print).
TEdit *clientEditWindow /* = 0*/;
TListBox *clientListWindow = 0;
TWindow *clientUnknownWindow = 0;
clientEditWindow = TYPESAFE_DOWNCAST(GetClientWindow(), TEdit);
if (clientEditWindow)
maxPg = ((clientEditWindow->GetNumLines() / linesPerPage) + 1.0);
else {
clientListWindow = TYPESAFE_DOWNCAST(GetClientWindow(), TListBox);
if (clientListWindow)
maxPg = ((clientListWindow->GetCount() / linesPerPage) + 1.0);
else
clientUnknownWindow = TYPESAFE_DOWNCAST(GetClientWindow(), TWindow);
}
// Compute the number of pages to print.
printerData.MinPage = 1;
printerData.MaxPage = maxPg;
// Do the text stuff:
int fromPage = printerData.FromPage == -1 ? 1 : printerData.FromPage;
int toPage = printerData.ToPage == -1 ? 1 : printerData.ToPage;
char buffer[255];
int currentPage = fromPage;
while (currentPage <= toPage) {
int startLine = (currentPage - 1) * linesPerPage;
int lineIdx = 0;
while (lineIdx < linesPerPage) {
// If the string is no longer valid then there's nothing more to display.
if (clientEditWindow) {
if (!clientEditWindow->GetLine(buffer, sizeof(buffer), startLine + lineIdx))
break;
}
else if (clientListWindow) {
if (clientListWindow->GetString(buffer, startLine + lineIdx) < 0)
break;
}
else if (clientUnknownWindow) {
clientUnknownWindow->Paint(dc, FALSE, rect);
break;
}
dc.TabbedTextOut(TPoint(0, lineIdx * fHeight), buffer, lstrlen(buffer), 0, NULL, 0);
lineIdx++;
}
currentPage++;
}
}
}
}
}
示例9: resizePopup
//.........这里部分代码省略.........
if (this->mapToGlobal(listRect.topLeft()).x() < screen.x() )
{
below.setX(screen.x());
above.setX(screen.x());
}
}
if (usePopup)
{
// Position horizontally.
listRect.moveLeft(above.x());
#ifndef Q_WS_S60
// Position vertically so the curently selected item lines up
// with the combo box.
const QRect currentItemRect = this->view()->visualRect(this->view()->currentIndex());
const int offset = listRect.top() - currentItemRect.top();
listRect.moveTop(above.y() + offset - listRect.top());
#endif
// Clamp the listRect height and vertical position so we don't expand outside the
// available screen geometry.This may override the vertical position, but it is more
// important to show as much as possible of the popup.
const int height = !boundToScreen ? listRect.height() : qMin(listRect.height(), screen.height());
#ifdef Q_WS_S60
//popup needs to be stretched with screen minimum dimension
listRect.setHeight(qMin(screen.height(), screen.width()));
#else
listRect.setHeight(height);
#endif
if (boundToScreen)
{
if (listRect.top() < screen.top())
{
listRect.moveTop(screen.top());
}
if (listRect.bottom() > screen.bottom())
{
listRect.moveBottom(screen.bottom());
}
}
#ifdef Q_WS_S60
if (screen.width() < screen.height())
{
// in portait, menu should be positioned above softkeys
listRect.moveBottom(screen.bottom());
}
else
{
TRect staConTopRect = TRect();
AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EStaconTop, staConTopRect);
listRect.setWidth(listRect.height());
//by default popup is centered on screen in landscape
listRect.moveCenter(screen.center());
if (staConTopRect.IsEmpty())
{
// landscape without stacon, menu should be at the right
(opt.direction == Qt::LeftToRight) ? listRect.setRight(screen.right()) :
listRect.setLeft(screen.left());
}
}
#endif
}
else if (!boundToScreen || listRect.height() <= belowHeight)
{
listRect.moveTopLeft(below);
}
else if (listRect.height() <= aboveHeight)
{
listRect.moveBottomLeft(above);
}
else if (belowHeight >= aboveHeight)
{
listRect.setHeight(belowHeight);
listRect.moveTopLeft(below);
}
else
{
listRect.setHeight(aboveHeight);
listRect.moveBottomLeft(above);
}
#if QT_VERSION < QT_VERSION_CHECK(5,0,0) && !defined QT_NO_IM
if (QInputContext *qic = this->inputContext())
{
qic->reset();
}
#endif
QScrollBar *sb = this->view()->horizontalScrollBar();
Qt::ScrollBarPolicy policy = this->view()->horizontalScrollBarPolicy();
bool needHorizontalScrollBar =
(policy == Qt::ScrollBarAsNeeded || policy == Qt::ScrollBarAlwaysOn)
&& sb->minimum() < sb->maximum();
if (needHorizontalScrollBar)
{
listRect.adjust(0, 0, 0, sb->height());
}
container->setGeometry(listRect);
}