54 { |
54 { |
55 } |
55 } |
56 |
56 |
57 void CMMADisplay::Construct(MMAFunctionServer* eventSource , jobject javadisplayref) |
57 void CMMADisplay::Construct(MMAFunctionServer* eventSource , jobject javadisplayref) |
58 { |
58 { |
59 iEventSource = eventSource; |
59 iEventSource = eventSource; |
60 iJni = iEventSource->getValidJniEnv(); |
60 iJni = iEventSource->getValidJniEnv(); |
61 iJavaDisplayObject = iJni->NewGlobalRef(javadisplayref); |
61 iJavaDisplayObject = iJni->NewGlobalRef(javadisplayref); |
62 iJavaDisplayClass = iJni->GetObjectClass(iJavaDisplayObject); |
62 iJavaDisplayClass = iJni->GetObjectClass(iJavaDisplayObject); |
63 // Components must have direct content. |
63 // Components must have direct content. |
64 /* __ASSERT_LOG(EJavaMMAPI,EInfo,"aDirectContainer, User::Invariant()); |
64 /* __ASSERT_LOG(EJavaMMAPI,EInfo,"aDirectContainer, User::Invariant()); |
65 |
65 |
66 // Not owned |
66 // Not owned |
67 iDirectContainer = aDirectContainer; |
67 iDirectContainer = aDirectContainer; |
68 |
68 |
69 // Get component visibility. Later visibility changes will |
69 // Get component visibility. Later visibility changes will |
70 // be informed through MDirectContent observer. |
70 // be informed through MDirectContent observer. |
71 iContainerVisible = iDirectContainer->MdcContainerVisibility(); |
71 iContainerVisible = iDirectContainer->MdcContainerVisibility(); |
72 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct iContainerVisible = %d", iContainerVisible); |
72 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct iContainerVisible = %d", iContainerVisible); |
73 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct iVisible = %d", iVisible); |
73 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct iVisible = %d", iVisible); |
74 |
74 |
75 // Add this MDirectContent to the MDirectContainer. Cannot fail. |
75 // Add this MDirectContent to the MDirectContainer. Cannot fail. |
76 iDirectContainer->MdcAddContent(this); |
76 iDirectContainer->MdcAddContent(this); |
77 */ |
77 */ |
78 } |
78 } |
79 |
79 |
80 TRect CMMADisplay::ScaleToFullScreen(const TSize& aFullScreenSize, |
80 TRect CMMADisplay::ScaleToFullScreen(const TSize& aFullScreenSize, |
81 const TSize& aSourceSize) |
81 const TSize& aSourceSize) |
82 { |
82 { |
83 LOG(EJavaMMAPI,EInfo,"CMMADisplay::ScaleToFullScreen() +"); |
83 LOG(EJavaMMAPI,EInfo,"CMMADisplay::ScaleToFullScreen() +"); |
84 if ((aSourceSize.iWidth == 0) && |
84 if ((aSourceSize.iWidth == 0) && |
85 (aSourceSize.iHeight == 0)) |
85 (aSourceSize.iHeight == 0)) |
86 { |
86 { |
87 // Avoid divide by zero. |
87 // Avoid divide by zero. |
88 return TRect(); |
88 return TRect(); |
145 |
145 |
146 if (!iWindow || |
146 if (!iWindow || |
147 (iWindow->GetDisplayWindowType() == MMMADisplayWindow::EDisplayWindowTypeIsBitmap) || |
147 (iWindow->GetDisplayWindowType() == MMMADisplayWindow::EDisplayWindowTypeIsBitmap) || |
148 iClipRect == iWindow->DrawRect() && iContainerVisible && iVisible) |
148 iClipRect == iWindow->DrawRect() && iContainerVisible && iVisible) |
149 { |
149 { |
150 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion before return"); |
150 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion before return"); |
151 return; |
151 return; |
152 } |
152 } |
153 |
153 |
154 TBool refreshScreen(EFalse); |
154 TBool refreshScreen(EFalse); |
155 // Remove first the current clip rect if set |
155 // Remove first the current clip rect if set |
156 LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: iClipRect = %d X %d",iClipRect.Width(),iClipRect.Height()); |
156 LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: iClipRect = %d X %d",iClipRect.Width(),iClipRect.Height()); |
157 if (!iClipRect.IsEmpty()) |
157 if (!iClipRect.IsEmpty()) |
158 { |
158 { |
159 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: Removing old rect"); |
159 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: Removing old rect"); |
160 //iDirectContainer->MdcRemoveContentBounds(iClipRect); |
160 //iDirectContainer->MdcRemoveContentBounds(iClipRect); |
161 iClipRect.SetRect(0, 0, 0, 0); |
161 iClipRect.SetRect(0, 0, 0, 0); |
162 refreshScreen = ETrue; |
162 refreshScreen = ETrue; |
163 } |
163 } |
164 // If visible then set a new clip rect |
164 // If visible then set a new clip rect |
165 if (iVisible && iContainerVisible) |
165 if (iVisible && iContainerVisible) |
166 { |
166 { |
167 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: inside if (iVisible && iContainerVisible)"); |
167 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: inside if (iVisible && iContainerVisible)"); |
168 iClipRect = iWindow->DrawRect(); |
168 iClipRect = iWindow->DrawRect(); |
169 LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: inside if (iVisible && iContainerVisible)iClipRect = %d X %d",iClipRect.Width(),iClipRect.Height()); |
169 LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: inside if (iVisible && iContainerVisible)iClipRect = %d X %d",iClipRect.Width(),iClipRect.Height()); |
170 if (!iClipRect.IsEmpty()) |
170 if (!iClipRect.IsEmpty()) |
171 { |
171 { |
172 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: Adding new rect"); |
172 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: Adding new rect"); |
173 // Add new clipping rect |
173 // Add new clipping rect |
174 // iDirectContainer->MdcAddContentBounds(iClipRect); |
174 // iDirectContainer->MdcAddContentBounds(iClipRect); |
175 SetContentBoundToJavaControl(iClipRect); |
175 SetContentBoundToJavaControl(iClipRect); |
176 refreshScreen = ETrue; |
176 refreshScreen = ETrue; |
177 } |
177 } |
178 } |
178 } |
179 if (refreshScreen) |
179 if (refreshScreen) |
180 { |
180 { |
181 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: inside if(refreshScreen)"); |
181 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: inside if(refreshScreen)"); |
182 // refresh screen |
182 // refresh screen |
183 // iDirectContainer->MdcFlushContainer(iWindow->WindowRect()); |
183 // iDirectContainer->MdcFlushContainer(iWindow->WindowRect()); |
184 RefreshJavaControl(iWindow->WindowRect()); |
184 RefreshJavaControl(); |
185 } |
185 } |
186 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion -"); |
186 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion -"); |
187 } |
187 } |
188 |
188 |
189 void CMMADisplay::RemoveClippingRegion() |
189 void CMMADisplay::RemoveClippingRegion() |
255 |
255 |
256 // from MMMADisplay |
256 // from MMMADisplay |
257 void CMMADisplay::SetDisplaySizeL(const TSize& aSize) |
257 void CMMADisplay::SetDisplaySizeL(const TSize& aSize) |
258 { |
258 { |
259 // user rect contains size set from java. |
259 // user rect contains size set from java. |
260 iUserRect.SetSize(aSize); |
260 iUserRect.SetSize(aSize); |
261 LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect = %d X %d", iUserRect.Width() ,iUserRect.Height()); |
261 LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect = %d X %d", iUserRect.Width() ,iUserRect.Height()); |
262 // Size change has no effect if fullscreen mode is on. |
262 // Size change has no effect if fullscreen mode is on. |
263 // New size could be used when fullscreen is turned off. |
263 // New size could be used when fullscreen is turned off. |
264 if (iContainerVisible && !iFullScreen && iWindow) |
264 if (iContainerVisible && !iFullScreen && iWindow) |
265 { |
265 { |
266 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible); |
266 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible); |
267 RemoveClippingRegion(); |
267 RemoveClippingRegion(); |
268 LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect after removingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height()); |
268 LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect after removingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height()); |
269 iWindow->SetDrawRect(iUserRect); |
269 iWindow->SetDrawRect(iUserRect); |
270 AddClippingRegion(); |
270 AddClippingRegion(); |
271 LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect after AddingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height()); |
271 LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect after AddingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height()); |
272 } |
272 } |
273 else |
273 else |
274 { |
274 { |
275 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible); |
275 LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible); |
276 iResetDrawRect = ETrue; |
276 iResetDrawRect = ETrue; |
277 } |
277 } |
278 } |
278 } |
279 |
279 |
280 // from MMMADisplay |
280 // from MMMADisplay |
465 */ |
466 */ |
466 |
467 |
467 |
468 |
468 void CMMADisplay::GetCallbackInUiThread(TInt placeholder) |
469 void CMMADisplay::GetCallbackInUiThread(TInt placeholder) |
469 { |
470 { |
470 LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread +"); |
471 LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread +"); |
471 |
472 |
472 |
473 |
473 |
474 |
474 |
475 |
475 |
476 |
476 |
477 |
477 |
478 |
478 |
479 |
479 jmethodID getCallBackMethodID = iJni->GetMethodID( |
480 jmethodID getCallBackMethodID = iJni->GetMethodID( |
480 iJavaDisplayClass, |
481 iJavaDisplayClass, |
481 "GetCallbackInUiThread", |
482 "GetCallbackInUiThread", |
482 "(I)V"); |
483 "(I)V"); |
483 // LOG1(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread getCallBackMethodID = %d",getCallBackMethodID); |
484 // LOG1(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread getCallBackMethodID = %d",getCallBackMethodID); |
484 iJni->CallVoidMethod(iJavaDisplayObject,getCallBackMethodID,placeholder); |
485 iJni->CallVoidMethod(iJavaDisplayObject,getCallBackMethodID,placeholder); |
485 LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread -"); |
486 LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread -"); |
486 } |
487 } |
487 |
488 |
488 void CMMADisplay::CalledBackInUiThread(TInt placeholder) |
489 void CMMADisplay::CalledBackInUiThread(TInt placeholder) |
489 { |
490 { |
490 LOG(EJavaMMAPI,EInfo,"CMMADisplay::CalledBackInUiThread +"); |
491 LOG(EJavaMMAPI,EInfo,"CMMADisplay::CalledBackInUiThread +"); |
491 iWindow->UICallback(placeholder); |
492 iWindow->UICallback(placeholder); |
492 LOG(EJavaMMAPI,EInfo,"CMMADisplay::CalledBackInUiThread -"); |
493 LOG(EJavaMMAPI,EInfo,"CMMADisplay::CalledBackInUiThread -"); |
493 |
494 |
494 } |
495 } |
495 |
496 |
496 void CMMADisplay::SourceSizeChanged(TInt aJavaControlWidth, TInt aJavaControlHeight) |
497 |
497 { |
498 |
498 LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged(aSourceSize,aJavaControlWidth,aJavaControlHeight) + aJavaControlWidth = %d ,aJavaControlHeight = %d",aJavaControlWidth,aJavaControlHeight); |
499 void CMMADisplay::SetWindowResources(QWidget* qtWidget) |
499 iSourceSize = SourceSize(); |
500 { |
500 LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged(aSourceSize,aJavaControlWidth,aJavaControlHeight) + sourcesize = %d X %d",iSourceSize.iWidth , iSourceSize.iHeight); |
501 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources +"); |
501 #ifdef RD_JAVA_NGA_ENABLED |
502 CCoeControl* control = 0; |
502 if ( iWindow ) |
503 if (qtWidget && qtWidget ->winId()) |
503 { |
504 { |
504 iWindow->SetVideoCropRegion( TRect( iUserRect.iTl, iSourceSize ) ); |
505 control = reinterpret_cast<CCoeControl*>(qtWidget->winId()); |
505 } |
506 } |
506 #endif |
507 |
507 |
508 CCoeEnv *coeEnv = control->ControlEnv(); |
508 // size of canvas in java |
509 RWsSession * iWs = &(coeEnv->WsSession()); |
509 TSize canvasSize(aJavaControlWidth, aJavaControlHeight); |
510 CWsScreenDevice* iScreenDevice = coeEnv->ScreenDevice(); |
510 fullScreenSize = canvasSize; |
511 RWindowBase* window = static_cast<RWindowBase*>(control->DrawableWindow()); |
511 TBool sourceIsBigger = (iSourceSize.iWidth > fullScreenSize.iWidth || |
512 if (!iWindow) |
512 iSourceSize.iHeight > fullScreenSize.iHeight); |
513 { |
|
514 return; |
|
515 } |
|
516 iWindow->ProcureWindowResourcesFromQWidget(iWs,iScreenDevice,window); |
|
517 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources -"); |
|
518 } |
|
519 |
|
520 |
|
521 void CMMADisplay::SetForeground(TBool aForeground, TBool aUseEventServer) |
|
522 { |
|
523 LOG1(EJavaMMAPI,EInfo,"MMA::CMMADisplay::SetForeground %d", aForeground); |
|
524 iIsForeground = aForeground; |
|
525 |
|
526 if (aForeground) |
|
527 { |
|
528 if (iContainerVisible && !iWindow->IsVisible()) |
|
529 { |
|
530 iWindow->SetVisible(ETrue, aUseEventServer); |
|
531 } |
|
532 } |
|
533 else |
|
534 { |
|
535 if (iWindow->IsVisible()) |
|
536 { |
|
537 iWindow->SetVisible(EFalse, aUseEventServer); |
|
538 } |
|
539 } |
|
540 } |
|
541 |
|
542 TSize CMMADisplay::SourceSize() |
|
543 { |
|
544 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetSourceSizeToDisplay "); |
|
545 return iUiPlayer->SourceSize(); |
|
546 } |
|
547 |
|
548 void CMMADisplay::SetUIPlayer(MMMAGuiPlayer* player) |
|
549 { |
|
550 iUiPlayer = player; |
|
551 } |
|
552 |
|
553 |
|
554 void CMMADisplay::SourceSizeChanged(const TSize& aSourceSize) |
|
555 { |
|
556 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged"); |
|
557 |
|
558 #ifdef RD_JAVA_NGA_ENABLED |
|
559 if (iWindow) |
|
560 { |
|
561 iWindow->SetVideoCropRegion(TRect(iUserRect.iTl, aSourceSize)); |
|
562 } |
|
563 #endif |
|
564 |
|
565 iSourceSize = aSourceSize; |
|
566 LOG1(EJavaMMAPI,EInfo,"MMA::CMMADisplay::SourceSizeChanged %d", |
|
567 aSourceSize.iWidth); |
|
568 LOG1(EJavaMMAPI,EInfo,"MMA::CMMADisplay::SourceSizeChanged %d", |
|
569 aSourceSize.iHeight); |
|
570 jmethodID getDisplayWidthID = iJni->GetMethodID( |
|
571 iJavaDisplayClass, |
|
572 "getDisplayWidth", |
|
573 "()I"); |
|
574 |
|
575 jmethodID getDisplayHeightID = iJni->GetMethodID( |
|
576 iJavaDisplayClass, |
|
577 "getDisplayHeight", |
|
578 "()I"); |
|
579 |
|
580 |
|
581 TInt x = iJni->CallIntMethod(iJavaDisplayObject,getDisplayWidthID); |
|
582 TInt y = iJni->CallIntMethod(iJavaDisplayObject,getDisplayHeightID); |
|
583 LOG2(EJavaMMAPI,EInfo,"CMMADisplay.cpp : SourceSizeChanged () iFullScreenSize is x = %d ,y = %d ",x,y); |
|
584 // get the ScreenSize from canvas in java |
|
585 TSize canvasSize(x, y); |
|
586 iFullScreenSize = canvasSize; |
|
587 TBool sourceIsBigger = (aSourceSize.iWidth > iFullScreenSize.iWidth || |
|
588 aSourceSize.iHeight > iFullScreenSize.iHeight); |
513 |
589 |
514 if (sourceIsBigger) |
590 if (sourceIsBigger) |
515 { |
591 { |
516 // Source is larger than display area. |
592 // Source is larger than display area. |
517 // Shrink draw are to fit in display. |
593 // Shrink draw are to fit in display. |
518 iWindow->SetDrawRect(ScaleToFullScreen(fullScreenSize, iSourceSize)); |
594 iWindow->SetDrawRect(ScaleToFullScreen(iFullScreenSize, iSourceSize)); |
519 } |
595 } |
520 else |
596 else |
521 { |
597 { |
522 // source is smaller than display area |
598 // source is smaller than display area |
523 iWindow->SetDrawRect(TRect(iUserRect.iTl, iSourceSize)); |
599 iWindow->SetDrawRect(TRect(iUserRect.iTl, iSourceSize)); |
534 { |
610 { |
535 // Addjusting rect to top left corner. |
611 // Addjusting rect to top left corner. |
536 iUserRect = TRect(iUserRect.Size()); |
612 iUserRect = TRect(iUserRect.Size()); |
537 } |
613 } |
538 } |
614 } |
539 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged(aSourceSize,aJavaControlWidth,aJavaControlHeight) -"); |
615 } |
540 } |
616 |
541 |
617 |
542 void CMMADisplay::SetWindowResources(QWidget* qtWidget) |
618 |
543 { |
619 void CMMADisplay::SetDisplayPosition(TInt /*uiControlLocationX*/,TInt /*uiControlLocationY*/,TInt videoControlLocationX,TInt videoControlLocationY) |
544 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources +"); |
620 { |
545 CCoeControl* control = 0; |
621 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged + "); |
546 if(qtWidget && qtWidget ->winId()) |
622 TPoint point(videoControlLocationX ,videoControlLocationY); |
547 { |
623 //calling derived class fuction |
548 control = reinterpret_cast<CCoeControl*>(qtWidget->winId()); |
624 TRAP_IGNORE(SetDisplayLocationL(point)); |
549 } |
625 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged - "); |
550 |
|
551 CCoeEnv *coeEnv = control->ControlEnv(); |
|
552 RWsSession * iWs = &(coeEnv->WsSession()); |
|
553 CWsScreenDevice* iScreenDevice = coeEnv->ScreenDevice(); |
|
554 RWindowBase* window = static_cast<RWindowBase*>(control->DrawableWindow()); |
|
555 if (!iWindow) |
|
556 { |
|
557 return; |
|
558 } |
|
559 iWindow->ProcureWindowResourcesFromQWidget(iWs,iScreenDevice,window); |
|
560 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources -"); |
|
561 } |
|
562 |
|
563 |
|
564 void CMMADisplay::SetForeground(TBool aForeground, TBool aUseEventServer) |
|
565 { |
|
566 LOG1(EJavaMMAPI,EInfo,"MMA::CMMADisplay::SetForeground %d", aForeground); |
|
567 iIsForeground = aForeground; |
|
568 |
|
569 if (aForeground) |
|
570 { |
|
571 if (iContainerVisible && !iWindow->IsVisible()) |
|
572 { |
|
573 iWindow->SetVisible(ETrue, aUseEventServer); |
|
574 } |
|
575 } |
|
576 else |
|
577 { |
|
578 if (iWindow->IsVisible()) |
|
579 { |
|
580 iWindow->SetVisible(EFalse, aUseEventServer); |
|
581 } |
|
582 } |
|
583 } |
|
584 |
|
585 TSize CMMADisplay::SourceSize() |
|
586 { |
|
587 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetSourceSizeToDisplay "); |
|
588 return iUiPlayer->SourceSize(); |
|
589 } |
|
590 |
|
591 void CMMADisplay::SetUIPlayer(MMMAGuiPlayer* player) |
|
592 { |
|
593 iUiPlayer = player; |
|
594 } |
|
595 |
|
596 |
|
597 void CMMADisplay::SourceSizeChanged(const TSize& aSourceSize) |
|
598 { |
|
599 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged"); |
|
600 |
|
601 #ifdef RD_JAVA_NGA_ENABLED |
|
602 if ( iWindow ) |
|
603 { |
|
604 iWindow->SetVideoCropRegion( TRect( iUserRect.iTl, aSourceSize ) ); |
|
605 } |
|
606 #endif |
|
607 |
|
608 iSourceSize = aSourceSize; |
|
609 jmethodID getDisplayWidthID = iJni->GetMethodID( |
|
610 iJavaDisplayClass, |
|
611 "getDisplayWidth", |
|
612 "()I"); |
|
613 |
|
614 jmethodID getDisplayHeightID = iJni->GetMethodID( |
|
615 iJavaDisplayClass, |
|
616 "getDisplayHeight", |
|
617 "()I"); |
|
618 |
|
619 |
|
620 TInt x = iJni->CallIntMethod(iJavaDisplayObject,getDisplayWidthID); |
|
621 TInt y = iJni->CallIntMethod(iJavaDisplayObject,getDisplayHeightID); |
|
622 LOG2(EJavaMMAPI,EInfo,"CMMADisplay.cpp : SourceSizeChanged () fullScreenSize is x = %d ,y = %d ",x,y); |
|
623 // get the ScreenSize from canvas in java |
|
624 TSize canvasSize(x, y); |
|
625 fullScreenSize = canvasSize; |
|
626 TBool sourceIsBigger = (aSourceSize.iWidth > fullScreenSize.iWidth || |
|
627 aSourceSize.iHeight > fullScreenSize.iHeight); |
|
628 |
|
629 if (sourceIsBigger) |
|
630 { |
|
631 // Source is larger than display area. |
|
632 // Shrink draw are to fit in display. |
|
633 iWindow->SetDrawRect(ScaleToFullScreen(fullScreenSize, iSourceSize)); |
|
634 } |
|
635 else |
|
636 { |
|
637 // source is smaller than display area |
|
638 iWindow->SetDrawRect(TRect(iUserRect.iTl, iSourceSize)); |
|
639 } |
|
640 |
|
641 SetClippingRegion(); |
|
642 |
|
643 if (iUserRect.IsEmpty()) |
|
644 { |
|
645 // Java side hasn't set size. |
|
646 iUserRect = iWindow->DrawRect(); |
|
647 |
|
648 if (!sourceIsBigger) |
|
649 { |
|
650 // Addjusting rect to top left corner. |
|
651 iUserRect = TRect(iUserRect.Size()); |
|
652 } |
|
653 } |
|
654 } |
|
655 |
|
656 |
|
657 |
|
658 void CMMADisplay::SetDisplayPosition(TInt uiControlLocationX,TInt uiControlLocationY,TInt videoControlLocationX,TInt videoControlLocationY) |
|
659 { |
|
660 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged + "); |
|
661 TPoint point(videoControlLocationX ,videoControlLocationY); |
|
662 //calling derived class fuction |
|
663 SetDisplayLocationL(point); |
|
664 LOG(EJavaMMAPI,EInfo,"CMMADisplay::SourceSizeChanged - "); |
|
665 } |
626 } |
666 |
627 |
667 |
628 |
668 void CMMADisplay::ResetJavaRectObject(const TRect& aRect) |
629 void CMMADisplay::ResetJavaRectObject(const TRect& aRect) |
669 { |
630 { |
670 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject +"); |
631 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject +"); |
671 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
632 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
672 jmethodID setRectID = validJni->GetMethodID( |
633 jmethodID setRectID = validJni->GetMethodID( |
673 iJavaDisplayClass, |
634 iJavaDisplayClass, |
674 "setRect", |
635 "setRect", |
675 "()V"); |
636 "()V"); |
676 |
637 |
677 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --1"); |
638 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --1"); |
678 // set the value to java,so that we can access those from array |
639 // set the value to java,so that we can access those from array |
679 jfieldID field = validJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I"); |
640 jfieldID field = validJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I"); |
680 if(field == NULL) |
641 if (field == NULL) |
681 { |
642 { |
682 // handle error |
643 // handle error |
683 } |
644 } |
684 /* Write to the instance fields */ |
645 /* Write to the instance fields */ |
685 jintArray javaDimensionarr = (jintArray)validJni->GetObjectField(iJavaDisplayObject, field); |
646 jintArray javaDimensionarr = (jintArray)validJni->GetObjectField(iJavaDisplayObject, field); |
686 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --2"); |
647 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --2"); |
687 jint* nativeRectDimensionArr = validJni->GetIntArrayElements(javaDimensionarr, NULL); |
648 jint* nativeRectDimensionArr = validJni->GetIntArrayElements(javaDimensionarr, NULL); |
688 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --3"); |
649 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --3"); |
689 if (!nativeRectDimensionArr) |
650 if (!nativeRectDimensionArr) |
690 { // inputBuffer was already allocated |
651 { |
|
652 // inputBuffer was already allocated |
691 validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_ABORT); |
653 validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_ABORT); |
692 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject Error in resetting rect dimension to java"); |
654 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject Error in resetting rect dimension to java"); |
693 return; |
655 return; |
694 } |
656 } |
695 nativeRectDimensionArr[0] = aRect.iTl.iX; |
657 nativeRectDimensionArr[0] = aRect.iTl.iX; |
696 nativeRectDimensionArr[1] = aRect.iTl.iY;; |
658 nativeRectDimensionArr[1] = aRect.iTl.iY;; |
697 nativeRectDimensionArr[2] = aRect.Width(); |
659 nativeRectDimensionArr[2] = aRect.Width(); |
698 nativeRectDimensionArr[3] = aRect.Height(); |
660 nativeRectDimensionArr[3] = aRect.Height(); |
699 // Now the dimension array in java is updated hence reset the java rect |
661 // Now the dimension array in java is updated hence reset the java rect |
700 validJni->CallVoidMethod(iJavaDisplayObject,setRectID); |
662 validJni->CallVoidMethod(iJavaDisplayObject,setRectID); |
701 |
663 |
702 validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_COMMIT); |
664 validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_COMMIT); |
703 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject -"); |
665 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject -"); |
704 } |
666 } |
705 |
667 |
706 |
668 |
707 void CMMADisplay::SetContentBoundToJavaControl(const TRect& aRect) |
669 void CMMADisplay::SetContentBoundToJavaControl(const TRect& aRect) |
708 { |
670 { |
709 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl +"); |
671 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl +"); |
710 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
672 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
711 // Reset the java rect |
673 // Reset the java rect |
712 ResetJavaRectObject(aRect); |
674 ResetJavaRectObject(aRect); |
713 jmethodID setContentBoundID = validJni->GetMethodID( |
675 jmethodID setContentBoundID = validJni->GetMethodID( |
714 iJavaDisplayClass, |
676 iJavaDisplayClass, |
715 "setContentBound", |
677 "setContentBound", |
|
678 "()V"); |
|
679 // call java function |
|
680 validJni->CallVoidMethod(iJavaDisplayObject,setContentBoundID); |
|
681 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl -"); |
|
682 } |
|
683 |
|
684 void CMMADisplay::RemoveContentBoundFromJavaControl(const TRect& aRect) |
|
685 { |
|
686 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl +"); |
|
687 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
|
688 // Reset the java rect |
|
689 ResetJavaRectObject(aRect); |
|
690 jmethodID removeContentBoundID = validJni->GetMethodID( |
|
691 iJavaDisplayClass, |
|
692 "removeContentBound", |
716 "()V"); |
693 "()V"); |
717 // call java function |
694 // call java function |
718 validJni->CallVoidMethod(iJavaDisplayObject,setContentBoundID); |
695 validJni->CallVoidMethod(iJavaDisplayObject,removeContentBoundID); |
719 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl -"); |
696 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl -"); |
720 } |
697 } |
721 |
698 |
722 void CMMADisplay::RemoveContentBoundFromJavaControl(const TRect& aRect) |
699 void CMMADisplay::RefreshJavaControl() |
723 { |
700 { |
724 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl +"); |
701 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl +"); |
725 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
702 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
726 // Reset the java rect |
703 // Reset the java rect |
727 ResetJavaRectObject(aRect); |
704 //ResetJavaRectObject(aRect); |
728 jmethodID removeContentBoundID = validJni->GetMethodID( |
705 jmethodID redrawControlID = validJni->GetMethodID( |
729 iJavaDisplayClass, |
706 iJavaDisplayClass, |
730 "removeContentBound", |
707 "redrawControl", |
731 "()V"); |
708 "()V"); |
732 // call java function |
709 // call java function |
733 validJni->CallVoidMethod(iJavaDisplayObject,removeContentBoundID); |
710 validJni->CallVoidMethod(iJavaDisplayObject,redrawControlID); |
734 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl -"); |
711 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl -"); |
735 } |
712 } |
736 |
713 |
737 void CMMADisplay::RefreshJavaControl(const TRect& aRect) |
|
738 { |
|
739 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl +"); |
|
740 JNIEnv* validJni = iEventSource->getValidJniEnv(); |
|
741 // Reset the java rect |
|
742 //ResetJavaRectObject(aRect); |
|
743 jmethodID redrawControlID = validJni->GetMethodID( |
|
744 iJavaDisplayClass, |
|
745 "redrawControl", |
|
746 "()V"); |
|
747 // call java function |
|
748 validJni->CallVoidMethod(iJavaDisplayObject,redrawControlID); |
|
749 LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl -"); |
|
750 } |
|
751 |
|
752 // END OF FILE |
714 // END OF FILE |