// from MMMADisplay void CMMADisplay::SetVisible(TBool aValue) { iVisible = aValue; // Window may be set visible only if container is on screen, LOG1(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible); LOG1(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible iVisible = %d", iVisible); if (!iIsForeground) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible - iIsForeground = 0"); return; } // if not it can not be set visible. if (iWindow && iContainerVisible) { // iWindow->SetVisible(aValue, EFalse); //MMAPI UI 3.x req. (had to comment above line and add below line which excutes in FS thread) if (iIseSWT == true) { iWindow->SetVisible(aValue, ETrue); } else { iWindow->SetVisible(aValue, EFalse); } LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible after iWindow->SetVisible()"); SetClippingRegion(); LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible -"); } }
void CMMADisplay::HandleContainerVisibilityChanged(TBool aVisible) { LOG1(EJavaMMAPI,EInfo, "CMMADisplay::HandleContainerVisibilityChanged aVisible = %d", aVisible); if (!iIsForeground && aVisible) { LOG(EJavaMMAPI,EInfo," CMMADisplay::HandleContainerVisibilityChanged Condition 1 "); return; } LOG(EJavaMMAPI,EInfo," CMMADisplay::HandleContainerVisibilityChanged After condition1"); if (iWindow) { // midlet comes to foreground (0 to 1 transition), // Allow turn on or turn off based on aVisible if (aVisible != iWindow->IsVisible()) { // Allow LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged Allow "); } else if (iContainerVisible == aVisible) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged iContainerVisible == aVisible "); // if state is not changed, we do not need to do it again return; } } LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged After condition2"); if (iWindow) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged iWindow is valid "); // change is only needed if java side has set display visible or // if container loses focus if (!iContainerVisible || iVisible) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged container is invisible and window is visible"); if (iResetDrawRect && aVisible && !iFullScreen) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged resetdrawrect is true"); iWindow->SetDrawRectThread(iUserRect); iResetDrawRect = EFalse; } if (iIsForeground) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged container foreground is true"); iWindow->SetVisible(aVisible,false); } SetClippingRegion(); } } }
void CMMADisplay::SourceSizeChanged(const TSize& aSourceSize) { LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged"); #ifdef RD_JAVA_NGA_ENABLED if (iWindow) { iWindow->SetVideoCropRegion(TRect(iUserRect.iTl, aSourceSize)); } #endif iSourceSize = aSourceSize; LOG1(EJavaMMAPI,EInfo,"MMA::CMMADisplay::SourceSizeChanged %d", aSourceSize.iWidth); LOG1(EJavaMMAPI,EInfo,"MMA::CMMADisplay::SourceSizeChanged %d", aSourceSize.iHeight); jmethodID getDisplayWidthID = iJni->GetMethodID( iJavaDisplayClass, "getDisplayWidth", "()I"); jmethodID getDisplayHeightID = iJni->GetMethodID( iJavaDisplayClass, "getDisplayHeight", "()I"); TInt x = iJni->CallIntMethod(iJavaDisplayObject,getDisplayWidthID); TInt y = iJni->CallIntMethod(iJavaDisplayObject,getDisplayHeightID); LOG2(EJavaMMAPI,EInfo,"CMMADisplay.cpp : SourceSizeChanged () iFullScreenSize is x = %d ,y = %d ",x,y); // get the ScreenSize from canvas in java TSize canvasSize(x, y); iFullScreenSize = canvasSize; TBool sourceIsBigger = (aSourceSize.iWidth > iFullScreenSize.iWidth || aSourceSize.iHeight > iFullScreenSize.iHeight); if (sourceIsBigger) { // Source is larger than display area. // Shrink draw are to fit in display. iWindow->SetDrawRect(ScaleToFullScreen(iFullScreenSize, iSourceSize)); } else { // source is smaller than display area iWindow->SetDrawRect(TRect(iUserRect.iTl, iSourceSize)); } SetClippingRegion(); if (iUserRect.IsEmpty()) { // Java side hasn't set size. iUserRect = iWindow->DrawRect(); if (!sourceIsBigger) { // Addjusting rect to top left corner. iUserRect = TRect(iUserRect.Size()); } } }
void wxDC::DoSetClippingRegionAsRegion(const wxRegion& region) { // NB: this can be done because wxDFB only supports rectangular regions SetClippingRegion(region.AsRect()); }