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