in theory - (not tested yet) allow hitns to set middle to solid of

borderscaling.



SVN revision: 39000
This commit is contained in:
Carsten Haitzler 2009-02-12 13:38:33 +00:00
parent 166c76146d
commit cb94c8fadd
2 changed files with 22 additions and 12 deletions

View File

@ -245,6 +245,12 @@ typedef enum _Evas_Render_Op
EVAS_RENDER_MUL = 11 /**< d = d*s */
} Evas_Render_Op; /**< */
typedef enum _Evas_Border_Fill_Mode
{
EVAS_BORDER_FILL_NONE = 0,
EVAS_BORDER_FILL_DEFAULT = 1,
EVAS_BORDER_FILL_SOLID = 2
} Evas_Border_Fill_Mode;
struct _Evas_Engine_Info /** Generic engine information. Generic info is useless */
{
@ -509,8 +515,8 @@ extern "C" {
EAPI void evas_object_image_file_get (const Evas_Object *obj, const char **file, const char **key);
EAPI void evas_object_image_border_set (Evas_Object *obj, int l, int r, int t, int b);
EAPI void evas_object_image_border_get (const Evas_Object *obj, int *l, int *r, int *t, int *b);
EAPI void evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Bool fill);
EAPI Evas_Bool evas_object_image_border_center_fill_get(const Evas_Object *obj);
EAPI void evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Border_Fill_Mode fill);
EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get(const Evas_Object *obj);
EAPI void evas_object_image_filled_set (Evas_Object *obj, Evas_Bool setting);
EAPI Evas_Bool evas_object_image_filled_get (const Evas_Object *obj);
EAPI void evas_object_image_fill_set (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);

View File

@ -441,14 +441,14 @@ evas_object_image_border_get(const Evas_Object *obj, int *l, int *r, int *t, int
*
* When rendering, the image may be scaled to fit the size of the
* image object. This function sets if the center part of the scaled image
* is to be drawn or left completely blank. Very useful for frames and
* decorations.
* is to be drawn or left completely blank, or forced to be solid. Very useful
* for frames and decorations.
*
* @param obj The given image object.
* @param fill Whether the center should be drawn.
* @param fill Fill mode of the middle.
*/
EAPI void
evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Bool fill)
evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Border_Fill_Mode fill)
{
Evas_Object_Image *o;
@ -459,9 +459,7 @@ evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Bool fill)
MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
return;
MAGIC_CHECK_END();
if (((o->cur.border.fill) && (fill)) ||
((!o->cur.border.fill) && (!fill)))
return;
if (fill == o->cur.border.fill) return;
o->cur.border.fill = fill;
o->changed = 1;
evas_object_change(obj);
@ -541,9 +539,9 @@ evas_object_image_filled_set(Evas_Object *obj, Evas_Bool setting)
* See @ref evas_object_image_fill_set for more details.
*
* @param obj The given image object.
* @return If the center is to be drawn or not.
* @return Fill mode of the center.
*/
EAPI Evas_Bool
EAPI Evas_Border_Fill_Mode
evas_object_image_border_center_fill_get(const Evas_Object *obj)
{
Evas_Object_Image *o;
@ -2247,13 +2245,19 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
outx = ox; outy = oy + bt;
outw = bl; outh = ih - bt - bb;
obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
if (o->cur.border.fill)
if (o->cur.border.fill > EVAS_BORDER_FILL_NONE)
{
inx = bl; iny = bt;
inw = imw - bl - br; inh = imh - bt - bb;
outx = ox + bl; outy = oy + bt;
outw = iw - bl - br; outh = ih - bt - bb;
if (o->cur.border.fill == EVAS_BORDER_FILL_SOLID)
obj->layer->evas->engine.func->context_render_op_set(output, context,
EVAS_RENDER_COPY);
obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
if (o->cur.border.fill == EVAS_BORDER_FILL_SOLID)
obj->layer->evas->engine.func->context_render_op_set(output, context,
obj->cur.render_op);
}
inx = imw - br; iny = bt;
inw = br; inh = imh - bt - bb;