/* CanvasDrawImageObject.java Copyright (c) 2015 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.host.canvas; import android.content.Intent; import org.deviceconnect.profile.CanvasProfileConstants; /** * Canvas Draw Image Object. * * @author NTT DOCOMO, INC. */ public class CanvasDrawImageObject { /** * Mode. */ public enum Mode { /** * non-scale mode. */ NON_SCALE_MODE, /** * scale mode. */ SCALE_MODE, /** * fill mode. */ FILL_MODE, } /** * Draw Canvas Action. */ public static final String ACTION_DRAW_CANVAS = "org.deviceconnect.android.deviceplugin.host.canvas.DRAW"; /** * Delete Canvas Action. */ public static final String ACTION_DELETE_CANVAS = "org.deviceconnect.android.deviceplugin.host.canvas.DELETE"; /** * datakind. */ private static final String DATAKIND = "drawImage"; /** * Intent Extra key. identifying value of data stored in the intent . */ private static final String EXTRA_DATAKIND = "datakind"; /** * intent extra key(data). */ private static final String EXTRA_DATA = "data"; /** * intent extra key(mode). */ private static final String EXTRA_MODE = "mode"; /** * intent extra key(x). */ private static final String EXTRA_X = "x"; /** * intent extra key(y). */ private static final String EXTRA_Y = "y"; /** * data. */ private String mData; /** * mode. */ private Mode mMode; /** * x. */ private double mX; /** * y. */ private double mY; /** * Constructor. */ public CanvasDrawImageObject() { mData = null; mMode = null; mX = 0.0; mY = 0.0; } /** * Constructor. * * @param data data * @param mode mode * @param x x * @param y y */ public CanvasDrawImageObject(final String data, final Mode mode, final double x, final double y) { mData = data; mMode = mode; mX = x; mY = y; } /** * Gets a data of image. * * @return data */ public String getData() { return mData; } /** * Gets a mode of rendering. * * @return mode */ public Mode getMode() { return mMode; } /** * Gets a x position. * * @return x position */ public double getX() { return mX; } /** * Gets a y position. * * @return y position */ public double getY() { return mY; } /** * Sets a CanvasDrawImageObject's data to intent. * * @param intent intent */ public void setValueToIntent(final Intent intent) { intent.putExtra(EXTRA_DATAKIND, DATAKIND); intent.putExtra(EXTRA_DATA, mData); intent.putExtra(EXTRA_MODE, mMode.ordinal()); intent.putExtra(EXTRA_X, mX); intent.putExtra(EXTRA_Y, mY); } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } CanvasDrawImageObject o = (CanvasDrawImageObject) obj; if (!mData.equals(o.mData)) { return false; } if (!mMode.equals(o.mMode)) { return false; } return true; } /** * Create a CanvasDrawImageObject from intent. * * @param intent intent * @return CanvasDrawImageObject or null on error */ public static CanvasDrawImageObject create(final Intent intent) { if (intent == null) { return null; } String kind = intent.getStringExtra(EXTRA_DATAKIND); if (!DATAKIND.equals(kind)) { return null; } CanvasDrawImageObject obj = new CanvasDrawImageObject(); obj.mData = intent.getStringExtra(EXTRA_DATA); int modeOrdinal = intent.getIntExtra(EXTRA_MODE, Mode.NON_SCALE_MODE.ordinal()); if (0 <= modeOrdinal && modeOrdinal < Mode.values().length) { obj.mMode = Mode.values()[modeOrdinal]; } else { obj.mMode = Mode.values()[0]; } obj.mX = intent.getDoubleExtra(EXTRA_X, 0.0); obj.mY = intent.getDoubleExtra(EXTRA_Y, 0.0); return obj; } /** * string mode convert to enum mode. * * @param mode string mode. * @return enum mode. */ public static Mode convertMode(final String mode) { if (mode == null || mode.equals("")) { return Mode.NON_SCALE_MODE; } else if (mode.equals(CanvasProfileConstants.Mode.SCALES.getValue())) { return Mode.SCALE_MODE; } else if (mode.equals(CanvasProfileConstants.Mode.FILLS.getValue())) { return Mode.FILL_MODE; } return null; } }