/*
* 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 com.cyrilmottier.polaris2.maps.Polaris;
import android.os.Parcel;
import android.os.Parcelable;
public final class MarkerOptions implements Parcelable {
public static final Parcelable.Creator<MarkerOptions> CREATOR = new Parcelable.Creator<MarkerOptions>() {
public MarkerOptions createFromParcel(Parcel in) {
return new MarkerOptions((com.google.android.gms.maps.model.MarkerOptions) in.readParcelable(null));
}
public MarkerOptions[] newArray(int size) {
return new MarkerOptions[size];
}
};
/**
* DO NOT USE. The original MarkerOptions.
*
* @hide
*/
public final com.google.android.gms.maps.model.MarkerOptions mOriginal;
private MarkerOptions mDefaultOptions;
public MarkerOptions() {
this(new com.google.android.gms.maps.model.MarkerOptions());
}
MarkerOptions(com.google.android.gms.maps.model.MarkerOptions original) {
mOriginal = original;
}
@Override
public int describeContents() {
return mOriginal.describeContents();
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeParcelable(mOriginal, flags);
}
public MarkerOptions anchor(float u, float v) {
mOriginal.anchor(u, v);
return this;
}
public MarkerOptions draggable(boolean draggable) {
mOriginal.draggable(draggable);
return this;
}
public float getAnchorU() {
return mOriginal.getAnchorU();
}
public float getAnchorV() {
return mOriginal.getAnchorV();
}
public BitmapDescriptor getIcon() {
final com.google.android.gms.maps.model.BitmapDescriptor original = mOriginal.getIcon();
return original == null ? null : new BitmapDescriptor(original);
}
public LatLng getPosition() {
final com.google.android.gms.maps.model.LatLng original = mOriginal.getPosition();
return original == null ? null : LatLng.obtain(original);
}
public String getSnippet() {
return mOriginal.getSnippet();
}
public String getTitle() {
return mOriginal.getTitle();
}
public MarkerOptions icon(BitmapDescriptor icon) {
mOriginal.icon(icon == null ? null : icon.mOriginal);
return this;
}
public boolean isDraggable() {
return mOriginal.isDraggable();
}
public boolean isVisible() {
return mOriginal.isVisible();
}
public MarkerOptions position(LatLng position) {
mOriginal.position(position == null ? null : position.mOriginal);
return this;
}
/**
* Reset the MarkerOptions by setting all of its properties to their default values.
*/
@Polaris
public void reset() {
if (mDefaultOptions == null) {
mDefaultOptions = new MarkerOptions();
}
anchor(mDefaultOptions.getAnchorU(), mDefaultOptions.getAnchorV());
draggable(mDefaultOptions.isDraggable());
icon(mDefaultOptions.getIcon());
position(mDefaultOptions.getPosition());
snippet(mDefaultOptions.getSnippet());
title(mDefaultOptions.getTitle());
visible(mDefaultOptions.isVisible());
}
public MarkerOptions snippet(String snippet) {
mOriginal.snippet(snippet);
return this;
}
public MarkerOptions title(String title) {
mOriginal.title(title);
return this;
}
public MarkerOptions visible(boolean visible) {
mOriginal.visible(visible);
return this;
}
}