1e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka/* 2e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * Copyright (C) 2012 The Android Open Source Project 3e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * 4e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * Licensed under the Apache License, Version 2.0 (the "License"); 5e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * you may not use this file except in compliance with the License. 6e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * You may obtain a copy of the License at 7e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * 8e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * http://www.apache.org/licenses/LICENSE-2.0 9e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * 10e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * Unless required by applicable law or agreed to in writing, software 11e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * distributed under the License is distributed on an "AS IS" BASIS, 12e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * See the License for the specific language governing permissions and 14e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka * limitations under the License. 15e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka */ 16e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 17e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkapackage com.android.gallery3d.exif; 18e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 19e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkaimport java.io.FilterOutputStream; 20e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkaimport java.io.IOException; 21e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkaimport java.io.OutputStream; 22e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkaimport java.nio.ByteBuffer; 23e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkaimport java.nio.ByteOrder; 24e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 25e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurkaclass OrderedDataOutputStream extends FilterOutputStream { 26e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka private final ByteBuffer mByteBuffer = ByteBuffer.allocate(4); 27e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 28e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka public OrderedDataOutputStream(OutputStream out) { 29e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka super(out); 30e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka } 31e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 32e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka public OrderedDataOutputStream setByteOrder(ByteOrder order) { 33e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka mByteBuffer.order(order); 34e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka return this; 35e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka } 36e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 37e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka public OrderedDataOutputStream writeShort(short value) throws IOException { 38e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka mByteBuffer.rewind(); 39e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka mByteBuffer.putShort(value); 40e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka out.write(mByteBuffer.array(), 0, 2); 41e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka return this; 42e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka } 43e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 44e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka public OrderedDataOutputStream writeInt(int value) throws IOException { 45e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka mByteBuffer.rewind(); 46e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka mByteBuffer.putInt(value); 47e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka out.write(mByteBuffer.array()); 48e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka return this; 49e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka } 50e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka 51e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka public OrderedDataOutputStream writeRational(Rational rational) throws IOException { 52e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka writeInt((int) rational.getNumerator()); 53e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka writeInt((int) rational.getDenominator()); 54e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka return this; 55e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka } 56e8d1bf7a439450b9979701909164a6baffbe8baeMichael Jurka} 57