[Automatic fixed-to-float.sh change] Applies all scripted changes
This is the result of running a number of sed and perl scripts over the code to do 90% of the work in converting from 16.16 fixed to single precision floating point. Note: A pristine cogl-fixed.c has been maintained as a standalone utility API so that applications may still take advantage of fixed point if they desire for certain optimisations where lower precision may be acceptable. Note: no API changes were made in Clutter, only in Cogl. Overview of changes: - Within clutter/* all usage of the COGL_FIXED_ macros have been changed to use the CLUTTER_FIXED_ macros. - Within cogl/* all usage of the COGL_FIXED_ macros have been completly stripped and expanded into code that works with single precision floats instead. - Uses of cogl_fixed_* have been replaced with single precision math.h alternatives. - Uses of COGL_ANGLE_* and cogl_angle_* have been replaced so we use a float for angles and math.h replacements.
This commit is contained in:
parent
abc2a359ea
commit
e82f656590
@ -774,12 +774,12 @@ clutter_actor_real_allocate (ClutterActor *self,
|
|||||||
g_object_thaw_notify (G_OBJECT (self));
|
g_object_thaw_notify (G_OBJECT (self));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* like ClutterVertex, but using CoglFixed and with a w component */
|
/* like ClutterVertex, but using float and with a w component */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
CoglFixed x;
|
float x;
|
||||||
CoglFixed y;
|
float y;
|
||||||
CoglFixed z;
|
float z;
|
||||||
CoglFixed w;
|
float w;
|
||||||
} fixed_vertex_t;
|
} fixed_vertex_t;
|
||||||
|
|
||||||
/* copies a fixed vertex into a ClutterVertex */
|
/* copies a fixed vertex into a ClutterVertex */
|
||||||
@ -816,25 +816,25 @@ mtx_transform (const ClutterFixed m[],
|
|||||||
/* We care lot about precision here, so have to use MUL instead
|
/* We care lot about precision here, so have to use MUL instead
|
||||||
* of FAST_MUL
|
* of FAST_MUL
|
||||||
*/
|
*/
|
||||||
vertex->x = COGL_FIXED_MUL (M (m, 0, 0), _x)
|
vertex->x = CLUTTER_FIXED_MUL (M (m, 0, 0), _x)
|
||||||
+ COGL_FIXED_MUL (M (m, 0, 1), _y)
|
+ CLUTTER_FIXED_MUL (M (m, 0, 1), _y)
|
||||||
+ COGL_FIXED_MUL (M (m, 0, 2), _z)
|
+ CLUTTER_FIXED_MUL (M (m, 0, 2), _z)
|
||||||
+ COGL_FIXED_MUL (M (m, 0, 3), _w);
|
+ CLUTTER_FIXED_MUL (M (m, 0, 3), _w);
|
||||||
|
|
||||||
vertex->y = COGL_FIXED_MUL (M (m, 1, 0), _x)
|
vertex->y = CLUTTER_FIXED_MUL (M (m, 1, 0), _x)
|
||||||
+ COGL_FIXED_MUL (M (m, 1, 1), _y)
|
+ CLUTTER_FIXED_MUL (M (m, 1, 1), _y)
|
||||||
+ COGL_FIXED_MUL (M (m, 1, 2), _z)
|
+ CLUTTER_FIXED_MUL (M (m, 1, 2), _z)
|
||||||
+ COGL_FIXED_MUL (M (m, 1, 3), _w);
|
+ CLUTTER_FIXED_MUL (M (m, 1, 3), _w);
|
||||||
|
|
||||||
vertex->z = COGL_FIXED_MUL (M (m, 2, 0), _x)
|
vertex->z = CLUTTER_FIXED_MUL (M (m, 2, 0), _x)
|
||||||
+ COGL_FIXED_MUL (M (m, 2, 1), _y)
|
+ CLUTTER_FIXED_MUL (M (m, 2, 1), _y)
|
||||||
+ COGL_FIXED_MUL (M (m, 2, 2), _z)
|
+ CLUTTER_FIXED_MUL (M (m, 2, 2), _z)
|
||||||
+ COGL_FIXED_MUL (M (m, 2, 3), _w);
|
+ CLUTTER_FIXED_MUL (M (m, 2, 3), _w);
|
||||||
|
|
||||||
vertex->w = COGL_FIXED_MUL (M (m, 3, 0), _x)
|
vertex->w = CLUTTER_FIXED_MUL (M (m, 3, 0), _x)
|
||||||
+ COGL_FIXED_MUL (M (m, 3, 1), _y)
|
+ CLUTTER_FIXED_MUL (M (m, 3, 1), _y)
|
||||||
+ COGL_FIXED_MUL (M (m, 3, 2), _z)
|
+ CLUTTER_FIXED_MUL (M (m, 3, 2), _z)
|
||||||
+ COGL_FIXED_MUL (M (m, 3, 3), _w);
|
+ CLUTTER_FIXED_MUL (M (m, 3, 3), _w);
|
||||||
|
|
||||||
/* Specially for Matthew: was going to put a comment here, but could not
|
/* Specially for Matthew: was going to put a comment here, but could not
|
||||||
* think of anything at all to say ;)
|
* think of anything at all to say ;)
|
||||||
@ -846,8 +846,8 @@ mtx_transform (const ClutterFixed m[],
|
|||||||
/* Help macros to scale from OpenGL <-1,1> coordinates system to our
|
/* Help macros to scale from OpenGL <-1,1> coordinates system to our
|
||||||
* X-window based <0,window-size> coordinates
|
* X-window based <0,window-size> coordinates
|
||||||
*/
|
*/
|
||||||
#define MTX_GL_SCALE_X(x,w,v1,v2) (COGL_FIXED_MUL (((COGL_FIXED_DIV ((x), (w)) + COGL_FIXED_1) >> 1), (v1)) + (v2))
|
#define MTX_GL_SCALE_X(x,w,v1,v2) (CLUTTER_FIXED_MUL (((CLUTTER_FIXED_DIV ((x), (w)) + 1.0) >> 1), (v1)) + (v2))
|
||||||
#define MTX_GL_SCALE_Y(y,w,v1,v2) ((v1) - COGL_FIXED_MUL (((COGL_FIXED_DIV ((y), (w)) + COGL_FIXED_1) >> 1), (v1)) + (v2))
|
#define MTX_GL_SCALE_Y(y,w,v1,v2) ((v1) - CLUTTER_FIXED_MUL (((CLUTTER_FIXED_DIV ((y), (w)) + 1.0) >> 1), (v1)) + (v2))
|
||||||
#define MTX_GL_SCALE_Z(z,w,v1,v2) (MTX_GL_SCALE_X ((z), (w), (v1), (v2)))
|
#define MTX_GL_SCALE_Z(z,w,v1,v2) (MTX_GL_SCALE_X ((z), (w), (v1), (v2)))
|
||||||
|
|
||||||
/* transforms a 4-tuple of coordinates using @matrix and
|
/* transforms a 4-tuple of coordinates using @matrix and
|
||||||
@ -1024,7 +1024,7 @@ clutter_actor_apply_relative_transform_to_point (ClutterActor *self,
|
|||||||
x = CLUTTER_UNITS_TO_FIXED (vertex->x);
|
x = CLUTTER_UNITS_TO_FIXED (vertex->x);
|
||||||
y = CLUTTER_UNITS_TO_FIXED (vertex->y);
|
y = CLUTTER_UNITS_TO_FIXED (vertex->y);
|
||||||
z = CLUTTER_UNITS_TO_FIXED (vertex->z);
|
z = CLUTTER_UNITS_TO_FIXED (vertex->z);
|
||||||
w = COGL_FIXED_1;
|
w = 1.0;
|
||||||
|
|
||||||
/* First we tranform the point using the OpenGL modelview matrix */
|
/* First we tranform the point using the OpenGL modelview matrix */
|
||||||
clutter_actor_transform_point_relative (self, ancestor, &x, &y, &z, &w);
|
clutter_actor_transform_point_relative (self, ancestor, &x, &y, &z, &w);
|
||||||
@ -1035,9 +1035,9 @@ clutter_actor_apply_relative_transform_to_point (ClutterActor *self,
|
|||||||
* The w[3] parameter should always be 1.0 here, so we ignore it; otherwise
|
* The w[3] parameter should always be 1.0 here, so we ignore it; otherwise
|
||||||
* we would have to divide the original verts with it.
|
* we would have to divide the original verts with it.
|
||||||
*/
|
*/
|
||||||
tmp.x = COGL_FIXED_MUL (CLUTTER_UNITS_TO_FIXED (x) + COGL_FIXED_0_5, v[2]);
|
tmp.x = CLUTTER_FIXED_MUL (CLUTTER_UNITS_TO_FIXED (x) + 0.5, v[2]);
|
||||||
tmp.y = COGL_FIXED_MUL (COGL_FIXED_0_5 - CLUTTER_UNITS_TO_FIXED (y), v[3]);
|
tmp.y = CLUTTER_FIXED_MUL (0.5 - CLUTTER_UNITS_TO_FIXED (y), v[3]);
|
||||||
tmp.z = COGL_FIXED_MUL (CLUTTER_UNITS_TO_FIXED (z) + COGL_FIXED_0_5, v[2]);
|
tmp.z = CLUTTER_FIXED_MUL (CLUTTER_UNITS_TO_FIXED (z) + 0.5, v[2]);
|
||||||
tmp.w = 0;
|
tmp.w = 0;
|
||||||
|
|
||||||
fixed_vertex_to_units (&tmp, vertex);
|
fixed_vertex_to_units (&tmp, vertex);
|
||||||
@ -1119,10 +1119,10 @@ clutter_actor_transform_vertices_relative (ClutterActor *self,
|
|||||||
|
|
||||||
cogl_get_modelview_matrix (mtx);
|
cogl_get_modelview_matrix (mtx);
|
||||||
|
|
||||||
fixed_vertex_transform (mtx, 0, 0, 0, COGL_FIXED_1, &vertices[0]);
|
fixed_vertex_transform (mtx, 0, 0, 0, 1.0, &vertices[0]);
|
||||||
fixed_vertex_transform (mtx, width, 0, 0, COGL_FIXED_1, &vertices[1]);
|
fixed_vertex_transform (mtx, width, 0, 0, 1.0, &vertices[1]);
|
||||||
fixed_vertex_transform (mtx, 0, height, 0, COGL_FIXED_1, &vertices[2]);
|
fixed_vertex_transform (mtx, 0, height, 0, 1.0, &vertices[2]);
|
||||||
fixed_vertex_transform (mtx, width, height, 0, COGL_FIXED_1, &vertices[3]);
|
fixed_vertex_transform (mtx, width, height, 0, 1.0, &vertices[3]);
|
||||||
|
|
||||||
cogl_pop_matrix();
|
cogl_pop_matrix();
|
||||||
}
|
}
|
||||||
@ -1171,10 +1171,10 @@ clutter_actor_transform_and_project_box (ClutterActor *self,
|
|||||||
|
|
||||||
cogl_get_modelview_matrix (mtx);
|
cogl_get_modelview_matrix (mtx);
|
||||||
|
|
||||||
fixed_vertex_transform (mtx, 0, 0, 0, COGL_FIXED_1, &vertices[0]);
|
fixed_vertex_transform (mtx, 0, 0, 0, 1.0, &vertices[0]);
|
||||||
fixed_vertex_transform (mtx, width, 0, 0, COGL_FIXED_1, &vertices[1]);
|
fixed_vertex_transform (mtx, width, 0, 0, 1.0, &vertices[1]);
|
||||||
fixed_vertex_transform (mtx, 0, height, 0, COGL_FIXED_1, &vertices[2]);
|
fixed_vertex_transform (mtx, 0, height, 0, 1.0, &vertices[2]);
|
||||||
fixed_vertex_transform (mtx, width, height, 0, COGL_FIXED_1, &vertices[3]);
|
fixed_vertex_transform (mtx, width, height, 0, 1.0, &vertices[3]);
|
||||||
|
|
||||||
cogl_pop_matrix();
|
cogl_pop_matrix();
|
||||||
|
|
||||||
@ -1261,24 +1261,24 @@ clutter_actor_get_allocation_vertices (ClutterActor *self,
|
|||||||
* The w[3] parameter should always be 1.0 here, so we ignore it;
|
* The w[3] parameter should always be 1.0 here, so we ignore it;
|
||||||
* otherwise we would have to divide the original verts with it.
|
* otherwise we would have to divide the original verts with it.
|
||||||
*/
|
*/
|
||||||
tmp.x = COGL_FIXED_MUL ((vertices[0].x + COGL_FIXED_0_5), v[2]);
|
tmp.x = CLUTTER_FIXED_MUL ((vertices[0].x + 0.5), v[2]);
|
||||||
tmp.y = COGL_FIXED_MUL ((COGL_FIXED_0_5 - vertices[0].y), v[3]);
|
tmp.y = CLUTTER_FIXED_MUL ((0.5 - vertices[0].y), v[3]);
|
||||||
tmp.z = COGL_FIXED_MUL ((vertices[0].z + COGL_FIXED_0_5), v[2]);
|
tmp.z = CLUTTER_FIXED_MUL ((vertices[0].z + 0.5), v[2]);
|
||||||
fixed_vertex_to_units (&tmp, &verts[0]);
|
fixed_vertex_to_units (&tmp, &verts[0]);
|
||||||
|
|
||||||
tmp.x = COGL_FIXED_MUL ((vertices[1].x + COGL_FIXED_0_5), v[2]);
|
tmp.x = CLUTTER_FIXED_MUL ((vertices[1].x + 0.5), v[2]);
|
||||||
tmp.y = COGL_FIXED_MUL ((COGL_FIXED_0_5 - vertices[1].y), v[3]);
|
tmp.y = CLUTTER_FIXED_MUL ((0.5 - vertices[1].y), v[3]);
|
||||||
tmp.z = COGL_FIXED_MUL ((vertices[1].z + COGL_FIXED_0_5), v[2]);
|
tmp.z = CLUTTER_FIXED_MUL ((vertices[1].z + 0.5), v[2]);
|
||||||
fixed_vertex_to_units (&tmp, &verts[1]);
|
fixed_vertex_to_units (&tmp, &verts[1]);
|
||||||
|
|
||||||
tmp.x = COGL_FIXED_MUL ((vertices[2].x + COGL_FIXED_0_5), v[2]);
|
tmp.x = CLUTTER_FIXED_MUL ((vertices[2].x + 0.5), v[2]);
|
||||||
tmp.y = COGL_FIXED_MUL ((COGL_FIXED_0_5 - vertices[2].y), v[3]);
|
tmp.y = CLUTTER_FIXED_MUL ((0.5 - vertices[2].y), v[3]);
|
||||||
tmp.z = COGL_FIXED_MUL ((vertices[2].z + COGL_FIXED_0_5), v[2]);
|
tmp.z = CLUTTER_FIXED_MUL ((vertices[2].z + 0.5), v[2]);
|
||||||
fixed_vertex_to_units (&tmp, &verts[2]);
|
fixed_vertex_to_units (&tmp, &verts[2]);
|
||||||
|
|
||||||
tmp.x = COGL_FIXED_MUL ((vertices[3].x + COGL_FIXED_0_5), v[2]);
|
tmp.x = CLUTTER_FIXED_MUL ((vertices[3].x + 0.5), v[2]);
|
||||||
tmp.y = COGL_FIXED_MUL ((COGL_FIXED_0_5 - vertices[3].y), v[3]);
|
tmp.y = CLUTTER_FIXED_MUL ((0.5 - vertices[3].y), v[3]);
|
||||||
tmp.z = COGL_FIXED_MUL ((vertices[3].z + COGL_FIXED_0_5), v[2]);
|
tmp.z = CLUTTER_FIXED_MUL ((vertices[3].z + 0.5), v[2]);
|
||||||
fixed_vertex_to_units (&tmp, &verts[3]);
|
fixed_vertex_to_units (&tmp, &verts[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1355,7 +1355,7 @@ _clutter_actor_apply_modelview_transform (ClutterActor *self)
|
|||||||
* the translations included in the rotation are not scaled and so the
|
* the translations included in the rotation are not scaled and so the
|
||||||
* entire object will move on the screen as a result of rotating it).
|
* entire object will move on the screen as a result of rotating it).
|
||||||
*/
|
*/
|
||||||
if (priv->scale_x != COGL_FIXED_1 || priv->scale_y != COGL_FIXED_1)
|
if (priv->scale_x != 1.0 || priv->scale_y != 1.0)
|
||||||
cogl_scale (priv->scale_x, priv->scale_y);
|
cogl_scale (priv->scale_x, priv->scale_y);
|
||||||
|
|
||||||
if (priv->rzang)
|
if (priv->rzang)
|
||||||
@ -1364,7 +1364,7 @@ _clutter_actor_apply_modelview_transform (ClutterActor *self)
|
|||||||
CLUTTER_UNITS_TO_FIXED (priv->rzy),
|
CLUTTER_UNITS_TO_FIXED (priv->rzy),
|
||||||
0);
|
0);
|
||||||
|
|
||||||
cogl_rotatex (priv->rzang, 0, 0, COGL_FIXED_1);
|
cogl_rotatex (priv->rzang, 0, 0, 1.0);
|
||||||
|
|
||||||
cogl_translatex (CLUTTER_UNITS_TO_FIXED (-priv->rzx),
|
cogl_translatex (CLUTTER_UNITS_TO_FIXED (-priv->rzx),
|
||||||
CLUTTER_UNITS_TO_FIXED (-priv->rzy),
|
CLUTTER_UNITS_TO_FIXED (-priv->rzy),
|
||||||
@ -1377,7 +1377,7 @@ _clutter_actor_apply_modelview_transform (ClutterActor *self)
|
|||||||
0,
|
0,
|
||||||
CLUTTER_UNITS_TO_FIXED (priv->z + priv->ryz));
|
CLUTTER_UNITS_TO_FIXED (priv->z + priv->ryz));
|
||||||
|
|
||||||
cogl_rotatex (priv->ryang, 0, COGL_FIXED_1, 0);
|
cogl_rotatex (priv->ryang, 0, 1.0, 0);
|
||||||
|
|
||||||
cogl_translatex (CLUTTER_UNITS_TO_FIXED (-priv->ryx),
|
cogl_translatex (CLUTTER_UNITS_TO_FIXED (-priv->ryx),
|
||||||
0,
|
0,
|
||||||
@ -1390,7 +1390,7 @@ _clutter_actor_apply_modelview_transform (ClutterActor *self)
|
|||||||
CLUTTER_UNITS_TO_FIXED (priv->rxy),
|
CLUTTER_UNITS_TO_FIXED (priv->rxy),
|
||||||
CLUTTER_UNITS_TO_FIXED (priv->z + priv->rxz));
|
CLUTTER_UNITS_TO_FIXED (priv->z + priv->rxz));
|
||||||
|
|
||||||
cogl_rotatex (priv->rxang, COGL_FIXED_1, 0, 0);
|
cogl_rotatex (priv->rxang, 1.0, 0, 0);
|
||||||
|
|
||||||
cogl_translatex (0,
|
cogl_translatex (0,
|
||||||
CLUTTER_UNITS_TO_FIXED (-priv->rxy),
|
CLUTTER_UNITS_TO_FIXED (-priv->rxy),
|
||||||
@ -1656,14 +1656,14 @@ clutter_actor_set_property (GObject *object,
|
|||||||
case PROP_SCALE_X:
|
case PROP_SCALE_X:
|
||||||
clutter_actor_set_scalex
|
clutter_actor_set_scalex
|
||||||
(actor,
|
(actor,
|
||||||
COGL_FIXED_FROM_FLOAT (g_value_get_double (value)),
|
CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value)),
|
||||||
priv->scale_y);
|
priv->scale_y);
|
||||||
break;
|
break;
|
||||||
case PROP_SCALE_Y:
|
case PROP_SCALE_Y:
|
||||||
clutter_actor_set_scalex
|
clutter_actor_set_scalex
|
||||||
(actor,
|
(actor,
|
||||||
priv->scale_x,
|
priv->scale_x,
|
||||||
COGL_FIXED_FROM_FLOAT (g_value_get_double (value)));
|
CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value)));
|
||||||
break;
|
break;
|
||||||
case PROP_CLIP:
|
case PROP_CLIP:
|
||||||
{
|
{
|
||||||
@ -1681,7 +1681,7 @@ clutter_actor_set_property (GObject *object,
|
|||||||
{
|
{
|
||||||
ClutterFixed angle;
|
ClutterFixed angle;
|
||||||
|
|
||||||
angle = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
angle = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
clutter_actor_set_rotation_internal (actor,
|
clutter_actor_set_rotation_internal (actor,
|
||||||
CLUTTER_X_AXIS,
|
CLUTTER_X_AXIS,
|
||||||
angle,
|
angle,
|
||||||
@ -1694,7 +1694,7 @@ clutter_actor_set_property (GObject *object,
|
|||||||
{
|
{
|
||||||
ClutterFixed angle;
|
ClutterFixed angle;
|
||||||
|
|
||||||
angle = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
angle = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
clutter_actor_set_rotation_internal (actor,
|
clutter_actor_set_rotation_internal (actor,
|
||||||
CLUTTER_Y_AXIS,
|
CLUTTER_Y_AXIS,
|
||||||
angle,
|
angle,
|
||||||
@ -1707,7 +1707,7 @@ clutter_actor_set_property (GObject *object,
|
|||||||
{
|
{
|
||||||
ClutterFixed angle;
|
ClutterFixed angle;
|
||||||
|
|
||||||
angle = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
angle = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
clutter_actor_set_rotation_internal (actor,
|
clutter_actor_set_rotation_internal (actor,
|
||||||
CLUTTER_Z_AXIS,
|
CLUTTER_Z_AXIS,
|
||||||
angle,
|
angle,
|
||||||
@ -1877,22 +1877,22 @@ clutter_actor_get_property (GObject *object,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_SCALE_X:
|
case PROP_SCALE_X:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->scale_x));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->scale_x));
|
||||||
break;
|
break;
|
||||||
case PROP_SCALE_Y:
|
case PROP_SCALE_Y:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->scale_y));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->scale_y));
|
||||||
break;
|
break;
|
||||||
case PROP_REACTIVE:
|
case PROP_REACTIVE:
|
||||||
g_value_set_boolean (value, clutter_actor_get_reactive (actor));
|
g_value_set_boolean (value, clutter_actor_get_reactive (actor));
|
||||||
break;
|
break;
|
||||||
case PROP_ROTATION_ANGLE_X:
|
case PROP_ROTATION_ANGLE_X:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->rxang));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->rxang));
|
||||||
break;
|
break;
|
||||||
case PROP_ROTATION_ANGLE_Y:
|
case PROP_ROTATION_ANGLE_Y:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->ryang));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->ryang));
|
||||||
break;
|
break;
|
||||||
case PROP_ROTATION_ANGLE_Z:
|
case PROP_ROTATION_ANGLE_Z:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->rzang));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->rzang));
|
||||||
break;
|
break;
|
||||||
case PROP_ROTATION_CENTER_X:
|
case PROP_ROTATION_CENTER_X:
|
||||||
{
|
{
|
||||||
@ -3020,8 +3020,8 @@ clutter_actor_init (ClutterActor *self)
|
|||||||
priv->has_clip = FALSE;
|
priv->has_clip = FALSE;
|
||||||
priv->opacity = 0xff;
|
priv->opacity = 0xff;
|
||||||
priv->id = clutter_id_pool_add (CLUTTER_CONTEXT()->id_pool, self);
|
priv->id = clutter_id_pool_add (CLUTTER_CONTEXT()->id_pool, self);
|
||||||
priv->scale_x = COGL_FIXED_1;
|
priv->scale_x = 1.0;
|
||||||
priv->scale_y = COGL_FIXED_1;
|
priv->scale_y = 1.0;
|
||||||
priv->shader_data = NULL;
|
priv->shader_data = NULL;
|
||||||
priv->show_on_set_parent = TRUE;
|
priv->show_on_set_parent = TRUE;
|
||||||
|
|
||||||
@ -4916,8 +4916,8 @@ clutter_actor_set_scale (ClutterActor *self,
|
|||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
clutter_actor_set_scalex (self,
|
clutter_actor_set_scalex (self,
|
||||||
COGL_FIXED_FROM_FLOAT (scale_x),
|
CLUTTER_FLOAT_TO_FIXED (scale_x),
|
||||||
COGL_FIXED_FROM_FLOAT (scale_y));
|
CLUTTER_FLOAT_TO_FIXED (scale_y));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -4964,10 +4964,10 @@ clutter_actor_get_scale (ClutterActor *self,
|
|||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
if (scale_x)
|
if (scale_x)
|
||||||
*scale_x = COGL_FIXED_TO_FLOAT (self->priv->scale_x);
|
*scale_x = CLUTTER_FIXED_TO_FLOAT (self->priv->scale_x);
|
||||||
|
|
||||||
if (scale_y)
|
if (scale_y)
|
||||||
*scale_y = COGL_FIXED_TO_FLOAT (self->priv->scale_y);
|
*scale_y = CLUTTER_FIXED_TO_FLOAT (self->priv->scale_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -5224,7 +5224,7 @@ clutter_actor_set_rotationu (ClutterActor *self,
|
|||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
clutter_actor_set_rotation_internal (self, axis,
|
clutter_actor_set_rotation_internal (self, axis,
|
||||||
COGL_FIXED_FROM_FLOAT (angle),
|
CLUTTER_FLOAT_TO_FIXED (angle),
|
||||||
x, y, z);
|
x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5294,7 +5294,7 @@ clutter_actor_set_rotation (ClutterActor *self,
|
|||||||
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
g_return_if_fail (CLUTTER_IS_ACTOR (self));
|
||||||
|
|
||||||
clutter_actor_set_rotationx (self, axis,
|
clutter_actor_set_rotationx (self, axis,
|
||||||
COGL_FIXED_FROM_FLOAT (angle),
|
CLUTTER_FLOAT_TO_FIXED (angle),
|
||||||
x, y, z);
|
x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5335,7 +5335,7 @@ clutter_actor_get_rotationu (ClutterActor *self,
|
|||||||
switch (axis)
|
switch (axis)
|
||||||
{
|
{
|
||||||
case CLUTTER_X_AXIS:
|
case CLUTTER_X_AXIS:
|
||||||
retval = COGL_FIXED_TO_DOUBLE (priv->rxang);
|
retval = CLUTTER_FIXED_TO_DOUBLE (priv->rxang);
|
||||||
if (y)
|
if (y)
|
||||||
*y = priv->rxy;
|
*y = priv->rxy;
|
||||||
if (z)
|
if (z)
|
||||||
@ -5343,7 +5343,7 @@ clutter_actor_get_rotationu (ClutterActor *self,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_Y_AXIS:
|
case CLUTTER_Y_AXIS:
|
||||||
retval = COGL_FIXED_TO_DOUBLE (priv->ryang);
|
retval = CLUTTER_FIXED_TO_DOUBLE (priv->ryang);
|
||||||
if (x)
|
if (x)
|
||||||
*x = priv->ryx;
|
*x = priv->ryx;
|
||||||
if (z)
|
if (z)
|
||||||
@ -5351,7 +5351,7 @@ clutter_actor_get_rotationu (ClutterActor *self,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CLUTTER_Z_AXIS:
|
case CLUTTER_Z_AXIS:
|
||||||
retval = COGL_FIXED_TO_DOUBLE (priv->rzang);
|
retval = CLUTTER_FIXED_TO_DOUBLE (priv->rzang);
|
||||||
if (x)
|
if (x)
|
||||||
*x = priv->rzx;
|
*x = priv->rzx;
|
||||||
if (y)
|
if (y)
|
||||||
@ -5450,7 +5450,7 @@ clutter_actor_get_rotation (ClutterActor *self,
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0.0);
|
g_return_val_if_fail (CLUTTER_IS_ACTOR (self), 0.0);
|
||||||
|
|
||||||
return COGL_FIXED_TO_FLOAT (clutter_actor_get_rotationx (self,
|
return CLUTTER_FIXED_TO_FLOAT (clutter_actor_get_rotationx (self,
|
||||||
axis,
|
axis,
|
||||||
x, y, z));
|
x, y, z));
|
||||||
}
|
}
|
||||||
@ -6612,7 +6612,7 @@ parse_rotation_array (ClutterActor *actor,
|
|||||||
/* angle */
|
/* angle */
|
||||||
element = json_array_get_element (array, 0);
|
element = json_array_get_element (array, 0);
|
||||||
if (JSON_NODE_TYPE (element) == JSON_NODE_VALUE)
|
if (JSON_NODE_TYPE (element) == JSON_NODE_VALUE)
|
||||||
info->angle = COGL_FIXED_FROM_FLOAT (json_node_get_double (element));
|
info->angle = CLUTTER_FLOAT_TO_FIXED (json_node_get_double (element));
|
||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -6918,12 +6918,12 @@ clutter_actor_transform_stage_point (ClutterActor *self,
|
|||||||
if (!du || !dv)
|
if (!du || !dv)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
#define FP2FX COGL_FIXED_FROM_FLOAT
|
#define FP2FX CLUTTER_FLOAT_TO_FIXED
|
||||||
#define FX2FP COGL_FIXED_TO_DOUBLE
|
#define FX2FP CLUTTER_FIXED_TO_DOUBLE
|
||||||
#define UX2FP CLUTTER_UNITS_TO_FLOAT
|
#define UX2FP CLUTTER_UNITS_TO_FLOAT
|
||||||
#define UX2FX CLUTTER_UNITS_TO_FIXED
|
#define UX2FX CLUTTER_UNITS_TO_FIXED
|
||||||
#define FP2INT CLUTTER_FLOAT_TO_INT
|
#define FP2INT CLUTTER_FLOAT_TO_INT
|
||||||
#define DET2X(a,b,c,d) (COGL_FIXED_MUL ((a), (d)) - COGL_FIXED_MUL ((b), (c)))
|
#define DET2X(a,b,c,d) ((a * d) - (b * c))
|
||||||
#define DET2FP(a,b,c,d) ((a) * (d) - (b) * (c))
|
#define DET2FP(a,b,c,d) ((a) * (d) - (b) * (c))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -6946,7 +6946,7 @@ clutter_actor_transform_stage_point (ClutterActor *self,
|
|||||||
RQ[2][1] = UX2FX (v[0].y);
|
RQ[2][1] = UX2FX (v[0].y);
|
||||||
RQ[0][2] = 0;
|
RQ[0][2] = 0;
|
||||||
RQ[1][2] = 0;
|
RQ[1][2] = 0;
|
||||||
RQ[2][2] = COGL_FIXED_1;
|
RQ[2][2] = 1.0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -6976,16 +6976,16 @@ clutter_actor_transform_stage_point (ClutterActor *self,
|
|||||||
RQ[0][2] = FP2FX (DET2FP (UX2FP (px), dx2, UX2FP (py), dy2) / del);
|
RQ[0][2] = FP2FX (DET2FP (UX2FP (px), dx2, UX2FP (py), dy2) / del);
|
||||||
RQ[1][2] = FP2FX (DET2FP (dx1, UX2FP (px), dy1, UX2FP (py)) / del);
|
RQ[1][2] = FP2FX (DET2FP (dx1, UX2FP (px), dy1, UX2FP (py)) / del);
|
||||||
RQ[1][2] = FP2FX (DET2FP (dx1, UX2FP (px), dy1, UX2FP (py)) / del);
|
RQ[1][2] = FP2FX (DET2FP (dx1, UX2FP (px), dy1, UX2FP (py)) / del);
|
||||||
RQ[2][2] = COGL_FIXED_1;
|
RQ[2][2] = 1.0;
|
||||||
RQ[0][0] = UX2FX (v[1].x - v[0].x)
|
RQ[0][0] = UX2FX (v[1].x - v[0].x)
|
||||||
+ COGL_FIXED_MUL (RQ[0][2], UX2FX (v[1].x));
|
+ CLUTTER_FIXED_MUL (RQ[0][2], UX2FX (v[1].x));
|
||||||
RQ[1][0] = UX2FX (v[2].x - v[0].x)
|
RQ[1][0] = UX2FX (v[2].x - v[0].x)
|
||||||
+ COGL_FIXED_MUL (RQ[1][2], UX2FX (v[2].x));
|
+ CLUTTER_FIXED_MUL (RQ[1][2], UX2FX (v[2].x));
|
||||||
RQ[2][0] = UX2FX (v[0].x);
|
RQ[2][0] = UX2FX (v[0].x);
|
||||||
RQ[0][1] = UX2FX (v[1].y - v[0].y)
|
RQ[0][1] = UX2FX (v[1].y - v[0].y)
|
||||||
+ COGL_FIXED_MUL (RQ[0][2], UX2FX (v[1].y));
|
+ CLUTTER_FIXED_MUL (RQ[0][2], UX2FX (v[1].y));
|
||||||
RQ[1][1] = UX2FX (v[2].y - v[0].y)
|
RQ[1][1] = UX2FX (v[2].y - v[0].y)
|
||||||
+ COGL_FIXED_MUL (RQ[1][2], UX2FX (v[2].y));
|
+ CLUTTER_FIXED_MUL (RQ[1][2], UX2FX (v[2].y));
|
||||||
RQ[2][1] = UX2FX (v[0].y);
|
RQ[2][1] = UX2FX (v[0].y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7017,9 +7017,9 @@ clutter_actor_transform_stage_point (ClutterActor *self,
|
|||||||
/*
|
/*
|
||||||
* Check the resutling martix is OK.
|
* Check the resutling martix is OK.
|
||||||
*/
|
*/
|
||||||
det = COGL_FIXED_MUL (RQ[0][0], ST[0][0])
|
det = CLUTTER_FIXED_MUL (RQ[0][0], ST[0][0])
|
||||||
+ COGL_FIXED_MUL (RQ[0][1], ST[0][1])
|
+ CLUTTER_FIXED_MUL (RQ[0][1], ST[0][1])
|
||||||
+ COGL_FIXED_MUL (RQ[0][2], ST[0][2]);
|
+ CLUTTER_FIXED_MUL (RQ[0][2], ST[0][2]);
|
||||||
|
|
||||||
if (!det)
|
if (!det)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -7481,7 +7481,7 @@ clutter_actor_is_scaled (ClutterActor *self)
|
|||||||
|
|
||||||
priv = self->priv;
|
priv = self->priv;
|
||||||
|
|
||||||
if (priv->scale_x != COGL_FIXED_1 || priv->scale_y != COGL_FIXED_1)
|
if (priv->scale_x != 1.0 || priv->scale_y != 1.0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -699,12 +699,12 @@ clutter_ramp_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
static guint32
|
static guint32
|
||||||
sincx1024_func (ClutterAlpha *alpha,
|
sincx1024_func (ClutterAlpha *alpha,
|
||||||
ClutterAngle angle,
|
float angle,
|
||||||
ClutterFixed offset)
|
ClutterFixed offset)
|
||||||
{
|
{
|
||||||
ClutterTimeline *timeline;
|
ClutterTimeline *timeline;
|
||||||
gint current_frame_num, n_frames;
|
gint current_frame_num, n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -716,7 +716,7 @@ sincx1024_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x -= (512 * 512 / angle);
|
x -= (512 * 512 / angle);
|
||||||
|
|
||||||
sine = ((cogl_angle_sin (x) + offset) / 2)
|
sine = ((sinf (x * (G_PI/180.0)) + offset) / 2)
|
||||||
* CLUTTER_ALPHA_MAX_ALPHA;
|
* CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
sine = sine >> COGL_FIXED_Q;
|
sine = sine >> COGL_FIXED_Q;
|
||||||
@ -744,14 +744,14 @@ sincx_func (ClutterAlpha *alpha,
|
|||||||
n_frames = clutter_timeline_get_n_frames (timeline);
|
n_frames = clutter_timeline_get_n_frames (timeline);
|
||||||
|
|
||||||
x = angle * current_frame_num / n_frames;
|
x = angle * current_frame_num / n_frames;
|
||||||
x = COGL_FIXED_FAST_MUL (x, COGL_FIXED_PI)
|
x = CLUTTER_FIXED_MUL (x, CFX_PI)
|
||||||
- COGL_FIXED_FAST_DIV (COGL_FIXED_PI, angle);
|
- CLUTTER_FIXED_DIV (CFX_PI, angle);
|
||||||
|
|
||||||
sine = (cogl_fixed_sin (x) + offset) / 2;
|
sine = (sinf (x) + offset) / 2;
|
||||||
|
|
||||||
CLUTTER_NOTE (ALPHA, "sine: %2f\n", COGL_FIXED_TO_DOUBLE (sine));
|
CLUTTER_NOTE (ALPHA, "sine: %2f\n", CLUTTER_FIXED_TO_DOUBLE (sine));
|
||||||
|
|
||||||
return COGL_FIXED_TO_INT (sine * CLUTTER_ALPHA_MAX_ALPHA);
|
return (sine * CLUTTER_ALPHA_MAX_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NB: angle is not in radians but in muliples of PI, i.e., 2.0
|
/* NB: angle is not in radians but in muliples of PI, i.e., 2.0
|
||||||
@ -810,7 +810,7 @@ clutter_sine_func (ClutterAlpha *alpha,
|
|||||||
return sinc_func (alpha, 2.0, 1.0);
|
return sinc_func (alpha, 2.0, 1.0);
|
||||||
#else
|
#else
|
||||||
/* 2.0 above represents full circle */
|
/* 2.0 above represents full circle */
|
||||||
return sincx1024_func (alpha, 1024, COGL_FIXED_1);
|
return sincx1024_func (alpha, 1024, 1.0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -842,7 +842,7 @@ clutter_sine_inc_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline * timeline;
|
ClutterTimeline * timeline;
|
||||||
gint frame;
|
gint frame;
|
||||||
gint n_frames;
|
gint n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -851,7 +851,7 @@ clutter_sine_inc_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = 256 * frame / n_frames;
|
x = 256 * frame / n_frames;
|
||||||
|
|
||||||
sine = cogl_angle_sin (x) * CLUTTER_ALPHA_MAX_ALPHA;
|
sine = sinf (x * (G_PI/180.0)) * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
return ((guint32) sine) >> COGL_FIXED_Q;
|
return ((guint32) sine) >> COGL_FIXED_Q;
|
||||||
}
|
}
|
||||||
@ -884,7 +884,7 @@ clutter_sine_dec_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline * timeline;
|
ClutterTimeline * timeline;
|
||||||
gint frame;
|
gint frame;
|
||||||
gint n_frames;
|
gint n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -893,7 +893,7 @@ clutter_sine_dec_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = 256 * frame / n_frames + 256;
|
x = 256 * frame / n_frames + 256;
|
||||||
|
|
||||||
sine = cogl_angle_sin (x) * CLUTTER_ALPHA_MAX_ALPHA;
|
sine = sinf (x * (G_PI/180.0)) * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
return ((guint32) sine) >> COGL_FIXED_Q;
|
return ((guint32) sine) >> COGL_FIXED_Q;
|
||||||
}
|
}
|
||||||
@ -926,7 +926,7 @@ clutter_sine_half_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline *timeline;
|
ClutterTimeline *timeline;
|
||||||
gint frame;
|
gint frame;
|
||||||
gint n_frames;
|
gint n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -935,7 +935,7 @@ clutter_sine_half_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = 512 * frame / n_frames;
|
x = 512 * frame / n_frames;
|
||||||
|
|
||||||
sine = cogl_angle_sin (x) * CLUTTER_ALPHA_MAX_ALPHA;
|
sine = sinf (x * (G_PI/180.0)) * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
return ((guint32) sine) >> COGL_FIXED_Q;
|
return ((guint32) sine) >> COGL_FIXED_Q;
|
||||||
}
|
}
|
||||||
@ -962,7 +962,7 @@ clutter_sine_in_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline *timeline;
|
ClutterTimeline *timeline;
|
||||||
gint frame;
|
gint frame;
|
||||||
gint n_frames;
|
gint n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -972,7 +972,7 @@ clutter_sine_in_func (ClutterAlpha *alpha,
|
|||||||
/* XXX- if we use 768 we overflow */
|
/* XXX- if we use 768 we overflow */
|
||||||
x = 256 * frame / n_frames + 767;
|
x = 256 * frame / n_frames + 767;
|
||||||
|
|
||||||
sine = (cogl_angle_sin (x) + 1) * CLUTTER_ALPHA_MAX_ALPHA;
|
sine = (sinf (x * (G_PI/180.0)) + 1) * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
return ((guint32) sine) >> COGL_FIXED_Q;
|
return ((guint32) sine) >> COGL_FIXED_Q;
|
||||||
}
|
}
|
||||||
@ -998,7 +998,7 @@ clutter_sine_out_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline *timeline;
|
ClutterTimeline *timeline;
|
||||||
gint frame;
|
gint frame;
|
||||||
gint n_frames;
|
gint n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -1007,7 +1007,7 @@ clutter_sine_out_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = 256 * frame / n_frames;
|
x = 256 * frame / n_frames;
|
||||||
|
|
||||||
sine = cogl_angle_sin (x) * CLUTTER_ALPHA_MAX_ALPHA;
|
sine = sinf (x * (G_PI/180.0)) * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
return ((guint32) sine) >> COGL_FIXED_Q;
|
return ((guint32) sine) >> COGL_FIXED_Q;
|
||||||
}
|
}
|
||||||
@ -1034,7 +1034,7 @@ clutter_sine_in_out_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline *timeline;
|
ClutterTimeline *timeline;
|
||||||
gint frame;
|
gint frame;
|
||||||
gint n_frames;
|
gint n_frames;
|
||||||
ClutterAngle x;
|
float x;
|
||||||
ClutterFixed sine;
|
ClutterFixed sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
@ -1043,7 +1043,7 @@ clutter_sine_in_out_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = -256 * frame / n_frames + 256;
|
x = -256 * frame / n_frames + 256;
|
||||||
|
|
||||||
sine = (cogl_angle_sin (x) + 1) / 2 * CLUTTER_ALPHA_MAX_ALPHA;
|
sine = (sinf (x * (G_PI/180.0)) + 1) / 2 * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
return ((guint32) sine) >> COGL_FIXED_Q;
|
return ((guint32) sine) >> COGL_FIXED_Q;
|
||||||
}
|
}
|
||||||
@ -1129,7 +1129,7 @@ clutter_smoothstep_inc_func (ClutterAlpha *alpha,
|
|||||||
/*
|
/*
|
||||||
* Convert x to 8.24 for next step.
|
* Convert x to 8.24 for next step.
|
||||||
*/
|
*/
|
||||||
x = COGL_FIXED_FAST_DIV (frame, n_frames) << 8;
|
x = CLUTTER_FIXED_DIV (frame, n_frames) << 8;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* f(x) = -2x^3 + 3x^2
|
* f(x) = -2x^3 + 3x^2
|
||||||
@ -1138,7 +1138,7 @@ clutter_smoothstep_inc_func (ClutterAlpha *alpha,
|
|||||||
*/
|
*/
|
||||||
r = ((x >> 12) * (x >> 12) * 3 - (x >> 15) * (x >> 16) * (x >> 16)) >> 8;
|
r = ((x >> 12) * (x >> 12) * 3 - (x >> 15) * (x >> 16) * (x >> 16)) >> 8;
|
||||||
|
|
||||||
return COGL_FIXED_TO_INT (r * CLUTTER_ALPHA_MAX_ALPHA);
|
return (r * CLUTTER_ALPHA_MAX_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1214,7 +1214,7 @@ clutter_exp_inc_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = x_alpha_max * frame / n_frames;
|
x = x_alpha_max * frame / n_frames;
|
||||||
|
|
||||||
result = CLAMP (cogl_fixed_pow2 (x) - 1, 0, CLUTTER_ALPHA_MAX_ALPHA);
|
result = CLAMP (pow2f (x) - 1, 0, CLUTTER_ALPHA_MAX_ALPHA);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -1265,7 +1265,7 @@ clutter_exp_dec_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = (x_alpha_max * (n_frames - frame)) / n_frames;
|
x = (x_alpha_max * (n_frames - frame)) / n_frames;
|
||||||
|
|
||||||
result = CLAMP (cogl_fixed_pow2 (x) - 1, 0, CLUTTER_ALPHA_MAX_ALPHA);
|
result = CLAMP (pow2f (x) - 1, 0, CLUTTER_ALPHA_MAX_ALPHA);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,7 @@ clutter_backend_set_resolution (ClutterBackend *backend,
|
|||||||
|
|
||||||
priv = backend->priv;
|
priv = backend->priv;
|
||||||
|
|
||||||
fixed_dpi = COGL_FIXED_FROM_FLOAT (dpi);
|
fixed_dpi = CLUTTER_FLOAT_TO_FIXED (dpi);
|
||||||
if (priv->resolution != fixed_dpi)
|
if (priv->resolution != fixed_dpi)
|
||||||
priv->resolution = fixed_dpi;
|
priv->resolution = fixed_dpi;
|
||||||
|
|
||||||
@ -443,7 +443,7 @@ clutter_backend_get_resolution (ClutterBackend *backend)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (CLUTTER_IS_BACKEND (backend), -1.0);
|
g_return_val_if_fail (CLUTTER_IS_BACKEND (backend), -1.0);
|
||||||
|
|
||||||
return COGL_FIXED_TO_FLOAT (backend->priv->resolution);
|
return CLUTTER_FIXED_TO_FLOAT (backend->priv->resolution);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -83,9 +83,9 @@ clutter_behaviour_depth_alpha_notify (ClutterBehaviour *behaviour,
|
|||||||
priv = CLUTTER_BEHAVIOUR_DEPTH (behaviour)->priv;
|
priv = CLUTTER_BEHAVIOUR_DEPTH (behaviour)->priv;
|
||||||
|
|
||||||
/* Need to create factor as to avoid borking signedness */
|
/* Need to create factor as to avoid borking signedness */
|
||||||
factor = COGL_FIXED_FROM_INT (alpha_value) / CLUTTER_ALPHA_MAX_ALPHA;
|
factor = (float)(alpha_value) / CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
depth = priv->depth_start
|
depth = priv->depth_start
|
||||||
+ COGL_FIXED_TO_INT (factor * (priv->depth_end - priv->depth_start));
|
+ (factor * (priv->depth_end - priv->depth_start));
|
||||||
|
|
||||||
CLUTTER_NOTE (BEHAVIOUR, "alpha: %d, depth: %d", alpha_value, depth);
|
CLUTTER_NOTE (BEHAVIOUR, "alpha: %d, depth: %d", alpha_value, depth);
|
||||||
|
|
||||||
|
@ -86,11 +86,11 @@ struct _ClutterBehaviourEllipsePrivate
|
|||||||
gint a;
|
gint a;
|
||||||
gint b;
|
gint b;
|
||||||
|
|
||||||
ClutterAngle angle_start;
|
float angle_start;
|
||||||
ClutterAngle angle_end;
|
float angle_end;
|
||||||
ClutterAngle angle_tilt_x;
|
float angle_tilt_x;
|
||||||
ClutterAngle angle_tilt_y;
|
float angle_tilt_y;
|
||||||
ClutterAngle angle_tilt_z;
|
float angle_tilt_z;
|
||||||
|
|
||||||
ClutterRotateDirection direction;
|
ClutterRotateDirection direction;
|
||||||
};
|
};
|
||||||
@ -104,14 +104,14 @@ typedef struct _knot3d
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_behaviour_ellipse_advance (ClutterBehaviourEllipse *e,
|
clutter_behaviour_ellipse_advance (ClutterBehaviourEllipse *e,
|
||||||
ClutterAngle angle,
|
float angle,
|
||||||
knot3d *knot)
|
knot3d *knot)
|
||||||
{
|
{
|
||||||
ClutterBehaviourEllipsePrivate *priv = e->priv;
|
ClutterBehaviourEllipsePrivate *priv = e->priv;
|
||||||
gint x, y, z;
|
gint x, y, z;
|
||||||
|
|
||||||
x = COGL_FIXED_TO_INT (priv->a * cogl_angle_cos (angle));
|
x = (priv->a * cosf (angle * (G_PI/180.0)));
|
||||||
y = COGL_FIXED_TO_INT (priv->b * cogl_angle_sin (angle));
|
y = (priv->b * sinf (angle * (G_PI/180.0)));
|
||||||
z = 0;
|
z = 0;
|
||||||
|
|
||||||
if (priv->angle_tilt_z)
|
if (priv->angle_tilt_z)
|
||||||
@ -126,40 +126,40 @@ clutter_behaviour_ellipse_advance (ClutterBehaviourEllipse *e,
|
|||||||
*/
|
*/
|
||||||
ClutterFixed x2, y2;
|
ClutterFixed x2, y2;
|
||||||
|
|
||||||
x2 = x * cogl_angle_cos (priv->angle_tilt_z)
|
x2 = x * cosf (priv->angle_tilt_z * (G_PI/180.0))
|
||||||
- y * cogl_angle_sin (priv->angle_tilt_z);
|
- y * sinf (priv->angle_tilt_z * (G_PI/180.0));
|
||||||
|
|
||||||
y2 = y * cogl_angle_cos (priv->angle_tilt_z)
|
y2 = y * cosf (priv->angle_tilt_z * (G_PI/180.0))
|
||||||
+ x * cogl_angle_sin (priv->angle_tilt_z);
|
+ x * sinf (priv->angle_tilt_z * (G_PI/180.0));
|
||||||
|
|
||||||
x = COGL_FIXED_TO_INT (x2);
|
x = (x2);
|
||||||
y = COGL_FIXED_TO_INT (y2);
|
y = (y2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->angle_tilt_x)
|
if (priv->angle_tilt_x)
|
||||||
{
|
{
|
||||||
ClutterFixed z2, y2;
|
ClutterFixed z2, y2;
|
||||||
|
|
||||||
z2 = - y * cogl_angle_sin (priv->angle_tilt_x);
|
z2 = - y * sinf (priv->angle_tilt_x * (G_PI/180.0));
|
||||||
|
|
||||||
y2 = y * cogl_angle_cos (priv->angle_tilt_x);
|
y2 = y * cosf (priv->angle_tilt_x * (G_PI/180.0));
|
||||||
|
|
||||||
z = COGL_FIXED_TO_INT (z2);
|
z = (z2);
|
||||||
y = COGL_FIXED_TO_INT (y2);
|
y = (y2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->angle_tilt_y)
|
if (priv->angle_tilt_y)
|
||||||
{
|
{
|
||||||
ClutterFixed x2, z2;
|
ClutterFixed x2, z2;
|
||||||
|
|
||||||
x2 = x * cogl_angle_cos (priv->angle_tilt_y)
|
x2 = x * cosf (priv->angle_tilt_y * (G_PI/180.0))
|
||||||
- z * cogl_angle_sin (priv->angle_tilt_y);
|
- z * sinf (priv->angle_tilt_y * (G_PI/180.0));
|
||||||
|
|
||||||
z2 = z * cogl_angle_cos (priv->angle_tilt_y)
|
z2 = z * cosf (priv->angle_tilt_y * (G_PI/180.0))
|
||||||
+ x * cogl_angle_sin (priv->angle_tilt_y);
|
+ x * sinf (priv->angle_tilt_y * (G_PI/180.0));
|
||||||
|
|
||||||
x = COGL_FIXED_TO_INT (x2);
|
x = (x2);
|
||||||
z = COGL_FIXED_TO_INT (z2);
|
z = (z2);
|
||||||
}
|
}
|
||||||
|
|
||||||
knot->x = x;
|
knot->x = x;
|
||||||
@ -187,10 +187,10 @@ actor_apply_knot_foreach (ClutterBehaviour *behave,
|
|||||||
clutter_actor_set_depth (actor, knot->z);
|
clutter_actor_set_depth (actor, knot->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ClutterAngle
|
static inline float
|
||||||
clamp_angle (ClutterAngle a)
|
clamp_angle (float a)
|
||||||
{
|
{
|
||||||
ClutterAngle a1, a2;
|
float a1, a2;
|
||||||
gint rounds;
|
gint rounds;
|
||||||
|
|
||||||
/* Need to add the 256 offset here, since the user space 0 maps to our
|
/* Need to add the 256 offset here, since the user space 0 maps to our
|
||||||
@ -209,9 +209,9 @@ clutter_behaviour_ellipse_alpha_notify (ClutterBehaviour *behave,
|
|||||||
{
|
{
|
||||||
ClutterBehaviourEllipse *self = CLUTTER_BEHAVIOUR_ELLIPSE (behave);
|
ClutterBehaviourEllipse *self = CLUTTER_BEHAVIOUR_ELLIPSE (behave);
|
||||||
ClutterBehaviourEllipsePrivate *priv = self->priv;
|
ClutterBehaviourEllipsePrivate *priv = self->priv;
|
||||||
ClutterAngle start, end;
|
float start, end;
|
||||||
knot3d knot;
|
knot3d knot;
|
||||||
ClutterAngle angle = 0;
|
float angle = 0;
|
||||||
|
|
||||||
start = priv->angle_start;
|
start = priv->angle_start;
|
||||||
end = priv->angle_end;
|
end = priv->angle_end;
|
||||||
@ -783,7 +783,7 @@ clutter_behaviour_ellipse_set_angle_start (ClutterBehaviourEllipse *self,
|
|||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
clutter_behaviour_ellipse_set_angle_startx (self,
|
clutter_behaviour_ellipse_set_angle_startx (self,
|
||||||
COGL_FIXED_FROM_FLOAT (angle_start));
|
CLUTTER_FLOAT_TO_FIXED (angle_start));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -802,7 +802,7 @@ clutter_behaviour_ellipse_set_angle_startx (ClutterBehaviourEllipse *self,
|
|||||||
ClutterFixed angle_start)
|
ClutterFixed angle_start)
|
||||||
{
|
{
|
||||||
ClutterBehaviourEllipsePrivate *priv;
|
ClutterBehaviourEllipsePrivate *priv;
|
||||||
ClutterAngle new_angle;
|
float new_angle;
|
||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
new_angle = clamp_angle (COGL_ANGLE_FROM_DEGX (angle_start) - 256);
|
new_angle = clamp_angle (COGL_ANGLE_FROM_DEGX (angle_start) - 256);
|
||||||
@ -868,7 +868,7 @@ clutter_behaviour_ellipse_set_angle_end (ClutterBehaviourEllipse *self,
|
|||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
clutter_behaviour_ellipse_set_angle_endx (self,
|
clutter_behaviour_ellipse_set_angle_endx (self,
|
||||||
COGL_FIXED_FROM_FLOAT (angle_end));
|
CLUTTER_FLOAT_TO_FIXED (angle_end));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -887,7 +887,7 @@ clutter_behaviour_ellipse_set_angle_endx (ClutterBehaviourEllipse *self,
|
|||||||
ClutterFixed angle_end)
|
ClutterFixed angle_end)
|
||||||
{
|
{
|
||||||
ClutterBehaviourEllipsePrivate *priv;
|
ClutterBehaviourEllipsePrivate *priv;
|
||||||
ClutterAngle new_angle;
|
float new_angle;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
@ -959,7 +959,7 @@ clutter_behaviour_ellipse_set_angle_tilt (ClutterBehaviourEllipse *self,
|
|||||||
|
|
||||||
clutter_behaviour_ellipse_set_angle_tiltx (self,
|
clutter_behaviour_ellipse_set_angle_tiltx (self,
|
||||||
axis,
|
axis,
|
||||||
COGL_FIXED_FROM_FLOAT (angle_tilt));
|
CLUTTER_FLOAT_TO_FIXED (angle_tilt));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -979,7 +979,7 @@ clutter_behaviour_ellipse_set_angle_tiltx (ClutterBehaviourEllipse *self,
|
|||||||
ClutterFixed angle_tilt)
|
ClutterFixed angle_tilt)
|
||||||
{
|
{
|
||||||
ClutterBehaviourEllipsePrivate *priv;
|
ClutterBehaviourEllipsePrivate *priv;
|
||||||
ClutterAngle new_angle;
|
float new_angle;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
@ -1096,7 +1096,7 @@ clutter_behaviour_ellipse_set_tilt (ClutterBehaviourEllipse *self,
|
|||||||
gdouble angle_tilt_z)
|
gdouble angle_tilt_z)
|
||||||
{
|
{
|
||||||
ClutterBehaviourEllipsePrivate *priv;
|
ClutterBehaviourEllipsePrivate *priv;
|
||||||
ClutterAngle new_angle_x, new_angle_y, new_angle_z;
|
float new_angle_x, new_angle_y, new_angle_z;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
@ -1150,7 +1150,7 @@ clutter_behaviour_ellipse_set_tiltx (ClutterBehaviourEllipse *self,
|
|||||||
ClutterFixed angle_tilt_z)
|
ClutterFixed angle_tilt_z)
|
||||||
{
|
{
|
||||||
ClutterBehaviourEllipsePrivate *priv;
|
ClutterBehaviourEllipsePrivate *priv;
|
||||||
ClutterAngle new_angle_x, new_angle_y, new_angle_z;
|
float new_angle_x, new_angle_y, new_angle_z;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ELLIPSE (self));
|
||||||
|
|
||||||
|
@ -108,8 +108,8 @@ ClutterFixed clamp_angle (ClutterFixed a)
|
|||||||
ClutterFixed a1, a2;
|
ClutterFixed a1, a2;
|
||||||
gint rounds;
|
gint rounds;
|
||||||
|
|
||||||
rounds = a / COGL_FIXED_360;
|
rounds = a / 360.0;
|
||||||
a1 = rounds * COGL_FIXED_360;
|
a1 = rounds * 360.0;
|
||||||
a2 = a - a1;
|
a2 = a - a1;
|
||||||
|
|
||||||
return a2;
|
return a2;
|
||||||
@ -126,7 +126,7 @@ clutter_behaviour_rotate_alpha_notify (ClutterBehaviour *behaviour,
|
|||||||
rotate_behaviour = CLUTTER_BEHAVIOUR_ROTATE (behaviour);
|
rotate_behaviour = CLUTTER_BEHAVIOUR_ROTATE (behaviour);
|
||||||
priv = rotate_behaviour->priv;
|
priv = rotate_behaviour->priv;
|
||||||
|
|
||||||
factor = COGL_FIXED_FROM_INT (alpha_value) / CLUTTER_ALPHA_MAX_ALPHA;
|
factor = (float)(alpha_value) / CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
angle = 0;
|
angle = 0;
|
||||||
|
|
||||||
start = priv->angle_start;
|
start = priv->angle_start;
|
||||||
@ -134,14 +134,14 @@ clutter_behaviour_rotate_alpha_notify (ClutterBehaviour *behaviour,
|
|||||||
|
|
||||||
if (priv->direction == CLUTTER_ROTATE_CW && start >= end)
|
if (priv->direction == CLUTTER_ROTATE_CW && start >= end)
|
||||||
{
|
{
|
||||||
end += COGL_FIXED_360;
|
end += 360.0;
|
||||||
}
|
}
|
||||||
else if (priv->direction == CLUTTER_ROTATE_CCW && start <= end)
|
else if (priv->direction == CLUTTER_ROTATE_CCW && start <= end)
|
||||||
{
|
{
|
||||||
end -= COGL_FIXED_360;
|
end -= 360.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
angle = COGL_FIXED_FAST_MUL ((end - start), factor) + start;
|
angle = CLUTTER_FIXED_MUL ((end - start), factor) + start;
|
||||||
|
|
||||||
clutter_behaviour_actors_foreach (behaviour,
|
clutter_behaviour_actors_foreach (behaviour,
|
||||||
alpha_notify_foreach,
|
alpha_notify_foreach,
|
||||||
@ -163,10 +163,10 @@ clutter_behaviour_rotate_set_property (GObject *gobject,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_ANGLE_START:
|
case PROP_ANGLE_START:
|
||||||
priv->angle_start = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
priv->angle_start = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
case PROP_ANGLE_END:
|
case PROP_ANGLE_END:
|
||||||
priv->angle_end = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
priv->angle_end = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
case PROP_AXIS:
|
case PROP_AXIS:
|
||||||
priv->axis = g_value_get_enum (value);
|
priv->axis = g_value_get_enum (value);
|
||||||
@ -211,10 +211,10 @@ clutter_behaviour_rotate_get_property (GObject *gobject,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_ANGLE_START:
|
case PROP_ANGLE_START:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->angle_start));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->angle_start));
|
||||||
break;
|
break;
|
||||||
case PROP_ANGLE_END:
|
case PROP_ANGLE_END:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_DOUBLE (priv->angle_end));
|
g_value_set_double (value, CLUTTER_FIXED_TO_DOUBLE (priv->angle_end));
|
||||||
break;
|
break;
|
||||||
case PROP_AXIS:
|
case PROP_AXIS:
|
||||||
g_value_set_enum (value, priv->axis);
|
g_value_set_enum (value, priv->axis);
|
||||||
@ -367,8 +367,8 @@ clutter_behaviour_rotate_init (ClutterBehaviourRotate *rotate)
|
|||||||
|
|
||||||
rotate->priv = priv = CLUTTER_BEHAVIOUR_ROTATE_GET_PRIVATE (rotate);
|
rotate->priv = priv = CLUTTER_BEHAVIOUR_ROTATE_GET_PRIVATE (rotate);
|
||||||
|
|
||||||
priv->angle_start = COGL_FIXED_FROM_FLOAT (0.0);
|
priv->angle_start = CLUTTER_FLOAT_TO_FIXED (0.0);
|
||||||
priv->angle_end = COGL_FIXED_FROM_FLOAT (0.0);
|
priv->angle_end = CLUTTER_FLOAT_TO_FIXED (0.0);
|
||||||
priv->axis = CLUTTER_Z_AXIS;
|
priv->axis = CLUTTER_Z_AXIS;
|
||||||
priv->direction = CLUTTER_ROTATE_CW;
|
priv->direction = CLUTTER_ROTATE_CW;
|
||||||
priv->center_x = priv->center_y = priv->center_z = 0;
|
priv->center_x = priv->center_y = priv->center_z = 0;
|
||||||
@ -568,10 +568,10 @@ clutter_behaviour_rotate_get_bounds (ClutterBehaviourRotate *rotate,
|
|||||||
priv = rotate->priv;
|
priv = rotate->priv;
|
||||||
|
|
||||||
if (angle_start)
|
if (angle_start)
|
||||||
*angle_start = COGL_FIXED_TO_DOUBLE (priv->angle_start);
|
*angle_start = CLUTTER_FIXED_TO_DOUBLE (priv->angle_start);
|
||||||
|
|
||||||
if (angle_end)
|
if (angle_end)
|
||||||
*angle_end = COGL_FIXED_TO_DOUBLE (priv->angle_end);
|
*angle_end = CLUTTER_FIXED_TO_DOUBLE (priv->angle_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -593,8 +593,8 @@ clutter_behaviour_rotate_set_bounds (ClutterBehaviourRotate *rotate,
|
|||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ROTATE (rotate));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_ROTATE (rotate));
|
||||||
|
|
||||||
clutter_behaviour_rotate_set_boundsx (rotate,
|
clutter_behaviour_rotate_set_boundsx (rotate,
|
||||||
COGL_FIXED_FROM_FLOAT (angle_start),
|
CLUTTER_FLOAT_TO_FIXED (angle_start),
|
||||||
COGL_FIXED_FROM_FLOAT (angle_end));
|
CLUTTER_FLOAT_TO_FIXED (angle_end));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,14 +115,14 @@ clutter_behaviour_scale_alpha_notify (ClutterBehaviour *behave,
|
|||||||
{
|
{
|
||||||
ClutterFixed factor;
|
ClutterFixed factor;
|
||||||
|
|
||||||
factor = COGL_FIXED_FROM_INT (alpha_value) / CLUTTER_ALPHA_MAX_ALPHA;
|
factor = (float)(alpha_value) / CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
scale_x =
|
scale_x =
|
||||||
COGL_FIXED_FAST_MUL (factor, (priv->x_scale_end - priv->x_scale_start));
|
CLUTTER_FIXED_MUL (factor, (priv->x_scale_end - priv->x_scale_start));
|
||||||
scale_x += priv->x_scale_start;
|
scale_x += priv->x_scale_start;
|
||||||
|
|
||||||
scale_y =
|
scale_y =
|
||||||
COGL_FIXED_FAST_MUL (factor, (priv->y_scale_end - priv->y_scale_start));
|
CLUTTER_FIXED_MUL (factor, (priv->y_scale_end - priv->y_scale_start));
|
||||||
scale_y += priv->y_scale_start;
|
scale_y += priv->y_scale_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,16 +147,16 @@ clutter_behaviour_scale_set_property (GObject *gobject,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_X_SCALE_START:
|
case PROP_X_SCALE_START:
|
||||||
priv->x_scale_start = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
priv->x_scale_start = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
case PROP_X_SCALE_END:
|
case PROP_X_SCALE_END:
|
||||||
priv->x_scale_end = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
priv->x_scale_end = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
case PROP_Y_SCALE_START:
|
case PROP_Y_SCALE_START:
|
||||||
priv->y_scale_start = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
priv->y_scale_start = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
case PROP_Y_SCALE_END:
|
case PROP_Y_SCALE_END:
|
||||||
priv->y_scale_end = COGL_FIXED_FROM_FLOAT (g_value_get_double (value));
|
priv->y_scale_end = CLUTTER_FLOAT_TO_FIXED (g_value_get_double (value));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
@ -177,16 +177,16 @@ clutter_behaviour_scale_get_property (GObject *gobject,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_X_SCALE_START:
|
case PROP_X_SCALE_START:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_FLOAT (priv->x_scale_start));
|
g_value_set_double (value, CLUTTER_FIXED_TO_FLOAT (priv->x_scale_start));
|
||||||
break;
|
break;
|
||||||
case PROP_X_SCALE_END:
|
case PROP_X_SCALE_END:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_FLOAT (priv->x_scale_end));
|
g_value_set_double (value, CLUTTER_FIXED_TO_FLOAT (priv->x_scale_end));
|
||||||
break;
|
break;
|
||||||
case PROP_Y_SCALE_START:
|
case PROP_Y_SCALE_START:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_FLOAT (priv->y_scale_start));
|
g_value_set_double (value, CLUTTER_FIXED_TO_FLOAT (priv->y_scale_start));
|
||||||
break;
|
break;
|
||||||
case PROP_Y_SCALE_END:
|
case PROP_Y_SCALE_END:
|
||||||
g_value_set_double (value, COGL_FIXED_TO_FLOAT (priv->y_scale_end));
|
g_value_set_double (value, CLUTTER_FIXED_TO_FLOAT (priv->y_scale_end));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
|
||||||
@ -276,8 +276,8 @@ clutter_behaviour_scale_init (ClutterBehaviourScale *self)
|
|||||||
|
|
||||||
self->priv = priv = CLUTTER_BEHAVIOUR_SCALE_GET_PRIVATE (self);
|
self->priv = priv = CLUTTER_BEHAVIOUR_SCALE_GET_PRIVATE (self);
|
||||||
|
|
||||||
priv->x_scale_start = priv->x_scale_end = COGL_FIXED_1;
|
priv->x_scale_start = priv->x_scale_end = 1.0;
|
||||||
priv->y_scale_start = priv->y_scale_end = COGL_FIXED_1;
|
priv->y_scale_start = priv->y_scale_end = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -304,10 +304,10 @@ clutter_behaviour_scale_new (ClutterAlpha *alpha,
|
|||||||
g_return_val_if_fail (alpha == NULL || CLUTTER_IS_ALPHA (alpha), NULL);
|
g_return_val_if_fail (alpha == NULL || CLUTTER_IS_ALPHA (alpha), NULL);
|
||||||
|
|
||||||
return clutter_behaviour_scale_newx (alpha,
|
return clutter_behaviour_scale_newx (alpha,
|
||||||
COGL_FIXED_FROM_FLOAT (x_scale_start),
|
CLUTTER_FLOAT_TO_FIXED (x_scale_start),
|
||||||
COGL_FIXED_FROM_FLOAT (y_scale_start),
|
CLUTTER_FLOAT_TO_FIXED (y_scale_start),
|
||||||
COGL_FIXED_FROM_FLOAT (x_scale_end),
|
CLUTTER_FLOAT_TO_FIXED (x_scale_end),
|
||||||
COGL_FIXED_FROM_FLOAT (y_scale_end));
|
CLUTTER_FLOAT_TO_FIXED (y_scale_end));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -367,10 +367,10 @@ clutter_behaviour_scale_set_bounds (ClutterBehaviourScale *scale,
|
|||||||
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_SCALE (scale));
|
g_return_if_fail (CLUTTER_IS_BEHAVIOUR_SCALE (scale));
|
||||||
|
|
||||||
clutter_behaviour_scale_set_boundsx (scale,
|
clutter_behaviour_scale_set_boundsx (scale,
|
||||||
COGL_FIXED_FROM_FLOAT (x_scale_start),
|
CLUTTER_FLOAT_TO_FIXED (x_scale_start),
|
||||||
COGL_FIXED_FROM_FLOAT (y_scale_start),
|
CLUTTER_FLOAT_TO_FIXED (y_scale_start),
|
||||||
COGL_FIXED_FROM_FLOAT (x_scale_end),
|
CLUTTER_FLOAT_TO_FIXED (x_scale_end),
|
||||||
COGL_FIXED_FROM_FLOAT (y_scale_end));
|
CLUTTER_FLOAT_TO_FIXED (y_scale_end));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -403,16 +403,16 @@ clutter_behaviour_scale_get_bounds (ClutterBehaviourScale *scale,
|
|||||||
priv = scale->priv;
|
priv = scale->priv;
|
||||||
|
|
||||||
if (x_scale_start)
|
if (x_scale_start)
|
||||||
*x_scale_start = COGL_FIXED_TO_DOUBLE (priv->x_scale_start);
|
*x_scale_start = CLUTTER_FIXED_TO_DOUBLE (priv->x_scale_start);
|
||||||
|
|
||||||
if (x_scale_end)
|
if (x_scale_end)
|
||||||
*x_scale_end = COGL_FIXED_TO_DOUBLE (priv->x_scale_end);
|
*x_scale_end = CLUTTER_FIXED_TO_DOUBLE (priv->x_scale_end);
|
||||||
|
|
||||||
if (y_scale_start)
|
if (y_scale_start)
|
||||||
*y_scale_start = COGL_FIXED_TO_DOUBLE (priv->y_scale_start);
|
*y_scale_start = CLUTTER_FIXED_TO_DOUBLE (priv->y_scale_start);
|
||||||
|
|
||||||
if (y_scale_end)
|
if (y_scale_end)
|
||||||
*y_scale_end = COGL_FIXED_TO_DOUBLE (priv->y_scale_end);
|
*y_scale_end = CLUTTER_FIXED_TO_DOUBLE (priv->y_scale_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -196,20 +196,20 @@ clutter_clone_texture_paint (ClutterActor *self)
|
|||||||
tex_height = cogl_texture_get_height (cogl_texture);
|
tex_height = cogl_texture_get_height (cogl_texture);
|
||||||
|
|
||||||
if (priv->repeat_x && tex_width > 0)
|
if (priv->repeat_x && tex_width > 0)
|
||||||
t_w = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (x_2 - x_1),
|
t_w = CLUTTER_FIXED_DIV ((float)(x_2 - x_1),
|
||||||
COGL_FIXED_FROM_INT (tex_width));
|
(float)(tex_width));
|
||||||
else
|
else
|
||||||
t_w = COGL_FIXED_1;
|
t_w = 1.0;
|
||||||
if (priv->repeat_y && tex_height > 0)
|
if (priv->repeat_y && tex_height > 0)
|
||||||
t_h = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (y_2 - y_1),
|
t_h = CLUTTER_FIXED_DIV ((float)(y_2 - y_1),
|
||||||
COGL_FIXED_FROM_INT (tex_height));
|
(float)(tex_height));
|
||||||
else
|
else
|
||||||
t_h = COGL_FIXED_1;
|
t_h = 1.0;
|
||||||
|
|
||||||
/* Parent paint translated us into position */
|
/* Parent paint translated us into position */
|
||||||
cogl_texture_rectangle (cogl_texture, 0, 0,
|
cogl_texture_rectangle (cogl_texture, 0, 0,
|
||||||
COGL_FIXED_FROM_INT (x_2 - x_1),
|
(float)(x_2 - x_1),
|
||||||
COGL_FIXED_FROM_INT (y_2 - y_1),
|
(float)(y_2 - y_1),
|
||||||
0, 0, t_w, t_h);
|
0, 0, t_w, t_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,9 +154,9 @@ clutter_color_to_hlsx (const ClutterColor *src,
|
|||||||
|
|
||||||
g_return_if_fail (src != NULL);
|
g_return_if_fail (src != NULL);
|
||||||
|
|
||||||
red = COGL_FIXED_FROM_INT (src->red) / 255;
|
red = (float)(src->red) / 255;
|
||||||
green = COGL_FIXED_FROM_INT (src->green) / 255;
|
green = (float)(src->green) / 255;
|
||||||
blue = COGL_FIXED_FROM_INT (src->blue) / 255;
|
blue = (float)(src->blue) / 255;
|
||||||
|
|
||||||
if (red > green)
|
if (red > green)
|
||||||
{
|
{
|
||||||
@ -189,31 +189,31 @@ clutter_color_to_hlsx (const ClutterColor *src,
|
|||||||
|
|
||||||
if (max != min)
|
if (max != min)
|
||||||
{
|
{
|
||||||
if (l <= COGL_FIXED_0_5)
|
if (l <= 0.5)
|
||||||
s = COGL_FIXED_FAST_DIV ((max - min), (max + min));
|
s = CLUTTER_FIXED_DIV ((max - min), (max + min));
|
||||||
else
|
else
|
||||||
s = COGL_FIXED_FAST_DIV ((max - min),
|
s = CLUTTER_FIXED_DIV ((max - min),
|
||||||
(COGL_FIXED_FROM_INT (2) - max - min));
|
((float)(2) - max - min));
|
||||||
|
|
||||||
delta = max - min;
|
delta = max - min;
|
||||||
|
|
||||||
if (red == max)
|
if (red == max)
|
||||||
h = COGL_FIXED_FAST_DIV ((green - blue), delta);
|
h = CLUTTER_FIXED_DIV ((green - blue), delta);
|
||||||
else if (green == max)
|
else if (green == max)
|
||||||
{
|
{
|
||||||
h = COGL_FIXED_FROM_INT (2)
|
h = (float)(2)
|
||||||
+ COGL_FIXED_FAST_DIV ((blue - red), delta);
|
+ CLUTTER_FIXED_DIV ((blue - red), delta);
|
||||||
}
|
}
|
||||||
else if (blue == max)
|
else if (blue == max)
|
||||||
{
|
{
|
||||||
h = COGL_FIXED_FROM_INT (4)
|
h = (float)(4)
|
||||||
+ COGL_FIXED_FAST_DIV ((red - green), delta);
|
+ CLUTTER_FIXED_DIV ((red - green), delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
h *= 60;
|
h *= 60;
|
||||||
|
|
||||||
if (h < 0)
|
if (h < 0)
|
||||||
h += COGL_FIXED_360;
|
h += 360.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hue)
|
if (hue)
|
||||||
@ -251,102 +251,102 @@ clutter_color_from_hlsx (ClutterColor *dest,
|
|||||||
l = luminance;
|
l = luminance;
|
||||||
s = saturation;
|
s = saturation;
|
||||||
|
|
||||||
if (l <= COGL_FIXED_0_5)
|
if (l <= 0.5)
|
||||||
m2 = COGL_FIXED_FAST_MUL (l, (COGL_FIXED_1 + s));
|
m2 = CLUTTER_FIXED_MUL (l, (1.0 + s));
|
||||||
else
|
else
|
||||||
m2 = l + s - COGL_FIXED_FAST_MUL (l, s);
|
m2 = l + s - CLUTTER_FIXED_MUL (l, s);
|
||||||
|
|
||||||
m1 = 2 * l - m2;
|
m1 = 2 * l - m2;
|
||||||
|
|
||||||
if (s == 0)
|
if (s == 0)
|
||||||
{
|
{
|
||||||
dest->red = (guint8) COGL_FIXED_TO_INT (l * 255);
|
dest->red = (guint8) (l * 255);
|
||||||
dest->green = (guint8) COGL_FIXED_TO_INT (l * 255);
|
dest->green = (guint8) (l * 255);
|
||||||
dest->blue = (guint8) COGL_FIXED_TO_INT (l * 255);
|
dest->blue = (guint8) (l * 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
h = hue + COGL_FIXED_120;
|
h = hue + 120.0;
|
||||||
|
|
||||||
while (h > COGL_FIXED_360)
|
while (h > 360.0)
|
||||||
h -= COGL_FIXED_360;
|
h -= 360.0;
|
||||||
|
|
||||||
while (h < 0)
|
while (h < 0)
|
||||||
h += COGL_FIXED_360;
|
h += 360.0;
|
||||||
|
|
||||||
if (h < COGL_FIXED_60)
|
if (h < 60.0)
|
||||||
{
|
{
|
||||||
CoglFixed tmp;
|
float tmp;
|
||||||
|
|
||||||
tmp = (m1 + COGL_FIXED_FAST_MUL ((m2 - m1), h) / 60);
|
tmp = (m1 + CLUTTER_FIXED_MUL ((m2 - m1), h) / 60);
|
||||||
dest->red = (guint8) COGL_FIXED_TO_INT (tmp * 255);
|
dest->red = (guint8) (tmp * 255);
|
||||||
}
|
}
|
||||||
else if (h < COGL_FIXED_180)
|
else if (h < 180.0)
|
||||||
dest->red = (guint8) COGL_FIXED_TO_INT (m2 * 255);
|
dest->red = (guint8) (m2 * 255);
|
||||||
else if (h < COGL_FIXED_240)
|
else if (h < 240.0)
|
||||||
{
|
{
|
||||||
CoglFixed tmp;
|
float tmp;
|
||||||
|
|
||||||
tmp = (m1 + COGL_FIXED_FAST_MUL ((m2 - m1), (COGL_FIXED_240 - h)))
|
tmp = (m1 + CLUTTER_FIXED_MUL ((m2 - m1), (240.0 - h)))
|
||||||
/ 60;
|
/ 60;
|
||||||
dest->red = (guint8) COGL_FIXED_TO_INT (tmp * 255);
|
dest->red = (guint8) (tmp * 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dest->red = (guint8) COGL_FIXED_TO_INT (m1 * 255);
|
dest->red = (guint8) (m1 * 255);
|
||||||
|
|
||||||
h = hue;
|
h = hue;
|
||||||
while (h > COGL_FIXED_360)
|
while (h > 360.0)
|
||||||
h -= COGL_FIXED_360;
|
h -= 360.0;
|
||||||
while (h < 0)
|
while (h < 0)
|
||||||
h += COGL_FIXED_360;
|
h += 360.0;
|
||||||
|
|
||||||
if (h < COGL_FIXED_60)
|
if (h < 60.0)
|
||||||
{
|
{
|
||||||
CoglFixed tmp;
|
float tmp;
|
||||||
|
|
||||||
tmp = (m1 + COGL_FIXED_FAST_MUL ((m2 - m1), h) / 60);
|
tmp = (m1 + CLUTTER_FIXED_MUL ((m2 - m1), h) / 60);
|
||||||
dest->green = (guint8) COGL_FIXED_TO_INT (tmp * 255);
|
dest->green = (guint8) (tmp * 255);
|
||||||
}
|
}
|
||||||
else if (h < COGL_FIXED_180)
|
else if (h < 180.0)
|
||||||
dest->green = (guint8) COGL_FIXED_TO_INT (m2 * 255);
|
dest->green = (guint8) (m2 * 255);
|
||||||
else if (h < COGL_FIXED_240)
|
else if (h < 240.0)
|
||||||
{
|
{
|
||||||
CoglFixed tmp;
|
float tmp;
|
||||||
|
|
||||||
tmp = (m1 + COGL_FIXED_FAST_MUL ((m2 - m1) , (COGL_FIXED_240 - h)))
|
tmp = (m1 + CLUTTER_FIXED_MUL ((m2 - m1) , (240.0 - h)))
|
||||||
/ 60;
|
/ 60;
|
||||||
dest->green = (guint8) COGL_FIXED_TO_INT (tmp * 255);
|
dest->green = (guint8) (tmp * 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dest->green = (guint8) COGL_FIXED_TO_INT (m1 * 255);
|
dest->green = (guint8) (m1 * 255);
|
||||||
|
|
||||||
h = hue - COGL_FIXED_120;
|
h = hue - 120.0;
|
||||||
|
|
||||||
while (h > COGL_FIXED_360)
|
while (h > 360.0)
|
||||||
h -= COGL_FIXED_360;
|
h -= 360.0;
|
||||||
|
|
||||||
while (h < 0)
|
while (h < 0)
|
||||||
h += COGL_FIXED_360;
|
h += 360.0;
|
||||||
|
|
||||||
if (h < COGL_FIXED_60)
|
if (h < 60.0)
|
||||||
{
|
{
|
||||||
CoglFixed tmp;
|
float tmp;
|
||||||
|
|
||||||
tmp = (m1 + COGL_FIXED_FAST_MUL ((m2 - m1), h) / 60);
|
tmp = (m1 + CLUTTER_FIXED_MUL ((m2 - m1), h) / 60);
|
||||||
dest->blue = (guint8) COGL_FIXED_TO_INT (tmp * 255);
|
dest->blue = (guint8) (tmp * 255);
|
||||||
}
|
}
|
||||||
else if (h < COGL_FIXED_180)
|
else if (h < 180.0)
|
||||||
dest->blue = (guint8) COGL_FIXED_TO_INT (m2 * 255);
|
dest->blue = (guint8) (m2 * 255);
|
||||||
else if (h < COGL_FIXED_240)
|
else if (h < 240.0)
|
||||||
{
|
{
|
||||||
CoglFixed tmp;
|
float tmp;
|
||||||
|
|
||||||
tmp = (m1 + COGL_FIXED_FAST_MUL ((m2 - m1), (COGL_FIXED_240 - h)))
|
tmp = (m1 + CLUTTER_FIXED_MUL ((m2 - m1), (240.0 - h)))
|
||||||
/ 60;
|
/ 60;
|
||||||
dest->blue = (guint8) COGL_FIXED_TO_INT (tmp * 255);
|
dest->blue = (guint8) (tmp * 255);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dest->blue = (guint8) COGL_FIXED_TO_INT (m1 * 255);
|
dest->blue = (guint8) (m1 * 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,13 +371,13 @@ clutter_color_to_hls (const ClutterColor *src,
|
|||||||
clutter_color_to_hlsx (src, &h, &l, &s);
|
clutter_color_to_hlsx (src, &h, &l, &s);
|
||||||
|
|
||||||
if (hue)
|
if (hue)
|
||||||
*hue = (guint8) COGL_FIXED_TO_INT (h * 255) / 360;
|
*hue = (guint8) (h * 255) / 360;
|
||||||
|
|
||||||
if (luminance)
|
if (luminance)
|
||||||
*luminance = (guint8) COGL_FIXED_TO_INT (l * 255);
|
*luminance = (guint8) (l * 255);
|
||||||
|
|
||||||
if (saturation)
|
if (saturation)
|
||||||
*saturation = (guint8) COGL_FIXED_TO_INT (s * 255);
|
*saturation = (guint8) (s * 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -399,9 +399,9 @@ clutter_color_from_hls (ClutterColor *dest,
|
|||||||
{
|
{
|
||||||
ClutterFixed h, l, s;
|
ClutterFixed h, l, s;
|
||||||
|
|
||||||
h = COGL_FIXED_FROM_INT (hue * 360) / 255;
|
h = (float)(hue * 360) / 255;
|
||||||
l = COGL_FIXED_FROM_INT (luminance) / 255;
|
l = (float)(luminance) / 255;
|
||||||
s = COGL_FIXED_FROM_INT (saturation) / 255;
|
s = (float)(saturation) / 255;
|
||||||
|
|
||||||
clutter_color_from_hlsx (dest, h, l, s);
|
clutter_color_from_hlsx (dest, h, l, s);
|
||||||
}
|
}
|
||||||
@ -420,7 +420,7 @@ clutter_color_shade (const ClutterColor *src,
|
|||||||
ClutterColor *dest,
|
ClutterColor *dest,
|
||||||
gdouble shade)
|
gdouble shade)
|
||||||
{
|
{
|
||||||
clutter_color_shadex (src, dest, COGL_FIXED_FROM_FLOAT (shade));
|
clutter_color_shadex (src, dest, CLUTTER_FLOAT_TO_FIXED (shade));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -448,15 +448,15 @@ clutter_color_shadex (const ClutterColor *src,
|
|||||||
|
|
||||||
clutter_color_to_hlsx (src, &h, &l, &s);
|
clutter_color_to_hlsx (src, &h, &l, &s);
|
||||||
|
|
||||||
l = COGL_FIXED_FAST_MUL (l, shade);
|
l = CLUTTER_FIXED_MUL (l, shade);
|
||||||
if (l > COGL_FIXED_1)
|
if (l > 1.0)
|
||||||
l = COGL_FIXED_1;
|
l = 1.0;
|
||||||
else if (l < 0)
|
else if (l < 0)
|
||||||
l = 0;
|
l = 0;
|
||||||
|
|
||||||
s = COGL_FIXED_FAST_MUL (s, shade);
|
s = CLUTTER_FIXED_MUL (s, shade);
|
||||||
if (s > COGL_FIXED_1)
|
if (s > 1.0)
|
||||||
s = COGL_FIXED_1;
|
s = 1.0;
|
||||||
else if (s < 0)
|
else if (s < 0)
|
||||||
s = 0;
|
s = 0;
|
||||||
|
|
||||||
|
@ -130,42 +130,42 @@ static void
|
|||||||
clutter_value_transform_fixed_int (const GValue *src,
|
clutter_value_transform_fixed_int (const GValue *src,
|
||||||
GValue *dest)
|
GValue *dest)
|
||||||
{
|
{
|
||||||
dest->data[0].v_int = COGL_FIXED_TO_INT (src->data[0].v_int);
|
dest->data[0].v_int = (src->data[0].v_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_value_transform_fixed_double (const GValue *src,
|
clutter_value_transform_fixed_double (const GValue *src,
|
||||||
GValue *dest)
|
GValue *dest)
|
||||||
{
|
{
|
||||||
dest->data[0].v_double = COGL_FIXED_TO_DOUBLE (src->data[0].v_int);
|
dest->data[0].v_double = CLUTTER_FIXED_TO_DOUBLE (src->data[0].v_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_value_transform_fixed_float (const GValue *src,
|
clutter_value_transform_fixed_float (const GValue *src,
|
||||||
GValue *dest)
|
GValue *dest)
|
||||||
{
|
{
|
||||||
dest->data[0].v_float = COGL_FIXED_TO_FLOAT (src->data[0].v_int);
|
dest->data[0].v_float = CLUTTER_FIXED_TO_FLOAT (src->data[0].v_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_value_transform_int_fixed (const GValue *src,
|
clutter_value_transform_int_fixed (const GValue *src,
|
||||||
GValue *dest)
|
GValue *dest)
|
||||||
{
|
{
|
||||||
dest->data[0].v_int = COGL_FIXED_FROM_INT (src->data[0].v_int);
|
dest->data[0].v_int = (float)(src->data[0].v_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_value_transform_double_fixed (const GValue *src,
|
clutter_value_transform_double_fixed (const GValue *src,
|
||||||
GValue *dest)
|
GValue *dest)
|
||||||
{
|
{
|
||||||
dest->data[0].v_int = COGL_FIXED_FROM_FLOAT (src->data[0].v_double);
|
dest->data[0].v_int = CLUTTER_FLOAT_TO_FIXED (src->data[0].v_double);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_value_transform_float_fixed (const GValue *src,
|
clutter_value_transform_float_fixed (const GValue *src,
|
||||||
GValue *dest)
|
GValue *dest)
|
||||||
{
|
{
|
||||||
dest->data[0].v_int = COGL_FIXED_FROM_FLOAT (src->data[0].v_float);
|
dest->data[0].v_int = CLUTTER_FLOAT_TO_FIXED (src->data[0].v_float);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -268,7 +268,7 @@ param_fixed_validate (GParamSpec *pspec,
|
|||||||
GValue *value)
|
GValue *value)
|
||||||
{
|
{
|
||||||
ClutterParamSpecFixed *fspec = CLUTTER_PARAM_SPEC_FIXED (pspec);
|
ClutterParamSpecFixed *fspec = CLUTTER_PARAM_SPEC_FIXED (pspec);
|
||||||
gint oval = COGL_FIXED_TO_INT (value->data[0].v_int);
|
gint oval = (value->data[0].v_int);
|
||||||
gint min, max, val;
|
gint min, max, val;
|
||||||
|
|
||||||
g_assert (CLUTTER_IS_PARAM_SPEC_FIXED (pspec));
|
g_assert (CLUTTER_IS_PARAM_SPEC_FIXED (pspec));
|
||||||
@ -279,7 +279,7 @@ param_fixed_validate (GParamSpec *pspec,
|
|||||||
|
|
||||||
min = fspec->minimum;
|
min = fspec->minimum;
|
||||||
max = fspec->maximum;
|
max = fspec->maximum;
|
||||||
val = COGL_FIXED_TO_INT (value->data[0].v_int);
|
val = (value->data[0].v_int);
|
||||||
|
|
||||||
val = CLAMP (val, min, max);
|
val = CLAMP (val, min, max);
|
||||||
if (val != oval)
|
if (val != oval)
|
||||||
|
@ -39,7 +39,7 @@ G_BEGIN_DECLS
|
|||||||
*
|
*
|
||||||
* Fixed point number (16.16)
|
* Fixed point number (16.16)
|
||||||
*/
|
*/
|
||||||
typedef CoglFixed ClutterFixed;
|
typedef float ClutterFixed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterAngle:
|
* ClutterAngle:
|
||||||
@ -47,7 +47,7 @@ typedef CoglFixed ClutterFixed;
|
|||||||
* Integer representation of an angle such that 1024 corresponds to
|
* Integer representation of an angle such that 1024 corresponds to
|
||||||
* full circle (i.e., 2*Pi).
|
* full circle (i.e., 2*Pi).
|
||||||
*/
|
*/
|
||||||
typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
typedef float ClutterAngle; /* angle such that 1024 == 2*PI */
|
||||||
|
|
||||||
#define CLUTTER_ANGLE_FROM_DEG(x) (COGL_ANGLE_FROM_DEG (x))
|
#define CLUTTER_ANGLE_FROM_DEG(x) (COGL_ANGLE_FROM_DEG (x))
|
||||||
#define CLUTTER_ANGLE_FROM_DEGX(x) (COGL_ANGLE_FROM_DEGX (x))
|
#define CLUTTER_ANGLE_FROM_DEGX(x) (COGL_ANGLE_FROM_DEGX (x))
|
||||||
@ -70,14 +70,14 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* 1.0 represented as a fixed point value.
|
* 1.0 represented as a fixed point value.
|
||||||
*/
|
*/
|
||||||
#define CFX_ONE COGL_FIXED_1
|
#define CFX_ONE 1.0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CFX_HALF:
|
* CFX_HALF:
|
||||||
*
|
*
|
||||||
* 0.5 represented as a fixed point value.
|
* 0.5 represented as a fixed point value.
|
||||||
*/
|
*/
|
||||||
#define CFX_HALF COGL_FIXED_0_5
|
#define CFX_HALF 0.5
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CFX_MAX:
|
* CFX_MAX:
|
||||||
@ -98,7 +98,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Fixed point representation of Pi
|
* Fixed point representation of Pi
|
||||||
*/
|
*/
|
||||||
#define CFX_PI COGL_FIXED_PI
|
#define CFX_PI G_PI
|
||||||
/**
|
/**
|
||||||
* CFX_2PI:
|
* CFX_2PI:
|
||||||
*
|
*
|
||||||
@ -110,43 +110,43 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Fixed point representation of Pi/2
|
* Fixed point representation of Pi/2
|
||||||
*/
|
*/
|
||||||
#define CFX_PI_2 COGL_FIXED_PI_2
|
#define CFX_PI_2 G_PI_2
|
||||||
/**
|
/**
|
||||||
* CFX_PI_4:
|
* CFX_PI_4:
|
||||||
*
|
*
|
||||||
* Fixed point representation of Pi/4
|
* Fixed point representation of Pi/4
|
||||||
*/
|
*/
|
||||||
#define CFX_PI_4 COGL_FIXED_PI_4
|
#define CFX_PI_4 G_PI_4
|
||||||
/**
|
/**
|
||||||
* CFX_360:
|
* CFX_360:
|
||||||
*
|
*
|
||||||
* Fixed point representation of the number 360
|
* Fixed point representation of the number 360
|
||||||
*/
|
*/
|
||||||
#define CFX_360 COGL_FIXED_360
|
#define CFX_360 360.0
|
||||||
/**
|
/**
|
||||||
* CFX_240:
|
* CFX_240:
|
||||||
*
|
*
|
||||||
* Fixed point representation of the number 240
|
* Fixed point representation of the number 240
|
||||||
*/
|
*/
|
||||||
#define CFX_240 COGL_FIXED_240
|
#define CFX_240 240.0
|
||||||
/**
|
/**
|
||||||
* CFX_180:
|
* CFX_180:
|
||||||
*
|
*
|
||||||
* Fixed point representation of the number 180
|
* Fixed point representation of the number 180
|
||||||
*/
|
*/
|
||||||
#define CFX_180 COGL_FIXED_180
|
#define CFX_180 180.0
|
||||||
/**
|
/**
|
||||||
* CFX_120:
|
* CFX_120:
|
||||||
*
|
*
|
||||||
* Fixed point representation of the number 120
|
* Fixed point representation of the number 120
|
||||||
*/
|
*/
|
||||||
#define CFX_120 COGL_FIXED_120
|
#define CFX_120 120.0
|
||||||
/**
|
/**
|
||||||
* CFX_60:
|
* CFX_60:
|
||||||
*
|
*
|
||||||
* Fixed point representation of the number 60
|
* Fixed point representation of the number 60
|
||||||
*/
|
*/
|
||||||
#define CFX_60 COGL_FIXED_60
|
#define CFX_60 60.0
|
||||||
/**
|
/**
|
||||||
* CFX_RADIANS_TO_DEGREES:
|
* CFX_RADIANS_TO_DEGREES:
|
||||||
*
|
*
|
||||||
@ -158,7 +158,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Fixed point representation of the number 255
|
* Fixed point representation of the number 255
|
||||||
*/
|
*/
|
||||||
#define CFX_255 COGL_FIXED_255
|
#define CFX_255 255.0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_TO_FLOAT:
|
* CLUTTER_FIXED_TO_FLOAT:
|
||||||
@ -166,7 +166,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Convert a fixed point value to float.
|
* Convert a fixed point value to float.
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_TO_FLOAT(x) COGL_FIXED_TO_FLOAT ((x))
|
#define CLUTTER_FIXED_TO_FLOAT(x) ((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_TO_DOUBLE:
|
* CLUTTER_FIXED_TO_DOUBLE:
|
||||||
@ -174,7 +174,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Convert a fixed point value to double.
|
* Convert a fixed point value to double.
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_TO_DOUBLE(x) COGL_FIXED_TO_DOUBLE ((x))
|
#define CLUTTER_FIXED_TO_DOUBLE(x) (double)((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FLOAT_TO_FIXED:
|
* CLUTTER_FLOAT_TO_FIXED:
|
||||||
@ -182,7 +182,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Convert a float value to fixed.
|
* Convert a float value to fixed.
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FLOAT_TO_FIXED(x) COGL_FIXED_FROM_FLOAT ((x))
|
#define CLUTTER_FLOAT_TO_FIXED(x) ((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FLOAT_TO_INT:
|
* CLUTTER_FLOAT_TO_INT:
|
||||||
@ -206,7 +206,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Convert an integer value to fixed point.
|
* Convert an integer value to fixed point.
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_INT_TO_FIXED(x) COGL_FIXED_FROM_INT ((x))
|
#define CLUTTER_INT_TO_FIXED(x) (float)((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_TO_INT:
|
* CLUTTER_FIXED_TO_INT:
|
||||||
@ -216,7 +216,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Since: 0.6
|
* Since: 0.6
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_TO_INT(x) COGL_FIXED_TO_INT ((x))
|
#define CLUTTER_FIXED_TO_INT(x) ((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_FRACTION:
|
* CLUTTER_FIXED_FRACTION:
|
||||||
@ -232,7 +232,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Round down a fixed point value to an integer.
|
* Round down a fixed point value to an integer.
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_FLOOR(x) COGL_FIXED_FLOOR ((x))
|
#define CLUTTER_FIXED_FLOOR(x) floorf ((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_CEIL:
|
* CLUTTER_FIXED_CEIL:
|
||||||
@ -240,7 +240,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Round up a fixed point value to an integer.
|
* Round up a fixed point value to an integer.
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_CEIL(x) COGL_FIXED_CEIL ((x))
|
#define CLUTTER_FIXED_CEIL(x) ceilf ((x))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_MUL:
|
* CLUTTER_FIXED_MUL:
|
||||||
@ -249,7 +249,7 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Multiply two fixed point values
|
* Multiply two fixed point values
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_MUL(x,y) COGL_FIXED_MUL ((x), (y))
|
#define CLUTTER_FIXED_MUL(x,y) ((x) * (y))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_FIXED_DIV:
|
* CLUTTER_FIXED_DIV:
|
||||||
@ -258,18 +258,18 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*
|
*
|
||||||
* Divide two fixed point values
|
* Divide two fixed point values
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_FIXED_DIV(x,y) COGL_FIXED_DIV ((x), (y))
|
#define CLUTTER_FIXED_DIV(x,y) ((x) / (y))
|
||||||
|
|
||||||
#define clutter_qmulx(x,y) cogl_fixed_mul ((x), (y))
|
#define clutter_qmulx(x,y) ((x) * (y))
|
||||||
#define clutter_qdivx(x,y) cogl_fixed_div ((x), (y))
|
#define clutter_qdivx(x,y) ((x) / (y))
|
||||||
|
|
||||||
#define clutter_sinx(a) cogl_fixed_sin ((a))
|
#define clutter_sinx(a) sinf ((a))
|
||||||
#define clutter_sini(a) cogl_angle_sin ((a))
|
#define clutter_sini(a) sinf ((a * (G_PI/180.0)))
|
||||||
#define clutter_tani(a) cogl_angle_tan ((a))
|
#define clutter_tani(a) tanf ((a * (G_PI/180.0)))
|
||||||
#define clutter_atani(a) cogl_fixed_atan ((a))
|
#define clutter_atani(a) atanf ((a))
|
||||||
#define clutter_atan2i(x,y) cogl_fixed_atan2 ((x), (y))
|
#define clutter_atan2i(x,y) atan2f ((x), (y))
|
||||||
#define clutter_cosx(a) cogl_fixed_cos ((a))
|
#define clutter_cosx(a) cosf ((a))
|
||||||
#define clutter_cosi(a) cogl_angle_cos ((a))
|
#define clutter_cosi(a) cosf ((a * (G_PI/180.0)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_SQRTI_ARG_MAX
|
* CLUTTER_SQRTI_ARG_MAX
|
||||||
@ -300,12 +300,12 @@ typedef CoglAngle ClutterAngle; /* angle such that 1024 == 2*PI */
|
|||||||
*/
|
*/
|
||||||
#define CLUTTER_SQRTI_ARG_10_PERCENT COGL_SQRTI_ARG_10_PERCENT
|
#define CLUTTER_SQRTI_ARG_10_PERCENT COGL_SQRTI_ARG_10_PERCENT
|
||||||
|
|
||||||
#define clutter_sqrtx(x) cogl_fixed_sqrt ((x))
|
#define clutter_sqrtx(x) sqrtf ((x))
|
||||||
#define clutter_sqrti(x) cogl_sqrti ((x))
|
#define clutter_sqrti(x) cogl_sqrti ((x))
|
||||||
|
|
||||||
#define clutter_log2x(x) cogl_fixed_log2 ((x))
|
#define clutter_log2x(x) log2f ((x))
|
||||||
#define clutter_pow2x(x) cogl_fixed_pow2 ((x))
|
#define clutter_pow2x(x) pow2f ((x))
|
||||||
#define clutter_powx(x,y) cogl_fixed_pow ((x), (y))
|
#define clutter_powx(x,y) powf ((x), (y))
|
||||||
|
|
||||||
#define CLUTTER_TYPE_FIXED (clutter_fixed_get_type ())
|
#define CLUTTER_TYPE_FIXED (clutter_fixed_get_type ())
|
||||||
#define CLUTTER_TYPE_PARAM_FIXED (clutter_param_fixed_get_type ())
|
#define CLUTTER_TYPE_PARAM_FIXED (clutter_param_fixed_get_type ())
|
||||||
|
@ -280,7 +280,7 @@ clutter_interval_real_compute_value (ClutterInterval *interval,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case G_TYPE_BOOLEAN:
|
case G_TYPE_BOOLEAN:
|
||||||
if (COGL_FIXED_FROM_FLOAT (factor) > COGL_FIXED_0_5)
|
if (CLUTTER_FLOAT_TO_FIXED (factor) > 0.5)
|
||||||
g_value_set_boolean (value, TRUE);
|
g_value_set_boolean (value, TRUE);
|
||||||
else
|
else
|
||||||
g_value_set_boolean (value, FALSE);
|
g_value_set_boolean (value, FALSE);
|
||||||
|
@ -815,15 +815,15 @@ clutter_stage_init (ClutterStage *self)
|
|||||||
|
|
||||||
priv->color = default_stage_color;
|
priv->color = default_stage_color;
|
||||||
|
|
||||||
priv->perspective.fovy = COGL_FIXED_60; /* 60 Degrees */
|
priv->perspective.fovy = 60.0; /* 60 Degrees */
|
||||||
priv->perspective.aspect = COGL_FIXED_1;
|
priv->perspective.aspect = 1.0;
|
||||||
priv->perspective.z_near = COGL_FIXED_FROM_FLOAT (0.1);
|
priv->perspective.z_near = CLUTTER_FLOAT_TO_FIXED (0.1);
|
||||||
priv->perspective.z_far = COGL_FIXED_FROM_FLOAT (100.0);
|
priv->perspective.z_far = CLUTTER_FLOAT_TO_FIXED (100.0);
|
||||||
|
|
||||||
/* depth cueing */
|
/* depth cueing */
|
||||||
priv->fog.density = COGL_FIXED_FROM_FLOAT (0.1);
|
priv->fog.density = CLUTTER_FLOAT_TO_FIXED (0.1);
|
||||||
priv->fog.z_near = COGL_FIXED_FROM_FLOAT (1.0);
|
priv->fog.z_near = CLUTTER_FLOAT_TO_FIXED (1.0);
|
||||||
priv->fog.z_far = COGL_FIXED_FROM_FLOAT (2.0);
|
priv->fog.z_far = CLUTTER_FLOAT_TO_FIXED (2.0);
|
||||||
|
|
||||||
clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE);
|
clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE);
|
||||||
clutter_stage_set_key_focus (self, NULL);
|
clutter_stage_set_key_focus (self, NULL);
|
||||||
@ -979,10 +979,10 @@ clutter_stage_set_perspective (ClutterStage *stage,
|
|||||||
|
|
||||||
priv = stage->priv;
|
priv = stage->priv;
|
||||||
|
|
||||||
priv->perspective.fovy = COGL_FIXED_FROM_FLOAT (fovy);
|
priv->perspective.fovy = CLUTTER_FLOAT_TO_FIXED (fovy);
|
||||||
priv->perspective.aspect = COGL_FIXED_FROM_FLOAT (aspect);
|
priv->perspective.aspect = CLUTTER_FLOAT_TO_FIXED (aspect);
|
||||||
priv->perspective.z_near = COGL_FIXED_FROM_FLOAT (z_near);
|
priv->perspective.z_near = CLUTTER_FLOAT_TO_FIXED (z_near);
|
||||||
priv->perspective.z_far = COGL_FIXED_FROM_FLOAT (z_far);
|
priv->perspective.z_far = CLUTTER_FLOAT_TO_FIXED (z_far);
|
||||||
|
|
||||||
/* this will cause the viewport to be reset; see
|
/* this will cause the viewport to be reset; see
|
||||||
* clutter_maybe_setup_viewport() inside clutter-main.c
|
* clutter_maybe_setup_viewport() inside clutter-main.c
|
||||||
@ -1018,16 +1018,16 @@ clutter_stage_get_perspective (ClutterStage *stage,
|
|||||||
priv = stage->priv;
|
priv = stage->priv;
|
||||||
|
|
||||||
if (fovy)
|
if (fovy)
|
||||||
*fovy = COGL_FIXED_TO_FLOAT (priv->perspective.fovy);
|
*fovy = CLUTTER_FIXED_TO_FLOAT (priv->perspective.fovy);
|
||||||
|
|
||||||
if (aspect)
|
if (aspect)
|
||||||
*aspect = COGL_FIXED_TO_FLOAT (priv->perspective.aspect);
|
*aspect = CLUTTER_FIXED_TO_FLOAT (priv->perspective.aspect);
|
||||||
|
|
||||||
if (z_near)
|
if (z_near)
|
||||||
*z_near = COGL_FIXED_TO_FLOAT (priv->perspective.z_near);
|
*z_near = CLUTTER_FIXED_TO_FLOAT (priv->perspective.z_near);
|
||||||
|
|
||||||
if (z_far)
|
if (z_far)
|
||||||
*z_far = COGL_FIXED_TO_FLOAT (priv->perspective.z_far);
|
*z_far = CLUTTER_FIXED_TO_FLOAT (priv->perspective.z_far);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1627,11 +1627,11 @@ clutter_stage_get_fog (ClutterStage *stage,
|
|||||||
priv = stage->priv;
|
priv = stage->priv;
|
||||||
|
|
||||||
if (density)
|
if (density)
|
||||||
*density = COGL_FIXED_TO_FLOAT (priv->fog.density);
|
*density = CLUTTER_FIXED_TO_FLOAT (priv->fog.density);
|
||||||
if (z_near)
|
if (z_near)
|
||||||
*z_near = COGL_FIXED_TO_FLOAT (priv->fog.z_near);
|
*z_near = CLUTTER_FIXED_TO_FLOAT (priv->fog.z_near);
|
||||||
if (z_far)
|
if (z_far)
|
||||||
*z_far = COGL_FIXED_TO_FLOAT (priv->fog.z_far);
|
*z_far = CLUTTER_FIXED_TO_FLOAT (priv->fog.z_far);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1663,9 +1663,9 @@ clutter_stage_set_fog (ClutterStage *stage,
|
|||||||
|
|
||||||
priv = stage->priv;
|
priv = stage->priv;
|
||||||
|
|
||||||
priv->fog.density = COGL_FIXED_FROM_FLOAT (density);
|
priv->fog.density = CLUTTER_FLOAT_TO_FIXED (density);
|
||||||
priv->fog.z_near = COGL_FIXED_FROM_FLOAT (z_near);
|
priv->fog.z_near = CLUTTER_FLOAT_TO_FIXED (z_near);
|
||||||
priv->fog.z_far = COGL_FIXED_FROM_FLOAT (z_far);
|
priv->fog.z_far = CLUTTER_FLOAT_TO_FIXED (z_far);
|
||||||
|
|
||||||
if (priv->use_fog && CLUTTER_ACTOR_IS_VISIBLE (stage))
|
if (priv->use_fog && CLUTTER_ACTOR_IS_VISIBLE (stage))
|
||||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
|
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
|
||||||
@ -1761,7 +1761,7 @@ clutter_stage_get_resolutionx (ClutterStage *stage)
|
|||||||
|
|
||||||
res = clutter_backend_get_resolution (context->backend);
|
res = clutter_backend_get_resolution (context->backend);
|
||||||
|
|
||||||
return COGL_FIXED_FROM_FLOAT (res);
|
return CLUTTER_FLOAT_TO_FIXED (res);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** Perspective boxed type ******/
|
/*** Perspective boxed type ******/
|
||||||
|
@ -343,13 +343,13 @@ clutter_texture_get_preferred_width (ClutterActor *self,
|
|||||||
/* Set the natural width so as to preserve the aspect ratio */
|
/* Set the natural width so as to preserve the aspect ratio */
|
||||||
ClutterFixed ratio, height;
|
ClutterFixed ratio, height;
|
||||||
|
|
||||||
ratio = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (priv->width),
|
ratio = CLUTTER_FIXED_DIV ((float)(priv->width),
|
||||||
COGL_FIXED_FROM_INT (priv->height));
|
(float)(priv->height));
|
||||||
|
|
||||||
height = CLUTTER_UNITS_TO_FIXED (for_height);
|
height = CLUTTER_UNITS_TO_FIXED (for_height);
|
||||||
|
|
||||||
*natural_width_p =
|
*natural_width_p =
|
||||||
CLUTTER_UNITS_FROM_FIXED (COGL_FIXED_MUL (ratio, height));
|
CLUTTER_UNITS_FROM_FIXED (CLUTTER_FIXED_MUL (ratio, height));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -388,13 +388,13 @@ clutter_texture_get_preferred_height (ClutterActor *self,
|
|||||||
/* Set the natural height so as to preserve the aspect ratio */
|
/* Set the natural height so as to preserve the aspect ratio */
|
||||||
ClutterFixed ratio, width;
|
ClutterFixed ratio, width;
|
||||||
|
|
||||||
ratio = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (priv->height),
|
ratio = CLUTTER_FIXED_DIV ((float)(priv->height),
|
||||||
COGL_FIXED_FROM_INT (priv->width));
|
(float)(priv->width));
|
||||||
|
|
||||||
width = CLUTTER_UNITS_TO_FIXED (for_width);
|
width = CLUTTER_UNITS_TO_FIXED (for_width);
|
||||||
|
|
||||||
*natural_height_p =
|
*natural_height_p =
|
||||||
CLUTTER_UNITS_FROM_FIXED (COGL_FIXED_MUL (ratio, width));
|
CLUTTER_UNITS_FROM_FIXED (CLUTTER_FIXED_MUL (ratio, width));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -463,24 +463,24 @@ clutter_texture_set_fbo_projection (ClutterActor *self)
|
|||||||
/* Convert the coordinates back to [-1,1] range */
|
/* Convert the coordinates back to [-1,1] range */
|
||||||
cogl_get_viewport (viewport);
|
cogl_get_viewport (viewport);
|
||||||
|
|
||||||
tx_min = COGL_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (x_min), viewport[2])
|
tx_min = CLUTTER_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (x_min), viewport[2])
|
||||||
* 2 - COGL_FIXED_1;
|
* 2 - 1.0;
|
||||||
tx_max = COGL_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (x_max), viewport[2])
|
tx_max = CLUTTER_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (x_max), viewport[2])
|
||||||
* 2 - COGL_FIXED_1;
|
* 2 - 1.0;
|
||||||
ty_min = COGL_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (y_min), viewport[3])
|
ty_min = CLUTTER_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (y_min), viewport[3])
|
||||||
* 2 - COGL_FIXED_1;
|
* 2 - 1.0;
|
||||||
ty_max = COGL_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (y_max), viewport[3])
|
ty_max = CLUTTER_FIXED_DIV (CLUTTER_UNITS_TO_FIXED (y_max), viewport[3])
|
||||||
* 2 - COGL_FIXED_1;
|
* 2 - 1.0;
|
||||||
|
|
||||||
/* Set up a projection matrix so that the actor will be projected as
|
/* Set up a projection matrix so that the actor will be projected as
|
||||||
if it was drawn at its original location */
|
if it was drawn at its original location */
|
||||||
tan_angle = cogl_angle_tan (COGL_ANGLE_FROM_DEGX (perspective.fovy / 2));
|
tan_angle = tanf (COGL_ANGLE_FROM_DEGX (perspective.fovy / 2 * (G_PI/180.0)));
|
||||||
near_size = COGL_FIXED_MUL (perspective.z_near, tan_angle);
|
near_size = CLUTTER_FIXED_MUL (perspective.z_near, tan_angle);
|
||||||
|
|
||||||
cogl_frustum (COGL_FIXED_MUL (tx_min, near_size),
|
cogl_frustum (CLUTTER_FIXED_MUL (tx_min, near_size),
|
||||||
COGL_FIXED_MUL (tx_max, near_size),
|
CLUTTER_FIXED_MUL (tx_max, near_size),
|
||||||
COGL_FIXED_MUL (-ty_min, near_size),
|
CLUTTER_FIXED_MUL (-ty_min, near_size),
|
||||||
COGL_FIXED_MUL (-ty_max, near_size),
|
CLUTTER_FIXED_MUL (-ty_max, near_size),
|
||||||
perspective.z_near, perspective.z_far);
|
perspective.z_near, perspective.z_far);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -594,21 +594,21 @@ clutter_texture_paint (ClutterActor *self)
|
|||||||
clutter_actor_get_opacity (self));
|
clutter_actor_get_opacity (self));
|
||||||
|
|
||||||
if (priv->repeat_x && priv->width > 0)
|
if (priv->repeat_x && priv->width > 0)
|
||||||
t_w = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (x_2 - x_1),
|
t_w = CLUTTER_FIXED_DIV ((float)(x_2 - x_1),
|
||||||
COGL_FIXED_FROM_INT (priv->width));
|
(float)(priv->width));
|
||||||
else
|
else
|
||||||
t_w = COGL_FIXED_1;
|
t_w = 1.0;
|
||||||
|
|
||||||
if (priv->repeat_y && priv->height > 0)
|
if (priv->repeat_y && priv->height > 0)
|
||||||
t_h = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (y_2 - y_1),
|
t_h = CLUTTER_FIXED_DIV ((float)(y_2 - y_1),
|
||||||
COGL_FIXED_FROM_INT (priv->height));
|
(float)(priv->height));
|
||||||
else
|
else
|
||||||
t_h = COGL_FIXED_1;
|
t_h = 1.0;
|
||||||
|
|
||||||
/* Paint will have translated us */
|
/* Paint will have translated us */
|
||||||
cogl_texture_rectangle (priv->texture, 0, 0,
|
cogl_texture_rectangle (priv->texture, 0, 0,
|
||||||
COGL_FIXED_FROM_INT (x_2 - x_1),
|
(float)(x_2 - x_1),
|
||||||
COGL_FIXED_FROM_INT (y_2 - y_1),
|
(float)(y_2 - y_1),
|
||||||
0, 0, t_w, t_h);
|
0, 0, t_w, t_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1347,7 +1347,7 @@ clutter_timeline_get_progress (ClutterTimeline *timeline)
|
|||||||
{
|
{
|
||||||
g_return_val_if_fail (CLUTTER_IS_TIMELINE (timeline), 0.);
|
g_return_val_if_fail (CLUTTER_IS_TIMELINE (timeline), 0.);
|
||||||
|
|
||||||
return COGL_FIXED_TO_DOUBLE (clutter_timeline_get_progressx (timeline));
|
return CLUTTER_FIXED_TO_DOUBLE (clutter_timeline_get_progressx (timeline));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1370,11 +1370,11 @@ clutter_timeline_get_progressx (ClutterTimeline *timeline)
|
|||||||
|
|
||||||
priv = timeline->priv;
|
priv = timeline->priv;
|
||||||
|
|
||||||
progress = COGL_FIXED_DIV (COGL_FIXED_FROM_INT (priv->current_frame_num),
|
progress = CLUTTER_FIXED_DIV ((float)(priv->current_frame_num),
|
||||||
COGL_FIXED_FROM_INT (priv->n_frames));
|
(float)(priv->n_frames));
|
||||||
|
|
||||||
if (priv->direction == CLUTTER_TIMELINE_BACKWARD)
|
if (priv->direction == CLUTTER_TIMELINE_BACKWARD)
|
||||||
progress = COGL_FIXED_1 - progress;
|
progress = 1.0 - progress;
|
||||||
|
|
||||||
return progress;
|
return progress;
|
||||||
}
|
}
|
||||||
|
@ -50,11 +50,11 @@ typedef gint32 ClutterUnit;
|
|||||||
* decide to change this relationship in the future.
|
* decide to change this relationship in the future.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CLUTTER_UNITS_FROM_INT(x) (COGL_FIXED_FROM_INT ((x)))
|
#define CLUTTER_UNITS_FROM_INT(x) ((float)((x)))
|
||||||
#define CLUTTER_UNITS_TO_INT(x) (COGL_FIXED_TO_INT ((x)))
|
#define CLUTTER_UNITS_TO_INT(x) ( ((x)))
|
||||||
|
|
||||||
#define CLUTTER_UNITS_FROM_FLOAT(x) (COGL_FIXED_FROM_FLOAT ((x)))
|
#define CLUTTER_UNITS_FROM_FLOAT(x) ( ((x)))
|
||||||
#define CLUTTER_UNITS_TO_FLOAT(x) (COGL_FIXED_TO_FLOAT ((x)))
|
#define CLUTTER_UNITS_TO_FLOAT(x) ( ((x)))
|
||||||
|
|
||||||
#define CLUTTER_UNITS_FROM_FIXED(x) (x)
|
#define CLUTTER_UNITS_FROM_FIXED(x) (x)
|
||||||
#define CLUTTER_UNITS_TO_FIXED(x) (x)
|
#define CLUTTER_UNITS_TO_FIXED(x) (x)
|
||||||
|
@ -70,20 +70,20 @@ void cogl_color_set_from_4d (CoglColor *dest,
|
|||||||
/**
|
/**
|
||||||
* cogl_color_set_from_4x:
|
* cogl_color_set_from_4x:
|
||||||
* @dest: return location for a #CoglColor
|
* @dest: return location for a #CoglColor
|
||||||
* @red: value of the red channel, between 0 and %COGL_FIXED_1
|
* @red: value of the red channel, between 0 and %1.0
|
||||||
* @green: value of the green channel, between 0 and %COGL_FIXED_1
|
* @green: value of the green channel, between 0 and %1.0
|
||||||
* @blue: value of the blue channel, between 0 and %COGL_FIXED_1
|
* @blue: value of the blue channel, between 0 and %1.0
|
||||||
* @alpha: value of the alpha channel, between 0 and %COGL_FIXED_1
|
* @alpha: value of the alpha channel, between 0 and %1.0
|
||||||
*
|
*
|
||||||
* Sets the values of the passed channels into a #CoglColor
|
* Sets the values of the passed channels into a #CoglColor
|
||||||
*
|
*
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*/
|
*/
|
||||||
void cogl_color_set_from_4x (CoglColor *dest,
|
void cogl_color_set_from_4x (CoglColor *dest,
|
||||||
CoglFixed red,
|
float red,
|
||||||
CoglFixed green,
|
float green,
|
||||||
CoglFixed blue,
|
float blue,
|
||||||
CoglFixed alpha);
|
float alpha);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_color_get_red_byte:
|
* cogl_color_get_red_byte:
|
||||||
@ -194,52 +194,52 @@ float cogl_color_get_alpha_float (const CoglColor *color);
|
|||||||
* @color: a #CoglColor
|
* @color: a #CoglColor
|
||||||
*
|
*
|
||||||
* Retrieves the red channel of @color as a fixed point
|
* Retrieves the red channel of @color as a fixed point
|
||||||
* value between 0 and %COGL_FIXED_1.
|
* value between 0 and %1.0.
|
||||||
*
|
*
|
||||||
* Return value: the red channel of the passed color
|
* Return value: the red channel of the passed color
|
||||||
*
|
*
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*/
|
*/
|
||||||
CoglFixed cogl_color_get_red (const CoglColor *color);
|
float cogl_color_get_red (const CoglColor *color);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_color_get_green:
|
* cogl_color_get_green:
|
||||||
* @color: a #CoglColor
|
* @color: a #CoglColor
|
||||||
*
|
*
|
||||||
* Retrieves the green channel of @color as a fixed point
|
* Retrieves the green channel of @color as a fixed point
|
||||||
* value between 0 and %COGL_FIXED_1.
|
* value between 0 and %1.0.
|
||||||
*
|
*
|
||||||
* Return value: the green channel of the passed color
|
* Return value: the green channel of the passed color
|
||||||
*
|
*
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*/
|
*/
|
||||||
CoglFixed cogl_color_get_green (const CoglColor *color);
|
float cogl_color_get_green (const CoglColor *color);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_color_get_blue:
|
* cogl_color_get_blue:
|
||||||
* @color: a #CoglColor
|
* @color: a #CoglColor
|
||||||
*
|
*
|
||||||
* Retrieves the blue channel of @color as a fixed point
|
* Retrieves the blue channel of @color as a fixed point
|
||||||
* value between 0 and %COGL_FIXED_1.
|
* value between 0 and %1.0.
|
||||||
*
|
*
|
||||||
* Return value: the blue channel of the passed color
|
* Return value: the blue channel of the passed color
|
||||||
*
|
*
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*/
|
*/
|
||||||
CoglFixed cogl_color_get_blue (const CoglColor *color);
|
float cogl_color_get_blue (const CoglColor *color);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_color_get_alpha:
|
* cogl_color_get_alpha:
|
||||||
* @color: a #CoglColor
|
* @color: a #CoglColor
|
||||||
*
|
*
|
||||||
* Retrieves the alpha channel of @color as a fixed point
|
* Retrieves the alpha channel of @color as a fixed point
|
||||||
* value between 0 and %COGL_FIXED_1.
|
* value between 0 and %1.0.
|
||||||
*
|
*
|
||||||
* Return value: the alpha channel of the passed color
|
* Return value: the alpha channel of the passed color
|
||||||
*
|
*
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*/
|
*/
|
||||||
CoglFixed cogl_color_get_alpha (const CoglColor *color);
|
float cogl_color_get_alpha (const CoglColor *color);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_set_source_color:
|
* cogl_set_source_color:
|
||||||
@ -277,24 +277,24 @@ void cogl_set_source_color4ub (guint8 red,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_set_source_color4x:
|
* cogl_set_source_color4x:
|
||||||
* @red: value of the red channel, between 0 and %COGL_FIXED_1
|
* @red: value of the red channel, between 0 and %1.0
|
||||||
* @green: value of the green channel, between 0 and %COGL_FIXED_1
|
* @green: value of the green channel, between 0 and %1.0
|
||||||
* @blue: value of the blue channel, between 0 and %COGL_FIXED_1
|
* @blue: value of the blue channel, between 0 and %1.0
|
||||||
* @alpha: value of the alpha channel, between 0 and %COGL_FIXED_1
|
* @alpha: value of the alpha channel, between 0 and %1.0
|
||||||
*
|
*
|
||||||
* Sets the source color using normalized values for each component.
|
* Sets the source color using normalized values for each component.
|
||||||
* This color will be used for any subsequent drawing operation.
|
* This color will be used for any subsequent drawing operation.
|
||||||
*
|
*
|
||||||
* The value for each component is a fixed point number in the range
|
* The value for each component is a fixed point number in the range
|
||||||
* between 0 and %COGL_FIXED_1. If the values passed in are outside that
|
* between 0 and %1.0. If the values passed in are outside that
|
||||||
* range, they will be clamped.
|
* range, they will be clamped.
|
||||||
*
|
*
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*/
|
*/
|
||||||
void cogl_set_source_color4x (CoglFixed red,
|
void cogl_set_source_color4x (float red,
|
||||||
CoglFixed green,
|
float green,
|
||||||
CoglFixed blue,
|
float blue,
|
||||||
CoglFixed alpha);
|
float alpha);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -74,10 +74,10 @@ void cogl_rectangle (gint x,
|
|||||||
*
|
*
|
||||||
* A fixed-point version of cogl_fast_fill_rectangle.
|
* A fixed-point version of cogl_fast_fill_rectangle.
|
||||||
**/
|
**/
|
||||||
void cogl_rectanglex (CoglFixed x,
|
void cogl_rectanglex (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height);
|
float height);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_fill:
|
* cogl_path_fill:
|
||||||
@ -136,8 +136,8 @@ void cogl_path_new (void);
|
|||||||
* Moves the pen to the given location. If there is an existing path
|
* Moves the pen to the given location. If there is an existing path
|
||||||
* this will start a new disjoint subpath.
|
* this will start a new disjoint subpath.
|
||||||
**/
|
**/
|
||||||
void cogl_path_move_to (CoglFixed x,
|
void cogl_path_move_to (float x,
|
||||||
CoglFixed y);
|
float y);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -149,8 +149,8 @@ void cogl_path_move_to (CoglFixed x,
|
|||||||
* location. If there is an existing path this will start a new
|
* location. If there is an existing path this will start a new
|
||||||
* disjoint subpath.
|
* disjoint subpath.
|
||||||
**/
|
**/
|
||||||
void cogl_path_rel_move_to (CoglFixed x,
|
void cogl_path_rel_move_to (float x,
|
||||||
CoglFixed y);
|
float y);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_line_to:
|
* cogl_path_line_to:
|
||||||
@ -160,8 +160,8 @@ void cogl_path_rel_move_to (CoglFixed x,
|
|||||||
* Adds a straight line segment to the current path that ends at the
|
* Adds a straight line segment to the current path that ends at the
|
||||||
* given coordinates.
|
* given coordinates.
|
||||||
**/
|
**/
|
||||||
void cogl_path_line_to (CoglFixed x,
|
void cogl_path_line_to (float x,
|
||||||
CoglFixed y);
|
float y);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_rel_line_to:
|
* cogl_path_rel_line_to:
|
||||||
@ -171,8 +171,8 @@ void cogl_path_line_to (CoglFixed x,
|
|||||||
* Adds a straight line segment to the current path that ends at the
|
* Adds a straight line segment to the current path that ends at the
|
||||||
* given coordinates relative to the current pen location.
|
* given coordinates relative to the current pen location.
|
||||||
**/
|
**/
|
||||||
void cogl_path_rel_line_to (CoglFixed x,
|
void cogl_path_rel_line_to (float x,
|
||||||
CoglFixed y);
|
float y);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -189,12 +189,12 @@ void cogl_path_rel_line_to (CoglFixed x,
|
|||||||
* of the arc. If you perform a move_to to the arcs start just before
|
* of the arc. If you perform a move_to to the arcs start just before
|
||||||
* drawing it you create a free standing arc.
|
* drawing it you create a free standing arc.
|
||||||
**/
|
**/
|
||||||
void cogl_path_arc (CoglFixed center_x,
|
void cogl_path_arc (float center_x,
|
||||||
CoglFixed center_y,
|
float center_y,
|
||||||
CoglFixed radius_x,
|
float radius_x,
|
||||||
CoglFixed radius_y,
|
float radius_y,
|
||||||
CoglAngle angle_1,
|
float angle_1,
|
||||||
CoglAngle angle_2);
|
float angle_2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -211,12 +211,12 @@ void cogl_path_arc (CoglFixed center_x,
|
|||||||
* second, third and fourth control points and using current pen location
|
* second, third and fourth control points and using current pen location
|
||||||
* as the first control point.
|
* as the first control point.
|
||||||
**/
|
**/
|
||||||
void cogl_path_curve_to (CoglFixed x1,
|
void cogl_path_curve_to (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed x3,
|
float x3,
|
||||||
CoglFixed y3);
|
float y3);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_rel_curve_to:
|
* cogl_path_rel_curve_to:
|
||||||
@ -232,12 +232,12 @@ void cogl_path_curve_to (CoglFixed x1,
|
|||||||
* as the first control point. The given coordinates are relative to the
|
* as the first control point. The given coordinates are relative to the
|
||||||
* current pen location.
|
* current pen location.
|
||||||
*/
|
*/
|
||||||
void cogl_path_rel_curve_to (CoglFixed x1,
|
void cogl_path_rel_curve_to (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed x3,
|
float x3,
|
||||||
CoglFixed y3);
|
float y3);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_close:
|
* cogl_path_close:
|
||||||
@ -258,10 +258,10 @@ void cogl_path_close (void);
|
|||||||
* coordinates. If there is an existing path this will start a new
|
* coordinates. If there is an existing path this will start a new
|
||||||
* disjoint sub-path.
|
* disjoint sub-path.
|
||||||
**/
|
**/
|
||||||
void cogl_path_line (CoglFixed x1,
|
void cogl_path_line (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2);
|
float y2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_polyline:
|
* cogl_path_polyline:
|
||||||
@ -281,7 +281,7 @@ void cogl_path_line (CoglFixed x1,
|
|||||||
* fashion for the rest of the vertices. (num_points - 1) segments will
|
* fashion for the rest of the vertices. (num_points - 1) segments will
|
||||||
* be constructed.
|
* be constructed.
|
||||||
**/
|
**/
|
||||||
void cogl_path_polyline (CoglFixed *coords,
|
void cogl_path_polyline (float *coords,
|
||||||
gint num_points);
|
gint num_points);
|
||||||
|
|
||||||
|
|
||||||
@ -299,7 +299,7 @@ void cogl_path_polyline (CoglFixed *coords,
|
|||||||
* represents the Y coordinate of the first vertex, continuing in the same
|
* represents the Y coordinate of the first vertex, continuing in the same
|
||||||
* fashion for the rest of the vertices.
|
* fashion for the rest of the vertices.
|
||||||
**/
|
**/
|
||||||
void cogl_path_polygon (CoglFixed *coords,
|
void cogl_path_polygon (float *coords,
|
||||||
gint num_points);
|
gint num_points);
|
||||||
|
|
||||||
|
|
||||||
@ -313,10 +313,10 @@ void cogl_path_polygon (CoglFixed *coords,
|
|||||||
* Constructs a rectangular shape at the given coordinates. If there
|
* Constructs a rectangular shape at the given coordinates. If there
|
||||||
* is an existing path this will start a new disjoint sub-path.
|
* is an existing path this will start a new disjoint sub-path.
|
||||||
**/
|
**/
|
||||||
void cogl_path_rectangle (CoglFixed x,
|
void cogl_path_rectangle (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height);
|
float height);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_ellipse:
|
* cogl_path_ellipse:
|
||||||
@ -328,10 +328,10 @@ void cogl_path_rectangle (CoglFixed x,
|
|||||||
* Constructs an ellipse shape. If there is an existing path this will
|
* Constructs an ellipse shape. If there is an existing path this will
|
||||||
* start a new disjoint sub-path.
|
* start a new disjoint sub-path.
|
||||||
**/
|
**/
|
||||||
void cogl_path_ellipse (CoglFixed center_x,
|
void cogl_path_ellipse (float center_x,
|
||||||
CoglFixed center_y,
|
float center_y,
|
||||||
CoglFixed radius_x,
|
float radius_x,
|
||||||
CoglFixed radius_y);
|
float radius_y);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_path_round_rectangle:
|
* cogl_path_round_rectangle:
|
||||||
@ -346,12 +346,12 @@ void cogl_path_ellipse (CoglFixed center_x,
|
|||||||
* Constructs a rectangular shape with rounded corners. If there is an
|
* Constructs a rectangular shape with rounded corners. If there is an
|
||||||
* existing path this will start a new disjoint sub-path.
|
* existing path this will start a new disjoint sub-path.
|
||||||
**/
|
**/
|
||||||
void cogl_path_round_rectangle (CoglFixed x,
|
void cogl_path_round_rectangle (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height,
|
float height,
|
||||||
CoglFixed radius,
|
float radius,
|
||||||
CoglAngle arc_step);
|
float arc_step);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -368,14 +368,14 @@ void cogl_texture_unref (CoglHandle handle);
|
|||||||
* texture pass in @tx1=0.0 @ty1=0.0 @tx2=1.0 @ty2=1.0.
|
* texture pass in @tx1=0.0 @ty1=0.0 @tx2=1.0 @ty2=1.0.
|
||||||
*/
|
*/
|
||||||
void cogl_texture_rectangle (CoglHandle handle,
|
void cogl_texture_rectangle (CoglHandle handle,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2);
|
float ty2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_texture_polygon:
|
* cogl_texture_polygon:
|
||||||
@ -455,7 +455,7 @@ void cogl_bitmap_free (CoglBitmap *bmp);
|
|||||||
* significant performance boost to use this function rather than
|
* significant performance boost to use this function rather than
|
||||||
* calling cogl_texture_rectangle() separately for each rectangle.
|
* calling cogl_texture_rectangle() separately for each rectangle.
|
||||||
*
|
*
|
||||||
* @verts should point to an array of #CoglFixed<!-- -->s with
|
* @verts should point to an array of #float<!-- -->s with
|
||||||
* @n_rects * 8 elements. Each group of 8 values corresponds to the
|
* @n_rects * 8 elements. Each group of 8 values corresponds to the
|
||||||
* parameters x1, y1, x2, y2, tx1, ty1, tx2 and ty2 and have the same
|
* parameters x1, y1, x2, y2, tx1, ty1, tx2 and ty2 and have the same
|
||||||
* meaning as in cogl_texture_rectangle().
|
* meaning as in cogl_texture_rectangle().
|
||||||
@ -464,7 +464,7 @@ void cogl_bitmap_free (CoglBitmap *bmp);
|
|||||||
*/
|
*/
|
||||||
void cogl_texture_multiple_rectangles
|
void cogl_texture_multiple_rectangles
|
||||||
(CoglHandle handle,
|
(CoglHandle handle,
|
||||||
const CoglFixed *verts,
|
const float *verts,
|
||||||
guint n_rects);
|
guint n_rects);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
@ -264,8 +264,8 @@ struct _CoglColor
|
|||||||
*/
|
*/
|
||||||
struct _CoglTextureVertex
|
struct _CoglTextureVertex
|
||||||
{
|
{
|
||||||
CoglFixed x, y, z;
|
float x, y, z;
|
||||||
CoglFixed tx, ty;
|
float tx, ty;
|
||||||
CoglColor color;
|
CoglColor color;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -143,10 +143,10 @@ void cogl_get_bitmasks (gint *red,
|
|||||||
* Replaces the current projection matrix with a perspective matrix
|
* Replaces the current projection matrix with a perspective matrix
|
||||||
* based on the provided values.
|
* based on the provided values.
|
||||||
*/
|
*/
|
||||||
void cogl_perspective (CoglFixed fovy,
|
void cogl_perspective (float fovy,
|
||||||
CoglFixed aspect,
|
float aspect,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far);
|
float z_far);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_frustum:
|
* cogl_frustum:
|
||||||
@ -162,12 +162,12 @@ void cogl_perspective (CoglFixed fovy,
|
|||||||
*
|
*
|
||||||
* Since: 0.8.2
|
* Since: 0.8.2
|
||||||
*/
|
*/
|
||||||
void cogl_frustum (CoglFixed left,
|
void cogl_frustum (float left,
|
||||||
CoglFixed right,
|
float right,
|
||||||
CoglFixed bottom,
|
float bottom,
|
||||||
CoglFixed top,
|
float top,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far);
|
float z_far);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_setup_viewport:
|
* cogl_setup_viewport:
|
||||||
@ -187,10 +187,10 @@ void cogl_frustum (CoglFixed left,
|
|||||||
*/
|
*/
|
||||||
void cogl_setup_viewport (guint width,
|
void cogl_setup_viewport (guint width,
|
||||||
guint height,
|
guint height,
|
||||||
CoglFixed fovy,
|
float fovy,
|
||||||
CoglFixed aspect,
|
float aspect,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far);
|
float z_far);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_viewport:
|
* cogl_viewport:
|
||||||
@ -227,8 +227,8 @@ void cogl_pop_matrix (void);
|
|||||||
* Multiplies the current model-view matrix by one that scales the x
|
* Multiplies the current model-view matrix by one that scales the x
|
||||||
* and y axes by the given values.
|
* and y axes by the given values.
|
||||||
*/
|
*/
|
||||||
void cogl_scale (CoglFixed x,
|
void cogl_scale (float x,
|
||||||
CoglFixed y);
|
float y);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_translatex:
|
* cogl_translatex:
|
||||||
@ -239,9 +239,9 @@ void cogl_scale (CoglFixed x,
|
|||||||
* Multiplies the current model-view matrix by one that translates the
|
* Multiplies the current model-view matrix by one that translates the
|
||||||
* model along all three axes according to the given values.
|
* model along all three axes according to the given values.
|
||||||
*/
|
*/
|
||||||
void cogl_translatex (CoglFixed x,
|
void cogl_translatex (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed z);
|
float z);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_translate:
|
* cogl_translate:
|
||||||
@ -270,7 +270,7 @@ void cogl_translate (gint x,
|
|||||||
* degrees about the vertex (0, 0, 1) causes a small counter-clockwise
|
* degrees about the vertex (0, 0, 1) causes a small counter-clockwise
|
||||||
* rotation.
|
* rotation.
|
||||||
*/
|
*/
|
||||||
void cogl_rotatex (CoglFixed angle,
|
void cogl_rotatex (float angle,
|
||||||
gint x,
|
gint x,
|
||||||
gint y,
|
gint y,
|
||||||
gint z);
|
gint z);
|
||||||
@ -293,32 +293,32 @@ void cogl_rotate (gint angle,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_get_modelview_matrix:
|
* cogl_get_modelview_matrix:
|
||||||
* @m: pointer to a 4x4 array of #CoglFixed<!-- -->s to receive the matrix
|
* @m: pointer to a 4x4 array of #float<!-- -->s to receive the matrix
|
||||||
*
|
*
|
||||||
* Stores the current model-view matrix in @m. The matrix is in
|
* Stores the current model-view matrix in @m. The matrix is in
|
||||||
* column-major order.
|
* column-major order.
|
||||||
*/
|
*/
|
||||||
void cogl_get_modelview_matrix (CoglFixed m[16]);
|
void cogl_get_modelview_matrix (float m[16]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_get_projection_matrix:
|
* cogl_get_projection_matrix:
|
||||||
* @m: pointer to a 4x4 array of #CoglFixed<!-- -->s to receive the matrix
|
* @m: pointer to a 4x4 array of #float<!-- -->s to receive the matrix
|
||||||
*
|
*
|
||||||
* Stores the current projection matrix in @m. The matrix is in
|
* Stores the current projection matrix in @m. The matrix is in
|
||||||
* column-major order.
|
* column-major order.
|
||||||
*/
|
*/
|
||||||
void cogl_get_projection_matrix (CoglFixed m[16]);
|
void cogl_get_projection_matrix (float m[16]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_get_viewport:
|
* cogl_get_viewport:
|
||||||
* @v: pointer to a 4 element array of #CoglFixed<!-- -->s to
|
* @v: pointer to a 4 element array of #float<!-- -->s to
|
||||||
* receive the viewport dimensions.
|
* receive the viewport dimensions.
|
||||||
*
|
*
|
||||||
* Stores the current viewport in @v. @v[0] and @v[1] get the x and y
|
* Stores the current viewport in @v. @v[0] and @v[1] get the x and y
|
||||||
* position of the viewport and @v[2] and @v[3] get the width and
|
* position of the viewport and @v[2] and @v[3] get the width and
|
||||||
* height.
|
* height.
|
||||||
*/
|
*/
|
||||||
void cogl_get_viewport (CoglFixed v[4]);
|
void cogl_get_viewport (float v[4]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_clip_set:
|
* cogl_clip_set:
|
||||||
@ -336,10 +336,10 @@ void cogl_get_viewport (CoglFixed v[4]);
|
|||||||
* The rectangle is intersected with the current clip region. To undo
|
* The rectangle is intersected with the current clip region. To undo
|
||||||
* the effect of this function, call cogl_clip_unset().
|
* the effect of this function, call cogl_clip_unset().
|
||||||
*/
|
*/
|
||||||
void cogl_clip_set (CoglFixed x_offset,
|
void cogl_clip_set (float x_offset,
|
||||||
CoglFixed y_offset,
|
float y_offset,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height);
|
float height);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_clip_set_from_path:
|
* cogl_clip_set_from_path:
|
||||||
@ -443,7 +443,7 @@ void cogl_enable_backface_culling (gboolean setting);
|
|||||||
* initial reference value is 1.0.
|
* initial reference value is 1.0.
|
||||||
*/
|
*/
|
||||||
void cogl_alpha_func (COGLenum func,
|
void cogl_alpha_func (COGLenum func,
|
||||||
CoglFixed ref);
|
float ref);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_fog_set:
|
* cogl_fog_set:
|
||||||
@ -460,9 +460,9 @@ void cogl_alpha_func (COGLenum func,
|
|||||||
* cogl_paint_init().
|
* cogl_paint_init().
|
||||||
*/
|
*/
|
||||||
void cogl_fog_set (const CoglColor *fog_color,
|
void cogl_fog_set (const CoglColor *fog_color,
|
||||||
CoglFixed density,
|
float density,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far);
|
float z_far);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_paint_init:
|
* cogl_paint_init:
|
||||||
|
@ -35,24 +35,24 @@
|
|||||||
|
|
||||||
/* These are defined in the particular backend (float in GL vs fixed
|
/* These are defined in the particular backend (float in GL vs fixed
|
||||||
in GL ES) */
|
in GL ES) */
|
||||||
void _cogl_set_clip_planes (CoglFixed x,
|
void _cogl_set_clip_planes (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height);
|
float height);
|
||||||
void _cogl_add_stencil_clip (CoglFixed x,
|
void _cogl_add_stencil_clip (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height,
|
float height,
|
||||||
gboolean first);
|
gboolean first);
|
||||||
void _cogl_add_path_to_stencil_buffer (CoglFixedVec2 nodes_min,
|
void _cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
|
||||||
CoglFixedVec2 nodes_max,
|
floatVec2 nodes_max,
|
||||||
guint path_size,
|
guint path_size,
|
||||||
CoglPathNode *path,
|
CoglPathNode *path,
|
||||||
gboolean merge);
|
gboolean merge);
|
||||||
void _cogl_enable_clip_planes (void);
|
void _cogl_enable_clip_planes (void);
|
||||||
void _cogl_disable_clip_planes (void);
|
void _cogl_disable_clip_planes (void);
|
||||||
void _cogl_disable_stencil_buffer (void);
|
void _cogl_disable_stencil_buffer (void);
|
||||||
void _cogl_set_matrix (const CoglFixed *matrix);
|
void _cogl_set_matrix (const float *matrix);
|
||||||
|
|
||||||
typedef struct _CoglClipStack CoglClipStack;
|
typedef struct _CoglClipStack CoglClipStack;
|
||||||
|
|
||||||
@ -75,13 +75,13 @@ struct _CoglClipStackEntryRect
|
|||||||
CoglClipStackEntryType type;
|
CoglClipStackEntryType type;
|
||||||
|
|
||||||
/* The rectangle for this clip */
|
/* The rectangle for this clip */
|
||||||
CoglFixed x_offset;
|
float x_offset;
|
||||||
CoglFixed y_offset;
|
float y_offset;
|
||||||
CoglFixed width;
|
float width;
|
||||||
CoglFixed height;
|
float height;
|
||||||
|
|
||||||
/* The matrix that was current when the clip was set */
|
/* The matrix that was current when the clip was set */
|
||||||
CoglFixed matrix[16];
|
float matrix[16];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _CoglClipStackEntryPath
|
struct _CoglClipStackEntryPath
|
||||||
@ -89,20 +89,20 @@ struct _CoglClipStackEntryPath
|
|||||||
CoglClipStackEntryType type;
|
CoglClipStackEntryType type;
|
||||||
|
|
||||||
/* The matrix that was current when the clip was set */
|
/* The matrix that was current when the clip was set */
|
||||||
CoglFixed matrix[16];
|
float matrix[16];
|
||||||
|
|
||||||
CoglFixedVec2 path_nodes_min;
|
floatVec2 path_nodes_min;
|
||||||
CoglFixedVec2 path_nodes_max;
|
floatVec2 path_nodes_max;
|
||||||
|
|
||||||
guint path_size;
|
guint path_size;
|
||||||
CoglPathNode path[1];
|
CoglPathNode path[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_clip_set (CoglFixed x_offset,
|
cogl_clip_set (float x_offset,
|
||||||
CoglFixed y_offset,
|
float y_offset,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
CoglClipStackEntryRect *entry;
|
CoglClipStackEntryRect *entry;
|
||||||
CoglClipStack *stack;
|
CoglClipStack *stack;
|
||||||
|
@ -59,17 +59,17 @@ cogl_color_set_from_4d (CoglColor *dest,
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_color_set_from_4x (CoglColor *dest,
|
cogl_color_set_from_4x (CoglColor *dest,
|
||||||
CoglFixed red,
|
float red,
|
||||||
CoglFixed green,
|
float green,
|
||||||
CoglFixed blue,
|
float blue,
|
||||||
CoglFixed alpha)
|
float alpha)
|
||||||
{
|
{
|
||||||
g_return_if_fail (dest != NULL);
|
g_return_if_fail (dest != NULL);
|
||||||
|
|
||||||
dest->red = COGL_FIXED_TO_INT (red * 255);
|
dest->red = (red * 255);
|
||||||
dest->green = COGL_FIXED_TO_INT (green * 255);
|
dest->green = (green * 255);
|
||||||
dest->blue = COGL_FIXED_TO_INT (blue * 255);
|
dest->blue = (blue * 255);
|
||||||
dest->alpha = COGL_FIXED_TO_INT (alpha * 255);
|
dest->alpha = (alpha * 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char
|
unsigned char
|
||||||
@ -84,10 +84,10 @@ cogl_color_get_red_float (const CoglColor *color)
|
|||||||
return (float) color->red / 255.0;
|
return (float) color->red / 255.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoglFixed
|
float
|
||||||
cogl_color_get_red (const CoglColor *color)
|
cogl_color_get_red (const CoglColor *color)
|
||||||
{
|
{
|
||||||
return COGL_FIXED_FROM_FLOAT ((float) color->red / 255.0);
|
return ((float) color->red / 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char
|
unsigned char
|
||||||
@ -102,10 +102,10 @@ cogl_color_get_green_float (const CoglColor *color)
|
|||||||
return (float) color->green / 255.0;
|
return (float) color->green / 255.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoglFixed
|
float
|
||||||
cogl_color_get_green (const CoglColor *color)
|
cogl_color_get_green (const CoglColor *color)
|
||||||
{
|
{
|
||||||
return COGL_FIXED_FROM_FLOAT ((float) color->green / 255.0);
|
return ((float) color->green / 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char
|
unsigned char
|
||||||
@ -120,10 +120,10 @@ cogl_color_get_blue_float (const CoglColor *color)
|
|||||||
return (float) color->blue / 255.0;
|
return (float) color->blue / 255.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoglFixed
|
float
|
||||||
cogl_color_get_blue (const CoglColor *color)
|
cogl_color_get_blue (const CoglColor *color)
|
||||||
{
|
{
|
||||||
return COGL_FIXED_FROM_FLOAT ((float) color->blue / 255.0);
|
return ((float) color->blue / 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char
|
unsigned char
|
||||||
@ -138,10 +138,10 @@ cogl_color_get_alpha_float (const CoglColor *color)
|
|||||||
return (float) color->alpha / 255.0;
|
return (float) color->alpha / 255.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CoglFixed
|
float
|
||||||
cogl_color_get_alpha (const CoglColor *color)
|
cogl_color_get_alpha (const CoglColor *color)
|
||||||
{
|
{
|
||||||
return COGL_FIXED_FROM_FLOAT ((float) color->alpha / 255.0);
|
return ((float) color->alpha / 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -157,10 +157,10 @@ cogl_set_source_color4ub (guint8 red,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_set_source_color4x (CoglFixed red,
|
cogl_set_source_color4x (float red,
|
||||||
CoglFixed green,
|
float green,
|
||||||
CoglFixed blue,
|
float blue,
|
||||||
CoglFixed alpha)
|
float alpha)
|
||||||
{
|
{
|
||||||
CoglColor c = { 0, };
|
CoglColor c = { 0, };
|
||||||
|
|
||||||
|
@ -38,18 +38,18 @@
|
|||||||
|
|
||||||
/* these are defined in the particular backend(float in gl vs fixed in gles)*/
|
/* these are defined in the particular backend(float in gl vs fixed in gles)*/
|
||||||
void _cogl_path_add_node (gboolean new_sub_path,
|
void _cogl_path_add_node (gboolean new_sub_path,
|
||||||
CoglFixed x,
|
float x,
|
||||||
CoglFixed y);
|
float y);
|
||||||
void _cogl_path_fill_nodes ();
|
void _cogl_path_fill_nodes ();
|
||||||
void _cogl_path_stroke_nodes ();
|
void _cogl_path_stroke_nodes ();
|
||||||
void _cogl_rectangle (gint x,
|
void _cogl_rectangle (gint x,
|
||||||
gint y,
|
gint y,
|
||||||
guint width,
|
guint width,
|
||||||
guint height);
|
guint height);
|
||||||
void _cogl_rectanglex (CoglFixed x,
|
void _cogl_rectanglex (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height);
|
float height);
|
||||||
void
|
void
|
||||||
cogl_rectangle (gint x,
|
cogl_rectangle (gint x,
|
||||||
gint y,
|
gint y,
|
||||||
@ -62,10 +62,10 @@ cogl_rectangle (gint x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_rectanglex (CoglFixed x,
|
cogl_rectanglex (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
cogl_clip_ensure ();
|
cogl_clip_ensure ();
|
||||||
|
|
||||||
@ -116,8 +116,8 @@ cogl_path_stroke_preserve (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_move_to (CoglFixed x,
|
cogl_path_move_to (float x,
|
||||||
CoglFixed y)
|
float y)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -132,8 +132,8 @@ cogl_path_move_to (CoglFixed x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_rel_move_to (CoglFixed x,
|
cogl_path_rel_move_to (float x,
|
||||||
CoglFixed y)
|
float y)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -142,8 +142,8 @@ cogl_path_rel_move_to (CoglFixed x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_line_to (CoglFixed x,
|
cogl_path_line_to (float x,
|
||||||
CoglFixed y)
|
float y)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -154,8 +154,8 @@ cogl_path_line_to (CoglFixed x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_rel_line_to (CoglFixed x,
|
cogl_path_rel_line_to (float x,
|
||||||
CoglFixed y)
|
float y)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -181,17 +181,17 @@ cogl_path_new (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_line (CoglFixed x1,
|
cogl_path_line (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2)
|
float y2)
|
||||||
{
|
{
|
||||||
cogl_path_move_to (x1, y1);
|
cogl_path_move_to (x1, y1);
|
||||||
cogl_path_line_to (x2, y2);
|
cogl_path_line_to (x2, y2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_polyline (CoglFixed *coords,
|
cogl_path_polyline (float *coords,
|
||||||
gint num_points)
|
gint num_points)
|
||||||
{
|
{
|
||||||
gint c = 0;
|
gint c = 0;
|
||||||
@ -203,7 +203,7 @@ cogl_path_polyline (CoglFixed *coords,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_polygon (CoglFixed *coords,
|
cogl_path_polygon (float *coords,
|
||||||
gint num_points)
|
gint num_points)
|
||||||
{
|
{
|
||||||
cogl_path_polyline (coords, num_points);
|
cogl_path_polyline (coords, num_points);
|
||||||
@ -211,10 +211,10 @@ cogl_path_polygon (CoglFixed *coords,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_rectangle (CoglFixed x,
|
cogl_path_rectangle (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
cogl_path_move_to (x, y);
|
cogl_path_move_to (x, y);
|
||||||
cogl_path_line_to (x + width, y);
|
cogl_path_line_to (x + width, y);
|
||||||
@ -224,20 +224,20 @@ cogl_path_rectangle (CoglFixed x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_path_arc (CoglFixed center_x,
|
_cogl_path_arc (float center_x,
|
||||||
CoglFixed center_y,
|
float center_y,
|
||||||
CoglFixed radius_x,
|
float radius_x,
|
||||||
CoglFixed radius_y,
|
float radius_y,
|
||||||
CoglAngle angle_1,
|
float angle_1,
|
||||||
CoglAngle angle_2,
|
float angle_2,
|
||||||
CoglAngle angle_step,
|
float angle_step,
|
||||||
guint move_first)
|
guint move_first)
|
||||||
{
|
{
|
||||||
CoglAngle a = 0x0;
|
float a = 0x0;
|
||||||
CoglFixed cosa = 0x0;
|
float cosa = 0x0;
|
||||||
CoglFixed sina = 0x0;
|
float sina = 0x0;
|
||||||
CoglFixed px = 0x0;
|
float px = 0x0;
|
||||||
CoglFixed py = 0x0;
|
float py = 0x0;
|
||||||
|
|
||||||
/* Fix invalid angles */
|
/* Fix invalid angles */
|
||||||
|
|
||||||
@ -252,11 +252,11 @@ _cogl_path_arc (CoglFixed center_x,
|
|||||||
a = angle_1;
|
a = angle_1;
|
||||||
while (a != angle_2)
|
while (a != angle_2)
|
||||||
{
|
{
|
||||||
cosa = cogl_angle_cos (a);
|
cosa = cosf (a * (G_PI/180.0));
|
||||||
sina = cogl_angle_sin (a);
|
sina = sinf (a * (G_PI/180.0));
|
||||||
|
|
||||||
px = center_x + COGL_FIXED_MUL (cosa, radius_x);
|
px = center_x + (cosa * radius_x);
|
||||||
py = center_y + COGL_FIXED_MUL (sina, radius_y);
|
py = center_y + (sina * radius_y);
|
||||||
|
|
||||||
if (a == angle_1 && move_first)
|
if (a == angle_1 && move_first)
|
||||||
cogl_path_move_to (px, py);
|
cogl_path_move_to (px, py);
|
||||||
@ -279,24 +279,24 @@ _cogl_path_arc (CoglFixed center_x,
|
|||||||
|
|
||||||
/* Make sure the final point is drawn */
|
/* Make sure the final point is drawn */
|
||||||
|
|
||||||
cosa = cogl_angle_cos (angle_2);
|
cosa = cosf (angle_2 * (G_PI/180.0));
|
||||||
sina = cogl_angle_sin (angle_2);
|
sina = sinf (angle_2 * (G_PI/180.0));
|
||||||
|
|
||||||
px = center_x + COGL_FIXED_MUL (cosa, radius_x);
|
px = center_x + (cosa * radius_x);
|
||||||
py = center_y + COGL_FIXED_MUL (sina, radius_y);
|
py = center_y + (sina * radius_y);
|
||||||
|
|
||||||
cogl_path_line_to (px, py);
|
cogl_path_line_to (px, py);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_arc (CoglFixed center_x,
|
cogl_path_arc (float center_x,
|
||||||
CoglFixed center_y,
|
float center_y,
|
||||||
CoglFixed radius_x,
|
float radius_x,
|
||||||
CoglFixed radius_y,
|
float radius_y,
|
||||||
CoglAngle angle_1,
|
float angle_1,
|
||||||
CoglAngle angle_2)
|
float angle_2)
|
||||||
{
|
{
|
||||||
CoglAngle angle_step = 10;
|
float angle_step = 10;
|
||||||
/* it is documented that a move to is needed to create a freestanding
|
/* it is documented that a move to is needed to create a freestanding
|
||||||
* arc
|
* arc
|
||||||
*/
|
*/
|
||||||
@ -308,13 +308,13 @@ cogl_path_arc (CoglFixed center_x,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_arc_rel (CoglFixed center_x,
|
cogl_path_arc_rel (float center_x,
|
||||||
CoglFixed center_y,
|
float center_y,
|
||||||
CoglFixed radius_x,
|
float radius_x,
|
||||||
CoglFixed radius_y,
|
float radius_y,
|
||||||
CoglAngle angle_1,
|
float angle_1,
|
||||||
CoglAngle angle_2,
|
float angle_2,
|
||||||
CoglAngle angle_step)
|
float angle_step)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -326,50 +326,50 @@ cogl_path_arc_rel (CoglFixed center_x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_ellipse (CoglFixed center_x,
|
cogl_path_ellipse (float center_x,
|
||||||
CoglFixed center_y,
|
float center_y,
|
||||||
CoglFixed radius_x,
|
float radius_x,
|
||||||
CoglFixed radius_y)
|
float radius_y)
|
||||||
{
|
{
|
||||||
CoglAngle angle_step = 10;
|
float angle_step = 10;
|
||||||
|
|
||||||
/* FIXME: if shows to be slow might be optimized
|
/* FIXME: if shows to be slow might be optimized
|
||||||
* by mirroring just a quarter of it */
|
* by mirroring just a quarter of it */
|
||||||
|
|
||||||
_cogl_path_arc (center_x, center_y,
|
_cogl_path_arc (center_x, center_y,
|
||||||
radius_x, radius_y,
|
radius_x, radius_y,
|
||||||
0, COGL_ANGLE_FROM_DEG (360),
|
0, 360,
|
||||||
angle_step, 1 /* move first */);
|
angle_step, 1 /* move first */);
|
||||||
|
|
||||||
cogl_path_close();
|
cogl_path_close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_round_rectangle (CoglFixed x,
|
cogl_path_round_rectangle (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height,
|
float height,
|
||||||
CoglFixed radius,
|
float radius,
|
||||||
CoglAngle arc_step)
|
float arc_step)
|
||||||
{
|
{
|
||||||
CoglFixed inner_width = width - (radius << 1);
|
float inner_width = width - (radius * 2);
|
||||||
CoglFixed inner_height = height - (radius << 1);
|
float inner_height = height - (radius * 2);
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
cogl_path_move_to (x, y + radius);
|
cogl_path_move_to (x, y + radius);
|
||||||
cogl_path_arc_rel (radius, 0,
|
cogl_path_arc_rel (radius, 0,
|
||||||
radius, radius,
|
radius, radius,
|
||||||
COGL_ANGLE_FROM_DEG (180),
|
180,
|
||||||
COGL_ANGLE_FROM_DEG (270),
|
270,
|
||||||
arc_step);
|
arc_step);
|
||||||
|
|
||||||
cogl_path_line_to (ctx->path_pen.x + inner_width,
|
cogl_path_line_to (ctx->path_pen.x + inner_width,
|
||||||
ctx->path_pen.y);
|
ctx->path_pen.y);
|
||||||
cogl_path_arc_rel (0, radius,
|
cogl_path_arc_rel (0, radius,
|
||||||
radius, radius,
|
radius, radius,
|
||||||
COGL_ANGLE_FROM_DEG (-90),
|
-90,
|
||||||
COGL_ANGLE_FROM_DEG (0),
|
0,
|
||||||
arc_step);
|
arc_step);
|
||||||
|
|
||||||
cogl_path_line_to (ctx->path_pen.x,
|
cogl_path_line_to (ctx->path_pen.x,
|
||||||
@ -377,16 +377,16 @@ cogl_path_round_rectangle (CoglFixed x,
|
|||||||
|
|
||||||
cogl_path_arc_rel (-radius, 0,
|
cogl_path_arc_rel (-radius, 0,
|
||||||
radius, radius,
|
radius, radius,
|
||||||
COGL_ANGLE_FROM_DEG (0),
|
0,
|
||||||
COGL_ANGLE_FROM_DEG (90),
|
90,
|
||||||
arc_step);
|
arc_step);
|
||||||
|
|
||||||
cogl_path_line_to (ctx->path_pen.x - inner_width,
|
cogl_path_line_to (ctx->path_pen.x - inner_width,
|
||||||
ctx->path_pen.y);
|
ctx->path_pen.y);
|
||||||
cogl_path_arc_rel (0, -radius,
|
cogl_path_arc_rel (0, -radius,
|
||||||
radius, radius,
|
radius, radius,
|
||||||
COGL_ANGLE_FROM_DEG (90),
|
90,
|
||||||
COGL_ANGLE_FROM_DEG (180),
|
180,
|
||||||
arc_step);
|
arc_step);
|
||||||
|
|
||||||
cogl_path_close ();
|
cogl_path_close ();
|
||||||
@ -400,14 +400,14 @@ _cogl_path_bezier3_sub (CoglBezCubic *cubic)
|
|||||||
CoglBezCubic *cleft;
|
CoglBezCubic *cleft;
|
||||||
CoglBezCubic *cright;
|
CoglBezCubic *cright;
|
||||||
CoglBezCubic *c;
|
CoglBezCubic *c;
|
||||||
CoglFixedVec2 dif1;
|
floatVec2 dif1;
|
||||||
CoglFixedVec2 dif2;
|
floatVec2 dif2;
|
||||||
CoglFixedVec2 mm;
|
floatVec2 mm;
|
||||||
CoglFixedVec2 c1;
|
floatVec2 c1;
|
||||||
CoglFixedVec2 c2;
|
floatVec2 c2;
|
||||||
CoglFixedVec2 c3;
|
floatVec2 c3;
|
||||||
CoglFixedVec2 c4;
|
floatVec2 c4;
|
||||||
CoglFixedVec2 c5;
|
floatVec2 c5;
|
||||||
gint cindex;
|
gint cindex;
|
||||||
|
|
||||||
/* Put first curve on stack */
|
/* Put first curve on stack */
|
||||||
@ -418,16 +418,13 @@ _cogl_path_bezier3_sub (CoglBezCubic *cubic)
|
|||||||
{
|
{
|
||||||
c = &cubics[cindex];
|
c = &cubics[cindex];
|
||||||
|
|
||||||
#define CFX_MUL2(x) ((x) << 1)
|
|
||||||
#define CFX_MUL3(x) (((x) << 1) + (x))
|
|
||||||
#define CFX_SQ(x) COGL_FIXED_MUL (x, x)
|
|
||||||
|
|
||||||
/* Calculate distance of control points from their
|
/* Calculate distance of control points from their
|
||||||
* counterparts on the line between end points */
|
* counterparts on the line between end points */
|
||||||
dif1.x = CFX_MUL3 (c->p2.x) - CFX_MUL2 (c->p1.x) - c->p4.x;
|
dif1.x = (c->p2.x * 3) - (c->p1.x * 2) - c->p4.x;
|
||||||
dif1.y = CFX_MUL3 (c->p2.y) - CFX_MUL2 (c->p1.y) - c->p4.y;
|
dif1.y = (c->p2.y * 3) - (c->p1.y * 2) - c->p4.y;
|
||||||
dif2.x = CFX_MUL3 (c->p3.x) - CFX_MUL2 (c->p4.x) - c->p1.x;
|
dif2.x = (c->p3.x * 3) - (c->p4.x * 2) - c->p1.x;
|
||||||
dif2.y = CFX_MUL3 (c->p3.y) - CFX_MUL2 (c->p4.y) - c->p1.y;
|
dif2.y = (c->p3.y * 3) - (c->p4.y * 2) - c->p1.y;
|
||||||
|
|
||||||
if (dif1.x < 0)
|
if (dif1.x < 0)
|
||||||
dif1.x = -dif1.x;
|
dif1.x = -dif1.x;
|
||||||
@ -438,16 +435,13 @@ _cogl_path_bezier3_sub (CoglBezCubic *cubic)
|
|||||||
if (dif2.y < 0)
|
if (dif2.y < 0)
|
||||||
dif2.y = -dif2.y;
|
dif2.y = -dif2.y;
|
||||||
|
|
||||||
#undef CFX_MUL2
|
|
||||||
#undef CFX_MUL3
|
|
||||||
#undef CFX_SQ
|
|
||||||
|
|
||||||
/* Pick the greatest of two distances */
|
/* Pick the greatest of two distances */
|
||||||
if (dif1.x < dif2.x) dif1.x = dif2.x;
|
if (dif1.x < dif2.x) dif1.x = dif2.x;
|
||||||
if (dif1.y < dif2.y) dif1.y = dif2.y;
|
if (dif1.y < dif2.y) dif1.y = dif2.y;
|
||||||
|
|
||||||
/* Cancel if the curve is flat enough */
|
/* Cancel if the curve is flat enough */
|
||||||
if (dif1.x + dif1.y <= COGL_FIXED_1 ||
|
if (dif1.x + dif1.y <= 1.0 ||
|
||||||
cindex == _COGL_MAX_BEZ_RECURSE_DEPTH-1)
|
cindex == _COGL_MAX_BEZ_RECURSE_DEPTH-1)
|
||||||
{
|
{
|
||||||
/* Add subdivision point (skip last) */
|
/* Add subdivision point (skip last) */
|
||||||
@ -465,20 +459,20 @@ _cogl_path_bezier3_sub (CoglBezCubic *cubic)
|
|||||||
cright = c; cleft = &cubics[++cindex];
|
cright = c; cleft = &cubics[++cindex];
|
||||||
|
|
||||||
/* Subdivide into 2 sub-curves */
|
/* Subdivide into 2 sub-curves */
|
||||||
c1.x = ((c->p1.x + c->p2.x) >> 1);
|
c1.x = ((c->p1.x + c->p2.x) / 2);
|
||||||
c1.y = ((c->p1.y + c->p2.y) >> 1);
|
c1.y = ((c->p1.y + c->p2.y) / 2);
|
||||||
mm.x = ((c->p2.x + c->p3.x) >> 1);
|
mm.x = ((c->p2.x + c->p3.x) / 2);
|
||||||
mm.y = ((c->p2.y + c->p3.y) >> 1);
|
mm.y = ((c->p2.y + c->p3.y) / 2);
|
||||||
c5.x = ((c->p3.x + c->p4.x) >> 1);
|
c5.x = ((c->p3.x + c->p4.x) / 2);
|
||||||
c5.y = ((c->p3.y + c->p4.y) >> 1);
|
c5.y = ((c->p3.y + c->p4.y) / 2);
|
||||||
|
|
||||||
c2.x = ((c1.x + mm.x) >> 1);
|
c2.x = ((c1.x + mm.x) / 2);
|
||||||
c2.y = ((c1.y + mm.y) >> 1);
|
c2.y = ((c1.y + mm.y) / 2);
|
||||||
c4.x = ((mm.x + c5.x) >> 1);
|
c4.x = ((mm.x + c5.x) / 2);
|
||||||
c4.y = ((mm.y + c5.y) >> 1);
|
c4.y = ((mm.y + c5.y) / 2);
|
||||||
|
|
||||||
c3.x = ((c2.x + c4.x) >> 1);
|
c3.x = ((c2.x + c4.x) / 2);
|
||||||
c3.y = ((c2.y + c4.y) >> 1);
|
c3.y = ((c2.y + c4.y) / 2);
|
||||||
|
|
||||||
/* Add left recursion to stack */
|
/* Add left recursion to stack */
|
||||||
cleft->p1 = c->p1;
|
cleft->p1 = c->p1;
|
||||||
@ -495,12 +489,12 @@ _cogl_path_bezier3_sub (CoglBezCubic *cubic)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_curve_to (CoglFixed x1,
|
cogl_path_curve_to (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed x3,
|
float x3,
|
||||||
CoglFixed y3)
|
float y3)
|
||||||
{
|
{
|
||||||
CoglBezCubic cubic;
|
CoglBezCubic cubic;
|
||||||
|
|
||||||
@ -524,12 +518,12 @@ cogl_path_curve_to (CoglFixed x1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_rel_curve_to (CoglFixed x1,
|
cogl_path_rel_curve_to (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed x3,
|
float x3,
|
||||||
CoglFixed y3)
|
float y3)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -554,11 +548,11 @@ _cogl_path_bezier2_sub (CoglBezQuad *quad)
|
|||||||
CoglBezQuad *qleft;
|
CoglBezQuad *qleft;
|
||||||
CoglBezQuad *qright;
|
CoglBezQuad *qright;
|
||||||
CoglBezQuad *q;
|
CoglBezQuad *q;
|
||||||
CoglFixedVec2 mid;
|
floatVec2 mid;
|
||||||
CoglFixedVec2 dif;
|
floatVec2 dif;
|
||||||
CoglFixedVec2 c1;
|
floatVec2 c1;
|
||||||
CoglFixedVec2 c2;
|
floatVec2 c2;
|
||||||
CoglFixedVec2 c3;
|
floatVec2 c3;
|
||||||
gint qindex;
|
gint qindex;
|
||||||
|
|
||||||
/* Put first curve on stack */
|
/* Put first curve on stack */
|
||||||
@ -573,15 +567,15 @@ _cogl_path_bezier2_sub (CoglBezQuad *quad)
|
|||||||
|
|
||||||
/* Calculate distance of control point from its
|
/* Calculate distance of control point from its
|
||||||
* counterpart on the line between end points */
|
* counterpart on the line between end points */
|
||||||
mid.x = ((q->p1.x + q->p3.x) >> 1);
|
mid.x = ((q->p1.x + q->p3.x) / 2);
|
||||||
mid.y = ((q->p1.y + q->p3.y) >> 1);
|
mid.y = ((q->p1.y + q->p3.y) / 2);
|
||||||
dif.x = (q->p2.x - mid.x);
|
dif.x = (q->p2.x - mid.x);
|
||||||
dif.y = (q->p2.y - mid.y);
|
dif.y = (q->p2.y - mid.y);
|
||||||
if (dif.x < 0) dif.x = -dif.x;
|
if (dif.x < 0) dif.x = -dif.x;
|
||||||
if (dif.y < 0) dif.y = -dif.y;
|
if (dif.y < 0) dif.y = -dif.y;
|
||||||
|
|
||||||
/* Cancel if the curve is flat enough */
|
/* Cancel if the curve is flat enough */
|
||||||
if (dif.x + dif.y <= COGL_FIXED_1 ||
|
if (dif.x + dif.y <= 1.0 ||
|
||||||
qindex == _COGL_MAX_BEZ_RECURSE_DEPTH - 1)
|
qindex == _COGL_MAX_BEZ_RECURSE_DEPTH - 1)
|
||||||
{
|
{
|
||||||
/* Add subdivision point (skip last) */
|
/* Add subdivision point (skip last) */
|
||||||
@ -594,12 +588,12 @@ _cogl_path_bezier2_sub (CoglBezQuad *quad)
|
|||||||
qright = q; qleft = &quads[++qindex];
|
qright = q; qleft = &quads[++qindex];
|
||||||
|
|
||||||
/* Subdivide into 2 sub-curves */
|
/* Subdivide into 2 sub-curves */
|
||||||
c1.x = ((q->p1.x + q->p2.x) >> 1);
|
c1.x = ((q->p1.x + q->p2.x) / 2);
|
||||||
c1.y = ((q->p1.y + q->p2.y) >> 1);
|
c1.y = ((q->p1.y + q->p2.y) / 2);
|
||||||
c3.x = ((q->p2.x + q->p3.x) >> 1);
|
c3.x = ((q->p2.x + q->p3.x) / 2);
|
||||||
c3.y = ((q->p2.y + q->p3.y) >> 1);
|
c3.y = ((q->p2.y + q->p3.y) / 2);
|
||||||
c2.x = ((c1.x + c3.x) >> 1);
|
c2.x = ((c1.x + c3.x) / 2);
|
||||||
c2.y = ((c1.y + c3.y) >> 1);
|
c2.y = ((c1.y + c3.y) / 2);
|
||||||
|
|
||||||
/* Add left recursion onto stack */
|
/* Add left recursion onto stack */
|
||||||
qleft->p1 = q->p1;
|
qleft->p1 = q->p1;
|
||||||
@ -614,10 +608,10 @@ _cogl_path_bezier2_sub (CoglBezQuad *quad)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_path_curve2_to (CoglFixed x1,
|
cogl_path_curve2_to (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2)
|
float y2)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -639,10 +633,10 @@ cogl_path_curve2_to (CoglFixed x1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_rel_curve2_to (CoglFixed x1,
|
cogl_rel_curve2_to (float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2)
|
float y2)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
|
@ -26,15 +26,15 @@
|
|||||||
#ifndef __COGL_PRIMITIVES_H
|
#ifndef __COGL_PRIMITIVES_H
|
||||||
#define __COGL_PRIMITIVES_H
|
#define __COGL_PRIMITIVES_H
|
||||||
|
|
||||||
typedef struct _CoglFixedVec2 CoglFixedVec2;
|
typedef struct _floatVec2 floatVec2;
|
||||||
typedef struct _CoglBezQuad CoglBezQuad;
|
typedef struct _CoglBezQuad CoglBezQuad;
|
||||||
typedef struct _CoglBezCubic CoglBezCubic;
|
typedef struct _CoglBezCubic CoglBezCubic;
|
||||||
typedef struct _CoglPathNode CoglPathNode;
|
typedef struct _CoglPathNode CoglPathNode;
|
||||||
|
|
||||||
struct _CoglFixedVec2
|
struct _floatVec2
|
||||||
{
|
{
|
||||||
CoglFixed x;
|
float x;
|
||||||
CoglFixed y;
|
float y;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CLUTTER_COGL_HAS_GL
|
#ifdef CLUTTER_COGL_HAS_GL
|
||||||
@ -67,17 +67,17 @@ struct _CoglPathNode
|
|||||||
|
|
||||||
struct _CoglBezQuad
|
struct _CoglBezQuad
|
||||||
{
|
{
|
||||||
CoglFixedVec2 p1;
|
floatVec2 p1;
|
||||||
CoglFixedVec2 p2;
|
floatVec2 p2;
|
||||||
CoglFixedVec2 p3;
|
floatVec2 p3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _CoglBezCubic
|
struct _CoglBezCubic
|
||||||
{
|
{
|
||||||
CoglFixedVec2 p1;
|
floatVec2 p1;
|
||||||
CoglFixedVec2 p2;
|
floatVec2 p2;
|
||||||
CoglFixedVec2 p3;
|
floatVec2 p3;
|
||||||
CoglFixedVec2 p4;
|
floatVec2 p4;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __COGL_PRIMITIVES_H */
|
#endif /* __COGL_PRIMITIVES_H */
|
||||||
|
@ -51,12 +51,12 @@ typedef struct
|
|||||||
gboolean enable_backface_culling;
|
gboolean enable_backface_culling;
|
||||||
|
|
||||||
/* Primitives */
|
/* Primitives */
|
||||||
CoglFixedVec2 path_start;
|
floatVec2 path_start;
|
||||||
CoglFixedVec2 path_pen;
|
floatVec2 path_pen;
|
||||||
GArray *path_nodes;
|
GArray *path_nodes;
|
||||||
guint last_path;
|
guint last_path;
|
||||||
CoglFixedVec2 path_nodes_min;
|
floatVec2 path_nodes_min;
|
||||||
CoglFixedVec2 path_nodes_max;
|
floatVec2 path_nodes_max;
|
||||||
|
|
||||||
/* Cache of inverse projection matrix */
|
/* Cache of inverse projection matrix */
|
||||||
GLfloat inverse_projection[16];
|
GLfloat inverse_projection[16];
|
||||||
|
@ -53,33 +53,33 @@ _cogl_rectangle (gint x,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_rectanglex (CoglFixed x,
|
_cogl_rectanglex (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
cogl_enable (ctx->color_alpha < 255
|
cogl_enable (ctx->color_alpha < 255
|
||||||
? COGL_ENABLE_BLEND : 0);
|
? COGL_ENABLE_BLEND : 0);
|
||||||
|
|
||||||
GE( glRectf (COGL_FIXED_TO_FLOAT (x),
|
GE( glRectf ( (x),
|
||||||
COGL_FIXED_TO_FLOAT (y),
|
(y),
|
||||||
COGL_FIXED_TO_FLOAT (x + width),
|
(x + width),
|
||||||
COGL_FIXED_TO_FLOAT (y + height)) );
|
(y + height)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_path_add_node (gboolean new_sub_path,
|
_cogl_path_add_node (gboolean new_sub_path,
|
||||||
CoglFixed x,
|
float x,
|
||||||
CoglFixed y)
|
float y)
|
||||||
{
|
{
|
||||||
CoglPathNode new_node;
|
CoglPathNode new_node;
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
new_node.x = COGL_FIXED_TO_FLOAT (x);
|
new_node.x = (x);
|
||||||
new_node.y = COGL_FIXED_TO_FLOAT (y);
|
new_node.y = (y);
|
||||||
new_node.path_size = 0;
|
new_node.path_size = 0;
|
||||||
|
|
||||||
if (new_sub_path || ctx->path_nodes->len == 0)
|
if (new_sub_path || ctx->path_nodes->len == 0)
|
||||||
@ -129,24 +129,24 @@ _cogl_path_stroke_nodes ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_path_get_bounds (CoglFixedVec2 nodes_min,
|
_cogl_path_get_bounds (floatVec2 nodes_min,
|
||||||
CoglFixedVec2 nodes_max,
|
floatVec2 nodes_max,
|
||||||
gint *bounds_x,
|
gint *bounds_x,
|
||||||
gint *bounds_y,
|
gint *bounds_y,
|
||||||
guint *bounds_w,
|
guint *bounds_w,
|
||||||
guint *bounds_h)
|
guint *bounds_h)
|
||||||
{
|
{
|
||||||
*bounds_x = COGL_FIXED_FLOOR (nodes_min.x);
|
*bounds_x = floorf (nodes_min.x);
|
||||||
*bounds_y = COGL_FIXED_FLOOR (nodes_min.y);
|
*bounds_y = floorf (nodes_min.y);
|
||||||
*bounds_w = COGL_FIXED_CEIL (nodes_max.x
|
*bounds_w = ceilf (nodes_max.x
|
||||||
- COGL_FIXED_FROM_INT (*bounds_x));
|
- (float)(*bounds_x));
|
||||||
*bounds_h = COGL_FIXED_CEIL (nodes_max.y
|
*bounds_h = ceilf (nodes_max.y
|
||||||
- COGL_FIXED_FROM_INT (*bounds_y));
|
- (float)(*bounds_y));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_add_path_to_stencil_buffer (CoglFixedVec2 nodes_min,
|
_cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
|
||||||
CoglFixedVec2 nodes_max,
|
floatVec2 nodes_max,
|
||||||
guint path_size,
|
guint path_size,
|
||||||
CoglPathNode *path,
|
CoglPathNode *path,
|
||||||
gboolean merge)
|
gboolean merge)
|
||||||
|
@ -54,15 +54,15 @@ struct _CoglSpanIter
|
|||||||
gint index;
|
gint index;
|
||||||
GArray *array;
|
GArray *array;
|
||||||
CoglTexSliceSpan *span;
|
CoglTexSliceSpan *span;
|
||||||
CoglFixed pos;
|
float pos;
|
||||||
CoglFixed next_pos;
|
float next_pos;
|
||||||
CoglFixed origin;
|
float origin;
|
||||||
CoglFixed cover_start;
|
float cover_start;
|
||||||
CoglFixed cover_end;
|
float cover_end;
|
||||||
CoglFixed intersect_start;
|
float intersect_start;
|
||||||
CoglFixed intersect_end;
|
float intersect_end;
|
||||||
CoglFixed intersect_start_local;
|
float intersect_start_local;
|
||||||
CoglFixed intersect_end_local;
|
float intersect_end_local;
|
||||||
gboolean intersects;
|
gboolean intersects;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ _cogl_span_iter_update (CoglSpanIter *iter)
|
|||||||
|
|
||||||
/* Offset next position by span size */
|
/* Offset next position by span size */
|
||||||
iter->next_pos = iter->pos +
|
iter->next_pos = iter->pos +
|
||||||
COGL_FIXED_FROM_INT (iter->span->size - iter->span->waste);
|
(float)(iter->span->size - iter->span->waste);
|
||||||
|
|
||||||
/* Check if span intersects the area to cover */
|
/* Check if span intersects the area to cover */
|
||||||
if (iter->next_pos <= iter->cover_start ||
|
if (iter->next_pos <= iter->cover_start ||
|
||||||
@ -131,9 +131,9 @@ _cogl_span_iter_update (CoglSpanIter *iter)
|
|||||||
static void
|
static void
|
||||||
_cogl_span_iter_begin (CoglSpanIter *iter,
|
_cogl_span_iter_begin (CoglSpanIter *iter,
|
||||||
GArray *array,
|
GArray *array,
|
||||||
CoglFixed origin,
|
float origin,
|
||||||
CoglFixed cover_start,
|
float cover_start,
|
||||||
CoglFixed cover_end)
|
float cover_end)
|
||||||
{
|
{
|
||||||
/* Copy info */
|
/* Copy info */
|
||||||
iter->index = 0;
|
iter->index = 0;
|
||||||
@ -471,8 +471,8 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
/* Iterate vertical spans */
|
/* Iterate vertical spans */
|
||||||
for (source_y = src_y,
|
for (source_y = src_y,
|
||||||
_cogl_span_iter_begin (&y_iter, tex->slice_y_spans,
|
_cogl_span_iter_begin (&y_iter, tex->slice_y_spans,
|
||||||
0, COGL_FIXED_FROM_INT (dst_y),
|
0, (float)(dst_y),
|
||||||
COGL_FIXED_FROM_INT (dst_y + height));
|
(float)(dst_y + height));
|
||||||
|
|
||||||
!_cogl_span_iter_end (&y_iter);
|
!_cogl_span_iter_end (&y_iter);
|
||||||
|
|
||||||
@ -492,8 +492,8 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
/* Iterate horizontal spans */
|
/* Iterate horizontal spans */
|
||||||
for (source_x = src_x,
|
for (source_x = src_x,
|
||||||
_cogl_span_iter_begin (&x_iter, tex->slice_x_spans,
|
_cogl_span_iter_begin (&x_iter, tex->slice_x_spans,
|
||||||
0, COGL_FIXED_FROM_INT (dst_x),
|
0, (float)(dst_x),
|
||||||
COGL_FIXED_FROM_INT (dst_x + width));
|
(float)(dst_x + width));
|
||||||
|
|
||||||
!_cogl_span_iter_end (&x_iter);
|
!_cogl_span_iter_end (&x_iter);
|
||||||
|
|
||||||
@ -511,15 +511,15 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
x_iter.index);
|
x_iter.index);
|
||||||
|
|
||||||
/* Pick intersection width and height */
|
/* Pick intersection width and height */
|
||||||
inter_w = COGL_FIXED_TO_INT (x_iter.intersect_end -
|
inter_w = (x_iter.intersect_end -
|
||||||
x_iter.intersect_start);
|
x_iter.intersect_start);
|
||||||
inter_h = COGL_FIXED_TO_INT (y_iter.intersect_end -
|
inter_h = (y_iter.intersect_end -
|
||||||
y_iter.intersect_start);
|
y_iter.intersect_start);
|
||||||
|
|
||||||
/* Localize intersection top-left corner to slice*/
|
/* Localize intersection top-left corner to slice*/
|
||||||
local_x = COGL_FIXED_TO_INT (x_iter.intersect_start -
|
local_x = (x_iter.intersect_start -
|
||||||
x_iter.pos);
|
x_iter.pos);
|
||||||
local_y = COGL_FIXED_TO_INT (y_iter.intersect_start -
|
local_y = (y_iter.intersect_start -
|
||||||
y_iter.pos);
|
y_iter.pos);
|
||||||
|
|
||||||
/* Pick slice GL handle */
|
/* Pick slice GL handle */
|
||||||
@ -555,7 +555,7 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
guint wx, wy;
|
guint wx, wy;
|
||||||
|
|
||||||
src = source_bmp->data
|
src = source_bmp->data
|
||||||
+ (src_y + COGL_FIXED_TO_INT (y_iter.intersect_start)
|
+ (src_y + (y_iter.intersect_start)
|
||||||
- dst_y)
|
- dst_y)
|
||||||
* source_bmp->rowstride
|
* source_bmp->rowstride
|
||||||
+ (src_x + x_span->start + x_span->size - x_span->waste
|
+ (src_x + x_span->start + x_span->size - x_span->waste
|
||||||
@ -600,7 +600,7 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
guint copy_width;
|
guint copy_width;
|
||||||
|
|
||||||
src = source_bmp->data
|
src = source_bmp->data
|
||||||
+ (src_x + COGL_FIXED_TO_INT (x_iter.intersect_start)
|
+ (src_x + (x_iter.intersect_start)
|
||||||
- dst_x)
|
- dst_x)
|
||||||
* bpp
|
* bpp
|
||||||
+ (src_y + y_span->start + y_span->size - y_span->waste
|
+ (src_y + y_span->start + y_span->size - y_span->waste
|
||||||
@ -2010,24 +2010,24 @@ _cogl_texture_add_quad_vertices (GLfloat x1, GLfloat y1,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_texture_quad_sw (CoglTexture *tex,
|
_cogl_texture_quad_sw (CoglTexture *tex,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2)
|
float ty2)
|
||||||
{
|
{
|
||||||
CoglSpanIter iter_x , iter_y;
|
CoglSpanIter iter_x , iter_y;
|
||||||
CoglFixed tw , th;
|
float tw , th;
|
||||||
CoglFixed tqx , tqy;
|
float tqx , tqy;
|
||||||
CoglFixed first_tx , first_ty;
|
float first_tx , first_ty;
|
||||||
CoglFixed first_qx , first_qy;
|
float first_qx , first_qy;
|
||||||
CoglFixed slice_tx1 , slice_ty1;
|
float slice_tx1 , slice_ty1;
|
||||||
CoglFixed slice_tx2 , slice_ty2;
|
float slice_tx2 , slice_ty2;
|
||||||
CoglFixed slice_qx1 , slice_qy1;
|
float slice_qx1 , slice_qy1;
|
||||||
CoglFixed slice_qx2 , slice_qy2;
|
float slice_qx2 , slice_qy2;
|
||||||
GLuint gl_handle;
|
GLuint gl_handle;
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
@ -2050,7 +2050,7 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
slices */
|
slices */
|
||||||
if (tx2 < tx1)
|
if (tx2 < tx1)
|
||||||
{
|
{
|
||||||
CoglFixed temp = x1;
|
float temp = x1;
|
||||||
x1 = x2;
|
x1 = x2;
|
||||||
x2 = temp;
|
x2 = temp;
|
||||||
temp = tx1;
|
temp = tx1;
|
||||||
@ -2059,7 +2059,7 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
}
|
}
|
||||||
if (ty2 < ty1)
|
if (ty2 < ty1)
|
||||||
{
|
{
|
||||||
CoglFixed temp = y1;
|
float temp = y1;
|
||||||
y1 = y2;
|
y1 = y2;
|
||||||
y2 = temp;
|
y2 = temp;
|
||||||
temp = ty1;
|
temp = ty1;
|
||||||
@ -2068,27 +2068,27 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Scale ratio from texture to quad widths */
|
/* Scale ratio from texture to quad widths */
|
||||||
tw = COGL_FIXED_FROM_INT (tex->bitmap.width);
|
tw = (float)(tex->bitmap.width);
|
||||||
th = COGL_FIXED_FROM_INT (tex->bitmap.height);
|
th = (float)(tex->bitmap.height);
|
||||||
|
|
||||||
tqx = COGL_FIXED_DIV (x2 - x1, COGL_FIXED_MUL (tw, (tx2 - tx1)));
|
tqx = (x2 - x1 / (tw * (tx2 - tx1)));
|
||||||
tqy = COGL_FIXED_DIV (y2 - y1, COGL_FIXED_MUL (th, (ty2 - ty1)));
|
tqy = (y2 - y1 / (th * (ty2 - ty1)));
|
||||||
|
|
||||||
/* Integral texture coordinate for first tile */
|
/* Integral texture coordinate for first tile */
|
||||||
first_tx = COGL_FIXED_FROM_INT (COGL_FIXED_FLOOR (tx1));
|
first_tx = (float)(floorf (tx1));
|
||||||
first_ty = COGL_FIXED_FROM_INT (COGL_FIXED_FLOOR (ty1));
|
first_ty = (float)(floorf (ty1));
|
||||||
|
|
||||||
/* Denormalize texture coordinates */
|
/* Denormalize texture coordinates */
|
||||||
first_tx = COGL_FIXED_MUL (first_tx, tw);
|
first_tx = (first_tx * tw);
|
||||||
first_ty = COGL_FIXED_MUL (first_ty, th);
|
first_ty = (first_ty * th);
|
||||||
tx1 = COGL_FIXED_MUL (tx1, tw);
|
tx1 = (tx1 * tw);
|
||||||
ty1 = COGL_FIXED_MUL (ty1, th);
|
ty1 = (ty1 * th);
|
||||||
tx2 = COGL_FIXED_MUL (tx2, tw);
|
tx2 = (tx2 * tw);
|
||||||
ty2 = COGL_FIXED_MUL (ty2, th);
|
ty2 = (ty2 * th);
|
||||||
|
|
||||||
/* Quad coordinate of the first tile */
|
/* Quad coordinate of the first tile */
|
||||||
first_qx = x1 - COGL_FIXED_MUL (tx1 - first_tx, tqx);
|
first_qx = x1 - (tx1 - first_tx * tqx);
|
||||||
first_qy = y1 - COGL_FIXED_MUL (ty1 - first_ty, tqy);
|
first_qy = y1 - (ty1 - first_ty * tqy);
|
||||||
|
|
||||||
|
|
||||||
/* Iterate until whole quad height covered */
|
/* Iterate until whole quad height covered */
|
||||||
@ -2102,10 +2102,10 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
|
|
||||||
/* Span-quad intersection in quad coordinates */
|
/* Span-quad intersection in quad coordinates */
|
||||||
slice_qy1 = first_qy +
|
slice_qy1 = first_qy +
|
||||||
COGL_FIXED_MUL (iter_y.intersect_start - first_ty, tqy);
|
(iter_y.intersect_start - first_ty * tqy);
|
||||||
|
|
||||||
slice_qy2 = first_qy +
|
slice_qy2 = first_qy +
|
||||||
COGL_FIXED_MUL (iter_y.intersect_end - first_ty, tqy);
|
(iter_y.intersect_end - first_ty * tqy);
|
||||||
|
|
||||||
/* Localize slice texture coordinates */
|
/* Localize slice texture coordinates */
|
||||||
slice_ty1 = iter_y.intersect_start - iter_y.pos;
|
slice_ty1 = iter_y.intersect_start - iter_y.pos;
|
||||||
@ -2130,10 +2130,10 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
|
|
||||||
/* Span-quad intersection in quad coordinates */
|
/* Span-quad intersection in quad coordinates */
|
||||||
slice_qx1 = first_qx +
|
slice_qx1 = first_qx +
|
||||||
COGL_FIXED_MUL (iter_x.intersect_start - first_tx, tqx);
|
(iter_x.intersect_start - first_tx * tqx);
|
||||||
|
|
||||||
slice_qx2 = first_qx +
|
slice_qx2 = first_qx +
|
||||||
COGL_FIXED_MUL (iter_x.intersect_end - first_tx, tqx);
|
(iter_x.intersect_end - first_tx * tqx);
|
||||||
|
|
||||||
/* Localize slice texture coordinates */
|
/* Localize slice texture coordinates */
|
||||||
slice_tx1 = iter_x.intersect_start - iter_x.pos;
|
slice_tx1 = iter_x.intersect_start - iter_x.pos;
|
||||||
@ -2149,14 +2149,14 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
|
|
||||||
#if COGL_DEBUG
|
#if COGL_DEBUG
|
||||||
printf("~~~~~ slice (%d,%d)\n", iter_x.index, iter_y.index);
|
printf("~~~~~ slice (%d,%d)\n", iter_x.index, iter_y.index);
|
||||||
printf("qx1: %f\n", COGL_FIXED_TO_FLOAT (slice_qx1));
|
printf("qx1: %f\n", (slice_qx1));
|
||||||
printf("qy1: %f\n", COGL_FIXED_TO_FLOAT (slice_qy1));
|
printf("qy1: %f\n", (slice_qy1));
|
||||||
printf("qx2: %f\n", COGL_FIXED_TO_FLOAT (slice_qx2));
|
printf("qx2: %f\n", (slice_qx2));
|
||||||
printf("qy2: %f\n", COGL_FIXED_TO_FLOAT (slice_qy2));
|
printf("qy2: %f\n", (slice_qy2));
|
||||||
printf("tx1: %f\n", COGL_FIXED_TO_FLOAT (slice_tx1));
|
printf("tx1: %f\n", (slice_tx1));
|
||||||
printf("ty1: %f\n", COGL_FIXED_TO_FLOAT (slice_ty1));
|
printf("ty1: %f\n", (slice_ty1));
|
||||||
printf("tx2: %f\n", COGL_FIXED_TO_FLOAT (slice_tx2));
|
printf("tx2: %f\n", (slice_tx2));
|
||||||
printf("ty2: %f\n", COGL_FIXED_TO_FLOAT (slice_ty2));
|
printf("ty2: %f\n", (slice_ty2));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Pick and bind opengl texture object */
|
/* Pick and bind opengl texture object */
|
||||||
@ -2172,28 +2172,28 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
ctx->texture_target = tex->gl_target;
|
ctx->texture_target = tex->gl_target;
|
||||||
ctx->texture_current = gl_handle;
|
ctx->texture_current = gl_handle;
|
||||||
|
|
||||||
_cogl_texture_add_quad_vertices (COGL_FIXED_TO_FLOAT (slice_qx1),
|
_cogl_texture_add_quad_vertices ( (slice_qx1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_qy1),
|
(slice_qy1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_qx2),
|
(slice_qx2),
|
||||||
COGL_FIXED_TO_FLOAT (slice_qy2),
|
(slice_qy2),
|
||||||
COGL_FIXED_TO_FLOAT (slice_tx1),
|
(slice_tx1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_ty1),
|
(slice_ty1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_tx2),
|
(slice_tx2),
|
||||||
COGL_FIXED_TO_FLOAT (slice_ty2));
|
(slice_ty2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_texture_quad_hw (CoglTexture *tex,
|
_cogl_texture_quad_hw (CoglTexture *tex,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2)
|
float ty2)
|
||||||
{
|
{
|
||||||
GLuint gl_handle;
|
GLuint gl_handle;
|
||||||
CoglTexSliceSpan *x_span;
|
CoglTexSliceSpan *x_span;
|
||||||
@ -2209,10 +2209,10 @@ _cogl_texture_quad_hw (CoglTexture *tex,
|
|||||||
/* If the texture coords are all in the range [0,1] then we want to
|
/* If the texture coords are all in the range [0,1] then we want to
|
||||||
clamp the coords to the edge otherwise it can pull in edge pixels
|
clamp the coords to the edge otherwise it can pull in edge pixels
|
||||||
from the wrong side when scaled */
|
from the wrong side when scaled */
|
||||||
if (tx1 >= 0 && tx1 <= COGL_FIXED_1
|
if (tx1 >= 0 && tx1 <= 1.0
|
||||||
&& tx2 >= 0 && tx2 <= COGL_FIXED_1
|
&& tx2 >= 0 && tx2 <= 1.0
|
||||||
&& ty1 >= 0 && ty1 <= COGL_FIXED_1
|
&& ty1 >= 0 && ty1 <= 1.0
|
||||||
&& ty2 >= 0 && ty2 <= COGL_FIXED_1)
|
&& ty2 >= 0 && ty2 <= 1.0)
|
||||||
wrap_mode = GL_CLAMP_TO_EDGE;
|
wrap_mode = GL_CLAMP_TO_EDGE;
|
||||||
else
|
else
|
||||||
wrap_mode = GL_REPEAT;
|
wrap_mode = GL_REPEAT;
|
||||||
@ -2251,19 +2251,19 @@ _cogl_texture_quad_hw (CoglTexture *tex,
|
|||||||
ty2 *= y_span->size;
|
ty2 *= y_span->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
_cogl_texture_add_quad_vertices (COGL_FIXED_TO_FLOAT (x1),
|
_cogl_texture_add_quad_vertices ( (x1),
|
||||||
COGL_FIXED_TO_FLOAT (y1),
|
(y1),
|
||||||
COGL_FIXED_TO_FLOAT (x2),
|
(x2),
|
||||||
COGL_FIXED_TO_FLOAT (y2),
|
(y2),
|
||||||
COGL_FIXED_TO_FLOAT (tx1),
|
(tx1),
|
||||||
COGL_FIXED_TO_FLOAT (ty1),
|
(ty1),
|
||||||
COGL_FIXED_TO_FLOAT (tx2),
|
(tx2),
|
||||||
COGL_FIXED_TO_FLOAT (ty2));
|
(ty2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_texture_multiple_rectangles (CoglHandle handle,
|
cogl_texture_multiple_rectangles (CoglHandle handle,
|
||||||
const CoglFixed *verts,
|
const float *verts,
|
||||||
guint n_rects)
|
guint n_rects)
|
||||||
{
|
{
|
||||||
CoglTexture *tex;
|
CoglTexture *tex;
|
||||||
@ -2314,10 +2314,10 @@ cogl_texture_multiple_rectangles (CoglHandle handle,
|
|||||||
if (tex->slice_gl_handles->len == 1
|
if (tex->slice_gl_handles->len == 1
|
||||||
&& ((cogl_features_available (COGL_FEATURE_TEXTURE_NPOT)
|
&& ((cogl_features_available (COGL_FEATURE_TEXTURE_NPOT)
|
||||||
&& tex->gl_target == GL_TEXTURE_2D)
|
&& tex->gl_target == GL_TEXTURE_2D)
|
||||||
|| (verts[4] >= 0 && verts[4] <= COGL_FIXED_1
|
|| (verts[4] >= 0 && verts[4] <= 1.0
|
||||||
&& verts[6] >= 0 && verts[6] <= COGL_FIXED_1
|
&& verts[6] >= 0 && verts[6] <= 1.0
|
||||||
&& verts[5] >= 0 && verts[5] <= COGL_FIXED_1
|
&& verts[5] >= 0 && verts[5] <= 1.0
|
||||||
&& verts[7] >= 0 && verts[7] <= COGL_FIXED_1)))
|
&& verts[7] >= 0 && verts[7] <= 1.0)))
|
||||||
_cogl_texture_quad_hw (tex, verts[0],verts[1], verts[2],verts[3],
|
_cogl_texture_quad_hw (tex, verts[0],verts[1], verts[2],verts[3],
|
||||||
verts[4],verts[5], verts[6],verts[7]);
|
verts[4],verts[5], verts[6],verts[7]);
|
||||||
else
|
else
|
||||||
@ -2333,16 +2333,16 @@ cogl_texture_multiple_rectangles (CoglHandle handle,
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_texture_rectangle (CoglHandle handle,
|
cogl_texture_rectangle (CoglHandle handle,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2)
|
float ty2)
|
||||||
{
|
{
|
||||||
CoglFixed verts[8];
|
float verts[8];
|
||||||
|
|
||||||
verts[0] = x1;
|
verts[0] = x1;
|
||||||
verts[1] = y1;
|
verts[1] = y1;
|
||||||
@ -2455,16 +2455,16 @@ cogl_texture_polygon (CoglHandle handle,
|
|||||||
OpenGL */
|
OpenGL */
|
||||||
for (i = 0; i < n_vertices; i++, p++)
|
for (i = 0; i < n_vertices; i++, p++)
|
||||||
{
|
{
|
||||||
CoglFixed tx, ty;
|
float tx, ty;
|
||||||
|
|
||||||
#define CFX_F COGL_FIXED_TO_FLOAT
|
#define CFX_F
|
||||||
|
|
||||||
tx = ((vertices[i].tx
|
tx = ((vertices[i].tx
|
||||||
- (COGL_FIXED_FROM_INT (x_span->start)
|
- ((float)(x_span->start)
|
||||||
/ tex->bitmap.width))
|
/ tex->bitmap.width))
|
||||||
* tex->bitmap.width / x_span->size);
|
* tex->bitmap.width / x_span->size);
|
||||||
ty = ((vertices[i].ty
|
ty = ((vertices[i].ty
|
||||||
- (COGL_FIXED_FROM_INT (y_span->start)
|
- ((float)(y_span->start)
|
||||||
/ tex->bitmap.height))
|
/ tex->bitmap.height))
|
||||||
* tex->bitmap.height / y_span->size);
|
* tex->bitmap.height / y_span->size);
|
||||||
|
|
||||||
|
@ -209,19 +209,19 @@ cogl_pop_matrix (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_scale (CoglFixed x, CoglFixed y)
|
cogl_scale (float x, float y)
|
||||||
{
|
{
|
||||||
glScaled (COGL_FIXED_TO_DOUBLE (x),
|
glScaled ((double)(x),
|
||||||
COGL_FIXED_TO_DOUBLE (y),
|
(double)(y),
|
||||||
1.0);
|
1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_translatex (CoglFixed x, CoglFixed y, CoglFixed z)
|
cogl_translatex (float x, float y, float z)
|
||||||
{
|
{
|
||||||
glTranslated (COGL_FIXED_TO_DOUBLE (x),
|
glTranslated ((double)(x),
|
||||||
COGL_FIXED_TO_DOUBLE (y),
|
(double)(y),
|
||||||
COGL_FIXED_TO_DOUBLE (z));
|
(double)(z));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -231,12 +231,12 @@ cogl_translate (gint x, gint y, gint z)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_rotatex (CoglFixed angle, gint x, gint y, gint z)
|
cogl_rotatex (float angle, gint x, gint y, gint z)
|
||||||
{
|
{
|
||||||
glRotated (COGL_FIXED_TO_DOUBLE (angle),
|
glRotated ((double)(angle),
|
||||||
COGL_FIXED_TO_DOUBLE (x),
|
(double)(x),
|
||||||
COGL_FIXED_TO_DOUBLE (y),
|
(double)(y),
|
||||||
COGL_FIXED_TO_DOUBLE (z));
|
(double)(z));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -466,24 +466,24 @@ set_clip_plane (GLint plane_num,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_set_clip_planes (CoglFixed x_offset,
|
_cogl_set_clip_planes (float x_offset,
|
||||||
CoglFixed y_offset,
|
float y_offset,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
GLfloat modelview[16], projection[16];
|
GLfloat modelview[16], projection[16];
|
||||||
|
|
||||||
GLfloat vertex_tl[4] = { COGL_FIXED_TO_FLOAT (x_offset),
|
GLfloat vertex_tl[4] = { (x_offset),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset),
|
(y_offset),
|
||||||
0.0f, 1.0f };
|
0.0f, 1.0f };
|
||||||
GLfloat vertex_tr[4] = { COGL_FIXED_TO_FLOAT (x_offset + width),
|
GLfloat vertex_tr[4] = { (x_offset + width),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset),
|
(y_offset),
|
||||||
0.0f, 1.0f };
|
0.0f, 1.0f };
|
||||||
GLfloat vertex_bl[4] = { COGL_FIXED_TO_FLOAT (x_offset),
|
GLfloat vertex_bl[4] = { (x_offset),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset + height),
|
(y_offset + height),
|
||||||
0.0f, 1.0f };
|
0.0f, 1.0f };
|
||||||
GLfloat vertex_br[4] = { COGL_FIXED_TO_FLOAT (x_offset + width),
|
GLfloat vertex_br[4] = { (x_offset + width),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset + height),
|
(y_offset + height),
|
||||||
0.0f, 1.0f };
|
0.0f, 1.0f };
|
||||||
|
|
||||||
GE( glGetFloatv (GL_MODELVIEW_MATRIX, modelview) );
|
GE( glGetFloatv (GL_MODELVIEW_MATRIX, modelview) );
|
||||||
@ -518,10 +518,10 @@ _cogl_set_clip_planes (CoglFixed x_offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_add_stencil_clip (CoglFixed x_offset,
|
_cogl_add_stencil_clip (float x_offset,
|
||||||
CoglFixed y_offset,
|
float y_offset,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height,
|
float height,
|
||||||
gboolean first)
|
gboolean first)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
@ -537,10 +537,10 @@ _cogl_add_stencil_clip (CoglFixed x_offset,
|
|||||||
/* Punch out a hole to allow the rectangle */
|
/* Punch out a hole to allow the rectangle */
|
||||||
GE( glStencilFunc (GL_NEVER, 0x1, 0x1) );
|
GE( glStencilFunc (GL_NEVER, 0x1, 0x1) );
|
||||||
GE( glStencilOp (GL_REPLACE, GL_REPLACE, GL_REPLACE) );
|
GE( glStencilOp (GL_REPLACE, GL_REPLACE, GL_REPLACE) );
|
||||||
GE( glRectf (COGL_FIXED_TO_FLOAT (x_offset),
|
GE( glRectf ( (x_offset),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset),
|
(y_offset),
|
||||||
COGL_FIXED_TO_FLOAT (x_offset + width),
|
(x_offset + width),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset + height)) );
|
(y_offset + height)) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -548,10 +548,10 @@ _cogl_add_stencil_clip (CoglFixed x_offset,
|
|||||||
rectangle */
|
rectangle */
|
||||||
GE( glStencilFunc (GL_NEVER, 0x1, 0x3) );
|
GE( glStencilFunc (GL_NEVER, 0x1, 0x3) );
|
||||||
GE( glStencilOp (GL_INCR, GL_INCR, GL_INCR) );
|
GE( glStencilOp (GL_INCR, GL_INCR, GL_INCR) );
|
||||||
GE( glRectf (COGL_FIXED_TO_FLOAT (x_offset),
|
GE( glRectf ( (x_offset),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset),
|
(y_offset),
|
||||||
COGL_FIXED_TO_FLOAT (x_offset + width),
|
(x_offset + width),
|
||||||
COGL_FIXED_TO_FLOAT (y_offset + height)) );
|
(y_offset + height)) );
|
||||||
|
|
||||||
/* Subtract one from all pixels in the stencil buffer so that
|
/* Subtract one from all pixels in the stencil buffer so that
|
||||||
only pixels where both the original stencil buffer and the
|
only pixels where both the original stencil buffer and the
|
||||||
@ -574,13 +574,13 @@ _cogl_add_stencil_clip (CoglFixed x_offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_set_matrix (const CoglFixed *matrix)
|
_cogl_set_matrix (const float *matrix)
|
||||||
{
|
{
|
||||||
float float_matrix[16];
|
float float_matrix[16];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
float_matrix[i] = COGL_FIXED_TO_FLOAT (matrix[i]);
|
float_matrix[i] = (matrix[i]);
|
||||||
|
|
||||||
GE( glLoadIdentity () );
|
GE( glLoadIdentity () );
|
||||||
GE( glMultMatrixf (float_matrix) );
|
GE( glMultMatrixf (float_matrix) );
|
||||||
@ -612,20 +612,20 @@ _cogl_disable_clip_planes (void)
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_alpha_func (COGLenum func,
|
cogl_alpha_func (COGLenum func,
|
||||||
CoglFixed ref)
|
float ref)
|
||||||
{
|
{
|
||||||
GE( glAlphaFunc (func, COGL_FIXED_TO_FLOAT(ref)) );
|
GE( glAlphaFunc (func, (ref)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_perspective (CoglFixed fovy,
|
cogl_perspective (float fovy,
|
||||||
CoglFixed aspect,
|
float aspect,
|
||||||
CoglFixed zNear,
|
float zNear,
|
||||||
CoglFixed zFar)
|
float zFar)
|
||||||
{
|
{
|
||||||
CoglFixed xmax, ymax;
|
float xmax, ymax;
|
||||||
CoglFixed x, y, c, d;
|
float x, y, c, d;
|
||||||
CoglFixed fovy_rad_half = COGL_FIXED_MUL (fovy, COGL_FIXED_PI) / 360;
|
float fovy_rad_half = (fovy * G_PI) / 360;
|
||||||
|
|
||||||
GLfloat m[16];
|
GLfloat m[16];
|
||||||
|
|
||||||
@ -646,22 +646,22 @@ cogl_perspective (CoglFixed fovy,
|
|||||||
* precision
|
* precision
|
||||||
*/
|
*/
|
||||||
ymax =
|
ymax =
|
||||||
COGL_FIXED_MUL (zNear,
|
(zNear *
|
||||||
COGL_FIXED_FAST_DIV (cogl_fixed_sin (fovy_rad_half),
|
(sinf (fovy_rad_half) /
|
||||||
cogl_fixed_cos (fovy_rad_half)));
|
cosf (fovy_rad_half)));
|
||||||
|
|
||||||
xmax = COGL_FIXED_MUL (ymax, aspect);
|
xmax = (ymax * aspect);
|
||||||
|
|
||||||
x = COGL_FIXED_FAST_DIV (zNear, xmax);
|
x = (zNear / xmax);
|
||||||
y = COGL_FIXED_FAST_DIV (zNear, ymax);
|
y = (zNear / ymax);
|
||||||
c = COGL_FIXED_FAST_DIV (-(zFar + zNear), ( zFar - zNear));
|
c = (-(zFar + zNear) / ( zFar - zNear));
|
||||||
d = cogl_fixed_mul_div (-(2 * zFar), zNear, (zFar - zNear));
|
d = cogl_fixed_mul_div (-(2 * zFar), zNear, (zFar - zNear));
|
||||||
|
|
||||||
#define M(row,col) m[col*4+row]
|
#define M(row,col) m[col*4+row]
|
||||||
M(0,0) = COGL_FIXED_TO_FLOAT (x);
|
M(0,0) = (x);
|
||||||
M(1,1) = COGL_FIXED_TO_FLOAT (y);
|
M(1,1) = (y);
|
||||||
M(2,2) = COGL_FIXED_TO_FLOAT (c);
|
M(2,2) = (c);
|
||||||
M(2,3) = COGL_FIXED_TO_FLOAT (d);
|
M(2,3) = (d);
|
||||||
M(3,2) = -1.0F;
|
M(3,2) = -1.0F;
|
||||||
|
|
||||||
GE( glMultMatrixf (m) );
|
GE( glMultMatrixf (m) );
|
||||||
@ -672,22 +672,22 @@ cogl_perspective (CoglFixed fovy,
|
|||||||
memset (ctx->inverse_projection, 0, sizeof (GLfloat) * 16);
|
memset (ctx->inverse_projection, 0, sizeof (GLfloat) * 16);
|
||||||
|
|
||||||
#define m ctx->inverse_projection
|
#define m ctx->inverse_projection
|
||||||
M(0, 0) = 1.0f / COGL_FIXED_TO_FLOAT (x);
|
M(0, 0) = 1.0f / (x);
|
||||||
M(1, 1) = 1.0f / COGL_FIXED_TO_FLOAT (y);
|
M(1, 1) = 1.0f / (y);
|
||||||
M(2, 3) = -1.0f;
|
M(2, 3) = -1.0f;
|
||||||
M(3, 2) = 1.0f / COGL_FIXED_TO_FLOAT (d);
|
M(3, 2) = 1.0f / (d);
|
||||||
M(3, 3) = COGL_FIXED_TO_FLOAT (c) / COGL_FIXED_TO_FLOAT (d);
|
M(3, 3) = (c) / (d);
|
||||||
#undef m
|
#undef m
|
||||||
#undef M
|
#undef M
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_frustum (CoglFixed left,
|
cogl_frustum (float left,
|
||||||
CoglFixed right,
|
float right,
|
||||||
CoglFixed bottom,
|
float bottom,
|
||||||
CoglFixed top,
|
float top,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far)
|
float z_far)
|
||||||
{
|
{
|
||||||
GLfloat c, d;
|
GLfloat c, d;
|
||||||
|
|
||||||
@ -696,32 +696,32 @@ cogl_frustum (CoglFixed left,
|
|||||||
GE( glMatrixMode (GL_PROJECTION) );
|
GE( glMatrixMode (GL_PROJECTION) );
|
||||||
GE( glLoadIdentity () );
|
GE( glLoadIdentity () );
|
||||||
|
|
||||||
GE( glFrustum (COGL_FIXED_TO_DOUBLE (left),
|
GE( glFrustum ((double)(left),
|
||||||
COGL_FIXED_TO_DOUBLE (right),
|
(double)(right),
|
||||||
COGL_FIXED_TO_DOUBLE (bottom),
|
(double)(bottom),
|
||||||
COGL_FIXED_TO_DOUBLE (top),
|
(double)(top),
|
||||||
COGL_FIXED_TO_DOUBLE (z_near),
|
(double)(z_near),
|
||||||
COGL_FIXED_TO_DOUBLE (z_far)) );
|
(double)(z_far)) );
|
||||||
|
|
||||||
GE( glMatrixMode (GL_MODELVIEW) );
|
GE( glMatrixMode (GL_MODELVIEW) );
|
||||||
|
|
||||||
/* Calculate and store the inverse of the matrix */
|
/* Calculate and store the inverse of the matrix */
|
||||||
memset (ctx->inverse_projection, 0, sizeof (GLfloat) * 16);
|
memset (ctx->inverse_projection, 0, sizeof (GLfloat) * 16);
|
||||||
|
|
||||||
c = -COGL_FIXED_TO_FLOAT (z_far + z_near)
|
c = - (z_far + z_near)
|
||||||
/ COGL_FIXED_TO_FLOAT (z_far - z_near);
|
/ (z_far - z_near);
|
||||||
d = -COGL_FIXED_TO_FLOAT (2 * COGL_FIXED_MUL (z_far, z_near))
|
d = - (2 * (z_far * z_near))
|
||||||
/ COGL_FIXED_TO_FLOAT (z_far - z_near);
|
/ (z_far - z_near);
|
||||||
|
|
||||||
#define M(row,col) ctx->inverse_projection[col*4+row]
|
#define M(row,col) ctx->inverse_projection[col*4+row]
|
||||||
M(0,0) = COGL_FIXED_TO_FLOAT (right - left)
|
M(0,0) = (right - left)
|
||||||
/ COGL_FIXED_TO_FLOAT (2 * z_near);
|
/ (2 * z_near);
|
||||||
M(0,3) = COGL_FIXED_TO_FLOAT (right + left)
|
M(0,3) = (right + left)
|
||||||
/ COGL_FIXED_TO_FLOAT (2 * z_near);
|
/ (2 * z_near);
|
||||||
M(1,1) = COGL_FIXED_TO_FLOAT (top - bottom)
|
M(1,1) = (top - bottom)
|
||||||
/ COGL_FIXED_TO_FLOAT (2 * z_near);
|
/ (2 * z_near);
|
||||||
M(1,3) = COGL_FIXED_TO_FLOAT (top + bottom)
|
M(1,3) = (top + bottom)
|
||||||
/ COGL_FIXED_TO_FLOAT (2 * z_near);
|
/ (2 * z_near);
|
||||||
M(2,3) = -1.0f;
|
M(2,3) = -1.0f;
|
||||||
M(3,2) = 1.0f / d;
|
M(3,2) = 1.0f / d;
|
||||||
M(3,3) = c / d;
|
M(3,3) = c / d;
|
||||||
@ -738,10 +738,10 @@ cogl_viewport (guint width,
|
|||||||
void
|
void
|
||||||
cogl_setup_viewport (guint width,
|
cogl_setup_viewport (guint width,
|
||||||
guint height,
|
guint height,
|
||||||
CoglFixed fovy,
|
float fovy,
|
||||||
CoglFixed aspect,
|
float aspect,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far)
|
float z_far)
|
||||||
{
|
{
|
||||||
GLfloat z_camera;
|
GLfloat z_camera;
|
||||||
|
|
||||||
@ -769,13 +769,13 @@ cogl_setup_viewport (guint width,
|
|||||||
z_camera = DEFAULT_Z_CAMERA;
|
z_camera = DEFAULT_Z_CAMERA;
|
||||||
|
|
||||||
|
|
||||||
if (fovy != COGL_FIXED_60)
|
if (fovy != 60.0)
|
||||||
{
|
{
|
||||||
CoglFixed fovy_rad = COGL_FIXED_MUL (fovy, COGL_FIXED_PI) / 180;
|
float fovy_rad = (fovy * G_PI) / 180;
|
||||||
|
|
||||||
z_camera =
|
z_camera =
|
||||||
COGL_FIXED_TO_FLOAT (COGL_FIXED_DIV (cogl_fixed_sin (fovy_rad),
|
((sinf (fovy_rad) /
|
||||||
cogl_fixed_cos (fovy_rad)) >> 1);
|
cosf (fovy_rad)) >> 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
GE( glTranslatef (-0.5f, -0.5f, -z_camera) );
|
GE( glTranslatef (-0.5f, -0.5f, -z_camera) );
|
||||||
@ -1164,75 +1164,75 @@ cogl_features_available (CoglFeatureFlags features)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_get_modelview_matrix (CoglFixed m[16])
|
cogl_get_modelview_matrix (float m[16])
|
||||||
{
|
{
|
||||||
GLdouble md[16];
|
GLdouble md[16];
|
||||||
|
|
||||||
glGetDoublev(GL_MODELVIEW_MATRIX, &md[0]);
|
glGetDoublev(GL_MODELVIEW_MATRIX, &md[0]);
|
||||||
|
|
||||||
#define M(m,row,col) m[col*4+row]
|
#define M(m,row,col) m[col*4+row]
|
||||||
M(m,0,0) = COGL_FIXED_FROM_FLOAT (M(md,0,0));
|
M(m,0,0) = (M(md,0,0));
|
||||||
M(m,0,1) = COGL_FIXED_FROM_FLOAT (M(md,0,1));
|
M(m,0,1) = (M(md,0,1));
|
||||||
M(m,0,2) = COGL_FIXED_FROM_FLOAT (M(md,0,2));
|
M(m,0,2) = (M(md,0,2));
|
||||||
M(m,0,3) = COGL_FIXED_FROM_FLOAT (M(md,0,3));
|
M(m,0,3) = (M(md,0,3));
|
||||||
|
|
||||||
M(m,1,0) = COGL_FIXED_FROM_FLOAT (M(md,1,0));
|
M(m,1,0) = (M(md,1,0));
|
||||||
M(m,1,1) = COGL_FIXED_FROM_FLOAT (M(md,1,1));
|
M(m,1,1) = (M(md,1,1));
|
||||||
M(m,1,2) = COGL_FIXED_FROM_FLOAT (M(md,1,2));
|
M(m,1,2) = (M(md,1,2));
|
||||||
M(m,1,3) = COGL_FIXED_FROM_FLOAT (M(md,1,3));
|
M(m,1,3) = (M(md,1,3));
|
||||||
|
|
||||||
M(m,2,0) = COGL_FIXED_FROM_FLOAT (M(md,2,0));
|
M(m,2,0) = (M(md,2,0));
|
||||||
M(m,2,1) = COGL_FIXED_FROM_FLOAT (M(md,2,1));
|
M(m,2,1) = (M(md,2,1));
|
||||||
M(m,2,2) = COGL_FIXED_FROM_FLOAT (M(md,2,2));
|
M(m,2,2) = (M(md,2,2));
|
||||||
M(m,2,3) = COGL_FIXED_FROM_FLOAT (M(md,2,3));
|
M(m,2,3) = (M(md,2,3));
|
||||||
|
|
||||||
M(m,3,0) = COGL_FIXED_FROM_FLOAT (M(md,3,0));
|
M(m,3,0) = (M(md,3,0));
|
||||||
M(m,3,1) = COGL_FIXED_FROM_FLOAT (M(md,3,1));
|
M(m,3,1) = (M(md,3,1));
|
||||||
M(m,3,2) = COGL_FIXED_FROM_FLOAT (M(md,3,2));
|
M(m,3,2) = (M(md,3,2));
|
||||||
M(m,3,3) = COGL_FIXED_FROM_FLOAT (M(md,3,3));
|
M(m,3,3) = (M(md,3,3));
|
||||||
#undef M
|
#undef M
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_get_projection_matrix (CoglFixed m[16])
|
cogl_get_projection_matrix (float m[16])
|
||||||
{
|
{
|
||||||
GLdouble md[16];
|
GLdouble md[16];
|
||||||
|
|
||||||
glGetDoublev(GL_PROJECTION_MATRIX, &md[0]);
|
glGetDoublev(GL_PROJECTION_MATRIX, &md[0]);
|
||||||
|
|
||||||
#define M(m,row,col) m[col*4+row]
|
#define M(m,row,col) m[col*4+row]
|
||||||
M(m,0,0) = COGL_FIXED_FROM_FLOAT (M(md,0,0));
|
M(m,0,0) = (M(md,0,0));
|
||||||
M(m,0,1) = COGL_FIXED_FROM_FLOAT (M(md,0,1));
|
M(m,0,1) = (M(md,0,1));
|
||||||
M(m,0,2) = COGL_FIXED_FROM_FLOAT (M(md,0,2));
|
M(m,0,2) = (M(md,0,2));
|
||||||
M(m,0,3) = COGL_FIXED_FROM_FLOAT (M(md,0,3));
|
M(m,0,3) = (M(md,0,3));
|
||||||
|
|
||||||
M(m,1,0) = COGL_FIXED_FROM_FLOAT (M(md,1,0));
|
M(m,1,0) = (M(md,1,0));
|
||||||
M(m,1,1) = COGL_FIXED_FROM_FLOAT (M(md,1,1));
|
M(m,1,1) = (M(md,1,1));
|
||||||
M(m,1,2) = COGL_FIXED_FROM_FLOAT (M(md,1,2));
|
M(m,1,2) = (M(md,1,2));
|
||||||
M(m,1,3) = COGL_FIXED_FROM_FLOAT (M(md,1,3));
|
M(m,1,3) = (M(md,1,3));
|
||||||
|
|
||||||
M(m,2,0) = COGL_FIXED_FROM_FLOAT (M(md,2,0));
|
M(m,2,0) = (M(md,2,0));
|
||||||
M(m,2,1) = COGL_FIXED_FROM_FLOAT (M(md,2,1));
|
M(m,2,1) = (M(md,2,1));
|
||||||
M(m,2,2) = COGL_FIXED_FROM_FLOAT (M(md,2,2));
|
M(m,2,2) = (M(md,2,2));
|
||||||
M(m,2,3) = COGL_FIXED_FROM_FLOAT (M(md,2,3));
|
M(m,2,3) = (M(md,2,3));
|
||||||
|
|
||||||
M(m,3,0) = COGL_FIXED_FROM_FLOAT (M(md,3,0));
|
M(m,3,0) = (M(md,3,0));
|
||||||
M(m,3,1) = COGL_FIXED_FROM_FLOAT (M(md,3,1));
|
M(m,3,1) = (M(md,3,1));
|
||||||
M(m,3,2) = COGL_FIXED_FROM_FLOAT (M(md,3,2));
|
M(m,3,2) = (M(md,3,2));
|
||||||
M(m,3,3) = COGL_FIXED_FROM_FLOAT (M(md,3,3));
|
M(m,3,3) = (M(md,3,3));
|
||||||
#undef M
|
#undef M
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_get_viewport (CoglFixed v[4])
|
cogl_get_viewport (float v[4])
|
||||||
{
|
{
|
||||||
GLdouble vd[4];
|
GLdouble vd[4];
|
||||||
glGetDoublev(GL_VIEWPORT, &vd[0]);
|
glGetDoublev(GL_VIEWPORT, &vd[0]);
|
||||||
|
|
||||||
v[0] = COGL_FIXED_FROM_FLOAT (vd[0]);
|
v[0] = (vd[0]);
|
||||||
v[1] = COGL_FIXED_FROM_FLOAT (vd[1]);
|
v[1] = (vd[1]);
|
||||||
v[2] = COGL_FIXED_FROM_FLOAT (vd[2]);
|
v[2] = (vd[2]);
|
||||||
v[3] = COGL_FIXED_FROM_FLOAT (vd[3]);
|
v[3] = (vd[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1263,9 +1263,9 @@ cogl_get_bitmasks (gint *red, gint *green, gint *blue, gint *alpha)
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_fog_set (const CoglColor *fog_color,
|
cogl_fog_set (const CoglColor *fog_color,
|
||||||
CoglFixed density,
|
float density,
|
||||||
CoglFixed start,
|
float start,
|
||||||
CoglFixed stop)
|
float stop)
|
||||||
{
|
{
|
||||||
GLfloat fogColor[4];
|
GLfloat fogColor[4];
|
||||||
|
|
||||||
@ -1281,8 +1281,8 @@ cogl_fog_set (const CoglColor *fog_color,
|
|||||||
glFogi (GL_FOG_MODE, GL_LINEAR);
|
glFogi (GL_FOG_MODE, GL_LINEAR);
|
||||||
glHint (GL_FOG_HINT, GL_NICEST);
|
glHint (GL_FOG_HINT, GL_NICEST);
|
||||||
|
|
||||||
glFogf (GL_FOG_DENSITY, COGL_FIXED_TO_FLOAT (density));
|
glFogf (GL_FOG_DENSITY, (density));
|
||||||
glFogf (GL_FOG_START, COGL_FIXED_TO_FLOAT (start));
|
glFogf (GL_FOG_START, (start));
|
||||||
glFogf (GL_FOG_END, COGL_FIXED_TO_FLOAT (stop));
|
glFogf (GL_FOG_END, (stop));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ cogl_create_context ()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Init OpenGL state */
|
/* Init OpenGL state */
|
||||||
GE( cogl_wrap_glTexEnvx (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) );
|
GE( cogl_wrap_glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) );
|
||||||
GE( glColorMask (TRUE, TRUE, TRUE, FALSE) );
|
GE( glColorMask (TRUE, TRUE, TRUE, FALSE) );
|
||||||
GE( glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) );
|
GE( glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) );
|
||||||
cogl_enable (0);
|
cogl_enable (0);
|
||||||
|
@ -53,15 +53,15 @@ typedef struct
|
|||||||
gboolean enable_backface_culling;
|
gboolean enable_backface_culling;
|
||||||
|
|
||||||
/* Primitives */
|
/* Primitives */
|
||||||
CoglFixedVec2 path_start;
|
floatVec2 path_start;
|
||||||
CoglFixedVec2 path_pen;
|
floatVec2 path_pen;
|
||||||
GArray *path_nodes;
|
GArray *path_nodes;
|
||||||
guint last_path;
|
guint last_path;
|
||||||
CoglFixedVec2 path_nodes_min;
|
floatVec2 path_nodes_min;
|
||||||
CoglFixedVec2 path_nodes_max;
|
floatVec2 path_nodes_max;
|
||||||
|
|
||||||
/* Cache of inverse projection matrix */
|
/* Cache of inverse projection matrix */
|
||||||
CoglFixed inverse_projection[16];
|
float inverse_projection[16];
|
||||||
|
|
||||||
/* Textures */
|
/* Textures */
|
||||||
GArray *texture_handles;
|
GArray *texture_handles;
|
||||||
|
@ -227,12 +227,12 @@ cogl_draw_buffer (CoglBufferTarget target, CoglHandle offscreen)
|
|||||||
|
|
||||||
/* Setup new viewport and matrices */
|
/* Setup new viewport and matrices */
|
||||||
GE( glViewport (0, 0, fbo->width, fbo->height) );
|
GE( glViewport (0, 0, fbo->width, fbo->height) );
|
||||||
GE( cogl_wrap_glTranslatex (-COGL_FIXED_1, -COGL_FIXED_1, 0) );
|
GE( cogl_wrap_glTranslatef (-1.0, -1.0, 0) );
|
||||||
GE( cogl_wrap_glScalex (COGL_FIXED_DIV (COGL_FIXED_FROM_INT (2),
|
GE( cogl_wrap_glScalef (((float)(2) /
|
||||||
COGL_FIXED_FROM_INT (fbo->width)),
|
(float)(fbo->width)),
|
||||||
COGL_FIXED_DIV (COGL_FIXED_FROM_INT (2),
|
((float)(2) /
|
||||||
COGL_FIXED_FROM_INT (fbo->height)),
|
(float)(fbo->height)),
|
||||||
COGL_FIXED_1) );
|
1.0) );
|
||||||
|
|
||||||
/* Bind offscreen framebuffer object */
|
/* Bind offscreen framebuffer object */
|
||||||
GE( glBindFramebuffer (GL_FRAMEBUFFER, fbo->gl_handle) );
|
GE( glBindFramebuffer (GL_FRAMEBUFFER, fbo->gl_handle) );
|
||||||
|
@ -104,7 +104,7 @@ cogl_gles2_wrapper_create_shader (GLenum type, const char *source)
|
|||||||
void
|
void
|
||||||
cogl_gles2_wrapper_init (CoglGles2Wrapper *wrapper)
|
cogl_gles2_wrapper_init (CoglGles2Wrapper *wrapper)
|
||||||
{
|
{
|
||||||
GLfixed default_fog_color[4] = { 0, 0, 0, 0 };
|
GLfloat default_fog_color[4] = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
memset (wrapper, 0, sizeof (CoglGles2Wrapper));
|
memset (wrapper, 0, sizeof (CoglGles2Wrapper));
|
||||||
|
|
||||||
@ -118,11 +118,11 @@ cogl_gles2_wrapper_init (CoglGles2Wrapper *wrapper)
|
|||||||
|
|
||||||
/* Initialize the fogging options */
|
/* Initialize the fogging options */
|
||||||
cogl_wrap_glDisable (GL_FOG);
|
cogl_wrap_glDisable (GL_FOG);
|
||||||
cogl_wrap_glFogx (GL_FOG_MODE, GL_LINEAR);
|
cogl_wrap_glFogf (GL_FOG_MODE, GL_LINEAR);
|
||||||
cogl_wrap_glFogx (GL_FOG_DENSITY, COGL_FIXED_1);
|
cogl_wrap_glFogf (GL_FOG_DENSITY, 1.0);
|
||||||
cogl_wrap_glFogx (GL_FOG_START, 0);
|
cogl_wrap_glFogf (GL_FOG_START, 0);
|
||||||
cogl_wrap_glFogx (GL_FOG_END, 1);
|
cogl_wrap_glFogf (GL_FOG_END, 1);
|
||||||
cogl_wrap_glFogxv (GL_FOG_COLOR, default_fog_color);
|
cogl_wrap_glFogfv (GL_FOG_COLOR, default_fog_color);
|
||||||
|
|
||||||
/* Initialize alpha testing */
|
/* Initialize alpha testing */
|
||||||
cogl_wrap_glDisable (GL_ALPHA_TEST);
|
cogl_wrap_glDisable (GL_ALPHA_TEST);
|
||||||
@ -517,10 +517,10 @@ cogl_gles2_wrapper_update_matrix (CoglGles2Wrapper *wrapper, GLenum matrix_num)
|
|||||||
void
|
void
|
||||||
cogl_wrap_glClearColorx (GLclampx r, GLclampx g, GLclampx b, GLclampx a)
|
cogl_wrap_glClearColorx (GLclampx r, GLclampx g, GLclampx b, GLclampx a)
|
||||||
{
|
{
|
||||||
glClearColor (COGL_FIXED_TO_FLOAT (r),
|
glClearColor ( (r),
|
||||||
COGL_FIXED_TO_FLOAT (g),
|
(g),
|
||||||
COGL_FIXED_TO_FLOAT (b),
|
(b),
|
||||||
COGL_FIXED_TO_FLOAT (a));
|
(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -666,58 +666,58 @@ cogl_wrap_glMultMatrix (const float *m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glMultMatrixx (const GLfixed *m)
|
cogl_wrap_glMultMatrixf (const GLfloat *m)
|
||||||
{
|
{
|
||||||
float new_matrix[16];
|
float new_matrix[16];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
new_matrix[i] = COGL_FIXED_TO_FLOAT (m[i]);
|
new_matrix[i] = (m[i]);
|
||||||
|
|
||||||
cogl_wrap_glMultMatrix (new_matrix);
|
cogl_wrap_glMultMatrix (new_matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glFrustumx (GLfixed left, GLfixed right,
|
cogl_wrap_glFrustumf (GLfloat left, GLfloat right,
|
||||||
GLfixed bottom, GLfixed top,
|
GLfloat bottom, GLfloat top,
|
||||||
GLfixed z_near, GLfixed z_far)
|
GLfloat z_near, GLfloat z_far)
|
||||||
{
|
{
|
||||||
float matrix[16];
|
float matrix[16];
|
||||||
float two_near = COGL_FIXED_TO_FLOAT (2 * z_near);
|
float two_near = (2 * z_near);
|
||||||
|
|
||||||
memset (matrix, 0, sizeof (matrix));
|
memset (matrix, 0, sizeof (matrix));
|
||||||
|
|
||||||
matrix[0] = two_near / COGL_FIXED_TO_FLOAT (right - left);
|
matrix[0] = two_near / (right - left);
|
||||||
matrix[5] = two_near / COGL_FIXED_TO_FLOAT (top - bottom);
|
matrix[5] = two_near / (top - bottom);
|
||||||
matrix[8] = COGL_FIXED_TO_FLOAT (right + left)
|
matrix[8] = (right + left)
|
||||||
/ COGL_FIXED_TO_FLOAT (right - left);
|
/ (right - left);
|
||||||
matrix[9] = COGL_FIXED_TO_FLOAT (top + bottom)
|
matrix[9] = (top + bottom)
|
||||||
/ COGL_FIXED_TO_FLOAT (top - bottom);
|
/ (top - bottom);
|
||||||
matrix[10] = -COGL_FIXED_TO_FLOAT (z_far + z_near)
|
matrix[10] = - (z_far + z_near)
|
||||||
/ COGL_FIXED_TO_FLOAT (z_far - z_near);
|
/ (z_far - z_near);
|
||||||
matrix[11] = -1.0f;
|
matrix[11] = -1.0f;
|
||||||
matrix[14] = -two_near * COGL_FIXED_TO_FLOAT (z_far)
|
matrix[14] = -two_near * (z_far)
|
||||||
/ COGL_FIXED_TO_FLOAT (z_far - z_near);
|
/ (z_far - z_near);
|
||||||
|
|
||||||
cogl_wrap_glMultMatrix (matrix);
|
cogl_wrap_glMultMatrix (matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glScalex (GLfixed x, GLfixed y, GLfixed z)
|
cogl_wrap_glScalef (GLfloat x, GLfloat y, GLfloat z)
|
||||||
{
|
{
|
||||||
float matrix[16];
|
float matrix[16];
|
||||||
|
|
||||||
memset (matrix, 0, sizeof (matrix));
|
memset (matrix, 0, sizeof (matrix));
|
||||||
matrix[0] = COGL_FIXED_TO_FLOAT (x);
|
matrix[0] = (x);
|
||||||
matrix[5] = COGL_FIXED_TO_FLOAT (y);
|
matrix[5] = (y);
|
||||||
matrix[10] = COGL_FIXED_TO_FLOAT (z);
|
matrix[10] = (z);
|
||||||
matrix[15] = 1.0f;
|
matrix[15] = 1.0f;
|
||||||
|
|
||||||
cogl_wrap_glMultMatrix (matrix);
|
cogl_wrap_glMultMatrix (matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glTranslatex (GLfixed x, GLfixed y, GLfixed z)
|
cogl_wrap_glTranslatef (GLfloat x, GLfloat y, GLfloat z)
|
||||||
{
|
{
|
||||||
float matrix[16];
|
float matrix[16];
|
||||||
|
|
||||||
@ -725,22 +725,22 @@ cogl_wrap_glTranslatex (GLfixed x, GLfixed y, GLfixed z)
|
|||||||
matrix[0] = 1.0f;
|
matrix[0] = 1.0f;
|
||||||
matrix[5] = 1.0f;
|
matrix[5] = 1.0f;
|
||||||
matrix[10] = 1.0f;
|
matrix[10] = 1.0f;
|
||||||
matrix[12] = COGL_FIXED_TO_FLOAT (x);
|
matrix[12] = (x);
|
||||||
matrix[13] = COGL_FIXED_TO_FLOAT (y);
|
matrix[13] = (y);
|
||||||
matrix[14] = COGL_FIXED_TO_FLOAT (z);
|
matrix[14] = (z);
|
||||||
matrix[15] = 1.0f;
|
matrix[15] = 1.0f;
|
||||||
|
|
||||||
cogl_wrap_glMultMatrix (matrix);
|
cogl_wrap_glMultMatrix (matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
|
cogl_wrap_glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
|
||||||
{
|
{
|
||||||
float matrix[16];
|
float matrix[16];
|
||||||
float xf = COGL_FIXED_TO_FLOAT (x);
|
float xf = (x);
|
||||||
float yf = COGL_FIXED_TO_FLOAT (y);
|
float yf = (y);
|
||||||
float zf = COGL_FIXED_TO_FLOAT (z);
|
float zf = (z);
|
||||||
float anglef = COGL_FIXED_TO_FLOAT (angle) * G_PI / 180.0f;
|
float anglef = (angle) * G_PI / 180.0f;
|
||||||
float c = cosf (anglef);
|
float c = cosf (anglef);
|
||||||
float s = sinf (anglef);
|
float s = sinf (anglef);
|
||||||
|
|
||||||
@ -768,21 +768,21 @@ cogl_wrap_glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
|
cogl_wrap_glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
|
||||||
GLfixed near, GLfixed far)
|
GLfloat near, GLfloat far)
|
||||||
{
|
{
|
||||||
float matrix[16];
|
float matrix[16];
|
||||||
float xrange = COGL_FIXED_TO_FLOAT (right - left);
|
float xrange = (right - left);
|
||||||
float yrange = COGL_FIXED_TO_FLOAT (top - bottom);
|
float yrange = (top - bottom);
|
||||||
float zrange = COGL_FIXED_TO_FLOAT (far - near);
|
float zrange = (far - near);
|
||||||
|
|
||||||
memset (matrix, 0, sizeof (matrix));
|
memset (matrix, 0, sizeof (matrix));
|
||||||
matrix[0] = 2.0f / xrange;
|
matrix[0] = 2.0f / xrange;
|
||||||
matrix[5] = 2.0f / yrange;
|
matrix[5] = 2.0f / yrange;
|
||||||
matrix[10] = 2.0f / zrange;
|
matrix[10] = 2.0f / zrange;
|
||||||
matrix[12] = COGL_FIXED_TO_FLOAT (right + left) / xrange;
|
matrix[12] = (right + left) / xrange;
|
||||||
matrix[13] = COGL_FIXED_TO_FLOAT (top + bottom) / yrange;
|
matrix[13] = (top + bottom) / yrange;
|
||||||
matrix[14] = COGL_FIXED_TO_FLOAT (far + near) / zrange;
|
matrix[14] = (far + near) / zrange;
|
||||||
matrix[15] = 1.0f;
|
matrix[15] = 1.0f;
|
||||||
|
|
||||||
cogl_wrap_glMultMatrix (matrix);
|
cogl_wrap_glMultMatrix (matrix);
|
||||||
@ -1033,7 +1033,7 @@ cogl_gles2_wrapper_bind_texture (GLenum target, GLuint texture,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glTexEnvx (GLenum target, GLenum pname, GLfixed param)
|
cogl_wrap_glTexEnvf (GLenum target, GLenum pname, GLfloat param)
|
||||||
{
|
{
|
||||||
/* This function is only used to set the texture mode once to
|
/* This function is only used to set the texture mode once to
|
||||||
GL_MODULATE. The shader is hard-coded to modulate the texture so
|
GL_MODULATE. The shader is hard-coded to modulate the texture so
|
||||||
@ -1143,17 +1143,17 @@ cogl_wrap_glAlphaFunc (GLenum func, GLclampf ref)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glColor4x (GLclampx r, GLclampx g, GLclampx b, GLclampx a)
|
cogl_wrap_glColor4f (GLclampx r, GLclampx g, GLclampx b, GLclampx a)
|
||||||
{
|
{
|
||||||
glVertexAttrib4f (COGL_GLES2_WRAPPER_COLOR_ATTRIB,
|
glVertexAttrib4f (COGL_GLES2_WRAPPER_COLOR_ATTRIB,
|
||||||
COGL_FIXED_TO_FLOAT (r),
|
(r),
|
||||||
COGL_FIXED_TO_FLOAT (g),
|
(g),
|
||||||
COGL_FIXED_TO_FLOAT (b),
|
(b),
|
||||||
COGL_FIXED_TO_FLOAT (a));
|
(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glClipPlanex (GLenum plane, GLfixed *equation)
|
cogl_wrap_glClipPlanef (GLenum plane, GLfloat *equation)
|
||||||
{
|
{
|
||||||
/* FIXME */
|
/* FIXME */
|
||||||
}
|
}
|
||||||
@ -1161,10 +1161,10 @@ cogl_wrap_glClipPlanex (GLenum plane, GLfixed *equation)
|
|||||||
static void
|
static void
|
||||||
cogl_gles2_float_array_to_fixed (int size,
|
cogl_gles2_float_array_to_fixed (int size,
|
||||||
const GLfloat *floats,
|
const GLfloat *floats,
|
||||||
GLfixed *fixeds)
|
GLfloat *fixeds)
|
||||||
{
|
{
|
||||||
while (size-- > 0)
|
while (size-- > 0)
|
||||||
*(fixeds++) = COGL_FIXED_FROM_FLOAT (*(floats++));
|
*(fixeds++) = (*(floats++));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1185,7 +1185,7 @@ cogl_wrap_glGetIntegerv (GLenum pname, GLint *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glGetFixedv (GLenum pname, GLfixed *params)
|
cogl_wrap_glGetFixedv (GLenum pname, GLfloat *params)
|
||||||
{
|
{
|
||||||
_COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
|
_COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
|
||||||
|
|
||||||
@ -1215,7 +1215,7 @@ cogl_wrap_glGetFixedv (GLenum pname, GLfixed *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glFogx (GLenum pname, GLfixed param)
|
cogl_wrap_glFogf (GLenum pname, GLfloat param)
|
||||||
{
|
{
|
||||||
_COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
|
_COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
|
||||||
|
|
||||||
@ -1227,23 +1227,23 @@ cogl_wrap_glFogx (GLenum pname, GLfixed param)
|
|||||||
|
|
||||||
case GL_FOG_DENSITY:
|
case GL_FOG_DENSITY:
|
||||||
_COGL_GLES2_CHANGE_UNIFORM (w, FOG_DENSITY, fog_density,
|
_COGL_GLES2_CHANGE_UNIFORM (w, FOG_DENSITY, fog_density,
|
||||||
COGL_FIXED_TO_FLOAT (param));
|
(param));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GL_FOG_START:
|
case GL_FOG_START:
|
||||||
_COGL_GLES2_CHANGE_UNIFORM (w, FOG_START, fog_start,
|
_COGL_GLES2_CHANGE_UNIFORM (w, FOG_START, fog_start,
|
||||||
COGL_FIXED_TO_FLOAT (param));
|
(param));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GL_FOG_END:
|
case GL_FOG_END:
|
||||||
_COGL_GLES2_CHANGE_UNIFORM (w, FOG_END, fog_end,
|
_COGL_GLES2_CHANGE_UNIFORM (w, FOG_END, fog_end,
|
||||||
COGL_FIXED_TO_FLOAT (param));
|
(param));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_wrap_glFogxv (GLenum pname, const GLfixed *params)
|
cogl_wrap_glFogfv (GLenum pname, const GLfloat *params)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
_COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
|
_COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
|
||||||
@ -1251,7 +1251,7 @@ cogl_wrap_glFogxv (GLenum pname, const GLfixed *params)
|
|||||||
if (pname == GL_FOG_COLOR)
|
if (pname == GL_FOG_COLOR)
|
||||||
{
|
{
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
w->fog_color[i] = COGL_FIXED_TO_FLOAT (params[i]);
|
w->fog_color[i] = (params[i]);
|
||||||
|
|
||||||
w->dirty_uniforms |= COGL_GLES2_DIRTY_FOG_COLOR;
|
w->dirty_uniforms |= COGL_GLES2_DIRTY_FOG_COLOR;
|
||||||
}
|
}
|
||||||
|
@ -209,16 +209,16 @@ void cogl_wrap_glPushMatrix ();
|
|||||||
void cogl_wrap_glPopMatrix ();
|
void cogl_wrap_glPopMatrix ();
|
||||||
void cogl_wrap_glMatrixMode (GLenum mode);
|
void cogl_wrap_glMatrixMode (GLenum mode);
|
||||||
void cogl_wrap_glLoadIdentity ();
|
void cogl_wrap_glLoadIdentity ();
|
||||||
void cogl_wrap_glMultMatrixx (const GLfixed *m);
|
void cogl_wrap_glMultMatrixf (const GLfloat *m);
|
||||||
void cogl_wrap_glFrustumx (GLfixed left, GLfixed right,
|
void cogl_wrap_glFrustumf (GLfloat left, GLfloat right,
|
||||||
GLfixed bottom, GLfixed top,
|
GLfloat bottom, GLfloat top,
|
||||||
GLfixed z_near, GLfixed z_far);
|
GLfloat z_near, GLfloat z_far);
|
||||||
void cogl_wrap_glScalex (GLfixed x, GLfixed y, GLfixed z);
|
void cogl_wrap_glScalef (GLfloat x, GLfloat y, GLfloat z);
|
||||||
void cogl_wrap_glTranslatex (GLfixed x, GLfixed y, GLfixed z);
|
void cogl_wrap_glTranslatef (GLfloat x, GLfloat y, GLfloat z);
|
||||||
void cogl_wrap_glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
|
void cogl_wrap_glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
|
||||||
void cogl_wrap_glOrthox (GLfixed left, GLfixed right,
|
void cogl_wrap_glOrthof (GLfloat left, GLfloat right,
|
||||||
GLfixed bottom, GLfixed top,
|
GLfloat bottom, GLfloat top,
|
||||||
GLfixed near, GLfixed far);
|
GLfloat near, GLfloat far);
|
||||||
|
|
||||||
void cogl_wrap_glEnable (GLenum cap);
|
void cogl_wrap_glEnable (GLenum cap);
|
||||||
void cogl_wrap_glDisable (GLenum cap);
|
void cogl_wrap_glDisable (GLenum cap);
|
||||||
@ -232,22 +232,22 @@ void cogl_wrap_glColorPointer (GLint size, GLenum type, GLsizei stride,
|
|||||||
void cogl_wrap_glNormalPointer (GLenum type, GLsizei stride,
|
void cogl_wrap_glNormalPointer (GLenum type, GLsizei stride,
|
||||||
const GLvoid *pointer);
|
const GLvoid *pointer);
|
||||||
|
|
||||||
void cogl_wrap_glTexEnvx (GLenum target, GLenum pname, GLfixed param);
|
void cogl_wrap_glTexEnvf (GLenum target, GLenum pname, GLfloat param);
|
||||||
|
|
||||||
void cogl_wrap_glEnableClientState (GLenum array);
|
void cogl_wrap_glEnableClientState (GLenum array);
|
||||||
void cogl_wrap_glDisableClientState (GLenum array);
|
void cogl_wrap_glDisableClientState (GLenum array);
|
||||||
|
|
||||||
void cogl_wrap_glAlphaFunc (GLenum func, GLclampf ref);
|
void cogl_wrap_glAlphaFunc (GLenum func, GLclampf ref);
|
||||||
|
|
||||||
void cogl_wrap_glColor4x (GLclampx r, GLclampx g, GLclampx b, GLclampx a);
|
void cogl_wrap_glColor4f (GLclampx r, GLclampx g, GLclampx b, GLclampx a);
|
||||||
|
|
||||||
void cogl_wrap_glClipPlanex (GLenum plane, GLfixed *equation);
|
void cogl_wrap_glClipPlanef (GLenum plane, GLfloat *equation);
|
||||||
|
|
||||||
void cogl_wrap_glGetIntegerv (GLenum pname, GLint *params);
|
void cogl_wrap_glGetIntegerv (GLenum pname, GLint *params);
|
||||||
void cogl_wrap_glGetFixedv (GLenum pname, GLfixed *params);
|
void cogl_wrap_glGetFixedv (GLenum pname, GLfloat *params);
|
||||||
|
|
||||||
void cogl_wrap_glFogx (GLenum pname, GLfixed param);
|
void cogl_wrap_glFogf (GLenum pname, GLfloat param);
|
||||||
void cogl_wrap_glFogxv (GLenum pname, const GLfixed *params);
|
void cogl_wrap_glFogfv (GLenum pname, const GLfloat *params);
|
||||||
|
|
||||||
void cogl_wrap_glDrawArrays (GLenum mode, GLint first, GLsizei count);
|
void cogl_wrap_glDrawArrays (GLenum mode, GLint first, GLsizei count);
|
||||||
void cogl_wrap_glDrawElements (GLenum mode, GLsizei count, GLenum type,
|
void cogl_wrap_glDrawElements (GLenum mode, GLsizei count, GLenum type,
|
||||||
@ -280,28 +280,28 @@ void _cogl_gles2_clear_cache_for_program (CoglHandle program);
|
|||||||
#define cogl_wrap_glPopMatrix glPopMatrix
|
#define cogl_wrap_glPopMatrix glPopMatrix
|
||||||
#define cogl_wrap_glMatrixMode glMatrixMode
|
#define cogl_wrap_glMatrixMode glMatrixMode
|
||||||
#define cogl_wrap_glLoadIdentity glLoadIdentity
|
#define cogl_wrap_glLoadIdentity glLoadIdentity
|
||||||
#define cogl_wrap_glMultMatrixx glMultMatrixx
|
#define cogl_wrap_glMultMatrixf glMultMatrixx
|
||||||
#define cogl_wrap_glFrustumx glFrustumx
|
#define cogl_wrap_glFrustumf glFrustumx
|
||||||
#define cogl_wrap_glScalex glScalex
|
#define cogl_wrap_glScalef glScalex
|
||||||
#define cogl_wrap_glTranslatex glTranslatex
|
#define cogl_wrap_glTranslatef glTranslatex
|
||||||
#define cogl_wrap_glRotatex glRotatex
|
#define cogl_wrap_glRotatef glRotatex
|
||||||
#define cogl_wrap_glOrthox glOrthox
|
#define cogl_wrap_glOrthof glOrthox
|
||||||
#define cogl_wrap_glEnable glEnable
|
#define cogl_wrap_glEnable glEnable
|
||||||
#define cogl_wrap_glDisable glDisable
|
#define cogl_wrap_glDisable glDisable
|
||||||
#define cogl_wrap_glTexCoordPointer glTexCoordPointer
|
#define cogl_wrap_glTexCoordPointer glTexCoordPointer
|
||||||
#define cogl_wrap_glVertexPointer glVertexPointer
|
#define cogl_wrap_glVertexPointer glVertexPointer
|
||||||
#define cogl_wrap_glColorPointer glColorPointer
|
#define cogl_wrap_glColorPointer glColorPointer
|
||||||
#define cogl_wrap_glNormalPointer glNormalPointer
|
#define cogl_wrap_glNormalPointer glNormalPointer
|
||||||
#define cogl_wrap_glTexEnvx glTexEnvx
|
#define cogl_wrap_glTexEnvf glTexEnvx
|
||||||
#define cogl_wrap_glEnableClientState glEnableClientState
|
#define cogl_wrap_glEnableClientState glEnableClientState
|
||||||
#define cogl_wrap_glDisableClientState glDisableClientState
|
#define cogl_wrap_glDisableClientState glDisableClientState
|
||||||
#define cogl_wrap_glAlphaFunc glAlphaFunc
|
#define cogl_wrap_glAlphaFunc glAlphaFunc
|
||||||
#define cogl_wrap_glColor4x glColor4x
|
#define cogl_wrap_glColor4f glColor4x
|
||||||
#define cogl_wrap_glClipPlanex glClipPlanex
|
#define cogl_wrap_glClipPlanef glClipPlanex
|
||||||
#define cogl_wrap_glGetIntegerv glGetIntegerv
|
#define cogl_wrap_glGetIntegerv glGetIntegerv
|
||||||
#define cogl_wrap_glGetFixedv glGetFixedv
|
#define cogl_wrap_glGetFixedv glGetFixedv
|
||||||
#define cogl_wrap_glFogx glFogx
|
#define cogl_wrap_glFogf glFogx
|
||||||
#define cogl_wrap_glFogxv glFogxv
|
#define cogl_wrap_glFogfv glFogxv
|
||||||
#define cogl_wrap_glTexParameteri glTexParameteri
|
#define cogl_wrap_glTexParameteri glTexParameteri
|
||||||
|
|
||||||
/* The extra third parameter of the bind texture wrapper isn't needed
|
/* The extra third parameter of the bind texture wrapper isn't needed
|
||||||
|
@ -64,12 +64,12 @@ _cogl_rectangle (gint x,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_rectanglex (CoglFixed x,
|
_cogl_rectanglex (float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
GLfixed rect_verts[8] = {
|
GLfloat rect_verts[8] = {
|
||||||
x, y,
|
x, y,
|
||||||
x + width, y,
|
x + width, y,
|
||||||
x, y + height,
|
x, y + height,
|
||||||
@ -89,8 +89,8 @@ _cogl_rectanglex (CoglFixed x,
|
|||||||
|
|
||||||
void
|
void
|
||||||
_cogl_path_add_node (gboolean new_sub_path,
|
_cogl_path_add_node (gboolean new_sub_path,
|
||||||
CoglFixed x,
|
float x,
|
||||||
CoglFixed y)
|
float y)
|
||||||
{
|
{
|
||||||
CoglPathNode new_node;
|
CoglPathNode new_node;
|
||||||
|
|
||||||
@ -147,19 +147,19 @@ _cogl_path_stroke_nodes ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_path_get_bounds (CoglFixedVec2 nodes_min,
|
_cogl_path_get_bounds (floatVec2 nodes_min,
|
||||||
CoglFixedVec2 nodes_max,
|
floatVec2 nodes_max,
|
||||||
gint *bounds_x,
|
gint *bounds_x,
|
||||||
gint *bounds_y,
|
gint *bounds_y,
|
||||||
guint *bounds_w,
|
guint *bounds_w,
|
||||||
guint *bounds_h)
|
guint *bounds_h)
|
||||||
{
|
{
|
||||||
*bounds_x = COGL_FIXED_FLOOR (nodes_min.x);
|
*bounds_x = floorf (nodes_min.x);
|
||||||
*bounds_y = COGL_FIXED_FLOOR (nodes_min.y);
|
*bounds_y = floorf (nodes_min.y);
|
||||||
*bounds_w = COGL_FIXED_CEIL (nodes_max.x
|
*bounds_w = ceilf (nodes_max.x
|
||||||
- COGL_FIXED_FROM_INT (*bounds_x));
|
- (float)(*bounds_x));
|
||||||
*bounds_h = COGL_FIXED_CEIL (nodes_max.y
|
*bounds_h = ceilf (nodes_max.y
|
||||||
- COGL_FIXED_FROM_INT (*bounds_y));
|
- (float)(*bounds_y));
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint compare_ints (gconstpointer a,
|
static gint compare_ints (gconstpointer a,
|
||||||
@ -169,8 +169,8 @@ static gint compare_ints (gconstpointer a,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_add_path_to_stencil_buffer (CoglFixedVec2 nodes_min,
|
_cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
|
||||||
CoglFixedVec2 nodes_max,
|
floatVec2 nodes_max,
|
||||||
guint path_size,
|
guint path_size,
|
||||||
CoglPathNode *path,
|
CoglPathNode *path,
|
||||||
gboolean merge)
|
gboolean merge)
|
||||||
@ -244,12 +244,12 @@ _cogl_add_path_to_stencil_buffer (CoglFixedVec2 nodes_min,
|
|||||||
GE( cogl_wrap_glMatrixMode (GL_PROJECTION) );
|
GE( cogl_wrap_glMatrixMode (GL_PROJECTION) );
|
||||||
GE( cogl_wrap_glPushMatrix () );
|
GE( cogl_wrap_glPushMatrix () );
|
||||||
GE( cogl_wrap_glLoadIdentity () );
|
GE( cogl_wrap_glLoadIdentity () );
|
||||||
cogl_rectanglex (-COGL_FIXED_1, -COGL_FIXED_1,
|
cogl_rectanglex (-1.0, -1.0,
|
||||||
COGL_FIXED_FROM_INT (2),
|
(float)(2),
|
||||||
COGL_FIXED_FROM_INT (2));
|
(float)(2));
|
||||||
cogl_rectanglex (-COGL_FIXED_1, -COGL_FIXED_1,
|
cogl_rectanglex (-1.0, -1.0,
|
||||||
COGL_FIXED_FROM_INT (2),
|
(float)(2),
|
||||||
COGL_FIXED_FROM_INT (2));
|
(float)(2));
|
||||||
GE( cogl_wrap_glPopMatrix () );
|
GE( cogl_wrap_glPopMatrix () );
|
||||||
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
||||||
GE( cogl_wrap_glPopMatrix () );
|
GE( cogl_wrap_glPopMatrix () );
|
||||||
@ -292,14 +292,14 @@ _cogl_path_fill_nodes_scanlines (CoglPathNode *path,
|
|||||||
for (i=0; i < bounds_h; i++)
|
for (i=0; i < bounds_h; i++)
|
||||||
scanlines[i]=NULL;
|
scanlines[i]=NULL;
|
||||||
|
|
||||||
first_x = prev_x = COGL_FIXED_TO_INT (path->x);
|
first_x = prev_x = (path->x);
|
||||||
first_y = prev_y = COGL_FIXED_TO_INT (path->y);
|
first_y = prev_y = (path->y);
|
||||||
|
|
||||||
/* create scanline intersection list */
|
/* create scanline intersection list */
|
||||||
for (i=1; i < path_size; i++)
|
for (i=1; i < path_size; i++)
|
||||||
{
|
{
|
||||||
gint dest_x = COGL_FIXED_TO_INT (path[i].x);
|
gint dest_x = (path[i].x);
|
||||||
gint dest_y = COGL_FIXED_TO_INT (path[i].y);
|
gint dest_y = (path[i].y);
|
||||||
gint ydir;
|
gint ydir;
|
||||||
gint dx;
|
gint dx;
|
||||||
gint dy;
|
gint dy;
|
||||||
@ -362,7 +362,7 @@ _cogl_path_fill_nodes_scanlines (CoglPathNode *path,
|
|||||||
{
|
{
|
||||||
gint spans = 0;
|
gint spans = 0;
|
||||||
gint span_no;
|
gint span_no;
|
||||||
GLfixed *coords;
|
GLfloat *coords;
|
||||||
|
|
||||||
/* count number of spans */
|
/* count number of spans */
|
||||||
for (i=0; i < bounds_h; i++)
|
for (i=0; i < bounds_h; i++)
|
||||||
@ -380,7 +380,7 @@ _cogl_path_fill_nodes_scanlines (CoglPathNode *path,
|
|||||||
iter = next->next;
|
iter = next->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
coords = g_malloc0 (spans * sizeof (GLfixed) * 3 * 2 * 2);
|
coords = g_malloc0 (spans * sizeof (GLfloat) * 3 * 2 * 2);
|
||||||
|
|
||||||
span_no = 0;
|
span_no = 0;
|
||||||
/* build list of triangles */
|
/* build list of triangles */
|
||||||
@ -390,15 +390,15 @@ _cogl_path_fill_nodes_scanlines (CoglPathNode *path,
|
|||||||
while (iter)
|
while (iter)
|
||||||
{
|
{
|
||||||
GSList *next = iter->next;
|
GSList *next = iter->next;
|
||||||
GLfixed x0, x1;
|
GLfloat x0, x1;
|
||||||
GLfixed y0, y1;
|
GLfloat y0, y1;
|
||||||
if (!next)
|
if (!next)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
x0 = COGL_FIXED_FROM_INT (GPOINTER_TO_INT (iter->data));
|
x0 = (float)(GPOINTER_TO_INT (iter->data));
|
||||||
x1 = COGL_FIXED_FROM_INT (GPOINTER_TO_INT (next->data));
|
x1 = (float)(GPOINTER_TO_INT (next->data));
|
||||||
y0 = COGL_FIXED_FROM_INT (bounds_y + i);
|
y0 = (float)(bounds_y + i);
|
||||||
y1 = COGL_FIXED_FROM_INT (bounds_y + i + 1) + 2048;
|
y1 = (float)(bounds_y + i + 1) + 2048;
|
||||||
/* render scanlines 1.0625 high to avoid gaps when
|
/* render scanlines 1.0625 high to avoid gaps when
|
||||||
transformed */
|
transformed */
|
||||||
|
|
||||||
|
@ -63,15 +63,15 @@ struct _CoglSpanIter
|
|||||||
gint index;
|
gint index;
|
||||||
GArray *array;
|
GArray *array;
|
||||||
CoglTexSliceSpan *span;
|
CoglTexSliceSpan *span;
|
||||||
CoglFixed pos;
|
float pos;
|
||||||
CoglFixed next_pos;
|
float next_pos;
|
||||||
CoglFixed origin;
|
float origin;
|
||||||
CoglFixed cover_start;
|
float cover_start;
|
||||||
CoglFixed cover_end;
|
float cover_end;
|
||||||
CoglFixed intersect_start;
|
float intersect_start;
|
||||||
CoglFixed intersect_end;
|
float intersect_end;
|
||||||
CoglFixed intersect_start_local;
|
float intersect_start_local;
|
||||||
CoglFixed intersect_end_local;
|
float intersect_end_local;
|
||||||
gboolean intersects;
|
gboolean intersects;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ _cogl_span_iter_update (CoglSpanIter *iter)
|
|||||||
|
|
||||||
/* Offset next position by span size */
|
/* Offset next position by span size */
|
||||||
iter->next_pos = iter->pos +
|
iter->next_pos = iter->pos +
|
||||||
COGL_FIXED_FROM_INT (iter->span->size - iter->span->waste);
|
(float)(iter->span->size - iter->span->waste);
|
||||||
|
|
||||||
/* Check if span intersects the area to cover */
|
/* Check if span intersects the area to cover */
|
||||||
if (iter->next_pos <= iter->cover_start ||
|
if (iter->next_pos <= iter->cover_start ||
|
||||||
@ -145,9 +145,9 @@ _cogl_span_iter_update (CoglSpanIter *iter)
|
|||||||
static void
|
static void
|
||||||
_cogl_span_iter_begin (CoglSpanIter *iter,
|
_cogl_span_iter_begin (CoglSpanIter *iter,
|
||||||
GArray *array,
|
GArray *array,
|
||||||
CoglFixed origin,
|
float origin,
|
||||||
CoglFixed cover_start,
|
float cover_start,
|
||||||
CoglFixed cover_end)
|
float cover_end)
|
||||||
{
|
{
|
||||||
/* Copy info */
|
/* Copy info */
|
||||||
iter->index = 0;
|
iter->index = 0;
|
||||||
@ -398,10 +398,10 @@ _cogl_texture_draw_and_read (CoglTexture *tex,
|
|||||||
GLint *viewport)
|
GLint *viewport)
|
||||||
{
|
{
|
||||||
gint bpp;
|
gint bpp;
|
||||||
CoglFixed rx1, ry1;
|
float rx1, ry1;
|
||||||
CoglFixed rx2, ry2;
|
float rx2, ry2;
|
||||||
CoglFixed tx1, ty1;
|
float tx1, ty1;
|
||||||
CoglFixed tx2, ty2;
|
float tx2, ty2;
|
||||||
int bw, bh;
|
int bw, bh;
|
||||||
CoglBitmap rect_bmp;
|
CoglBitmap rect_bmp;
|
||||||
CoglHandle handle;
|
CoglHandle handle;
|
||||||
@ -422,9 +422,9 @@ _cogl_texture_draw_and_read (CoglTexture *tex,
|
|||||||
/* Draw the texture image */
|
/* Draw the texture image */
|
||||||
cogl_texture_rectangle (handle,
|
cogl_texture_rectangle (handle,
|
||||||
0, 0,
|
0, 0,
|
||||||
COGL_FIXED_FROM_INT (tex->bitmap.width),
|
(float)(tex->bitmap.width),
|
||||||
COGL_FIXED_FROM_INT (tex->bitmap.height),
|
(float)(tex->bitmap.height),
|
||||||
0, 0, COGL_FIXED_1, COGL_FIXED_1);
|
0, 0, 1.0, 1.0);
|
||||||
|
|
||||||
/* Read into target bitmap */
|
/* Read into target bitmap */
|
||||||
prep_for_gl_pixels_download (tex->bitmap.rowstride);
|
prep_for_gl_pixels_download (tex->bitmap.rowstride);
|
||||||
@ -439,7 +439,7 @@ _cogl_texture_draw_and_read (CoglTexture *tex,
|
|||||||
ry1 = 0; ry2 = 0;
|
ry1 = 0; ry2 = 0;
|
||||||
ty1 = 0; ty2 = 0;
|
ty1 = 0; ty2 = 0;
|
||||||
|
|
||||||
#define CFIX COGL_FIXED_FROM_INT
|
#define CFIX (float)
|
||||||
|
|
||||||
/* Walk Y axis until whole bitmap height consumed */
|
/* Walk Y axis until whole bitmap height consumed */
|
||||||
for (bh = tex->bitmap.height; bh > 0; bh -= viewport[3])
|
for (bh = tex->bitmap.height; bh > 0; bh -= viewport[3])
|
||||||
@ -450,7 +450,7 @@ _cogl_texture_draw_and_read (CoglTexture *tex,
|
|||||||
|
|
||||||
/* Normalized texture Y coords */
|
/* Normalized texture Y coords */
|
||||||
ty1 = ty2;
|
ty1 = ty2;
|
||||||
ty2 = COGL_FIXED_DIV (CFIX (ry2), CFIX (tex->bitmap.height));
|
ty2 = (CFIX (ry2) / CFIX (tex->bitmap.height));
|
||||||
|
|
||||||
rx1 = 0; rx2 = 0;
|
rx1 = 0; rx2 = 0;
|
||||||
tx1 = 0; tx2 = 0;
|
tx1 = 0; tx2 = 0;
|
||||||
@ -464,7 +464,7 @@ _cogl_texture_draw_and_read (CoglTexture *tex,
|
|||||||
|
|
||||||
/* Normalized texture X coords */
|
/* Normalized texture X coords */
|
||||||
tx1 = tx2;
|
tx1 = tx2;
|
||||||
tx2 = COGL_FIXED_DIV (CFIX (rx2), CFIX (tex->bitmap.width));
|
tx2 = (CFIX (rx2) / CFIX (tex->bitmap.width));
|
||||||
|
|
||||||
/* Clear buffer with transparent black, draw with white
|
/* Clear buffer with transparent black, draw with white
|
||||||
for direct copy to framebuffer */
|
for direct copy to framebuffer */
|
||||||
@ -544,10 +544,10 @@ _cogl_texture_download_from_gl (CoglTexture *tex,
|
|||||||
GE( cogl_wrap_glPushMatrix () );
|
GE( cogl_wrap_glPushMatrix () );
|
||||||
GE( cogl_wrap_glLoadIdentity () );
|
GE( cogl_wrap_glLoadIdentity () );
|
||||||
|
|
||||||
GE( cogl_wrap_glOrthox (0, COGL_FIXED_FROM_INT (viewport[2]),
|
GE( cogl_wrap_glOrthof (0, (float)(viewport[2]),
|
||||||
0, COGL_FIXED_FROM_INT (viewport[3]),
|
0, (float)(viewport[3]),
|
||||||
COGL_FIXED_FROM_INT (0),
|
(float)(0),
|
||||||
COGL_FIXED_FROM_INT (100)) );
|
(float)(100)) );
|
||||||
|
|
||||||
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
||||||
GE( cogl_wrap_glPushMatrix () );
|
GE( cogl_wrap_glPushMatrix () );
|
||||||
@ -662,8 +662,8 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
/* Iterate vertical spans */
|
/* Iterate vertical spans */
|
||||||
for (source_y = src_y,
|
for (source_y = src_y,
|
||||||
_cogl_span_iter_begin (&y_iter, tex->slice_y_spans,
|
_cogl_span_iter_begin (&y_iter, tex->slice_y_spans,
|
||||||
0, COGL_FIXED_FROM_INT (dst_y),
|
0, (float)(dst_y),
|
||||||
COGL_FIXED_FROM_INT (dst_y + height));
|
(float)(dst_y + height));
|
||||||
|
|
||||||
!_cogl_span_iter_end (&y_iter);
|
!_cogl_span_iter_end (&y_iter);
|
||||||
|
|
||||||
@ -683,8 +683,8 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
/* Iterate horizontal spans */
|
/* Iterate horizontal spans */
|
||||||
for (source_x = src_x,
|
for (source_x = src_x,
|
||||||
_cogl_span_iter_begin (&x_iter, tex->slice_x_spans,
|
_cogl_span_iter_begin (&x_iter, tex->slice_x_spans,
|
||||||
0, COGL_FIXED_FROM_INT (dst_x),
|
0, (float)(dst_x),
|
||||||
COGL_FIXED_FROM_INT (dst_x + width));
|
(float)(dst_x + width));
|
||||||
|
|
||||||
!_cogl_span_iter_end (&x_iter);
|
!_cogl_span_iter_end (&x_iter);
|
||||||
|
|
||||||
@ -702,15 +702,15 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
x_iter.index);
|
x_iter.index);
|
||||||
|
|
||||||
/* Pick intersection width and height */
|
/* Pick intersection width and height */
|
||||||
inter_w = COGL_FIXED_TO_INT (x_iter.intersect_end -
|
inter_w = (x_iter.intersect_end -
|
||||||
x_iter.intersect_start);
|
x_iter.intersect_start);
|
||||||
inter_h = COGL_FIXED_TO_INT (y_iter.intersect_end -
|
inter_h = (y_iter.intersect_end -
|
||||||
y_iter.intersect_start);
|
y_iter.intersect_start);
|
||||||
|
|
||||||
/* Localize intersection top-left corner to slice*/
|
/* Localize intersection top-left corner to slice*/
|
||||||
local_x = COGL_FIXED_TO_INT (x_iter.intersect_start -
|
local_x = (x_iter.intersect_start -
|
||||||
x_iter.pos);
|
x_iter.pos);
|
||||||
local_y = COGL_FIXED_TO_INT (y_iter.intersect_start -
|
local_y = (y_iter.intersect_start -
|
||||||
y_iter.pos);
|
y_iter.pos);
|
||||||
|
|
||||||
/* Pick slice GL handle */
|
/* Pick slice GL handle */
|
||||||
@ -768,7 +768,7 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
guint wx, wy;
|
guint wx, wy;
|
||||||
|
|
||||||
src = source_bmp->data
|
src = source_bmp->data
|
||||||
+ (src_y + COGL_FIXED_TO_INT (y_iter.intersect_start)
|
+ (src_y + (y_iter.intersect_start)
|
||||||
- dst_y)
|
- dst_y)
|
||||||
* source_bmp->rowstride
|
* source_bmp->rowstride
|
||||||
+ (src_x + x_span->start + x_span->size - x_span->waste
|
+ (src_x + x_span->start + x_span->size - x_span->waste
|
||||||
@ -813,7 +813,7 @@ _cogl_texture_upload_subregion_to_gl (CoglTexture *tex,
|
|||||||
guint copy_width;
|
guint copy_width;
|
||||||
|
|
||||||
src = source_bmp->data
|
src = source_bmp->data
|
||||||
+ (src_x + COGL_FIXED_TO_INT (x_iter.intersect_start)
|
+ (src_x + (x_iter.intersect_start)
|
||||||
- dst_x)
|
- dst_x)
|
||||||
* bpp
|
* bpp
|
||||||
+ (src_y + y_span->start + y_span->size - y_span->waste
|
+ (src_y + y_span->start + y_span->size - y_span->waste
|
||||||
@ -2148,24 +2148,24 @@ _cogl_texture_add_quad_vertices (GLfloat x1, GLfloat y1,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_texture_quad_sw (CoglTexture *tex,
|
_cogl_texture_quad_sw (CoglTexture *tex,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2)
|
float ty2)
|
||||||
{
|
{
|
||||||
CoglSpanIter iter_x , iter_y;
|
CoglSpanIter iter_x , iter_y;
|
||||||
CoglFixed tw , th;
|
float tw , th;
|
||||||
CoglFixed tqx , tqy;
|
float tqx , tqy;
|
||||||
CoglFixed first_tx , first_ty;
|
float first_tx , first_ty;
|
||||||
CoglFixed first_qx , first_qy;
|
float first_qx , first_qy;
|
||||||
CoglFixed slice_tx1 , slice_ty1;
|
float slice_tx1 , slice_ty1;
|
||||||
CoglFixed slice_tx2 , slice_ty2;
|
float slice_tx2 , slice_ty2;
|
||||||
CoglFixed slice_qx1 , slice_qy1;
|
float slice_qx1 , slice_qy1;
|
||||||
CoglFixed slice_qx2 , slice_qy2;
|
float slice_qx2 , slice_qy2;
|
||||||
GLuint gl_handle;
|
GLuint gl_handle;
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
@ -2180,7 +2180,7 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
slices */
|
slices */
|
||||||
if (tx2 < tx1)
|
if (tx2 < tx1)
|
||||||
{
|
{
|
||||||
CoglFixed temp = x1;
|
float temp = x1;
|
||||||
x1 = x2;
|
x1 = x2;
|
||||||
x2 = temp;
|
x2 = temp;
|
||||||
temp = tx1;
|
temp = tx1;
|
||||||
@ -2189,7 +2189,7 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
}
|
}
|
||||||
if (ty2 < ty1)
|
if (ty2 < ty1)
|
||||||
{
|
{
|
||||||
CoglFixed temp = y1;
|
float temp = y1;
|
||||||
y1 = y2;
|
y1 = y2;
|
||||||
y2 = temp;
|
y2 = temp;
|
||||||
temp = ty1;
|
temp = ty1;
|
||||||
@ -2198,27 +2198,27 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Scale ratio from texture to quad widths */
|
/* Scale ratio from texture to quad widths */
|
||||||
tw = COGL_FIXED_FROM_INT (tex->bitmap.width);
|
tw = (float)(tex->bitmap.width);
|
||||||
th = COGL_FIXED_FROM_INT (tex->bitmap.height);
|
th = (float)(tex->bitmap.height);
|
||||||
|
|
||||||
tqx = COGL_FIXED_DIV (x2 - x1, COGL_FIXED_MUL (tw, (tx2 - tx1)));
|
tqx = (x2 - x1 / (tw * (tx2 - tx1)));
|
||||||
tqy = COGL_FIXED_DIV (y2 - y1, COGL_FIXED_MUL (th, (ty2 - ty1)));
|
tqy = (y2 - y1 / (th * (ty2 - ty1)));
|
||||||
|
|
||||||
/* Integral texture coordinate for first tile */
|
/* Integral texture coordinate for first tile */
|
||||||
first_tx = COGL_FIXED_FROM_INT (COGL_FIXED_FLOOR (tx1));
|
first_tx = (float)(floorf (tx1));
|
||||||
first_ty = COGL_FIXED_FROM_INT (COGL_FIXED_FLOOR (ty1));
|
first_ty = (float)(floorf (ty1));
|
||||||
|
|
||||||
/* Denormalize texture coordinates */
|
/* Denormalize texture coordinates */
|
||||||
first_tx = COGL_FIXED_MUL (first_tx, tw);
|
first_tx = (first_tx * tw);
|
||||||
first_ty = COGL_FIXED_MUL (first_ty, th);
|
first_ty = (first_ty * th);
|
||||||
tx1 = COGL_FIXED_MUL (tx1, tw);
|
tx1 = (tx1 * tw);
|
||||||
ty1 = COGL_FIXED_MUL (ty1, th);
|
ty1 = (ty1 * th);
|
||||||
tx2 = COGL_FIXED_MUL (tx2, tw);
|
tx2 = (tx2 * tw);
|
||||||
ty2 = COGL_FIXED_MUL (ty2, th);
|
ty2 = (ty2 * th);
|
||||||
|
|
||||||
/* Quad coordinate of the first tile */
|
/* Quad coordinate of the first tile */
|
||||||
first_qx = x1 - COGL_FIXED_MUL (tx1 - first_tx, tqx);
|
first_qx = x1 - (tx1 - first_tx * tqx);
|
||||||
first_qy = y1 - COGL_FIXED_MUL (ty1 - first_ty, tqy);
|
first_qy = y1 - (ty1 - first_ty * tqy);
|
||||||
|
|
||||||
|
|
||||||
/* Iterate until whole quad height covered */
|
/* Iterate until whole quad height covered */
|
||||||
@ -2232,10 +2232,10 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
|
|
||||||
/* Span-quad intersection in quad coordinates */
|
/* Span-quad intersection in quad coordinates */
|
||||||
slice_qy1 = first_qy +
|
slice_qy1 = first_qy +
|
||||||
COGL_FIXED_MUL (iter_y.intersect_start - first_ty, tqy);
|
(iter_y.intersect_start - first_ty * tqy);
|
||||||
|
|
||||||
slice_qy2 = first_qy +
|
slice_qy2 = first_qy +
|
||||||
COGL_FIXED_MUL (iter_y.intersect_end - first_ty, tqy);
|
(iter_y.intersect_end - first_ty * tqy);
|
||||||
|
|
||||||
/* Localize slice texture coordinates */
|
/* Localize slice texture coordinates */
|
||||||
slice_ty1 = iter_y.intersect_start - iter_y.pos;
|
slice_ty1 = iter_y.intersect_start - iter_y.pos;
|
||||||
@ -2257,10 +2257,10 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
|
|
||||||
/* Span-quad intersection in quad coordinates */
|
/* Span-quad intersection in quad coordinates */
|
||||||
slice_qx1 = first_qx +
|
slice_qx1 = first_qx +
|
||||||
COGL_FIXED_MUL (iter_x.intersect_start - first_tx, tqx);
|
(iter_x.intersect_start - first_tx * tqx);
|
||||||
|
|
||||||
slice_qx2 = first_qx +
|
slice_qx2 = first_qx +
|
||||||
COGL_FIXED_MUL (iter_x.intersect_end - first_tx, tqx);
|
(iter_x.intersect_end - first_tx * tqx);
|
||||||
|
|
||||||
/* Localize slice texture coordinates */
|
/* Localize slice texture coordinates */
|
||||||
slice_tx1 = iter_x.intersect_start - iter_x.pos;
|
slice_tx1 = iter_x.intersect_start - iter_x.pos;
|
||||||
@ -2273,14 +2273,14 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
|
|
||||||
#if COGL_DEBUG
|
#if COGL_DEBUG
|
||||||
printf("~~~~~ slice (%d,%d)\n", iter_x.index, iter_y.index);
|
printf("~~~~~ slice (%d,%d)\n", iter_x.index, iter_y.index);
|
||||||
printf("qx1: %f\n", COGL_FIXED_TO_FLOAT (slice_qx1));
|
printf("qx1: %f\n", (slice_qx1));
|
||||||
printf("qy1: %f\n", COGL_FIXED_TO_FLOAT (slice_qy1));
|
printf("qy1: %f\n", (slice_qy1));
|
||||||
printf("qx2: %f\n", COGL_FIXED_TO_FLOAT (slice_qx2));
|
printf("qx2: %f\n", (slice_qx2));
|
||||||
printf("qy2: %f\n", COGL_FIXED_TO_FLOAT (slice_qy2));
|
printf("qy2: %f\n", (slice_qy2));
|
||||||
printf("tx1: %f\n", COGL_FIXED_TO_FLOAT (slice_tx1));
|
printf("tx1: %f\n", (slice_tx1));
|
||||||
printf("ty1: %f\n", COGL_FIXED_TO_FLOAT (slice_ty1));
|
printf("ty1: %f\n", (slice_ty1));
|
||||||
printf("tx2: %f\n", COGL_FIXED_TO_FLOAT (slice_tx2));
|
printf("tx2: %f\n", (slice_tx2));
|
||||||
printf("ty2: %f\n", COGL_FIXED_TO_FLOAT (slice_ty2));
|
printf("ty2: %f\n", (slice_ty2));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Pick and bind opengl texture object */
|
/* Pick and bind opengl texture object */
|
||||||
@ -2297,28 +2297,28 @@ _cogl_texture_quad_sw (CoglTexture *tex,
|
|||||||
ctx->texture_current = gl_handle;
|
ctx->texture_current = gl_handle;
|
||||||
ctx->texture_format = tex->gl_intformat;
|
ctx->texture_format = tex->gl_intformat;
|
||||||
|
|
||||||
_cogl_texture_add_quad_vertices (COGL_FIXED_TO_FLOAT (slice_qx1),
|
_cogl_texture_add_quad_vertices ( (slice_qx1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_qy1),
|
(slice_qy1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_qx2),
|
(slice_qx2),
|
||||||
COGL_FIXED_TO_FLOAT (slice_qy2),
|
(slice_qy2),
|
||||||
COGL_FIXED_TO_FLOAT (slice_tx1),
|
(slice_tx1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_ty1),
|
(slice_ty1),
|
||||||
COGL_FIXED_TO_FLOAT (slice_tx2),
|
(slice_tx2),
|
||||||
COGL_FIXED_TO_FLOAT (slice_ty2));
|
(slice_ty2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cogl_texture_quad_hw (CoglTexture *tex,
|
_cogl_texture_quad_hw (CoglTexture *tex,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2)
|
float ty2)
|
||||||
{
|
{
|
||||||
GLuint gl_handle;
|
GLuint gl_handle;
|
||||||
CoglTexSliceSpan *x_span;
|
CoglTexSliceSpan *x_span;
|
||||||
@ -2352,19 +2352,19 @@ _cogl_texture_quad_hw (CoglTexture *tex,
|
|||||||
ty1 = ty1 * (y_span->size - y_span->waste) / y_span->size;
|
ty1 = ty1 * (y_span->size - y_span->waste) / y_span->size;
|
||||||
ty2 = ty2 * (y_span->size - y_span->waste) / y_span->size;
|
ty2 = ty2 * (y_span->size - y_span->waste) / y_span->size;
|
||||||
|
|
||||||
_cogl_texture_add_quad_vertices (COGL_FIXED_TO_FLOAT (x1),
|
_cogl_texture_add_quad_vertices ( (x1),
|
||||||
COGL_FIXED_TO_FLOAT (y1),
|
(y1),
|
||||||
COGL_FIXED_TO_FLOAT (x2),
|
(x2),
|
||||||
COGL_FIXED_TO_FLOAT (y2),
|
(y2),
|
||||||
COGL_FIXED_TO_FLOAT (tx1),
|
(tx1),
|
||||||
COGL_FIXED_TO_FLOAT (ty1),
|
(ty1),
|
||||||
COGL_FIXED_TO_FLOAT (tx2),
|
(tx2),
|
||||||
COGL_FIXED_TO_FLOAT (ty2));
|
(ty2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_texture_multiple_rectangles (CoglHandle handle,
|
cogl_texture_multiple_rectangles (CoglHandle handle,
|
||||||
const CoglFixed *verts,
|
const float *verts,
|
||||||
guint n_rects)
|
guint n_rects)
|
||||||
{
|
{
|
||||||
CoglTexture *tex;
|
CoglTexture *tex;
|
||||||
@ -2411,10 +2411,10 @@ cogl_texture_multiple_rectangles (CoglHandle handle,
|
|||||||
if (tex->slice_gl_handles->len == 1
|
if (tex->slice_gl_handles->len == 1
|
||||||
&& ((cogl_features_available (COGL_FEATURE_TEXTURE_NPOT)
|
&& ((cogl_features_available (COGL_FEATURE_TEXTURE_NPOT)
|
||||||
&& tex->gl_target == GL_TEXTURE_2D)
|
&& tex->gl_target == GL_TEXTURE_2D)
|
||||||
|| (verts[4] >= 0 && verts[4] <= COGL_FIXED_1
|
|| (verts[4] >= 0 && verts[4] <= 1.0
|
||||||
&& verts[6] >= 0 && verts[6] <= COGL_FIXED_1
|
&& verts[6] >= 0 && verts[6] <= 1.0
|
||||||
&& verts[5] >= 0 && verts[5] <= COGL_FIXED_1
|
&& verts[5] >= 0 && verts[5] <= 1.0
|
||||||
&& verts[7] >= 0 && verts[7] <= COGL_FIXED_1)))
|
&& verts[7] >= 0 && verts[7] <= 1.0)))
|
||||||
_cogl_texture_quad_hw (tex, verts[0],verts[1], verts[2],verts[3],
|
_cogl_texture_quad_hw (tex, verts[0],verts[1], verts[2],verts[3],
|
||||||
verts[4],verts[5], verts[6],verts[7]);
|
verts[4],verts[5], verts[6],verts[7]);
|
||||||
else
|
else
|
||||||
@ -2430,16 +2430,16 @@ cogl_texture_multiple_rectangles (CoglHandle handle,
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_texture_rectangle (CoglHandle handle,
|
cogl_texture_rectangle (CoglHandle handle,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1,
|
float y1,
|
||||||
CoglFixed x2,
|
float x2,
|
||||||
CoglFixed y2,
|
float y2,
|
||||||
CoglFixed tx1,
|
float tx1,
|
||||||
CoglFixed ty1,
|
float ty1,
|
||||||
CoglFixed tx2,
|
float tx2,
|
||||||
CoglFixed ty2)
|
float ty2)
|
||||||
{
|
{
|
||||||
CoglFixed verts[8];
|
float verts[8];
|
||||||
|
|
||||||
verts[0] = x1;
|
verts[0] = x1;
|
||||||
verts[1] = y1;
|
verts[1] = y1;
|
||||||
@ -2541,7 +2541,7 @@ cogl_texture_polygon (CoglHandle handle,
|
|||||||
OpenGL */
|
OpenGL */
|
||||||
for (i = 0; i < n_vertices; i++, p++)
|
for (i = 0; i < n_vertices; i++, p++)
|
||||||
{
|
{
|
||||||
#define CFX_F COGL_FIXED_TO_FLOAT
|
#define CFX_F
|
||||||
|
|
||||||
p->v[0] = CFX_F(vertices[i].x);
|
p->v[0] = CFX_F(vertices[i].x);
|
||||||
p->v[1] = CFX_F(vertices[i].y);
|
p->v[1] = CFX_F(vertices[i].y);
|
||||||
|
@ -116,41 +116,41 @@ cogl_pop_matrix (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_scale (CoglFixed x, CoglFixed y)
|
cogl_scale (float x, float y)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glScalex (x, y, COGL_FIXED_1) );
|
GE( cogl_wrap_glScalef (x, y, 1.0) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_translatex (CoglFixed x, CoglFixed y, CoglFixed z)
|
cogl_translatex (float x, float y, float z)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glTranslatex (x, y, z) );
|
GE( cogl_wrap_glTranslatef (x, y, z) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_translate (gint x, gint y, gint z)
|
cogl_translate (gint x, gint y, gint z)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glTranslatex (COGL_FIXED_FROM_INT(x),
|
GE( cogl_wrap_glTranslatef ((float)(x),
|
||||||
COGL_FIXED_FROM_INT(y),
|
(float)(y),
|
||||||
COGL_FIXED_FROM_INT(z)) );
|
(float)(z)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_rotatex (CoglFixed angle,
|
cogl_rotatex (float angle,
|
||||||
CoglFixed x,
|
float x,
|
||||||
CoglFixed y,
|
float y,
|
||||||
CoglFixed z)
|
float z)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glRotatex (angle,x,y,z) );
|
GE( cogl_wrap_glRotatef (angle,x,y,z) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_rotate (gint angle, gint x, gint y, gint z)
|
cogl_rotate (gint angle, gint x, gint y, gint z)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glRotatex (COGL_FIXED_FROM_INT(angle),
|
GE( cogl_wrap_glRotatef ((float)(angle),
|
||||||
COGL_FIXED_FROM_INT(x),
|
(float)(x),
|
||||||
COGL_FIXED_FROM_INT(y),
|
(float)(y),
|
||||||
COGL_FIXED_FROM_INT(z)) );
|
(float)(z)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
@ -315,7 +315,7 @@ cogl_set_source_color (const CoglColor *color)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
/* conversion can cause issues with picking on some gles implementations */
|
/* conversion can cause issues with picking on some gles implementations */
|
||||||
GE( cogl_wrap_glColor4x (cogl_color_get_red (color),
|
GE( cogl_wrap_glColor4f (cogl_color_get_red (color),
|
||||||
cogl_color_get_green (color),
|
cogl_color_get_green (color),
|
||||||
cogl_color_get_blue (color),
|
cogl_color_get_blue (color),
|
||||||
cogl_color_get_alpha (color)) );
|
cogl_color_get_alpha (color)) );
|
||||||
@ -326,22 +326,22 @@ cogl_set_source_color (const CoglColor *color)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
apply_matrix (const CoglFixed *matrix, CoglFixed *vertex)
|
apply_matrix (const float *matrix, float *vertex)
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
CoglFixed vertex_out[4] = { 0 };
|
float vertex_out[4] = { 0 };
|
||||||
|
|
||||||
for (y = 0; y < 4; y++)
|
for (y = 0; y < 4; y++)
|
||||||
for (x = 0; x < 4; x++)
|
for (x = 0; x < 4; x++)
|
||||||
vertex_out[y] += cogl_fixed_mul (vertex[x], matrix[y + x * 4]);
|
vertex_out[y] += (vertex[x] * matrix[y + x * 4]);
|
||||||
|
|
||||||
memcpy (vertex, vertex_out, sizeof (vertex_out));
|
memcpy (vertex, vertex_out, sizeof (vertex_out));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
project_vertex (CoglFixed *modelview,
|
project_vertex (float *modelview,
|
||||||
CoglFixed *project,
|
float *project,
|
||||||
CoglFixed *vertex)
|
float *vertex)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -351,21 +351,21 @@ project_vertex (CoglFixed *modelview,
|
|||||||
apply_matrix (project, vertex);
|
apply_matrix (project, vertex);
|
||||||
/* Convert from homogenized coordinates */
|
/* Convert from homogenized coordinates */
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
vertex[i] = cogl_fixed_div (vertex[i], vertex[3]);
|
vertex[i] = (vertex[i] / vertex[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_clip_plane (GLint plane_num,
|
set_clip_plane (GLint plane_num,
|
||||||
const CoglFixed *vertex_a,
|
const float *vertex_a,
|
||||||
const CoglFixed *vertex_b)
|
const float *vertex_b)
|
||||||
{
|
{
|
||||||
GLfixed plane[4];
|
GLfloat plane[4];
|
||||||
GLfixed angle;
|
GLfloat angle;
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
/* Calculate the angle between the axes and the line crossing the
|
/* Calculate the angle between the axes and the line crossing the
|
||||||
two points */
|
two points */
|
||||||
angle = cogl_fixed_mul (cogl_fixed_atan2 (vertex_b[1] - vertex_a[1],
|
angle = (atan2f (vertex_b[1] - vertex_a[1] *
|
||||||
vertex_b[0] - vertex_a[0]),
|
vertex_b[0] - vertex_a[0]),
|
||||||
COGL_RADIANS_TO_DEGREES);
|
COGL_RADIANS_TO_DEGREES);
|
||||||
|
|
||||||
@ -374,36 +374,36 @@ set_clip_plane (GLint plane_num,
|
|||||||
projection matrix so we can specify the plane in screen
|
projection matrix so we can specify the plane in screen
|
||||||
coordinates */
|
coordinates */
|
||||||
GE( cogl_wrap_glLoadIdentity () );
|
GE( cogl_wrap_glLoadIdentity () );
|
||||||
GE( cogl_wrap_glMultMatrixx ((GLfixed *) ctx->inverse_projection) );
|
GE( cogl_wrap_glMultMatrixf ((GLfloat *) ctx->inverse_projection) );
|
||||||
/* Rotate about point a */
|
/* Rotate about point a */
|
||||||
GE( cogl_wrap_glTranslatex (vertex_a[0], vertex_a[1], vertex_a[2]) );
|
GE( cogl_wrap_glTranslatef (vertex_a[0], vertex_a[1], vertex_a[2]) );
|
||||||
/* Rotate the plane by the calculated angle so that it will connect
|
/* Rotate the plane by the calculated angle so that it will connect
|
||||||
the two points */
|
the two points */
|
||||||
GE( cogl_wrap_glRotatex (angle, 0.0f, 0.0f, 1.0f) );
|
GE( cogl_wrap_glRotatef (angle, 0.0f, 0.0f, 1.0f) );
|
||||||
GE( cogl_wrap_glTranslatex (-vertex_a[0], -vertex_a[1], -vertex_a[2]) );
|
GE( cogl_wrap_glTranslatef (-vertex_a[0], -vertex_a[1], -vertex_a[2]) );
|
||||||
|
|
||||||
plane[0] = 0;
|
plane[0] = 0;
|
||||||
plane[1] = -COGL_FIXED_1;
|
plane[1] = -1.0;
|
||||||
plane[2] = 0;
|
plane[2] = 0;
|
||||||
plane[3] = vertex_a[1];
|
plane[3] = vertex_a[1];
|
||||||
GE( cogl_wrap_glClipPlanex (plane_num, plane) );
|
GE( cogl_wrap_glClipPlanef (plane_num, plane) );
|
||||||
|
|
||||||
GE( cogl_wrap_glPopMatrix () );
|
GE( cogl_wrap_glPopMatrix () );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_set_clip_planes (CoglFixed x_offset,
|
_cogl_set_clip_planes (float x_offset,
|
||||||
CoglFixed y_offset,
|
float y_offset,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height)
|
float height)
|
||||||
{
|
{
|
||||||
GLfixed modelview[16], projection[16];
|
GLfloat modelview[16], projection[16];
|
||||||
|
|
||||||
CoglFixed vertex_tl[4] = { x_offset, y_offset, 0, COGL_FIXED_1 };
|
float vertex_tl[4] = { x_offset, y_offset, 0, 1.0 };
|
||||||
CoglFixed vertex_tr[4] = { x_offset + width, y_offset, 0, COGL_FIXED_1 };
|
float vertex_tr[4] = { x_offset + width, y_offset, 0, 1.0 };
|
||||||
CoglFixed vertex_bl[4] = { x_offset, y_offset + height, 0, COGL_FIXED_1 };
|
float vertex_bl[4] = { x_offset, y_offset + height, 0, 1.0 };
|
||||||
CoglFixed vertex_br[4] = { x_offset + width, y_offset + height,
|
float vertex_br[4] = { x_offset + width, y_offset + height,
|
||||||
0, COGL_FIXED_1 };
|
0, 1.0 };
|
||||||
|
|
||||||
GE( cogl_wrap_glGetFixedv (GL_MODELVIEW_MATRIX, modelview) );
|
GE( cogl_wrap_glGetFixedv (GL_MODELVIEW_MATRIX, modelview) );
|
||||||
GE( cogl_wrap_glGetFixedv (GL_PROJECTION_MATRIX, projection) );
|
GE( cogl_wrap_glGetFixedv (GL_PROJECTION_MATRIX, projection) );
|
||||||
@ -421,7 +421,7 @@ _cogl_set_clip_planes (CoglFixed x_offset,
|
|||||||
if ((vertex_tl[0] < vertex_tr[0] ? 1 : 0)
|
if ((vertex_tl[0] < vertex_tr[0] ? 1 : 0)
|
||||||
!= (vertex_bl[1] < vertex_tl[1] ? 1 : 0))
|
!= (vertex_bl[1] < vertex_tl[1] ? 1 : 0))
|
||||||
{
|
{
|
||||||
CoglFixed temp[4];
|
float temp[4];
|
||||||
memcpy (temp, vertex_tl, sizeof (temp));
|
memcpy (temp, vertex_tl, sizeof (temp));
|
||||||
memcpy (vertex_tl, vertex_tr, sizeof (temp));
|
memcpy (vertex_tl, vertex_tr, sizeof (temp));
|
||||||
memcpy (vertex_tr, temp, sizeof (temp));
|
memcpy (vertex_tr, temp, sizeof (temp));
|
||||||
@ -437,10 +437,10 @@ _cogl_set_clip_planes (CoglFixed x_offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_add_stencil_clip (CoglFixed x_offset,
|
_cogl_add_stencil_clip (float x_offset,
|
||||||
CoglFixed y_offset,
|
float y_offset,
|
||||||
CoglFixed width,
|
float width,
|
||||||
CoglFixed height,
|
float height,
|
||||||
gboolean first)
|
gboolean first)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
@ -476,9 +476,9 @@ _cogl_add_stencil_clip (CoglFixed x_offset,
|
|||||||
GE( cogl_wrap_glMatrixMode (GL_PROJECTION) );
|
GE( cogl_wrap_glMatrixMode (GL_PROJECTION) );
|
||||||
GE( cogl_wrap_glPushMatrix () );
|
GE( cogl_wrap_glPushMatrix () );
|
||||||
GE( cogl_wrap_glLoadIdentity () );
|
GE( cogl_wrap_glLoadIdentity () );
|
||||||
cogl_rectanglex (-COGL_FIXED_1, -COGL_FIXED_1,
|
cogl_rectanglex (-1.0, -1.0,
|
||||||
COGL_FIXED_FROM_INT (2),
|
(float)(2),
|
||||||
COGL_FIXED_FROM_INT (2));
|
(float)(2));
|
||||||
GE( cogl_wrap_glPopMatrix () );
|
GE( cogl_wrap_glPopMatrix () );
|
||||||
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
||||||
GE( cogl_wrap_glPopMatrix () );
|
GE( cogl_wrap_glPopMatrix () );
|
||||||
@ -490,10 +490,10 @@ _cogl_add_stencil_clip (CoglFixed x_offset,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_set_matrix (const CoglFixed *matrix)
|
_cogl_set_matrix (const float *matrix)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glLoadIdentity () );
|
GE( cogl_wrap_glLoadIdentity () );
|
||||||
GE( cogl_wrap_glMultMatrixx (matrix) );
|
GE( cogl_wrap_glMultMatrixf (matrix) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -522,25 +522,25 @@ _cogl_disable_clip_planes (void)
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_alpha_func (COGLenum func,
|
cogl_alpha_func (COGLenum func,
|
||||||
CoglFixed ref)
|
float ref)
|
||||||
{
|
{
|
||||||
GE( cogl_wrap_glAlphaFunc (func, COGL_FIXED_TO_FLOAT(ref)) );
|
GE( cogl_wrap_glAlphaFunc (func, (ref)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fixed point implementation of the perspective function
|
* Fixed point implementation of the perspective function
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
cogl_perspective (CoglFixed fovy,
|
cogl_perspective (float fovy,
|
||||||
CoglFixed aspect,
|
float aspect,
|
||||||
CoglFixed zNear,
|
float zNear,
|
||||||
CoglFixed zFar)
|
float zFar)
|
||||||
{
|
{
|
||||||
CoglFixed xmax, ymax;
|
float xmax, ymax;
|
||||||
CoglFixed x, y, c, d;
|
float x, y, c, d;
|
||||||
CoglFixed fovy_rad_half = cogl_fixed_mul (fovy, COGL_FIXED_PI) / 360;
|
float fovy_rad_half = (fovy * G_PI) / 360;
|
||||||
|
|
||||||
GLfixed m[16];
|
GLfloat m[16];
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
@ -558,76 +558,76 @@ cogl_perspective (CoglFixed fovy,
|
|||||||
* 2) When working with small numbers, we can are loosing significant
|
* 2) When working with small numbers, we can are loosing significant
|
||||||
* precision
|
* precision
|
||||||
*/
|
*/
|
||||||
ymax = cogl_fixed_mul (zNear,
|
ymax = (zNear *
|
||||||
cogl_fixed_div (cogl_fixed_sin (fovy_rad_half),
|
(sinf (fovy_rad_half) /
|
||||||
cogl_fixed_cos (fovy_rad_half)));
|
cosf (fovy_rad_half)));
|
||||||
xmax = cogl_fixed_mul (ymax, aspect);
|
xmax = (ymax * aspect);
|
||||||
|
|
||||||
x = cogl_fixed_div (zNear, xmax);
|
x = (zNear / xmax);
|
||||||
y = cogl_fixed_div (zNear, ymax);
|
y = (zNear / ymax);
|
||||||
c = cogl_fixed_div (-(zFar + zNear), ( zFar - zNear));
|
c = (-(zFar + zNear) / ( zFar - zNear));
|
||||||
d = cogl_fixed_div (-(cogl_fixed_mul (2 * zFar, zNear)), (zFar - zNear));
|
d = (-((2 * zFar * zNear)) / (zFar - zNear));
|
||||||
|
|
||||||
#define M(row,col) m[col*4+row]
|
#define M(row,col) m[col*4+row]
|
||||||
M(0,0) = x;
|
M(0,0) = x;
|
||||||
M(1,1) = y;
|
M(1,1) = y;
|
||||||
M(2,2) = c;
|
M(2,2) = c;
|
||||||
M(2,3) = d;
|
M(2,3) = d;
|
||||||
M(3,2) = -COGL_FIXED_1;
|
M(3,2) = -1.0;
|
||||||
|
|
||||||
GE( cogl_wrap_glMultMatrixx (m) );
|
GE( cogl_wrap_glMultMatrixf (m) );
|
||||||
|
|
||||||
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
||||||
|
|
||||||
/* Calculate and store the inverse of the matrix */
|
/* Calculate and store the inverse of the matrix */
|
||||||
memset (ctx->inverse_projection, 0, sizeof (CoglFixed) * 16);
|
memset (ctx->inverse_projection, 0, sizeof (float) * 16);
|
||||||
|
|
||||||
#define m ctx->inverse_projection
|
#define m ctx->inverse_projection
|
||||||
M(0, 0) = cogl_fixed_div (COGL_FIXED_1, x);
|
M(0, 0) = (1.0 / x);
|
||||||
M(1, 1) = cogl_fixed_div (COGL_FIXED_1, y);
|
M(1, 1) = (1.0 / y);
|
||||||
M(2, 3) = -COGL_FIXED_1;
|
M(2, 3) = -1.0;
|
||||||
M(3, 2) = cogl_fixed_div (COGL_FIXED_1, d);
|
M(3, 2) = (1.0 / d);
|
||||||
M(3, 3) = cogl_fixed_div (c, d);
|
M(3, 3) = (c / d);
|
||||||
#undef m
|
#undef m
|
||||||
|
|
||||||
#undef M
|
#undef M
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_frustum (CoglFixed left,
|
cogl_frustum (float left,
|
||||||
CoglFixed right,
|
float right,
|
||||||
CoglFixed bottom,
|
float bottom,
|
||||||
CoglFixed top,
|
float top,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far)
|
float z_far)
|
||||||
{
|
{
|
||||||
CoglFixed c, d;
|
float c, d;
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
GE( cogl_wrap_glMatrixMode (GL_PROJECTION) );
|
GE( cogl_wrap_glMatrixMode (GL_PROJECTION) );
|
||||||
GE( cogl_wrap_glLoadIdentity () );
|
GE( cogl_wrap_glLoadIdentity () );
|
||||||
|
|
||||||
GE( cogl_wrap_glFrustumx (left, right,
|
GE( cogl_wrap_glFrustumf (left, right,
|
||||||
bottom, top,
|
bottom, top,
|
||||||
z_near, z_far) );
|
z_near, z_far) );
|
||||||
|
|
||||||
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
GE( cogl_wrap_glMatrixMode (GL_MODELVIEW) );
|
||||||
|
|
||||||
/* Calculate and store the inverse of the matrix */
|
/* Calculate and store the inverse of the matrix */
|
||||||
memset (ctx->inverse_projection, 0, sizeof (CoglFixed) * 16);
|
memset (ctx->inverse_projection, 0, sizeof (float) * 16);
|
||||||
|
|
||||||
c = -cogl_fixed_div (z_far + z_near, z_far - z_near);
|
c = -(z_far + z_near / z_far - z_near);
|
||||||
d = -cogl_fixed_div (2 * cogl_fixed_mul (z_far, z_near), z_far - z_near);
|
d = -(2 * (z_far * z_near) / z_far - z_near);
|
||||||
|
|
||||||
#define M(row,col) ctx->inverse_projection[col*4+row]
|
#define M(row,col) ctx->inverse_projection[col*4+row]
|
||||||
M(0,0) = cogl_fixed_div (right - left, 2 * z_near);
|
M(0,0) = (right - left / 2 * z_near);
|
||||||
M(0,3) = cogl_fixed_div (right + left, 2 * z_near);
|
M(0,3) = (right + left / 2 * z_near);
|
||||||
M(1,1) = cogl_fixed_div (top - bottom, 2 * z_near);
|
M(1,1) = (top - bottom / 2 * z_near);
|
||||||
M(1,3) = cogl_fixed_div (top + bottom, 2 * z_near);
|
M(1,3) = (top + bottom / 2 * z_near);
|
||||||
M(2,3) = -COGL_FIXED_1;
|
M(2,3) = -1.0;
|
||||||
M(3,2) = cogl_fixed_div (COGL_FIXED_1, d);
|
M(3,2) = (1.0 / d);
|
||||||
M(3,3) = cogl_fixed_div (c, d);
|
M(3,3) = (c / d);
|
||||||
#undef M
|
#undef M
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -641,19 +641,19 @@ cogl_viewport (guint width,
|
|||||||
void
|
void
|
||||||
cogl_setup_viewport (guint w,
|
cogl_setup_viewport (guint w,
|
||||||
guint h,
|
guint h,
|
||||||
CoglFixed fovy,
|
float fovy,
|
||||||
CoglFixed aspect,
|
float aspect,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far)
|
float z_far)
|
||||||
{
|
{
|
||||||
gint width = (gint) w;
|
gint width = (gint) w;
|
||||||
gint height = (gint) h;
|
gint height = (gint) h;
|
||||||
CoglFixed z_camera;
|
float z_camera;
|
||||||
|
|
||||||
GE( glViewport (0, 0, width, height) );
|
GE( glViewport (0, 0, width, height) );
|
||||||
|
|
||||||
/* For Ortho projection.
|
/* For Ortho projection.
|
||||||
* cogl_wrap_glOrthox (0, width << 16, 0, height << 16, -1 << 16, 1 << 16);
|
* cogl_wrap_glOrthof (0, width << 16, 0, height << 16, -1 << 16, 1 << 16);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cogl_perspective (fovy, aspect, z_near, z_far);
|
cogl_perspective (fovy, aspect, z_near, z_far);
|
||||||
@ -666,24 +666,24 @@ cogl_setup_viewport (guint w,
|
|||||||
* See comments in ../gl/cogl.c
|
* See comments in ../gl/cogl.c
|
||||||
*/
|
*/
|
||||||
#define DEFAULT_Z_CAMERA 0.869f
|
#define DEFAULT_Z_CAMERA 0.869f
|
||||||
z_camera = COGL_FIXED_FROM_FLOAT (DEFAULT_Z_CAMERA);
|
z_camera = (DEFAULT_Z_CAMERA);
|
||||||
|
|
||||||
if (fovy != COGL_FIXED_60)
|
if (fovy != 60.0)
|
||||||
{
|
{
|
||||||
CoglFixed fovy_rad = cogl_fixed_mul (fovy, COGL_FIXED_PI) / 180;
|
float fovy_rad = (fovy * G_PI) / 180;
|
||||||
|
|
||||||
z_camera = cogl_fixed_div (cogl_fixed_sin (fovy_rad),
|
z_camera = (sinf (fovy_rad) /
|
||||||
cogl_fixed_cos (fovy_rad)) >> 1;
|
cosf (fovy_rad)) >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GE( cogl_wrap_glTranslatex (-1 << 15, -1 << 15, -z_camera) );
|
GE( cogl_wrap_glTranslatef (-1 << 15, -1 << 15, -z_camera) );
|
||||||
|
|
||||||
GE( cogl_wrap_glScalex ( COGL_FIXED_1 / width,
|
GE( cogl_wrap_glScalef ( 1.0 / width,
|
||||||
-COGL_FIXED_1 / height,
|
-1.0 / height,
|
||||||
COGL_FIXED_1 / width) );
|
1.0 / width) );
|
||||||
|
|
||||||
GE( cogl_wrap_glTranslatex (0, -COGL_FIXED_1 * height, 0) );
|
GE( cogl_wrap_glTranslatef (0, -1.0 * height, 0) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -735,19 +735,19 @@ cogl_features_available (CoglFeatureFlags features)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_get_modelview_matrix (CoglFixed m[16])
|
cogl_get_modelview_matrix (float m[16])
|
||||||
{
|
{
|
||||||
cogl_wrap_glGetFixedv(GL_MODELVIEW_MATRIX, &m[0]);
|
cogl_wrap_glGetFixedv(GL_MODELVIEW_MATRIX, &m[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_get_projection_matrix (CoglFixed m[16])
|
cogl_get_projection_matrix (float m[16])
|
||||||
{
|
{
|
||||||
cogl_wrap_glGetFixedv(GL_PROJECTION_MATRIX, &m[0]);
|
cogl_wrap_glGetFixedv(GL_PROJECTION_MATRIX, &m[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cogl_get_viewport (CoglFixed v[4])
|
cogl_get_viewport (float v[4])
|
||||||
{
|
{
|
||||||
GLint viewport[4];
|
GLint viewport[4];
|
||||||
int i;
|
int i;
|
||||||
@ -755,7 +755,7 @@ cogl_get_viewport (CoglFixed v[4])
|
|||||||
cogl_wrap_glGetIntegerv (GL_VIEWPORT, viewport);
|
cogl_wrap_glGetIntegerv (GL_VIEWPORT, viewport);
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
v[i] = COGL_FIXED_FROM_INT (viewport[i]);
|
v[i] = (float)(viewport[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -773,11 +773,11 @@ cogl_get_bitmasks (gint *red, gint *green, gint *blue, gint *alpha)
|
|||||||
|
|
||||||
void
|
void
|
||||||
cogl_fog_set (const CoglColor *fog_color,
|
cogl_fog_set (const CoglColor *fog_color,
|
||||||
CoglFixed density,
|
float density,
|
||||||
CoglFixed z_near,
|
float z_near,
|
||||||
CoglFixed z_far)
|
float z_far)
|
||||||
{
|
{
|
||||||
GLfixed fogColor[4];
|
GLfloat fogColor[4];
|
||||||
|
|
||||||
fogColor[0] = cogl_color_get_red (fog_color);
|
fogColor[0] = cogl_color_get_red (fog_color);
|
||||||
fogColor[1] = cogl_color_get_green (fog_color);
|
fogColor[1] = cogl_color_get_green (fog_color);
|
||||||
@ -786,12 +786,12 @@ cogl_fog_set (const CoglColor *fog_color,
|
|||||||
|
|
||||||
cogl_wrap_glEnable (GL_FOG);
|
cogl_wrap_glEnable (GL_FOG);
|
||||||
|
|
||||||
cogl_wrap_glFogxv (GL_FOG_COLOR, fogColor);
|
cogl_wrap_glFogfv (GL_FOG_COLOR, fogColor);
|
||||||
|
|
||||||
cogl_wrap_glFogx (GL_FOG_MODE, GL_LINEAR);
|
cogl_wrap_glFogf (GL_FOG_MODE, GL_LINEAR);
|
||||||
glHint (GL_FOG_HINT, GL_NICEST);
|
glHint (GL_FOG_HINT, GL_NICEST);
|
||||||
|
|
||||||
cogl_wrap_glFogx (GL_FOG_DENSITY, (GLfixed) density);
|
cogl_wrap_glFogf (GL_FOG_DENSITY, (GLfloat) density);
|
||||||
cogl_wrap_glFogx (GL_FOG_START, (GLfixed) z_near);
|
cogl_wrap_glFogf (GL_FOG_START, (GLfloat) z_near);
|
||||||
cogl_wrap_glFogx (GL_FOG_END, (GLfixed) z_far);
|
cogl_wrap_glFogf (GL_FOG_END, (GLfloat) z_far);
|
||||||
}
|
}
|
||||||
|
@ -342,13 +342,13 @@ cogl_pango_glyph_cache_set (CoglPangoGlyphCache *cache,
|
|||||||
|
|
||||||
value = g_slice_new (CoglPangoGlyphCacheValue);
|
value = g_slice_new (CoglPangoGlyphCacheValue);
|
||||||
value->texture = cogl_texture_ref (band->texture);
|
value->texture = cogl_texture_ref (band->texture);
|
||||||
value->tx1 = COGL_FIXED_FROM_INT (band->space_remaining)
|
value->tx1 = (float)(band->space_remaining)
|
||||||
/ band->texture_size;
|
/ band->texture_size;
|
||||||
value->tx2 = COGL_FIXED_FROM_INT (band->space_remaining + width)
|
value->tx2 = (float)(band->space_remaining + width)
|
||||||
/ band->texture_size;
|
/ band->texture_size;
|
||||||
value->ty1 = COGL_FIXED_FROM_INT (band->top)
|
value->ty1 = (float)(band->top)
|
||||||
/ band->texture_size;
|
/ band->texture_size;
|
||||||
value->ty2 = COGL_FIXED_FROM_INT (band->top + height)
|
value->ty2 = (float)(band->top + height)
|
||||||
/ band->texture_size;
|
/ band->texture_size;
|
||||||
value->draw_x = draw_x;
|
value->draw_x = draw_x;
|
||||||
value->draw_y = draw_y;
|
value->draw_y = draw_y;
|
||||||
|
@ -37,10 +37,10 @@ struct _CoglPangoGlyphCacheValue
|
|||||||
{
|
{
|
||||||
CoglHandle texture;
|
CoglHandle texture;
|
||||||
|
|
||||||
CoglFixed tx1;
|
float tx1;
|
||||||
CoglFixed ty1;
|
float ty1;
|
||||||
CoglFixed tx2;
|
float tx2;
|
||||||
CoglFixed ty2;
|
float ty2;
|
||||||
|
|
||||||
int draw_x;
|
int draw_x;
|
||||||
int draw_y;
|
int draw_y;
|
||||||
|
@ -67,7 +67,7 @@ cogl_pango_renderer_glyphs_end (CoglPangoRenderer *priv)
|
|||||||
{
|
{
|
||||||
if (priv->glyph_rectangles->len > 0)
|
if (priv->glyph_rectangles->len > 0)
|
||||||
{
|
{
|
||||||
CoglFixed *rectangles = (CoglFixed *) priv->glyph_rectangles->data;
|
float *rectangles = (float *) priv->glyph_rectangles->data;
|
||||||
cogl_texture_multiple_rectangles (priv->glyph_texture, rectangles,
|
cogl_texture_multiple_rectangles (priv->glyph_texture, rectangles,
|
||||||
priv->glyph_rectangles->len / 8);
|
priv->glyph_rectangles->len / 8);
|
||||||
g_array_set_size (priv->glyph_rectangles, 0);
|
g_array_set_size (priv->glyph_rectangles, 0);
|
||||||
@ -77,11 +77,11 @@ cogl_pango_renderer_glyphs_end (CoglPangoRenderer *priv)
|
|||||||
static void
|
static void
|
||||||
cogl_pango_renderer_draw_glyph (CoglPangoRenderer *priv,
|
cogl_pango_renderer_draw_glyph (CoglPangoRenderer *priv,
|
||||||
CoglPangoGlyphCacheValue *cache_value,
|
CoglPangoGlyphCacheValue *cache_value,
|
||||||
CoglFixed x1,
|
float x1,
|
||||||
CoglFixed y1)
|
float y1)
|
||||||
{
|
{
|
||||||
CoglFixed x2, y2;
|
float x2, y2;
|
||||||
CoglFixed *p;
|
float *p;
|
||||||
|
|
||||||
if (priv->glyph_rectangles->len > 0
|
if (priv->glyph_rectangles->len > 0
|
||||||
&& priv->glyph_texture != cache_value->texture)
|
&& priv->glyph_texture != cache_value->texture)
|
||||||
@ -93,7 +93,7 @@ cogl_pango_renderer_draw_glyph (CoglPangoRenderer *priv,
|
|||||||
y2 = y1 + CLUTTER_INT_TO_FIXED (cache_value->draw_height);
|
y2 = y1 + CLUTTER_INT_TO_FIXED (cache_value->draw_height);
|
||||||
|
|
||||||
g_array_set_size (priv->glyph_rectangles, priv->glyph_rectangles->len + 8);
|
g_array_set_size (priv->glyph_rectangles, priv->glyph_rectangles->len + 8);
|
||||||
p = &g_array_index (priv->glyph_rectangles, CoglFixed,
|
p = &g_array_index (priv->glyph_rectangles, float,
|
||||||
priv->glyph_rectangles->len - 8);
|
priv->glyph_rectangles->len - 8);
|
||||||
|
|
||||||
*(p++) = x1; *(p++) = y1;
|
*(p++) = x1; *(p++) = y1;
|
||||||
@ -133,7 +133,7 @@ cogl_pango_renderer_init (CoglPangoRenderer *priv)
|
|||||||
priv->glyph_cache = cogl_pango_glyph_cache_new (FALSE);
|
priv->glyph_cache = cogl_pango_glyph_cache_new (FALSE);
|
||||||
priv->mipmapped_glyph_cache = cogl_pango_glyph_cache_new (TRUE);
|
priv->mipmapped_glyph_cache = cogl_pango_glyph_cache_new (TRUE);
|
||||||
priv->use_mipmapping = FALSE;
|
priv->use_mipmapping = FALSE;
|
||||||
priv->glyph_rectangles = g_array_new (FALSE, FALSE, sizeof (CoglFixed));
|
priv->glyph_rectangles = g_array_new (FALSE, FALSE, sizeof (float));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -413,10 +413,10 @@ static void
|
|||||||
cogl_pango_renderer_draw_box (int x, int y,
|
cogl_pango_renderer_draw_box (int x, int y,
|
||||||
int width, int height)
|
int width, int height)
|
||||||
{
|
{
|
||||||
cogl_path_rectangle (COGL_FIXED_FROM_INT (x),
|
cogl_path_rectangle ((float)(x),
|
||||||
COGL_FIXED_FROM_INT (y - height),
|
(float)(y - height),
|
||||||
COGL_FIXED_FROM_INT (width),
|
(float)(width),
|
||||||
COGL_FIXED_FROM_INT (height));
|
(float)(height));
|
||||||
cogl_path_stroke ();
|
cogl_path_stroke ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -424,17 +424,17 @@ static void
|
|||||||
cogl_pango_renderer_get_device_units (PangoRenderer *renderer,
|
cogl_pango_renderer_get_device_units (PangoRenderer *renderer,
|
||||||
int xin,
|
int xin,
|
||||||
int yin,
|
int yin,
|
||||||
CoglFixed *xout,
|
float *xout,
|
||||||
CoglFixed *yout)
|
float *yout)
|
||||||
{
|
{
|
||||||
const PangoMatrix *matrix;
|
const PangoMatrix *matrix;
|
||||||
|
|
||||||
if ((matrix = pango_renderer_get_matrix (renderer)))
|
if ((matrix = pango_renderer_get_matrix (renderer)))
|
||||||
{
|
{
|
||||||
/* Convert user-space coords to device coords */
|
/* Convert user-space coords to device coords */
|
||||||
*xout = COGL_FIXED_FROM_FLOAT ((xin * matrix->xx + yin * matrix->xy)
|
*xout = ((xin * matrix->xx + yin * matrix->xy)
|
||||||
/ PANGO_SCALE + matrix->x0);
|
/ PANGO_SCALE + matrix->x0);
|
||||||
*yout = COGL_FIXED_FROM_FLOAT ((yin * matrix->yy + xin * matrix->yx)
|
*yout = ((yin * matrix->yy + xin * matrix->yx)
|
||||||
/ PANGO_SCALE + matrix->y0);
|
/ PANGO_SCALE + matrix->y0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -452,7 +452,7 @@ cogl_pango_renderer_draw_rectangle (PangoRenderer *renderer,
|
|||||||
int width,
|
int width,
|
||||||
int height)
|
int height)
|
||||||
{
|
{
|
||||||
CoglFixed x1, x2, y1, y2;
|
float x1, x2, y1, y2;
|
||||||
|
|
||||||
cogl_pango_renderer_set_color_for_part (renderer, part);
|
cogl_pango_renderer_set_color_for_part (renderer, part);
|
||||||
|
|
||||||
@ -476,15 +476,15 @@ cogl_pango_renderer_draw_trapezoid (PangoRenderer *renderer,
|
|||||||
double x12,
|
double x12,
|
||||||
double x22)
|
double x22)
|
||||||
{
|
{
|
||||||
CoglFixed points[8];
|
float points[8];
|
||||||
|
|
||||||
points[0] = COGL_FIXED_FROM_FLOAT (x11);
|
points[0] = (x11);
|
||||||
points[1] = COGL_FIXED_FROM_FLOAT (y1);
|
points[1] = (y1);
|
||||||
points[2] = COGL_FIXED_FROM_FLOAT (x12);
|
points[2] = (x12);
|
||||||
points[3] = COGL_FIXED_FROM_FLOAT (y2);
|
points[3] = (y2);
|
||||||
points[4] = COGL_FIXED_FROM_FLOAT (x22);
|
points[4] = (x22);
|
||||||
points[5] = points[3];
|
points[5] = points[3];
|
||||||
points[6] = COGL_FIXED_FROM_FLOAT (x21);
|
points[6] = (x21);
|
||||||
points[7] = points[1];
|
points[7] = points[1];
|
||||||
|
|
||||||
cogl_pango_renderer_set_color_for_part (renderer, part);
|
cogl_pango_renderer_set_color_for_part (renderer, part);
|
||||||
@ -510,7 +510,7 @@ cogl_pango_renderer_draw_glyphs (PangoRenderer *renderer,
|
|||||||
for (i = 0; i < glyphs->num_glyphs; i++)
|
for (i = 0; i < glyphs->num_glyphs; i++)
|
||||||
{
|
{
|
||||||
PangoGlyphInfo *gi = glyphs->glyphs + i;
|
PangoGlyphInfo *gi = glyphs->glyphs + i;
|
||||||
CoglFixed x, y;
|
float x, y;
|
||||||
|
|
||||||
cogl_pango_renderer_get_device_units (renderer,
|
cogl_pango_renderer_get_device_units (renderer,
|
||||||
xi + gi->geometry.x_offset,
|
xi + gi->geometry.x_offset,
|
||||||
@ -526,15 +526,15 @@ cogl_pango_renderer_draw_glyphs (PangoRenderer *renderer,
|
|||||||
if (font == NULL ||
|
if (font == NULL ||
|
||||||
(metrics = pango_font_get_metrics (font, NULL)) == NULL)
|
(metrics = pango_font_get_metrics (font, NULL)) == NULL)
|
||||||
{
|
{
|
||||||
cogl_pango_renderer_draw_box (COGL_FIXED_TO_INT (x),
|
cogl_pango_renderer_draw_box ( (x),
|
||||||
COGL_FIXED_TO_INT (y),
|
(y),
|
||||||
PANGO_UNKNOWN_GLYPH_WIDTH,
|
PANGO_UNKNOWN_GLYPH_WIDTH,
|
||||||
PANGO_UNKNOWN_GLYPH_HEIGHT);
|
PANGO_UNKNOWN_GLYPH_HEIGHT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cogl_pango_renderer_draw_box (COGL_FIXED_TO_INT (x),
|
cogl_pango_renderer_draw_box ( (x),
|
||||||
COGL_FIXED_TO_INT (y),
|
(y),
|
||||||
metrics->approximate_char_width
|
metrics->approximate_char_width
|
||||||
/ PANGO_SCALE,
|
/ PANGO_SCALE,
|
||||||
metrics->ascent / PANGO_SCALE);
|
metrics->ascent / PANGO_SCALE);
|
||||||
@ -555,20 +555,20 @@ cogl_pango_renderer_draw_glyphs (PangoRenderer *renderer,
|
|||||||
{
|
{
|
||||||
cogl_pango_renderer_glyphs_end (priv);
|
cogl_pango_renderer_glyphs_end (priv);
|
||||||
|
|
||||||
cogl_pango_renderer_draw_box (COGL_FIXED_TO_INT (x),
|
cogl_pango_renderer_draw_box ( (x),
|
||||||
COGL_FIXED_TO_INT (y),
|
(y),
|
||||||
PANGO_UNKNOWN_GLYPH_WIDTH,
|
PANGO_UNKNOWN_GLYPH_WIDTH,
|
||||||
PANGO_UNKNOWN_GLYPH_HEIGHT);
|
PANGO_UNKNOWN_GLYPH_HEIGHT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CoglFixed width, height;
|
float width, height;
|
||||||
|
|
||||||
x += COGL_FIXED_FROM_INT (cache_value->draw_x);
|
x += (float)(cache_value->draw_x);
|
||||||
y += COGL_FIXED_FROM_INT (cache_value->draw_y);
|
y += (float)(cache_value->draw_y);
|
||||||
|
|
||||||
width = x + COGL_FIXED_FROM_INT (cache_value->draw_width);
|
width = x + (float)(cache_value->draw_width);
|
||||||
height = y + COGL_FIXED_FROM_INT (cache_value->draw_height);
|
height = y + (float)(cache_value->draw_height);
|
||||||
|
|
||||||
cogl_pango_renderer_draw_glyph (priv, cache_value, x, y);
|
cogl_pango_renderer_draw_glyph (priv, cache_value, x, y);
|
||||||
}
|
}
|
||||||
|
@ -114,33 +114,33 @@ on_paint (ClutterActor *actor, TestState *state)
|
|||||||
the first */
|
the first */
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
CoglFixed x1 = 0, x2, y1 = 0, y2 = COGL_FIXED_FROM_INT (TEXTURE_SIZE);
|
float x1 = 0, x2, y1 = 0, y2 = (float)(TEXTURE_SIZE);
|
||||||
CoglTextureVertex verts[4];
|
CoglTextureVertex verts[4];
|
||||||
|
|
||||||
memset (verts, 0, sizeof (verts));
|
memset (verts, 0, sizeof (verts));
|
||||||
|
|
||||||
/* Set the color to white so that all the textures will be drawn
|
/* Set the color to white so that all the textures will be drawn
|
||||||
at their own color */
|
at their own color */
|
||||||
cogl_set_source_color4x (COGL_FIXED_1, COGL_FIXED_1,
|
cogl_set_source_color4x (1.0, 1.0,
|
||||||
COGL_FIXED_1, COGL_FIXED_1);
|
1.0, 1.0);
|
||||||
|
|
||||||
x2 = x1 + COGL_FIXED_FROM_INT (TEXTURE_SIZE);
|
x2 = x1 + (float)(TEXTURE_SIZE);
|
||||||
|
|
||||||
/* Draw a front-facing texture */
|
/* Draw a front-facing texture */
|
||||||
cogl_texture_rectangle (state->texture,
|
cogl_texture_rectangle (state->texture,
|
||||||
x1, y1, x2, y2,
|
x1, y1, x2, y2,
|
||||||
0, 0, COGL_FIXED_1, COGL_FIXED_1);
|
0, 0, 1.0, 1.0);
|
||||||
|
|
||||||
x1 = x2;
|
x1 = x2;
|
||||||
x2 = x1 + COGL_FIXED_FROM_INT (TEXTURE_SIZE);
|
x2 = x1 + (float)(TEXTURE_SIZE);
|
||||||
|
|
||||||
/* Draw a back-facing texture */
|
/* Draw a back-facing texture */
|
||||||
cogl_texture_rectangle (state->texture,
|
cogl_texture_rectangle (state->texture,
|
||||||
x2, y1, x1, y2,
|
x2, y1, x1, y2,
|
||||||
0, 0, COGL_FIXED_1, COGL_FIXED_1);
|
0, 0, 1.0, 1.0);
|
||||||
|
|
||||||
x1 = x2;
|
x1 = x2;
|
||||||
x2 = x1 + COGL_FIXED_FROM_INT (TEXTURE_SIZE);
|
x2 = x1 + (float)(TEXTURE_SIZE);
|
||||||
|
|
||||||
/* Draw a front-facing texture polygon */
|
/* Draw a front-facing texture polygon */
|
||||||
verts[0].x = x1; verts[0].y = y2;
|
verts[0].x = x1; verts[0].y = y2;
|
||||||
@ -148,14 +148,14 @@ on_paint (ClutterActor *actor, TestState *state)
|
|||||||
verts[2].x = x2; verts[2].y = y1;
|
verts[2].x = x2; verts[2].y = y1;
|
||||||
verts[3].x = x1; verts[3].y = y1;
|
verts[3].x = x1; verts[3].y = y1;
|
||||||
verts[0].tx = 0; verts[0].ty = 0;
|
verts[0].tx = 0; verts[0].ty = 0;
|
||||||
verts[1].tx = COGL_FIXED_1; verts[1].ty = 0;
|
verts[1].tx = 1.0; verts[1].ty = 0;
|
||||||
verts[2].tx = COGL_FIXED_1; verts[2].ty = COGL_FIXED_1;
|
verts[2].tx = 1.0; verts[2].ty = 1.0;
|
||||||
verts[3].tx = 0; verts[3].ty = COGL_FIXED_1;
|
verts[3].tx = 0; verts[3].ty = 1.0;
|
||||||
cogl_texture_polygon (state->texture, 4,
|
cogl_texture_polygon (state->texture, 4,
|
||||||
verts, FALSE);
|
verts, FALSE);
|
||||||
|
|
||||||
x1 = x2;
|
x1 = x2;
|
||||||
x2 = x1 + COGL_FIXED_FROM_INT (TEXTURE_SIZE);
|
x2 = x1 + (float)(TEXTURE_SIZE);
|
||||||
|
|
||||||
/* Draw a back-facing texture polygon */
|
/* Draw a back-facing texture polygon */
|
||||||
verts[0].x = x1; verts[0].y = y1;
|
verts[0].x = x1; verts[0].y = y1;
|
||||||
@ -163,19 +163,19 @@ on_paint (ClutterActor *actor, TestState *state)
|
|||||||
verts[2].x = x2; verts[2].y = y2;
|
verts[2].x = x2; verts[2].y = y2;
|
||||||
verts[3].x = x1; verts[3].y = y2;
|
verts[3].x = x1; verts[3].y = y2;
|
||||||
verts[0].tx = 0; verts[0].ty = 0;
|
verts[0].tx = 0; verts[0].ty = 0;
|
||||||
verts[1].tx = COGL_FIXED_1; verts[1].ty = 0;
|
verts[1].tx = 1.0; verts[1].ty = 0;
|
||||||
verts[2].tx = COGL_FIXED_1; verts[2].ty = COGL_FIXED_1;
|
verts[2].tx = 1.0; verts[2].ty = 1.0;
|
||||||
verts[3].tx = 0; verts[3].ty = COGL_FIXED_1;
|
verts[3].tx = 0; verts[3].ty = 1.0;
|
||||||
cogl_texture_polygon (state->texture, 4,
|
cogl_texture_polygon (state->texture, 4,
|
||||||
verts, FALSE);
|
verts, FALSE);
|
||||||
|
|
||||||
x1 = x2;
|
x1 = x2;
|
||||||
x2 = x1 + COGL_FIXED_FROM_INT (TEXTURE_SIZE);
|
x2 = x1 + (float)(TEXTURE_SIZE);
|
||||||
|
|
||||||
/* Draw a regular rectangle (this should always show) */
|
/* Draw a regular rectangle (this should always show) */
|
||||||
cogl_set_source_color4x (COGL_FIXED_1, 0, 0, COGL_FIXED_1);
|
cogl_set_source_color4x (1.0, 0, 0, 1.0);
|
||||||
cogl_rectangle (COGL_FIXED_TO_INT (x1), COGL_FIXED_TO_INT (y1),
|
cogl_rectangle ( (x1), (y1),
|
||||||
COGL_FIXED_TO_INT (x2 - x1), COGL_FIXED_TO_INT (y2 - y1));
|
(x2 - x1), (y2 - y1));
|
||||||
|
|
||||||
/* The second time round draw beneath the first with backface
|
/* The second time round draw beneath the first with backface
|
||||||
culling disabled */
|
culling disabled */
|
||||||
|
@ -94,9 +94,9 @@ test_coglbox_paint(ClutterActor *self)
|
|||||||
cos_frame = clutter_cosi (CLUTTER_ANGLE_FROM_DEG (priv->frame));
|
cos_frame = clutter_cosi (CLUTTER_ANGLE_FROM_DEG (priv->frame));
|
||||||
|
|
||||||
pingpong_frame = (priv->frame <= 180 ? priv->frame : 360 - priv->frame);
|
pingpong_frame = (priv->frame <= 180 ? priv->frame : 360 - priv->frame);
|
||||||
frac_frame = COGL_FIXED_DIV (CLUTTER_INT_TO_FIXED (pingpong_frame),
|
frac_frame = (CLUTTER_INT_TO_FIXED (pingpong_frame) /
|
||||||
CLUTTER_INT_TO_FIXED (180));
|
CLUTTER_INT_TO_FIXED (180));
|
||||||
frac_frame += (COGL_FIXED_1 >> 1);
|
frac_frame += (1.0 >> 1);
|
||||||
frac_frame <<= 1;
|
frac_frame <<= 1;
|
||||||
|
|
||||||
for (t=0; t<4; t+=2)
|
for (t=0; t<4; t+=2)
|
||||||
@ -104,8 +104,8 @@ test_coglbox_paint(ClutterActor *self)
|
|||||||
texcoords[t] += cos_frame;
|
texcoords[t] += cos_frame;
|
||||||
texcoords[t+1] += sin_frame;
|
texcoords[t+1] += sin_frame;
|
||||||
|
|
||||||
texcoords[t] = COGL_FIXED_MUL (texcoords[t], frac_frame);
|
texcoords[t] = (texcoords[t] * frac_frame);
|
||||||
texcoords[t+1] = COGL_FIXED_MUL (texcoords[t+1], frac_frame);
|
texcoords[t+1] = (texcoords[t+1] * frac_frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
priv = TEST_COGLBOX_GET_PRIVATE (self);
|
priv = TEST_COGLBOX_GET_PRIVATE (self);
|
||||||
|
@ -19,7 +19,7 @@ on_entry_paint (ClutterActor *actor,
|
|||||||
cogl_path_round_rectangle (0, 0,
|
cogl_path_round_rectangle (0, 0,
|
||||||
CLUTTER_UNITS_TO_FIXED (width),
|
CLUTTER_UNITS_TO_FIXED (width),
|
||||||
CLUTTER_UNITS_TO_FIXED (height),
|
CLUTTER_UNITS_TO_FIXED (height),
|
||||||
COGL_FIXED_FROM_INT (4),
|
(float)(4),
|
||||||
COGL_ANGLE_FROM_DEG (1.0));
|
COGL_ANGLE_FROM_DEG (1.0));
|
||||||
cogl_path_stroke ();
|
cogl_path_stroke ();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user