本文整理汇总了C++中TRect::Intersects方法的典型用法代码示例。如果您正苦于以下问题:C++ TRect::Intersects方法的具体用法?C++ TRect::Intersects怎么用?C++ TRect::Intersects使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TRect
的用法示例。
在下文中一共展示了TRect::Intersects方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Redraw
void CEdgedWin::Redraw(const TRect& aRect)
{
iWsGc.Activate(*iWindow);
iWsGc.Reset();
iWsGc.SetPenStyle(iPenStyle);
iWsGc.SetBrushStyle(iBrushStyle);
TBool redraw = EFalse;
//redraw outer rectangle if in rect
if (aRect.iTl.iX < iOpaqueRect.iTl.iX ||
aRect.iTl.iY < iOpaqueRect.iTl.iY ||
aRect.iBr.iX > iOpaqueRect.iBr.iX ||
aRect.iBr.iY > iOpaqueRect.iBr.iY)
{
redraw = ETrue;
iRedrawWindow->BeginRedraw();
iWsGc.SetPenColor(iTransFgColor);
iWsGc.SetBrushColor(iTransBgColor);
iWsGc.DrawRect(TRect(TPoint(0,0), iSize));
// iRedrawWindow->EndRedraw() will be taken care of below
}
//redraw inner rectangle
if (redraw || aRect.Intersects(iOpaqueRect))
{
if (!redraw)
{
iRedrawWindow->BeginRedraw(iOpaqueRect);//iOpaqueRect);
}
iWsGc.SetPenColor(iFgColor);
iWsGc.SetBrushColor(iBgColor);
iWsGc.DrawRect(iOpaqueRect);
iRedrawWindow->EndRedraw();
}
iWsGc.Deactivate();
}
示例2: StartDirectViewFinderL
void CCameraEngine::StartDirectViewFinderL(RWsSession& aSession,
CWsScreenDevice& aScreenDevice,
RWindowBase& aWindow,
TRect& aScreenRect,
TRect& aClipRect)
{
if (iEngineState < EEngineIdle)
User::Leave(KErrNotReady);
if (0 == (iCameraInfo.iOptionsSupported & TCameraInfo::EViewFinderDirectSupported))
User::Leave(KErrNotSupported);
if (!iCamera->ViewFinderActive()) {
// Viewfinder extent needs to be clipped according to the clip rect.
// This is because the native camera framework does not support
// clipping and starting viewfinder with bigger than the display(S60
// 5.0 and older)/window(Symbian^3 and later) would cause viewfinder
// starting to fail entirely. This causes shrinking effect in some
// cases, but is better than not having the viewfinder at all.
if (aScreenRect.Intersects(aClipRect))
aScreenRect.Intersection(aClipRect);
if (iCameraIndex != 0)
iCamera->SetViewFinderMirrorL(true);
if (aScreenRect.Width() > 0 && aScreenRect.Height() > 0) {
iCamera->StartViewFinderDirectL(aSession, aScreenDevice, aWindow, aScreenRect);
} else {
if (iObserver)
iObserver->MceoHandleError(EErrViewFinderReady, KErrArgument);
}
}
}
示例3: BaseTest
void CGdiBlitMasked::BaseTest(const TRect &aRect, TInt)
{
// needs re-writing to emulate tiling of the source rect
if (!aRect.Intersects(TRect(BaseWin->Size())))
return;
TSize size(aRect.Size());
TSize bitSize=iBitmap->SizeInPixels();
if (size.iWidth>bitSize.iWidth)
size.iWidth=bitSize.iWidth;
if (size.iHeight>bitSize.iHeight)
size.iHeight=bitSize.iHeight;
//
// Set up the scratch mask as a black and white bitmap containing the mask to blit
// The mask pattern is replicated all over the scratchmask bitmap
//
iScratchMaskGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
iScratchMaskGc->SetPenStyle(CGraphicsContext::ENullPen);
iScratchMaskGc->SetBrushColor(TRgb(0,0,0));
iScratchMaskGc->DrawRect(TRect(iScratchMask->SizeInPixels()));
iScratchMaskGc->SetPenColor(TRgb(255,255,255));
iScratchMaskGc->SetPenStyle(CGraphicsContext::ESolidPen);
TSize maskSize(iCurrMask->SizeInPixels());
TPoint pos;
TRgb *rgbBuf=(TRgb *)User::AllocL(maskSize.iWidth*sizeof(TRgb)); //Doesn't do any harm if it leaves
for(pos.iY=0;pos.iY<maskSize.iHeight;pos.iY++)
{
TPtr8 ptr((TUint8 *)rgbBuf,maskSize.iWidth*sizeof(TRgb));
iCurrMask->GetScanLine(ptr, pos, maskSize.iWidth, ERgb);
for(TInt index=0;index<maskSize.iWidth;index++)
{
iScratchMaskGc->SetPenColor(rgbBuf[index]);
// if ((isLow && !iLowCutOff) || (!isLow && iLowCutOff))
iScratchMaskGc->Plot(TPoint(index,pos.iY));
}
}
User::Free(rgbBuf);
for(pos.iY=0;pos.iY<size.iHeight;pos.iY+=maskSize.iHeight)
for(pos.iX=0;pos.iX<size.iWidth;pos.iX+=maskSize.iWidth)
iScratchMaskGc->CopyRect(pos, TRect(maskSize));
//
// Blit this to the screen in ANDNOT mode to clear all the pixels we want the mask blit to draw to
//
iGdi->SetDrawMode(CGraphicsContext::EDrawModeANDNOT);
iGdi->BitBlt(aRect.iTl, iScratchMask, TRect(size));
//
// Copy the test bitmap to the scratch bitmap then use the scratch mask to clear all the bits
// that should masked out of the draw to the screen
//
iScratchGc->SetDrawMode(CGraphicsContext::EDrawModePEN);
iScratchGc->BitBlt(TPoint(0,0), iBitmap);
iScratchGc->SetDrawMode(CGraphicsContext::EDrawModeAND);
iScratchGc->BitBlt(TPoint(0,0), iScratchMask);
//
// Now copy the scratch bitmap to the screen in OR mode to get the final result
//
iGdi->SetDrawMode(CGraphicsContext::EDrawModeOR);
iGdi->BitBlt(aRect.iTl, iScratch, TRect(size));
}
示例4: Draw
void CImage::Draw(const TRect& aRect) const
{
// Draw the parent control
//CEikBorderedControl::Draw(aRect);
// Get the standard graphics context
CWindowGc& gc = SystemGc();
// Gets the control's extent - Don't encroach on the border
TRect rect = Rect();//Border().InnerRect(Rect());
// set the clipping region
gc.SetClippingRect(rect);
if(iMask == NULL && iBitmap != NULL && rect.Intersects(aRect)){
gc.BitBlt(rect.iTl, iBitmap);
} else if(iMask != NULL && iBitmap != NULL && rect.Intersects(aRect)){
TRect pictRect(TPoint(0,0), iBitmap->SizeInPixels());
gc.BitBltMasked(rect.iTl, iBitmap, pictRect, iMask, EFalse);
}
}
示例5: SetVisibleAreaL
// ---------------------------------------------------------------------------
// Sets visible area.
// ---------------------------------------------------------------------------
//
void CAlfSrvDisplaySubSession::SetVisibleAreaL( const RMessage2& aMessage, TBool aForce )
{
// Parse parameters
// 1: area rect (in)
TRect rect;
TPckg<TRect> rectPckg(rect);
aMessage.Read(1,rectPckg);
CAlfAppSrvSession& session = static_cast<CAlfAppSrvSession&>(Session());
// Set clipping rect for display visible area to e.g. avoid unnecesssary
// drawing under Avkon status/control pane areas. TV out does not show
// those so no clipping in that case.
if (UseVisualAreaClipping())
{
iRect = rect;
if ( session.IsFocused() )
{
TRect clipped = Session().AlfAppUi()->Container()->Rect();
#ifndef SYMBIAN_BUILD_GCE
if (clipped.Intersects(rect))
{
clipped.Intersection(rect);
}
#endif
iDisplay->SetVisibleAreaClippingRect(clipped);
iDisplay->SetDirty();
}
}
// Set visible area
if ( session.IsFocused() || aForce )
{
static_cast<CAlfAppSrvSession&>(Session()).SetClientDrawingArea( rect );
}
// Complete
aMessage.Complete( KErrNone );
}
示例6: IsValidDestination
// ---------------------------------------------------------------------------
// CFepUiLayoutRootCtrl::IsValidDestination
// Test whether the rect conflicts with other controls
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
TBool CFepUiLayoutRootCtrl::IsValidDestination(const TRect& aRect,
CDragBar* aDragBar,
TBool& aVInfo,
TBool& aHInfo)
{
aVInfo = EFalse;
aHInfo = EFalse;
if(!Rect().Contains(aRect.iTl) || !Rect().Contains(aRect.iBr)) //outside of the ui layout
return EFalse;
CFepUiBaseCtrl* ctrl;
for(TInt i = iCtrlList.Count()-1; i >= 0;i--)
{
ctrl = iCtrlList[i];
TBool bIsDragingComponent = EFalse;
if(aDragBar)
{
if(aDragBar->IsDraggingComponent(ctrl))
bIsDragingComponent = ETrue;
}
if(!bIsDragingComponent && aRect.Intersects(ctrl->Rect())) //conflicts with others
{
//is the control one of the dragbar component.
if(!ctrl->AllowOverlap())
{
//if the control not allow overlapping, then it's invalid pos
return EFalse;
}
}
}
return ETrue;
}
示例7: ConstructL
// ---------------------------------------------------------------------------
// 2nd phasse constructor
// ---------------------------------------------------------------------------
//
void CAlfSrvDisplaySubSession::ConstructL()
{
CAlfSrvSubSessionBase::ConstructL();
// With one display, use the existing one or create one if there aren't any.
const TRect& rect = CHuiStatic::ScreenDevice()->SizeInPixels();
// when running oldstyle, we may have rect different from whole screen
if (Session().AlfAppUi()->Container())
{
const TRect& rect = Session().AlfAppUi()->Container()->Rect();
}
// Shared normal screen 0
if ((iDisplayType == CHuiDisplay::EDisplayLcd0) ||
((iDisplayType == CHuiDisplay::EDisplayNormal) && (iScreenBufferUid == KHuiUidBackBufferScreen0)))
{
iDisplay =
Session().SharedHuiEnv()->DisplayCount() ?
&Session().SharedHuiEnv()->PrimaryDisplay() :
&Session().SharedHuiEnv()->NewDisplayL( rect, Session().AlfAppUi()->Container(), 0,
NULL, CHuiDisplay::EDisplayNormal, iScreenBufferUid );
Session().AlfAppUi()->AppendDisplayOnSharedWindowL(*iDisplay);
#ifdef TFXSERVER_API_V2
// Register to Tfx Server
MTransitionServer2* tfxServer = Session().AlfServer()->TfxServer();
if (tfxServer)
{
// Note: if this returns KErrNotFound, it is also send to Tfx server
TInt wgId = Session().ClientWindowGroup();
// Just ignore returned error code. Can this cause trouble?
tfxServer->RegisterApp(MTransitionServer2::ETypeAlf, wgId, KNullUid, KNullUid);
}
#endif
}
// Off screen buffer
else if (iDisplayType == CHuiDisplay::EDisplayOffScreenBuffer)
{
iDisplay = &Session().SharedHuiEnv()->NewDisplayL( rect, Session().AlfAppUi()->Container(), 0, NULL, iDisplayType, iScreenBufferUid );
TRect clipped = rect;
if (clipped.Intersects(iRect))
{
clipped.Intersection(iRect);
}
iDisplay->SetVisibleArea(clipped);
}
// Shared TV-out display
else if (IsTvOut())
{
if (Session().SharedHuiEnv()->DisplayCount() == 0)
{
// Primary lcd must exist before tv out is created
User::Leave(KErrNotFound);
}
else
{
iDisplay = &Session().SharedHuiEnv()->NewDisplayL( iRect,
Session().AlfAppUi()->Container(),
0,
&Session().SharedHuiEnv()->PrimaryDisplay(),
CHuiDisplay::EDisplayNormal,
KHuiUidBackBufferTvOutNormal
);
}
}
else
{
User::Leave(KErrNotFound);
}
// If we have screen buffer observers for the new display, add Alf server as an observer
TAlfScreenBufferEvent event = {iScreenBufferUid, MHuiScreenBufferObserver::ECreated, TRect(), TRect()};
if (Session().AlfServer()->ScreenBufferManager().TriggerScreenBufferEvent(event))
{
iDisplay->AddScreenBufferObserverL(&Session().AlfServer()->ScreenBufferManager());
}
}
示例8: SetSessionFocused
void CAlfSrvDisplaySubSession::SetSessionFocused(TBool aFocused)
{
if ( iDisplay )
{
if (aFocused)
{
// Set clipping rect for display visible area to e.g. avoid unnecesssary
// drawing under Avkon status/control pane areas. TV out does not show
// those so no clipping in that case.
if (UseVisualAreaClipping())
{
TRect clipped = Session().AlfAppUi()->Container()->Rect();
if (clipped.Intersects(iRect))
{
clipped.Intersection(iRect);
}
iDisplay->SetVisibleAreaClippingRect(clipped);
iDisplay->SetDirty();
}
// If background items are used
if (iBackgroundItems.Count() != 0)
{
TRAP_IGNORE(iDisplay->SetBackgroundItemsL(iBackgroundItems))
}
else
{
TRAP_IGNORE(iDisplay->SetClearBackgroundL(
CHuiDisplay::TClearMode(iDisplayClearBackground)))
}
if ( KAlfSrvClientQualitySupport )
{
iDisplay->SetQuality(THuiQuality(iDisplayRenderingQuality));
}
iDisplay->SetUseDepth(iDisplayUseDepthTest);
UpdateAutomaticFading(); // update non-fading to app ui container
}
else
{
// Disable clipping rect
if (UseVisualAreaClipping())
{
iDisplay->SetVisibleAreaClippingRect(TRect(0,0,0,0));
iDisplay->SetDirty();
}
}
if (IsTvOut())
{
if (aFocused)
{
TRAP_IGNORE(
{
iDisplay->RestoreL();
Session().AlfAppUi()->AppendTvDisplayOnSharedWindowL(*iDisplay);
})
}
else
{
Session().AlfAppUi()->RemoveTvDisplayOnSharedWindow(*iDisplay);
iDisplay->Release();
}
}