b039acac3247a6ef5ecafe6505529c15a553f96b
[platform/upstream/gst-plugins-good.git] / ext / pango / gsttextoverlay.h
1 /* -*- Mode: C; c-file-style: "stroustrup" -*- */
2 #ifndef __GST_TEXTOVERLAY_H__
3 #define __GST_TEXTOVERLAY_H__
4
5 #include <gst/gst.h>
6 #include <pango/pangoft2.h>
7
8 G_BEGIN_DECLS
9
10 #define GST_TYPE_TEXTOVERLAY           (gst_textoverlay_get_type())
11 #define GST_TEXTOVERLAY(obj)           (G_TYPE_CHECK_INSTANCE_CAST((obj),\
12                                         GST_TYPE_TEXTOVERLAY, GstTextOverlay))
13 #define GST_TEXTOVERLAY_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST((klass),\
14                                         GST_TYPE_ULAW, GstTextOverlay))
15 #define GST_TEXTOVERLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\
16                                         GST_TYPE_TEXTOVERLAY, GstTextOverlayClass))
17 #define GST_IS_TEXTOVERLAY(obj)        (G_TYPE_CHECK_INSTANCE_TYPE((obj),\
18                                         GST_TYPE_TEXTOVERLAY))
19 #define GST_IS_TEXTOVERLAY_CLASS(obj)  (G_TYPE_CHECK_CLASS_TYPE((klass),\
20                                         GST_TYPE_TEXTOVERLAY))
21
22 typedef struct _GstTextOverlay      GstTextOverlay;
23 typedef struct _GstTextOverlayClass GstTextOverlayClass;
24
25 typedef enum _GstTextOverlayVAlign GstTextOverlayVAlign;
26 typedef enum _GstTextOverlayHAlign GstTextOverlayHAlign;
27
28 enum _GstTextOverlayVAlign {
29     GST_TEXT_OVERLAY_VALIGN_BASELINE,
30     GST_TEXT_OVERLAY_VALIGN_BOTTOM,
31     GST_TEXT_OVERLAY_VALIGN_TOP,
32 };
33
34 enum _GstTextOverlayHAlign {
35     GST_TEXT_OVERLAY_HALIGN_LEFT,
36     GST_TEXT_OVERLAY_HALIGN_CENTER,
37     GST_TEXT_OVERLAY_HALIGN_RIGHT,
38 };
39
40
41 struct _GstTextOverlay {
42     GstElement            element;
43
44     GstPad               *video_sinkpad;
45     GstPad               *text_sinkpad;
46     GstPad               *srcpad;
47     gint                  width;
48     gint                  height;
49     PangoLayout          *layout;
50     FT_Bitmap             bitmap;
51     gint                  bitmap_buffer_size;
52     gint                  baseline_y;
53     GstTextOverlayVAlign  valign;
54     GstTextOverlayHAlign  halign;
55     gint                  x0;
56     gint                  y0;
57     GstBuffer            *current_buffer;
58     GstBuffer            *next_buffer;
59     gchar                *default_text;
60     gboolean              need_render;
61 };
62
63 struct _GstTextOverlayClass {
64     GstElementClass parent_class;
65
66     PangoContext *pango_context;
67 };
68
69 GType gst_textoverlay_get_type(void) G_GNUC_CONST;
70
71 G_END_DECLS
72
73 #endif /* __GST_TEXTOVERLAY_H */