Commit Graph

6320 Commits

Author SHA1 Message Date
Robert Bragg
30eb3be781 paint-volumes: avoid trashing is_static state
In _clutter_paint_volume_set_from_volume we were using memcpy to simply
copy everything from one volume to another, but that meant we were
trashing the is_static flag which determines if the destination
paint-volume was slice allocated or not.
2011-06-16 12:40:11 +01:00
Robert Bragg
a9789616b9 paint-volumes: remove alignment constraint for completion
This removes the constraint that a paint-volume must be axis aligned
before _clutter_paint_volume_complete can be called. NB: A paint volume
is represented by one origin vertex and then three axis vertices to
define the width, height and depth of the volume. It's straightforward
to use the vectors from the origin to the axis vertices to deduce the
other 4 vertices so we can remove the is_axis_aligned assertion.
2011-06-16 12:39:51 +01:00
Robert Bragg
34600949ed clutter-stage: Allow a wider range of visible z values
Since eef9078f the translation of the camera away from the z=zero
plane was hardcoded at 50 which is approximately half way between the
default z_near and z_far values. This ended up with quite a small
distance in user-space coordinates to the far plane with the default
stage size and this was causing test-texture-quality to clip the actor
early.

This patch makes it try to calculate a reasonable value for the
position of the z=0 plane as well as a value for z_far so we maximize
the space in between the z=0 plane and the near plane and we have a
predictable amount of space behind the stage before hitting the far
clipping plane, while considering the trade off of loosing depth
precision by pushing the far plane too far back relative to the near
plane.

With the default fov of 60° it's not possible to use the stage size to
define the gap in-front of the stage plane; only ~87% of the stage size
is possible as an upper limit. We make 85% of the stage_height available
assuming you have a fov of 60°. We consistently provide 10 times the
stage height of space behind the stage regardless of the fov.

It seems worth noting here that we went around in circles a few times
over how to calculate the gaps since there are a number of trade offs to
consider and they also affect the complexity of the solution. In the end
we went for simplicity but commented the issues well enough hopefully so
we can develop a more elaborate solution if we ever have a use-case.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2625
2011-06-15 18:17:06 +01:00
Neil Roberts
2022e4c100 clutter-stage: Don't override the user's perspective matrix
Since eef9078f ClutterStage updates the aspect ratio of the
perspective matrix whenever the size of the stage changes. This meant
that if an application tries to set its own perspective matrix then
part of it would get overridden. It's not really clear what the
use-case of setting the perspective on the stage should be but it
seems like the safest bet is to always try to preserve the
application's request. The documentation for the function has been
tweaked to discourage its use.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2625
2011-06-15 18:03:53 +01:00
Robert Bragg
d90c849e80 make some parts of the stage-window interface optional
Some parts of the StageWindow interface aren't meaningful for all window
systems. This makes stage_window_set_title/fullscreen/cursor_visible
optional instead of requiring those window systems to implement empty
stubs. Notably the empty stubs we had in the Cogl backend (previously
the EGL backend) used g_warning to report the feature as unsupported and
that was causing conformance test failures.
2011-06-15 15:46:38 +01:00
Emmanuele Bassi
dd6392ba20 Update the location of the cex100 header in the ignore file 2011-06-15 13:07:04 +01:00
Emmanuele Bassi
fa8e6d368a Do not include clutter-egl.h unconditionally 2011-06-15 13:05:18 +01:00
Robert Bragg
6a73cece71 backend-cogl: fix s/egl/cogl/ naming left-over 2011-06-15 12:43:47 +01:00
Robert Bragg
b3c93bca20 build: Adds missing clutter-glx.h 2011-06-15 12:41:17 +01:00
Robert Bragg
dd02c56bdb build: Adds missing clutter-egl-headers.h 2011-06-15 12:40:02 +01:00
Robert Bragg
2d8083bab8 unify egl and glx backends as "cogl" backend
Since GLX and EGL are abstracted by Cogl the two backends are both
implementing everything using the Cogl API and they are almost
identical.

This updates the egl backend to support everything that the glx backend
supports. Now that EGL and GLX are abstracted by Cogl, the plan is that
we will squash the clutter-egl/glx backends into one. Since the EGL
backend in clutter can conditionally not depend on X11 we will use the
EGL backend as the starting point of our common backend.

https://bugzilla.gnome.org/show_bug.cgi?id=649826
2011-06-14 20:35:18 +01:00
Robert Bragg
951cb82ec5 egl: fix args to cogl_onscreen_x11_set_foreign_window_xid
We hadn't updated the egl backend inline with a change to the arguments
that cogl_onscreen_x11_set_foreign_window_xid would expect and that was
causing a compilation error.
2011-06-14 20:19:27 +01:00
Emmanuele Bassi
05bcd40729 stage: Ignore do_update() on unrealized stages
An unrealized stage has no resources set yet, so we might as well skip
it during the master clock spin.

https://bugzilla.gnome.org/show_bug.cgi?id=652566
2011-06-14 16:11:54 +01:00
Emmanuele Bassi
81e9bf6127 backend: Do not call ensure_context() with NULL stage
Always call ensure_context() if we have a valid Stage.

https://bugzilla.gnome.org/show_bug.cgi?id=652566
2011-06-14 15:55:06 +01:00
Emmanuele Bassi
0b20739232 glx: Ignore ensuring context on NULL stages
https://bugzilla.gnome.org/show_bug.cgi?id=652566
2011-06-14 15:55:06 +01:00
Emmanuele Bassi
a7fc76a1c5 build: Disable deprecated symbols during development cycles
And add a configure switch to toggle them.
2011-06-14 14:50:10 +01:00
Emmanuele Bassi
4382e6588c glx: Remove unused Atom members from ClutterBackendGLX
The atoms were moved to the shared X11 backend structure ages ago.
2011-06-14 11:36:01 +01:00
Emmanuele Bassi
5ded02cd08 docs: Add symbols index for 1.8 2011-06-14 01:02:09 +01:00
Colin Walters
b046bc354c ClutterModifierType: Port fix from GDK to clutter's GDK copy
See https://bugzilla.gnome.org/show_bug.cgi?id=634994 where GDK was
modified to include all flag values, which helps bindings.  Port this
fix to Clutter's copy of GDK.

https://bugzilla.gnome.org/show_bug.cgi?id=650329
2011-06-14 00:05:33 +01:00
Emmanuele Bassi
5e1fa71498 Post-release version bump to 1.7.3 2011-06-13 23:46:21 +01:00
Emmanuele Bassi
a7cc84a483 Release Clutter 1.7.2 (snapshot) 2011-06-13 23:15:17 +01:00
Emmanuele Bassi
86d96dbcc1 build: Put back ChangeLog.pre-git-import to unbreak distcheck 2011-06-13 23:15:17 +01:00
Emmanuele Bassi
e8bd46b82b build: Fix up ChangeLog build generation
Since the pre-git-import ChangeLog has been moved, we need to put it
back in the list temporarily when generating the rest.
2011-06-13 17:41:52 +01:00
Emmanuele Bassi
fbdc967575 release rules: Add note for snapshots 2011-06-13 16:32:24 +01:00
Philippe Normand
494629d4b9 clutter-text: new clutter_text_get_layout_offsets API
This new function can be used to retrieve the coordinates where the
ClutterText will draw the PangoLayout representing the text.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2553
2011-06-13 16:15:22 +01:00
Emmanuele Bassi
74a9b71060 effect: Rename RunFlags to PaintFlags
Since run() was replaced and both paint() and pick() use the
enumeration.

https://bugzilla.gnome.org/show_bug.cgi?id=651700
2011-06-13 16:00:45 +01:00
Tomeu Vizoso
0ede622f51 Give a chance to effects for running when picking
Some effects can change the actor's shape and position, so they need
to run when picking.

https://bugzilla.gnome.org/show_bug.cgi?id=651700
2011-06-13 15:45:36 +01:00
Tomeu Vizoso
700c543850 Rename ClutterEffect::run to ClutterEffect::paint
In preparation for adding ClutterEffect::pick

https://bugzilla.gnome.org/show_bug.cgi?id=651700
2011-06-13 15:44:58 +01:00
Emmanuele Bassi
165b2f9599 docs: Fix Clutter API reference 2011-06-13 15:36:07 +01:00
Emmanuele Bassi
cd2b36ed91 Merge branch 'swipe-action'
* swipe-action:
  test-swipe-action: Clean up the test code
  docs: Add the new actions to the API reference
  gesture-action: Remove the multi-device entry points
  swipe-action: Remove the required devices call
  swipe-action: Clean up
  gesture-action: Clean up
  Add ClutterSwipeAction and ClutterGestureAction
2011-06-13 14:39:03 +01:00
Emmanuele Bassi
4f0769d69d docs: Update missing documentation 2011-06-13 13:47:09 +01:00
Emmanuele Bassi
8625f07c3b script: Plug a leak
The SignalInfo structure gained a couple of string fields that should be
deallocated when destroying the structure.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
a9dd5abfcc script: Allow warping to states
Do not just allow animating states connected to signals: add a "warp"
optional key that ends up calling clutter_state_warp_to_state(). This
is useful for debugging.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
3017a48228 Skip introspection for GValue ↔ CoglFixed API
It's pointless to introspect an API that it's not meant to be used
through introspection.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
d9c1a2ebbb script: Use a weak ref to remove the signal emission hook
When an object goes away we should remove the emission hook for the
state transitions, to avoid leaving hooks around.
2011-06-13 13:47:09 +01:00
Emmanuele Bassi
b33973f9f8 script: Rename "state" → "states"
Make it clear that the key used when defining a state-based signal is
linked to the states of a ClutterState.
2011-06-13 13:47:08 +01:00
Emmanuele Bassi
29d7c5a297 script: Allow resolving signals states added from code
Currently, defining states for object signals can only be done by
defining a ClutterState inside the ClutterScript definition. We should
allow creating a (named) ClutterState in code, and associating it to a
ClutterScript instance — and have the Script resolve the "state" field
of a signal definition correctly.
2011-06-13 13:47:08 +01:00
Emmanuele Bassi
e745ce52e7 test-interactive: Add signal-based state transitions
Use the newly added support for binding signal emissions to state
changes on a ClutterState.
2011-06-13 13:47:08 +01:00
Emmanuele Bassi
dd8cf63a62 script: Allow connecting signal to ClutterState states
One of the uses of a ClutterState state machine along with ClutterScript
is to provide a quick way to transition from state to state in response
to signal emitted on specific instances.

Connecting a real function, in code, to a specific signal does not
improve the ease of use of ClutterScript to define scenes.

By adding a new signal definition to the current one we can have both a
simple way to define application logic in code and in the UI definition
file.

The new syntax is trivial:

  {
    "name" : <signal name>,
    "state" : <state machine script id>,
    "target-state" : <target state>
  }

The ClutterState instance is identified by its script id, and the target
state is resolved at run-time, so it can be defined both in
ClutterScript or in code. Ideally, we should find a way to associate a
default ClutterState instance to the ClutterScript one that parses the
definition; this way we would be able to remove the "state" member, or
even "style" the behaviour of an object by replacing the ClutterState
instance.

The implementation uses a signal emission hook, to avoid knowing the
signal signature; we check the emitter of the signal against the object
that defined the signal, to avoid erroneous state changes.
2011-06-13 13:47:08 +01:00
Marek Černocký
2c2bdc1d2c Updated Czech translation 2011-06-13 13:54:32 +02:00
Matej Urbančič
0409840d18 Updated Slovenian translation 2011-06-11 17:36:23 +02:00
Robert Bragg
7b4f7cd3e0 build: include <cairo.h> not <cairo/cairo.h>
cairo.h is intended to be included as <cairo.h> not <cairo/cairo.h> as
is the style for clutter.h. If you have installed cairo to a custom
prefix then using cairo/cairo.h can result in unintentional use of the
system cairo headers, or if they aren't installed then it will result in
a failure to find the header.
2011-06-10 17:57:18 +01:00
Emmanuele Bassi
80dd60ecbb test-swipe-action: Clean up the test code
Remove unused code, and be more strict at discarding swipes on
constrained actors.

Add a note on the behaviour of each rectangle/action pair.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
9b4ad40f04 docs: Add the new actions to the API reference
http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
2c791da70a gesture-action: Remove the multi-device entry points
GestureAction supports a single device/touch point. We'll need touch
events supported in Clutter before adding the ability to set required
device/touch points on gestures.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
f9ce901496 swipe-action: Remove the required devices call
The SwipeAction requires one device/touch point, and that is the default
for GestureAction — if GestureAction supported multiple devices/touch
points.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
11d961b605 swipe-action: Clean up
Clean up the documentation, and use a type safe GFlags marshaller for
the ::swept signal's @direction argument - instead of a generic integer
marshaller.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Emmanuele Bassi
0058c78b79 gesture-action: Clean up
The GestureAction is marked as abstract, but it has a constructor. It
should be possible to create simple gesture recognizers through signal
handling alone, so we might as well have GestureAction be a concrete
class from the start.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 15:15:15 +01:00
Tomeu Vizoso
ba72235b66 Add ClutterSwipeAction and ClutterGestureAction
To allow actors to handle gestures in a more organized way.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2585
2011-06-10 14:02:17 +01:00
Neil Roberts
d151d789f6 clutter-text: Use the ink rect in the paint volume
Previously ClutterText was just reporting the allocation as the paint
volume. The preferred size of a ClutterText is just the logical
rectangle of the layout. A pango layout can sometimes draw outside of
its logical rectangle for example with an italicised font with large
serifs. Additionally, ClutterText doesn't make any attempt to clip the
text if the actor gets allocated a size too small for the text so it
would also end up drawing outside of the paint volume in that case. To
fix this, the paint volume is now reported as the ink rect of the
Pango layout. The rectangle for the cursor and selection is also
unioned into that because it won't necessarily be within the ink
rectangle.

The function for drawing the selection rectangles has been split up
into a generic function that calculates the rectangles that need to be
drawn and a function that draws them. That way the get_paint_volume
virtual can share the code to calculate the rectangles.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2599
2011-06-10 14:02:07 +01:00