14f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou/* 24f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * Copyright (C) 2012 The Android Open Source Project 34f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * 44f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * Licensed under the Apache License, Version 2.0 (the "License"); 54f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * you may not use this file except in compliance with the License. 64f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * You may obtain a copy of the License at 74f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * 84f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * http://www.apache.org/licenses/LICENSE-2.0 94f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * 104f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * Unless required by applicable law or agreed to in writing, software 114f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * distributed under the License is distributed on an "AS IS" BASIS, 124f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * See the License for the specific language governing permissions and 144f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou * limitations under the License. 154f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou */ 164f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 174f529e7cada294befb66a1fc9b72b1aa164597dfEarl Oupackage com.android.gallery3d.exif; 184f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 194f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ouimport java.io.FilterOutputStream; 204f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ouimport java.io.IOException; 214f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ouimport java.io.OutputStream; 224f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ouimport java.nio.ByteBuffer; 234f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ouimport java.nio.ByteOrder; 244f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 25e48c0f96ee3f9654c3538664dd59485927fb44d6Earl Ouclass OrderedDataOutputStream extends FilterOutputStream { 264f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou private final ByteBuffer mByteBuffer = ByteBuffer.allocate(4); 274f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 284f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou public OrderedDataOutputStream(OutputStream out) { 294f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou super(out); 304f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou } 314f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 326e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk public OrderedDataOutputStream setByteOrder(ByteOrder order) { 334f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou mByteBuffer.order(order); 346e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk return this; 354f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou } 364f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 376e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk public OrderedDataOutputStream writeShort(short value) throws IOException { 384f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou mByteBuffer.rewind(); 394f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou mByteBuffer.putShort(value); 404f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou out.write(mByteBuffer.array(), 0, 2); 416e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk return this; 426e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk } 434f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 446e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk public OrderedDataOutputStream writeInt(int value) throws IOException { 454f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou mByteBuffer.rewind(); 464f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou mByteBuffer.putInt(value); 474f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou out.write(mByteBuffer.array()); 486e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk return this; 494f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou } 504f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou 516e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk public OrderedDataOutputStream writeRational(Rational rational) throws IOException { 526e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk writeInt((int) rational.getNumerator()); 534f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou writeInt((int) rational.getDenominator()); 546e6a524390d8ddebce5de0dcc8ae258e652ec80aRuben Brunk return this; 554f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou } 564f529e7cada294befb66a1fc9b72b1aa164597dfEarl Ou} 57