1704ff64b099406bb328898a7443921f22dbffd6dJason Sams/* 2704ff64b099406bb328898a7443921f22dbffd6dJason Sams * Copyright (C) 2008 The Android Open Source Project 3704ff64b099406bb328898a7443921f22dbffd6dJason Sams * 4704ff64b099406bb328898a7443921f22dbffd6dJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5704ff64b099406bb328898a7443921f22dbffd6dJason Sams * you may not use this file except in compliance with the License. 6704ff64b099406bb328898a7443921f22dbffd6dJason Sams * You may obtain a copy of the License at 7704ff64b099406bb328898a7443921f22dbffd6dJason Sams * 8704ff64b099406bb328898a7443921f22dbffd6dJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9704ff64b099406bb328898a7443921f22dbffd6dJason Sams * 10704ff64b099406bb328898a7443921f22dbffd6dJason Sams * Unless required by applicable law or agreed to in writing, software 11704ff64b099406bb328898a7443921f22dbffd6dJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12704ff64b099406bb328898a7443921f22dbffd6dJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13704ff64b099406bb328898a7443921f22dbffd6dJason Sams * See the License for the specific language governing permissions and 14704ff64b099406bb328898a7443921f22dbffd6dJason Sams * limitations under the License. 15704ff64b099406bb328898a7443921f22dbffd6dJason Sams */ 16704ff64b099406bb328898a7443921f22dbffd6dJason Sams 17704ff64b099406bb328898a7443921f22dbffd6dJason Samspackage android.renderscript; 18704ff64b099406bb328898a7443921f22dbffd6dJason Sams 196b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liaoimport android.content.Context; 20faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Samsimport android.graphics.SurfaceTexture; 21704ff64b099406bb328898a7443921f22dbffd6dJason Samsimport android.view.Surface; 222222aa90031604e9752ebc2909303a84139b8b18Jason Samsimport android.view.SurfaceHolder; 23704ff64b099406bb328898a7443921f22dbffd6dJason Sams 249c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 25a90842283e322b1210e2bea5850b05177e3d87afTim Murray * @hide 26d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 27c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * The Graphics derivitive of RenderScript. Extends the basic context to add a 2827676fe24be7444a174c15df476e49adc5335d03Jason Sams * root script which is the display window for graphical output. When the 2927676fe24be7444a174c15df476e49adc5335d03Jason Sams * system needs to update the display the currently bound root script will be 3027676fe24be7444a174c15df476e49adc5335d03Jason Sams * called. This script is expected to issue the rendering commands to repaint 3127676fe24be7444a174c15df476e49adc5335d03Jason Sams * the screen. 323aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * 333aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <div class="special reference"> 343aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * <h3>Developer Guides</h3> 35c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * <p>For more information about creating an application that uses RenderScript, read the 36c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p> 373aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45Joe Fernandez * </div> 38704ff64b099406bb328898a7443921f22dbffd6dJason Sams **/ 39704ff64b099406bb328898a7443921f22dbffd6dJason Samspublic class RenderScriptGL extends RenderScript { 40704ff64b099406bb328898a7443921f22dbffd6dJason Sams int mWidth; 41704ff64b099406bb328898a7443921f22dbffd6dJason Sams int mHeight; 42704ff64b099406bb328898a7443921f22dbffd6dJason Sams 439c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 44d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 4527676fe24be7444a174c15df476e49adc5335d03Jason Sams * Class which is used to describe a pixel format for a graphical buffer. 4627676fe24be7444a174c15df476e49adc5335d03Jason Sams * This is used to describe the intended format of the display surface. 4727676fe24be7444a174c15df476e49adc5335d03Jason Sams * 48bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * The configuration is described by pairs of minimum and preferred bit 49bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * depths for each component within the config and additional structural 50bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * information. 5127676fe24be7444a174c15df476e49adc5335d03Jason Sams */ 522222aa90031604e9752ebc2909303a84139b8b18Jason Sams public static class SurfaceConfig { 532222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mDepthMin = 0; 542222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mDepthPref = 0; 552222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mStencilMin = 0; 562222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mStencilPref = 0; 572222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mColorMin = 8; 582222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mColorPref = 8; 592222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mAlphaMin = 0; 602222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mAlphaPref = 0; 612222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mSamplesMin = 1; 622222aa90031604e9752ebc2909303a84139b8b18Jason Sams int mSamplesPref = 1; 632222aa90031604e9752ebc2909303a84139b8b18Jason Sams float mSamplesQ = 1.f; 642222aa90031604e9752ebc2909303a84139b8b18Jason Sams 65d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 66d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 67d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 682222aa90031604e9752ebc2909303a84139b8b18Jason Sams public SurfaceConfig() { 692222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 702222aa90031604e9752ebc2909303a84139b8b18Jason Sams 71d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 72d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 73d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 742222aa90031604e9752ebc2909303a84139b8b18Jason Sams public SurfaceConfig(SurfaceConfig sc) { 752222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthMin = sc.mDepthMin; 762222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthPref = sc.mDepthPref; 772222aa90031604e9752ebc2909303a84139b8b18Jason Sams mStencilMin = sc.mStencilMin; 782222aa90031604e9752ebc2909303a84139b8b18Jason Sams mStencilPref = sc.mStencilPref; 792222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorMin = sc.mColorMin; 802222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorPref = sc.mColorPref; 812222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaMin = sc.mAlphaMin; 822222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaPref = sc.mAlphaPref; 832222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesMin = sc.mSamplesMin; 842222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesPref = sc.mSamplesPref; 852222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesQ = sc.mSamplesQ; 862222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 872222aa90031604e9752ebc2909303a84139b8b18Jason Sams 882222aa90031604e9752ebc2909303a84139b8b18Jason Sams private void validateRange(int umin, int upref, int rmin, int rmax) { 892222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (umin < rmin || umin > rmax) { 90c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSIllegalArgumentException("Minimum value provided out of range."); 912222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 922222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (upref < umin) { 93bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams throw new RSIllegalArgumentException("preferred must be >= Minimum."); 942222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 952222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 962222aa90031604e9752ebc2909303a84139b8b18Jason Sams 979c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 98d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 99bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the per-component bit depth for color (red, green, blue). This 100bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * configures the surface for an unsigned integer buffer type. 101bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 102bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 103bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 104bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 105bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setColor(int minimum, int preferred) { 106bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 5, 8); 1072222aa90031604e9752ebc2909303a84139b8b18Jason Sams mColorMin = minimum; 108bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mColorPref = preferred; 1092222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 110bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1119c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 112d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 113bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the bit depth for alpha. This configures the surface for 114bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * an unsigned integer buffer type. 115bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 116bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 117bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 118bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 119bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setAlpha(int minimum, int preferred) { 120bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 0, 8); 1212222aa90031604e9752ebc2909303a84139b8b18Jason Sams mAlphaMin = minimum; 122bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mAlphaPref = preferred; 1232222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 124bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1259c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 126d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 127bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the bit depth for the depth buffer. This configures the 128bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * surface for an unsigned integer buffer type. If a minimum of 0 129bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * is specified then its possible no depth buffer will be 130bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * allocated. 131bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 132bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum 133bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred 134bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 135bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setDepth(int minimum, int preferred) { 136bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 0, 24); 1372222aa90031604e9752ebc2909303a84139b8b18Jason Sams mDepthMin = minimum; 138bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mDepthPref = preferred; 1392222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 140bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams 1419c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 142d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 143bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Configure the multisample rendering. 144bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 145bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param minimum The required number of samples, must be at least 1. 146bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param preferred The targe number of samples, must be at least 147bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * minimum 148bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param Q The quality of samples, range 0-1. Used to decide between 149bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * different formats which have the same number of samples but 150bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * different rendering quality. 151bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 152bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setSamples(int minimum, int preferred, float Q) { 153bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validateRange(minimum, preferred, 1, 32); 1542222aa90031604e9752ebc2909303a84139b8b18Jason Sams if (Q < 0.0f || Q > 1.0f) { 155c1d6210fb5cc558ccea95a59a2b33bb9015fc7deJason Sams throw new RSIllegalArgumentException("Quality out of 0-1 range."); 1562222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1572222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesMin = minimum; 158bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams mSamplesPref = preferred; 1592222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSamplesQ = Q; 1602222aa90031604e9752ebc2909303a84139b8b18Jason Sams } 1612222aa90031604e9752ebc2909303a84139b8b18Jason Sams }; 1622222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1632222aa90031604e9752ebc2909303a84139b8b18Jason Sams SurfaceConfig mSurfaceConfig; 1642222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1659c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 166d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 167bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Construct a new RenderScriptGL context. 168bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 1696b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao * @param ctx The context. 1708cecbb5293f73e3f63f2601dda68016762c58a0cStephen Hines * @param sc The desired format of the primary rendering surface. 171bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 1726b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao public RenderScriptGL(Context ctx, SurfaceConfig sc) { 1736b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao super(ctx); 1742222aa90031604e9752ebc2909303a84139b8b18Jason Sams mSurfaceConfig = new SurfaceConfig(sc); 1752222aa90031604e9752ebc2909303a84139b8b18Jason Sams 1761a4e1f3efd077f3a61038aedab84dc84c9c44d19Jason Sams int sdkVersion = ctx.getApplicationInfo().targetSdkVersion; 1774382467a80dd12c6362d57edca7f2367f7ae877cStephen Hines 178704ff64b099406bb328898a7443921f22dbffd6dJason Sams mWidth = 0; 179704ff64b099406bb328898a7443921f22dbffd6dJason Sams mHeight = 0; 1804a70df58a32591429ec04902deac2b2210fb96c3Yang Ni long device = nDeviceCreate(); 1812c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk int dpi = ctx.getResources().getDisplayMetrics().densityDpi; 1824a70df58a32591429ec04902deac2b2210fb96c3Yang Ni mContext = nContextCreateGL(device, 0, sdkVersion, 18311c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mColorMin, mSurfaceConfig.mColorPref, 18411c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mAlphaMin, mSurfaceConfig.mAlphaPref, 18511c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mDepthMin, mSurfaceConfig.mDepthPref, 18611c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mStencilMin, mSurfaceConfig.mStencilPref, 18711c8af9ded3a319635b4e91a639a616ec97fc7e3Jason Sams mSurfaceConfig.mSamplesMin, mSurfaceConfig.mSamplesPref, 1882c74ad9aae29cc64fece926f353825a7925792c2Alex Sakhartchouk mSurfaceConfig.mSamplesQ, dpi); 189d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams if (mContext == 0) { 190d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams throw new RSDriverException("Failed to create RS context."); 191d5f06300341df0990be3e0b7a26fa49b13c6fc19Jason Sams } 192704ff64b099406bb328898a7443921f22dbffd6dJason Sams mMessageThread = new MessageThread(this); 193704ff64b099406bb328898a7443921f22dbffd6dJason Sams mMessageThread.start(); 194704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 195704ff64b099406bb328898a7443921f22dbffd6dJason Sams 1969c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 197d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 198bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Bind an os surface 199bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 200bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 201bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param w 202bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param h 203bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param sur 204bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 205bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void setSurface(SurfaceHolder sur, int w, int h) { 206bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams validate(); 207faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams Surface s = null; 208bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams if (sur != null) { 209faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams s = sur.getSurface(); 210bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams } 211704ff64b099406bb328898a7443921f22dbffd6dJason Sams mWidth = w; 212704ff64b099406bb328898a7443921f22dbffd6dJason Sams mHeight = h; 213faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams nContextSetSurface(w, h, s); 214faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams } 215faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 2169c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 217e619de6a4e4326b7662b523ea2f403801291d432Jason Sams * @deprecated in API 16 218faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * Bind an os surface 219faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * 220faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param w 221faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param h 222faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams * @param sur 223faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams */ 224faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams public void setSurfaceTexture(SurfaceTexture sur, int w, int h) { 225faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams validate(); 226faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams //android.util.Log.v("rs", "set surface " + sur + " w=" + w + ", h=" + h); 227faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams 22821e0af987d7baccd5417a2f744d2dd706d85604eXiaofei Wan Surface s = null; 22921e0af987d7baccd5417a2f744d2dd706d85604eXiaofei Wan if (sur != null) { 23021e0af987d7baccd5417a2f744d2dd706d85604eXiaofei Wan s = new Surface(sur); 23121e0af987d7baccd5417a2f744d2dd706d85604eXiaofei Wan } 232faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams mWidth = w; 233faa32b33b50ad941f631716dd0915e936bdc3ac5Jason Sams mHeight = h; 23421e0af987d7baccd5417a2f744d2dd706d85604eXiaofei Wan nContextSetSurface(w, h, s); 235704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 236704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2379c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 238d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 239bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * return the height of the last set surface. 240bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 241bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return int 242bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2435585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams public int getHeight() { 2445585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams return mHeight; 2455585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams } 2465585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams 2479c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 248d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 249bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * return the width of the last set surface. 250bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 251bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @return int 252bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 2535585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams public int getWidth() { 2545585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams return mWidth; 2555585e36a413dcc70a4bdd04063ea31db2519ea8dJason Sams } 256704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2579c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 258d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 259bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Temporarly halt calls to the root rendering script. 260bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 261bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 262bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void pause() { 263704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 264704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextPause(); 265704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 266704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2679c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 268d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 269bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Resume calls to the root rendering script. 270bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 271bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 272bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void resume() { 273704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 274704ff64b099406bb328898a7443921f22dbffd6dJason Sams nContextResume(); 275704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 276704ff64b099406bb328898a7443921f22dbffd6dJason Sams 277704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2789c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 279d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 280bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the script to handle calls to render the primary surface. 281bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 282bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param s Graphics script to process rendering requests. 283bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 284bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindRootScript(Script s) { 285704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 286460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray nContextBindRootScript((int)safeID(s)); 287704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 288704ff64b099406bb328898a7443921f22dbffd6dJason Sams 2899c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 290d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 291bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramStore object seen as the parent state by the root 292bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * rendering script. 293bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 294bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 295bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 296bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramStore(ProgramStore p) { 297704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 298460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray nContextBindProgramStore((int)safeID(p)); 299704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 300704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3019c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 302d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 303bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramFragment object seen as the parent state by the 304bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 305bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 306bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 307bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 308bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramFragment(ProgramFragment p) { 309704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 310460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray nContextBindProgramFragment((int)safeID(p)); 311704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 312704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3139c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 314d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 315bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramRaster object seen as the parent state by the 316bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 317bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 318bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 319bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 320bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramRaster(ProgramRaster p) { 321704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 322460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray nContextBindProgramRaster((int)safeID(p)); 323704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 324704ff64b099406bb328898a7443921f22dbffd6dJason Sams 3259c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 326d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 327bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * Set the default ProgramVertex object seen as the parent state by the 328bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * root rendering script. 329bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * 330bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams * @param p 331bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams */ 332bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams public void bindProgramVertex(ProgramVertex p) { 333704ff64b099406bb328898a7443921f22dbffd6dJason Sams validate(); 334460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray nContextBindProgramVertex((int)safeID(p)); 335704ff64b099406bb328898a7443921f22dbffd6dJason Sams } 336704ff64b099406bb328898a7443921f22dbffd6dJason Sams 337704ff64b099406bb328898a7443921f22dbffd6dJason Sams} 338