1df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov/*
2df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * Copyright (C) 2014 The Android Open Source Project
3df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov *
4df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * Licensed under the Apache License, Version 2.0 (the "License");
5df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * you may not use this file except in compliance with the License.
6df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * You may obtain a copy of the License at
7df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov *
8df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov *      http://www.apache.org/licenses/LICENSE-2.0
9df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov *
10df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * Unless required by applicable law or agreed to in writing, software
11df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * distributed under the License is distributed on an "AS IS" BASIS,
12df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * See the License for the specific language governing permissions and
14df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * limitations under the License.
15df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov */
16df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
17df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganovpackage com.android.printspooler.util;
18df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
19df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganovimport android.graphics.Bitmap;
20df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganovimport android.os.ParcelFileDescriptor;
21df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
22df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov/**
23df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * Helper for serialization of bitmaps in the very specific
24df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * use case of having the same bitmap on both ends and just
25df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov * marshaling the pixels from one side to the other.
26df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov */
27df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganovpublic final class BitmapSerializeUtils {
28df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
29df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    static {
30df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov        System.loadLibrary("printspooler_jni");
31df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    }
32df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
33df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    private BitmapSerializeUtils() {
34df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov        /* do nothing */
35df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    }
36df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
37df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    /**
38df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     * Reads a bitmap pixels from a file descriptor.
39df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     *
40df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     * @param bitmap A bitmap whose pixels to populate.
41df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     * @param source The source file descriptor.
42df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     */
43df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    public static void readBitmapPixels(Bitmap bitmap, ParcelFileDescriptor source) {
44df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov        nativeReadBitmapPixels(bitmap, source.getFd());
45df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    }
46df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
47df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    /**
48df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     * Writes a bitmap pixels to a file descriptor.
49df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     *
50df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     * @param bitmap The bitmap.
51df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     * @param destination The destination file descriptor.
52df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov     */
53df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    public static void writeBitmapPixels(Bitmap bitmap, ParcelFileDescriptor destination) {
54df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov        nativeWriteBitmapPixels(bitmap, destination.getFd());
55df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    }
56df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
57df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    private static native void nativeReadBitmapPixels(Bitmap bitmap, int fd);
58df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov
59df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov    private static native void nativeWriteBitmapPixels(Bitmap bitmap, int fd);
60df6444931b030d3cdd9769e23f16f0a16fe9c654Svet Ganov}
61