#ifndef __GST_TEXT_RENDER_H__ #define __GST_TEXT_RENDER_H__ #include #include G_BEGIN_DECLS #define GST_TYPE_TEXT_RENDER (gst_text_render_get_type()) #define GST_TEXT_RENDER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),\ GST_TYPE_TEXT_RENDER, GstTextRender)) #define GST_TEXT_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),\ GST_TYPE_TEXT_RENDER, GstTextRenderClass)) #define GST_TEXT_RENDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\ GST_TYPE_TEXT_RENDER, GstTextRenderClass)) #define GST_IS_TEXT_RENDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),\ GST_TYPE_TEXT_RENDER)) #define GST_IS_TEXT_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),\ GST_TYPE_TEXT_RENDER)) typedef struct _GstTextRender GstTextRender; typedef struct _GstTextRenderClass GstTextRenderClass; /** * GstTextRenderVAlign: * @GST_TEXT_RENDER_VALIGN_BASELINE: draw text on the baseline * @GST_TEXT_RENDER_VALIGN_BOTTOM: draw text on the bottom * @GST_TEXT_RENDER_VALIGN_TOP: draw test on top * * Vertical alignment of the text. */ typedef enum { GST_TEXT_RENDER_VALIGN_BASELINE, GST_TEXT_RENDER_VALIGN_BOTTOM, GST_TEXT_RENDER_VALIGN_TOP } GstTextRenderVAlign; /** * GstTextRenderHAlign: * @GST_TEXT_RENDER_HALIGN_LEFT: align text left * @GST_TEXT_RENDER_HALIGN_CENTER: align text center * @GST_TEXT_RENDER_HALIGN_RIGHT: align text right * * Horizontal alignment of the text. */ typedef enum { GST_TEXT_RENDER_HALIGN_LEFT, GST_TEXT_RENDER_HALIGN_CENTER, GST_TEXT_RENDER_HALIGN_RIGHT } GstTextRenderHAlign; /** * GstTextRenderLineAlign: * @GST_TEXT_RENDER_LINE_ALIGN_LEFT: lines are left-aligned * @GST_TEXT_RENDER_LINE_ALIGN_CENTER: lines are center-aligned * @GST_TEXT_RENDER_LINE_ALIGN_RIGHT: lines are right-aligned * * Alignment of text lines relative to each other */ typedef enum { GST_TEXT_RENDER_LINE_ALIGN_LEFT = PANGO_ALIGN_LEFT, GST_TEXT_RENDER_LINE_ALIGN_CENTER = PANGO_ALIGN_CENTER, GST_TEXT_RENDER_LINE_ALIGN_RIGHT = PANGO_ALIGN_RIGHT } GstTextRenderLineAlign; /** * GstTextRender: * * Opaque textrender data structure. */ struct _GstTextRender { GstElement element; GstPad *sinkpad, *srcpad; gint width; gint height; PangoLayout *layout; gdouble shadow_offset; gdouble outline_offset; guchar *text_image; gint image_width; gint image_height; gint baseline_y; gboolean use_ARGB; GstTextRenderVAlign valign; GstTextRenderHAlign halign; GstTextRenderLineAlign line_align; gint xpad; gint ypad; GstEvent *segment_event; }; struct _GstTextRenderClass { GstElementClass parent_class; PangoContext *pango_context; }; GType gst_text_render_get_type(void) G_GNUC_CONST; G_END_DECLS #endif /* __GST_TEXT_RENDER_H */