Update Chinese (Taiwan) translation
[cheese.git] / libcheese / cheese-camera.h
blob6756dff70266e9a952af8b1cbb48d8d92f48ba85
1 /*
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>
33 G_BEGIN_DECLS
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;
46 /**
47 * CheeseCameraClass:
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
52 * changed
54 * Class for #CheeseCamera.
56 struct _CheeseCameraClass
58 /*< private >*/
59 GObjectClass parent_class;
61 /*< public >*/
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);
68 /**
69 * CheeseCamera:
71 * Use the accessor functions below.
73 struct _CheeseCamera
75 /*< private >*/
76 GObject parent;
77 void *unused;
80 /**
81 * CheeseCameraError:
82 * @CHEESE_CAMERA_ERROR_UNKNOWN: unknown error
83 * @CHEESE_CAMERA_ERROR_ELEMENT_NOT_FOUND: a required GStreamer element was not
84 * found
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().
90 typedef enum
92 CHEESE_CAMERA_ERROR_UNKNOWN,
93 CHEESE_CAMERA_ERROR_ELEMENT_NOT_FOUND,
94 CHEESE_CAMERA_ERROR_NO_DEVICE
95 } CheeseCameraError;
97 GType cheese_camera_get_type (void);
98 CheeseCamera *cheese_camera_new (ClutterActor *video_texture,
99 const gchar *name,
100 gint x_resolution,
101 gint y_resolution);
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);
129 G_END_DECLS
131 #endif /* __CHEESE_CAMERA_H__ */