2 * Copyright © 2007,2008 Jaap Haitsma <jaap@haitsma.org>
3 * Copyright © 2007-2009 daniel g. siegel <dgsiegel@gnome.org>
4 * Copyright © 2008 Ryan zeigler <zeiglerr@gmail.com>
5 * Copyright © 2010 Yuvaraj Pandian T <yuvipanda@yuvi.in>
7 * Licensed under the GNU General Public License Version 2
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.
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.
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #ifndef __CHEESE_CAMERA_H__
25 #define __CHEESE_CAMERA_H__
27 #include <glib-object.h>
28 #include <clutter/clutter.h>
29 #include <cheese-camera-device.h>
30 #include <cheese-effect.h>
31 #include <gdk-pixbuf/gdk-pixbuf.h>
35 #define CHEESE_TYPE_CAMERA (cheese_camera_get_type ())
36 #define CHEESE_CAMERA(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CHEESE_TYPE_CAMERA, CheeseCamera))
37 #define CHEESE_CAMERA_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), CHEESE_TYPE_CAMERA, CheeseCameraClass))
38 #define CHEESE_IS_CAMERA(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CHEESE_TYPE_CAMERA))
39 #define CHEESE_IS_CAMERA_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CHEESE_TYPE_CAMERA))
40 #define CHEESE_CAMERA_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CHEESE_TYPE_CAMERA, CheeseCameraClass))
42 typedef struct _CheeseCameraPrivate CheeseCameraPrivate
;
43 typedef struct _CheeseCameraClass CheeseCameraClass
;
44 typedef struct _CheeseCamera CheeseCamera
;
48 * @photo_saved: invoked when a photo was saved to disk
49 * @photo_taken: invoked when a photo was taken
50 * @video_saved: invoked when a video was saved to disk
51 * @state_flags_changed: invoked when the state of the camera #GstElement
54 * Class for #CheeseCamera.
56 struct _CheeseCameraClass
59 GObjectClass parent_class
;
62 void (*photo_saved
)(CheeseCamera
*camera
);
63 void (*photo_taken
)(CheeseCamera
*camera
, GdkPixbuf
*pixbuf
);
64 void (*video_saved
)(CheeseCamera
*camera
);
65 void (*state_flags_changed
)(CheeseCamera
*camera
, GstState new_state
);
71 * Use the accessor functions below.
82 * @CHEESE_CAMERA_ERROR_UNKNOWN: unknown error
83 * @CHEESE_CAMERA_ERROR_ELEMENT_NOT_FOUND: a required GStreamer element was not
85 * @CHEESE_CAMERA_ERROR_NO_DEVICE: a #CheeseCameraDevice was not found
87 * Errors that can occur during camera setup, when calling
88 * cheese_camera_setup().
92 CHEESE_CAMERA_ERROR_UNKNOWN
,
93 CHEESE_CAMERA_ERROR_ELEMENT_NOT_FOUND
,
94 CHEESE_CAMERA_ERROR_NO_DEVICE
97 GType
cheese_camera_get_type (void);
98 CheeseCamera
*cheese_camera_new (ClutterActor
*video_texture
,
103 const CheeseVideoFormat
*cheese_camera_get_current_video_format (CheeseCamera
*camera
);
104 void cheese_camera_setup (CheeseCamera
*camera
, CheeseCameraDevice
*device
, GError
**error
);
105 void cheese_camera_play (CheeseCamera
*camera
);
106 void cheese_camera_stop (CheeseCamera
*camera
);
107 void cheese_camera_set_effect (CheeseCamera
*camera
, CheeseEffect
*effect
);
108 void cheese_camera_connect_effect_texture (CheeseCamera
*camera
,
109 CheeseEffect
*effect
,
110 ClutterActor
*texture
);
111 void cheese_camera_start_video_recording (CheeseCamera
*camera
, const gchar
*filename
);
112 void cheese_camera_stop_video_recording (CheeseCamera
*camera
);
113 gboolean
cheese_camera_take_photo (CheeseCamera
*camera
, const gchar
*filename
);
114 gboolean
cheese_camera_take_photo_pixbuf (CheeseCamera
*camera
);
115 CheeseCameraDevice
*cheese_camera_get_selected_device (CheeseCamera
*camera
);
116 GPtrArray
* cheese_camera_get_camera_devices (CheeseCamera
*camera
);
117 void cheese_camera_set_device (CheeseCamera
*camera
, CheeseCameraDevice
*device
);
118 void cheese_camera_switch_camera_device (CheeseCamera
*camera
);
119 GList
* cheese_camera_get_video_formats (CheeseCamera
*camera
);
120 void cheese_camera_set_video_format (CheeseCamera
*camera
,
121 CheeseVideoFormat
*format
);
122 gboolean
cheese_camera_get_balance_property_range (CheeseCamera
*camera
,
123 const gchar
*property
,
124 gdouble
*min
, gdouble
*max
, gdouble
*def
);
125 void cheese_camera_set_balance_property (CheeseCamera
*camera
, const gchar
*property
, gdouble value
);
126 void cheese_camera_toggle_effects_pipeline (CheeseCamera
*camera
, gboolean active
);
127 gchar
*cheese_camera_get_recorded_time (CheeseCamera
*camera
);
131 #endif /* __CHEESE_CAMERA_H__ */