Skip to content

Commit

Permalink
Commit source code
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsonlee committed Nov 16, 2017
1 parent 8133a39 commit 2d998a9
Show file tree
Hide file tree
Showing 17 changed files with 6,062 additions and 0 deletions.
41 changes: 41 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Generated by Mac OS X
.DS_Store

# Generated by VIM
.*.swp

# Generated by Gradle
.gradle
gradle
gradlew
gradlew.bat

# Generated by IDEA
.idea
*.iml

# Generated by Eclipse
.metadata
.settings
.project
.classpath
/bin/

# Generated by Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties

# Generated by IDE
local.properties

# Misc
*.log
*.bak

46 changes: 46 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.sdklite</groupId>
<artifactId>oss</artifactId>
<version>0.0.6</version>
</parent>

<groupId>com.android.gallery3d</groupId>
<artifactId>exif</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>${project.artifactId}</name>

<licenses>
<license>
<name>Apache License</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>

<scm>
<connection>scm:git:https://github.com/sdklite/${project.artifactId}.git</connection>
<developerConnection>scm:git:git@github.com:sdklite/${project.artifactId}.git</developerConnection>
<url>https://github.com/sdklite/${project.artifactId}</url>
<tag>HEAD</tag>
</scm>

<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/sdklite/${project.artifactId}/issues</url>
</issueManagement>

<developers>
<developer>
<id>johnsonlee</id>
<name>Johnson Lee</name>
<email>g.johnsonlee@gmail.com</email>
</developer>
</developers>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.android.gallery3d.exif;

/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import java.io.InputStream;
import java.nio.ByteBuffer;

class ByteBufferInputStream extends InputStream {
private ByteBuffer mBuf;

public ByteBufferInputStream(ByteBuffer buf) {
mBuf = buf;
}

@Override
public int read() {
if (!mBuf.hasRemaining()) {
return -1;
}
return mBuf.get() & 0xFF;
}

@Override
public int read(byte[] bytes, int off, int len) {
if (!mBuf.hasRemaining()) {
return -1;
}
len = Math.min(len, mBuf.remaining());
mBuf.get(bytes, off, len);
return len;
}
}
135 changes: 135 additions & 0 deletions src/main/java/com/android/gallery3d/exif/CountedDataInputStream.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
package com.android.gallery3d.exif;

/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import java.io.EOFException;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.Charset;

class CountedDataInputStream extends FilterInputStream {
private int mCount = 0;
// allocate a byte buffer for a long value;
private final byte[] mByteArray = new byte[8];
private final ByteBuffer mByteBuffer = ByteBuffer.wrap(mByteArray);

protected CountedDataInputStream(InputStream in) {
super(in);
}

public int getReadByteCount() {
return mCount;
}

@Override
public int read(byte[] b) throws IOException {
int r = in.read(b);
mCount += (r >= 0) ? r : 0;
return r;
}

@Override
public int read(byte[] b, int off, int len) throws IOException {
int r = in.read(b, off, len);
mCount += (r >= 0) ? r : 0;
return r;
}

@Override
public int read() throws IOException {
int r = in.read();
mCount += (r >= 0) ? 1 : 0;
return r;
}

@Override
public long skip(long length) throws IOException {
long skip = in.skip(length);
mCount += skip;
return skip;
}

public void skipOrThrow(long length) throws IOException {
if (skip(length) != length) throw new EOFException();
}

public void skipTo(long target) throws IOException {
long cur = mCount;
long diff = target - cur;
assert (diff >= 0);
skipOrThrow(diff);
}

public void readOrThrow(byte[] b, int off, int len) throws IOException {
int r = read(b, off, len);
if (r != len) throw new EOFException();
}

public void readOrThrow(byte[] b) throws IOException {
readOrThrow(b, 0, b.length);
}

public void setByteOrder(ByteOrder order) {
mByteBuffer.order(order);
}

public ByteOrder getByteOrder() {
return mByteBuffer.order();
}

public short readShort() throws IOException {
readOrThrow(mByteArray, 0, 2);
mByteBuffer.rewind();
return mByteBuffer.getShort();
}

public int readUnsignedShort() throws IOException {
return readShort() & 0xffff;
}

public int readInt() throws IOException {
readOrThrow(mByteArray, 0, 4);
mByteBuffer.rewind();
return mByteBuffer.getInt();
}

public long readUnsignedInt() throws IOException {
return readInt() & 0xffffffffL;
}

public long readLong() throws IOException {
readOrThrow(mByteArray, 0, 8);
mByteBuffer.rewind();
return mByteBuffer.getLong();
}

public String readString(int n) throws IOException {
byte[] buf = new byte[n];
readOrThrow(buf);
return new String(buf, "UTF8");
}

public String readString(int n, Charset charset) throws IOException {
byte[] buf = new byte[n];
readOrThrow(buf);
return new String(buf, charset);
}
}

Loading

0 comments on commit 2d998a9

Please sign in to comment.