Top | ![]() |
![]() |
![]() |
![]() |
SwfdecAlignment | alignment | Read / Write |
gboolean | allow-fullscreen | Read / Write |
guint | background-color | Read |
SwfdecURL * | base-url | Read / Write |
gulong | cache-size | Read / Write |
guint | default-height | Read |
guint | default-width | Read |
gboolean | focus | Read / Write |
gboolean | fullscreen | Read |
gint | height | Read / Write |
gboolean | initialized | Read |
GType * | loader-type | Read / Write / Construct Only |
gulong | max-runtime | Read / Write |
SwfdecMouseCursor | mouse-cursor | Read |
glong | next-event | Read |
gdouble | rate | Read |
SwfdecRenderer * | renderer | Read / Write / Construct |
SwfdecScaleMode | scale-mode | Read / Write |
SwfdecPlayerScripting * | scripting | Read / Write |
gchar * | selection | Read |
GType * | socket-type | Read / Write / Construct Only |
SwfdecTimeVal * | start-time | Write / Construct Only |
SwfdecSystem * | system | Read / Write |
SwfdecURL * | url | Read |
gchar * | variables | Read / Write |
gint | width | Read / Write |
void | advance | Run Last |
void | audio-added | Run Last |
void | audio-removed | Run Last |
void | fscommand | Run Last |
gboolean | handle-key | Run Last |
gboolean | handle-mouse | Run Last |
void | invalidate | Run Last |
void | launch | Run Last |
void | missing-plugins | Run Last |
gboolean | query-size | 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. ASwfdecLoader 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. OneSwfdecAudio object is created for every output using the SwfdecPlayer::audio-added signal.
SwfdecPlayer *
swfdec_player_new (SwfdecAsDebugger *debugger
);
Creates a new player. This function is supposed to be used for testing.
Because of this, the created player will behave as predictable as possible.
For example, it will generate the same random number sequence every time.
The function calls swfdec_init()
for you if it wasn't called before.
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.
const SwfdecURL *
swfdec_player_get_url (SwfdecPlayer *player
);
Gets the URL of the resource that is currently played back. If no URL has
been set on the player
yet, NULL
is returned.
void swfdec_player_set_url (SwfdecPlayer *player
,const SwfdecURL *url
);
Sets the url
for the main data. This function may only be called once.
const SwfdecURL *
swfdec_player_get_base_url (SwfdecPlayer *player
);
Gets the base URL that this player uses when resolving a relative URL. It is
automatically set to the parent directory of the currently played back
resource, but can be changed using swfdec_player_set_base_url()
. When no
resource has been set on the player
yet, NULL
is returned.
void swfdec_player_set_base_url (SwfdecPlayer *player
,const SwfdecURL *url
);
Sets the URL that will be used for resolving realtive links inside the
player
.
const char *
swfdec_player_get_variables (SwfdecPlayer *player
);
Gets the initial variables for this player. See swfdec_player_set_variables()
for details about variables.
void swfdec_player_set_variables (SwfdecPlayer *player
,const char *variables
);
Sets the loader for the main data. This function may only be called if
swfdec_player_set_url()
has not been called yet.
If the variables
are set and validate, they will be set as properties on the
root movie.
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.
void swfdec_player_get_default_size (SwfdecPlayer *player
,guint *width
,guint *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.
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.
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.
glong
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.
guint
swfdec_player_get_background_color (SwfdecPlayer *player
);
Gets the current suggested background color. The color will be an ARGB-color, with the MSB being the alpha value. Note that Swfdec will not render the background color itself, so if you want the background to not be translucent it is your job to clear the background using this color.
SwfdecScaleMode
swfdec_player_get_scale_mode (SwfdecPlayer *player
);
Gets the currrent mode used for scaling the movie. See SwfdecScaleMode for the different modes.
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.
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.
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.
SwfdecPlayerScripting *
swfdec_player_get_scripting (SwfdecPlayer *player
);
Gets the current scripting implementation in use. If no implementation is in
use (the default), NULL
is returned.
void swfdec_player_set_scripting (SwfdecPlayer *player
,SwfdecPlayerScripting *scripting
);
Sets the implementation to use for external scripting in the given player
.
Note that this is different from the internal script engine. See the
SwfdecPlayerScripting paragraph for details about external scripting.
gboolean
swfdec_player_get_allow_fullscreen (SwfdecPlayer *player
);
Checks if the player is allowed to go fullscreen. See
swfdec_player_set_allow_fullscreen()
for details.
void swfdec_player_set_allow_fullscreen (SwfdecPlayer *player
,gboolean allow
);
Sets if the player is allowed to go fullscreen. If a player is allowed to go
fullscreen, it may set the SwfdecPlayer::fullscreen property to TRUE
.
Players are not allowed to go fullscreen by default. Usually applications
only want to allow going fullscreen in response to mouse or keyboard events.
gboolean
swfdec_player_get_fullscreen (SwfdecPlayer *player
);
CHecks if the player is in fullscreen mode currently. If the player is
in fullscreen mode, it assumes it occupies the whole screen. A player will
only ever go into fullscreen, if you have allowed it by calling
swfdec_player_set_allow_fullscreen()
.
SwfdecRenderer *
swfdec_player_get_renderer (SwfdecPlayer *player
);
Gets the current renderer in use. See swfdec_player_set_renderer()
for
details.
void swfdec_player_set_renderer (SwfdecPlayer *player
,SwfdecRenderer *renderer
);
Sets the renderer to be used by the player
. Setting the correct renderer is
mostly relevant for TextField flash objects with native fonts, as the
renderer provides those. It can also be very relevant for performance
reasons. See the SwfdecRenderer documentation for details.
void swfdec_player_render (SwfdecPlayer *player
,cairo_t *cr
);
Renders the given area of the current frame to cr
. This function just calls
swfdec_player_render_with_renderer()
using the player
's renderer.
void swfdec_player_render_with_renderer (SwfdecPlayer *player
,cairo_t *cr
,SwfdecRenderer *renderer
);
Renders the given area of the current frame to cr
. If you only want to
redraw parts of the player, like when responding to a
SwfdecPlayer:invalidate signal, set a clip on cr
using cairo_clip()
:
1 2 3 |
cairo_rectangle (cr, x, y, width, height); cairo_clip (cr); swfdec_player_render_with_renderer (player, cr, renderer); |
Only redrawing parts of the player improves performance considerably.
gulong swfdec_player_advance (SwfdecPlayer *player
,gulong msecs
);
Advances player
by msecs
or at most one event, whatever happens first in
the player's timeline. You should make sure to call this function as often
as swfdec_player_get_next_event()
indicates or your player will not appear
smooth.
gboolean swfdec_player_mouse_move (SwfdecPlayer *player
,double x
,double y
);
Updates the current mouse position. 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.
gboolean swfdec_player_mouse_press (SwfdecPlayer *player
,double x
,double y
,guint button
);
Tells the player
that the mouse button button
was pressed at the given
coordinate.
gboolean swfdec_player_mouse_release (SwfdecPlayer *player
,double x
,double y
,guint button
);
Tells the player
that the mouse button button
was released at the given
coordinate.
gboolean swfdec_player_key_press (SwfdecPlayer *player
,guint keycode
,guint character
);
Call this function to make the player
react to a key press. A list of
defined key codes is defined by SwfdecKey. You will likely need to
translate from your keyboard API to the Flash key codes.
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.
gboolean
swfdec_player_get_focus (SwfdecPlayer *player
);
Checks if the player
has keyboard focus. See swfdec_player_set_focus()
for
details.
void swfdec_player_set_focus (SwfdecPlayer *player
,gboolean focus
);
Tells the player
whether keyboard focus is inside it. The player will use
this information to draw focus indicators around objects. Note that this
update will not happen immediately, but only the next time you call
swfdec_player_advance()
. The player is focussed by default. So if you
integrate it into a widget system such, you likely want to unset this upon
creation of the player.
The player must be focussed to receive keyboard events.
const char *
swfdec_player_get_selection (SwfdecPlayer *player
);
Retrieves the currently selected text of the player. If no text is currently
selected, NULL
is returned.
const GList *
swfdec_player_get_audio (SwfdecPlayer *player
);
Returns a list of all currently active audio streams in player
.
gulong
swfdec_player_get_maximum_runtime (SwfdecPlayer *player
);
Queries the given player
for how long scripts may run. see
swfdec_player_set_maximum_runtime()
for a longer discussion of this value.
void swfdec_player_set_maximum_runtime (SwfdecPlayer *player
,gulong msecs
);
Sets the time that the player may use to let internal scripts run. If the
Flash file that is currently played back does not manage to complete its
scripts in the given time, it is aborted. You cannot continue the scripts at
a later point in time. However, your application may become unresponsive and
your users annoyed if they cannot interact with it for too long. To give a
reference point, the Adobe Flash player usually sets this value to 10
seconds. Note that this time determines the maximum time calling
swfdec_player_advance()
may take, even if it is called with a large value.
Also note that this setting is ignored when running inside a debugger.
“alignment”
property“alignment” SwfdecAlignment
point of the screen to align the output to.
Flags: Read / Write
Default value: SWFDEC_ALIGNMENT_CENTER
“allow-fullscreen”
property “allow-fullscreen” gboolean
if the player is allowed to change into fullscreen mode.
Flags: Read / Write
Default value: FALSE
“background-color”
property “background-color” guint
ARGB color used to draw the background.
Flags: Read
Default value: 4294967295
“base-url”
property“base-url” SwfdecURL *
base URL for creating new resource or NULL if not set yet.
Flags: Read / Write
“default-height”
property “default-height” guint
default height of the movie.
Flags: Read
Default value: 0
“default-width”
property “default-width” guint
default width of the movie.
Flags: Read
Default value: 0
“focus”
property “focus” gboolean
TRUE if the player has keyboard focus.
Flags: Read / Write
Default value: TRUE
“fullscreen”
property “fullscreen” gboolean
if the player is in fullscreen mode.
Flags: Read
Default value: FALSE
“height”
property “height” gint
current height of the movie.
Flags: Read / Write
Allowed values: >= -1
Default value: -1
“initialized”
property “initialized” gboolean
TRUE when the player has initialized its basic values.
Flags: Read
Default value: FALSE
“loader-type”
property “loader-type” GType *
type to use for creating loaders.
Flags: Read / Write / Construct Only
Allowed values: SwfdecLoader
“max-runtime”
property “max-runtime” gulong
maximum time in msecs scripts may run in the player before aborting.
Flags: Read / Write
“mouse-cursor”
property“mouse-cursor” SwfdecMouseCursor
how the mouse pointer should be presented.
Flags: Read
Default value: SWFDEC_MOUSE_CURSOR_NONE
“next-event”
property “next-event” glong
how many milliseconds until the next event or -1 when no event pending.
Flags: Read
Allowed values: >= -1
Default value: -1
“rate”
property “rate” gdouble
rate in frames per second.
Flags: Read
Allowed values: [0,256]
Default value: 0
“renderer”
property“renderer” SwfdecRenderer *
the renderer used by this player.
Flags: Read / Write / Construct
“scale-mode”
property“scale-mode” SwfdecScaleMode
method used to scale the movie.
Flags: Read / Write
Default value: SWFDEC_SCALE_SHOW_ALL
“scripting”
property“scripting” SwfdecPlayerScripting *
external scripting implementation.
Flags: Read / Write
“selection”
property “selection” gchar *
currently selected text.
Flags: Read
Default value: NULL
“socket-type”
property “socket-type” GType *
type to use for creating sockets.
Flags: Read / Write / Construct Only
Allowed values: SwfdecSocket
“start-time”
property “start-time” SwfdecTimeVal *
time to use as the beginning time for this player.
Flags: Write / Construct Only
“system”
property“system” SwfdecSystem *
object holding system information.
Flags: Read / Write
“url”
property“url” SwfdecURL *
URL of resource currently played back or NULL if not set.
Flags: Read
“variables”
property “variables” gchar *
variables to use when setting the URL.
Flags: Read / Write
Default value: NULL
“advance”
signalvoid user_function (SwfdecPlayer *player, gulong msecs, guint audio_samples, gpointer user_data)
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. |
Flags: Run Last
“audio-added”
signalvoid user_function (SwfdecPlayer *player, SwfdecAudio *audio, gpointer user_data)
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. |
Flags: Run Last
“audio-removed”
signalvoid user_function (SwfdecPlayer *player, SwfdecAudio *audio, gpointer user_data)
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. |
Flags: Run Last
“fscommand”
signalvoid user_function (SwfdecPlayer *player, gchar *command, gchar *parameter, gpointer user_data)
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. This is a lower case string. |
|
parameter |
parameter to pass to the command. The parameter depends on the function. |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“handle-key”
signalgboolean user_function (SwfdecPlayer *player, guint key, guint pressed, gboolean Returns, gpointer user_data)
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 |
|
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“handle-mouse”
signalgboolean user_function (SwfdecPlayer *player, gdouble x, gdouble y, gint button, gpointer user_data)
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 |
0 for a mouse move, a positive number if a button was pressed, a negative number if a button was released |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“invalidate”
signalvoid user_function (SwfdecPlayer *player, gpointer rectangles, guint n_rectangles, gpointer user_data)
This signal is emitted whenever graphical elements inside the player have
changed. It provides two ways to look at the changes: By looking at the
extents
parameter, it provides a simple way to get a single rectangle that
encloses all changes. By looking at the rectangles
array, you can get
finer control over changes which is very useful if your rendering system
provides a way to handle regions.
player |
the SwfdecPlayer affected |
|
rectangles |
a number of smaller rectangles for fine-grained control over changes |
|
n_rectangles |
number of rectangles in |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“launch”
signalvoid user_function (SwfdecPlayer *player, gchar *url, gchar *target, SwfdecBuffer *data, guint header_count, GStrv header_names, GStrv header_values, gpointer user_data)
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 |
|
data |
optional data to pass on with the request. Can be |
|
header_count |
number of custom HTTP headers to be sent |
|
header_names |
names of the custom HTTP headers. |
|
header_values |
values of the custom HTTP headers. |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“missing-plugins”
signalvoid user_function (SwfdecPlayer *player, GStrv details, gpointer user_data)
Emitted whenever a plugin is detected that GStreamer cannot currently
handle because it is missing plugins to do so. You should use
gst_install_plugins_async()
to install those plugins.
player |
the SwfdecPlayer missing plugins |
|
details |
the details strings for all missing plugins |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“query-size”
signalgboolean user_function (SwfdecPlayer *player, gboolean fullscreen, gpointer width, gpointer height, gpointer user_data)
This signals is emitted whenever the player is (un)fullscreened. In this
case it requests the new size the Flash file will be displayed in
immediately. If you want to provide values, connect to this signal. The
values don't have to be exact, you can still call swfdec_player_set_size()
later on. However, it will look visually nicer if your values here are
correct. By default, the screen resolution values will be used for
fullscreen and the default size will be used otherwise.
player |
the SwfdecPlayer that resizes |
|
fullscreen |
|
|
width |
pointer to an integer that takes the width to use |
|
height |
pointer to an integer that takes the height to use |
|
user_data |
user data set when the signal handler was connected. |
TRUE if this handler properly sets width
and height
and no
other handlers should be invoked.
Flags: Run Last