Emmanuele Bassi [Wed, 26 May 2010 13:09:24 +0000 (14:09 +0100)]
docs: Description fixes for Action and Constraint
Emmanuele Bassi [Wed, 26 May 2010 12:43:42 +0000 (13:43 +0100)]
state: Minor fixes and documentation additions
Clean up the code a bit, and move common code paths into separate
function. Also, document clutter_state_set() with examples.
Emmanuele Bassi [Wed, 26 May 2010 12:40:18 +0000 (13:40 +0100)]
introspection: Add --pkg atk
We need to tell the introspection scanner all the dependencies we
require, including the pkg-config name to use when compiling the
GIR file into a typelib object.
Emmanuele Bassi [Tue, 25 May 2010 12:27:29 +0000 (13:27 +0100)]
click-action: Handle the event
In case we did handle the event, we should return TRUE from the ::event
signal handler.
Emmanuele Bassi [Tue, 25 May 2010 12:10:38 +0000 (13:10 +0100)]
docs: Fix DragAction documentation
The ::drag-motion signal does not have a ModifierType argument; also,
there's no need to connect to the ::drag-motion signal any more.
Emmanuele Bassi [Tue, 25 May 2010 12:03:24 +0000 (13:03 +0100)]
Fix typo in get_accessible()
Emmanuele Bassi [Tue, 25 May 2010 11:54:59 +0000 (12:54 +0100)]
actor: Put get_accessible() at the end of the class structure
New virtual functions cannot go wherever they want, if we need to
preserve the ABI.
Also, the coding style should match the rest of ClutterActor and
Clutter's own coding style.
Emmanuele Bassi [Tue, 25 May 2010 10:53:59 +0000 (11:53 +0100)]
docs: Add ClickAction to the API reference
And clean up the reference index.
Emmanuele Bassi [Mon, 24 May 2010 10:30:17 +0000 (11:30 +0100)]
actor-meta: Disconnect on actor destroy
When destroying an Actor the various ActorMeta instance should already
be disposed - unless something is holding a reference to them, in which
case we should use the ::destroy signal to unset the ActorMeta:actor
back pointer.
Emmanuele Bassi [Mon, 24 May 2010 09:41:19 +0000 (10:41 +0100)]
action: Add ClickAction
ClickAction adds "clickable" semantics to an actor. It provides all
the business logic to emit a high-level "clicked" signal from the
various low-level signals inside ClutterActor.
Emmanuele Bassi [Tue, 25 May 2010 10:01:46 +0000 (11:01 +0100)]
drag: Add a default drag-motion behaviour
The DragAction should, by default, drag the actor to which it has been
applied, instead of delegating what to do to the developer. If custom
code need to override it, g_signal_stop_emission_by_name() can be called
to stop the default handler to ever running.
Emmanuele Bassi [Mon, 24 May 2010 15:57:35 +0000 (16:57 +0100)]
Post-release version bump to 1.3.3
Emmanuele Bassi [Mon, 24 May 2010 15:50:36 +0000 (16:50 +0100)]
Release 1.3.2 (snapshot)
Emmanuele Bassi [Mon, 24 May 2010 15:46:38 +0000 (16:46 +0100)]
docs: Add Actor.get_accessible() to the API reference
Emmanuele Bassi [Mon, 24 May 2010 15:12:47 +0000 (16:12 +0100)]
docs: Update NEWS
Øyvind Kolås [Mon, 24 May 2010 14:39:01 +0000 (15:39 +0100)]
state: replaced test with a more complex one
Øyvind Kolås [Mon, 24 May 2010 15:10:00 +0000 (16:10 +0100)]
state: fix clutter_state_change (state, "state-name", FALSE)
Properties were not being updated correctly.
Neil Roberts [Mon, 24 May 2010 11:40:11 +0000 (12:40 +0100)]
cogl: Use a CoglBitmask to store the list of used texcoord arrays
Instead of directly using a guint32 to store a bitmask for each used
texcoord array, it now stores them in a CoglBitmask. This removes the
limitation of 32 layers (although there are still other places in Cogl
that imply this restriction). To disable texcoord arrays code should
call _cogl_disable_other_texcoord_arrays which takes a bitmask of
texcoord arrays that should not be disabled. There are two extra
bitmasks stored in the CoglContext which are used temporarily for this
function to avoid allocating a new bitmask each time.
http://bugzilla.openedhand.com/show_bug.cgi?id=2132
Neil Roberts [Thu, 20 May 2010 16:31:42 +0000 (17:31 +0100)]
cogl: Add an internal CoglBitmask type
This implements a growable array of bits called CoglBitmask. The
CoglBitmask is intended to be cheap if less than 32 bits are used. If
more bits are required it will allocate a GArray. The type is meant to
be allocated on the stack but because it can require additional
resources it also has a destroy function.
http://bugzilla.openedhand.com/show_bug.cgi?id=2132
Neil Roberts [Wed, 19 May 2010 23:40:24 +0000 (00:40 +0100)]
cogl-material: Fix the count of the number of layers
Previously the counter for the number of layers was only updated
whenever the texture handle for a layer changes. However there are
many other ways for a new layer to be created for example by setting a
layer combine constant. Also by default the texture on a layer is
COGL_INVALID_HANDLE so if the application tries to create an explicit
layer with no texture by calling cogl_material_set_layer with
COGL_INVALID_HANDLE then it also wouldn't update the count.
This patch fixes that by incrementing the count in
cogl_material_get_layer instead. This function is called by all
functions that may end up creating a layer so it seems like the most
appropriate place.
http://bugzilla.openedhand.com/show_bug.cgi?id=2132
Neil Roberts [Wed, 19 May 2010 23:16:49 +0000 (00:16 +0100)]
cogl-vertex-buffer: Don't disable layers with no texture coords
It should be quite acceptable to use a texture without defining any
texture coords. For example a shader may be in use that is doing
texture lookups without referencing the texture coordinates. Also it
should be possible to replace the vertex colors using a texture layer
without a texture but with a constant layer color.
enable_state_for_drawing_buffer no longer sets any disabled layers in
the overrides. Instead of counting the number of units with texture
coordinates it now keeps them in a mask. This means there can now be
gaps in the list of enabled texture coordinate arrays. To cope with
this, the Cogl context now also stores a mask to track the enabled
arrays. Instead of code manually iterating each enabled array to
disable them, there is now an internal function called
_cogl_disable_texcoord_arrays which disables a given mask.
I think this could also fix potential bugs when a vertex buffer has
gaps in the texture coordinate attributes that it provides. For
example if the vertex buffer only had texture coordinates for layer 2
then the disabling code would not disable the coordinates for layers 0
and 1 even though they are not used. This could cause a crash if the
previous data for those arrays is no longer valid.
http://bugzilla.openedhand.com/show_bug.cgi?id=2132
Neil Roberts [Wed, 19 May 2010 22:42:40 +0000 (23:42 +0100)]
test-cogl-materials: Test invalid layers with a constant color
This adds a test using a layer with no texture but that replaces the
fragment color with the layer constant. This currently causes the test
to fail.
http://bugzilla.openedhand.com/show_bug.cgi?id=2132
Neil Roberts [Wed, 19 May 2010 22:36:18 +0000 (23:36 +0100)]
test-cogl-materials: Run the 'all layers' test with different prims
The drawing code from test_invalid_texture_layers which draws a
rectangle, a polygon and a vertex buffer has been split out to
separate function. test_using_all_layers now also uses this so that it
will also test the other two primitives. This causes the test to fail
when all of the layers are drawn using a vertex buffer.
http://bugzilla.openedhand.com/show_bug.cgi?id=2132
Alejandro Piñeiro [Tue, 13 Apr 2010 11:23:15 +0000 (13:23 +0200)]
Implement AtkImplementor on ClutterActor
Implements AtkImplementor interface on ClutterActor, and his method
atk_implementor_ref_accessible.
More information:
http://library.gnome.org/devel/atk/stable/AtkObject.html#AtkImplementor
Alejandro Piñeiro [Mon, 12 Apr 2010 18:10:24 +0000 (20:10 +0200)]
Implemented clutter_actor_get_accessible
Added the implementation for clutter_actor_get_accessible, virtual
ClutterActor function, used to obtain the accessible object of
any ClutterActor.
As it is defined virtual, it would be possible to redefine it, so
any custom clutter actor could implement their accessibility object,
withouth relying totally on a accessibility implementation module.
See gtkiconview as example.
http://bugzilla.openedhand.com/show_bug.cgi?id=2070
Alejandro Piñeiro [Mon, 12 Apr 2010 17:34:06 +0000 (19:34 +0200)]
Added Atk dependency
Added Atk dependency, in order to implement a built-in
accessibility support on Clutter.
Emmanuele Bassi [Mon, 24 May 2010 14:34:43 +0000 (15:34 +0100)]
build: Remove shave files from EXTRA_DIST
We don't use Shave any more, and require automake 1.11 instead.
Emmanuele Bassi [Mon, 24 May 2010 14:14:09 +0000 (15:14 +0100)]
state: Use Interval.compute() instead of compute_value()
Use the newly-added compute() variant to avoid creating a GValue only
for getting it copied by g_object_set_property().
Emmanuele Bassi [Mon, 24 May 2010 14:06:14 +0000 (15:06 +0100)]
interval: Add a pointer variant to compute_value()
ClutterInterval.compute_value() computes the new value given a progress
and copies it to a given GValue. Since most of the time we want to pass
that very same value to another function that copies it again, we should
have a compute_value() variant that stores that computed value inside
ClutterInterval and returns a pointer to it. This way we initialize the
result GValue just once and we never copy it, as long as the Interval
instance is valid.
Emmanuele Bassi [Mon, 24 May 2010 13:20:23 +0000 (14:20 +0100)]
docs: Align parameter names between header and source code
Emmanuele Bassi [Mon, 24 May 2010 11:00:43 +0000 (12:00 +0100)]
docs: Add ClutterState to the API reference
Emmanuele Bassi [Mon, 24 May 2010 09:42:03 +0000 (10:42 +0100)]
Merge branch 'wip/state-machine'
* wip/state-machine:
Do not use wildcards in test-state
script: Implement State deserialization
state: added a "target-state" property
state: documented data structures
Add State interactive tests to the ignore file
state: Documentation and introspection annotation fixes
state: Minor coding style fixes
state: Clean up the header's documentation
state: Constify StateKey accessors
Do not include clutter.h from a Clutter header file
state-machine: made clutter_state_change take a boolean animate argument
state-machine: use clutter_timeline_get_progress
state-machine: add completed signal
state machine: added state machine
Conflicts:
.gitignore
Emmanuele Bassi [Fri, 21 May 2010 13:38:37 +0000 (14:38 +0100)]
Merge branch 'wip/framebuffer-bits'
* wip/framebuffer-bits:
Implement accessors for the color bits in a framebuffer
Emmanuele Bassi [Fri, 21 May 2010 13:22:56 +0000 (14:22 +0100)]
Do not use wildcards in test-state
Use named states, like in a real case.
Emmanuele Bassi [Fri, 21 May 2010 13:13:14 +0000 (14:13 +0100)]
script: Implement State deserialization
It should be possible to describe ClutterState transitions using
ClutterScript in a similar way as ClutterAnimator.
Emmanuele Bassi [Fri, 21 May 2010 09:55:09 +0000 (10:55 +0100)]
Merge branch 'wip/constraints'
* wip/constraints: (24 commits)
Add the Cogl API reference to the fixxref extra directories
Document the internal MetaGroup class
Remove the construct-only flag from ActorMeta:name
doc: Remove gtk-doc annotations from the json-glib copy
doc: Fix parameter documentation
Add named modifiers for Action and Constraint
Remove a redundant animation
Set the stage resizable in test-constraints
Use a 9 grid for the constraints test
Miscellaneous documentation fixes
docs: Document animating action and constraint properties
docs: Document BindConstraint and AlignConstraint
constraint: Rename BindConstraint:bind-axis
constraints: Add AlignConstraint
tests: Add a constraints interactive test
constraint: Add BindConstraint
actor: Implement Animatable
animation: Use the new Animatable API for custom properties
animatable: Add custom properties to Animatable
constraint: Add ClutterConstraint base class
...
Conflicts:
configure.ac
Øyvind Kolås [Fri, 21 May 2010 09:37:42 +0000 (10:37 +0100)]
state: added a "target-state" property
When set the ClutterState transitions to the new state.
Øyvind Kolås [Thu, 20 May 2010 22:05:16 +0000 (23:05 +0100)]
state: documented data structures
Emmanuele Bassi [Thu, 20 May 2010 17:58:30 +0000 (18:58 +0100)]
Add State interactive tests to the ignore file
Emmanuele Bassi [Thu, 20 May 2010 17:57:27 +0000 (18:57 +0100)]
state: Documentation and introspection annotation fixes
Emmanuele Bassi [Thu, 20 May 2010 17:34:34 +0000 (18:34 +0100)]
state: Minor coding style fixes
Emmanuele Bassi [Thu, 20 May 2010 16:46:52 +0000 (17:46 +0100)]
state: Clean up the header's documentation
Emmanuele Bassi [Thu, 20 May 2010 16:34:36 +0000 (17:34 +0100)]
state: Constify StateKey accessors
Since the accessors do not modify the StateKey we should constify the
argument.
Emmanuele Bassi [Thu, 20 May 2010 16:34:02 +0000 (17:34 +0100)]
Do not include clutter.h from a Clutter header file
Clutter header files should just include the needed headers.
Robert Bragg [Thu, 20 May 2010 13:54:44 +0000 (14:54 +0100)]
math: Adds an experimental cogl_vector3_* API
This adds a math utility API for handling 3 component, single precision
float vectors with the following; mostly self explanatory functions:
cogl_vector3_init
cogl_vector3_init_zero
cogl_vector3_equal
cogl_vector3_equal_with_epsilon
cogl_vector3_copy
cogl_vector3_free
cogl_vector3_invert
cogl_vector3_add
cogl_vector3_subtract
cogl_vector3_multiply_scalar
cogl_vector3_divide_scalar
cogl_vector3_normalize
cogl_vector3_magnitude
cogl_vector3_cross_product
cogl_vector3_dot_product
cogl_vector3_distance
Since the API is experimental you will need to define
COGL_ENABLE_EXPERIMENTAL_API before including cogl.h if you want to use
the API.
Øyvind Kolås [Thu, 20 May 2010 15:13:46 +0000 (16:13 +0100)]
state-machine: made clutter_state_change take a boolean animate argument
Most of the time this will be TRUE, pass FALSE to change to the target
state immediately.
Øyvind Kolås [Thu, 20 May 2010 14:41:29 +0000 (15:41 +0100)]
state-machine: use clutter_timeline_get_progress
Øyvind Kolås [Wed, 12 May 2010 16:03:25 +0000 (17:03 +0100)]
state-machine: add completed signal
Added a completed signal to the animator
Øyvind Kolås [Tue, 11 May 2010 14:04:34 +0000 (15:04 +0100)]
state machine: added state machine
Emmanuele Bassi [Thu, 20 May 2010 15:19:25 +0000 (16:19 +0100)]
cookbook: Add a recipe for CairoTexture
The Clutter cookbook has a chapter for textures. It would be useful to
provide a recipe on simple uses of ClutterCairoTexture as part of that.
Some suggested content is attached.
Neil Roberts [Thu, 20 May 2010 11:37:56 +0000 (12:37 +0100)]
cogl-texture-2d: Optimise _cogl_texture_2d_is_pot
This takes the simple algorithm from here:
http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2
This avoids a loop and is much faster.
Emmanuele Bassi [Thu, 20 May 2010 11:03:47 +0000 (12:03 +0100)]
Add the Cogl API reference to the fixxref extra directories
Emmanuele Bassi [Thu, 20 May 2010 11:03:10 +0000 (12:03 +0100)]
Document the internal MetaGroup class
Just because it's an internal class, ClutterMetaGroup should not be left
undocumented.
Emmanuele Bassi [Thu, 20 May 2010 11:02:13 +0000 (12:02 +0100)]
Remove the construct-only flag from ActorMeta:name
The ClutterActorMeta:name property should be read-write, and be
writeable at any time.
Emmanuele Bassi [Thu, 20 May 2010 10:45:54 +0000 (11:45 +0100)]
doc: Remove gtk-doc annotations from the json-glib copy
There's no need to use gtk-doc annotations: the API is internal to
Clutter.
Emmanuele Bassi [Thu, 20 May 2010 10:45:25 +0000 (11:45 +0100)]
doc: Fix parameter documentation
Emmanuele Bassi [Thu, 20 May 2010 10:19:51 +0000 (11:19 +0100)]
Add named modifiers for Action and Constraint
The ClutterActor API should have modifier methods for adding, removing
and retrieving Actions and Constraints using the ClutterActorMeta:name
property - mostly, for convenience.
Emmanuele Bassi [Wed, 19 May 2010 17:23:29 +0000 (18:23 +0100)]
Remove a redundant animation
Emmanuele Bassi [Wed, 19 May 2010 17:20:27 +0000 (18:20 +0100)]
Set the stage resizable in test-constraints
To demonstrate that constraints can be used to reposition actors in a
resizable stage, set the :user-resizable property to TRUE, and spend the
next 15 minutes playing with the stage size.
Emmanuele Bassi [Wed, 19 May 2010 17:17:49 +0000 (18:17 +0100)]
Use a 9 grid for the constraints test
Let's complicate the interactive constraints test a little bit by adding
more actors and animating two constraints at a time.
Emmanuele Bassi [Wed, 19 May 2010 15:10:05 +0000 (16:10 +0100)]
Miscellaneous documentation fixes
Robert Bragg [Tue, 13 Oct 2009 14:27:06 +0000 (15:27 +0100)]
Stubs out _cogl_xlib_handle_event
This stubs out an xlib event handling mechanism for Cogl. The intention
is for Clutter to use this to forward all x11 events to Cogl. As we move
winsys functionality down into Cogl, Cogl will become responsible for
handling a number of X events: ConfigureNotify events for onscreen
framebuffers, swap events and Damage events for cogl_x11_texture_pixmap.
Emmanuele Bassi [Wed, 19 May 2010 14:09:47 +0000 (15:09 +0100)]
docs: Document animating action and constraint properties
Add a refsect for the syntax to be used when animating action and
constraint properties with ClutterAnimation.
Robert Bragg [Thu, 8 Oct 2009 11:08:21 +0000 (12:08 +0100)]
build: expose automake conditionals for cogl winsys
Expose the ./configured window system/backend options to the Cogl
automake files via some new SUPPORT_XYZ conditionals.
Robert Bragg [Tue, 13 Oct 2009 14:27:06 +0000 (15:27 +0100)]
configure.ac: Adds some COGL_HAS_XYZ_SUPPORT defines
This exposes the ./configured window system/backend options to Cogl via
a set of new COGL_HAS_XYZ_SUPPORT defines:
COGL_HAS_{X11,XLIB,GLX,EGL,EGL_PLATFORM_XYZ,OSX,WIN32,WGL}_SUPPORT
Emmanuele Bassi [Wed, 19 May 2010 13:46:02 +0000 (14:46 +0100)]
docs: Document BindConstraint and AlignConstraint
Add the missing gtk-doc annotations for BindConstraint and
AlignConstraint, plus the licensing blurb.
Emmanuele Bassi [Wed, 19 May 2010 13:34:18 +0000 (14:34 +0100)]
constraint: Rename BindConstraint:bind-axis
We're not binding an axis: we're really binding a coordinate of an actor
to the coordinate of another one.
Emmanuele Bassi [Wed, 19 May 2010 12:02:43 +0000 (13:02 +0100)]
constraints: Add AlignConstraint
AlignConstraint is a simple constraint that keeps an actor's position
aligned to the width or height of another actor, multiplied by an
alignment factor.
Emmanuele Bassi [Wed, 19 May 2010 11:27:09 +0000 (12:27 +0100)]
tests: Add a constraints interactive test
Show how to use constraints and how to animate them.
Emmanuele Bassi [Wed, 19 May 2010 11:25:28 +0000 (12:25 +0100)]
constraint: Add BindConstraint
The BindConstraint object is a constraint that binds the current
position of an actor on a given axis to the actor that has the
constraint applied.
Emmanuele Bassi [Wed, 19 May 2010 11:23:57 +0000 (12:23 +0100)]
actor: Implement Animatable
By implementing the newly added support for custom animatable
properties, we can allow addressing action and constraint properties
from ClutterAnimation and clutter_actor_animate().
Emmanuele Bassi [Wed, 19 May 2010 11:22:48 +0000 (12:22 +0100)]
animation: Use the new Animatable API for custom properties
The Animation class should use the Animatable API for custom properties
to override finding a property definition, getting the initial state and
setting the final state of an object.
Emmanuele Bassi [Wed, 19 May 2010 11:21:54 +0000 (12:21 +0100)]
animatable: Add custom properties to Animatable
Like ClutterScriptable, it would be good to have the Animatable
interface allow defining custom properties that can be animated.
Emmanuele Bassi [Fri, 14 May 2010 11:13:49 +0000 (12:13 +0100)]
constraint: Add ClutterConstraint base class
The Constraint base, abstract class should be used to implement Actor
modifiers that affect the way an actor is sized or positioned inside a
fixed layout manager.
Brian Tarricone [Fri, 26 Mar 2010 03:55:31 +0000 (20:55 -0700)]
eglx: implement cogl_get_proc_address()
http://bugzilla.openedhand.com/show_bug.cgi?id=2124
Neil Roberts [Tue, 18 May 2010 16:25:25 +0000 (17:25 +0100)]
eglx: Rename EGLNative{Window,Display}Type back to Native{Window,Display}Type
Commit e2a990d renamed these types to new names from EGL 1.3. However
it still works to use the old names under EGL 1.3 so let's just use
those to keep compatibility.
Neil Roberts [Tue, 18 May 2010 16:08:12 +0000 (17:08 +0100)]
clutter-backend-egl: Chain up in dispose before destroying the context
clutter_backend_egl_dispose now chains up before disposing its own
resources so that ClutterBackendX11 will destroy all of the stages
before we destroy the egl context. Otherwise the actors may try to
make GL calls during destruction which causes a crash.
Neil Roberts [Tue, 18 May 2010 15:51:46 +0000 (16:51 +0100)]
clutter-stage-egl.c: Don't call eglWait*()
According to the docs, eglSwapBuffers performs an implicit glFlush
before swapping so there should be no need to wait.
Neil Roberts [Tue, 18 May 2010 14:52:05 +0000 (15:52 +0100)]
test-cogl-materials: Fix compilation under GLES 2
GLES 2 doesn't have GL_MAX_TEXTURE_UNITS. Instead the cogl backend
uses GL_MAX_TEXTURE_IMAGE_UNITS with a maximum limit of 16. The same
restriction is now used in the test.
Brian Tarricone [Fri, 26 Mar 2010 02:44:37 +0000 (19:44 -0700)]
fix case when EGL driver doesn't support EGL_NATIVE_VISUAL_ID
Some EGL drivers, such as the PowerVR simulator (and some proprietary drivers)
return zero when the EGLConfig is queried for the EGL_NATIVE_VISUAL_ID
attribute via eglGetConfigAttrib().
This patch detects and attempts to work around that situation by picking a
visual with the same color depth.
http://bugzilla.openedhand.com/show_bug.cgi?id=2123
Neil Roberts [Wed, 5 May 2010 16:30:00 +0000 (17:30 +0100)]
clutter-backend-egl: Create a dummy X window and EGL surface
After the EGL context is created it now also creates an invisible 1x1
window and a corresponding surface so that the context can be
immediately made current. This is similar to changes for the GLX
backend introduced in
d2c091e62.
http://bugzilla.openedhand.com/show_bug.cgi?id=2056
Brian Tarricone [Fri, 26 Mar 2010 02:37:26 +0000 (19:37 -0700)]
update backend to use lazy context/stage creation
http://bugzilla.openedhand.com/show_bug.cgi?id=2056
Neil Roberts [Tue, 18 May 2010 12:55:18 +0000 (13:55 +0100)]
configure: Check the result of AM_PATH_GLIB_2_0
The AM_PATH_GLIB_2_0 doesn't automatically cause the configure script
to fail if the test fails. This wouldn't usually cause any problems
because we later check for the right glib version using
PKG_CHECK_MODULES directly. However AM_PATH_GLIB_2_0 is more thorough
when checking because it also tries to run a program against the
library to read the version. If the macro fails but the pkg-config
check passes then nothing will define GLIB_GENMARSHAL and the build
step will fail in a confusing way.
This adds a check for the result and gives an AC_MSG_ERROR if it
fails. The glib dependencies have been moved out of CLUTTER_DEPS to
AM_PATH_GLIB_2_0.
http://bugzilla.openedhand.com/show_bug.cgi?id=2127
Øyvind Kolås [Mon, 17 May 2010 17:05:19 +0000 (18:05 +0100)]
animator: fix issue of dropped frames towards end of animations
Emmanuele Bassi [Mon, 17 May 2010 13:34:31 +0000 (14:34 +0100)]
action: Warn if set_name() is called multiple times
Emmanuele Bassi [Wed, 12 May 2010 11:00:33 +0000 (12:00 +0100)]
action: Add DragAction, an action implementing drag capabilities
DragAction is an Action sub-class that provides dragging capabilities to
any actor. DragAction has:
• drag-begin, drag-motion and drag-end signals, relaying the event
information like coordinates, button and modifiers to user code;
• drag-threshold property, for delaying the drag start by a given
amount of pixels;
• drag-handle property, to allow using other actors as the drag
handle.
• drag-axis property, to allow constraining the dragging to a specific
axis.
An interactive test demonstrating the various features is also provided.
Emmanuele Bassi [Tue, 11 May 2010 16:09:13 +0000 (17:09 +0100)]
action: Add ClutterAction
ClutterAction is an abstract class that should be used as the ancestor
for objects that change how an actor behaves when dealing with events
coming from user input.
Emmanuele Bassi [Fri, 14 May 2010 15:42:50 +0000 (16:42 +0100)]
actor: Add ActorMeta, a base class for actor modifiers
ClutterActorMeta is a base, abstract class that can be used to derive
classes that are attached to a ClutterActor instance in order to modify
the way an actor is painted, sized/positioned or responds to events.
A typed container for ActorMeta instances is also provided to the
sub-classes can be attached to an Actor.
Neil Roberts [Wed, 12 May 2010 17:57:52 +0000 (18:57 +0100)]
cogl-material: Set the blend equation even if blend funcs are the same
Previously it would only try to set the blend equation if the RGB and
alpha blending functions were different. However it's completely valid
to use a non-standard blending function when the functions are the
same. This patch moves the blending equation to outside the if
statement.
Neil Roberts [Wed, 12 May 2010 14:19:09 +0000 (15:19 +0100)]
cogl-material: Set blend constant even if alpha and rgb factors are the same
Previously it would only set the blend constant if glBlendFuncSeparate
was used but it is perfectly acceptable to use the blend constant when
the same factor is used for each. It now sets the blend constant
whenever one of the factors would use the constant.
Neil Roberts [Wed, 12 May 2010 16:56:25 +0000 (17:56 +0100)]
cogl-blend-string: Don't split combined blend statements into two
When a single statement is used to specify the factors for both the
RGB and alpha parts it previously split up the statement into
two. This works but it ends up unnecessarily using glBlendFuncSeparate
when glBlendFunc would suffice.
For example, the blend statement
RGBA = ADD(SRC_COLOR*(SRC_COLOR), DST_COLOR*(1-SRC_COLOR))
would get split into the two statements
RGBA = ADD(SRC_COLOR*(SRC_COLOR[RGB]), DST_COLOR*(1-SRC_COLOR[RGB]))
A = ADD(SRC_COLOR*(SRC_COLOR[A]), DST_COLOR*(1-SRC_COLOR[A]))
That translates to:
glBlendFuncSeparate (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR,
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
This patch makes it so that arg_to_gl_blend_factor can handle the
combined RGBA mask instead. That way the single statement gets
translated to the equivalent call:
glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
Chris Lord [Thu, 13 May 2010 14:51:42 +0000 (15:51 +0100)]
text: Fix typos that were causing false-positive cache hits
If a cached layout didn't actually match the layout we're looking for,
it would be returned anyway. Remove this return so that it can correctly
continue looking and get a cache miss if appropriate.
http://bugzilla.openedhand.com/show_bug.cgi?id=2109
Neil Roberts [Thu, 22 Apr 2010 10:58:52 +0000 (11:58 +0100)]
cogl-path: Use true copy-on-write semantics
Previously a path copy was implemented such that only the array of
path nodes was shared with the source and the rest of the data is
copied. This was so that the copy could avoid a deep copy if the
source path is appended to because the copy keeps track of its own
length. This optimisation is probably not worthwhile because it makes
the copies less cheap. Instead the CoglPath struct now just contains a
single pointer to a new CoglPathData struct which is separately
ref-counted. When the path is modified it will be copied if the ref
count on the data is not 1.
Neil Roberts [Mon, 10 May 2010 16:43:17 +0000 (17:43 +0100)]
Add a conformance test for ClutterCairoTexture
This adds a simple test for ClutterCairoTexture that draws two
rectangles to the cairo surface in an idle callback and then verifies
that they appeared at the right colours in the paint callback. If that
succeeds then the second time the idle callback is invoked it will
replace one of the rectangles with a sub region update and the
following paint callback will again verify the rectangles.
Owen W. Taylor [Sat, 8 May 2010 17:38:37 +0000 (13:38 -0400)]
text: correct caching logic
This patch combines a number of fixes and improvements to the
layout caching logic in ClutterText.
* Fix: The width must always be set on the PangoLayout when painting.
This is necessary because the layout aligns in the width, and
even when we think we are left-aligned, the auto-dir feature
of PangoLayout may result in right-alignment.
* Fix: We should only ever try to reuse a cached layout based
on its logical width if layout.width was -1 when computing
that logical width. If the layout was already ellipsized,
then comparing the logical width to the new width we are
trying to wrap to doesn't make sense. (If "abc" ellipsizes
to a 15-pixel wide "..." for a width of 1 pixel, that doesn't
mean that we should use "..." for a width of 15 pixels. Maybe
"abc" itself is 15 pixels wide.)
* Improvement: rather than looking up cached layouts based on the
input allocation_width/allocation_height, look them up based
on the actual width/height/ellipsize that we pass to create
a layout. This is simpler and improves the chance we'll get
a cache hit when appropriate even if there are small floating
point differences.
Note because of the first fix this is less aggressive than dd40732
in caching layouts; get_preferred_width() and painting can't share
a layout since get_preferred_width() needs to pass a width of -1
to Pango and painting needs to pass the real width.
The patch has been updated from the clutter-1.2 branch to current
master; using the profiling instrumentation it is possible to verify
with test-text-field that the hit/miss counters go from:
Name Total Per Frame
---- ----- ---------
Text layout cache hit counter 13 6
Text layout cache miss counter 11 5
before applying the patch, to:
Name Total Per Frame
---- ----- ---------
Text layout cache miss counter 4 2
Text layout cache hit counter 3 1
after applying the patch.
https://bugzilla.gnome.org/show_bug.cgi?id=618104
http://bugzilla.openedhand.com/show_bug.cgi?id=2109
Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Neil Roberts [Mon, 10 May 2010 14:33:05 +0000 (15:33 +0100)]
Revert "clutter-cairo-texture: Use the new cogl_pixel_buffer API"
This reverts commit
716ec82db8bec57e35d51e8dee5468435fc9e59e.
The Cogl pixel buffer API currently has problems if an atlas texture
is created or the format needs to be converted. The atlas problem
doesn't currently show because the atlas rejects BGR textures anyway
but we may want to change this soon. The problem with format
conversion would happen under GLES because that does not support BGR
textures at all so Cogl has to do the conversion. However it doesn't
currently show either because GLES has no support for buffer objects
anyway.
It's also questionable whether the patch would give any performance
benefit because Cairo needs read/write access which implies the buffer
can't be put in write-optimised memory.
Conflicts:
clutter/clutter-cairo-texture.c
http://bugzilla.openedhand.com/show_bug.cgi?id=1982
Owen W. Taylor [Sat, 8 May 2010 20:58:14 +0000 (16:58 -0400)]
cogl-framebuffer: Flush journal when creating fbo
Since framebuffer state is not flushed prior to replaying the journal,
the trick of marking the framebuffer dirty prior to calling
glBindFramebuffer() doesn't work... the outstanding journal entries
will get replayed to the newly created framebuffer.
Fix this by flushing the journal as well.
http://bugzilla.openedhand.com/show_bug.cgi?id=2110
Signed-off-by: Robert Bragg <robert@linux.intel.com>
Emmanuele Bassi [Mon, 10 May 2010 13:28:21 +0000 (14:28 +0100)]
Add tests/conform/wrappers to the ignore file
Emmanuele Bassi [Sat, 8 May 2010 23:13:16 +0000 (00:13 +0100)]
Fix annotation typos
Neil Roberts [Fri, 7 May 2010 17:03:39 +0000 (18:03 +0100)]
clutter-cairo-texture: Fix destroying the old texture
In clutter_cairo_texture_create_region it tries to destroy the old
texture before mapping the PBO by setting the texture on the first
layer of the material to COGL_INVALID_HANDLE. However it was using the
material API incorrectly so it ended up showing a warning and doing
nothing.