1ebfb436a49673693b98469683451bd9ede797557Jason Sams/* 2ebfb436a49673693b98469683451bd9ede797557Jason Sams * Copyright (C) 2008 The Android Open Source Project 3ebfb436a49673693b98469683451bd9ede797557Jason Sams * 4ebfb436a49673693b98469683451bd9ede797557Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5ebfb436a49673693b98469683451bd9ede797557Jason Sams * you may not use this file except in compliance with the License. 6ebfb436a49673693b98469683451bd9ede797557Jason Sams * You may obtain a copy of the License at 7ebfb436a49673693b98469683451bd9ede797557Jason Sams * 8ebfb436a49673693b98469683451bd9ede797557Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9ebfb436a49673693b98469683451bd9ede797557Jason Sams * 10ebfb436a49673693b98469683451bd9ede797557Jason Sams * Unless required by applicable law or agreed to in writing, software 11ebfb436a49673693b98469683451bd9ede797557Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12ebfb436a49673693b98469683451bd9ede797557Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ebfb436a49673693b98469683451bd9ede797557Jason Sams * See the License for the specific language governing permissions and 14ebfb436a49673693b98469683451bd9ede797557Jason Sams * limitations under the License. 15ebfb436a49673693b98469683451bd9ede797557Jason Sams */ 16ebfb436a49673693b98469683451bd9ede797557Jason Sams 17ebfb436a49673693b98469683451bd9ede797557Jason Samspackage android.renderscript; 18ebfb436a49673693b98469683451bd9ede797557Jason Sams 19ebfb436a49673693b98469683451bd9ede797557Jason Sams 209c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 21a90842283e322b1210e2bea5850b05177e3d87afTim Murray * @hide 22d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 2311518acc8c416023d8c2192b441a1767205676d9Robert Ly * Program raster is primarily used to specify whether point sprites are enabled and to control 2411518acc8c416023d8c2192b441a1767205676d9Robert Ly * the culling mode. By default, back faces are culled. 25ebfb436a49673693b98469683451bd9ede797557Jason Sams **/ 26ebfb436a49673693b98469683451bd9ede797557Jason Samspublic class ProgramRaster extends BaseObj { 2780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 28d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 29d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 30d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 3180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk public enum CullMode { 32d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 33d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 34d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 3580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk BACK (0), 36d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 37d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 38d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 3980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk FRONT (1), 40d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 41d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 42d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 4380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk NONE (2); 4480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 4580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk int mID; 4680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk CullMode(int id) { 4780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mID = id; 4880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 4980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 5080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 51ebfb436a49673693b98469683451bd9ede797557Jason Sams boolean mPointSprite; 5280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk CullMode mCullMode; 53ebfb436a49673693b98469683451bd9ede797557Jason Sams 54460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray ProgramRaster(long id, RenderScript rs) { 550de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 56ebfb436a49673693b98469683451bd9ede797557Jason Sams 57ebfb436a49673693b98469683451bd9ede797557Jason Sams mPointSprite = false; 5880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mCullMode = CullMode.BACK; 59ebfb436a49673693b98469683451bd9ede797557Jason Sams } 60ebfb436a49673693b98469683451bd9ede797557Jason Sams 619c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 62d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 63918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk * Specifies whether vertices are rendered as screen aligned 64918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk * elements of a specified size 657d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return whether point sprites are enabled 667d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 67918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk public boolean isPointSpriteEnabled() { 687d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mPointSprite; 697d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 707d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 719c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 72d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 73918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk * Specifies how triangles are culled based on their orientation 747d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return cull mode 757d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 767d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public CullMode getCullMode() { 777d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mCullMode; 787d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 797d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 80d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 81d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 82d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 83d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public static ProgramRaster CULL_BACK(RenderScript rs) { 84d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk if(rs.mProgramRaster_CULL_BACK == null) { 85d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster.Builder builder = new ProgramRaster.Builder(rs); 86d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk builder.setCullMode(CullMode.BACK); 87d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk rs.mProgramRaster_CULL_BACK = builder.create(); 88d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 89d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return rs.mProgramRaster_CULL_BACK; 90d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 91d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 92d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 93d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 94d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 95d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public static ProgramRaster CULL_FRONT(RenderScript rs) { 96d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk if(rs.mProgramRaster_CULL_FRONT == null) { 97d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster.Builder builder = new ProgramRaster.Builder(rs); 98d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk builder.setCullMode(CullMode.FRONT); 99d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk rs.mProgramRaster_CULL_FRONT = builder.create(); 100d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 101d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return rs.mProgramRaster_CULL_FRONT; 102d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 103d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 104d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 105d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 106d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 107d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public static ProgramRaster CULL_NONE(RenderScript rs) { 108d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk if(rs.mProgramRaster_CULL_NONE == null) { 109d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster.Builder builder = new ProgramRaster.Builder(rs); 110d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk builder.setCullMode(CullMode.NONE); 111d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk rs.mProgramRaster_CULL_NONE = builder.create(); 112d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 113d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return rs.mProgramRaster_CULL_NONE; 114d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 115d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 116d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 117d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 118d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 119ebfb436a49673693b98469683451bd9ede797557Jason Sams public static class Builder { 120ebfb436a49673693b98469683451bd9ede797557Jason Sams RenderScript mRS; 12180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk boolean mPointSprite; 122d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk CullMode mCullMode; 123ebfb436a49673693b98469683451bd9ede797557Jason Sams 124d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 125d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 126d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 12780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk public Builder(RenderScript rs) { 12880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mRS = rs; 12980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mPointSprite = false; 130d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk mCullMode = CullMode.BACK; 131ebfb436a49673693b98469683451bd9ede797557Jason Sams } 132ebfb436a49673693b98469683451bd9ede797557Jason Sams 133d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 134d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 135d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 136b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk public Builder setPointSpriteEnabled(boolean enable) { 13780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mPointSprite = enable; 138288c8711a64893acb3f4a31caf69153be9809d17Jim Shuma return this; 139ebfb436a49673693b98469683451bd9ede797557Jason Sams } 140ebfb436a49673693b98469683451bd9ede797557Jason Sams 141d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 142d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 143d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 144d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public Builder setCullMode(CullMode m) { 145d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk mCullMode = m; 146d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return this; 147d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 148d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 149d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 150d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 151d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 152ebfb436a49673693b98469683451bd9ede797557Jason Sams public ProgramRaster create() { 153771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 154460a04971c494fec39ffcb38e873bb8fdd82d113Tim Murray long id = mRS.nProgramRasterCreate(mPointSprite, mCullMode.mID); 1557d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk ProgramRaster programRaster = new ProgramRaster(id, mRS); 1567d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk programRaster.mPointSprite = mPointSprite; 1577d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk programRaster.mCullMode = mCullMode; 1587d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return programRaster; 159ebfb436a49673693b98469683451bd9ede797557Jason Sams } 160ebfb436a49673693b98469683451bd9ede797557Jason Sams } 161ebfb436a49673693b98469683451bd9ede797557Jason Sams 162ebfb436a49673693b98469683451bd9ede797557Jason Sams} 163ebfb436a49673693b98469683451bd9ede797557Jason Sams 164ebfb436a49673693b98469683451bd9ede797557Jason Sams 165ebfb436a49673693b98469683451bd9ede797557Jason Sams 166ebfb436a49673693b98469683451bd9ede797557Jason Sams 167ebfb436a49673693b98469683451bd9ede797557Jason Sams 16880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 169