forked from enlightenment/efl
Get rid of trailing whitespaces (12 / 14)
Remove trailing whitespaces Differential Revision: https://phab.enlightenment.org/D12011
This commit is contained in:
parent
727167ced6
commit
c7da405ae7
|
@ -5402,7 +5402,7 @@ EAPI int evas_object_image_load_scale_down_get(const Evas_Object *obj);
|
|||
|
||||
/**
|
||||
* @brief Set a load option to skip initial header load and defer to preload
|
||||
*
|
||||
*
|
||||
* This is meant to be used in conjunction with evas_object_image_file_set()
|
||||
* and evas_object_image_preload() by deferring any header loading until
|
||||
* a evas_object_image_preload() is issued making the file file set simply
|
||||
|
@ -5411,17 +5411,17 @@ EAPI int evas_object_image_load_scale_down_get(const Evas_Object *obj);
|
|||
* channel flags etc. All of this will then be done as part of the preload
|
||||
* stage.
|
||||
* @param[in] obj The object
|
||||
*
|
||||
*
|
||||
* @since 1.19
|
||||
*/
|
||||
EAPI void evas_object_image_load_head_skip_set(Evas_Object *obj, Eina_Bool skip);
|
||||
|
||||
/**
|
||||
* @brief Get the load option to skip header loads before preload
|
||||
*
|
||||
*
|
||||
* This gets the head skip value set by evas_object_image_load_head_skip_set()
|
||||
* @param[in] obj The object
|
||||
*
|
||||
*
|
||||
* @see evas_object_image_load_head_skip_set
|
||||
* @since 1.19
|
||||
*/
|
||||
|
@ -7100,7 +7100,7 @@ EAPI void evas_object_smart_move_children_relative(Evas_Object *obj, Evas_Coord
|
|||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Add a new box object on the provided canvas.
|
||||
*
|
||||
|
@ -8376,7 +8376,7 @@ EAPI Eina_Bool evas_object_map_enable_get(const Evas_Object *obj);
|
|||
*
|
||||
* Note: the preferred method for filters is to edit EDC styles, rather than
|
||||
* calling this API directly.
|
||||
*
|
||||
*
|
||||
* @since 1.18
|
||||
*/
|
||||
EAPI void evas_object_text_filter_program_set(Evas_Object *obj, const char *code) EINA_DEPRECATED;
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
|
|
|
@ -850,7 +850,7 @@ evas_cache_image_mmap_request(Evas_Cache_Image *cache,
|
|||
|
||||
|
||||
EAPI Image_Entry *
|
||||
evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
|
||||
evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
|
||||
const char *key, Evas_Image_Load_Opts *lo, int *error)
|
||||
{
|
||||
const char *ckey = "(null)";
|
||||
|
@ -1132,9 +1132,9 @@ evas_cache_image_alone(Image_Entry *im)
|
|||
}
|
||||
else
|
||||
{
|
||||
im_dirty = evas_cache_image_copied_data(cache, im->w, im->h,
|
||||
evas_cache_image_pixels(im),
|
||||
im->flags.alpha,
|
||||
im_dirty = evas_cache_image_copied_data(cache, im->w, im->h,
|
||||
evas_cache_image_pixels(im),
|
||||
im->flags.alpha,
|
||||
im->space);
|
||||
if (!im_dirty) goto on_error;
|
||||
if (cache->func.debug) cache->func.debug("dirty-src", im);
|
||||
|
@ -1151,8 +1151,8 @@ on_error:
|
|||
}
|
||||
|
||||
EAPI Image_Entry *
|
||||
evas_cache_image_copied_data(Evas_Cache_Image *cache,
|
||||
unsigned int w, unsigned int h,
|
||||
evas_cache_image_copied_data(Evas_Cache_Image *cache,
|
||||
unsigned int w, unsigned int h,
|
||||
DATA32 *image_data, int alpha,
|
||||
Evas_Colorspace cspace)
|
||||
{
|
||||
|
@ -1364,7 +1364,7 @@ evas_cache_image_unload_data(Image_Entry *im)
|
|||
}
|
||||
|
||||
SLKL(im->lock_cancel);
|
||||
if ((!im->flags.loaded) || (!im->file && !im->f) || (!im->info.module) ||
|
||||
if ((!im->flags.loaded) || (!im->file && !im->f) || (!im->info.module) ||
|
||||
(im->flags.dirty))
|
||||
{
|
||||
SLKU(im->lock_cancel);
|
||||
|
@ -1516,7 +1516,7 @@ evas_cache_image_flush(Evas_Cache_Image *cache)
|
|||
if (!cache) return 0;
|
||||
#ifdef CACHEDUMP
|
||||
_dump_cache(cache);
|
||||
#endif
|
||||
#endif
|
||||
if (cache->limit == (unsigned int)-1) return -1;
|
||||
|
||||
SLKL(engine_lock);
|
||||
|
|
|
@ -400,7 +400,7 @@ _efl_canvas_vg_object_efl_object_finalize(Eo *obj, Efl_Canvas_Vg_Object_Data *pd
|
|||
Evas *e = evas_object_evas_get(obj);
|
||||
|
||||
/* Container must have a set parent after construction.
|
||||
efl_add_ref() with a parent won't work this case
|
||||
efl_add_ref() with a parent won't work this case
|
||||
because container needs some jobs in overriding parent_set()
|
||||
after proper intialization. */
|
||||
efl_parent_set(pd->root, obj);
|
||||
|
|
|
@ -471,7 +471,7 @@ Evas_Device *
|
|||
_evas_device_top_get(const Evas *eo_e)
|
||||
{
|
||||
int num;
|
||||
|
||||
|
||||
Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
|
||||
if (!e->cur_device) return NULL;
|
||||
num = eina_array_count(e->cur_device);
|
||||
|
|
|
@ -226,7 +226,7 @@ evas_object_image_save(const Evas_Object *obj, const char *file, const char *key
|
|||
Eina_Error ret;
|
||||
|
||||
EVAS_IMAGE_API(obj, EINA_FALSE);
|
||||
|
||||
|
||||
if (flags)
|
||||
{
|
||||
char *p, *pp;
|
||||
|
|
|
@ -106,7 +106,7 @@ evas_object_grabs_cleanup(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected
|
|||
while (obj->grabs)
|
||||
{
|
||||
Evas_Key_Grab *g = obj->grabs->data;
|
||||
obj->layer->evas->grabs =
|
||||
obj->layer->evas->grabs =
|
||||
eina_list_remove(obj->layer->evas->grabs, g);
|
||||
obj->grabs = eina_list_remove(obj->grabs, g);
|
||||
if (g->keyname) free(g->keyname);
|
||||
|
|
|
@ -51,7 +51,7 @@ const char *efl_gfx_image_load_error_msgs[] = {
|
|||
"Reading operation has been cancelled during decoding" ,
|
||||
"(Edje only) The file pointed to is incompatible, i.e., it doesn't match the library's current version's format." ,
|
||||
"(Edje only) The group/collection set to load from was not found in the file" ,
|
||||
"(Edje only) The group/collection set to load from had recursive references on its components"
|
||||
"(Edje only) The group/collection set to load from had recursive references on its components"
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
|
@ -38,7 +38,7 @@ _evas_map_calc_map_geometry(Evas_Object *eo_obj)
|
|||
if (obj->map->prev.map->count == obj->map->cur.map->count)
|
||||
{
|
||||
const Evas_Map_Point *p2;
|
||||
|
||||
|
||||
p = obj->map->cur.map->points;
|
||||
p2 = obj->map->prev.map->points;
|
||||
if (memcmp(p, p2, sizeof(Evas_Map_Point) *
|
||||
|
@ -48,7 +48,7 @@ _evas_map_calc_map_geometry(Evas_Object *eo_obj)
|
|||
{
|
||||
EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, Evas_Object_Map_Data, map_write)
|
||||
{
|
||||
if (map_write->cache_map) evas_map_free(map_write->cache_map);
|
||||
if (map_write->cache_map) evas_map_free(map_write->cache_map);
|
||||
map_write->cache_map = map_write->cur.map;
|
||||
map_write->cur.map = map_write->prev.map;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ _evas_map_calc_map_geometry(Evas_Object *eo_obj)
|
|||
}
|
||||
else
|
||||
ch = EINA_TRUE;
|
||||
|
||||
|
||||
p = obj->map->cur.map->points;
|
||||
p_end = p + obj->map->cur.map->count;
|
||||
x1 = x2 = lround(p->x);
|
||||
|
@ -70,7 +70,7 @@ _evas_map_calc_map_geometry(Evas_Object *eo_obj)
|
|||
for (; p < p_end; p++)
|
||||
{
|
||||
Evas_Coord x, y;
|
||||
|
||||
|
||||
x = lround(p->x);
|
||||
y = lround(p->y);
|
||||
if (x < x1) x1 = x;
|
||||
|
@ -78,7 +78,7 @@ _evas_map_calc_map_geometry(Evas_Object *eo_obj)
|
|||
if (y < yy1) yy1 = y;
|
||||
if (y > yy2) yy2 = y;
|
||||
}
|
||||
// this causes clip-out bugs now mapped objs canbe opaque!!!
|
||||
// this causes clip-out bugs now mapped objs canbe opaque!!!
|
||||
// // add 1 pixel of fuzz around the map region to ensure updates are correct
|
||||
// x1 -= 1; yy1 -= 1;
|
||||
// x2 += 1; yy2 += 1;
|
||||
|
@ -238,7 +238,7 @@ _evas_map_free(Evas_Object *eo_obj, Evas_Map *m)
|
|||
map_write->spans = NULL;
|
||||
}
|
||||
EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write);
|
||||
}
|
||||
}
|
||||
}
|
||||
m->magic = 0;
|
||||
free(m);
|
||||
|
@ -552,7 +552,7 @@ evas_object_map_set(Evas_Object *eo_obj, const Evas_Map *map)
|
|||
return;
|
||||
}
|
||||
/* changed_pchange means map's change.
|
||||
* This flag will be used to decide whether to redraw the map surface.
|
||||
* This flag will be used to decide whether to redraw the map surface.
|
||||
* And value of flag would be EINA_FALSE after rendering. */
|
||||
obj->changed_pchange = EINA_TRUE;
|
||||
|
||||
|
|
|
@ -334,7 +334,7 @@ _evas_box_internal_insert_at(Eo *o, Evas_Object_Box_Data *priv, Evas_Object *chi
|
|||
return new_opt;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EOLIAN static Evas_Object *
|
||||
|
@ -390,7 +390,7 @@ _evas_box_efl_canvas_group_group_add(Eo *eo_obj, Evas_Object_Box_Data *priv)
|
|||
Evas_Object_Smart_Clipped_Data *cso;
|
||||
|
||||
efl_canvas_group_add(efl_super(eo_obj, MY_CLASS));
|
||||
|
||||
|
||||
evas_object_event_callback_add
|
||||
(eo_obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_hints_changed, eo_obj);
|
||||
priv->children = NULL;
|
||||
|
@ -1880,7 +1880,7 @@ EOLIAN static Eina_Iterator*
|
|||
_evas_box_iterator_new(const Eo *o, Evas_Object_Box_Data *priv)
|
||||
{
|
||||
Evas_Object_Box_Iterator *it;
|
||||
|
||||
|
||||
if (!priv->children) return NULL;
|
||||
|
||||
it = calloc(1, sizeof(Evas_Object_Box_Iterator));
|
||||
|
|
|
@ -1082,7 +1082,7 @@ _evas_table_pack_get(const Eo *o EINA_UNUSED, Evas_Table_Data *_pd EINA_UNUSED,
|
|||
if (row) *row = opt->row;
|
||||
if (colspan) *colspan = opt->colspan;
|
||||
if (rowspan) *rowspan = opt->rowspan;
|
||||
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -1121,7 +1121,7 @@ _evas_table_pack(Eo *o, Evas_Table_Data *priv, Evas_Object *child, unsigned shor
|
|||
{
|
||||
WRN("row + rowspan getting rather large (>32767)");
|
||||
}
|
||||
|
||||
|
||||
opt = _evas_object_table_option_get(child);
|
||||
if (opt)
|
||||
{
|
||||
|
|
|
@ -2992,7 +2992,7 @@ _format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt, const ch
|
|||
{
|
||||
_format_command_unified_only(o, fmt, cmd, param, len);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3158,7 +3158,7 @@ _default_format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt,
|
|||
|
||||
part1 = alloca(len + 1);
|
||||
*part1 = 0;
|
||||
|
||||
|
||||
part2 = alloca(len + 1);
|
||||
*part2 = 0;
|
||||
|
||||
|
@ -3179,7 +3179,7 @@ _default_format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt,
|
|||
return changed;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* @internal
|
||||
* just to create a constant without using marco
|
||||
* 2 cacheline is enough for the string we parse
|
||||
|
@ -3188,12 +3188,12 @@ _default_format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt,
|
|||
*/
|
||||
enum _Internal{ ALLOCATOR_SIZE = 120 };
|
||||
|
||||
/*
|
||||
/*
|
||||
* @internal
|
||||
* A simple stack allocator which first
|
||||
* tries to create a string in the stack (buffer
|
||||
* it holds). if the string size is bigger than its
|
||||
* buffer capacity it will fall back to creating the
|
||||
* buffer capacity it will fall back to creating the
|
||||
* string on heap.
|
||||
* USAGE :
|
||||
* Allocator a;
|
||||
|
@ -4461,7 +4461,7 @@ _layout_format_value_handle(Ctxt *c, Evas_Object_Textblock_Format *fmt, const ch
|
|||
{
|
||||
const char *key = NULL;
|
||||
char *val = NULL;
|
||||
|
||||
|
||||
Allocator allocator;
|
||||
_allocator_init(&allocator);
|
||||
|
||||
|
@ -8225,7 +8225,7 @@ _textblock_style_generic_set(Evas_Object *eo_obj, Evas_Textblock_Style *ts,
|
|||
}
|
||||
}
|
||||
|
||||
// Verify nothing has changed
|
||||
// Verify nothing has changed
|
||||
if (ts == old_ts) return;
|
||||
|
||||
if ((ts) && (ts->delete_me)) return;
|
||||
|
@ -8491,7 +8491,7 @@ _escaped_is_eq_and_advance(const char *s, const char *s_end,
|
|||
* @internal
|
||||
*
|
||||
* @param s the escape string to search for its index
|
||||
* @param s_len length of s string
|
||||
* @param s_len length of s string
|
||||
* @param escape_values array of Escape_Value to look inside, Sorted by Escape
|
||||
* @param escape_values_len is the len of Escape_Value array
|
||||
*/
|
||||
|
@ -8564,9 +8564,9 @@ _escaped_char_match(const char *s, int *adv)
|
|||
if (n_ret != -1)
|
||||
{
|
||||
*adv = (int) escape_values_v_common_sorted[n_ret].value_len;
|
||||
return escape_values_v_common_sorted[n_ret].escape;
|
||||
return escape_values_v_common_sorted[n_ret].escape;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
static const size_t escape_size = sizeof(escape_values_v_sorted) / sizeof(Escape_Value);
|
||||
n_ret = _escaped_value_search(s, escape_values_v_sorted, escape_size);
|
||||
|
|
|
@ -157,7 +157,7 @@ efl_canvas_output_engine_info_set(Efl_Canvas_Output *output,
|
|||
else
|
||||
{
|
||||
setup:
|
||||
output->output =
|
||||
output->output =
|
||||
e->engine.func->output_setup(_evas_engine_context(e), info,
|
||||
output->geometry.w, output->geometry.h);
|
||||
}
|
||||
|
|
|
@ -254,10 +254,10 @@ evas_common_copy_pixels_mmx(DATA32 *src, DATA32 *dst, int len)
|
|||
#ifdef ALIGN_FIX
|
||||
intptr_t src_align;
|
||||
intptr_t dst_align;
|
||||
|
||||
|
||||
src_align = (intptr_t)src & 0x3f; /* 64 byte alignment */
|
||||
dst_align = (intptr_t)dst & 0x3f; /* 64 byte alignment */
|
||||
|
||||
|
||||
if ((src_align != dst_align) ||
|
||||
((src_align & 0x3) != 0))
|
||||
{
|
||||
|
|
|
@ -23,7 +23,7 @@ generic_cache_destroy(Generic_Cache *cache)
|
|||
}
|
||||
|
||||
eina_hash_free(cache->hash);
|
||||
free(cache);
|
||||
free(cache);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@ void evas_common_convert_rgba_to_8bpp_pal_gray64(DATA32 *src, DATA8 *dst, int sr
|
|||
CONVERT_LOOP_START_ROT_0();
|
||||
|
||||
/* RGB -> YUV conversion */
|
||||
Y = ((R_VAL(src_ptr) * 76) +
|
||||
(G_VAL(src_ptr) * 151) +
|
||||
Y = ((R_VAL(src_ptr) * 76) +
|
||||
(G_VAL(src_ptr) * 151) +
|
||||
(B_VAL(src_ptr) * 29)) >> 10;
|
||||
*dst_ptr = pal[Y];
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr
|
|||
for (x = 0; x < w; x++)
|
||||
{
|
||||
DATA32 p = *src++, q = *src++;
|
||||
|
||||
|
||||
dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK];
|
||||
dith2 = dith >> DM_SHF(6);
|
||||
dith >>= DM_SHF(5);
|
||||
|
@ -89,7 +89,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr
|
|||
if ((r1 < 0x1f) && ((((p & 0xff0000) >> 16) - (r1 << 3)) >= dith )) r1++;
|
||||
if ((g1 < 0x3f) && ((((p & 0xff00) >> 8) - (g1 << 2)) >= dith2)) g1++;
|
||||
if ((b1 < 0x1f) && (((p & 0xff) - (b1 << 3)) >= dith )) b1++;
|
||||
|
||||
|
||||
x++;
|
||||
dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK];
|
||||
dith2 = dith >> DM_SHF(6);
|
||||
|
@ -100,7 +100,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr
|
|||
if ((r2 < 0x1f) && ((((q & 0xff0000) >> 16) - (r2 << 3)) >= dith )) r2++;
|
||||
if ((g2 < 0x3f) && ((((q & 0xff00) >> 8) - (g2 << 2)) >= dith2)) g2++;
|
||||
if ((b2 < 0x1f) && (((q & 0xff) - (b2 << 3)) >= dith )) b2++;
|
||||
|
||||
|
||||
#ifndef WORDS_BIGENDIAN
|
||||
*((DATA32 *)d) = (r2 << 27) | (g2 << 21) | (b2 << 16) |
|
||||
(r1 << 11) | (g1 << 5) | (b1);
|
||||
|
@ -113,7 +113,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr
|
|||
src += src_jump;
|
||||
d += dst_jump;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
DATA16 *d = (DATA16 *)dst;
|
||||
int w0 = w;
|
||||
|
@ -159,7 +159,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src
|
|||
for (x = 0; x < w; x++)
|
||||
{
|
||||
DATA32 p = *src++;
|
||||
|
||||
|
||||
r = (p & 0xff0000) >> 19;
|
||||
if (r > 0x1f) r = 0x1f;
|
||||
g = (p & 0xff00) >> 10;
|
||||
|
@ -182,13 +182,13 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src
|
|||
src += src_jump;
|
||||
d += dst_jump;
|
||||
}
|
||||
#else
|
||||
#else
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
for (x = 0; x < w; x++)
|
||||
{
|
||||
DATA32 p = *src++;
|
||||
|
||||
|
||||
dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK];
|
||||
dith2 = dith >> DM_SHF(6);
|
||||
dith >>= DM_SHF(5);
|
||||
|
@ -198,13 +198,13 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src
|
|||
if ((r < 0x1f) && ((((p & 0xff0000) >> 16) - (r << 3)) >= dith )) r++;
|
||||
if ((g < 0x3f) && ((((p & 0xff00) >> 8) - (g << 2)) >= dith2)) g++;
|
||||
if ((b < 0x1f) && (((p & 0xff) - (b << 3)) >= dith )) b++;
|
||||
|
||||
|
||||
*d++ = (r << 11) | (g << 5) | b;
|
||||
}
|
||||
src += src_jump;
|
||||
d += dst_jump;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
DATA16 *d = (DATA16 *)dst;
|
||||
int w0 = w;
|
||||
|
|
|
@ -43,7 +43,7 @@ evas_common_convert_rgba_to_24bpp_rgb_666(DATA32 *src, DATA8 *dst, int src_jump,
|
|||
{
|
||||
for (x = 0; x < w; x++)
|
||||
{
|
||||
scratch =
|
||||
scratch =
|
||||
(((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) |
|
||||
((G_VAL(src_ptr) << 4) & 0x000fc0);
|
||||
dst_ptr[0] = scratch_ptr[1];
|
||||
|
|
|
@ -6,5 +6,5 @@ void evas_common_convert_rgba_to_24bpp_rgb_888 (DATA32 *src, DAT
|
|||
void evas_common_convert_rgba_to_24bpp_bgr_888 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
|
||||
|
||||
void evas_common_convert_rgba_to_24bpp_rgb_666 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
|
||||
|
||||
|
||||
#endif /* _EVAS_CONVERT_RGB_24_H */
|
||||
|
|
|
@ -266,16 +266,16 @@ evas_common_draw_context_set_color(RGBA_Draw_Context *dc, int r, int g, int b, i
|
|||
#if defined(PIXMAN_FONT) || defined(PIXMAN_RECT) || defined(PIXMAN_LINE) || defined(PIXMAN_POLY)
|
||||
if (dc->col.pixman_color_image)
|
||||
pixman_image_unref(dc->col.pixman_color_image);
|
||||
|
||||
|
||||
pixman_color_t pixman_color;
|
||||
|
||||
|
||||
pixman_color.alpha = (dc->col.col & 0xff000000) >> 16;
|
||||
pixman_color.red = (dc->col.col & 0x00ff0000) >> 8;
|
||||
pixman_color.green = (dc->col.col & 0x0000ff00);
|
||||
pixman_color.blue = (dc->col.col & 0x000000ff) << 8;
|
||||
|
||||
dc->col.pixman_color_image = pixman_image_create_solid_fill(&pixman_color);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -890,7 +890,7 @@ evas_common_font_int_cache_glyph_render(RGBA_Font_Glyph *fg)
|
|||
fg->glyph_out->bitmap.width = dst.cache_entry.w;
|
||||
fg->glyph_out->bitmap.buffer = (unsigned char *) dst.image.data;
|
||||
fg->glyph_out->bitmap.pitch = dst.cache_entry.w * 4;
|
||||
|
||||
|
||||
fg->glyph_out->rle = NULL;
|
||||
fg->glyph_out->bitmap.rle_alloc = EINA_TRUE;
|
||||
// this may be technically incorrect as we go and free a bitmap buffer
|
||||
|
|
|
@ -23,43 +23,43 @@ struct ext_loader_s
|
|||
static const struct ext_loader_s loaders[] =
|
||||
{ /* map extensions to loaders to use for good first-guess tries */
|
||||
MATCHING(".png", "png"),
|
||||
|
||||
|
||||
MATCHING(".jpg", "jpeg"),
|
||||
MATCHING(".jpeg", "jpeg"),
|
||||
MATCHING(".jfif", "jpeg"),
|
||||
|
||||
|
||||
MATCHING(".j2k", "jp2k"),
|
||||
MATCHING(".jp2", "jp2k"),
|
||||
MATCHING(".jpx", "jp2k"),
|
||||
MATCHING(".jpf", "jp2k"),
|
||||
|
||||
|
||||
MATCHING(".eet", "eet"),
|
||||
MATCHING(".edj", "eet"),
|
||||
MATCHING(".eap", "eet"),
|
||||
|
||||
|
||||
MATCHING(".xpm", "xpm"),
|
||||
|
||||
|
||||
MATCHING(".tiff", "tiff"),
|
||||
MATCHING(".tif", "tiff"),
|
||||
|
||||
|
||||
MATCHING(".gif", "gif"),
|
||||
|
||||
|
||||
MATCHING(".pbm", "pmaps"),
|
||||
MATCHING(".pgm", "pmaps"),
|
||||
MATCHING(".ppm", "pmaps"),
|
||||
MATCHING(".pnm", "pmaps"),
|
||||
|
||||
|
||||
MATCHING(".bmp", "bmp"),
|
||||
|
||||
|
||||
MATCHING(".tga", "tga"),
|
||||
|
||||
|
||||
MATCHING(".wbmp", "wbmp"),
|
||||
|
||||
|
||||
MATCHING(".webp", "webp"),
|
||||
|
||||
|
||||
MATCHING(".ico", "ico"),
|
||||
MATCHING(".cur", "ico"),
|
||||
|
||||
|
||||
MATCHING(".psd", "psd"),
|
||||
|
||||
MATCHING(".tgv", "tgv"),
|
||||
|
|
|
@ -455,7 +455,7 @@ evas_common_rgba_image_scalecache_size_set(unsigned int size)
|
|||
_cache_prune(NULL, 1);
|
||||
}
|
||||
SLKU(cache_lock);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI unsigned int
|
||||
|
@ -469,7 +469,7 @@ evas_common_rgba_image_scalecache_size_get(void)
|
|||
return t;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -493,7 +493,7 @@ evas_common_rgba_image_scalecache_dump(void)
|
|||
_cache_prune(NULL, 0);
|
||||
max_cache_size = t;
|
||||
SLKU(cache_lock);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -507,7 +507,7 @@ evas_common_rgba_image_scalecache_flush(void)
|
|||
_cache_prune(NULL, 1);
|
||||
max_cache_size = t;
|
||||
SLKU(cache_lock);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
|
@ -534,7 +534,7 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst EINA_
|
|||
if (ret == EINA_FALSE) /* can't get image lock */
|
||||
{
|
||||
useconds_t slp = 1, slpt = 0;
|
||||
|
||||
|
||||
while (slpt < 500000)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
|
@ -567,7 +567,7 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst EINA_
|
|||
printf("WARNING: DEADLOCK on image %p (%s)\n", im, ie->file);
|
||||
}
|
||||
else locked = 1;
|
||||
#endif
|
||||
#endif
|
||||
if (!locked) { SLKL(im->cache.lock); locked = 1; }
|
||||
use_counter++;
|
||||
if ((src_region_w == dst_region_w) && (src_region_h == dst_region_h))
|
||||
|
@ -588,8 +588,8 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst EINA_
|
|||
return EINA_FALSE;
|
||||
}
|
||||
SLKL(cache_lock);
|
||||
sci = _sci_find(im, dc, smooth,
|
||||
src_region_x, src_region_y, src_region_w, src_region_h,
|
||||
sci = _sci_find(im, dc, smooth,
|
||||
src_region_x, src_region_y, src_region_w, src_region_h,
|
||||
dst_region_w, dst_region_h);
|
||||
if (!sci)
|
||||
{
|
||||
|
@ -609,7 +609,7 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst EINA_
|
|||
{
|
||||
if (!sci->im)
|
||||
{
|
||||
if ((sci->key.dst_w < max_dimension) &&
|
||||
if ((sci->key.dst_w < max_dimension) &&
|
||||
(sci->key.dst_h < max_dimension))
|
||||
{
|
||||
if (sci->flop <= max_flop_count)
|
||||
|
@ -623,12 +623,12 @@ evas_common_rgba_image_scalecache_prepare(Image_Entry *ie, RGBA_Image *dst EINA_
|
|||
sci->usage++;
|
||||
sci->usage_count = use_counter;
|
||||
SLKU(cache_lock);
|
||||
if (sci->usage > im->cache.newest_usage)
|
||||
if (sci->usage > im->cache.newest_usage)
|
||||
im->cache.newest_usage = sci->usage;
|
||||
// INF("newset? %p %i > %i", im,
|
||||
// (int)sci->usage,
|
||||
// INF("newset? %p %i > %i", im,
|
||||
// (int)sci->usage,
|
||||
// (int)im->cache.newest_usage);
|
||||
if (sci->usage_count > im->cache.newest_usage_count)
|
||||
if (sci->usage_count > im->cache.newest_usage_count)
|
||||
im->cache.newest_usage_count = sci->usage_count;
|
||||
// INF(" -------------- used %8i#, %8i@", (int)sci->usage, (int)sci->usage_count);
|
||||
if (locked) SLKU(im->cache.lock);
|
||||
|
|
|
@ -37,17 +37,17 @@ _evas_draw_point(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y)
|
|||
if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h)))
|
||||
return;
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pixman_op_t op = PIXMAN_OP_SRC;
|
||||
|
||||
|
||||
if (dc->render_op == _EVAS_RENDER_BLEND)
|
||||
op = PIXMAN_OP_OVER;
|
||||
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image, NULL,
|
||||
pixman_image_composite(op, dc->col.pixman_color_image, NULL,
|
||||
dst->pixman.im, x, y, 0, 0, x, y, 1, 1);
|
||||
else
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
{
|
||||
if (dc->clip.mask)
|
||||
|
@ -166,7 +166,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
|
|||
len = x1 - x0 + 1;
|
||||
p = dst->image.data + (dstw * y0) + x0;
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
NULL, dst->pixman.im,
|
||||
|
@ -211,7 +211,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
|
|||
len = y1 - y0 + 1;
|
||||
p = dst->image.data + (dstw * y0) + x0;
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
NULL, dst->pixman.im,
|
||||
|
@ -343,7 +343,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
|
|||
}
|
||||
}
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
int pixman_x_position = x0;
|
||||
int pixman_y_position = y0;
|
||||
int x_unit = dstw - dst->cache_entry.w;
|
||||
|
@ -352,7 +352,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
|
|||
while (len--)
|
||||
{
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
NULL, dst->pixman.im,
|
||||
|
@ -373,7 +373,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
|
|||
pfunc(0, 255, color, p);
|
||||
}
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pixman_x_position += x_unit;
|
||||
pixman_y_position += 1;
|
||||
# endif
|
||||
|
@ -1050,14 +1050,14 @@ next_x:
|
|||
if (IN_RANGE(px, py, clw, clh))
|
||||
{
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
NULL, dst->pixman.im,
|
||||
pix_x, pix_y, 0, 0,
|
||||
pix_x, pix_y, 1, 1);
|
||||
else
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
{
|
||||
if (mask) pfunc(0, *mask, color, p);
|
||||
|
@ -1070,9 +1070,9 @@ next_y:
|
|||
p += dstw;
|
||||
if (mask) mask += mask_w;
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pix_y += pix_y_unit;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -1249,7 +1249,7 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
dy = y1 - y0;
|
||||
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
int pix_x;
|
||||
int pix_y;
|
||||
int pix_x_unit;
|
||||
|
@ -1257,7 +1257,7 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
|
||||
pixman_image_t *aa_mask_image;
|
||||
int alpha_data_buffer;
|
||||
|
||||
|
||||
pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
|
||||
if (dc->render_op == _EVAS_RENDER_BLEND)
|
||||
op = PIXMAN_OP_OVER;
|
||||
|
@ -1331,9 +1331,9 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
if (mask) mask += mask_w;
|
||||
py += dely;
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pix_y += pix_y_unit;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
if (!p1_in)
|
||||
|
@ -1351,11 +1351,11 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
if ((py) < clh)
|
||||
{
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
alpha_data_buffer = 255 - aa;
|
||||
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
|
||||
(uint32_t *)&alpha_data_buffer, 4);
|
||||
|
||||
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
aa_mask_image, dst->pixman.im,
|
||||
|
@ -1369,7 +1369,7 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
else pfunc(0, 255 - aa, color, p);
|
||||
}
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pixman_image_unref(aa_mask_image);
|
||||
# endif
|
||||
#endif
|
||||
|
@ -1377,11 +1377,11 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
if ((py + 1) < clh)
|
||||
{
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
alpha_data_buffer = aa;
|
||||
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
|
||||
(uint32_t *)&alpha_data_buffer, 4);
|
||||
|
||||
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
aa_mask_image, dst->pixman.im,
|
||||
|
@ -1395,27 +1395,27 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
|
|||
else pfunc(0, aa, color, p + dstw);
|
||||
}
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pixman_image_unref(aa_mask_image);
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
next_x:
|
||||
yy += dyy;
|
||||
px++;
|
||||
p++;
|
||||
if (mask) mask++;
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
# ifdef PIXMAN_LINE
|
||||
pix_x += pix_x_unit;
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* steep: y-parametric */
|
||||
SETUP_LINE_STEEP;
|
||||
if (mask) mask += (py * mask_w) + px;
|
||||
|
@ -1423,7 +1423,7 @@ next_x:
|
|||
while (py < by)
|
||||
{
|
||||
DATA8 aa;
|
||||
|
||||
|
||||
x = (xx >> 16);
|
||||
if (prev_x != x)
|
||||
{
|
||||
|
@ -1455,7 +1455,7 @@ next_x:
|
|||
# ifdef PIXMAN_LINE
|
||||
alpha_data_buffer = 255 - aa;
|
||||
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, (uint32_t *)&alpha_data_buffer, 4);
|
||||
|
||||
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
pixman_image_composite(op, dc->col.pixman_color_image,
|
||||
aa_mask_image, dst->pixman.im,
|
||||
|
@ -1473,14 +1473,14 @@ next_x:
|
|||
pixman_image_unref(aa_mask_image);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
if ((px + 1) < clw)
|
||||
{
|
||||
#ifdef HAVE_PIXMAN
|
||||
# ifdef PIXMAN_LINE
|
||||
alpha_data_buffer = aa;
|
||||
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
|
||||
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
|
||||
(uint32_t *)&alpha_data_buffer, 4);
|
||||
|
||||
if ((dst->pixman.im) && (dc->col.pixman_color_image))
|
||||
|
|
|
@ -188,43 +188,43 @@ _calc_spans(RGBA_Map_Point *p, Line *spans, int ystart, int yend, int cx, int cy
|
|||
|
||||
x = p[e1].x + temp; // intersected x point
|
||||
|
||||
/*
|
||||
/*
|
||||
// FIXME: 3d accuracy here
|
||||
// XXX t needs adjusting. above its a linear interp point
|
||||
// only.
|
||||
//
|
||||
//
|
||||
// // FIXME: do in fixed pt. reduce divides
|
||||
evas_common_cpu_end_opt();
|
||||
//
|
||||
//
|
||||
int foc = 512, z0 = 0, px = 320, py = 240; // FIXME: need from map points
|
||||
//
|
||||
float focf, hf;
|
||||
float z1, z2, y1, y2, dz, dy, zt, dydz, yt;
|
||||
|
||||
|
||||
focf = foc;
|
||||
hf = h;
|
||||
|
||||
|
||||
// adjust for fixed point and focal length and z0 for map
|
||||
z1 = (p[e1].z >> FP) - z0 + foc;
|
||||
z2 = (p[e2].z >> FP) - z0 + foc;
|
||||
// deltas
|
||||
dz = z1 - z2;
|
||||
|
||||
|
||||
if (dz != 0)
|
||||
{
|
||||
int pt;
|
||||
|
||||
|
||||
// adjust for perspective point (being 0 0)
|
||||
y1 = (p[e1].y >> FP) - py;
|
||||
y2 = (p[e2].y >> FP) - py;
|
||||
|
||||
|
||||
// correct for x &y not being in world coords - screen coords
|
||||
y1 = (y1 * z1) / focf;
|
||||
y2 = (y2 * z2) / focf;
|
||||
|
||||
|
||||
// deltas
|
||||
dy = y1 - y2;
|
||||
|
||||
|
||||
yt = y - py;
|
||||
dydz = dy / dz;
|
||||
|
||||
|
@ -506,14 +506,14 @@ _evas_common_map_rgba_span(RGBA_Map_Spans *span,
|
|||
{
|
||||
if (p[i].y > ybottom) ybottom = p[i].y;
|
||||
}
|
||||
|
||||
|
||||
// convert to screen space from fixed point
|
||||
ytop = ytop >> FP;
|
||||
ybottom = ybottom >> FP;
|
||||
|
||||
|
||||
// if its outside the clip vertical bounds - don't bother
|
||||
if ((ytop >= (cy + ch)) || (ybottom < cy)) return;
|
||||
|
||||
|
||||
// limit to the clip vertical bounds
|
||||
if (ytop < cy) span->ystart = cy;
|
||||
else span->ystart = ytop;
|
||||
|
@ -529,12 +529,12 @@ _evas_common_map_rgba_span(RGBA_Map_Spans *span,
|
|||
if (p[i].u < 0) p[i].u = 0;
|
||||
else if (p[i].u > (int)(sw << FP))
|
||||
p[i].u = src->cache_entry.w << FP;
|
||||
|
||||
|
||||
if (p[i].v < 0) p[i].v = 0;
|
||||
else if (p[i].v > (int)(sw << FP))
|
||||
p[i].v = src->cache_entry.h << FP;
|
||||
}
|
||||
|
||||
|
||||
// allocate some spans to hold out span list
|
||||
if (span->size < (span->yend - span->ystart + 1))
|
||||
{
|
||||
|
@ -950,7 +950,7 @@ evas_common_map_rgba_do(const Eina_Rectangle *clip,
|
|||
|
||||
#ifdef BUILD_MMX
|
||||
evas_common_cpu_can_do(&mmx, &sse, &sse2);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
spans = m->engine_data;
|
||||
rects = spans->rects;
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
c2 = span->col[1]; // col
|
||||
cv = 0; // col
|
||||
cd = (255 << 16) / w; // col
|
||||
|
||||
|
||||
if (c1 == c2)
|
||||
{
|
||||
if (c1 == 0xffffffff)
|
||||
|
|
|
@ -87,7 +87,7 @@ _map_aa_edge_calc_internal(AALine *spans, int eidx, int ystart, int yend)
|
|||
{
|
||||
int y = 0;
|
||||
Evas_Coord_Point p_edge = {-1, -1}; //previous edge point
|
||||
Evas_Coord_Point edge_diff = {0, 0}; //temporary used for point distance
|
||||
Evas_Coord_Point edge_diff = {0, 0}; //temporary used for point distance
|
||||
|
||||
/* store bigger to tx[0] between prev and current edge's x positions. */
|
||||
int tx[2] = {0, 0};
|
||||
|
@ -763,7 +763,7 @@ _evas_common_map_rgba_internal_high(RGBA_Image *src, RGBA_Image *dst,
|
|||
DATA32 c[4];
|
||||
RGBA_Gfx_Func func = NULL;
|
||||
RGBA_Gfx_Func func2 = NULL;
|
||||
DATA32 *tbuf = NULL; //Temporarily used span buffer
|
||||
DATA32 *tbuf = NULL; //Temporarily used span buffer
|
||||
Eina_Bool have_alpha = EINA_FALSE;
|
||||
Eina_Bool src_alpha = src->cache_entry.flags.alpha;
|
||||
Eina_Bool ssrc_alpha = src->cache_entry.flags.alpha_sparse;
|
||||
|
@ -773,8 +773,8 @@ _evas_common_map_rgba_internal_high(RGBA_Image *src, RGBA_Image *dst,
|
|||
//FIXME: we cannot apply anti_aliasing per polygons.
|
||||
anti_alias = EINA_FALSE;
|
||||
|
||||
/* Prepare points data.
|
||||
Convert to float,
|
||||
/* Prepare points data.
|
||||
Convert to float,
|
||||
shift XY coordinates to match the sub-pixeling technique.
|
||||
Check alpha transparency. */
|
||||
for (int i = 0; i < 4; i++)
|
||||
|
@ -844,7 +844,7 @@ _evas_common_map_rgba_internal_high(RGBA_Image *src, RGBA_Image *dst,
|
|||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
/*
|
||||
1 polygon is consisted of 2 triangles, 4 polygons constructs 1 mesh.
|
||||
below figure illustrates vert[9] index info.
|
||||
If you need better quality, please divide a mesh by more number of triangles.
|
||||
|
|
|
@ -174,7 +174,7 @@ init_blend_mask_color_span_funcs_sse3(void)
|
|||
op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3;
|
||||
op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3;
|
||||
|
||||
// FIXME: BUGGY BUGGY Core i5 2500 (64bit), gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text)
|
||||
// FIXME: BUGGY BUGGY Core i5 2500 (64bit), gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text)
|
||||
// op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_SSE3] = _op_blend_mas_c_dpan_sse3;
|
||||
op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_mas_cn_dpan_sse3;
|
||||
op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_SSE3] = _op_blend_mas_can_dpan_sse3;
|
||||
|
|
|
@ -47,7 +47,7 @@ evas_common_op_blend_init_sse3(void)
|
|||
init_blend_pixel_mask_pt_funcs_sse3();
|
||||
init_blend_color_pt_funcs_sse3();
|
||||
init_blend_mask_color_pt_funcs_sse3();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -65,7 +65,7 @@ evas_common_op_blend_rel_init_sse3(void)
|
|||
init_blend_rel_pixel_mask_pt_funcs_sse3();
|
||||
init_blend_rel_color_pt_funcs_sse3();
|
||||
init_blend_rel_mask_color_pt_funcs_sse3();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
//#pragma GCC push_options
|
||||
|
@ -75,10 +75,10 @@ evas_common_op_sse3_test(void)
|
|||
{
|
||||
#ifdef BUILD_SSE3
|
||||
DATA32 s[64] = {0x11883399}, d[64] = {0xff88cc33};
|
||||
|
||||
|
||||
s[0] = rand(); d[1] = rand();
|
||||
_op_blend_pas_dp_sse3(s, NULL, 0, d, 64);
|
||||
evas_common_cpu_end_opt();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
//#pragma GCC pop_options
|
||||
|
|
|
@ -26,7 +26,7 @@ static void
|
|||
_op_blend_pas_dp_mmx(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c EINA_UNUSED, DATA32 *d, int l) {
|
||||
_op_blend_p_dp_mmx(s, m, c, d, l);
|
||||
return;
|
||||
/*
|
||||
/*
|
||||
DATA32 *e = d + l;
|
||||
pxor_r2r(mm0, mm0);
|
||||
MOV_A2R(ALPHA_256, mm6)
|
||||
|
|
|
@ -245,7 +245,7 @@ _op_blend_p_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c EINA_UNUSED, DATA3
|
|||
"vldm %[s]!, {d0,d1,d2,d3) \n\t"
|
||||
"vldm %[d], {d4,d5,d6,d7} \n\t"
|
||||
"pld [%[s], #64] \n\t"
|
||||
|
||||
|
||||
|
||||
// Copy s.a into q2 (>> 24) & subtract from 255
|
||||
"vmvn.u8 q4, q0 \n\t"
|
||||
|
@ -302,7 +302,7 @@ _op_blend_p_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c EINA_UNUSED, DATA3
|
|||
"sub %[tmp],%[e],$0x7 \n\t"
|
||||
AP "dualloop2int: \n\t"
|
||||
//** Trailing double
|
||||
|
||||
|
||||
"vldm %[s]!, {d0} \n\t"
|
||||
"vldm %[d], {d4} \n\t"
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ op_blend_init(void)
|
|||
init_blend_pixel_mask_span_funcs_mmx(); // FIXME
|
||||
init_blend_color_span_funcs_mmx();
|
||||
init_blend_mask_color_span_funcs_mmx();
|
||||
|
||||
|
||||
init_blend_pixel_pt_funcs_mmx();
|
||||
init_blend_pixel_color_pt_funcs_mmx();
|
||||
init_blend_pixel_mask_pt_funcs_mmx();
|
||||
|
@ -128,7 +128,7 @@ op_blend_init(void)
|
|||
init_blend_pixel_mask_span_funcs_neon(); // FIXME
|
||||
init_blend_color_span_funcs_neon();
|
||||
init_blend_mask_color_span_funcs_neon();
|
||||
|
||||
|
||||
init_blend_pixel_pt_funcs_neon();
|
||||
init_blend_pixel_color_pt_funcs_neon();
|
||||
init_blend_pixel_mask_pt_funcs_neon();
|
||||
|
|
|
@ -32,7 +32,7 @@ init_copy_color_span_funcs_c(void)
|
|||
op_copy_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_can_dpan;
|
||||
op_copy_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_caa_dpan;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_op_copy_pt_c_dp(DATA32 s EINA_UNUSED, DATA8 m EINA_UNUSED, DATA32 c, DATA32 *d) {
|
||||
*d = c;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* copy pixel x mask --> dst */
|
||||
|
||||
static void
|
||||
static void
|
||||
_op_copy_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c EINA_UNUSED, DATA32 *d, int l) {
|
||||
DATA32 *e;
|
||||
int color;
|
||||
|
|
|
@ -86,7 +86,7 @@ init_copy_pixel_mask_pt_funcs_mmx(void)
|
|||
/* copy_rel pixel x mask --> dst */
|
||||
|
||||
#ifdef BUILD_MMX
|
||||
static void
|
||||
static void
|
||||
_op_copy_rel_p_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c EINA_UNUSED, DATA32 *d, int l) {
|
||||
DATA32 *e = d + l;
|
||||
pxor_r2r(mm0, mm0);
|
||||
|
@ -139,7 +139,7 @@ init_copy_rel_pixel_mask_span_funcs_mmx(void)
|
|||
#endif
|
||||
|
||||
#ifdef BUILD_MMX
|
||||
static void
|
||||
static void
|
||||
_op_copy_rel_pt_p_mas_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
|
||||
c = m + 1;
|
||||
pxor_r2r(mm0, mm0);
|
||||
|
|
|
@ -76,7 +76,7 @@ init_copy_pixel_mask_pt_funcs_neon(void)
|
|||
/* copy_rel pixel x mask --> dst */
|
||||
|
||||
#ifdef BUILD_NEON
|
||||
static void
|
||||
static void
|
||||
_op_copy_rel_p_mas_dp_neon(DATA32 *s, DATA8 *m, DATA32 c EINA_UNUSED, DATA32 *d, int l) {
|
||||
// FIXME: neon-it
|
||||
DATA32 *e;
|
||||
|
@ -122,7 +122,7 @@ init_copy_rel_pixel_mask_span_funcs_neon(void)
|
|||
#endif
|
||||
|
||||
#ifdef BUILD_NEON
|
||||
static void
|
||||
static void
|
||||
_op_copy_rel_pt_p_mas_dp_neon(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
|
||||
c = MUL_SYM(*d >> 24, s);
|
||||
*d = INTERP_256(m + 1, c, *d);
|
||||
|
|
|
@ -13,8 +13,8 @@ _op_copy_p_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c EINA_UNUSED, DATA32
|
|||
if (e > d)
|
||||
{
|
||||
int dl;
|
||||
|
||||
asm volatile
|
||||
|
||||
asm volatile
|
||||
(".fpu neon \n\t"
|
||||
"_op_copy_p_dp_neon_asmloop: \n\t"
|
||||
"pld [%[s], #192] \n\t" // preload 256 bytes ahead
|
||||
|
@ -31,12 +31,12 @@ _op_copy_p_dp_neon(DATA32 *s, DATA8 *m EINA_UNUSED, DATA32 c EINA_UNUSED, DATA32
|
|||
: /*in */ [s] "r" (s), [e] "r" (e), [d] "r" (d)
|
||||
: /*clobber*/
|
||||
"q0", "q1", "q2","q3", "q4", "q5", "q6",
|
||||
"d0", "d1", "d2", "d3",
|
||||
"d4", "d5", "d6", "d7",
|
||||
"d0", "d1", "d2", "d3",
|
||||
"d4", "d5", "d6", "d7",
|
||||
"d8", "d9", "d10", "d11",
|
||||
"memory" // clobbered
|
||||
);
|
||||
dl = l % 24; // dl is how many pixels at end that is not a multiple of 24
|
||||
dl = l % 24; // dl is how many pixels at end that is not a multiple of 24
|
||||
l = l - dl; // jump to there at the end of the run?
|
||||
s = s + l;
|
||||
d = d + l;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* mask pixel x mask --> dst */
|
||||
|
||||
static void
|
||||
static void
|
||||
_op_mask_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c EINA_UNUSED, DATA32 *d, int l) {
|
||||
DATA32 *e = d + l;
|
||||
while (d < e) {
|
||||
|
@ -36,7 +36,7 @@ init_mask_pixel_mask_span_funcs_c(void)
|
|||
op_mask_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mask_pas_mas_dpan;
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
_op_mask_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c EINA_UNUSED, DATA32 *d) {
|
||||
s = 256 - (((256 - (s >> 24)) * m) >> 8);
|
||||
*d = MUL_256(s, *d);
|
||||
|
|
|
@ -621,7 +621,7 @@ static Eina_Bool
|
|||
evas_common_pipe_map_draw_prepare(void *data EINA_UNUSED, RGBA_Image *dst, RGBA_Pipe_Op *op)
|
||||
{
|
||||
RGBA_Draw_Context context;
|
||||
Eina_Bool r;
|
||||
Eina_Bool r;
|
||||
|
||||
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
|
||||
r = evas_common_map_rgba_prepare(op->op.map.src, dst,
|
||||
|
@ -641,10 +641,10 @@ evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
|
|||
/* pts_copy = malloc(sizeof (RGBA_Map_Point) * 4); */
|
||||
/* if (!pts_copy) return; */
|
||||
dst->cache_entry.pipe = evas_common_pipe_add(dst->cache_entry.pipe, &op);
|
||||
if (!dst->cache_entry.pipe)
|
||||
if (!dst->cache_entry.pipe)
|
||||
{
|
||||
/* free(pts_copy); */
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
/* for (i = 0; i < 4; ++i) */
|
||||
|
|
|
@ -143,7 +143,7 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po
|
|||
pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
|
||||
if (dc->render_op == _EVAS_RENDER_BLEND)
|
||||
op = PIXMAN_OP_OVER;
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
ext_x = 0;
|
||||
|
|
|
@ -1430,7 +1430,7 @@ evas_common_format_color_parse(const char *str, int slen,
|
|||
|
||||
if ((strncmp(color_name,"rgb(",4) == 0) && color_name[slen-1] == ')'&& slen >= 10 && slen <=16) /* rgb() */
|
||||
{
|
||||
char * p_color = &color_name[3];
|
||||
char * p_color = &color_name[3];
|
||||
|
||||
if (
|
||||
(!read_byte_color_component(++p_color,&p_color,r) || !p_color || *p_color != ',') ||
|
||||
|
@ -1448,7 +1448,7 @@ evas_common_format_color_parse(const char *str, int slen,
|
|||
}
|
||||
else if ((strncmp(color_name,"rgba(",4) == 0) && color_name[slen-1] == ')'&& slen >= 13 && slen <=21) /* rgba() */
|
||||
{
|
||||
char * p_color = &color_name[4];
|
||||
char * p_color = &color_name[4];
|
||||
|
||||
if (
|
||||
(!read_byte_color_component(++p_color,&p_color,r) || !p_color || *p_color != ',') ||
|
||||
|
|
|
@ -311,7 +311,7 @@ static inline list_node_t *
|
|||
rect_list_unlink_next(list_t *rects, list_node_t *parent_node)
|
||||
{
|
||||
list_node_t *node;
|
||||
|
||||
|
||||
if (parent_node)
|
||||
{
|
||||
node = parent_node->next;
|
||||
|
@ -341,7 +341,7 @@ rect_list_clear(list_t *rects)
|
|||
while (node)
|
||||
{
|
||||
list_node_t *aux;
|
||||
|
||||
|
||||
aux = node->next;
|
||||
rect_list_node_pool_put(node);
|
||||
node = aux;
|
||||
|
@ -485,7 +485,7 @@ _calc_intra_outer_rect_area(const rect_t a, const rect_t b,
|
|||
{
|
||||
int min_left, max_left, min_right, max_right;
|
||||
int min_top, max_top, min_bottom, max_bottom;
|
||||
|
||||
|
||||
if (a.left < b.left)
|
||||
{
|
||||
max_left = b.left;
|
||||
|
@ -911,7 +911,7 @@ evas_common_tilebuf_add_redraw(Tilebuf *tb, int x, int y, int w, int h)
|
|||
RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, tb->outbuf_w, tb->outbuf_h);
|
||||
if ((w <= 0) || (h <= 0)) return 0;
|
||||
// optimize a common case -> adding the exact same rect 2x in a row
|
||||
if ((tb->prev_add.x == x) && (tb->prev_add.y == y) &&
|
||||
if ((tb->prev_add.x == x) && (tb->prev_add.y == y) &&
|
||||
(tb->prev_add.w == w) && (tb->prev_add.h == h)) return 1;
|
||||
tb->prev_add.x = x; tb->prev_add.y = y;
|
||||
tb->prev_add.w = w; tb->prev_add.h = h;
|
||||
|
@ -929,7 +929,7 @@ evas_common_tilebuf_del_redraw(Tilebuf *tb, int x, int y, int w, int h)
|
|||
RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, tb->outbuf_w, tb->outbuf_h);
|
||||
if ((w <= 0) || (h <= 0)) return 0;
|
||||
// optimize a common case -> deleting the exact same rect 2x in a row
|
||||
if ((tb->prev_del.x == x) && (tb->prev_del.y == y) &&
|
||||
if ((tb->prev_del.x == x) && (tb->prev_del.y == y) &&
|
||||
(tb->prev_del.w == w) && (tb->prev_del.h == h)) return 1;
|
||||
tb->prev_del.x = x; tb->prev_del.y = y;
|
||||
tb->prev_del.w = w; tb->prev_del.h = h;
|
||||
|
@ -1018,7 +1018,7 @@ evas_common_tilebuf_get_render_rects(Tilebuf *tb)
|
|||
if (x1 < bx1) bx1 = x1;
|
||||
x2 = x1 + ((rect_node_t *)n)->rect.width;
|
||||
if (x2 > bx2) bx2 = x2;
|
||||
|
||||
|
||||
y1 = ((rect_node_t *)n)->rect.top;
|
||||
if (y1 < by1) by1 = y1;
|
||||
y2 = y1 + ((rect_node_t *)n)->rect.height;
|
||||
|
@ -1028,7 +1028,7 @@ evas_common_tilebuf_get_render_rects(Tilebuf *tb)
|
|||
}
|
||||
else
|
||||
return NULL;
|
||||
|
||||
|
||||
/* magic number - if we have > MAXREG regions to update, take bounding */
|
||||
if (num > MAXREG)
|
||||
{
|
||||
|
|
|
@ -21,20 +21,20 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
Except as contained in this notice, the name of The Open Group shall not be
|
||||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from The Open Group.
|
||||
|
||||
|
||||
Copyright 1987, 1988, 1989 by
|
||||
Digital Equipment Corporation, Maynard, Massachusetts.
|
||||
|
||||
Copyright 1987, 1988, 1989 by
|
||||
Digital Equipment Corporation, Maynard, Massachusetts.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Digital not be
|
||||
used in advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
software without specific, written prior permission.
|
||||
|
||||
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
|
@ -1252,7 +1252,7 @@ region_rect_inside(Region *region, Box *bx)
|
|||
return REGION_STATE_PARTIAL;
|
||||
}
|
||||
|
||||
// (x,y) starts at upper left of rect, moving to the right and down
|
||||
// (x,y) starts at upper left of rect, moving to the right and down
|
||||
x = bx->x1;
|
||||
y = bx->y1;
|
||||
|
||||
|
|
|
@ -30,13 +30,13 @@ Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
|
|||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Digital not be
|
||||
used in advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
software without specific, written prior permission.
|
||||
|
||||
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
|
|
|
@ -1414,7 +1414,7 @@ _curve_instruction_prepare(Evas_Filter_Program *pgm, Evas_Filter_Instruction *in
|
|||
param->allow_any_string = EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
_instruction_param_seq_add(instr, "interpolation", VT_STRING, "linear");
|
||||
_instruction_param_seq_add(instr, "channel", VT_STRING, "rgb");
|
||||
_instruction_param_name_add(instr, "src", VT_BUFFER, _buffer_get(pgm, "input"));
|
||||
|
|
|
@ -198,7 +198,7 @@ extern const DATA32 ALPHA_256;
|
|||
|
||||
/* copy 32bit value to lower bits of register reg */
|
||||
#define VMOV_M2R_NEON(reg, value) \
|
||||
__asm__ __volatile__("vmov.32 " #reg "[0], %[val] \n\t" :: [val] "r" (value) : #reg);
|
||||
__asm__ __volatile__("vmov.32 " #reg "[0], %[val] \n\t" :: [val] "r" (value) : #reg);
|
||||
|
||||
/* save 32bit value from lower 64 bits of register regq to memory location */
|
||||
/* pointed to by pointer, using 64bit register regd as temporary location */
|
||||
|
@ -212,7 +212,7 @@ extern const DATA32 ALPHA_256;
|
|||
|
||||
/* spread value in register reg */
|
||||
#define VDUP_NEON(reg, value) \
|
||||
__asm__ __volatile__("vdup.16 " #reg ", %[val] \n\t" :: [val] "r" (value) : #reg);
|
||||
__asm__ __volatile__("vdup.16 " #reg ", %[val] \n\t" :: [val] "r" (value) : #reg);
|
||||
|
||||
/* interleave contents of reg1 and reg2 */
|
||||
#define VZIP_NEON(reg1, reg2) \
|
||||
|
|
Loading…
Reference in New Issue