EVAS_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
} Evas_Object_Table_Homogeneous_Mode; /**< Table cell pack mode. */
-typedef struct _Evas_Transform Evas_Transform; /**< An Evas projective or affine transform */
typedef struct _Evas_Coord_Rectangle Evas_Coord_Rectangle; /**< A generic rectangle handle */
typedef struct _Evas_Point Evas_Point; /**< integer point */
typedef int Evas_Font_Size;
typedef int Evas_Angle;
-struct _Evas_Transform /** An affine or projective coordinate transformation matrix */
-{
- float mxx, mxy, mxz;
- float myx, myy, myz;
- float mzx, mzy, mzz;
-};
-
struct _Evas_Coord_Rectangle /**< A rectangle in Evas_Coord */
{
Evas_Coord x; /**< top-left x co-ordinate of rectangle */
EAPI void evas_object_image_fill_get (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
EAPI void evas_object_image_fill_spread_set (Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
EAPI int evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
- EAPI void evas_object_image_fill_transform_set (Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1);
- EAPI void evas_object_image_fill_transform_get (const Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1, 2);
EAPI void evas_object_image_size_set (Evas_Object *obj, int w, int h) EINA_ARG_NONNULL(1);
EAPI void evas_object_image_size_get (const Evas_Object *obj, int *w, int *h) EINA_ARG_NONNULL(1);
EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
EAPI void evas_data_argb_premul (unsigned int *data, unsigned int len);
EAPI void evas_data_argb_unpremul (unsigned int *data, unsigned int len);
-/* Evas utility routines for working with transforms */
- /* Set t to the identity */
- EAPI void evas_transform_identity_set (Evas_Transform *t);
- /* Left-multiply t by an xy rotation defined by the given angle (in degrees) */
- EAPI void evas_transform_rotate (double angle, Evas_Transform *t);
- /* Left-multiply t by an xy translation defined by the given dx, dy values */
- EAPI void evas_transform_translate (float dx, float dy, Evas_Transform *t);
- /* Left-multiply t by an xy scaling defined by the given sx, sy factors */
- EAPI void evas_transform_scale (float sx, float sy, Evas_Transform *t);
- /* Left-multiply t by an xy shearing defined by the given sh, sv values */
- EAPI void evas_transform_shear (float sh, float sv, Evas_Transform *t);
- /* Left-multiply t by the given transform l */
- EAPI void evas_transform_compose (Evas_Transform *l, Evas_Transform *t);
-
/* string and font handling */
EAPI int evas_string_char_next_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
EAPI int evas_string_char_prev_get (const char *str, int pos, int *decoded) EINA_ARG_NONNULL(1);
DATA32 magic;
struct {
- Evas_Common_Transform transform;
- int spread;
+ int spread;
Evas_Coord_Rectangle fill;
struct {
short w, h, stride;
return o->cur.spread;
}
-EAPI void
-evas_object_image_fill_transform_set(Evas_Object *obj, Evas_Transform *t)
-{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
- if (!t)
- {
- o->cur.transform.mxx = 1;
- o->cur.transform.mxy = 0;
- o->cur.transform.mxz = 0;
- o->cur.transform.myx = 0;
- o->cur.transform.myy = 1;
- o->cur.transform.myz = 0;
- o->cur.transform.mzx = 0;
- o->cur.transform.mzy = 0;
- o->cur.transform.mzz = 1;
-
- o->changed = 1;
- evas_object_change(obj);
- return;
- }
- if ( (o->cur.transform.mxx == t->mxx) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) ||
- (o->cur.transform.mxy == t->mxy) )
- return;
-
- o->cur.transform.mxx = t->mxx;
- o->cur.transform.mxy = t->mxy;
- o->cur.transform.mxz = t->mxz;
- o->cur.transform.myx = t->myx;
- o->cur.transform.myy = t->myy;
- o->cur.transform.myz = t->myz;
- o->cur.transform.mzx = t->mzx;
- o->cur.transform.mzy = t->mzy;
- o->cur.transform.mzz = t->mzz;
-
- o->changed = 1;
- evas_object_change(obj);
-}
-
-/*FIXME: To be documented*/
-EAPI void
-evas_object_image_fill_transform_get(const Evas_Object *obj, Evas_Transform *t)
-{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
- if (t)
- {
- t->mxx = o->cur.transform.mxx;
- t->mxy = o->cur.transform.mxy;
- t->mxz = o->cur.transform.mxz;
- t->myx = o->cur.transform.myx;
- t->myy = o->cur.transform.myy;
- t->myz = o->cur.transform.myz;
- t->mzx = o->cur.transform.mzx;
- t->mzy = o->cur.transform.mzy;
- t->mzz = o->cur.transform.mzz;
- }
-}
-
/**
* Sets the size of the given image object.
*
(obj->layer->evas->engine.data.output,
o->engine_data, o->content_hint);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
else
stride = w;
}
o->cur.cspace);
if (o->engine_data)
{
+ int stride = 0;
+
if (obj->layer->evas->engine.func->image_scale_hint_set)
obj->layer->evas->engine.func->image_scale_hint_set
(obj->layer->evas->engine.data.output,
if (obj->layer->evas->engine.func->image_content_hint_set)
obj->layer->evas->engine.func->image_content_hint_set
(obj->layer->evas->engine.data.output,
- o->engine_data, o->content_hint);
+ o->engine_data, o->content_hint);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &o->cur.image.stride);
- }
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
+ else
+ stride = o->cur.image.w;
+ o->cur.image.stride = stride;
+ }
}
else
{
&data);
if (o->engine_data)
{
+ int stride = 0;
+
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &o->cur.image.stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
+ else
+ stride = o->cur.image.w;
+ o->cur.image.stride = stride;
}
o->pixels_checked_out++;
if (for_writing)
o->cur.cspace);
if (o->engine_data)
{
+ int stride = 0;
+
o->engine_data = obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
o->engine_data,
o->cur.has_alpha);
(obj->layer->evas->engine.data.output,
o->engine_data, o->content_hint);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &o->cur.image.stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
+ else
+ stride = o->cur.image.w;
+ o->cur.image.stride = stride;
}
o->pixels_checked_out = 0;
EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
o->cur.has_alpha = has_alpha;
if (o->engine_data)
{
+ int stride = 0;
+
#ifdef EVAS_FRAME_QUEUING
evas_common_pipe_op_image_flush(o->engine_data);
#endif
(obj->layer->evas->engine.data.output,
o->engine_data, o->content_hint);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &o->cur.image.stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
+ else
+ stride = o->cur.image.w;
+ o->cur.image.stride = stride;
}
evas_object_image_data_update_add(obj, 0, 0, o->cur.image.w, o->cur.image.h);
EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
o->scale_hint = hint;
if (o->engine_data)
{
+ int stride = 0;
+
if (obj->layer->evas->engine.func->image_scale_hint_set)
obj->layer->evas->engine.func->image_scale_hint_set
(obj->layer->evas->engine.data.output,
o->engine_data, o->scale_hint);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &o->cur.image.stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
+ else
+ stride = o->cur.image.w;
+ o->cur.image.stride = stride;
}
}
o->content_hint = hint;
if (o->engine_data)
{
+ int stride = 0;
+
if (obj->layer->evas->engine.func->image_content_hint_set)
obj->layer->evas->engine.func->image_content_hint_set
(obj->layer->evas->engine.data.output,
o->engine_data, o->content_hint);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &o->cur.image.stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
+ else
+ stride = o->cur.image.w;
+ o->cur.image.stride = stride;
}
}
if (dirty)
{
if (o->engine_data)
- o->engine_data = obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output,
- o->engine_data,
- 0, 0,
- o->cur.image.w, o->cur.image.h);
+ o->engine_data = obj->layer->evas->engine.func->image_dirty_region
+ (obj->layer->evas->engine.data.output,
+ o->engine_data,
+ 0, 0,
+ o->cur.image.w, o->cur.image.h);
}
if (o->engine_data)
obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
lo.region.y = o->load_opts.region.y;
lo.region.w = o->load_opts.region.w;
lo.region.h = o->load_opts.region.h;
- o->engine_data = obj->layer->evas->engine.func->image_load(obj->layer->evas->engine.data.output,
- o->cur.file,
- o->cur.key,
- &o->load_error,
- &lo);
+ o->engine_data = obj->layer->evas->engine.func->image_load
+ (obj->layer->evas->engine.data.output,
+ o->cur.file,
+ o->cur.key,
+ &o->load_error,
+ &lo);
if (o->engine_data)
{
int w, h;
int stride;
- obj->layer->evas->engine.func->image_size_get(obj->layer->evas->engine.data.output,
- o->engine_data, &w, &h);
+ obj->layer->evas->engine.func->image_size_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &w, &h);
if (obj->layer->evas->engine.func->image_stride_get)
- obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
- o->engine_data, &stride);
+ obj->layer->evas->engine.func->image_stride_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data, &stride);
else
stride = w;
- o->cur.has_alpha = obj->layer->evas->engine.func->image_alpha_get(obj->layer->evas->engine.data.output,
- o->engine_data);
- o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get(obj->layer->evas->engine.data.output,
- o->engine_data);
+ o->cur.has_alpha = obj->layer->evas->engine.func->image_alpha_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data);
+ o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data);
o->cur.image.w = w;
o->cur.image.h = h;
o->cur.image.stride = stride;
o->cur.border.fill = 1;
o->cur.border.scale = 1.0;
o->cur.cspace = EVAS_COLORSPACE_ARGB8888;
- o->cur.transform.mxx = o->cur.transform.myy = o->cur.transform.mzz = 1;
o->cur.spread = EVAS_TEXTURE_REPEAT;
o->cur.opaque_valid = 0;
o->prev = o->cur;
stride = o->cur.image.stride;
- o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
- o->engine_data,
- 0,
- &data);
+ o->engine_data = obj->layer->evas->engine.func->image_data_get
+ (obj->layer->evas->engine.data.output,
+ o->engine_data,
+ 0,
+ &data);
if (!data)
return 0;
#include "evas_common.h"
#include "evas_private.h"
-#include <math.h>
-
-/**
- * @addtogroup Evas_Utils
- * @{
- */
-
-/**
- * To be documented.
- *
- * FIXME: To be fixed.
- *
- */
-EAPI void
-evas_transform_identity_set(Evas_Transform *t)
-{
- if (t)
- {
- t->mxx = t->myy = t->mzz = 1;
- t->mxy = t->mxz = 0;
- t->myx = t->myz = 0;
- t->mzx = t->mzy = 0;
- }
-}
-
-/**
- * To be documented.
- *
- * FIXME: To be fixed.
- *
- */
-EAPI void
-evas_transform_rotate(double angle, Evas_Transform *t)
-{
- double ca, sa;
- float mxx, mxy, mxz;
- float myx, myy, myz;
-
- if (!t) return;
-
- angle = (angle * M_PI) / 180.0;
- ca = cos(angle); sa = sin(angle);
- if ((ca == 1) && (sa == 0)) return;
-
- mxx = t->mxx; mxy = t->mxy; mxz = t->mxz;
- myx = t->myx; myy = t->myy; myz = t->myz;
-
- t->mxx = (ca * mxx) + (sa * myx);
- t->mxy = (ca * mxy) + (sa * myy);
- t->mxz = (ca * mxz) + (sa * myz);
-
- t->myx = (-sa * mxx) + (ca * myx);
- t->myy = (-sa * mxy) + (ca * myy);
- t->myz = (-sa * mxz) + (ca * myz);
-}
-
-/**
- * To be documented.
- *
- * FIXME: To be fixed.
- *
- */
-EAPI void
-evas_transform_translate(float dx, float dy, Evas_Transform *t)
-{
- if (!t) return;
- if (!dx && !dy) return;
-
- t->mxx = dx * t->mzx;
- t->mxy = dx * t->mzy;
- t->mxz = dx * t->mzz;
-
- t->myx = dy * t->mzx;
- t->myy = dy * t->mzy;
- t->myz = dy * t->mzz;
-}
-
-/**
- * To be documented.
- *
- * FIXME: To be fixed.
- *
- */
-EAPI void
-evas_transform_scale(float sx, float sy, Evas_Transform *t)
-{
- if (!t) return;
- if ((sx == 1) && (sy == 1)) return;
-
- t->mxx = sx * t->mxx;
- t->mxy = sx * t->mxy;
- t->mxz = sx * t->mxz;
-
- t->myx = sy * t->myx;
- t->myy = sy * t->myy;
- t->myz = sy * t->myz;
-}
-
-/**
- * To be documented.
- *
- * FIXME: To be fixed.
- *
- */
-EAPI void
-evas_transform_shear(float sh, float sv, Evas_Transform *t)
-{
- float mxx, mxy, mxz;
- float myx, myy, myz;
-
- if (!t) return;
- if ((sh == 1) && (sv == 1)) return;
-
- mxx = t->mxx; mxy = t->mxy; mxz = t->mxz;
- myx = t->myx; myy = t->myy; myz = t->myz;
-
- t->mxx = mxx + (sh * myx);
- t->mxy = mxy + (sh * myy);
- t->mxz = mxz + (sh * myz);
-
- t->myx = (sv * mxx) + myx;
- t->myy = (sv * mxy) + myy;
- t->myz = (sv * mxz) + myz;
-}
-
-/**
- * To be documented.
- *
- * FIXME: To be fixed.
- *
- */
-EAPI void
-evas_transform_compose(Evas_Transform *l, Evas_Transform *t)
-{
- float mxx, mxy, mxz;
- float myx, myy, myz;
- float mzx, mzy, mzz;
-
- if (!t || !l) return;
-
- mxx = t->mxx; mxy = t->mxy; mxz = t->mxz;
- myx = t->myx; myy = t->myy; myz = t->myz;
- mzx = t->mzx; mzy = t->mzy; mzz = t->mzz;
-
- t->mxx = (l->mxx * mxx) + (l->mxy * myx) + (l->mxz * mzx);
- t->mxy = (l->mxx * mxy) + (l->mxy * myy) + (l->mxz * mzy);
- t->mxz = (l->mxx * mxz) + (l->mxy * myz) + (l->mxz * mzz);
-
- t->myx = (l->myx * mxx) + (l->myy * myx) + (l->myz * mzx);
- t->myy = (l->myx * mxy) + (l->myy * myy) + (l->myz * mzy);
- t->myz = (l->myx * mxz) + (l->myy * myz) + (l->myz * mzz);
-
- t->mzx = (l->mzx * mxx) + (l->mzy * myx) + (l->mzz * mzx);
- t->mzy = (l->mzx * mxy) + (l->mzy * myy) + (l->mzz * mzy);
- t->mzz = (l->mzx * mxz) + (l->mzy * myz) + (l->mzz * mzz);
-}
-
-/**
- * @}
- */