bitmap.h revision c118edfc1ab9a608537ebc2f2ec936216f15a36c
1fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville/* 2fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Copyright (C) 2009 The Android Open Source Project 3fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 4fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * you may not use this file except in compliance with the License. 6fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * You may obtain a copy of the License at 7fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 8fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 10fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Unless required by applicable law or agreed to in writing, software 11fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * See the License for the specific language governing permissions and 14fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * limitations under the License. 15fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 16fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 17fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville#ifndef ANDROID_BITMAP_H 18fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville#define ANDROID_BITMAP_H 19fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 20fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville#include <stdint.h> 21fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville#include <jni.h> 22fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 23583eaaa57c51b28bf14da2a5cc94a2e6091cccf5Wink Saville#ifdef __cplusplus 24fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Savilleextern "C" { 25fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville#endif 26583eaaa57c51b28bf14da2a5cc94a2e6091cccf5Wink Saville 27583eaaa57c51b28bf14da2a5cc94a2e6091cccf5Wink Saville#define ANDROID_BITMAP_RESULT_SUCCESS 0 2854b1b1a07ad3edd1df060889aad453aa0e1cc79aWink Saville#define ANDROID_BITMAP_RESULT_BAD_PARAMETER -1 29fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville#define ANDROID_BITMAP_RESULT_JNI_EXCEPTION -2 30583eaaa57c51b28bf14da2a5cc94a2e6091cccf5Wink Saville#define ANDROID_BITMAP_RESULT_ALLOCATION_FAILED -3 31efcc3d35661c0cd978bb2b2f808fade4c4734e21Wink Saville 32fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Savilleenum AndroidBitmapFormat { 33d3059487abd526b91b912f70939c1c6994eecf52Wink Saville ANDROID_BITMAP_FORMAT_NONE = 0, 34fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville ANDROID_BITMAP_FORMAT_RGBA_8888 = 1, 35fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville ANDROID_BITMAP_FORMAT_RGB_565 = 4, 36fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville ANDROID_BITMAP_FORMAT_RGBA_4444 = 7, 37fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville ANDROID_BITMAP_FORMAT_A_8 = 8, 3864c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville}; 3933c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville 4058c73c3f76c231cf128041aefadd4b6a6bcefac2Wink Savilletypedef struct { 4164c42cae4482fe0157e977b8ddd0f2c2436b3f31Wink Saville uint32_t width; 4233c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville uint32_t height; 43fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville uint32_t stride; 44fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville int32_t format; 45fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville uint32_t flags; // 0 for now 46fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville} AndroidBitmapInfo; 47fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 4833c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville/** 49fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * Given a java bitmap object, fill out the AndroidBitmap struct for it. 5033c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville * If the call fails, the info parameter will be ignored 51fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 52fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Savilleint AndroidBitmap_getInfo(JNIEnv* env, jobject jbitmap, 53cea056f5894543819898a0e62f98dc7870b27758Wink Saville AndroidBitmapInfo* info); 54cea056f5894543819898a0e62f98dc7870b27758Wink Saville 55cea056f5894543819898a0e62f98dc7870b27758Wink Saville/** 56cea056f5894543819898a0e62f98dc7870b27758Wink Saville * Given a java bitmap object, attempt to lock the pixel address. 57cea056f5894543819898a0e62f98dc7870b27758Wink Saville * Locking will ensure that the memory for the pixels will not move 58cea056f5894543819898a0e62f98dc7870b27758Wink Saville * until the unlockPixels call, and ensure that, if the pixels had been 59cea056f5894543819898a0e62f98dc7870b27758Wink Saville * previously purged, they will have been restored. 60cea056f5894543819898a0e62f98dc7870b27758Wink Saville * 61fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * If this call succeeds, it must be balanced by a call to 62fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * AndroidBitmap_unlockPixels, after which time the address of the pixels should 63fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * no longer be used. 64fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * 65fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville * If this succeeds, *addrPtr will be set to the pixel address. If the call 6633c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville * fails, addrPtr will be ignored. 67a4f3bec29c85ef9e0d07fdd551fe3c50f28b9adcWink Saville */ 68fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Savilleint AndroidBitmap_lockPixels(JNIEnv* env, jobject jbitmap, void** addrPtr); 69fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 70fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville/** 7133c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville * Call this to balanace a successful call to AndroidBitmap_lockPixels 72fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville */ 7333c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Savilleint AndroidBitmap_unlockPixels(JNIEnv* env, jobject jbitmap); 74fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 75a4f3bec29c85ef9e0d07fdd551fe3c50f28b9adcWink Saville#ifdef __cplusplus 76a4f3bec29c85ef9e0d07fdd551fe3c50f28b9adcWink Saville} 7733c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville#endif 78fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville 7933c54e3365d621fcc5b9f7564f18b33dc1e300dfWink Saville#endif 80fc5b4802a544b6ca304aa7e58a26018ef714d233Wink Saville