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