WIP
[gtkpod:phantomjinx-gtkpod-plugin.git] / plugins / clarity / clarity_cover.h
1 /*
2  |  Copyright (C) 2002-2011 Jorg Schuler <jcsjcs at users sourceforge net>
3  |                                             Paul Richardson <phantom_sf at users.sourceforge.net>
4  |  Part of the gtkpod project.
5  |
6  |  URL: http://www.gtkpod.org/
7  |  URL: http://gtkpod.sourceforge.net/
8  |
9  |  This program is free software; you can redistribute it and/or modify
10  |  it under the terms of the GNU General Public License as published by
11  |  the Free Software Foundation; either version 2 of the License, or
12  |  (at your option) any later version.
13  |
14  |  This program is distributed in the hope that it will be useful,
15  |  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  |  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  |  GNU General Public License for more details.
18  |
19  |  You should have received a copy of the GNU General Public License
20  |  along with this program; if not, write to the Free Software
21  |  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22  |
23  |  iTunes and iPod are trademarks of Apple
24  |
25  |  This product is not supported/written/published by Apple!
26  |
27  */
28
29 /* inclusion guard */
30 #ifndef CLARITY_COVER_H_
31 #define CLARITY_COVER_H_
32
33 /* include any dependencies */
34 #include <gtk/gtk.h>
35 #include <clutter-gtk/clutter-gtk.h>
36 #include "libgtkpod/itdb.h"
37 #include "album_model.h"
38
39 /* GObject implementation */
40
41 /* declare this function signature to remove compilation errors with -Wall;
42  * the clarity_cover_get_type() function is actually added via the
43  * G_DEFINE_TYPE macro in the .c file
44  */
45 GType clarity_cover_get_type (void);
46
47 /* GObject type macros */
48 /* returns the class type identifier (GType) for ClarityCover */
49 #define CLARITY_TYPE_COVER            (clarity_cover_get_type ())
50
51 /* cast obj to a ClarityCover object structure*/
52 #define CLARITY_COVER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLARITY_TYPE_COVER, ClarityCover))
53
54 /* check whether obj is a ClarityCover */
55 #define CLARITY_IS_COVER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLARITY_TYPE_COVER))
56
57 /* cast klass to ClarityCoverClass class structure */
58 #define CLARITY_COVER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CLARITY_TYPE_COVER, ClarityCoverClass))
59
60 /* check whether klass is a member of the ClarityCoverClass */
61 #define CLARITY_IS_COVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLARITY_TYPE_COVER))
62
63 /* get the ClarityCoverClass structure for a ClarityCover obj */
64 #define CLARITY_COVER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CLARITY_TYPE_COVER, ClarityCoverClass))
65
66 /*
67  * Private instance fields; see
68  * http://www.gotw.ca/gotw/024.htm for the rationale
69  */
70 typedef struct _ClarityCoverPrivate ClarityCoverPrivate;
71 typedef struct _ClarityCover        ClarityCover;
72 typedef struct _ClarityCoverClass   ClarityCoverClass;
73
74 /* object structure */
75 struct _ClarityCover
76 {
77   /*<private>*/
78   ClutterActor parent_instance;
79
80   /* structure containing private members */
81   /*<private>*/
82   ClarityCoverPrivate *priv;
83 };
84
85 /* class structure */
86 struct _ClarityCoverClass
87 {
88   /*<private>*/
89   ClutterActorClass parent_class;
90 };
91
92 /* public API */
93
94 void clarity_cover_set_album_item (ClarityCover *self, AlbumItem *item);
95
96 gint clarity_cover_get_index(ClarityCover *self);
97
98 void clarity_cover_set_index(ClarityCover *self, gint index);
99
100 gchar *clarity_cover_get_title(ClarityCover *self);
101
102 gchar *clarity_cover_get_artist(ClarityCover *self);
103
104 gfloat clarity_cover_get_artwork_height(ClarityCover *self);
105
106 gfloat clarity_cover_get_artwork_width(ClarityCover *self);
107
108 /* constructor - note this returns a ClutterActor instance */
109 ClarityCover *clarity_cover_new (void);
110
111 void clarity_cover_destroy(ClutterActor *self);
112
113 #endif /* CLARITY_COVER_H_ */