blob: 9557d448b9a343cda9ff28360672a79f097901ab [file] [log] [blame]
Alexandre Lisiona8b78722013-12-13 10:18:33 -05001/*
Alexandre Lisionc1024c02014-01-06 11:12:53 -05002 * Copyright (C) 2004-2014 Savoir-Faire Linux Inc.
Alexandre Lisiona8b78722013-12-13 10:18:33 -05003 *
4 * Author: Adrien Beraud <adrien.beraud@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 *
20 * Additional permission under GNU GPL version 3 section 7:
21 *
22 * If you modify this program, or any covered work, by linking or
23 * combining it with the OpenSSL project's OpenSSL library (or a
24 * modified version of that library), containing parts covered by the
25 * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
26 * grants you additional permission to convey the resulting work.
27 * Corresponding Source for a non-source form of such a combination
28 * shall include the source code for the parts of OpenSSL used as well
29 * as that of the covered work.
30 */
31
Alexandre Lision064e1e02013-10-01 16:18:42 -040032package org.sflphone.model;
Adrien Béraud33268882013-05-18 03:41:15 +100033
Adrien Béraud0c9bd8f2013-05-30 16:16:57 +100034import android.content.Context;
35import android.graphics.Bitmap;
36import android.graphics.BitmapFactory;
Adrien Béraud33268882013-05-18 03:41:15 +100037import android.graphics.PointF;
Adrien Béraud0c9bd8f2013-05-30 16:16:57 +100038import android.graphics.RectF;
Adrien Béraud33268882013-05-18 03:41:15 +100039
40public class Attractor {
41
42 public interface Callback {
Adrien Béraudc9c424d2013-05-30 17:47:35 +100043
44 /**
45 * Called when a bubble is on the "active" zone of the attractor.
46 *
47 * @param b The bubble that is on the attractor.
48 * @return true if the bubble should be removed from the model, false otherwise.
49 */
50 public boolean onBubbleSucked(Bubble b);
Adrien Béraud33268882013-05-18 03:41:15 +100051 }
52
Adrien Béraud0c9bd8f2013-05-30 16:16:57 +100053 final PointF pos;
54 final float radius;
55
56 final Callback callback;
57 private final Bitmap img;
58
59 private final RectF bounds = new RectF();
60
Adrien Béraudc9c424d2013-05-30 17:47:35 +100061 public Attractor(PointF pos, float size, Callback callback, Bitmap img) {
Adrien Béraud33268882013-05-18 03:41:15 +100062 this.pos = pos;
Adrien Béraudc9c424d2013-05-30 17:47:35 +100063 this.radius = size/2;
Adrien Béraud33268882013-05-18 03:41:15 +100064 this.callback = callback;
Adrien Béraud0c9bd8f2013-05-30 16:16:57 +100065 this.img = img;
Adrien Béraud33268882013-05-18 03:41:15 +100066 }
Adrien Béraud0c9bd8f2013-05-30 16:16:57 +100067
68 public Attractor(PointF pos, float radius, Callback callback, Context c, int resId) {
69 this(pos, radius, callback, BitmapFactory.decodeResource(c.getResources(), resId));
70 }
71
72 public void setDensity(float density)
73 {
74 bounds.set(pos.x - radius*density, pos.y - radius*density, pos.x + radius*density, pos.y + radius*density);
75 }
76
77 public RectF getBounds() {
78 return bounds;
79 }
80
81 public Bitmap getBitmap() {
82 return img;
83 }
84
85}