summaryrefslogtreecommitdiffstats
path: root/ext/cairo/gsttextoverlay.h
blob: 8af31556885652c485665bffa42ac1bce263a7c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

#ifndef __GST_CAIRO_TEXT_OVERLAY_H__
#define __GST_CAIRO_TEXT_OVERLAY_H__

#include <gst/gst.h>
#include <gst/base/gstcollectpads.h>

G_BEGIN_DECLS

#define GST_TYPE_CAIRO_TEXT_OVERLAY           (gst_text_overlay_get_type())
#define GST_CAIRO_TEXT_OVERLAY(obj)           (G_TYPE_CHECK_INSTANCE_CAST((obj),\
                                        GST_TYPE_CAIRO_TEXT_OVERLAY, GstCairoTextOverlay))
#define GST_CAIRO_TEXT_OVERLAY_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST((klass),\
                                        GST_TYPE_CAIRO_TEXT_OVERLAY, GstCairoTextOverlayClass))
#define GST_CAIRO_TEXT_OVERLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\
                                        GST_TYPE_CAIRO_TEXT_OVERLAY, GstCairoTextOverlayClass))
#define GST_IS_CAIRO_TEXT_OVERLAY(obj)        (G_TYPE_CHECK_INSTANCE_TYPE((obj),\
                                        GST_TYPE_CAIRO_TEXT_OVERLAY))
#define GST_IS_CAIRO_TEXT_OVERLAY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),\
                                        GST_TYPE_CAIRO_TEXT_OVERLAY))

typedef struct _GstCairoTextOverlay      GstCairoTextOverlay;
typedef struct _GstCairoTextOverlayClass GstCairoTextOverlayClass;

typedef enum _GstCairoTextOverlayVAlign GstCairoTextOverlayVAlign;
typedef enum _GstCairoTextOverlayHAlign GstCairoTextOverlayHAlign;

enum _GstCairoTextOverlayVAlign {
    GST_CAIRO_TEXT_OVERLAY_VALIGN_BASELINE,
    GST_CAIRO_TEXT_OVERLAY_VALIGN_BOTTOM,
    GST_CAIRO_TEXT_OVERLAY_VALIGN_TOP
};

enum _GstCairoTextOverlayHAlign {
    GST_CAIRO_TEXT_OVERLAY_HALIGN_LEFT,
    GST_CAIRO_TEXT_OVERLAY_HALIGN_CENTER,
    GST_CAIRO_TEXT_OVERLAY_HALIGN_RIGHT
};


struct _GstCairoTextOverlay {
    GstElement            element;

    GstPad               *video_sinkpad;
    GstPad               *text_sinkpad;
    GstPad               *srcpad;

    GstCollectPads       *collect;
    GstCollectData       *video_collect_data;
    GstCollectData       *text_collect_data;

    gint                  width;
    gint                  height;
    gint                  fps_n;
    gint                  fps_d;

    GstCairoTextOverlayVAlign  valign;
    GstCairoTextOverlayHAlign  halign;
    gint                  xpad;
    gint                  ypad;
    gint                  deltax;
    gint                  deltay;
    gchar                *default_text;
    gboolean              want_shading;

    guchar               *text_fill_image;
    guchar               *text_outline_image;
    gint                  font_height;
    gint                  text_x0, text_x1; /* start/end x position of text */
    gint                  text_dy;

    gboolean              need_render;

    gchar                *font;
    gint                  slant;
    gint                  weight;
    gdouble               scale;
};

struct _GstCairoTextOverlayClass {
  GstElementClass parent_class;
};

GType gst_text_overlay_get_type (void);

G_END_DECLS

#endif /* __GST_CAIRO_TEXT_OVERLAY_H */