19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.graphics; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 196926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy/** 206926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * Shader used to draw a bitmap as a texture. The bitmap can be repeated or 216926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * mirrored by setting the tiling mode. 226926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy */ 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class BitmapShader extends Shader { 246926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy /** 250ba681bce12d522c5575dfccb5a6ca12f0fba746Romain Guy * Prevent garbage collection. 26f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy * @hide 270ba681bce12d522c5575dfccb5a6ca12f0fba746Romain Guy */ 280ba681bce12d522c5575dfccb5a6ca12f0fba746Romain Guy @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) 29f890fab5a6715548e520a6f010a3bfe7607ce56ePatrick Dubroy public final Bitmap mBitmap; 300ba681bce12d522c5575dfccb5a6ca12f0fba746Romain Guy 310ba681bce12d522c5575dfccb5a6ca12f0fba746Romain Guy /** 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Call this to create a new shader that will draw with a bitmap. 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bitmap The bitmap to use inside the shader 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param tileX The tiling mode for x to draw the bitmap in. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param tileY The tiling mode for y to draw the bitmap in. 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY) { 390ba681bce12d522c5575dfccb5a6ca12f0fba746Romain Guy mBitmap = bitmap; 4006f96e2652e4855b6520ad9dd70583677605b79aRomain Guy final int b = bitmap.ni(); 4106f96e2652e4855b6520ad9dd70583677605b79aRomain Guy native_instance = nativeCreate(b, tileX.nativeInt, tileY.nativeInt); 4206f96e2652e4855b6520ad9dd70583677605b79aRomain Guy native_shader = nativePostCreate(native_instance, b, tileX.nativeInt, tileY.nativeInt); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 456926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy private static native int nativeCreate(int native_bitmap, int shaderTileModeX, 4606f96e2652e4855b6520ad9dd70583677605b79aRomain Guy int shaderTileModeY); 4706f96e2652e4855b6520ad9dd70583677605b79aRomain Guy private static native int nativePostCreate(int native_shader, int native_bitmap, 4806f96e2652e4855b6520ad9dd70583677605b79aRomain Guy int shaderTileModeX, int shaderTileModeY); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 50