/*
* Copyright (C) 2015 Jorge Ruesga
*
* 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.ruesga.android.wallpapers.photophase.model;
import android.support.annotation.NonNull;
import com.ruesga.android.wallpapers.photophase.PhotoFrame;
import java.util.UUID;
/**
* A class that holds a {@link PhotoFrame} disposition.
*/
public class Disposition implements Comparable<Disposition> {
public static final int BACKGROUND_FLAG = 0x01;
public static final int TRANSITION_FLAG = 0x02;
public static final int EFFECT_FLAG = 0x04;
public static final int BORDER_FLAG = 0x08;
public static final int ALL_FLAGS = BACKGROUND_FLAG | TRANSITION_FLAG
| EFFECT_FLAG | BORDER_FLAG;
/**
* An internal uid
*/
public String uid = UUID.randomUUID().toString();
/**
* Column
*/
public int x;
/**
* Row
*/
public int y;
/**
* Columns width
*/
public int w;
/**
* Rows height
*/
public int h;
/**
* Flags
*/
public int flags = ALL_FLAGS;
public boolean hasFlag(int f) {
return (flags & f) == f;
}
public void addFlag(int f) {
flags |= f;
}
public void removeFlag(int f) {
flags = flags & ~f;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + h;
result = prime * result + w;
result = prime * result + x;
result = prime * result + y;
result = prime * result + flags;
return result;
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings("SimplifiableIfStatement")
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Disposition other = (Disposition) obj;
if (h != other.h)
return false;
if (w != other.w)
return false;
if (x != other.x)
return false;
if (y != other.y)
return false;
return flags == other.flags;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return "Disposition [x=" + x + ", y=" + y + ", w=" + w + ", h=" + h + ", flags=" + flags + "]";
}
/**
* {@inheritDoc}
*/
@Override
public int compareTo(@NonNull Disposition another) {
if (x == another.x && y == another.y && w == another.w
&& h == another.h && flags == another.flags) {
return 0;
}
if (x < another.x) {
return -1;
}
if (x > another.x) {
return 1;
}
if (y < another.y) {
return -1;
}
if (y > another.y) {
return 1;
}
if (w < another.w) {
return -1;
}
if (w > another.w) {
return 1;
}
if (h < another.h) {
return -1;
}
if (h > another.h) {
return 1;
}
if (flags < another.flags) {
return -1;
}
return 1;
}
}