javauis/lcdui_akn/javalcdui/src/Canvas.cpp
branchRCL_3
changeset 83 26b2b12093af
parent 77 7cee158cb8cd
equal deleted inserted replaced
77:7cee158cb8cd 83:26b2b12093af
    37 {
    37 {
    38     TInt  iHandle;
    38     TInt  iHandle;
    39     TSize iSize;
    39     TSize iSize;
    40     TBool iFrameBuffer;
    40     TBool iFrameBuffer;
    41     TBool iHasBackground;
    41     TBool iHasBackground;
    42     TBool iVideoOverlayEnabled;
       
    43 };
    42 };
    44 
    43 
    45 LOCAL_C void CreateCanvasL(CMIDToolkit* aToolkit, TCanvasCreate* aCreate, TCanvasAttribs* aAttribs)
    44 LOCAL_C void CreateCanvasL(CMIDToolkit* aToolkit, TCanvasCreate* aCreate, TCanvasAttribs* aAttribs)
    46 {
    45 {
    47     MMIDDisplayable* container = MIDUnhand<MMIDDisplayable>(aCreate->iDisplayable);
    46     MMIDDisplayable* container = MIDUnhand<MMIDDisplayable>(aCreate->iDisplayable);
    57     aAttribs->iSize = canvas->ContentSize();
    56     aAttribs->iSize = canvas->ContentSize();
    58     aAttribs->iFrameBuffer = static_cast< TBool >(canvas->FrameBuffer() != NULL);
    57     aAttribs->iFrameBuffer = static_cast< TBool >(canvas->FrameBuffer() != NULL);
    59 
    58 
    60     // Check from a MMIDEnv object if the canvas object has a background or not
    59     // Check from a MMIDEnv object if the canvas object has a background or not
    61     aAttribs->iHasBackground = aToolkit->Env()->CanvasHasBackground(*canvas);
    60     aAttribs->iHasBackground = aToolkit->Env()->CanvasHasBackground(*canvas);
    62     aAttribs->iVideoOverlayEnabled = aToolkit->Env()->VideoOverlayEnabled();
    61 
    63 }
    62 }
    64 
    63 
    65 JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_Canvas__1create
    64 JNIEXPORT jint JNICALL Java_javax_microedition_lcdui_Canvas__1create
    66 (
    65 (
    67     JNIEnv*   aJni,
    66     JNIEnv*   aJni,
    76 
    75 
    77     TCanvasCreate create;
    76     TCanvasCreate create;
    78     create.iDisplayable=aDisplayable;
    77     create.iDisplayable=aDisplayable;
    79     create.iRef= aJni->NewWeakGlobalRef(aCanvas);
    78     create.iRef= aJni->NewWeakGlobalRef(aCanvas);
    80     create.iIsGameCanvas = aIsGameCanvas;
    79     create.iIsGameCanvas = aIsGameCanvas;
    81 
       
    82     TCanvasAttribs attribs;
    80     TCanvasAttribs attribs;
    83     attribs.iFrameBuffer=EFalse;
    81     attribs.iFrameBuffer=EFalse;
       
    82 
    84     attribs.iHasBackground = EFalse;
    83     attribs.iHasBackground = EFalse;
    85     attribs.iVideoOverlayEnabled = EFalse;
       
    86 
       
    87     jint error;
    84     jint error;
    88     if (create.iRef)
    85     if (create.iRef)
    89     {
    86     {
    90         error = toolkit->ExecuteTrap(&CreateCanvasL, toolkit, &create, &attribs);
    87         error = toolkit->ExecuteTrap(&CreateCanvasL, toolkit, &create, &attribs);
    91     }
    88     }
    98     {
    95     {
    99         // should be cleared in CreateCanvasL if no error
    96         // should be cleared in CreateCanvasL if no error
   100         aJni->DeleteWeakGlobalRef(create.iRef);
    97         aJni->DeleteWeakGlobalRef(create.iRef);
   101     }
    98     }
   102 
    99 
   103     ASSERT(aJni->GetArrayLength(aAttribsReturn) == 6);
   100     ASSERT(aJni->GetArrayLength(aAttribsReturn) == 5);
   104     jint attribsArray[6];
   101     jint attribsArray[5];
   105     attribsArray[0] = static_cast< jint >(attribs.iHandle);
   102     attribsArray[0] = static_cast< jint >(attribs.iHandle);
   106     attribsArray[1] = static_cast< jint >(attribs.iSize.iWidth);
   103     attribsArray[1] = static_cast< jint >(attribs.iSize.iWidth);
   107     attribsArray[2] = static_cast< jint >(attribs.iSize.iHeight);
   104     attribsArray[2] = static_cast< jint >(attribs.iSize.iHeight);
   108     attribsArray[3] = static_cast< jint >(attribs.iFrameBuffer);
   105     attribsArray[3] = static_cast< jint >(attribs.iFrameBuffer);
   109     attribsArray[4] = static_cast< jint >(attribs.iHasBackground);
   106     attribsArray[4] = static_cast< jint >(attribs.iHasBackground);
   110     attribsArray[5] = static_cast< jint >(attribs.iVideoOverlayEnabled);
   107     aJni->SetIntArrayRegion(aAttribsReturn, 0, 5, &attribsArray[0]);
   111     aJni->SetIntArrayRegion(aAttribsReturn, 0, 6, &attribsArray[0]);
       
   112 
   108 
   113     LCDUI_DEBUG_INT2("Canvas_create(%x == %x)", handle, (TInt)MIDUnhandObject<MMIDCanvas>(handle));
   109     LCDUI_DEBUG_INT2("Canvas_create(%x == %x)", handle, (TInt)MIDUnhandObject<MMIDCanvas>(handle));
   114     return error;
   110     return error;
   115 }
   111 }
   116 
   112