![]() |
![]() |
![]() |
Swfdec Reference Manual | ![]() |
---|---|---|---|---|
SwfdecPlayer; void swfdec_init (void); SwfdecPlayer* swfdec_player_new (SwfdecAsDebugger *debugger); SwfdecPlayer* swfdec_player_new_from_file (const char *filename); void swfdec_player_set_loader (SwfdecPlayer *player, SwfdecLoader *loader); void swfdec_player_set_loader_with_variables (SwfdecPlayer *player, SwfdecLoader *loader, const char *variables); gboolean swfdec_player_is_initialized (SwfdecPlayer *player); double swfdec_player_get_rate (SwfdecPlayer *player); void swfdec_player_get_image_size (SwfdecPlayer *player, int *width, int *height); void swfdec_player_get_size (SwfdecPlayer *player, int *width, int *height); void swfdec_player_set_size (SwfdecPlayer *player, int width, int height); guint swfdec_player_get_next_event (SwfdecPlayer *player); guint swfdec_player_get_background_color (SwfdecPlayer *player); void swfdec_player_set_background_color (SwfdecPlayer *player, guint color); SwfdecScaleMode swfdec_player_get_scale_mode (SwfdecPlayer *player); void swfdec_player_set_scale_mode (SwfdecPlayer *player, SwfdecScaleMode mode); SwfdecAlignment swfdec_player_get_alignment (SwfdecPlayer *player); void swfdec_player_set_alignment (SwfdecPlayer *player, SwfdecAlignment align); void swfdec_player_render (SwfdecPlayer *player, cairo_t *cr, double x, double y, double width, double height); void swfdec_player_advance (SwfdecPlayer *player, guint msecs); gboolean swfdec_player_handle_mouse (SwfdecPlayer *player, double x, double y, int button); gboolean swfdec_player_key_press (SwfdecPlayer *player, guint keycode, guint character); gboolean swfdec_player_key_release (SwfdecPlayer *player, guint keycode, guint character); void swfdec_player_render_audio (SwfdecPlayer *player, gint16 *dest, guint start_offset, guint n_samples); const GList* swfdec_player_get_audio (SwfdecPlayer *player);
"alignment" SwfdecAlignment : Read / Write "background-color" guint : Read / Write "cache-size" guint : Read "height" gint : Read / Write "initialized" gboolean : Read "mouse-cursor" SwfdecMouseCursor : Read "next-event" guint : Read "scale-mode" SwfdecScaleMode : Read / Write "width" gint : Read / Write
"advance" : Run Last "audio-added" : Run Last "audio-removed" : Run Last "fscommand" : Run Last "handle-key" : Run Last "handle-mouse" : Run Last "invalidate" : Run Last "launch" : Run Last
A SwfdecPlayer is the main object used for playing back Flash files through Swfdec.
A player interacts with the outside world in a multitude of ways. The most important ones are described below.
Input is handled via the
SwfdecLoader class. A
SwfdecLoader is set on a new player using swfdec_player_set_loader()
.
When the loader has provided enough data, you can start playing the file.
This is done in steps by calling swfdec_player_advance()
- preferrably as
often as swfdec_player_get_next_event()
indicates. Or you can provide user input
to the player by calling for example swfdec_player_handle_mouse()
.
You can use swfdec_player_render()
to draw the current state of the player.
After that, connect to the SwfdecPlayer::invalidate signal to be notified of
changes.
Audio output is handled via the SwfdecAudio class. One SwfdecAudio object is created for every output using the SwfdecPlayer::audio-added signal.
typedef struct _SwfdecPlayer SwfdecPlayer;
This is the base object used for playing Flash files.
SwfdecPlayer* swfdec_player_new (SwfdecAsDebugger *debugger);
Creates a new player.
This function calls swfdec_init()
for you if it wasn't called before.
debugger : |
NULL or a SwfdecAsDebugger to use for debugging this player.
|
Returns : | The new player |
SwfdecPlayer* swfdec_player_new_from_file (const char *filename);
Creates a player to play back the given file. If the file does not
exist or another error occurs, the player will be in an error state and not
be initialized.
This function calls swfdec_init()
for you if it wasn't called before.
filename : |
name of the file to play |
Returns : | a new player |
void swfdec_player_set_loader (SwfdecPlayer *player, SwfdecLoader *loader);
Sets the loader for the main data. This function only works if no loader has
been set on player
yet.
For details, see swfdec_player_set_loader_with_variables()
.
player : |
a SwfdecPlayer |
loader : |
the loader to use for this player. Takes ownership of the given loader. |
void swfdec_player_set_loader_with_variables (SwfdecPlayer *player, SwfdecLoader *loader, const char *variables);
Sets the loader for the main data. This function only works if no loader has
been set on player
yet.
If the variables
are set and validate, they will be set as properties on the
root movie.
swfdec_player_set_loader()
and
not use conveniencse functions such as swfdec_player_new_from_file()
.
player : |
a SwfdecPlayer |
loader : |
the loader to use for this player. Takes ownership of the given loader. |
variables : |
a string that is checked to be in 'application/x-www-form-urlencoded' syntax describing the arguments to set on the new player or NULL for none. |
gboolean swfdec_player_is_initialized (SwfdecPlayer *player);
Determines if the player
is initalized yet. An initialized player is able
to provide basic values like width, height or rate. A player may not be
initialized if the loader it was started with does not reference a Flash
resources or it did not provide enough data yet. If a player is initialized,
it will never be uninitialized again.
player : |
a SwfdecPlayer |
Returns : | TRUE if the basic values are known. |
double swfdec_player_get_rate (SwfdecPlayer *player);
Queries the framerate of this movie. This number specifies the number of frames that are supposed to pass per second. It is a multiple of 1/256. It is possible that the movie has no framerate if it does not display a Flash movie but an FLV video for example. This does not mean it will not change however.
player : |
a SwfdecPlayer |
Returns : | The framerate of this movie or 0 if it isn't known yet or the movie doesn't have a framerate. |
void swfdec_player_get_image_size (SwfdecPlayer *player, int *width, int *height);
If the default size of the movie is initialized, fills in width
and height
with the size. Otherwise width
and height
are set to 0.
player : |
a SwfdecPlayer |
width : |
integer to store the width in or NULL
|
height : |
integer to store the height in or NULL
|
void swfdec_player_get_size (SwfdecPlayer *player, int *width, int *height);
Gets the currently set image size. If the default width or height should be used, the width or height respectively is set to -1.
player : |
a SwfdecPlayer |
width : |
integer to store the width in or NULL
|
height : |
integer to store the height in or NULL
|
void swfdec_player_set_size (SwfdecPlayer *player, int width, int height);
Sets the image size to the given values. The image size is what the area that
the player
will render and advocate with scripts.
player : |
a SwfdecPlayer |
width : |
desired width of the movie or -1 for default |
height : |
desired height of the movie or -1 for default |
guint swfdec_player_get_next_event (SwfdecPlayer *player);
Queries how long to the next event. This is the next time when you should
call swfdec_player_advance()
to forward to.
player : |
ia SwfdecPlayer |
Returns : | number of milliseconds until next event or 0 if no outstanding event |
guint swfdec_player_get_background_color (SwfdecPlayer *player);
Gets the current background color. The color will be an ARGB-quad, with the MSB being the alpha value.
player : |
a SwfdecPlayer |
Returns : | the background color as an ARGB value |
void swfdec_player_set_background_color (SwfdecPlayer *player, guint color);
Sets a new background color as an ARGB value. To get transparency, set the value to 0. To get a black beackground, use 0xFF000000.
player : |
a SwfdecPlayer |
color : |
new color to use as background color |
SwfdecScaleMode swfdec_player_get_scale_mode (SwfdecPlayer *player);
Gets the currrent mode used for scaling the movie. See SwfdecScaleMode for the different modes.
player : |
a SwfdecPlayer |
Returns : | the current scale mode |
void swfdec_player_set_scale_mode (SwfdecPlayer *player, SwfdecScaleMode mode);
Sets the currrent mode used for scaling the movie. See SwfdecScaleMode for the different modes.
player : |
a SwfdecPlayer |
mode : |
a SwfdecScaleMode |
SwfdecAlignment swfdec_player_get_alignment (SwfdecPlayer *player);
Gets the alignment of the player. The alignment describes what point is used as the anchor for drawing the contents. See SwfdecAlignment for possible values.
player : |
a SwfdecPlayer |
Returns : | the current alignment |
void swfdec_player_set_alignment (SwfdecPlayer *player, SwfdecAlignment align);
Sets the alignment to align
. For details about alignment, see
swfdec_player_get_alignment()
and SwfdecAlignment.
player : |
a SwfdecPlayer |
align : |
SwfdecAlignment to set |
void swfdec_player_render (SwfdecPlayer *player, cairo_t *cr, double x, double y, double width, double height);
Renders the given area of the current frame to cr
.
player : |
a SwfdecPlayer |
cr : |
cairo_t to render to |
x : |
x coordinate of top left position to render |
y : |
y coordinate of top left position to render |
width : |
width of area to render or 0 for full width |
height : |
height of area to render or 0 for full height |
void swfdec_player_advance (SwfdecPlayer *player, guint msecs);
Advances player
by msecs
. You should make sure to call this function as
often as the SwfdecPlayer::next-event property indicates.
player : |
the SwfdecPlayer to advance |
msecs : |
number of milliseconds to advance |
gboolean swfdec_player_handle_mouse (SwfdecPlayer *player, double x, double y, int button);
Updates the current mouse status. If the mouse has left the area of player
,
you should pass values outside the movie size for x
and y
. You will
probably want to call swfdec_player_advance()
before to update the player to
the correct time when calling this function.
player : |
a SwfdecPlayer |
x : |
x coordinate of mouse |
y : |
y coordinate of mouse |
button : |
1 for pressed, 0 for not pressed |
Returns : | TRUE if the mouse event was handled. FALSE to propagate the event
further. A mouse event may not be handled if the user clicked on a
translucent area.
|
gboolean swfdec_player_key_press (SwfdecPlayer *player, guint keycode, guint character);
Call this function to make the player
react to a key press. Be sure to
check that keycode transformations are done correctly. For a list of
keycodes see FIXME.
player : |
a SwfdecPlayer |
keycode : |
the key that was pressed |
character : |
UCS4 of the character that was inserted or 0 if none |
Returns : | TRUE if the key press was handled by the player , FALSE if it
should be propagated further
|
gboolean swfdec_player_key_release (SwfdecPlayer *player, guint keycode, guint character);
Call this function to make the player
react to a key being released. See
swfdec_player_key_press()
for details.
player : |
a SwfdecPlayer |
keycode : |
the key that was released |
character : |
UCS4 of the character that was inserted or 0 if none |
Returns : | TRUE if the key press was handled by the player , FALSE if it
should be propagated further
|
void swfdec_player_render_audio (SwfdecPlayer *player, gint16 *dest, guint start_offset, guint n_samples);
Renders the data for this frame into the given location. The data is added to dest
,
so you probably want to initialize dest
to silence before calling this function.
player : |
a SwfdecPlayer |
dest : |
location to add audio signal to. The audio signal will be in 44100kHz signed 16bit stereo. |
start_offset : |
offset in samples at which to start rendering. The offset is
calculated relative to the last iteration, so the value set
by swfdec_player_set_audio_advance() is ignored.
|
n_samples : |
amount of samples to render. |
const GList* swfdec_player_get_audio (SwfdecPlayer *player);
Returns a list of all currently active audio streams in player
.
player : |
a SwfdecPlayer |
Returns : | A GList of SwfdecAudio. You must not modify or free this list. |
"alignment"
property"alignment" SwfdecAlignment : Read / Write
point of the screen to align the output to.
Default value: SWFDEC_ALIGNMENT_CENTER
"background-color"
property"background-color" guint : Read / Write
ARGB color used to draw the background.
Default value: 4294967295
"cache-size"
property"cache-size" guint : Read
maximum cache size in bytes.
Default value: 52428800
"height"
property"height" gint : Read / Write
current height of the movie.
Allowed values: >= -1
Default value: -1
"initialized"
property"initialized" gboolean : Read
TRUE when the player has initialized its basic values.
Default value: FALSE
"mouse-cursor"
property"mouse-cursor" SwfdecMouseCursor : Read
how the mouse pointer should be presented.
Default value: SWFDEC_MOUSE_CURSOR_NONE
"next-event"
property"next-event" guint : Read
how many milliseconds until the next event or 0 when no event pending.
Default value: 0
"scale-mode"
property"scale-mode" SwfdecScaleMode : Read / Write
method used to scale the movie.
Default value: SWFDEC_SCALE_SHOW_ALL
"advance"
signalvoid user_function (SwfdecPlayer *player, guint msecs, guint audio_samples, gpointer user_data) : Run Last
Emitted whenever the player advances.
player : |
the SwfdecPlayer affected |
msecs : |
the amount of milliseconds the player will advance |
audio_samples : |
number of frames the audio is advanced (in 44100Hz steps) |
user_data : |
user data set when the signal handler was connected. |
"audio-added"
signalvoid user_function (SwfdecPlayer *player, SwfdecAudio *audio, gpointer user_data) : Run Last
Emitted whenever a new audio stream was added to player
.
player : |
the SwfdecPlayer affected |
audio : |
the audio stream that was added |
user_data : |
user data set when the signal handler was connected. |
"audio-removed"
signalvoid user_function (SwfdecPlayer *player, SwfdecAudio *audio, gpointer user_data) : Run Last
Emitted whenever an audio stream was removed from player
. The stream will
have been added with the SwfdecPlayer::audio-added signal previously.
player : |
the SwfdecPlayer affected |
audio : |
the audio stream that was removed |
user_data : |
user data set when the signal handler was connected. |
"fscommand"
signalvoid user_function (SwfdecPlayer *player, gchar *command, gchar *paramter, gpointer user_data) : Run Last
This signal is emited whenever a Flash script command (also known as fscommand) is encountered. This method is ued by the Flash file to communicate with the hosting environment. In web browsers it is used to call Javascript functions. Standalone Flash players understand a limited set of functions. They vary from player to player, but the most common are listed here:
"quit": quits the player.
"fullscreen": A boolean setting (parameter is "true" or "false") that sets the player into fullscreen mode.
"allowscale": A boolean setting that tells the player to not scale the Flash application.
"showmenu": A boolean setting that tells the Flash player to not show its own entries in the right-click menu.
"exec": Run an external executable. The parameter specifies the path.
"trapallkeys": A boolean setting that tells the Flash player to pass all key events to the Flash application instead of using it for keyboard shortcuts or similar.
player : |
the SwfdecPlayer affected |
command : |
the command to execute |
paramter : |
parameter to pass to the command. The parameter depends on the function. |
user_data : |
user data set when the signal handler was connected. |
"handle-key"
signalgboolean user_function (SwfdecPlayer *player, guint key, guint pressed, gboolean Returns, gpointer user_data) : Run Last
This signal is emitted whenever player
should respond to a key event. If
any of the handlers returns TRUE, swfdec_player_key_press()
or
swfdec_player_key_release()
will return TRUE. Note that unlike many event
handlers in gtk, returning TRUE will not stop further event handlers from
being invoked. Use g_signal_stop_emission()
in that case.
player : |
the SwfdecPlayer affected |
key : |
SwfdecKey that was pressed or released |
pressed : |
TRUE if the key was pressed or FALSE if it was released
|
user_data : |
user data set when the signal handler was connected. |
Returns : | TRUE if this handler handles the event. |
"handle-mouse"
signalgboolean user_function (SwfdecPlayer *player, gdouble x, gdouble y, gint button, gpointer user_data) : Run Last
This signal is emitted whenever player
should respond to a mouse event. If
any of the handlers returns TRUE, swfdec_player_handle_mouse()
will return
TRUE. Note that unlike many event handlers in gtk, returning TRUE will not
stop further event handlers from being invoked. Use g_signal_stop_emission()
in that case.
player : |
the SwfdecPlayer affected |
x : |
new x coordinate of the mouse |
y : |
new y coordinate of the mouse |
button : |
1 if the button is pressed, 0 if not |
user_data : |
user data set when the signal handler was connected. |
Returns : | TRUE if this handler handles the event. |
"invalidate"
signalvoid user_function (SwfdecPlayer *player, gdouble x, gdouble y, gdouble width, gdouble height, gpointer user_data) : Run Last
This signal is emitted whenever graphical elements inside the player have changed. The coordinates describe the smallest rectangle that includes all changes.
player : |
the SwfdecPlayer affected |
x : |
x coordinate of invalid region |
y : |
y coordinate of invalid region |
width : |
width of invalid region |
height : |
height of invalid region |
user_data : |
user data set when the signal handler was connected. |
"launch"
signalvoid user_function (SwfdecPlayer *player, gchar *url, gchar *target, gpointer user_data) : Run Last
Emitted whenever the player
encounters an URL that should be loaded into
a target the Flash player does not recognize. In most cases this happens
when the user clicks a link in an embedded Flash movie that should open a
new web page.
The effect of calling any swfdec functions on the emitting player
is undefined.
player : |
the SwfdecPlayer affected |
url : |
URL to open |
target : |
target to load the URL into |
user_data : |
user data set when the signal handler was connected. |