Bug 1099 - No ClutterScript API to get a list of IDs in a given file
* clutter/clutter-script.[ch]: Add clutter_script_list_objects(),
a function for retrieving all the objects built by a ClutterScript
instance. (Based on a patch by Noah Gibbs)
* doc/reference/clutter/subclassing-ClutterActor.xml: Update the
custom actor example since the Cogl API was changed to namespace
all of the path related functions in cogl_path_*. Thanks to Nati
Berkover.
* clutter/clutter-score.c: Add missing parameter in example of
calling clutter_score_start().
* clutter/cogl/gl/cogl.c:
* clutter/cogl/gles/cogl.c:
* clutter/cogl/cogl.h.in: Add cogl_clip_stack_save,
cogl_clip_stack_restore, cogl_viewport and cogl_frustum.
* clutter/cogl/gl/cogl-fbo.h:
* clutter/cogl/gl/cogl-fbo.c: Try to attach a stencil buffer when
creating an FBO.
* clutter/cogl/common/cogl-clip-stack.c: Add functions to save and
restore the whole state of the stack.
* clutter/clutter-texture.c (clutter_texture_paint): When
rendering the FBO source, setup a temporary asymmetric perspective
projection matrix to render it as it would appear on screen.
* clutter/clutter-private.h:
* clutter/clutter-actor.c
(_clutter_actor_apply_modelview_transform_recursive): No longer
static and exported in clutter-private.h
* clutter/clutter-actor.c:
(clutter_actor_set_min_width),
(clutter_actor_set_min_height),
(clutter_actor_set_natural_width),
(clutter_actor_set_natural_height): Ignore any override of the
minimum and natural size of the stage on backends that only
support static stages.
* clutter/clutter-stage.c (clutter_stage_allocate): Use the
preferred size of the ClutterStage implementation instead of
the display size.
* clutter/clutter-backend.[ch]: Remove get_display_size() and
clutter_backend_get_display_size().
* clutter/eglnative/clutter-backend-egl.c:
* clutter/fruity/clutter-backend-fruity.c:
* clutter/osx/clutter-backend-osx.c:
* clutter/sdl/clutter-backend-sdl.c:
* clutter/win32/clutter-backend-win32.c:
* clutter/x11/clutter-backend-x11.c: Remove get_display_size()
implementations.
* clutter/clutter-overview.xml: Split the overview into its own
file, so we gtk-doc can linkify all class names.
* clutter/building-clutter.xml: Split the building instructions
into its own file, for better maintainability.
* clutter/clutter-animation.xml:
* clutter/creating-behaviours.xml:
* clutter/subclassing-ClutterActor.xml: Rename from SGML to XML;
these were not SGML files anyway, but templates.
* clutter/clutter-docs.sgml: Use XInclude instead of the ugly
entities hack.
* clutter/Makefile.am: Update the build.
Bug 989 - Add a search path for clutter script assets
* clutter/clutter-script.h:
* clutter/clutter-script.c:
(clutter_script_finalize),
(clutter_script_add_search_paths),
(clutter_script_lookup_filename): Add the ability to define multiple
search paths inside ClutterScript and to look up a specific filename
inside those search paths. This is useful to define a set of
directories where the assets for a UI definition are and still
reference those assets by their name instead of the full path. (989,
based on a patch by Matthew Allum)
* clutter/clutter-texture.c:
(clutter_texture_set_custom_property): Use the newly added
clutter_script_lookup_filename() function.
* cogl/Makefile.am:
* cogl/cogl-docs.sgml:
* cogl/version.xml.in
* clutter/version.xml.in
Add full version (including minor) to docs.
Add version to COGL docs
* doc/reference/cogl/Makefile.am: Ignore cogl/gl and cogl/gles
when building the documentation.
* clutter/cogl/cogl.h.in: Add sections in the header file.
Bug #927 - Created ports for clutter, clutter-cairo in macports
* clutter/clutter-docs.sgml: Update the OSX build instructions
and mention that the preferred way to build Clutter for developing
applications is via MacPorts. (#927, Idan Gazit)
Bug 882 - Allow child properties for containers implementing the
ClutterContainer interface (Øyvind Kolås)
* clutter/clutter-child-meta.[ch]: Base class for the metadata
of a ClutterActor inside a ClutterContainer; the ChildMeta
object implements a wrapper for storing data that is attached
to a ClutterActor only when it's part of a ClutterContainer.
The ChildMeta object is used to store the child properties
accessible through the ClutterContainer API.
* clutter/clutter-container.[ch]: Creates the ChildMeta for
each actor, in case the Container specifies the ChildMeta
type to use.
* clutter/Makefile.am: Add clutter-child-meta.[ch] to the build.
* clutter/clutter-marshal.list: Add the marshaller for the
ClutterContainer::child-notify signal.
* clutter/clutter-types.h: Declare ClutterContainer and
ClutterChildMeta to avoid recursive inclusion.
(clutter_frame_source_add_full): Add gtk-doc and rename the
'function' parameter to 'func'.
* clutter/clutter-frame-source.h: Rename the 'function' parameters
to 'func'.
* clutter/Makefile.am (source_h): Make clutter-frame-source.h a
public header.
* clutter/clutter-main.c (clutter_threads_add_frame_source_full):
Improve gtk-doc
* doc/reference/clutter/clutter-sections.txt: Added
clutter_threads_add_frame_source,
clutter_threads_add_frame_source_full,
clutter_frame_source_add and clutter_frame_source_add_full.
wrapped in reference-counted CoglHandles instead.
* clutter/cogl/gl/cogl-shader.c:
* clutter/cogl/gl/cogl-shader.h:
* clutter/cogl/gl/cogl-program.c:
* clutter/cogl/gl/cogl-program.h:
New files to hold the shader and program functions.
* clutter/cogl/gl/cogl.c: Removed shader and program functions.
* clutter/cogl/common/cogl-handle.h: New header to define
COGL_HANDLE_DEFINE which helps build functions to create
reference-counted handles. This reduces the amount of duplicated
code.
* clutter/cogl/gl/cogl-texture.c:
* clutter/cogl/gles/cogl-texture.c:
* clutter/cogl/gl/cogl-fbo.c: Converted to use COGL_HANDLE_DEFINE
from cogl-handle.h to avoid duplicating some of the common code.
* clutter/cogl/gles/cogl-defines.h.in:
* clutter/cogl/gl/cogl-defines.h.in: Removed COGLhandle
* clutter/cogl/gl/cogl-context.h: Added handle arrays for programs
and shaders.
* clutter/cogl/gl/cogl-context.c (cogl_create_context): Added
initialisers for shader_handles and program_handles.
(cogl_destroy_context): Added calls to g_array_free for all handle
arrays.
* clutter/cogl/gl/Makefile.am (libclutter_cogl_la_SOURCES): Added
cogl-{program,shader}.{c,h}
* clutter/cogl/common/Makefile.am
(libclutter_cogl_common_la_SOURCES): Added cogl-handle.h
* clutter/cogl/gles/cogl.c:
* clutter/cogl/cogl.h.in: Programs and shaders are now wrapped in
CoglHandles instead of COGLhandles. cogl_program_destroy and
cogl_shader_destroy is now replaced with cogl_program_unref and
cogl_shader_unref. cogl_program_ref and cogl_shader_ref are also
added.
* clutter/clutter-shader.c: Converted to use CoglHandles for the
programs and shaders instead of COGLhandles.
* cogl/cogl-sections.txt: Added cogl_shader_ref,
cogl_shader_unref, cogl_is_shader, cogl_program_ref,
cogl_program_unref, cogl_is_program and cogl_is_offscreen.
* clutter/clutter-docs.sgml: Add index for the 0.8 symbols.
* clutter/Makefile.am:
* cogl/Makefile.am: Revert back, as EXTRA_DIST has been defined
by gtk-doc.make and automake-1.9 complains loudly about a
redefinition of EXTRA_DIST.
* clutter/clutter-units.h:
* clutter/clutter-fixed.h: Add boundaries for fixed point
and units values.
* doc/reference/clutter-sections.txt: Update the documentation.
* clutter/clutter-fixed.[ch]: Add a ClutterFixed fundamental
type, and wrappers for storing it into GValues; also add a
GParamSpec subclass for defining parameters holding
ClutterFixed values. This allows creating GObject properties
using fixed point values.
* doc/reference/clutter-sections.txt: Document the newly
added API.
* clutter/Makefile.am: Add clutter-units.c
* clutter/clutter-units.[ch]: Add a ClutterUnit fundamental
type, and wrappers for storing it into GValues; also add a
GParamSpec subclass for defining parameters holding ClutterUnit
values. This allows creating GObject properties using units.
* doc/reference/clutter-sections.txt: Document the newly
added API.
* clutter/win32/clutter-win32.h:
* clutter/win32/clutter-stage-win32.h:
* clutter/win32/clutter-stage-win32.c:
* clutter/win32/clutter-event-win32.c:
* clutter/win32/clutter-backend-win32.h:
* clutter/win32/clutter-backend-win32.c:
Upgraded for multi-stage support.
* clutter/win32/clutter-stage-win32.c
(clutter_stage_win32_request_coords): Fixed so that it doesn't set
the position or size if it hasn't changed. This was causing
problems when the window was resized using the top left corner. In
that case the window receives resize and move messages separately
which caused the window to flash at a different size or position
while one message was handled before the other.
(clutter_stage_win32_realize): Added PFD_GENERIC_ACCELERATED to
the list of pixel format flags to force it to use hardware
acceleration.
2008-03-30 Neil Roberts <neil@o-hand.com>
* clutter-sections.txt: Added clutter_win32_get_stage_from_window
* clutter/win32/clutter-win32.h: Added gtk-doc documentation for
the Win32 backend section.
* clutter/win32/clutter-stage-win32.c
(clutter_win32_get_stage_window): Fixed punctuation in the
documentation.
* README: Added notes about the Win32 backend.
2008-03-26 Neil Roberts <neil@o-hand.com>
* clutter-sections.txt: Added a section for the Win32 specific
API.
* clutter-docs.sgml: Added comments about the Win32 backend.
* Makefile.am: Added bits to ignore the headers for the Win32
backend.
* clutter/clutter-score.[ch]: Remove all the API changes, and
just add a clutter_score_append_at_marker(); the implementation
remains the same, but the marker must be explicitly created by
the developer. The ids are no longer used to create implicit
markers, so they can return to be unsigned integers.
* clutter/clutter-timeline.[ch]:
(clutter_timeline_has_marker): Add a function to query a timeline
for a marker being set.
* tests/test-score.c (main): Update with the API changes.
* clutter.symbols: Update exported symbols.
* clutter/clutter-actor.[ch]:
* clutter/clutter-types.h:
* doc/reference/clutter-docs.sgml: Fix a lot of documentation.
2008-02-15 Matthew Allum <mallum@openedhand.com>
* clutter-animation.sgml: Fix some of the grammar; add a timeout-based
animation example.
* creating-your-own-behaviours.sgml: Fix some of the linking.
* subclassing-ClutterActor.sgml: Remove the FIXMEs; add the initial
structure of a section about containers.
* clutter-sections.txt: Add last-minute API additions.
* subclassing-ClutterActor.sgml: Fix some of the notes; the
Container implementation will need its own section.
* Makefile.am:
* alpha-func.png:
* event-flow.png: More figures. alpha-func.png is a graph
showing the flow of some alpha functions; event-flow.png maps
the path of an event coming from the underlying windowing
system into Clutter and through the entire library.
* Makefile.am: Use variables, instead of substitutions.
* clutter/clutter-private.h:
* clutter/clutter-main.h: Make clutter_do_event() public again,
as we need it in clutter-gtk.
* configure.ac:
* clutter/x11/Makefile.am:
* clutter/x11/clutter-x11.pc.in: Add a clutter-x11 pkg-config
file for clutter-gtk, as it depends on the X11 backend API, as
implemented by the GLX and EGLX backends.
* clutter/x11/clutter-event-x11.c (event_translate): Do not
propagate DestroyNotify events if the stage doesn't own the
window.
* tests/test-scale.c (main): Set values different from the default.
* clutter/clutter-behaviour-depth.h:
* clutter/clutter-behaviour-depth.c:
(clutter_behaviour_depth_set_bounds),
(clutter_behaviour_depth_get_bounds): Add the depth-start and
depth-end accessors.
* tests/test-depth.c (timeline_completed): Use set_bounds()
instead of g_object_set().
* clutter.symbols: Add clutter_behaviour_depth_set_bounds()
and clutter_behaviour_opacity_get_bounds() to the list of
public symbols.
* clutter.symbols: Add ClutterBehaviourOpacity accessors.
* clutter/clutter-behaviour-opacity.h:
* clutter/clutter-behaviour-opacity.c:
(clutter_behaviour_opacity_set_bounds),
(clutter_behaviour_opacity_get_bounds): Add accessors for the
opacity-start and opacity-end properties.
* clutter/clutter-behaviour-scale.h: Fix the argument name to
avoid complaints by gtk-doc.
* clutter.symbols: Add new ClutterBehaviourScale setters.
* clutter/clutter-behaviour-scale.[ch]: Split the scaling factors
on both axis. Add setters for all the behaviour properties.
* clutter/clutter-effect.h:
* clutter/clutter-effect.c (clutter_effect_scale): Split the
final scale factor to match the ClutterBehaviourScale changes. (#709)
* tests/test-actors.c:
* tests/test-effects.c:
* tests/test-rotate.c:
* tests/test-scale.c: Update after API change.
* clutter.symbols: Add clutter_model_insertv()
* clutter/clutter-model.[ch] (clutter_model_insertv): Add a vector
based insertion API, for language bindings
* clutter/clutter-model-default.[ch]: Rename ClutterModelDefault
into ClutterListModel, to make it clear that the default
ClutterModel implementation is list-based
* tests/test-model.c: Update call
* clutter/clutter-model-default.c:
(clutter_model_default_new),
(clutter_model_default_newv): Move the constructors in the
right file
* clutter/clutter-model-private.h: Add a private header for
the ClutterModel implementations
* clutter/clutter-model.c:
(clutter_model_check_type),
(clutter_model_set_n_columns),
(clutter_model_set_column_type): Mark as private to Clutter,
not static to ClutterModel
* clutter/Makefile.am: Add clutter-model-private.h
* clutter/clutter-model-default.[ch]: Remove the ClutterModelDefault
iterator symbols from the public API; the iterator implementation
is a detail of the default ClutterModel class
* clutter.symbols: Update
* clutter/clutter-model.h:
* clutter/clutter-model.c:
(clutter_model_appendv),
(clutter_model_prependv): Add vector based API for bindings.
(clutter_model_get_column_name),
(clutter_model_get_column_type),
(clutter_model_set_sorting_column): Fix the check in the condition
on the column index.
* tests/test-scale.c (on_timeline_completed), (main): Fix spelling
* clutter.symbols: Update public symbols
* clutter.symbols: Add clutter_actor_move_byu()
* clutter/clutter-actor.h:
* clutter/clutter-actor.c:
(clutter_actor_move_by),
(clutter_actor_move_byu): Add a units-based variant of the
clutter_actor_move_by() function
* clutter.symbols: Add clutter_actor_set_clipu() and
clutter_actor_get_clipu()
* clutter/clutter-actor.h:
* clutter/clutter-actor.c:
(clutter_actor_set_clipu), (clutter_actor_get_clipu): Add the
new units-based versions of the clip accessors
(clutter_actor_set_clip), (clutter_actor_get_clip): Reimplement
the pixels-based clip accessors as proxies for the units-based
ones
* clutter/clutter-group.c:
* clutter/clutter-group.h: Add the clutter_group_add() convenience
function; it's now "undeprecated" and implemented as a macro
* clutter/clutter-stage.h: Add clutter_stage_add() as a convenience
macro
* clutter/cogl/cogl.h: Include just the needed headers instead
of the whole clutter.h; this avoids rebuild cogl when not needed
* clutter/clutter-model-default.c:
(clutter_model_default_iter_next),
(clutter_model_default_iter_prev): Do not instantiate a new
iterator, and update the passed one instead, as we say we do
in the documentation. This avoid leaking tons of iterators.
* clutter/clutter-model.[ch]: Update the documentation.
* tests/test-model.c: Prettify some output.
* clutter/clutter-behaviour.c:
(clutter_knot_get_type): Use the I_() macro.
* clutter/clutter-model.[ch]: Make ClutterModel and ClutterModelIter
abstract classes; also, provide more virtual functions inside the
ClutterModel vtable, to allow subclasses and language bindings to
override the entire ClutterModel using other/native data types
to store the rows.
* clutter/clutter-model-default.[ch]: ClutterModelDefault is a
default implementation of ClutterModel and ClutterModelIter using
GSequence.
* clutter/Makefile.am:
* clutter/clutter.h: Build glue for ClutterModelDefault.
* tests/test-model.c: Update for constructor changes.
* tests/test-shader.c: Fix a typo.
* clutter/clutter-model.h:
* clutter/clutter-model.c:
(clutter_model_append_value),
(clutter_model_prepend_value),
(clutter_model_insert_value): Add a _value() variant for the
insertion methods, for use of the language bindings.
(clutter_model_append),
(clutter_model_prepend),
(clutter_model_insert): Do not return a boolean: insertion should
never fail unless for a programming error, in which case we have
plenty of warnings.
* clutter/clutter-score.[ch]: Reimplement ClutterScore using
a N-ary tree to store the timelines. Remove clutter_score_add():
the same functionality can be achieved by passing a NULL
parent to clutter_score_append().
* tests/test-score.c: Update ClutterScore test unit, and add
debug printouts.
* clutter/clutter-timeline.h:
* clutter/clutter-timeline.c
(timeline_timeout_func),
(clutter_timeline_get_delta): Add a function for retrieving
the number of frames and the time (in milliseconds) elapsed
since the last timeline ::new-frame signal. This can be useful
for implementing a physics engine or just for knowing how if
and how many frames have been skipped.
Remove the layout containers: they will be moved to a
high-level library.
* clutter/clutter.h:
* clutter/Makefile.am: Remove layout and boxes from the
build.
* clutter/clutter-layout.[ch]: Remove the ClutterLayout
interface.
* clutter/clutter-box.[ch]:
* clutter/clutter-hbox.[ch]:
* clutter/clutter-vbox.[ch]: Remove ClutterBox and its
subclasses.
* clutter/clutter-label.c: Remove ClutterLayout implementation
* clutter/clutter-script-private.h:
* clutter/clutter-script-parser.c:
* clutter/clutter-script.c:
(clutter_script_parse_node): Remove special parsing for
ClutterMargin and ClutterPadding.
* clutter/clutter-types.h: Remove ClutterPadding and ClutterMargin.
* tests/Makefile.am:
* tests/test-boxes.c: Remove the boxes test case.
* clutter/clutter-effect.[ch]: Add clutter_effect_template_construct()
function, for language bindings that need to set the alpha function
but cannot call the clutter_effect_template_new() ctor themselves.
* clutter/clutter-actor.c:
(clutter_actor_real_request_coords),
(clutter_actor_request_coords),
(clutter_actor_class_init): Provide a default ::request_coords()
implementation in ClutterActor and use it to store the bounding
box passed to clutter_actor_request_coords(). This makes the code
more reliable and clean, and avoids a call to the subclass
request_coords() method if the bounding box did not change. Now,
every class overriding ClutterActor::request_coords() *must* chain
up to the parent class method or the bounding box will not be
saved inside the ClutterActor structure.
* clutter/clutter-entry.c:
* clutter/clutter-group.c:
* clutter/clutter-hbox.c:
* clutter/clutter-label.c:
* clutter/clutter-texture.c:
* clutter/clutter-vbox.c: Chain up to the parent class
request_coords() method.
* clutter/cogl/cogl.h: Add cogl_fog_set() abstracting the
glFog() functions and enabling the GL_FOG flag.
* clutter/cogl/gl/cogl.c: Add GL implementation of cogl_fog_set().
* clutter/cogl/gles/cogl.c: Add GL/ES implementation of
cogl_fog_set().
* clutter.symbols: Add new symbols.
* clutter/clutter-stage.h: Add API to enable depth cueing on
the stage using a linear GL fog, and to set the parameters
for it (#637).
* clutter/clutter-stage.c (clutter_stage_paint): Enable the
GL fog if the ClutterStage:use-fog property is true.
* tests/test-depth.c: Test the new stage API.
* clutter/clutter-label.[ch]: Fix ClutterLabel size allocation when
no bounding box has been provided, and store the box set by the
user so that it can be reused when recomputing the layout. (#600)
(clutter_label_class_init),
(clutter_label_init): Set the :wrap property default to FALSE.
* clutter/clutter-units.h: Add ClutterUnit-to-PangoUnit conversion
macro.
* tests/test-rotate.c: Fix string.
* clutter.symbols: Update
* clutter/clutter-actor.h: Rename the angle argument for
set_rotationx() to avoid gtk-doc complaining
* clutter/clutter-main.h:
* clutter/clutter-main.c:
(clutter_set_motion_events_enabled): Rename for consistency
(clutter_get_motion_events_frequency),
(clutter_set_motion_events_frequency): Add accessors for the default
motion events deliver frequency.
(clutter_do_event): Throttle down motion events delivery using the
motion events frequency setting, to avoid excessive redraws. (#608)
(clutter_context_get_default): Enable per-actor motion events, at
least for now.
* tests/test-events.c (red_button_cb):
* tests/test-grab.c (green_press_cb): Update.
* clutter/clutter-actor.[ch]: Massive API clean-ups. Initial
fixes for bugs #614 and #628.
* clutter/clutter-main.c:
* clutter/clutter-stage.c: Update internal usage of the actor
API.
* tests/test-events.c: Update test suite.
* clutter/clutter-timeline.[ch]: Add ClutterTimeline:direction
property, defining the direction (forward or backward) of the
timeline.
* tests/test-timeline.c: Test the direction property.
* clutter.symbols: Update exported symbols
* clutter/clutter-effect.h:
* clutter/clutter-effect.c:
(clutter_effect_template_new_for_duration): Add a simple constructor
for implicitly creating a ClutterTimeline with a given duration.
* clutter.symbols: Update with the new public symbols
* clutter/clutter-script.h:
* clutter/clutter-script-private.h:
* clutter/clutter-script.c:
(parse_signals), (json_object_end),
(signal_info_free), (object_info_free): Parse the "signals"
member for GObjects.
(clutter_script_connect_signals),
(clutter_script_connect_signals_full): Add new API for autoconnecting
signal handlers using the UI definition files.
* tests/test-script.c:
* tests/test-script.json: Test signal autoconnection.
* clutter/clutter-scriptable.[ch]: Rename ::set_name and ::get_name
to ::set_id and ::get_id, to avoid potential confusion with the
ClutterActor:name property.
* clutter/clutter-script.h:
* clutter/clutter-script.c (clutter_script_construct_object): Use
clutter_scriptable_set_id().
(clutter_get_script_id): Add a public function to retrieve the ID
used in the UI definition files from an object.
* clutter/clutter-actor.c: Do not set the name of the actor with
the ID set in the UI definition files.
* tests/test-script.c: Test clutter_get_script_id().
* clutter.symbols: Update with the new symbols.
* clutter/clutter-script.h:
* clutter/clutter-script.c: Add a ::get_type_from_name() virtual
function for bindings to override. The current implementation
calls g_type_from_name() and our lazy class resolver.
* clutter.symbols: Update.
* doc/reference/clutter-sections.txt: Update.
* clutter/clutter-script-private.h:
* clutter/clutter-script.h:
* clutter/clutter-script.c: Allow id-less objects: as long
as they have a "type" member, a unique id will be provided.
(json_object_end): Add merge id to the object information
structure.
(apply_behaviours), (add_children): Keep the unresolved
objects around.
(construct_stage), (clutter_script_construct_object): If an
object has unresolved children or behaviours try resolving
them when we ask for it.
(json_parse_end), (clutter_script_ensure_objects): Ensure
that the objects are fully constructed as best as we can when
finished parsing.
(object_info_free), (remove_by_merge_id):
(clutter_script_unmerge_objects): Remove objects under the
same merge id returned by the loading functions. (Fixes
bug #558)
* clutter/json/json-parser.c: Use the commodity JsonNode API
and accept bare values as root nodes.
* clutter/clutter-script-private.h:
* clutter/clutter-script.c: Unreference the created objects
only if they are top-levels, like ClutterBehaviour and
ClutterTimelines. Actors have floating references, so we
just transfer ownership to their containers, and the stage
is owned by the backend. Add the "type_func" key to the
object definition, so the user can supply its own GType
function if the class name doesn't follow the GObject rules.
Document the ClutterScript public API.
* clutter/clutter-script-private.h:
* clutter/clutter-script.h:
* clutter/clutter-script.c: Add licensing information to
the newly added files.
* clutter/clutter-script.c: Support creating behaviours with
ClutterScript. ClutterAlpha objects are implicit, but
timelines can be both explicit objects using their id or
implicit objects. Make the property resolution and translation
more robust. Support the pixbuf property.
* tests/test-script.c: Test the newly added features.
* docs/reference/clutter-docs.sgml:
* docs/reference/clutter-sections.txt: Add ClutterScript.
Initial implementation of the UI definition files. (#424)
* clutter/json/Makefile.am:
* clutter/json/*.[ch]: In-tree copy of JSON-GLib, a GLib-based
JSON parser/generator library. We use it in-tree because we might
need to change the API. Ideally, we'd depend on it.
* clutter/clutter.h:
* clutter/clutter-script-private.h:
* clutter/clutter-script.[ch]: ClutterScript, the scenegraph
generator class. It parses JSON streams in form of buffers and
files and builds the scene.
* clutter/clutter-debug.h:
* clutter/clutter-main.c: Add a "script" debug flag
* clutter/Makefile.am: Build glue.
* tests/Makefile.am:
* tests/test-script.c: Add a test case for the ClutterScript.
* configure.ac: Depend on GLib 2.14, so we can use the
g_hash_table_get_key() and g_hash_table_get_values() functions
for the time being; we can probably reimplement those, but we
are going to need 2.14 anyway if we are going to implement a
list model using GSequence.
Language bindings will have problems with raise() and lower() bein in both
ClutterContainer and ClutterActor; hence, this patch renames
clutter_container_raise() and clutter_container_lower() to
clutter_container_raise_child() and clutter_container_lower_child(),
respectively.
Since ClutterActor directly calls ClutterGroup methods we need ClutterContainer
to provide them, so that every container actor behaves the same way.
This patch makes ::raise, ::lower and ::sort_depth_order virtual functions
of the ClutterContainer interface, implemented by ClutterGroup.
The documentation has been added and deprecation warnings have been added
as well.
Finding a child by its ID is a method that should be used by every container
and not only by ClutterGroup. This is needed to actually fix the picking in
ClutterStage.
The threads_enter() and threads_leave() functions are no-ops because Clutter
is not thread-aware nor thread-safe. Leaving them in is a source of confusion
so we just remove them.
Update the NEWS and the README files with the release notes.
* clutter/clutter-behaviour-depth.c: Clarify that what drives
the movement along the Z axis is the ClutterAlpha object (we
don't have the luxury of a rollover like the opacity does);
so, if you want to go from 0 to -100 you have to use a
decreasing function, just as well if you want to go from 100
to 0. Using a min-depth of 100 and a max-depth of 0 and an
increasing function is undefined behaviour.
* tests/Makefile.am:
* tests/test-depth.c: Add a test case for the depth behaviour.
* clutter/clutter-stage.[ch]: Fix clutter_stage_set_user_resizable()
name, and add a getter for the property.
* clutter/glx/clutter-stage-glx.c: Use the accessor, not
g_object_get() to retrieve the value of the resizable property.
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Rename clutter_behaviour_clear()
to clutter_behaviour_remove_all() to avoid method clashes in
bindings.
* subclassing-ClutterActor.sgml: Add a chapter about how to
correctly subclass the actor base class.
* clutter-docs.sgml: Include the new chapter about subclassing
ClutterActor; add a description for some of the API reference
parts.
* clutter/clutter-box.[ch]: Base class for layout containers.
* clutter/clutter-hbox.[ch]: Horizontal box actor.
* clutter/clutter-vbox.[ch]: Vertical box actor.
* clutter/clutter.h:
* clutter/Makefile.am: Build glue
* tests/Makefile.am:
* tests/test-boxes.c: Test suite for ClutterBox API and
implementations.
* clutter/clutter-container.[ch]: Add a generic actor container
interface, for actors to implement without subclassing ClutterGroup.
* clutter/clutter-group.[ch]: Make ClutterGroup implement the
ClutterContainer interface, and deprecate the colliding methods.
* clutter/clutter-layout.[ch]: Add extended layout interface.
Actors and containers requiring or honouring complex layout
management should implement this interface and provide at least
one of the available layout types: width for height, height for
width, natural size, iterative size request.
* clutter/clutter-label.c: A ClutterLabel requires height for
width layout management, so it implements the ClutterLayout
interface.
* clutter/Makefile.am: Add new files to the build.
* tests/*.c:
* examples/*.c: Update tests and examples code to use the
new ClutterContainer API instead of ClutterGroup.
This patch adds a "delay" property to the timeline object. If set,
it will delay the start of the timeline of a number of milliseconds.
If the timeline is looping, the delay will be applied just the first
time and not for every loop.
* clutter/clutter-entry.c: (clutter_entry_set_property),
(clutter_entry_get_property), (clutter_entry_class_init),
(clutter_entry_init), (clutter_entry_set_text),
(clutter_entry_set_max_length):
* clutter/clutter-entry.h:
* examples/test-entry.c: (main):
Added a max-length property whihc limits the length of the text in the
entry.
Add a semi-private function, called clutter_base_init(), which initialises
the basic Clutter functionalities (at the moment, just the GLib type system)
without calling in the backend-specific code. This function is only useful
for gtk-doc, to introspect the library when generating documentation for
signals, properties and class hierarchy.
Also, change the documentation build system to use clutter_base_init() when
launching the scanner program.
Merge from clutter.git/master
* clutter/glx/clutter-event-glx.c:
* clutter/glx/clutter-stage-glx.c: Implement the _NET_WM_PING
protocol handling on the main stage window.
* clutter/clutter-stage.h:
* clutter/clutter-stage.c:
* clutter/clutter-main.c: Handle CLUTTER_DELETE events internally,
by calling clutter_main_quit(), and remove the ::delete-event
signal from ClutterStage; clean up the signal emission sequence
for the events: emit the ::event signal before emitting any signal
and the ::event-after signal after the signal has been emitted; move
the signal emission calls inside ClutterStage so we can call
g_signal_emit() instead of g_signal_emit_by_name(), thus sparing us
a lookup for each event.
* examples/test.c: Remove ::delete-event signal handling.
Supporting WM_PROTOCOLS allows handling the WM_DELETE_WINDOW ClientMessage,
which is then relayed to the ClutterStage actor in form of the "delete-event"
signal. Returning TRUE will block the propagation and won't close the
stage window.
Add clutter_backend_get_n_screens(), which returns the number of screens
manager by the ClutterBackend, and change clutter_backend_get_screen_number()
to return the screen number of the currently used screen; this is semantically
equivalent to clutter_glx_get_default_screen(), but leaves the door open for
a "screen" abstraction in Clutter, handled by the backend. Update the GLX
and EGL backends to retrieve and set the screen_num and n_screens members of
ClutterBackend using Xlib calls.
Add the XEMBED protocol support in the GLX backend, for embedding the
stage window into another X window. This allows cross-toolkit inclusion
and makes clutter-gtk possible.
Add the XEMBED protocol support in the GLX backend, for embedding the
stage window into another X window. This allows cross-toolkit inclusion
and makes clutter-gtk possible.
Add initial implementation of a rotate behaviour; this behaviour rotates
actors along a chosen axis, with a chosen direction, between two angles.
Missing: API documentation and the implementation for the angle boundaries
setters (double and fixed API).
GL and not GLX. Removed the get_actor_at_pos() and flush() vfuncs
from ClutterStageClass: clutter_stage_flush() becomes the private
_clutter_stage_sync_viewport() function, which should only be used
internally.
* clutter/clutter-event.c: Pop and peek the event queue
from the tail - it's a queue, not a stack.
* clutter/clutter-private.h:
* clutter/clutter-main.c: Add a boolean signal accumulator.
* clutter/clutter-stage.[ch]: Add an event argument to
the 'delete-event' signal; rename the 'input-event' signal
to 'event'; add the static scope flag to all the stage
events.
* clutter/clutter-private.h: Remove inclusion of backend-specific
headers; update the main context object; add the declarations for
the event queue functions.
* clutter/clutter-backend.[ch]: Add the abstract ClutterBackend
object, which holds backend-specific settings, the main stage,
and the event queue. Every backend must implement a subclass of
ClutterBackend and ClutterStage.
* clutter/clutter-feature.c: Protect the GLX specific calls
behing #ifdef HAVE_CLUTTER_GLX.
* clutter/clutter-actor.c:
* clutter/clutter-group.c:
* clutter/clutter-clone-texture.c: Include GL/gl.h
* clutter/clutter-event.[ch]: Update public API and implement the
event queue private API; hold a reference on the event objects;
move out the keysym-to-unicode table; add the new event types.
* clutter/clutter-color.h: Include clutter-fixed.h
* clutter/clutter-main.c: Update API; get the main stage
from the backend object; process the event received from the
queue; lock/unlock the main mutex if we have one; move the
initialisation process sooner in the init sequence, in order to
have the backend object when we check for options; call the
backed vfuncs in the pre/post parse hooks.
* clutter/clutter-stage.c: Make ClutterStage and abstract class,
implemented by the backends.
* clutter/clutter/glx/clutter-glx.h:
* clutter/clutter/glx/clutter-backend-glx.[ch]:
* clutter/clutter/glx/clutter-event-glx.c:
* clutter/clutter/glx/clutter-stage-glx.[ch]:
* clutter/clutter/glx/Makefile.am: Add the GLX backend.
* clutter/clutter/egl/clutter-backend-egl.[ch]:
* clutter/clutter/egl/clutter-event-egl.c:
* clutter/clutter/egl/clutter-stage-egl.[ch]:
* clutter/clutter/egl/Makefile.am: Add the stub for a EGL backend.
* examples/*.c: Update for the new API.
* clutter/clutter-group.h: Add public functions
clutter_group_get_n_children() and clutter_group_get_nth_child().
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Fix header alignment; fix argument
name for apidoc.