javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/M2GScalableGraphics.java
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
child 87 1627c337e51e
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
* All rights reserved.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
* Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
* Description:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
package com.nokia.microedition.m2g;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
import com.nokia.microedition.m2g.M2GRunnableQt;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
import javax.microedition.m2g.*;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
import javax.microedition.m2g.ScalableGraphics;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
import javax.microedition.lcdui.Graphics;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
import java.lang.StringBuffer;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
import org.eclipse.swt.graphics.GC;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
import org.eclipse.swt.graphics.Rectangle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
import com.nokia.mj.impl.utils.Logger;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
import com.nokia.mj.impl.nokialcdui.LCDUIInvoker;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
import org.eclipse.swt.internal.qt.GCData;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
import org.eclipse.swt.internal.qt.graphics.GraphicsContext;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
import org.eclipse.swt.internal.extension.GraphicsUtil; 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
 * ScalableGraphics
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
 */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
public class M2GScalableGraphics
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
        extends M2GObject
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
    // STATIC CONSTANTS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
    // Exception text
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
    /* Optimization: static finals changed to local variables
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
    private static final String ALPHA_OUT_OF_RANGE_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
        "The alpha is out of range";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
    private static final String INVALID_TARGET_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
        "The target is invalid";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
    private static final String MODE_INVALID_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
        "The mode is invalid";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
    private static final String NULL_IMAGE_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
        "The image is null";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
    private static final String NULL_TARGET_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
        "The target is null";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
    private static final String TARGET_ALREADY_BOUND_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
        "Target is already bound";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
    private static final String TARGET_NOT_BOUND_ESTR =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
        "Target is not bound";
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
    */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
    // Transparency alpha max and min limits
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
    private static final float MAX_TRANSPARENCY_ALPHA = 1.0f;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
    private static final float MIN_TRANSPARENCY_ALPHA = 0.0f;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
    // VARIABLES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
    private GC        iTargetGC      = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
    private int iUseNativeClear = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
    private Graphics iTargetGraphics;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
    private Rectangle iSurfaceRectangle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
    private Rectangle iFinalESWTSurfaceRectangle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
     int iSurfaceHandle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
    // METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
     * Constructor
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
    public M2GScalableGraphics()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
        super();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
        doConstruct();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
     * @see javax.microedition.m2g.ScalableGraphics#bindTarget()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
    public synchronized void bindTarget(Object target)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
    	if (target == null )
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
    	{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
    		throw new NullPointerException(/*SF*/"The target is null"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
    	}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
    	if (target instanceof org.eclipse.swt.graphics.GC)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
        	{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
    		
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
			final GC finalGc = (GC)target;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
        	// Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
        	Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
                    public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
                    	iFinalESWTSurfaceRectangle = GraphicsUtil.startExternalRendering(finalGc);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
                    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
                    	// Get GCData from GC
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
                    	/*TODO check for this cahnge GCData gcData = ((org.eclipse.swt.graphics.GC)finalGc).getGCData();    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
                    	// Get internalGC (Graphicscontext), WindowSurface and the WindowSurface handle for native access
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
                        iSurfaceHandle = gcData.internalGc.getWindowSurface().getHandle();*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
                    	iSurfaceHandle = GraphicsUtil.getWindowSurface(finalGc).getHandle();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
                        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
                        _bind(getHandle(), iSurfaceHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
                        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
                      }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
                      });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
                    //  currentTarget = target;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
        		iTargetGC = (GC)finalGc;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
		    // Handling for LCDUI Graphics
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
		    //
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
		    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
//Change accordingly to M3G not as site content.		    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
		    else if (target instanceof javax.microedition.lcdui.Graphics)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
		    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
		    	Graphics g = (Graphics)target;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
		    	final Graphics finalG = g;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
		    	iSurfaceRectangle = LCDUIInvoker.startExternalRendering( finalG );
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
		    	 // Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
			        Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
			                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
			                    public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
														
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
			                    	  
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
			                    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
                        		iSurfaceHandle = LCDUIInvoker.getWindowSurface(finalG).getHandle();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
                        		
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
                        		// Flush Canvas
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
								            //M2GManager.flushDisplayBuffer();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
		                        _bind(getHandle(), iSurfaceHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
		                        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
			                    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
			                  });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
			                  
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
			                  iTargetGraphics  = (Graphics)finalG;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
		    	}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
			         
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
	         else {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
			        throw new IllegalArgumentException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
			    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
    	//TODO Check for : when to give this exception java.lang.IllegalStateException - if target is already bound.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
    
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
  }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
     * @see com.nokia.microedition.m2g.M2GObject#doConstruct()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
    public void doConstruct()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
      super.doConstruct();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
      
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
    	 // Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
	    Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
            new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
                public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
										        setHandle(_createRenderContext(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
										                      getNativeSVGProxyHandle() ));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
										        // Add object to the live objects container
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
										      }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
										    });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
        register(this);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
     * @see com.nokia.microedition.m2g.M2GObject#doCleanup()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
    public synchronized void doCleanup()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
 		    	 // Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
			        Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
			                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
			                    public void doRun() {  	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   190
																			        _deleteRenderContext(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
																			            getHandle() );
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
																			          }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
																			       }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
																			    );      
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
        resetHandles();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
        iTargetGC = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
        iTargetGraphics = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
     * @see javax.microedition.m2g.ScalableGraphics#releaseTarget()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
    public synchronized void releaseTarget()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
      if (iTargetGC != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
      {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
      
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
			Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
            new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
             public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
            	 						   GraphicsUtil.endExternalRendering(iTargetGC);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
            	      				      _release(iSurfaceHandle, getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
            	      				    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
            	      				  });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
            iTargetGC = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
			else if (iTargetGraphics != null )
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
		    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
				final Graphics finalG = iTargetGraphics;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
				Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
	            new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
	             public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
	            			_release(iSurfaceHandle, getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
	            		}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
	            	});
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
				LCDUIInvoker.endExternalRendering( iTargetGraphics );
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
        iTargetGraphics = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
      else 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
      	{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
  			
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
  		   // check for invalid Graphics TODO this exception is getting trough when we trying to bind.s
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
            throw new IllegalStateException(/*SF*/"Target is not bound"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
      	}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
    public synchronized void render(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
        int x, int y, ScalableImage image, boolean aUseNativeClear)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
        iUseNativeClear = aUseNativeClear ? 1 : 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
        render(x, y, image);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
        iUseNativeClear = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
        
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
     * @see javax.microedition.m2g.ScalableGraphics#render()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   257
    public synchronized void render(int x, int y, ScalableImage image)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   258
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   259
    		
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
        if (image == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
            Logger.ELOG(Logger.EJavaUI, "render() - exception: "
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
                        + /*SF*/"The target is null"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
            throw new NullPointerException(/*SF*/"The target is null"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
       if (iTargetGC != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
            final M2GDocument finalDoc = (M2GDocument)((SVGImage)image).getDocument();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
            // Get synchronized svg image data
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
            final int finalSvgW  = image.getViewportWidth();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
            final int finalSvgH = image.getViewportHeight();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
            if ((finalSvgW == 0) || (finalSvgW == 0))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
                return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
            // Calculate clip dimensions TODO check the new clipping rect provided from StartExternalRendering API.s
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
            //Rectangle clipRect = iTargetGC.getClipping();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
            Rectangle clipRect = iFinalESWTSurfaceRectangle;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
            final int finalClipX = clipRect.x;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
            final int finalClipY = clipRect.y;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
            final int finalClipW = clipRect.width;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   283
            final int finalClipH = clipRect.height;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   284
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   285
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
            // if none of the svg image is visible due to clipping then don't
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
            // bother to call render
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   288
            if ((x >= (finalClipX + finalClipW)) || (y >= (finalClipY + finalClipH)))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   289
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   290
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   291
                           "render() - svg image isn't visible due to clipping");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   292
                return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   293
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   294
            if (((x + finalSvgW) < finalClipX) || ((y + finalSvgW) < finalClipY))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   295
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   296
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   297
                           "render() - svg image isn't visible due to clipping");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   298
                return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   299
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   300
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   301
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   302
						final int finalX = x;            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   303
						final int finalY = y; 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   304
						         
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   305
        		    	 // Execute in UI thread   
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   306
	        Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   307
	                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   308
	                    public void doRun() {         
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   309
	                    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   310
	                    								
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   311
	                    									
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   312
																			final int[] finalData = _renderESWT(getHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   313
											                                     finalDoc.getHandle(), finalX, finalY,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   314
											                                     finalClipX, finalClipY, finalClipW, finalClipH, finalSvgW, finalSvgW,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   315
											                                     finalDoc.getRootElement().getCurrentTime(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   316
											                                     iUseNativeClear);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   317
																									                                     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   318
																				int[] bitmapHandles;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   319
														            bitmapHandles = new int[4];
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   320
														            for (int i = 0; i < 4; i++)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   321
														            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   322
														                bitmapHandles[i] = finalData[i];
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   323
														            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   324
														            int[] renderData;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   325
														            renderData = new int[6];
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   326
														            for (int i = 0; i < 6; i++)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   327
														            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   328
														                renderData[i] = finalData[i+4];
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   329
														            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   330
														            //iTargetGC.internal_drawM2GImage(bitmapHandles, renderData, iUseNativeClear);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   331
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   332
																					}});											                                     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   333
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   334
        }//if(true)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   335
		else if (iTargetGraphics != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   336
		    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   337
		    	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   338
   	    		
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   339
            final M2GDocument finalDoc = (M2GDocument)((SVGImage)image).getDocument();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   340
            // Get synchronized svg image data
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   341
            final int finalSvgW  = image.getViewportWidth();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   342
            final int finalSvgH = image.getViewportHeight();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   343
            if ((finalSvgW == 0) || (finalSvgH == 0))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   344
            {	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   345
            	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   346
                return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   347
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   348
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   349
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   350
            //TODO as we are using Surface rectangle provided by StartExternalRendering as Clip Rectangle.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   351
            final int finalClipX = iSurfaceRectangle.x;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   352
            final int finalClipY = iSurfaceRectangle.y;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   353
            final int finalClipW  = iSurfaceRectangle.width;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   354
            final int finalClipH = iSurfaceRectangle.height;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   355
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   356
            // Calculate clip dimensions
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   357
            /*final int finalClipX = iTargetGraphics.getClipX() + iTargetGraphics.getTranslateX();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   358
            final int finalClipY = iTargetGraphics.getClipY() + iTargetGraphics.getTranslateY();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   359
            final int finalClipW  = iTargetGraphics.getClipWidth();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   360
            final int finalClipH = iTargetGraphics.getClipHeight();*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   361
            // if none of the svg image is visible due to clipping then don't
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   362
            // bother to call render
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   363
            if ((x >= (finalClipX + finalClipW)) || (y >= (finalClipY + finalClipH)))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   364
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   365
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   366
                           "render() - svg image isn't visible due to clipping");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   367
                return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   368
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   369
            if (((x + finalSvgW) < finalClipX) || ((y + finalSvgH) < finalClipY))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   370
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   371
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   372
                           "render() - svg image isn't visible due to clipping");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   373
                return;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   374
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   375
            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   376
				final int finalX = x;            
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   377
				final int finalY = y;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   378
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   379
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   380
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   381
      		    	 // Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   382
        Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   383
                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   384
                    public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   385
								            _renderLCDUI(getHandle(), finalDoc.getHandle(), finalX, finalY,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   386
								                         finalClipX, finalClipY, finalClipW, finalClipH, finalSvgW, finalSvgH,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   387
								                         finalDoc.getRootElement().getCurrentTime());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   388
								                       }});
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   389
								                       
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   390
				
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   391
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   392
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   393
       else 
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   394
        	{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   395
                Logger.ELOG(Logger.EJavaUI, "render() - exception: "
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   396
                + /*SF*/"Target is not bound"/*SF*/);//TODO for time being commented.s
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   397
                throw new IllegalStateException(/*SF*/"Target is not bound"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   398
        	}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   399
        	
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   400
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   401
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   402
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   403
     * @see javax.microedition.m2g.ScalableGraphics#setRenderingQuality(int)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   404
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   405
    public synchronized void setRenderingQuality(int mode)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   406
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   407
        if ((mode == ScalableGraphics.RENDERING_QUALITY_LOW) ||
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   408
                (mode == ScalableGraphics.RENDERING_QUALITY_HIGH))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   409
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   410
        	final int finalMode = mode;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   411
        			    	 // Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   412
			        Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   413
			                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   414
			                    public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   415
											            _setRenderingQuality(getHandle(), finalMode);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   416
											          }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   417
											        });
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   418
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   419
        else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   420
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   421
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   422
                        "setRenderingQuality() - exception: " + /*SF*/"The mode is invalid"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   423
            throw new IllegalArgumentException(/*SF*/"The mode is invalid"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   424
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   425
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   426
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   427
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   428
     * @see javax.microedition.m2g.ScalableGraphics#setTransparency(float)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   429
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   430
    public synchronized void setTransparency(float alpha)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   431
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   432
        if (alpha >= MIN_TRANSPARENCY_ALPHA && alpha <= MAX_TRANSPARENCY_ALPHA)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   433
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   434
        	final float finalAlpha = alpha;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   435
        			    	 // Execute in UI thread     
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   436
			        Platform.executeInUIThread(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   437
			                new M2GRunnableQt() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   438
			                    public void doRun() {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   439
            															_setTransparency(getHandle(), finalAlpha);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   440
            														}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   441
            													}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   442
            													);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   443
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   444
        else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   445
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   446
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   447
                        "setTransparency() - exception: " + /*SF*/"The alpha is out of range"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   448
            throw new IllegalArgumentException(/*SF*/"The alpha is out of range"/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   449
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   450
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   451
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   452
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   453
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   454
    // NATIVE METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   455
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   456
    private native int _bind(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   457
        int aRenderContextHandle, int aTargetHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   458
    private native int _createRenderContext(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   459
        int aSVGProxyHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   460
    private native void _deleteRenderContext(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   461
        int aRenderContextHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   462
    private native int _release(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   463
       int aSurfaceHandle ,int aRenderContextHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   464
    private native int _renderLCDUI(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   465
       int aRenderContextHandle, int aDocumentHandle,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   466
        int aX, int aY, int aClipX, int aClipY, int aClipW, int aClipH,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   467
        int aSvgW, int aSvgH, float aCurrentTime);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   468
    private native int[] _renderESWT(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   469
       int aRenderContextHandle, int aDocumentHandle,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   470
        int aX, int aY, int aClipX, int aClipY, int aClipW, int aClipH,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   471
        int aSvgW, int aSvgH, float aCurrentTime, int iUseNativeClear);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   472
    private native void _setRenderingQuality(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   473
       int aRenderContextHandle, int aMode);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   474
    private native void _setTransparency(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   475
       int aRenderContextHandle, float aAlpha);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   476
}