[longomatch] Continue with players redesign
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Continue with players redesign
- Date: Wed, 24 Sep 2014 20:11:45 +0000 (UTC)
commit 5747ba48b5c3e62ce05a3ea9c0d677681c4019d3
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Thu Aug 21 17:37:58 2014 +0200
Continue with players redesign
Start using svg as preloaded Surfaces to match the design
Implement prelight in Canvas
LongoMatch.Core/Config.cs | 3 +-
LongoMatch.Core/Interfaces/Drawing/IDrawable.cs | 2 +-
LongoMatch.Core/Store/Drawables/Angle.cs | 2 +-
LongoMatch.Core/Store/Drawables/Counter.cs | 5 -
LongoMatch.Core/Store/Drawables/Cross.cs | 2 +-
LongoMatch.Core/Store/Drawables/Drawable.cs | 2 +-
LongoMatch.Core/Store/Drawables/Ellipse.cs | 2 +-
LongoMatch.Core/Store/Drawables/Line.cs | 2 +-
LongoMatch.Core/Store/Drawables/MultiPoints.cs | 2 +-
LongoMatch.Core/Store/Drawables/Quadrilateral.cs | 3 +-
LongoMatch.Core/Store/Drawables/Rectangle.cs | 2 +-
LongoMatch.Core/StyleConf.cs | 26 +++--
LongoMatch.Drawing.Cairo/CairoBackend.cs | 7 +-
LongoMatch.Drawing.Cairo/Surface.cs | 33 ++++-
LongoMatch.Drawing.Cairo/WidgetWrapper.cs | 10 +-
LongoMatch.Drawing/Canvas.cs | 46 +++++--
LongoMatch.Drawing/CanvasObjects/BenchObject.cs | 9 +-
LongoMatch.Drawing/CanvasObjects/CanvasObject.cs | 9 +-
LongoMatch.Drawing/CanvasObjects/FieldObject.cs | 9 +-
LongoMatch.Drawing/CanvasObjects/PlayerObject.cs | 90 +++++++++----
.../CanvasObjects/PlayersTaggerObject.cs | 142 +++++++++++++++++---
LongoMatch.Drawing/CanvasObjects/PositionObject.cs | 2 +-
LongoMatch.Drawing/CanvasObjects/TaggerObject.cs | 2 +-
LongoMatch.Drawing/CanvasObjects/TimeNodeObject.cs | 2 +-
LongoMatch.Drawing/CanvasObjects/TimelineObject.cs | 2 +-
LongoMatch.Drawing/Widgets/Dashboard.cs | 3 +
LongoMatch.Drawing/Widgets/TeamTagger.cs | 22 ++--
Tests/Core/Drawables/TestDrawable.cs | 2 +-
data/images/player/away-in.svg | 10 ++
data/images/player/away-number.svg | 8 +
data/images/player/away-out.svg | 10 ++
data/images/player/background.svg | 7 +
data/images/player/home-in.svg | 10 ++
data/images/player/home-number.svg | 8 +
data/images/player/home-out.svg | 10 ++
data/images/player/photo.svg | 63 +++++++++
36 files changed, 454 insertions(+), 115 deletions(-)
---
diff --git a/LongoMatch.Core/Config.cs b/LongoMatch.Core/Config.cs
index 2b9b58c..78a5a51 100644
--- a/LongoMatch.Core/Config.cs
+++ b/LongoMatch.Core/Config.cs
@@ -135,8 +135,7 @@ namespace LongoMatch
public static string ImagesDir {
get {
- return RelativeToPrefix(String.Format("share/{0}/images",
- Constants.SOFTWARE_NAME.ToLower()));
+ return Path.Combine (dataDir, "images");
}
}
diff --git a/LongoMatch.Core/Interfaces/Drawing/IDrawable.cs b/LongoMatch.Core/Interfaces/Drawing/IDrawable.cs
index 0c9b8cb..1def454 100644
--- a/LongoMatch.Core/Interfaces/Drawing/IDrawable.cs
+++ b/LongoMatch.Core/Interfaces/Drawing/IDrawable.cs
@@ -24,7 +24,7 @@ namespace LongoMatch.Interfaces.Drawing
public interface IMovableObject
{
bool Selected {get;set;}
- Selection GetSelection (Point point, double precision);
+ Selection GetSelection (Point point, double precision, bool inMotion=false);
void Move (Selection s, Point dst, Point start);
}
diff --git a/LongoMatch.Core/Store/Drawables/Angle.cs b/LongoMatch.Core/Store/Drawables/Angle.cs
index ba163bc..08128a6 100644
--- a/LongoMatch.Core/Store/Drawables/Angle.cs
+++ b/LongoMatch.Core/Store/Drawables/Angle.cs
@@ -61,7 +61,7 @@ namespace LongoMatch.Store.Drawables
}
}
- public override Selection GetSelection (Point p, double pr=0.05) {
+ public override Selection GetSelection (Point p, double pr=0.05, bool inMotion=false) {
if (p.Distance (Start) < pr) {
return new Selection (this, SelectionPosition.AngleStart, p.Distance (Start));
} else if (p.Distance (Stop) < pr) {
diff --git a/LongoMatch.Core/Store/Drawables/Counter.cs b/LongoMatch.Core/Store/Drawables/Counter.cs
index 1ad6a13..01c7e4b 100644
--- a/LongoMatch.Core/Store/Drawables/Counter.cs
+++ b/LongoMatch.Core/Store/Drawables/Counter.cs
@@ -36,11 +36,6 @@ namespace LongoMatch.Store.Drawables
get;
set;
}
-
- public Color TextColor {
- get;
- set;
- }
}
}
diff --git a/LongoMatch.Core/Store/Drawables/Cross.cs b/LongoMatch.Core/Store/Drawables/Cross.cs
index fe3dec9..5f7b24e 100644
--- a/LongoMatch.Core/Store/Drawables/Cross.cs
+++ b/LongoMatch.Core/Store/Drawables/Cross.cs
@@ -79,7 +79,7 @@ namespace LongoMatch.Store.Drawables
Stop = array[3];
}
- public override Selection GetSelection (Point p, double pr=0.05) {
+ public override Selection GetSelection (Point p, double pr=0.05, bool inMotion=false) {
double d;
Selection sel;
diff --git a/LongoMatch.Core/Store/Drawables/Drawable.cs b/LongoMatch.Core/Store/Drawables/Drawable.cs
index 997a69e..40b1845 100644
--- a/LongoMatch.Core/Store/Drawables/Drawable.cs
+++ b/LongoMatch.Core/Store/Drawables/Drawable.cs
@@ -62,7 +62,7 @@ namespace LongoMatch.Store.Drawables
public virtual void Reorder () {
}
- public virtual Selection GetSelection (Point point, double pr) {
+ public virtual Selection GetSelection (Point point, double pr, bool inMotion=false) {
Point[] vertices;
double d;
diff --git a/LongoMatch.Core/Store/Drawables/Ellipse.cs b/LongoMatch.Core/Store/Drawables/Ellipse.cs
index 4e50b9d..a0a0ad2 100644
--- a/LongoMatch.Core/Store/Drawables/Ellipse.cs
+++ b/LongoMatch.Core/Store/Drawables/Ellipse.cs
@@ -98,7 +98,7 @@ namespace LongoMatch.Store.Drawables
}
}
- public override Selection GetSelection (Point p, double pr=0.05) {
+ public override Selection GetSelection (Point p, double pr=0.05, bool inMotion=false) {
double d;
if (Selected) {
diff --git a/LongoMatch.Core/Store/Drawables/Line.cs b/LongoMatch.Core/Store/Drawables/Line.cs
index a918d57..88862a2 100644
--- a/LongoMatch.Core/Store/Drawables/Line.cs
+++ b/LongoMatch.Core/Store/Drawables/Line.cs
@@ -60,7 +60,7 @@ namespace LongoMatch.Store.Drawables
}
}
- public override Selection GetSelection (Point p, double pr=0.05) {
+ public override Selection GetSelection (Point p, double pr=0.05, bool inMotion=false) {
double d;
if (MatchPoint (Start, p, pr, out d)) {
diff --git a/LongoMatch.Core/Store/Drawables/MultiPoints.cs b/LongoMatch.Core/Store/Drawables/MultiPoints.cs
index 5f10c1c..d2deac1 100644
--- a/LongoMatch.Core/Store/Drawables/MultiPoints.cs
+++ b/LongoMatch.Core/Store/Drawables/MultiPoints.cs
@@ -45,7 +45,7 @@ namespace LongoMatch.Store.Drawables
}
}
- public override Selection GetSelection (Point p, double pr)
+ public override Selection GetSelection (Point p, double pr, bool inMotion=false)
{
Selection s = base.GetSelection (p, pr);
if (s != null) {
diff --git a/LongoMatch.Core/Store/Drawables/Quadrilateral.cs
b/LongoMatch.Core/Store/Drawables/Quadrilateral.cs
index 5a1c54a..c50a8ac 100644
--- a/LongoMatch.Core/Store/Drawables/Quadrilateral.cs
+++ b/LongoMatch.Core/Store/Drawables/Quadrilateral.cs
@@ -67,7 +67,8 @@ namespace LongoMatch.Store.Drawables
return new Area (new Point (xmin, ymin), xmax - xmin, ymax - ymin);
}
}
- public override Selection GetSelection (Point p, double pr) {
+
+ public override Selection GetSelection (Point p, double pr, bool inMotion=false) {
double xmin, xmax, ymin, ymax;
double d;
diff --git a/LongoMatch.Core/Store/Drawables/Rectangle.cs b/LongoMatch.Core/Store/Drawables/Rectangle.cs
index c9c8c90..6c9d08a 100644
--- a/LongoMatch.Core/Store/Drawables/Rectangle.cs
+++ b/LongoMatch.Core/Store/Drawables/Rectangle.cs
@@ -70,7 +70,7 @@ namespace LongoMatch.Store.Drawables
BottomRight = array[3];
}
- public override Selection GetSelection (Point p, double pr=0.05) {
+ public override Selection GetSelection (Point p, double pr=0.05, bool inMotion=false) {
Selection selection;
double d;
diff --git a/LongoMatch.Core/StyleConf.cs b/LongoMatch.Core/StyleConf.cs
index bbf3bb8..d1e3cb8 100644
--- a/LongoMatch.Core/StyleConf.cs
+++ b/LongoMatch.Core/StyleConf.cs
@@ -55,19 +55,25 @@ namespace LongoMatch.Common
public const int TimelineLabelVSpacing = 2;
public const int TimelineLineSize = 6;
+ public const string PlayerBackground = "player/background.svg";
+ public const string PlayerHomeNumber = "player/home-number.svg";
+ public const string PlayerAwayNumber = "player/away-number.svg";
+ public const string PlayerHomeIn = "player/home-in.svg";
+ public const string PlayerAwayIn = "player/away-in.svg";
+ public const string PlayerHomeOut = "player/home-out.svg";
+ public const string PlayerAwayOut = "player/away-out.svg";
+ public const string PlayerPhoto = "player/photo.svg";
+ public const int PlayerLineWidth = 2;
+ public const int PlayerNumberHeight = 17;
+ public const int PlayerNumberWidth = 26;
+ public const int PlayerNumberOffset = 17;
+ public const int PlayerArrowOffset = 14;
+ public const int PlayerArrowSize = 20;
+
+
public int BenchLineWidth = 2;
public int TeamTaggerBenchBorder = 10;
- public int PlayerSize = 60;
- public int PlayerBorder = 2;
- public int PlayerRadius = 2;
- public int PlayerTeamLineWidth = 2;
- public int PlayerNumberHeight = 17;
- public int PlayerNumberWidth = 26;
- public int PlayerNumberOffset = 17;
- public int PlayerArrowOffset = 14;
- public int PlayerArrowSize = 20;
-
public Color HomeTeamColor { get; set; }
public Color AwayTeamColor { get; set; }
diff --git a/LongoMatch.Drawing.Cairo/CairoBackend.cs b/LongoMatch.Drawing.Cairo/CairoBackend.cs
index c764395..5516ecb 100644
--- a/LongoMatch.Drawing.Cairo/CairoBackend.cs
+++ b/LongoMatch.Drawing.Cairo/CairoBackend.cs
@@ -129,7 +129,8 @@ namespace LongoMatch.Drawing.Cairo
public ISurface CreateSurface (string filename)
{
- return new Surface (filename);
+ Image img = Image.LoadFromFile (filename);
+ return CreateSurface (img.Width, img.Height, img);
}
public ISurface CreateSurface (int width, int height, Image image=null)
@@ -284,8 +285,8 @@ namespace LongoMatch.Drawing.Cairo
x = start.X + LineWidth / 2;
y = start.Y + LineWidth / 2;
- height -= LineWidth;
- width -= LineWidth;
+ height -= LineWidth / 2;
+ width -= LineWidth / 2;
if ((radius > height / 2) || (radius > width / 2))
radius = Math.Min (height / 2, width / 2);
diff --git a/LongoMatch.Drawing.Cairo/Surface.cs b/LongoMatch.Drawing.Cairo/Surface.cs
index cc7faf4..c659e72 100644
--- a/LongoMatch.Drawing.Cairo/Surface.cs
+++ b/LongoMatch.Drawing.Cairo/Surface.cs
@@ -15,15 +15,17 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
+using System;
using Cairo;
-using LongoMatch.Interfaces.Drawing;
using LongoMatch.Common;
+using LongoMatch.Interfaces.Drawing;
namespace LongoMatch.Drawing.Cairo
{
public class Surface: ISurface
{
ImageSurface surface;
+ bool disposed;
public Surface (int width, int height, Image image)
{
@@ -36,6 +38,30 @@ namespace LongoMatch.Drawing.Cairo
}
}
+ ~Surface ()
+ {
+ if (! disposed) {
+ Log.Error (String.Format ("Surface {0} was not disposed correctly", this));
+ Dispose (true);
+ }
+ }
+
+ public void Dispose(){
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ protected virtual void Dispose (bool disposing)
+ {
+ if (disposing) {
+ if (surface != null) {
+ surface.Dispose ();
+ }
+ surface = null;
+ disposed = true;
+ }
+ }
+
public Surface (string filename)
{
surface = new ImageSurface (filename);
@@ -72,11 +98,6 @@ namespace LongoMatch.Drawing.Cairo
Gdk.Pixbuf pixbuf = new Gdk.Pixbuf (tempFile);
return new Image (pixbuf);
}
-
- public void Dispose ()
- {
- surface.Dispose ();
- }
}
}
diff --git a/LongoMatch.Drawing.Cairo/WidgetWrapper.cs b/LongoMatch.Drawing.Cairo/WidgetWrapper.cs
index 9fbb5ed..5a9132c 100644
--- a/LongoMatch.Drawing.Cairo/WidgetWrapper.cs
+++ b/LongoMatch.Drawing.Cairo/WidgetWrapper.cs
@@ -39,7 +39,7 @@ namespace LongoMatch.Drawing.Cairo
DrawingArea widget;
int currentWidth, currentHeight;
double lastX, lastY;
- bool canMove;
+ bool canMove, inButtonPress;
uint moveTimerID, hoverTimerID;
public WidgetWrapper (DrawingArea widget)
@@ -258,8 +258,10 @@ namespace LongoMatch.Drawing.Cairo
lastX = args.Event.X;
lastY = args.Event.Y;
- if (MotionEvent != null && canMove) {
- MotionEvent (new Point (lastX, lastY));
+ if (MotionEvent != null) {
+ if (!inButtonPress || canMove) {
+ MotionEvent (new Point (lastX, lastY));
+ }
}
}
@@ -278,6 +280,7 @@ namespace LongoMatch.Drawing.Cairo
bm = ParseButtonModifier (args.Event.State);
ButtonReleasedEvent (new Point (args.Event.X, args.Event.Y), bt, bm);
}
+ inButtonPress = false;
}
void HandleButtonPressEvent (object o, ButtonPressEventArgs args)
@@ -286,6 +289,7 @@ namespace LongoMatch.Drawing.Cairo
* should be ignored. Start moving only when the button has been
* pressed for more than 200ms */
canMove = false;
+ inButtonPress = true;
moveTimerID = GLib.Timeout.Add (MoveWaitMS, ReadyToMove);
if (ButtonPressEvent != null) {
ButtonType bt;
diff --git a/LongoMatch.Drawing/Canvas.cs b/LongoMatch.Drawing/Canvas.cs
index 117e266..4e277cf 100644
--- a/LongoMatch.Drawing/Canvas.cs
+++ b/LongoMatch.Drawing/Canvas.cs
@@ -44,7 +44,7 @@ namespace LongoMatch.Drawing
scaleY = 1;
translation = new Point (0, 0);
}
-
+
~ Canvas ()
{
if (! disposed) {
@@ -53,9 +53,10 @@ namespace LongoMatch.Drawing
}
}
- public void Dispose(){
- Dispose(true);
- GC.SuppressFinalize(this);
+ public void Dispose ()
+ {
+ Dispose (true);
+ GC.SuppressFinalize (this);
}
protected virtual void Dispose (bool disposing)
@@ -115,6 +116,7 @@ namespace LongoMatch.Drawing
protected Point start;
uint lastTime;
Selection clickedSel;
+ CanvasObject highlighted;
public SelectionCanvas (IWidget widget): base (widget)
{
@@ -135,7 +137,7 @@ namespace LongoMatch.Drawing
get;
set;
}
-
+
public double Accuracy {
get;
set;
@@ -167,6 +169,26 @@ namespace LongoMatch.Drawing
protected virtual void CursorMoved (Point coords)
{
+ CanvasObject current;
+ Selection sel;
+
+ sel = GetSelection (coords, true);
+ if (sel == null) {
+ current = null;
+ } else {
+ current = sel.Drawable as CanvasObject;
+ }
+
+ if (current != highlighted) {
+ if (highlighted != null) {
+ highlighted.Highlighted = false;
+ }
+ if (current != null) {
+ current.Highlighted = true;
+ }
+ highlighted = current;
+ widget.ReDraw ();
+ }
}
protected virtual void SelectionMoved (Selection sel)
@@ -228,17 +250,17 @@ namespace LongoMatch.Drawing
widget.ReDraw (so);
}
- Selection GetSelection (Point coords)
+ Selection GetSelection (Point coords, bool inMotion=false)
{
Selection sel = null;
/* Try with the selected item first */
if (Selections.Count > 0) {
- sel = Selections.LastOrDefault ().Drawable.GetSelection (coords, Accuracy);
+ sel = Selections.LastOrDefault ().Drawable.GetSelection (coords, Accuracy,
inMotion);
}
if (sel == null) {
foreach (ICanvasSelectableObject co in Objects) {
- sel = co.GetSelection (coords, Accuracy);
+ sel = co.GetSelection (coords, Accuracy, inMotion);
if (sel != null) {
break;
}
@@ -301,15 +323,15 @@ namespace LongoMatch.Drawing
Selection sel;
coords = ToUserCoords (coords);
- if (Selections.Count == 0) {
- CursorMoved (coords);
- start = coords;
- } else if (moving) {
+ if (moving && Selections.Count != 0) {
sel = Selections [0];
sel.Drawable.Move (sel, coords, start);
widget.ReDraw (sel.Drawable);
SelectionMoved (sel);
start = coords;
+ } else {
+ CursorMoved (coords);
+ start = coords;
}
}
diff --git a/LongoMatch.Drawing/CanvasObjects/BenchObject.cs b/LongoMatch.Drawing/CanvasObjects/BenchObject.cs
index d485f7c..323fa99 100644
--- a/LongoMatch.Drawing/CanvasObjects/BenchObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/BenchObject.cs
@@ -35,6 +35,11 @@ namespace LongoMatch.Drawing.CanvasObjects
set;
}
+ public bool SubstitutionMode {
+ get;
+ set;
+ }
+
public Point Position {
get;
set;
@@ -94,13 +99,15 @@ namespace LongoMatch.Drawing.CanvasObjects
tk.LineStyle = LineStyle.Normal;
foreach (PlayerObject po in BenchPlayers) {
+ po.Playing = false;
+ po.SubstitutionMode = SubstitutionMode;
po.Draw (tk, area);
}
tk.End ();
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
Selection selection = null;
diff --git a/LongoMatch.Drawing/CanvasObjects/CanvasObject.cs
b/LongoMatch.Drawing/CanvasObjects/CanvasObject.cs
index 668742f..9909688 100644
--- a/LongoMatch.Drawing/CanvasObjects/CanvasObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/CanvasObject.cs
@@ -63,6 +63,11 @@ namespace LongoMatch.Drawing.CanvasObjects
set;
}
+ public virtual bool Highlighted {
+ get;
+ set;
+ }
+
public virtual bool Selected {
set;
get;
@@ -139,9 +144,9 @@ namespace LongoMatch.Drawing.CanvasObjects
}
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
- Selection sel = Drawable.GetSelection (point, precision);
+ Selection sel = Drawable.GetSelection (point, precision, inMotion);
if (sel != null) {
sel.Drawable = this;
}
diff --git a/LongoMatch.Drawing/CanvasObjects/FieldObject.cs b/LongoMatch.Drawing/CanvasObjects/FieldObject.cs
index b54292f..ff80412 100644
--- a/LongoMatch.Drawing/CanvasObjects/FieldObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/FieldObject.cs
@@ -53,6 +53,11 @@ namespace LongoMatch.Drawing.CanvasObjects
set;
}
+ public bool SubstitutionMode {
+ get;
+ set;
+ }
+
public void LoadTeams (Image backgroundImg, int[] homeF, int[] awayF,
List<PlayerObject> homeT, List<PlayerObject> awayT,
int size, int nteams)
@@ -132,18 +137,20 @@ namespace LongoMatch.Drawing.CanvasObjects
}
if (homePlayingPlayers != null) {
foreach (PlayerObject po in homePlayingPlayers) {
+ po.Playing = true;
po.Draw (tk, area);
}
}
if (awayPlayingPlayers != null) {
foreach (PlayerObject po in awayPlayingPlayers) {
+ po.Playing = true;
po.Draw (tk, area);
}
}
tk.End ();
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion)
{
Selection selection = null;
diff --git a/LongoMatch.Drawing/CanvasObjects/PlayerObject.cs
b/LongoMatch.Drawing/CanvasObjects/PlayerObject.cs
index cd29374..f79cfcd 100644
--- a/LongoMatch.Drawing/CanvasObjects/PlayerObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/PlayerObject.cs
@@ -37,7 +37,7 @@ namespace LongoMatch.Drawing.CanvasObjects
Player = player;
Init (position);
}
-
+
void Init (Point pos = null) {
if (pos == null) {
pos = new Point (0, 0);
@@ -49,6 +49,41 @@ namespace LongoMatch.Drawing.CanvasObjects
Toggle = true;
}
+ public ISurface Photo {
+ set;
+ protected get;
+ }
+
+ public ISurface Background {
+ set;
+ protected get;
+ }
+
+ public ISurface Number {
+ set;
+ protected get;
+ }
+
+ public ISurface Out {
+ set;
+ protected get;
+ }
+
+ public ISurface In {
+ set;
+ protected get;
+ }
+
+ public bool SubstitutionMode {
+ get;
+ set;
+ }
+
+ public bool Playing {
+ get;
+ set;
+ }
+
public Player Player {
get;
set;
@@ -91,7 +126,7 @@ namespace LongoMatch.Drawing.CanvasObjects
set;
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
Point position = new Point (Position.X - Width / 2, Position.Y - Height / 2);
@@ -114,7 +149,7 @@ namespace LongoMatch.Drawing.CanvasObjects
double size, scale;
zero = new Point (0, 0);
- size = Config.Style.PlayerSize;
+ size = Background.Height - StyleConf.PlayerLineWidth;
scale = Width / size;
tk.Begin ();
@@ -122,36 +157,33 @@ namespace LongoMatch.Drawing.CanvasObjects
new Point (scale, scale));
/* Background */
- tk.LineStyle = LineStyle.Normal;
- tk.LineWidth = Config.Style.PlayerBorder;
- tk.FillColor = Config.Style.PaletteBackgroundDark;
- tk.StrokeColor = Config.Style.PaletteBackgroundDark;
- tk.DrawRoundedRectangle (zero, size, size, Config.Style.PlayerRadius);
+ tk.DrawSurface (Background, zero);
- if (!DrawPhoto || Player.Photo == null) {
- numberHeight = size;
- numberWidth = Config.Style.PlayerNumberWidth;
- p = new Point (Config.Style.PlayerNumberOffset, 0);
- } else {
- /* Image */
+ /* Image */
+ if (Player.Photo != null) {
tk.DrawImage (zero, size, size, Player.Photo, true);
- numberHeight = Config.Style.PlayerNumberHeight;
- numberWidth = Config.Style.PlayerNumberWidth;
- p = new Point (Config.Style.PlayerNumberOffset, size - numberHeight);
+ } else {
+ tk.DrawSurface (Photo, zero);
}
+ numberHeight = StyleConf.PlayerNumberHeight;
+ numberWidth = StyleConf.PlayerNumberWidth;
+ p = new Point (StyleConf.PlayerNumberOffset, size - numberHeight);
/* Draw background */
- tk.FillColor = Color;
- tk.StrokeColor = Color;
- tk.LineWidth = 0;
- tk.DrawRoundedRectangle (p, numberWidth, numberHeight, Config.Style.PlayerRadius);
+ tk.DrawSurface (Number, zero);
+
+ /* Draw Arrow */
+ if (SubstitutionMode && (Highlighted || Active)) {
+ ISurface arrow;
- /* Draw bottom Line */
- tk.StrokeColor = Color;
- tk.FillColor = Color;
- tk.LineWidth = Config.Style.PlayerBorder;
- tk.DrawRoundedRectangle (new Point (0, size - Config.Style.PlayerTeamLineWidth),
- size, Config.Style.PlayerTeamLineWidth + 1, 2);
+ if (Playing) {
+ arrow = Out;
+ } else {
+ arrow = In;
+ }
+ tk.DrawSurface (arrow, new Point (Background.Width / 2 - In.Width / 2,
+ Background.Height / 2 - In.Height / 2));
+ }
/* Draw number */
tk.FillColor = Color.White;
@@ -167,10 +199,10 @@ namespace LongoMatch.Drawing.CanvasObjects
/* Selection line */
if (Active) {
tk.LineStyle = LineStyle.Normal;
- tk.LineWidth = Config.Style.PlayerBorder;
+ tk.LineWidth = StyleConf.PlayerLineWidth;
tk.FillColor = null;
tk.StrokeColor = Config.Style.PaletteActive;
- tk.DrawRoundedRectangle (zero, size + 1, size + 1, Config.Style.PlayerRadius);
+ tk.DrawRoundedRectangle (zero, size + 1, size + 1, StyleConf.PlayerLineWidth);
}
tk.End ();
diff --git a/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
b/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
index a551624..e769b09 100644
--- a/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
@@ -24,6 +24,7 @@ using LongoMatch.Common;
using LongoMatch.Store.Drawables;
using LongoMatch.Store;
using LongoMatch.Handlers;
+using System.IO;
namespace LongoMatch.Drawing.CanvasObjects
{
@@ -35,10 +36,11 @@ namespace LongoMatch.Drawing.CanvasObjects
* For this reason we can't use the canvas selection logic and we have
* to handle it internally
*/
-
public event PlayersSubstitutionHandler PlayersSubstitutionEvent;
public event PlayersSelectionChangedHandler PlayersSelectionChangedEvent;
-
+ /* Cached surfaces reused by player objects */
+ ISurface backgroundSurface, homeNumberSurface, awayNumberSurface, photoSurface;
+ ISurface homeInSurface, homeOutSurface, awayInSurface, awayOutSurface;
TeamTemplate homeTeam, awayTeam;
Image background;
List<PlayerObject> homePlayingPlayers, awayPlayingPlayers;
@@ -49,6 +51,7 @@ namespace LongoMatch.Drawing.CanvasObjects
FieldObject field;
int NTeams;
Point offset;
+ bool substitutionMode;
double scaleX, scaleY;
public PlayersTaggerObject ()
@@ -58,6 +61,45 @@ namespace LongoMatch.Drawing.CanvasObjects
awayBench = new BenchObject ();
field = new FieldObject ();
SelectedPlayers = new List<Player> ();
+ LoadSurfaces ();
+ }
+
+ protected override void Dispose (bool disposing)
+ {
+ ClearPlayers ();
+ if (photoSurface != null) {
+ photoSurface.Dispose ();
+ photoSurface = null;
+ }
+ if (backgroundSurface != null) {
+ backgroundSurface.Dispose ();
+ backgroundSurface = null;
+ }
+ if (homeNumberSurface != null) {
+ homeNumberSurface.Dispose ();
+ homeNumberSurface = null;
+ }
+ if (awayNumberSurface != null) {
+ awayNumberSurface.Dispose ();
+ awayNumberSurface = null;
+ }
+ if (homeOutSurface != null) {
+ homeOutSurface.Dispose ();
+ homeOutSurface = null;
+ }
+ if (awayOutSurface != null) {
+ awayOutSurface.Dispose ();
+ awayOutSurface = null;
+ }
+ if (homeInSurface != null) {
+ homeInSurface.Dispose ();
+ homeInSurface = null;
+ }
+ if (awayInSurface != null) {
+ awayInSurface.Dispose ();
+ awayInSurface = null;
+ }
+ base.Dispose (disposing);
}
public Point Position {
@@ -76,16 +118,22 @@ namespace LongoMatch.Drawing.CanvasObjects
}
public bool SubstitutionMode {
- get;
- set;
+ get {
+ return substitutionMode;
+ }
+ set {
+ substitutionMode = value;
+ homeBench.SubstitutionMode = awayBench.SubstitutionMode =
field.SubstitutionMode = value;
+ }
}
-
+
public List<Player> SelectedPlayers {
get;
set;
}
- public void Reload () {
+ public void Reload ()
+ {
LoadTeams (homeTeam, awayTeam, background);
}
@@ -107,7 +155,7 @@ namespace LongoMatch.Drawing.CanvasObjects
player.Active = false;
}
}
-
+
public void Substitute (Player p1, Player p2, TeamTemplate team)
{
if (team == homeTeam) {
@@ -139,6 +187,7 @@ namespace LongoMatch.Drawing.CanvasObjects
field.Width = 300;
field.Height = 250;
}
+ ClearPlayers ();
homePlayingPlayers = awayPlayingPlayers = null;
homePlayers = new List<PlayerObject> ();
@@ -181,6 +230,39 @@ namespace LongoMatch.Drawing.CanvasObjects
Update ();
}
+ void ClearPlayers ()
+ {
+ if (homePlayers != null) {
+ foreach (PlayerObject po in homePlayers) {
+ po.Dispose ();
+ homePlayers = null;
+ }
+ }
+ if (awayPlayers != null) {
+ foreach (PlayerObject po in awayPlayers) {
+ po.Dispose ();
+ awayPlayers = null;
+ }
+ }
+ }
+
+ ISurface CreateSurface (string name)
+ {
+
+ return Config.DrawingToolkit.CreateSurface (Path.Combine (Config.ImagesDir, name));
+ }
+
+ void LoadSurfaces ()
+ {
+ photoSurface = CreateSurface (StyleConf.PlayerPhoto);
+ backgroundSurface = CreateSurface (StyleConf.PlayerBackground);
+ homeNumberSurface = CreateSurface (StyleConf.PlayerHomeNumber);
+ awayNumberSurface = CreateSurface (StyleConf.PlayerAwayNumber);
+ homeOutSurface = CreateSurface (StyleConf.PlayerHomeOut);
+ awayOutSurface = CreateSurface (StyleConf.PlayerAwayOut);
+ homeInSurface = CreateSurface (StyleConf.PlayerHomeIn);
+ awayInSurface = CreateSurface (StyleConf.PlayerAwayIn);
+ }
void Substitute (PlayerObject p1, PlayerObject p2,
List<PlayerObject> playingPlayers,
@@ -245,16 +327,27 @@ namespace LongoMatch.Drawing.CanvasObjects
{
List<PlayerObject> playerObjects;
Color color = null;
+ ISurface number, sin, sout;
if (team == Team.LOCAL) {
color = Config.Style.HomeTeamColor;
+ number = homeNumberSurface;
+ sin = homeInSurface;
+ sout = homeOutSurface;
} else {
color = Config.Style.AwayTeamColor;
+ number = awayNumberSurface;
+ sin = awayInSurface;
+ sout = awayOutSurface;
}
playerObjects = new List<PlayerObject> ();
foreach (Player p in players) {
- PlayerObject po = new PlayerObject { Player = p, Color = color, Team = team };
+ PlayerObject po = new PlayerObject { Player = p, Color = color,
+ Team = team, Background = backgroundSurface,
+ Number = number, In = sin, Out = sout,
+ SubstitutionMode = SubstitutionMode,
+ Photo = photoSurface };
po.ClickedEvent += HandleClickedEvent;
playerObjects.Add (po);
}
@@ -303,18 +396,18 @@ namespace LongoMatch.Drawing.CanvasObjects
}
point = Utils.ToUserCoords (point, offset, scaleX, scaleY);
- selection = homeBench.GetSelection (point, 0);
+ selection = homeBench.GetSelection (point, 0, false);
if (selection == null) {
- selection = awayBench.GetSelection (point, 0);
+ selection = awayBench.GetSelection (point, 0, false);
if (selection == null) {
- selection = field.GetSelection (point, 0);
+ selection = field.GetSelection (point, 0, false);
}
}
if (selection != null) {
clickedPlayer = selection.Drawable as PlayerObject;
if (SubstitutionMode && substitutionPlayer != null &&
clickedPlayer.Team != substitutionPlayer.Team) {
- clickedPlayer= null;
+ clickedPlayer = null;
} else {
(selection.Drawable as ICanvasObject).ClickPressed (point, modif);
}
@@ -354,13 +447,28 @@ namespace LongoMatch.Drawing.CanvasObjects
tk.End ();
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
- if (point.X < Position.X || point.X > Position.X + Width ||
- point.Y < Position.Y || point.Y > Position.Y + Height) {
- return null;
+ Selection sel = null;
+
+ if (!inMotion) {
+ if (point.X < Position.X || point.X > Position.X + Width ||
+ point.Y < Position.Y || point.Y > Position.Y + Height) {
+ sel = null;
+ } else {
+ sel = new Selection (this, SelectionPosition.All, 0);
+ }
+ } else {
+ point = Utils.ToUserCoords (point, offset, scaleX, scaleY);
+ sel = homeBench.GetSelection (point, 0, false);
+ if (sel == null) {
+ sel = awayBench.GetSelection (point, 0, false);
+ if (sel == null) {
+ sel = field.GetSelection (point, 0, false);
+ }
+ }
}
- return new Selection (this, SelectionPosition.All, 0);
+ return sel;
}
public void Move (Selection s, Point p, Point start)
diff --git a/LongoMatch.Drawing/CanvasObjects/PositionObject.cs
b/LongoMatch.Drawing/CanvasObjects/PositionObject.cs
index ba16578..2020388 100644
--- a/LongoMatch.Drawing/CanvasObjects/PositionObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/PositionObject.cs
@@ -82,7 +82,7 @@ namespace LongoMatch.Drawing.CanvasObjects
}
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
if (point.Distance (Start) < precision) {
return new Selection (this, SelectionPosition.LineStart);
diff --git a/LongoMatch.Drawing/CanvasObjects/TaggerObject.cs
b/LongoMatch.Drawing/CanvasObjects/TaggerObject.cs
index bc7d7bd..1a6fabe 100644
--- a/LongoMatch.Drawing/CanvasObjects/TaggerObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/TaggerObject.cs
@@ -74,7 +74,7 @@ namespace LongoMatch.Drawing.CanvasObjects
set;
}
- public virtual Selection GetSelection (Point p, double precision)
+ public Selection GetSelection (Point p, double precision, bool inMotion=false)
{
Selection s;
diff --git a/LongoMatch.Drawing/CanvasObjects/TimeNodeObject.cs
b/LongoMatch.Drawing/CanvasObjects/TimeNodeObject.cs
index 22d0c3a..77ac924 100644
--- a/LongoMatch.Drawing/CanvasObjects/TimeNodeObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/TimeNodeObject.cs
@@ -95,7 +95,7 @@ namespace LongoMatch.Drawing.CanvasObjects
}
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
double accuracy;
if (point.Y >= OffsetY && point.Y < OffsetY + Height) {
diff --git a/LongoMatch.Drawing/CanvasObjects/TimelineObject.cs
b/LongoMatch.Drawing/CanvasObjects/TimelineObject.cs
index f1b9f7a..efa01af 100644
--- a/LongoMatch.Drawing/CanvasObjects/TimelineObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/TimelineObject.cs
@@ -126,7 +126,7 @@ namespace LongoMatch.Drawing.CanvasObjects
tk.End ();
}
- public Selection GetSelection (Point point, double precision)
+ public Selection GetSelection (Point point, double precision, bool inMotion=false)
{
Selection selection = null;
diff --git a/LongoMatch.Drawing/Widgets/Dashboard.cs b/LongoMatch.Drawing/Widgets/Dashboard.cs
index ddc6de8..8199454 100644
--- a/LongoMatch.Drawing/Widgets/Dashboard.cs
+++ b/LongoMatch.Drawing/Widgets/Dashboard.cs
@@ -187,6 +187,9 @@ namespace LongoMatch.Drawing.Widgets
void LoadTemplate ()
{
+ foreach (CanvasObject co in Objects) {
+ co.Dispose ();
+ }
Objects.Clear ();
foreach (TagButton tag in template.CommonTags) {
TagObject to = new TagObject (tag);
diff --git a/LongoMatch.Drawing/Widgets/TeamTagger.cs b/LongoMatch.Drawing/Widgets/TeamTagger.cs
index 5b18493..1366916 100644
--- a/LongoMatch.Drawing/Widgets/TeamTagger.cs
+++ b/LongoMatch.Drawing/Widgets/TeamTagger.cs
@@ -25,6 +25,7 @@ using LongoMatch.Store.Templates;
using LongoMatch.Drawing.CanvasObjects;
using LongoMatch.Store;
using LongoMatch.Handlers;
+using System.IO;
namespace LongoMatch.Drawing.Widgets
{
@@ -33,9 +34,7 @@ namespace LongoMatch.Drawing.Widgets
public event PlayersSelectionChangedHandler PlayersSelectionChangedEvent;
public event PlayersPropertiesHandler ShowMenuEvent;
-
PlayersTaggerObject tagger;
- Point offset;
MultiSelectionMode prevMode;
bool inSubs;
@@ -51,13 +50,14 @@ namespace LongoMatch.Drawing.Widgets
Objects.Add (tagger);
}
- public void LoadTeams (TeamTemplate homeTeam, TeamTemplate awayTeam, Image background)
+ public void LoadTeams (TeamTemplate homeTeam, TeamTemplate awayTeam, Image background)
{
tagger.LoadTeams (homeTeam, awayTeam, background);
widget.ReDraw ();
}
-
- public void Reload () {
+
+ public void Reload ()
+ {
tagger.Reload ();
}
@@ -66,26 +66,28 @@ namespace LongoMatch.Drawing.Widgets
tagger.SubstitutionMode = value;
}
}
-
- public void Select (Player p) {
+
+ public void Select (Player p)
+ {
}
-
+
protected override void ShowMenu (Point coords)
{
Selection sel = tagger.GetSelection (coords, 0);
if (sel != null && ShowMenuEvent != null) {
PlayerObject po = sel.Drawable as PlayerObject;
- ShowMenuEvent (new List<Player> {po.Player});
+ ShowMenuEvent (new List<Player> { po.Player });
}
}
+
void HandleSizeChangedEvent ()
{
tagger.Width = widget.Width;
tagger.Height = widget.Height;
}
-
+
void HandlePlayersSubstitutionEvent (Player p1, Player p2, TeamTemplate team)
{
team.List.Swap (p1, p2);
diff --git a/Tests/Core/Drawables/TestDrawable.cs b/Tests/Core/Drawables/TestDrawable.cs
index df06ba3..e825540 100644
--- a/Tests/Core/Drawables/TestDrawable.cs
+++ b/Tests/Core/Drawables/TestDrawable.cs
@@ -24,7 +24,7 @@ namespace Tests.Core.Drawables
{
public class DrawableImp: Drawable
{
- public override Selection GetSelection (Point point, double precision)
+ public override Selection GetSelection (Point point, double precision, bool inMotion=false)
{
throw new System.NotImplementedException ();
}
diff --git a/data/images/player/away-in.svg b/data/images/player/away-in.svg
new file mode 100644
index 0000000..278c5de
--- /dev/null
+++ b/data/images/player/away-in.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="26px" height="20px" viewBox="0 0 26 20" enable-background="new 0 0 26 20"
xml:space="preserve">
+<path id="reply_3_" fill="#D33B37"
d="M0.181,19.463c0.019-0.359,0.547-5.609,16.023-5.609v4.81c0,0.326,0.196,0.622,0.503,0.741
+ c0.098,0.041,0.195,0.062,0.299,0.062c0.211,0,0.426-0.088,0.582-0.248l7.916-8.674l0.012-0.015
+
c0.164-0.167,0.318-0.462,0.303-0.678c0.011-0.236-0.067-0.447-0.313-0.695l-7.916-8.671c-0.155-0.162-0.371-0.249-0.582-0.249
+
c-0.103,0-0.2,0.018-0.299,0.057c-0.306,0.125-0.503,0.418-0.503,0.746v4.807C16.204,5.845,0.2,6.612,0.181,19.463z"/>
+</svg>
diff --git a/data/images/player/away-number.svg b/data/images/player/away-number.svg
new file mode 100644
index 0000000..ed3aaf5
--- /dev/null
+++ b/data/images/player/away-number.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60"
xml:space="preserve">
+<path fill="#D33B37"
d="M43,57V44c0-1.104-0.594-2-1.698-2h-22C18.197,42,17,42.896,17,44v13H0v0.5C0,58.881,1.325,60,2.706,60h55
+ C59.087,60,60,58.881,60,57.5V57H43z"/>
+</svg>
diff --git a/data/images/player/away-out.svg b/data/images/player/away-out.svg
new file mode 100644
index 0000000..5bd5472
--- /dev/null
+++ b/data/images/player/away-out.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="26px" height="20px" viewBox="0 0 26 20" enable-background="new 0 0 26 20"
xml:space="preserve">
+<path id="reply_3_" fill="#D33B37"
d="M9.74,5.845V1.038c0-0.328-0.197-0.621-0.502-0.746C9.14,0.253,9.041,0.235,8.939,0.235
+
c-0.212,0-0.426,0.087-0.582,0.249L0.44,9.155C0.194,9.403,0.116,9.614,0.127,9.85c-0.016,0.216,0.138,0.512,0.301,0.679
+
l0.012,0.014l7.917,8.674c0.156,0.16,0.37,0.248,0.582,0.248c0.102,0,0.201-0.02,0.299-0.061c0.305-0.12,0.502-0.415,0.502-0.742
+ v-4.809c15.477,0,16.005,5.25,16.023,5.61C25.745,6.612,9.74,5.845,9.74,5.845z"/>
+</svg>
diff --git a/data/images/player/background.svg b/data/images/player/background.svg
new file mode 100644
index 0000000..1e1efdd
--- /dev/null
+++ b/data/images/player/background.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60"
xml:space="preserve">
+<path fill="#151A20" d="M60,2c0-1.381-0.913-2-2.294-2h-55C1.325,0,0,0.619,0,2v55h60V2z"/>
+</svg>
diff --git a/data/images/player/home-in.svg b/data/images/player/home-in.svg
new file mode 100644
index 0000000..e4c5510
--- /dev/null
+++ b/data/images/player/home-in.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="26px" height="20px" viewBox="0 0 26 20" enable-background="new 0 0 26 20"
xml:space="preserve">
+<path id="reply_3_" fill="#0180AC"
d="M0.181,19.463c0.019-0.359,0.547-5.609,16.023-5.609v4.809c0,0.326,0.197,0.622,0.503,0.742
+ c0.098,0.041,0.196,0.061,0.299,0.061c0.211,0,0.426-0.088,0.582-0.248l7.916-8.674l0.012-0.014
+
c0.164-0.167,0.318-0.463,0.302-0.679c0.011-0.236-0.067-0.447-0.313-0.695l-7.916-8.671c-0.156-0.162-0.371-0.249-0.582-0.249
+
c-0.103,0-0.201,0.018-0.299,0.057c-0.306,0.125-0.503,0.418-0.503,0.746v4.807C16.204,5.845,0.2,6.612,0.181,19.463z"/>
+</svg>
diff --git a/data/images/player/home-number.svg b/data/images/player/home-number.svg
new file mode 100644
index 0000000..5049a99
--- /dev/null
+++ b/data/images/player/home-number.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="60px" height="60px" viewBox="0 0 60 60" enable-background="new 0 0 60 60"
xml:space="preserve">
+<path fill="#0180AC"
d="M43,57V44c0-1.104-0.594-2-1.698-2h-22C18.197,42,17,42.896,17,44v13H0v0.5C0,58.881,1.325,60,2.706,60h55
+ C59.087,60,60,58.881,60,57.5V57H43z"/>
+</svg>
diff --git a/data/images/player/home-out.svg b/data/images/player/home-out.svg
new file mode 100644
index 0000000..cfb6af6
--- /dev/null
+++ b/data/images/player/home-out.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="26px" height="20px" viewBox="0 0 26 20" enable-background="new 0 0 26 20"
xml:space="preserve">
+<path id="reply_3_" fill="#0180AC"
d="M9.74,5.845V1.038c0-0.328-0.197-0.621-0.502-0.746C9.14,0.253,9.041,0.235,8.939,0.235
+
c-0.212,0-0.426,0.087-0.582,0.249L0.44,9.155C0.194,9.403,0.116,9.614,0.127,9.85c-0.016,0.216,0.138,0.512,0.301,0.679
+
l0.012,0.014l7.917,8.674c0.156,0.16,0.37,0.248,0.582,0.248c0.102,0,0.201-0.02,0.299-0.061c0.305-0.12,0.502-0.415,0.502-0.742
+ v-4.809c15.477,0,16.005,5.25,16.023,5.61C25.745,6.612,9.74,5.845,9.74,5.845z"/>
+</svg>
diff --git a/data/images/player/photo.svg b/data/images/player/photo.svg
new file mode 100644
index 0000000..7f74b17
--- /dev/null
+++ b/data/images/player/photo.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ width="60.00016"
+ height="60"
+ viewBox="0 0 60.00016 60"
+ enable-background="new 0 0 36 36"
+ xml:space="preserve"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="photo.svg"><metadata
+ id="metadata13"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs11" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1059"
+ inkscape:window-height="754"
+ id="namedview9"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="5.8727203"
+ inkscape:cx="19.268877"
+ inkscape:cy="30.001267"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="Layer_1" /><path
+ id="plus_12_"
+ d="m 1742.6266,845.451 c -0.297,0 -0.535,-0.238 -0.535,-0.535 v -5.23 h -5.229 c -0.298,0 -0.537,-0.239
-0.537,-0.534 v -3.461 c 0,-0.298 0.239,-0.535 0.537,-0.535 h 5.229 v -5.23 c 0,-0.299 0.238,-0.537
0.535,-0.537 h 3.461 c 0.296,0 0.536,0.238 0.536,0.537 v 5.23 h 5.229 c 0.298,0 0.537,0.237 0.537,0.535 v
3.461 c 0,0.295 -0.239,0.534 -0.537,0.534 h -5.229 v 5.23 c 0,0.297 -0.24,0.535 -0.536,0.535 h -3.461 z"
+ inkscape:connector-curvature="0"
+ style="fill:#6a6a6a" /><g
+ id="usericon"
+ transform="matrix(2.1595997,0,0,2.1596717,-8.8716356,-8.874091)"><path
+ d="m 30.156,26.683 -9.551,-3.474 h -5.21 l -9.55,3.474 c 0,0 -1.737,0.27 -1.737,1.735 v 1.738 c
0,0.959 0.778,1.735 1.737,1.735 h 24.311 c 0.959,0 1.735,-0.776 1.735,-1.735 v -1.738 c 0.001,-1.439
-1.735,-1.735 -1.735,-1.735 z"
+ id="path5"
+ inkscape:connector-curvature="0"
+ style="fill:#6a6a6a" /><path
+ d="m 18,21.474 c 4.341,0 6.945,-4.07 6.945,-6.946 v -4.342 c 0,-2.874 -3.109,-6.077 -6.945,-6.077
-3.835,0 -6.946,3.203 -6.946,6.077 v 4.342 c 0,2.603 2.604,6.946 6.946,6.946 z"
+ id="path7"
+ inkscape:connector-curvature="0"
+ style="fill:#6a6a6a" /></g></svg>
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]