/* * Copyright (C) 2013 Cyril Mottier (http://cyrilmottier.com) * * 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. */ package com.cyrilmottier.polaris2.maps.model; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; public final class CameraPosition implements Parcelable { public static final Parcelable.Creator<CameraPosition> CREATOR = new Parcelable.Creator<CameraPosition>() { public CameraPosition createFromParcel(Parcel in) { return new CameraPosition((com.google.android.gms.maps.model.CameraPosition) in.readParcelable(null)); } public CameraPosition[] newArray(int size) { return new CameraPosition[size]; } }; /** * <strong>DO NOT USE.</strong> * <p/> * The original (immutable) CameraPosition. * * @hide */ public final com.google.android.gms.maps.model.CameraPosition mOriginal; public final float bearing; public final LatLng target; public final float tilt; public final float zoom; private CameraPosition(com.google.android.gms.maps.model.CameraPosition original) { mOriginal = original; this.bearing = original.bearing; this.target = LatLng.obtain(original.target); this.tilt = original.tilt; this.zoom = original.zoom; } public static Builder builder() { return new Builder(); } public static Builder builder(CameraPosition cameraPosition) { return new Builder(cameraPosition); } public static CameraPosition createFromAttributes(Context context, AttributeSet attrs) { return new CameraPosition(com.google.android.gms.maps.model.CameraPosition.createFromAttributes(context, attrs)); } public static CameraPosition fromLatLngZoom(LatLng target, float zoom) { return new CameraPosition(com.google.android.gms.maps.model.CameraPosition.fromLatLngZoom(target == null ? null : target.mOriginal, zoom)); } /** * <strong>DO NOT USE.</strong> * <p/> * Obtain a new CameraPosition based on an original one. * * @param original The original CameraPosition instance. * @return A CameraPosition wrapper instance * @hide */ public static CameraPosition obtain(com.google.android.gms.maps.model.CameraPosition original) { return new CameraPosition(original); } @Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof CameraPosition)) { return false; } return mOriginal.equals(((CameraPosition) other).mOriginal); } @Override public int hashCode() { return mOriginal.hashCode(); } @Override public String toString() { return mOriginal.toString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeParcelable(mOriginal, flags); } public final static class Builder { private com.google.android.gms.maps.model.CameraPosition.Builder mOriginal; public Builder() { this(new com.google.android.gms.maps.model.CameraPosition.Builder()); } public Builder(CameraPosition previous) { this(new com.google.android.gms.maps.model.CameraPosition.Builder(previous == null ? null : previous.mOriginal)); } private Builder(com.google.android.gms.maps.model.CameraPosition.Builder original) { mOriginal = original; } public Builder bearing(float bearing) { mOriginal.bearing(bearing); return this; } public CameraPosition build() { return new CameraPosition(mOriginal.build()); } public Builder target(LatLng location) { mOriginal.target(location == null ? null : location.mOriginal); return this; } public Builder tilt(float tilt) { mOriginal.tilt(tilt); return this; } public Builder zoom(float zoom) { mOriginal.zoom(zoom); return this; } } }