forked from azend/pinpoint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pinpoint.h
177 lines (148 loc) · 5.57 KB
/
pinpoint.h
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*
* Pinpoint: A small-ish presentation tool
*
* Copyright (C) 2010 Intel Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
* more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Written by: Øyvind Kolås <pippin@linux.intel.com>
* Damien Lespiau <damien.lespiau@intel.com>
* Emmanuele Bassi <ebassi@linux.intel.com>
*/
#ifndef __PINPOINT_H__
#define __PINPOINT_H__
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <clutter-gtk/clutter-gtk.h>
typedef struct _PinPointPoint PinPointPoint;
typedef struct _PinPointRenderer PinPointRenderer;
typedef enum
{
PP_TEXT_LEFT = PANGO_ALIGN_LEFT,
PP_TEXT_CENTER = PANGO_ALIGN_CENTER,
PP_TEXT_RIGHT = PANGO_ALIGN_RIGHT
} PPTextAlign;
typedef enum
{
PP_BG_NONE,
PP_BG_COLOR,
PP_BG_IMAGE,
PP_BG_VIDEO,
PP_BG_CAMERA,
PP_BG_SVG
} PPBackgroundType;
typedef enum
{
PP_BG_UNSCALED,
PP_BG_FIT, /* default value */
PP_BG_FILL,
PP_BG_STRETCH
} PPBackgroundScale;
typedef struct
{
gint width, height;
} PPResolution;
#define PINPOINT_RENDERER(renderer) ((PinPointRenderer *) renderer)
struct _PinPointRenderer
{
void (*init) (PinPointRenderer *renderer,
char *pinpoint_file);
void (*run) (PinPointRenderer *renderer);
void (*finalize) (PinPointRenderer *renderer);
gboolean (*make_point) (PinPointRenderer *renderer,
PinPointPoint *point);
void * (*allocate_data) (PinPointRenderer *renderer);
void (*free_data) (PinPointRenderer *renderer,
void *datap);
char * source;
};
struct _PinPointPoint
{
const char *stage_color;
const gchar *bg;
PPBackgroundType bg_type;
PPBackgroundScale bg_scale;
ClutterGravity bg_position;
const char *text; /* the text of the slide */
ClutterGravity position;
const char *font;
const char *notes_font;
const char *notes_font_size;
PPTextAlign text_align;
const char *text_color;
gboolean use_markup;
gfloat duration; /* on slide 0 the duration is the duration of the
presentation, other slides have a representation
of their portion of the presentation */
gfloat new_duration; /* new duration,. used during reharsal */
char *speaker_notes; /* speaker comments for the slide */
const char *shading_color;
float shading_opacity;
const char *transition; /* transition template to use, if any */
const char *command;
gint camera_framerate;
PPResolution camera_resolution;
void *data; /* the renderer can attach data here */
};
extern char *pp_output_filename;
extern gboolean pp_fullscreen;
extern gboolean pp_maximized;
extern gboolean pp_speakermode;
extern gboolean pp_rehearse;
extern char *pp_camera_device;
extern GList *pp_slides; /* list of slide text */
extern GList *pp_slidep; /* current slide */
extern GFile *pp_basedir;
extern PinPointPoint *point_defaults;
void pp_parse_slides (PinPointRenderer *renderer,
const char *slide_src);
void
pp_get_padding (float stage_width,
float stage_height,
float *padding);
void pp_rehearse_init (void);
void pp_rehearse_done (void);
void
pp_get_background_position_scale (PinPointPoint *point,
float stage_width,
float stage_height,
float bg_width,
float bg_height,
float *bg_x,
float *bg_y,
float *bg_scale_x,
float *bg_scale_y);
void
pp_get_text_position_scale (PinPointPoint *point,
float stage_width,
float stage_height,
float text_width,
float text_height,
float *text_x,
float *text_y,
float *text_scale);
void
pp_get_shading_position_size (float stage_width,
float stage_height,
float text_x,
float text_y,
float text_width,
float text_height,
float text_scale,
float *shading_x,
float *shading_y,
float *shading_width,
float *shading_height);
#endif