Commit Graph

122 Commits

Author SHA1 Message Date
Gustavo Noronha Silva
0c75e17814 Add PanAxis mode that automatically pins scroll based on initial movement
This code is inspired by the implementation of the same feature for the
Mx toolkit's MxKineticScrollView. See commit 4d08771.

https://bugzilla.gnome.org/show_bug.cgi?id=707982
2015-06-11 15:47:48 -03:00
Emmanuele Bassi
e15f520a9e examples: Add transparency to the rounded rectangle
Makes it a bit more fancy.
2015-04-30 13:04:32 +01:00
Emmanuele Bassi
dac33c5fea Stop using macros for accessing actor state
Use the newly added functions instead.
2015-04-23 17:39:30 +01:00
Emmanuele Bassi
df15f04fc0 build: Use libtool macros to find libm
Instead of using `-lm` everywhere, use LT_LIB_M inside configure.ac, and
$(LIBM) inside Makefile.am.
2015-03-03 17:23:37 +00:00
Emmanuele Bassi
4e04d2a532 examples/rounded: Use CLUTTER_REQUEST_CONTENT_SIZE
Show how to use the request mode to have an actor ask for the size of
its content.
2015-01-12 13:38:07 +00:00
Emmanuele Bassi
d56da0ace9 examples/layout-manager: Toggle between states
Instead of using two specific keys, toggle between the circular and grid
layouts using a single key.
2015-01-11 17:00:02 +00:00
Emmanuele Bassi
2a660fa298 Fully rework the conformance test suite
The current conformance test suite is suboptimal in many ways.

All tests are built into the same binary, which makes adding new tests,
builting tests, and running groups of tests much more awkward than it
needs to be. The first issue, especially, raises the bar of contribution
in a significant way, while the other two take their toll on the
maintainer. All of these changes were introduced back when we had both
Clutter and Cogl tests in tree, and because we were building the test
suite for every single change; since then, Cogl moved out of tree with
all its tests, and we build the conformance test suite only when running
the `check` make target.

This admittedly large-ish commit changes the way the conformance test
suite works, taking advantage of the changes in the GTest API and test
harness.

First of all, all tests are now built separately, using their own test
suite as defined by each separate file. All tests run under the TAP
harness provided by GTest and Automake, to gather a proper report using
the Test Anything Protocol without using the `gtester` harness and the
`gtester-report` script. We also use the Makefile rules provided by GLib
to vastly simplify the build environment for the conformance test suite.

On top of the changes for the build and harness, we also provide new API
for creating and running test suites for Clutter. The API is public,
because the test suite has to use it, but it's minimal and mostly
provides convenience wrappers around GTest that make writing test units
for Clutter easier.

This commit disables all tests in the conformance test suite, as well as
moving the data files outside of the tests/data directory; the next few
commits will re-establish the conformance test suite separately so we
can check that everything works in a reliable way.
2013-12-12 18:51:11 +00:00
Emmanuele Bassi
0b6498d655 Use paint nodes to set up the stage
This allows to set a Content on a stage, and consolidates the paint
code where it belongs.

https://bugzilla.gnome.org/show_bug.cgi?id=704625
2013-08-19 23:23:45 +01:00
Emmanuele Bassi
c0b148232d examples: Remove a stray restore_easing_state()
The DropAction example has an additional restore_easing_state() on the
handle which will produce a warning.
2013-06-15 12:12:43 +01:00
Emmanuele Bassi
323ec19dcc build: Remove INCLUDES directives
They have been deprecated for a while, replaced by AM_CPPFLAGS.
2013-05-15 15:18:13 +01:00
Bastian Winkler
cd9ba0ad8d flow-layout: Add :snap-to-grid property
Add a :snap-to-grid property to FlowLayout to prevent the layout from
assigning it's children a position based on the size of the largest
child.

https://bugzilla.gnome.org/show_bug.cgi?id=648873
2013-05-11 10:54:38 -04:00
Emmanuele Bassi
c11c875762 examples/layout-manager: Remove unnecessary easing state save
The actors in the layout are already set up with a non-default easing
state, we can use that.
2013-03-13 15:05:27 -03:00
Emmanuele Bassi
7f5b68eed3 examples/layout-manager: Improve the example
Add an explicit transition, and more comments.
2013-03-13 15:05:27 -03:00
Emmanuele Bassi
9016cba473 examples: Remove clutter_x11_enable_xinput()
It is unnecessary, and deprecated.
2012-12-18 01:27:32 +00:00
Emanuele Aina
04ca3d1af3 examples/pan-action: Enable the xinput backend to test touch events 2012-11-26 13:29:36 +01:00
Emanuele Aina
ccdbd36234 gesture-action: Add clutter_gesture_action_get_last_event()
Export the last event received for each touch point in its entirety,
instead of duplicating ClutterEvent accessors one at a time.

examples/pan-action.c has been updated to show the type of the event
that's causing the panning.

https://bugzilla.gnome.org/show_bug.cgi?id=685737
2012-10-19 14:13:17 +02:00
Emanuele Aina
61f2d751d0 tap-action: Add TapAction, to handle mouse/touch tapping
TapAction is a GestureAction-subclass that handles clicks and
tap gestures. It is meant to provide a replacement for ClickAction
using GestureAction:

• it handles events trasparently without capturing them, so that it
  can coexists with other GestureActions;

• the ::tap signal is not emitted if the drag threshold is exceeded;

• building upon GestureAction the amount of code is greatly reduced.

TapAction provides:

• tap signal, notifying users when a tap has been performed.

The image-content example program has been updated replacing its
ClickAction usage with TapAction.

https://bugzilla.gnome.org/show_bug.cgi?id=683948
2012-10-19 13:41:31 +02:00
Emmanuele Bassi
fb9e0466c0 examples/pan-action: Animate the content reset
We can use the newly added support for implicit animations for the child
transform.
2012-09-03 21:01:24 +01:00
Emanuele Aina
9ca06d2895 pan-action: add PanAction, to handle panning in scrollable actors
PanAction is a GestureAction-subclass that implements the panning
concept for scrollable actors, with the ability to emit interpolated
signals to emulate the kinetic inertia of the panning. PanAction provides:

• pan signal, notifying users of the panning gesture status;

• pan-stopped signal, emitted at the end of the interpolated phase
  of the panning gesture, if enabled;

• pan-axis property, to allow constraining the dragging to a specific
  axis;

• interpolated property, to enable or disable the inertial behaviour;

• deceleration property, to customize the rate at which the momentum
  of the panning will be slowed down;

• acceleration-factor property, applied to the inertial momentum when
  starting the interpolated sequence.

An interactive test is also provided.

https://bugzilla.gnome.org/show_bug.cgi?id=681648
2012-08-28 10:11:16 -03:00
Emmanuele Bassi
c4a0f911b0 examples/box: Allow toggling animations
We need to set the easing duration to a positive value to let the
BoxLayout animate the allocation.
2012-08-20 17:58:30 +01:00
Emmanuele Bassi
41ed9023eb build: Fix out of tree builds 2012-07-30 12:33:24 +01:00
Emmanuele Bassi
3649e5d828 examples/basic: Use the event type and not a flag
In order to identify whether the crossing event is an enter or a leave,
we should use the ClutterEventType enumeration, not attach a value to
the signal handler.
2012-07-30 10:54:18 +01:00
Emmanuele Bassi
28c2eeef95 actor: Add ::transition-stopped
The ::transition-stopped signal can be used to get notification of the
end of a transition.
2012-07-26 14:01:00 +01:00
Emmanuele Bassi
5a43f6b895 examples/easing-modes: Use newly added modes
Step and cubic bezier.
2012-07-19 22:13:28 -04:00
Emmanuele Bassi
b1b3bfb74e Remove usage of ClutterLayoutManager easing API
It is going away.
2012-07-11 13:22:21 +01:00
Emmanuele Bassi
20d1d24e38 examples: Use pivot point, not anchor point
https://bugzilla.gnome.org/show_bug.cgi?id=677853
2012-07-11 13:22:20 +01:00
Emmanuele Bassi
4be7ecb836 examples: Use the pivot point for scaling
Instead of scaling with gravity.

https://bugzilla.gnome.org/show_bug.cgi?id=677853
2012-07-11 13:22:20 +01:00
Emmanuele Bassi
caf199c732 examples: Use rotation angle and pivot point
Instead of the full set_rotation() setter, we can use the pivot point
and set the rotation angle separately.
2012-07-11 13:22:19 +01:00
Emmanuele Bassi
b20e9b78e5 actor: Add :z-position and deprecate :depth
The ClutterActor:depth property has always been a bit of a misnomer:
actors are 2D flat surfaces, so they cannot have "depth"; the property
defines the position on the Z axis.

Another side effect of the :depth property is that it decides the
default paint and allocation order on insertion, and that setting it
will call the ClutterContainer.sort_depth_order() method. This has
proven to be a fairly bad design decision that we strung along from the
0.x days, as it gives a false impression of being able to change the
paint and allocation order simply by changing the position on the Z
axis — something that, in reality, requires depth testing to be enabled
during the paint sequence of an actor's parent.

For 2.0 we need a clean break from the side effects, and a better
defined interface.

ClutterActor:z-position is essentially what ClutterActor:depth is, but
doesn't call into ClutterContainer, and has a more apt name.

https://bugzilla.gnome.org/show_bug.cgi?id=679465
2012-07-11 13:22:19 +01:00
Emmanuele Bassi
25be8e86f7 examples: Clean up the threads usage example
• Remove the threads_enter/leave calls; they are not needed, given that
  the code between init() and main() is single threaded.

• Ensure that the idle callbacks are inserted with the right priority,
  to avoid updating the UI after the data has been freed.
2012-07-11 13:22:19 +01:00
Emmanuele Bassi
2ee945b2ca examples/layout-manager: Show transformations inside layouts
Actor transformations do not affect the layout management by default; we
can easily show that a scale animation does not break the layout policy
inside an example.
2012-06-27 21:28:01 +01:00
Emmanuele Bassi
ebb61dea1f examples: Enable maintainer compiler flags
Another step in keeping the example code up to date and correct.
2012-06-06 13:39:50 +01:00
Emmanuele Bassi
a541023795 examples/layout: Initialize variables to avoid warnings 2012-06-06 13:39:47 +01:00
Emmanuele Bassi
75ef676b15 examples: Build with deprecation warnings turned on
We want to ensure that the examples stay valid and idiomatic; thus, we
should build them with deprecation warnings turned on.
2012-06-06 13:37:05 +01:00
Emmanuele Bassi
c13290240c examples/constraints: Do not use deprecated API 2012-06-06 13:37:02 +01:00
Emmanuele Bassi
4db310b127 examples/flow: Do not use deprecated API 2012-06-06 13:36:46 +01:00
Emmanuele Bassi
7381050ab1 examples/threads: Modernize code
Drop the usage of behaviours and alphas, and use transitions and
implicit animations instead.
2012-06-05 18:47:44 +01:00
Bastian Winkler
dae25d839e examples: Add a grid-layout example
A fairly complete example for ClutterGridLayout

https://bugzilla.gnome.org/show_bug.cgi?id=677372
2012-06-05 12:28:40 +02:00
Bastian Winkler
f14c71cd3c examples: Updated box-layout example
Updated test-box-layout to use modern API and move it to examples.

https://bugzilla.gnome.org/show_bug.cgi?id=677283
2012-06-04 16:16:39 +02:00
Emmanuele Bassi
de4d70af69 timeline: Add a new "stopped" signal
The ::stopped signal is emitted when the timeline has been completely
exhausted or when the timeline has been programmatically stopped by
using clutter_timeline_stop(); the notification at the end of the
timeline run allows to write handlers without having to check whether
the current repeat is the last one, like we are forced to do when using
the ::completed signal.

Based on the patch by: Jasper St. Pierre <jstpierre@mecheye.net>

https://bugzilla.gnome.org/show_bug.cgi?id=676854
2012-05-31 09:54:23 +01:00
Bastian Winkler
93627c876d examples: Allow optional animations in flow-layout
Allow animations to demonstrate the LayoutManager animation API

https://bugzilla.gnome.org/show_bug.cgi?id=677085
2012-05-30 12:47:21 +02:00
Bastian Winkler
1339b39132 examples: Update layout-manager example to use the animations API
https://bugzilla.gnome.org/show_bug.cgi?id=676827
2012-05-28 19:37:19 +02:00
Emmanuele Bassi
2878258fc0 examples: Update drag and drop action code
Use modern API and show idiomatic behaviour.
2012-05-24 13:58:31 +01:00
Emmanuele Bassi
c9028cee48 Move scroll actor test to the examples
Nothing specific to test, and the code is idiomatic enough to be used as
an example.
2012-05-17 10:57:15 +01:00
Emmanuele Bassi
193bf6123d examples/canvas: Resize the canvas on allocation changes
This should show how to make a Canvas resize whenever the actor that
uses it as content changes size. For good measure, it also shows how to
coalesce multiple allocations into one Canvas resize through a timeout
source.
2012-05-11 17:38:53 +01:00
Emmanuele Bassi
5ad1ec7cca Put bind-constraint back into the interactive tests
The bind-constraint.c example still uses clutter_actor_animate(), and
it'd require some serious reworking to move it to
ClutterPropertyTransition or to implicit animations.
2012-05-08 16:15:33 +01:00
Emmanuele Bassi
4d087f2c0a examples: Add an example of layout manager
The MultiLayout shows how to write a layout manager with two policies,
and to use the easing state of a child to interpolate the allocation.
2012-05-04 17:54:51 +01:00
Emmanuele Bassi
b7c76a45bc Add rounded corners rectangle example using Canvas
An old request: how to create a rectangle with rounded corners with
Clutter; we use ClutterCanvas and Cairo because we want anti-aliased
edges.
2012-05-04 17:54:51 +01:00
Emmanuele Bassi
c6b226e6c7 Move the easing modes test into the examples
It's a pretty simple, self-contained example of how to use different
easing modes, as well as the implicit animations API.
2012-05-02 18:37:36 +01:00
Emmanuele Bassi
46409b4043 Move FlowLayout test into examples
There's nothing really test-worthy in the ClutterFlowLayout interactive
test; it can be lifted pretty much as is, and placed into the examples.
2012-05-02 12:14:45 +01:00