blob: ff14832a2f0f01ac9827410758a6d6129312bb7a [file] [log] [blame]
Dima Zavin32276312010-02-04 12:15:09 -08001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <android/bitmap.h>
Colin Cross02a86572017-10-07 18:38:31 -070018#include <android/graphics/Bitmap.h>
Dima Zavin32276312010-02-04 12:15:09 -080019
20int AndroidBitmap_getInfo(JNIEnv* env, jobject jbitmap,
21 AndroidBitmapInfo* info) {
22 if (NULL == env || NULL == jbitmap) {
23 return ANDROID_BITMAP_RESULT_BAD_PARAMETER;
24 }
25
Dima Zavin32276312010-02-04 12:15:09 -080026 if (info) {
John Reck00799f72017-03-01 18:05:41 -080027 android::bitmap::imageInfo(env, jbitmap, info);
Dima Zavin32276312010-02-04 12:15:09 -080028 }
Andrew Hsieheba82542012-12-12 11:27:44 +080029 return ANDROID_BITMAP_RESULT_SUCCESS;
Dima Zavin32276312010-02-04 12:15:09 -080030}
31
32int AndroidBitmap_lockPixels(JNIEnv* env, jobject jbitmap, void** addrPtr) {
33 if (NULL == env || NULL == jbitmap) {
34 return ANDROID_BITMAP_RESULT_BAD_PARAMETER;
35 }
36
John Reck00799f72017-03-01 18:05:41 -080037 void* addr = android::bitmap::lockPixels(env, jbitmap);
38 if (!addr) {
Dima Zavin32276312010-02-04 12:15:09 -080039 return ANDROID_BITMAP_RESULT_JNI_EXCEPTION;
40 }
41
Dima Zavin32276312010-02-04 12:15:09 -080042 if (addrPtr) {
43 *addrPtr = addr;
44 }
Andrew Hsieheba82542012-12-12 11:27:44 +080045 return ANDROID_BITMAP_RESULT_SUCCESS;
Dima Zavin32276312010-02-04 12:15:09 -080046}
47
48int AndroidBitmap_unlockPixels(JNIEnv* env, jobject jbitmap) {
49 if (NULL == env || NULL == jbitmap) {
50 return ANDROID_BITMAP_RESULT_BAD_PARAMETER;
51 }
52
John Reck00799f72017-03-01 18:05:41 -080053 bool unlocked = android::bitmap::unlockPixels(env, jbitmap);
54 if (!unlocked) {
Dima Zavin32276312010-02-04 12:15:09 -080055 return ANDROID_BITMAP_RESULT_JNI_EXCEPTION;
56 }
Andrew Hsieheba82542012-12-12 11:27:44 +080057 return ANDROID_BITMAP_RESULT_SUCCESS;
Dima Zavin32276312010-02-04 12:15:09 -080058}