diff options
Diffstat (limited to '')
65 files changed, 3169 insertions, 1294 deletions
diff --git a/libraries/evas/src/lib/Evas.h b/libraries/evas/src/lib/Evas.h index 5898290..b85bbeb 100644 --- a/libraries/evas/src/lib/Evas.h +++ b/libraries/evas/src/lib/Evas.h | |||
@@ -5,6 +5,7 @@ | |||
5 | @date 2000-2011 | 5 | @date 2000-2011 |
6 | 6 | ||
7 | Please see the @ref authors page for contact details. | 7 | Please see the @ref authors page for contact details. |
8 | |||
8 | @link Evas.h Evas API @endlink | 9 | @link Evas.h Evas API @endlink |
9 | 10 | ||
10 | @section toc Table of Contents | 11 | @section toc Table of Contents |
@@ -342,7 +343,7 @@ extern "C" { | |||
342 | #endif | 343 | #endif |
343 | 344 | ||
344 | #define EVAS_VERSION_MAJOR 1 | 345 | #define EVAS_VERSION_MAJOR 1 |
345 | #define EVAS_VERSION_MINOR 0 | 346 | #define EVAS_VERSION_MINOR 2 |
346 | 347 | ||
347 | typedef struct _Evas_Version | 348 | typedef struct _Evas_Version |
348 | { | 349 | { |
@@ -432,6 +433,9 @@ typedef enum _Evas_Callback_Type | |||
432 | */ | 433 | */ |
433 | EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some mechanims in Evas that throw out original image data) */ | 434 | EVAS_CALLBACK_IMAGE_UNLOADED, /**< Image data has been unloaded (by some mechanims in Evas that throw out original image data) */ |
434 | 435 | ||
436 | EVAS_CALLBACK_RENDER_PRE, /**< Called just before rendering starts on the canvas target @since 1.2 */ | ||
437 | EVAS_CALLBACK_RENDER_POST, /**< Called just after rendering stops on the canvas target @since 1.2 */ | ||
438 | |||
435 | EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an event */ | 439 | EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an event */ |
436 | } Evas_Callback_Type; /**< The types of events triggering a callback */ | 440 | } Evas_Callback_Type; /**< The types of events triggering a callback */ |
437 | 441 | ||
@@ -1061,7 +1065,8 @@ struct _Evas_Event_Hold /** Hold change event */ | |||
1061 | typedef enum _Evas_Object_Pointer_Mode | 1065 | typedef enum _Evas_Object_Pointer_Mode |
1062 | { | 1066 | { |
1063 | EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */ | 1067 | EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */ |
1064 | EVAS_OBJECT_POINTER_MODE_NOGRAB /**< pointer always bound to the object right below it */ | 1068 | EVAS_OBJECT_POINTER_MODE_NOGRAB, /**< pointer always bound to the object right below it */ |
1069 | EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN /**< useful on object with "repeat events" enabled, where mouse/touch up and down events WONT be repeated to objects and these objects wont be auto-grabbed. @since 1.2 */ | ||
1065 | } Evas_Object_Pointer_Mode; /**< How the mouse pointer should be handled by Evas. */ | 1070 | } Evas_Object_Pointer_Mode; /**< How the mouse pointer should be handled by Evas. */ |
1066 | 1071 | ||
1067 | typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info); /**< Evas smart objects' "smart callback" function signature */ | 1072 | typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info); /**< Evas smart objects' "smart callback" function signature */ |
@@ -1220,7 +1225,7 @@ EAPI Evas_Alloc_Error evas_alloc_error (void); | |||
1220 | * | 1225 | * |
1221 | * @ingroup Evas_Group | 1226 | * @ingroup Evas_Group |
1222 | */ | 1227 | */ |
1223 | EAPI int evas_async_events_fd_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE; | 1228 | EAPI int evas_async_events_fd_get (void) EINA_WARN_UNUSED_RESULT; |
1224 | 1229 | ||
1225 | /** | 1230 | /** |
1226 | * @brief Trigger the processing of all events waiting on the file | 1231 | * @brief Trigger the processing of all events waiting on the file |
@@ -1339,7 +1344,7 @@ EAPI void evas_focus_out (Evas *e); | |||
1339 | * @param e The evas to query information. | 1344 | * @param e The evas to query information. |
1340 | * @ingroup Evas_Canvas | 1345 | * @ingroup Evas_Canvas |
1341 | */ | 1346 | */ |
1342 | EAPI Eina_Bool evas_focus_state_get (const Evas *e) EINA_PURE; | 1347 | EAPI Eina_Bool evas_focus_state_get (const Evas *e); |
1343 | 1348 | ||
1344 | /** | 1349 | /** |
1345 | * Push the nochange flag up 1 | 1350 | * Push the nochange flag up 1 |
@@ -1380,7 +1385,7 @@ EAPI void evas_data_attach_set (Evas *e, void *data) E | |||
1380 | * @return The pointer attached | 1385 | * @return The pointer attached |
1381 | * @ingroup Evas_Canvas | 1386 | * @ingroup Evas_Canvas |
1382 | */ | 1387 | */ |
1383 | EAPI void *evas_data_attach_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 1388 | EAPI void *evas_data_attach_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
1384 | 1389 | ||
1385 | 1390 | ||
1386 | /** | 1391 | /** |
@@ -1747,7 +1752,7 @@ EAPI void evas_output_method_set (Evas *e, int render_me | |||
1747 | * returned if there is an error. | 1752 | * returned if there is an error. |
1748 | * @ingroup Evas_Output_Method | 1753 | * @ingroup Evas_Output_Method |
1749 | */ | 1754 | */ |
1750 | EAPI int evas_output_method_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 1755 | EAPI int evas_output_method_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
1751 | 1756 | ||
1752 | 1757 | ||
1753 | /** | 1758 | /** |
@@ -1764,7 +1769,7 @@ EAPI int evas_output_method_get (const Evas *e) EINA_WA | |||
1764 | * an engine has not yet been assigned. | 1769 | * an engine has not yet been assigned. |
1765 | * @ingroup Evas_Output_Method | 1770 | * @ingroup Evas_Output_Method |
1766 | */ | 1771 | */ |
1767 | EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 1772 | EAPI Evas_Engine_Info *evas_engine_info_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
1768 | 1773 | ||
1769 | /** | 1774 | /** |
1770 | * Applies the engine settings for the given evas from the given @c | 1775 | * Applies the engine settings for the given evas from the given @c |
@@ -1876,6 +1881,38 @@ EAPI void evas_output_viewport_set (Evas *e, Evas_Coord x, | |||
1876 | EAPI void evas_output_viewport_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); | 1881 | EAPI void evas_output_viewport_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1); |
1877 | 1882 | ||
1878 | /** | 1883 | /** |
1884 | * Sets the output framespace size of the render engine of the given evas. | ||
1885 | * | ||
1886 | * The framespace size is used in the Wayland engines to denote space where | ||
1887 | * the output is not drawn. This is mainly used in ecore_evas to draw borders | ||
1888 | * | ||
1889 | * The units used for @p w and @p h depend on the engine used by the | ||
1890 | * evas. | ||
1891 | * | ||
1892 | * @param e The given evas. | ||
1893 | * @param x The left coordinate in output units, usually pixels. | ||
1894 | * @param y The top coordinate in output units, usually pixels. | ||
1895 | * @param w The width in output units, usually pixels. | ||
1896 | * @param h The height in output units, usually pixels. | ||
1897 | * @ingroup Evas_Output_Size | ||
1898 | * @since 1.1.0 | ||
1899 | */ | ||
1900 | EAPI void evas_output_framespace_set (Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h); | ||
1901 | |||
1902 | /** | ||
1903 | * Get the render engine's output framespace co-ordinates in canvas units. | ||
1904 | * | ||
1905 | * @param e The pointer to the Evas Canvas | ||
1906 | * @param x The pointer to a x variable to be filled in | ||
1907 | * @param y The pointer to a y variable to be filled in | ||
1908 | * @param w The pointer to a width variable to be filled in | ||
1909 | * @param h The pointer to a height variable to be filled in | ||
1910 | * @ingroup Evas_Output_Size | ||
1911 | * @since 1.1.0 | ||
1912 | */ | ||
1913 | EAPI void evas_output_framespace_get (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); | ||
1914 | |||
1915 | /** | ||
1879 | * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions | 1916 | * @defgroup Evas_Coord_Mapping_Group Coordinate Mapping Functions |
1880 | * | 1917 | * |
1881 | * Functions that are used to map coordinates from the canvas to the | 1918 | * Functions that are used to map coordinates from the canvas to the |
@@ -2342,6 +2379,33 @@ EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Objec | |||
2342 | */ | 2379 | */ |
2343 | 2380 | ||
2344 | /** | 2381 | /** |
2382 | * Set the default set of flags an event begins with | ||
2383 | * | ||
2384 | * @param e The canvas to set the default event flags of | ||
2385 | * @param flags The default flags to use | ||
2386 | * | ||
2387 | * Events in evas can have an event_flags member. This starts out with | ||
2388 | * and initial value (no flags). this lets you set the default flags that | ||
2389 | * an event begins with to be @p flags | ||
2390 | * | ||
2391 | * @since 1.2 | ||
2392 | */ | ||
2393 | EAPI void evas_event_default_flags_set (Evas *e, Evas_Event_Flags flags) EINA_ARG_NONNULL(1); | ||
2394 | |||
2395 | /** | ||
2396 | * Get the defaulty set of flags an event begins with | ||
2397 | * | ||
2398 | * @param e The canvas to get the default event flags from | ||
2399 | * @return The default event flags for that canvas | ||
2400 | * | ||
2401 | * This gets the default event flags events are produced with when fed in. | ||
2402 | * | ||
2403 | * @see evas_event_default_flags_set() | ||
2404 | * @since 1.2 | ||
2405 | */ | ||
2406 | EAPI Evas_Event_Flags evas_event_default_flags_get (const Evas *e) EINA_ARG_NONNULL(1); | ||
2407 | |||
2408 | /** | ||
2345 | * Freeze all input events processing. | 2409 | * Freeze all input events processing. |
2346 | * | 2410 | * |
2347 | * @param e The canvas to freeze input events processing on. | 2411 | * @param e The canvas to freeze input events processing on. |
@@ -2407,7 +2471,7 @@ EAPI void evas_event_thaw (Evas *e) EINA_ARG_NONN | |||
2407 | * @endcode | 2471 | * @endcode |
2408 | * | 2472 | * |
2409 | */ | 2473 | */ |
2410 | EAPI int evas_event_freeze_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2474 | EAPI int evas_event_freeze_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2411 | 2475 | ||
2412 | /** | 2476 | /** |
2413 | * After thaw of a canvas, re-evaluate the state of objects and call callbacks | 2477 | * After thaw of a canvas, re-evaluate the state of objects and call callbacks |
@@ -2448,6 +2512,16 @@ EAPI void evas_event_thaw_eval (Evas *e) EINA_ARG_NONN | |||
2448 | */ | 2512 | */ |
2449 | 2513 | ||
2450 | /** | 2514 | /** |
2515 | * Get the number of mouse or multi presses currently active | ||
2516 | * | ||
2517 | * @p e The given canvas pointer. | ||
2518 | * @return The numer of presses (0 if none active). | ||
2519 | * | ||
2520 | * @since 1.2 | ||
2521 | */ | ||
2522 | EAPI int evas_event_down_count_get (const Evas *e) EINA_ARG_NONNULL(1); | ||
2523 | |||
2524 | /** | ||
2451 | * Mouse down event feed. | 2525 | * Mouse down event feed. |
2452 | * | 2526 | * |
2453 | * @param e The given canvas pointer. | 2527 | * @param e The given canvas pointer. |
@@ -2679,7 +2753,7 @@ EAPI void evas_image_cache_set (Evas *e, int size) EIN | |||
2679 | * This function returns the image cache size of canvas in bytes. | 2753 | * This function returns the image cache size of canvas in bytes. |
2680 | * | 2754 | * |
2681 | */ | 2755 | */ |
2682 | EAPI int evas_image_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2756 | EAPI int evas_image_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2683 | 2757 | ||
2684 | /** | 2758 | /** |
2685 | * Get the maximum image size evas can possibly handle | 2759 | * Get the maximum image size evas can possibly handle |
@@ -2728,7 +2802,7 @@ EAPI void evas_font_hinting_set (Evas *e, Evas_Font_H | |||
2728 | * #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE. | 2802 | * #EVAS_FONT_HINTING_AUTO, #EVAS_FONT_HINTING_BYTECODE. |
2729 | * @ingroup Evas_Font_Group | 2803 | * @ingroup Evas_Font_Group |
2730 | */ | 2804 | */ |
2731 | EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2805 | EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2732 | 2806 | ||
2733 | /** | 2807 | /** |
2734 | * Checks if the font hinting is supported by the given evas. | 2808 | * Checks if the font hinting is supported by the given evas. |
@@ -2739,7 +2813,7 @@ EAPI Evas_Font_Hinting_Flags evas_font_hinting_get (const Evas *e) EINA_ | |||
2739 | * @return @c EINA_TRUE if it is supported, @c EINA_FALSE otherwise. | 2813 | * @return @c EINA_TRUE if it is supported, @c EINA_FALSE otherwise. |
2740 | * @ingroup Evas_Font_Group | 2814 | * @ingroup Evas_Font_Group |
2741 | */ | 2815 | */ |
2742 | EAPI Eina_Bool evas_font_hinting_can_hint (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2816 | EAPI Eina_Bool evas_font_hinting_can_hint (const Evas *e, Evas_Font_Hinting_Flags hinting) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2743 | 2817 | ||
2744 | 2818 | ||
2745 | /** | 2819 | /** |
@@ -2768,7 +2842,7 @@ EAPI void evas_font_cache_set (Evas *e, int size) E | |||
2768 | * | 2842 | * |
2769 | * @ingroup Evas_Font_Group | 2843 | * @ingroup Evas_Font_Group |
2770 | */ | 2844 | */ |
2771 | EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2845 | EAPI int evas_font_cache_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2772 | 2846 | ||
2773 | 2847 | ||
2774 | /** | 2848 | /** |
@@ -2785,7 +2859,7 @@ EAPI int evas_font_cache_get (const Evas *e) EINA_ | |||
2785 | * | 2859 | * |
2786 | * @ingroup Evas_Font_Group | 2860 | * @ingroup Evas_Font_Group |
2787 | */ | 2861 | */ |
2788 | EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2862 | EAPI Eina_List *evas_font_available_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2789 | 2863 | ||
2790 | /** | 2864 | /** |
2791 | * Free list of font descriptions returned by evas_font_dir_available_list(). | 2865 | * Free list of font descriptions returned by evas_font_dir_available_list(). |
@@ -2834,7 +2908,7 @@ EAPI void evas_font_path_prepend (Evas *e, const char *p | |||
2834 | * @return The list of font paths used. | 2908 | * @return The list of font paths used. |
2835 | * @ingroup Evas_Font_Path_Group | 2909 | * @ingroup Evas_Font_Path_Group |
2836 | */ | 2910 | */ |
2837 | EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 2911 | EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2838 | 2912 | ||
2839 | /** | 2913 | /** |
2840 | * @defgroup Evas_Object_Group Generic Object Functions | 2914 | * @defgroup Evas_Object_Group Generic Object Functions |
@@ -2958,7 +3032,7 @@ EAPI void evas_object_clip_set (Evas_Object *obj, Evas | |||
2958 | * | 3032 | * |
2959 | * See the full @ref Example_Evas_Object_Manipulation "example". | 3033 | * See the full @ref Example_Evas_Object_Manipulation "example". |
2960 | */ | 3034 | */ |
2961 | EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3035 | EAPI Evas_Object *evas_object_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
2962 | 3036 | ||
2963 | /** | 3037 | /** |
2964 | * Disable/cease clipping on a clipped @p obj object. | 3038 | * Disable/cease clipping on a clipped @p obj object. |
@@ -3015,7 +3089,7 @@ EAPI void evas_object_clip_unset (Evas_Object *obj); | |||
3015 | * } | 3089 | * } |
3016 | * @endcode | 3090 | * @endcode |
3017 | */ | 3091 | */ |
3018 | EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3092 | EAPI const Eina_List *evas_object_clipees_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3019 | 3093 | ||
3020 | 3094 | ||
3021 | /** | 3095 | /** |
@@ -3068,7 +3142,7 @@ EAPI void evas_object_focus_set (Evas_Object *obj, Eina | |||
3068 | * @see evas_object_key_grab | 3142 | * @see evas_object_key_grab |
3069 | * @see evas_object_key_ungrab | 3143 | * @see evas_object_key_ungrab |
3070 | */ | 3144 | */ |
3071 | EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3145 | EAPI Eina_Bool evas_object_focus_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3072 | 3146 | ||
3073 | 3147 | ||
3074 | /** | 3148 | /** |
@@ -3104,7 +3178,7 @@ EAPI void evas_object_layer_set (Evas_Object *obj, shor | |||
3104 | * | 3178 | * |
3105 | * @see evas_object_layer_set() | 3179 | * @see evas_object_layer_set() |
3106 | */ | 3180 | */ |
3107 | EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3181 | EAPI short evas_object_layer_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3108 | 3182 | ||
3109 | 3183 | ||
3110 | /** | 3184 | /** |
@@ -3139,7 +3213,7 @@ EAPI void evas_object_name_set (Evas_Object *obj, cons | |||
3139 | * | 3213 | * |
3140 | * See the full @ref Example_Evas_Events "example". | 3214 | * See the full @ref Example_Evas_Events "example". |
3141 | */ | 3215 | */ |
3142 | EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3216 | EAPI const char *evas_object_name_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3143 | 3217 | ||
3144 | 3218 | ||
3145 | /** | 3219 | /** |
@@ -3382,7 +3456,7 @@ EAPI void evas_object_hide (Evas_Object *obj) EINA | |||
3382 | * | 3456 | * |
3383 | * @ingroup Evas_Object_Group_Basic | 3457 | * @ingroup Evas_Object_Group_Basic |
3384 | */ | 3458 | */ |
3385 | EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3459 | EAPI Eina_Bool evas_object_visible_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3386 | 3460 | ||
3387 | 3461 | ||
3388 | /** | 3462 | /** |
@@ -3455,7 +3529,7 @@ EAPI void evas_object_color_get (const Evas_Object *obj | |||
3455 | * | 3529 | * |
3456 | * @ingroup Evas_Object_Group_Basic | 3530 | * @ingroup Evas_Object_Group_Basic |
3457 | */ | 3531 | */ |
3458 | EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3532 | EAPI Evas *evas_object_evas_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3459 | 3533 | ||
3460 | /** | 3534 | /** |
3461 | * Retrieves the type of the given Evas object. | 3535 | * Retrieves the type of the given Evas object. |
@@ -3485,7 +3559,7 @@ EAPI Evas *evas_object_evas_get (const Evas_Object *obj | |||
3485 | * | 3559 | * |
3486 | * See the full @ref Example_Evas_Object_Manipulation "example". | 3560 | * See the full @ref Example_Evas_Object_Manipulation "example". |
3487 | */ | 3561 | */ |
3488 | EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3562 | EAPI const char *evas_object_type_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3489 | 3563 | ||
3490 | /** | 3564 | /** |
3491 | * Raise @p obj to the top of its layer. | 3565 | * Raise @p obj to the top of its layer. |
@@ -3586,7 +3660,7 @@ EAPI void evas_object_stack_below (Evas_Object *obj, Evas | |||
3586 | * @see evas_object_below_get() | 3660 | * @see evas_object_below_get() |
3587 | * | 3661 | * |
3588 | */ | 3662 | */ |
3589 | EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3663 | EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3590 | 3664 | ||
3591 | /** | 3665 | /** |
3592 | * Get the Evas object stacked right below @p obj | 3666 | * Get the Evas object stacked right below @p obj |
@@ -3602,7 +3676,7 @@ EAPI Evas_Object *evas_object_above_get (const Evas_Object *obj | |||
3602 | * @see evas_object_layer_set() | 3676 | * @see evas_object_layer_set() |
3603 | * @see evas_object_below_get() | 3677 | * @see evas_object_below_get() |
3604 | */ | 3678 | */ |
3605 | EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 3679 | EAPI Evas_Object *evas_object_below_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3606 | 3680 | ||
3607 | /** | 3681 | /** |
3608 | * @} | 3682 | * @} |
@@ -3946,7 +4020,7 @@ EAPI void evas_object_pass_events_set (Evas_Object *obj, Ein | |||
3946 | * @see evas_object_propagate_events_get() | 4020 | * @see evas_object_propagate_events_get() |
3947 | * @see evas_object_freeze_events_get() | 4021 | * @see evas_object_freeze_events_get() |
3948 | */ | 4022 | */ |
3949 | EAPI Eina_Bool evas_object_pass_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4023 | EAPI Eina_Bool evas_object_pass_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3950 | 4024 | ||
3951 | /** | 4025 | /** |
3952 | * Set whether an Evas object is to repeat events. | 4026 | * Set whether an Evas object is to repeat events. |
@@ -3988,7 +4062,7 @@ EAPI void evas_object_repeat_events_set (Evas_Object *obj, Ein | |||
3988 | * @see evas_object_propagate_events_get() | 4062 | * @see evas_object_propagate_events_get() |
3989 | * @see evas_object_freeze_events_get() | 4063 | * @see evas_object_freeze_events_get() |
3990 | */ | 4064 | */ |
3991 | EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4065 | EAPI Eina_Bool evas_object_repeat_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
3992 | 4066 | ||
3993 | /** | 4067 | /** |
3994 | * Set whether events on a smart object's member should get propagated | 4068 | * Set whether events on a smart object's member should get propagated |
@@ -4026,7 +4100,7 @@ EAPI void evas_object_propagate_events_set (Evas_Object *obj, Ein | |||
4026 | * @see evas_object_pass_events_get() | 4100 | * @see evas_object_pass_events_get() |
4027 | * @see evas_object_freeze_events_get() | 4101 | * @see evas_object_freeze_events_get() |
4028 | */ | 4102 | */ |
4029 | EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4103 | EAPI Eina_Bool evas_object_propagate_events_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
4030 | 4104 | ||
4031 | /** | 4105 | /** |
4032 | * Set whether an Evas object is to freeze (discard) events. | 4106 | * Set whether an Evas object is to freeze (discard) events. |
@@ -4064,7 +4138,7 @@ EAPI void evas_object_freeze_events_set(Evas_Object *obj, Eina_Bool | |||
4064 | * @see evas_object_propagate_events_get() | 4138 | * @see evas_object_propagate_events_get() |
4065 | * @since 1.1.0 | 4139 | * @since 1.1.0 |
4066 | */ | 4140 | */ |
4067 | EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 4141 | EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
4068 | 4142 | ||
4069 | /** | 4143 | /** |
4070 | * @} | 4144 | * @} |
@@ -5028,7 +5102,7 @@ EAPI void evas_object_size_hint_min_get (const Evas_Object *obj | |||
5028 | * @skip evas_object_size_hint_min_set | 5102 | * @skip evas_object_size_hint_min_set |
5029 | * @until return | 5103 | * @until return |
5030 | * | 5104 | * |
5031 | * In this example the minimum size hints change de behavior of an | 5105 | * In this example the minimum size hints change the behavior of an |
5032 | * Evas box when layouting its children. See the full @ref | 5106 | * Evas box when layouting its children. See the full @ref |
5033 | * Example_Evas_Size_Hints "example". | 5107 | * Example_Evas_Size_Hints "example". |
5034 | * | 5108 | * |
@@ -5072,7 +5146,7 @@ EAPI void evas_object_size_hint_max_get (const Evas_Object *obj | |||
5072 | * @skip evas_object_size_hint_max_set | 5146 | * @skip evas_object_size_hint_max_set |
5073 | * @until return | 5147 | * @until return |
5074 | * | 5148 | * |
5075 | * In this example the maximum size hints change de behavior of an | 5149 | * In this example the maximum size hints change the behavior of an |
5076 | * Evas box when layouting its children. See the full @ref | 5150 | * Evas box when layouting its children. See the full @ref |
5077 | * Example_Evas_Size_Hints "example". | 5151 | * Example_Evas_Size_Hints "example". |
5078 | * | 5152 | * |
@@ -5247,7 +5321,7 @@ EAPI void evas_object_size_hint_align_get (const Evas_Object *obj | |||
5247 | * @skip evas_object_size_hint_align_set | 5321 | * @skip evas_object_size_hint_align_set |
5248 | * @until return | 5322 | * @until return |
5249 | * | 5323 | * |
5250 | * In this example the alignment hints change de behavior of an Evas | 5324 | * In this example the alignment hints change the behavior of an Evas |
5251 | * box when layouting its children. See the full @ref | 5325 | * box when layouting its children. See the full @ref |
5252 | * Example_Evas_Size_Hints "example". | 5326 | * Example_Evas_Size_Hints "example". |
5253 | * | 5327 | * |
@@ -5306,7 +5380,7 @@ EAPI void evas_object_size_hint_weight_get (const Evas_Object *obj | |||
5306 | * @skip evas_object_size_hint_weight_set | 5380 | * @skip evas_object_size_hint_weight_set |
5307 | * @until return | 5381 | * @until return |
5308 | * | 5382 | * |
5309 | * In this example the weight hints change de behavior of an Evas box | 5383 | * In this example the weight hints change the behavior of an Evas box |
5310 | * when layouting its children. See the full @ref | 5384 | * when layouting its children. See the full @ref |
5311 | * Example_Evas_Size_Hints "example". | 5385 | * Example_Evas_Size_Hints "example". |
5312 | * | 5386 | * |
@@ -5342,7 +5416,7 @@ EAPI void evas_object_size_hint_weight_set (Evas_Object *obj, doub | |||
5342 | * @skip evas_object_size_hint_padding_set | 5416 | * @skip evas_object_size_hint_padding_set |
5343 | * @until return | 5417 | * @until return |
5344 | * | 5418 | * |
5345 | * In this example the padding hints change de behavior of an Evas box | 5419 | * In this example the padding hints change the behavior of an Evas box |
5346 | * when layouting its children. See the full @ref | 5420 | * when layouting its children. See the full @ref |
5347 | * Example_Evas_Size_Hints "example". | 5421 | * Example_Evas_Size_Hints "example". |
5348 | * | 5422 | * |
@@ -5456,7 +5530,7 @@ EAPI void evas_object_data_set (Evas_Object *ob | |||
5456 | * else printf("No data was stored on the object\n"); | 5530 | * else printf("No data was stored on the object\n"); |
5457 | * @endcode | 5531 | * @endcode |
5458 | */ | 5532 | */ |
5459 | EAPI void *evas_object_data_get (const Evas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 5533 | EAPI void *evas_object_data_get (const Evas_Object *obj, const char *key) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
5460 | 5534 | ||
5461 | /** | 5535 | /** |
5462 | * Delete an attached data pointer from an object. | 5536 | * Delete an attached data pointer from an object. |
@@ -5510,7 +5584,7 @@ EAPI void evas_object_pointer_mode_set (Evas_Object *ob | |||
5510 | * @return pointer behavior. | 5584 | * @return pointer behavior. |
5511 | * @ingroup Evas_Object_Group_Extras | 5585 | * @ingroup Evas_Object_Group_Extras |
5512 | */ | 5586 | */ |
5513 | EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5587 | EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5514 | 5588 | ||
5515 | 5589 | ||
5516 | /** | 5590 | /** |
@@ -5528,7 +5602,7 @@ EAPI void evas_object_anti_alias_set (Evas_Object *ob | |||
5528 | * @return @c 1 if the object is to be anti_aliased. @c 0 otherwise. | 5602 | * @return @c 1 if the object is to be anti_aliased. @c 0 otherwise. |
5529 | * @ingroup Evas_Object_Group_Extras | 5603 | * @ingroup Evas_Object_Group_Extras |
5530 | */ | 5604 | */ |
5531 | EAPI Eina_Bool evas_object_anti_alias_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5605 | EAPI Eina_Bool evas_object_anti_alias_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5532 | 5606 | ||
5533 | 5607 | ||
5534 | /** | 5608 | /** |
@@ -5562,7 +5636,7 @@ EAPI void evas_object_scale_set (Evas_Object *ob | |||
5562 | * | 5636 | * |
5563 | * @see evas_object_scale_set() | 5637 | * @see evas_object_scale_set() |
5564 | */ | 5638 | */ |
5565 | EAPI double evas_object_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5639 | EAPI double evas_object_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5566 | 5640 | ||
5567 | 5641 | ||
5568 | /** | 5642 | /** |
@@ -5579,7 +5653,7 @@ EAPI void evas_object_render_op_set (Evas_Object *ob | |||
5579 | * @return one of the enumerated values in Evas_Render_Op. | 5653 | * @return one of the enumerated values in Evas_Render_Op. |
5580 | * @ingroup Evas_Object_Group_Extras | 5654 | * @ingroup Evas_Object_Group_Extras |
5581 | */ | 5655 | */ |
5582 | EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5656 | EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5583 | 5657 | ||
5584 | /** | 5658 | /** |
5585 | * Set whether to use precise (usually expensive) point collision | 5659 | * Set whether to use precise (usually expensive) point collision |
@@ -5621,7 +5695,7 @@ EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Obje | |||
5621 | * | 5695 | * |
5622 | * @ingroup Evas_Object_Group_Extras | 5696 | * @ingroup Evas_Object_Group_Extras |
5623 | */ | 5697 | */ |
5624 | EAPI Eina_Bool evas_object_precise_is_inside_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5698 | EAPI Eina_Bool evas_object_precise_is_inside_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5625 | 5699 | ||
5626 | /** | 5700 | /** |
5627 | * Set a hint flag on the given Evas object that it's used as a "static | 5701 | * Set a hint flag on the given Evas object that it's used as a "static |
@@ -5653,7 +5727,7 @@ EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Obje | |||
5653 | * | 5727 | * |
5654 | * @ingroup Evas_Object_Group_Extras | 5728 | * @ingroup Evas_Object_Group_Extras |
5655 | */ | 5729 | */ |
5656 | EAPI Eina_Bool evas_object_static_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5730 | EAPI Eina_Bool evas_object_static_clip_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5657 | 5731 | ||
5658 | /** | 5732 | /** |
5659 | * @} | 5733 | * @} |
@@ -5710,7 +5784,7 @@ EAPI Evas_Render_Op evas_object_render_op_get (const Evas_Obje | |||
5710 | * | 5784 | * |
5711 | * @ingroup Evas_Object_Group_Find | 5785 | * @ingroup Evas_Object_Group_Find |
5712 | */ | 5786 | */ |
5713 | EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5787 | EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5714 | 5788 | ||
5715 | /** | 5789 | /** |
5716 | * Retrieves the object on the given evas with the given name. | 5790 | * Retrieves the object on the given evas with the given name. |
@@ -5718,9 +5792,36 @@ EAPI Evas_Object *evas_focus_get (const Evas *e) EINA_WA | |||
5718 | * @param name The given name. | 5792 | * @param name The given name. |
5719 | * @return If successful, the Evas object with the given name. Otherwise, | 5793 | * @return If successful, the Evas object with the given name. Otherwise, |
5720 | * @c NULL. | 5794 | * @c NULL. |
5795 | * | ||
5796 | * This looks for the evas object given a name by evas_object_name_set(). If | ||
5797 | * the name is not unique canvas-wide, then which one of the many objects | ||
5798 | * with that name is returned is undefined, so only use this if you can ensure | ||
5799 | * the object name is unique. | ||
5800 | * | ||
5801 | * @ingroup Evas_Object_Group_Find | ||
5802 | */ | ||
5803 | EAPI Evas_Object *evas_object_name_find (const Evas *e, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||
5804 | |||
5805 | /** | ||
5806 | * Retrieves the object from children of the given object with the given name. | ||
5807 | * @param obj The parent (smart) object whose children to search. | ||
5808 | * @param name The given name. | ||
5809 | * @param recurse Set to the number of child levels to recurse (0 == don't recurse, 1 == only look at the children of @p obj or their immediate children, but no further etc.). | ||
5810 | * @return If successful, the Evas object with the given name. Otherwise, | ||
5811 | * @c NULL. | ||
5812 | * | ||
5813 | * This looks for the evas object given a name by evas_object_name_set(), but | ||
5814 | * it ONLY looks at the children of the object *p obj, and will only recurse | ||
5815 | * into those children if @p recurse is greater than 0. If the name is not | ||
5816 | * unique within immediate children (or the whole child tree) then it is not | ||
5817 | * defined which child object will be returned. If @p recurse is set to -1 then | ||
5818 | * it will recurse without limit. | ||
5819 | * | ||
5820 | * @since 1.2 | ||
5821 | * | ||
5721 | * @ingroup Evas_Object_Group_Find | 5822 | * @ingroup Evas_Object_Group_Find |
5722 | */ | 5823 | */ |
5723 | EAPI Evas_Object *evas_object_name_find (const Evas *e, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5824 | EAPI Evas_Object *evas_object_name_child_find (const Evas_Object *obj, const char *name, int recurse) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5724 | 5825 | ||
5725 | /** | 5826 | /** |
5726 | * Retrieve the Evas object stacked at the top of a given position in | 5827 | * Retrieve the Evas object stacked at the top of a given position in |
@@ -5745,7 +5846,7 @@ EAPI Evas_Object *evas_object_name_find (const Evas *e, const c | |||
5745 | * objects, acting only on the ones at the "top level", with regard to | 5846 | * objects, acting only on the ones at the "top level", with regard to |
5746 | * object parenting. | 5847 | * object parenting. |
5747 | */ | 5848 | */ |
5748 | EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5849 | EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5749 | 5850 | ||
5750 | /** | 5851 | /** |
5751 | * Retrieve the Evas object stacked at the top at the position of the | 5852 | * Retrieve the Evas object stacked at the top at the position of the |
@@ -5763,7 +5864,7 @@ EAPI Evas_Object *evas_object_top_at_xy_get (const Evas *e, Evas_Co | |||
5763 | * objects, acting only on the ones at the "top level", with regard to | 5864 | * objects, acting only on the ones at the "top level", with regard to |
5764 | * object parenting. | 5865 | * object parenting. |
5765 | */ | 5866 | */ |
5766 | EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5867 | EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5767 | 5868 | ||
5768 | /** | 5869 | /** |
5769 | * Retrieve the Evas object stacked at the top of a given rectangular | 5870 | * Retrieve the Evas object stacked at the top of a given rectangular |
@@ -5793,7 +5894,7 @@ EAPI Evas_Object *evas_object_top_at_pointer_get (const Evas *e) EINA_WA | |||
5793 | * objects, acting only on the ones at the "top level", with regard to | 5894 | * objects, acting only on the ones at the "top level", with regard to |
5794 | * object parenting. | 5895 | * object parenting. |
5795 | */ | 5896 | */ |
5796 | EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5897 | EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5797 | 5898 | ||
5798 | /** | 5899 | /** |
5799 | * Retrieve a list of Evas objects lying over a given position in | 5900 | * Retrieve a list of Evas objects lying over a given position in |
@@ -5818,8 +5919,8 @@ EAPI Evas_Object *evas_object_top_in_rectangle_get (const Evas *e, Evas_Co | |||
5818 | * objects, acting only on the ones at the "top level", with regard to | 5919 | * objects, acting only on the ones at the "top level", with regard to |
5819 | * object parenting. | 5920 | * object parenting. |
5820 | */ | 5921 | */ |
5821 | EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5922 | EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5822 | EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5923 | EAPI Eina_List *evas_objects_in_rectangle_get (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5823 | 5924 | ||
5824 | /** | 5925 | /** |
5825 | * Get the lowest (stacked) Evas object on the canvas @p | 5926 | * Get the lowest (stacked) Evas object on the canvas @p |
@@ -5840,7 +5941,7 @@ EAPI Eina_List *evas_objects_at_xy_get (const Evas *e, Evas_Co | |||
5840 | * objects, acting only on the ones at the "top level", with regard to | 5941 | * objects, acting only on the ones at the "top level", with regard to |
5841 | * object parenting. | 5942 | * object parenting. |
5842 | */ | 5943 | */ |
5843 | EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5944 | EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5844 | 5945 | ||
5845 | /** | 5946 | /** |
5846 | * Get the highest (stacked) Evas object on the canvas @p | 5947 | * Get the highest (stacked) Evas object on the canvas @p |
@@ -5862,7 +5963,7 @@ EAPI Evas_Object *evas_object_bottom_get (const Evas *e) EINA_WA | |||
5862 | * objects, acting only on the ones at the "top level", with regard to | 5963 | * objects, acting only on the ones at the "top level", with regard to |
5863 | * object parenting. | 5964 | * object parenting. |
5864 | */ | 5965 | */ |
5865 | EAPI Evas_Object *evas_object_top_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 5966 | EAPI Evas_Object *evas_object_top_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
5866 | 5967 | ||
5867 | /** | 5968 | /** |
5868 | * @} | 5969 | * @} |
@@ -6502,7 +6603,7 @@ EAPI void evas_object_image_border_center_fill_set (Evas_Obj | |||
6502 | * | 6603 | * |
6503 | * See @ref evas_object_image_fill_set() for more details. | 6604 | * See @ref evas_object_image_fill_set() for more details. |
6504 | */ | 6605 | */ |
6505 | EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6606 | EAPI Evas_Border_Fill_Mode evas_object_image_border_center_fill_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6506 | 6607 | ||
6507 | /** | 6608 | /** |
6508 | * Set whether the image object's fill property should track the | 6609 | * Set whether the image object's fill property should track the |
@@ -6532,7 +6633,7 @@ EAPI void evas_object_image_filled_set (Evas_Obj | |||
6532 | * | 6633 | * |
6533 | * @see evas_object_image_filled_set() for more information | 6634 | * @see evas_object_image_filled_set() for more information |
6534 | */ | 6635 | */ |
6535 | EAPI Eina_Bool evas_object_image_filled_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6636 | EAPI Eina_Bool evas_object_image_filled_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6536 | 6637 | ||
6537 | /** | 6638 | /** |
6538 | * Sets the scaling factor (multiplier) for the borders of an image | 6639 | * Sets the scaling factor (multiplier) for the borders of an image |
@@ -6633,7 +6734,7 @@ EAPI void evas_object_image_fill_spread_set (Evas_Obj | |||
6633 | * @param obj The given evas image object. | 6734 | * @param obj The given evas image object. |
6634 | * @return The current spread mode of the image object. | 6735 | * @return The current spread mode of the image object. |
6635 | */ | 6736 | */ |
6636 | EAPI Evas_Fill_Spread evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6737 | EAPI Evas_Fill_Spread evas_object_image_fill_spread_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6637 | 6738 | ||
6638 | /** | 6739 | /** |
6639 | * Sets the size of the given image object. | 6740 | * Sets the size of the given image object. |
@@ -6670,7 +6771,7 @@ EAPI void evas_object_image_size_get (const Ev | |||
6670 | * The row stride is the number of bytes between the start of a row | 6771 | * The row stride is the number of bytes between the start of a row |
6671 | * and the start of the next row for image data. | 6772 | * and the start of the next row for image data. |
6672 | */ | 6773 | */ |
6673 | EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6774 | EAPI int evas_object_image_stride_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6674 | 6775 | ||
6675 | /** | 6776 | /** |
6676 | * Retrieves a number representing any error that occurred during the | 6777 | * Retrieves a number representing any error that occurred during the |
@@ -6681,7 +6782,7 @@ EAPI int evas_object_image_stride_get (const Ev | |||
6681 | * one of the #Evas_Load_Error values. #EVAS_LOAD_ERROR_NONE | 6782 | * one of the #Evas_Load_Error values. #EVAS_LOAD_ERROR_NONE |
6682 | * is returned if there was no error. | 6783 | * is returned if there was no error. |
6683 | */ | 6784 | */ |
6684 | EAPI Evas_Load_Error evas_object_image_load_error_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6785 | EAPI Evas_Load_Error evas_object_image_load_error_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6685 | 6786 | ||
6686 | /** | 6787 | /** |
6687 | * Sets the raw image data of the given image object. | 6788 | * Sets the raw image data of the given image object. |
@@ -6730,7 +6831,7 @@ EAPI void evas_object_image_data_set (Evas_Obj | |||
6730 | * | 6831 | * |
6731 | * @see evas_object_image_data_set() | 6832 | * @see evas_object_image_data_set() |
6732 | */ | 6833 | */ |
6733 | EAPI void *evas_object_image_data_get (const Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6834 | EAPI void *evas_object_image_data_get (const Evas_Object *obj, Eina_Bool for_writing) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6734 | 6835 | ||
6735 | /** | 6836 | /** |
6736 | * Converts the raw image data of the given image object to the | 6837 | * Converts the raw image data of the given image object to the |
@@ -6748,7 +6849,7 @@ EAPI void *evas_object_image_data_get (const Ev | |||
6748 | * @param to_cspace The colorspace to which the image raw data will be converted. | 6849 | * @param to_cspace The colorspace to which the image raw data will be converted. |
6749 | * @return data A newly allocated data in the format specified by to_cspace. | 6850 | * @return data A newly allocated data in the format specified by to_cspace. |
6750 | */ | 6851 | */ |
6751 | EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6852 | EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6752 | 6853 | ||
6753 | /** | 6854 | /** |
6754 | * Replaces the raw image data of the given image object. | 6855 | * Replaces the raw image data of the given image object. |
@@ -6819,7 +6920,7 @@ EAPI void evas_object_image_alpha_set (Evas_Obj | |||
6819 | * | 6920 | * |
6820 | * See @ref evas_object_image_alpha_set() for more details. | 6921 | * See @ref evas_object_image_alpha_set() for more details. |
6821 | */ | 6922 | */ |
6822 | EAPI Eina_Bool evas_object_image_alpha_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6923 | EAPI Eina_Bool evas_object_image_alpha_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6823 | 6924 | ||
6824 | /** | 6925 | /** |
6825 | * Sets whether to use high-quality image scaling algorithm on the | 6926 | * Sets whether to use high-quality image scaling algorithm on the |
@@ -6849,7 +6950,7 @@ EAPI void evas_object_image_smooth_scale_set (Evas_Obj | |||
6849 | * | 6950 | * |
6850 | * See @ref evas_object_image_smooth_scale_set() for more details. | 6951 | * See @ref evas_object_image_smooth_scale_set() for more details. |
6851 | */ | 6952 | */ |
6852 | EAPI Eina_Bool evas_object_image_smooth_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 6953 | EAPI Eina_Bool evas_object_image_smooth_scale_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6853 | 6954 | ||
6854 | /** | 6955 | /** |
6855 | * Preload an image object's image data in the background | 6956 | * Preload an image object's image data in the background |
@@ -6947,7 +7048,7 @@ EAPI void evas_object_image_pixels_dirty_set (Evas_Obj | |||
6947 | * @param obj The given image object. | 7048 | * @param obj The given image object. |
6948 | * @return Whether the image is dirty. | 7049 | * @return Whether the image is dirty. |
6949 | */ | 7050 | */ |
6950 | EAPI Eina_Bool evas_object_image_pixels_dirty_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7051 | EAPI Eina_Bool evas_object_image_pixels_dirty_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6951 | 7052 | ||
6952 | /** | 7053 | /** |
6953 | * Set the DPI resolution of an image object's source image. | 7054 | * Set the DPI resolution of an image object's source image. |
@@ -6972,7 +7073,7 @@ EAPI void evas_object_image_load_dpi_set (Evas_Obj | |||
6972 | * | 7073 | * |
6973 | * @see evas_object_image_load_dpi_set() for more details | 7074 | * @see evas_object_image_load_dpi_set() for more details |
6974 | */ | 7075 | */ |
6975 | EAPI double evas_object_image_load_dpi_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7076 | EAPI double evas_object_image_load_dpi_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
6976 | 7077 | ||
6977 | /** | 7078 | /** |
6978 | * Set the size of a given image object's source image, when loading | 7079 | * Set the size of a given image object's source image, when loading |
@@ -7026,7 +7127,7 @@ EAPI void evas_object_image_load_scale_down_set (Evas_Obj | |||
7026 | * | 7127 | * |
7027 | * @see evas_object_image_load_scale_down_set() for more details | 7128 | * @see evas_object_image_load_scale_down_set() for more details |
7028 | */ | 7129 | */ |
7029 | EAPI int evas_object_image_load_scale_down_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7130 | EAPI int evas_object_image_load_scale_down_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7030 | 7131 | ||
7031 | /** | 7132 | /** |
7032 | * Inform a given image object to load a selective region of its | 7133 | * Inform a given image object to load a selective region of its |
@@ -7103,7 +7204,18 @@ EAPI void evas_object_image_colorspace_set (Evas_Obj | |||
7103 | * This function returns the colorspace of given canvas image. | 7204 | * This function returns the colorspace of given canvas image. |
7104 | * | 7205 | * |
7105 | */ | 7206 | */ |
7106 | EAPI Evas_Colorspace evas_object_image_colorspace_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7207 | EAPI Evas_Colorspace evas_object_image_colorspace_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7208 | |||
7209 | /** | ||
7210 | * Get the support state of a given image | ||
7211 | * | ||
7212 | * @param obj The given image object pointer | ||
7213 | * @return The region support state | ||
7214 | * @since 1.2.0 | ||
7215 | * | ||
7216 | * This function returns the state of the region support of given image | ||
7217 | */ | ||
7218 | EAPI Eina_Bool evas_object_image_region_support_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | ||
7107 | 7219 | ||
7108 | /** | 7220 | /** |
7109 | * Set the native surface of a given image of the canvas | 7221 | * Set the native surface of a given image of the canvas |
@@ -7125,7 +7237,7 @@ EAPI void evas_object_image_native_surface_set (Evas_Obj | |||
7125 | * This function returns the native surface of a given canvas image. | 7237 | * This function returns the native surface of a given canvas image. |
7126 | * | 7238 | * |
7127 | */ | 7239 | */ |
7128 | EAPI Evas_Native_Surface *evas_object_image_native_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7240 | EAPI Evas_Native_Surface *evas_object_image_native_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7129 | 7241 | ||
7130 | /** | 7242 | /** |
7131 | * Set the video surface linked to a given image of the canvas | 7243 | * Set the video surface linked to a given image of the canvas |
@@ -7149,7 +7261,7 @@ EAPI void evas_object_image_video_surface_set (Evas_Obj | |||
7149 | * This function returns the video surface linked to a given canvas image. | 7261 | * This function returns the video surface linked to a given canvas image. |
7150 | * | 7262 | * |
7151 | */ | 7263 | */ |
7152 | EAPI const Evas_Video_Surface *evas_object_image_video_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7264 | EAPI const Evas_Video_Surface *evas_object_image_video_surface_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7153 | 7265 | ||
7154 | /** | 7266 | /** |
7155 | * Set the scale hint of a given image of the canvas. | 7267 | * Set the scale hint of a given image of the canvas. |
@@ -7178,7 +7290,7 @@ EAPI void evas_object_image_scale_hint_set (Evas_Obj | |||
7178 | * | 7290 | * |
7179 | * @see evas_object_image_scale_hint_set() for more details. | 7291 | * @see evas_object_image_scale_hint_set() for more details. |
7180 | */ | 7292 | */ |
7181 | EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7293 | EAPI Evas_Image_Scale_Hint evas_object_image_scale_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7182 | 7294 | ||
7183 | /** | 7295 | /** |
7184 | * Set the content hint setting of a given image object of the canvas. | 7296 | * Set the content hint setting of a given image object of the canvas. |
@@ -7210,7 +7322,7 @@ EAPI void evas_object_image_content_hint_set (Evas_Obj | |||
7210 | * | 7322 | * |
7211 | * @see evas_object_image_content_hint_set() | 7323 | * @see evas_object_image_content_hint_set() |
7212 | */ | 7324 | */ |
7213 | EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7325 | EAPI Evas_Image_Content_Hint evas_object_image_content_hint_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7214 | 7326 | ||
7215 | 7327 | ||
7216 | /** | 7328 | /** |
@@ -7563,7 +7675,7 @@ EAPI void evas_object_text_font_source_set (Evas_Object *obj, cons | |||
7563 | * | 7675 | * |
7564 | * @see evas_object_text_font_get() for more details | 7676 | * @see evas_object_text_font_get() for more details |
7565 | */ | 7677 | */ |
7566 | EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7678 | EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7567 | 7679 | ||
7568 | /** | 7680 | /** |
7569 | * Set the font family and size on a given text object. | 7681 | * Set the font family and size on a given text object. |
@@ -7620,7 +7732,7 @@ EAPI void evas_object_text_text_set (Evas_Object *obj, cons | |||
7620 | * | 7732 | * |
7621 | * @see evas_object_text_text_set() | 7733 | * @see evas_object_text_text_set() |
7622 | */ | 7734 | */ |
7623 | EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7735 | EAPI const char *evas_object_text_text_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7624 | 7736 | ||
7625 | /** | 7737 | /** |
7626 | * @brief Sets the BiDi delimiters used in the textblock. | 7738 | * @brief Sets the BiDi delimiters used in the textblock. |
@@ -7648,13 +7760,13 @@ EAPI void evas_object_text_bidi_delimiters_set(Evas_Object *obj, co | |||
7648 | */ | 7760 | */ |
7649 | EAPI const char *evas_object_text_bidi_delimiters_get(const Evas_Object *obj); | 7761 | EAPI const char *evas_object_text_bidi_delimiters_get(const Evas_Object *obj); |
7650 | 7762 | ||
7651 | EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7763 | EAPI Evas_Coord evas_object_text_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7652 | EAPI Evas_Coord evas_object_text_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7764 | EAPI Evas_Coord evas_object_text_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7653 | EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7765 | EAPI Evas_Coord evas_object_text_max_ascent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7654 | EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7766 | EAPI Evas_Coord evas_object_text_max_descent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7655 | EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7767 | EAPI Evas_Coord evas_object_text_horiz_advance_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7656 | EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7768 | EAPI Evas_Coord evas_object_text_vert_advance_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7657 | EAPI Evas_Coord evas_object_text_inset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7769 | EAPI Evas_Coord evas_object_text_inset_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7658 | 7770 | ||
7659 | /** | 7771 | /** |
7660 | * Retrieve position and dimension information of a character within a text @c Evas_Object. | 7772 | * Retrieve position and dimension information of a character within a text @c Evas_Object. |
@@ -7692,7 +7804,7 @@ EAPI int evas_object_text_last_up_to_pos (const Evas_Object *obj | |||
7692 | * | 7804 | * |
7693 | * @see evas_object_text_style_set() for more details. | 7805 | * @see evas_object_text_style_set() for more details. |
7694 | */ | 7806 | */ |
7695 | EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 7807 | EAPI Evas_Text_Style_Type evas_object_text_style_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
7696 | 7808 | ||
7697 | /** | 7809 | /** |
7698 | * Sets the style to apply on the given text object. | 7810 | * Sets the style to apply on the given text object. |
@@ -7742,7 +7854,7 @@ EAPI void evas_object_text_style_set (Evas_Object *obj, Evas | |||
7742 | * - #EVAS_TEXT_STYLE_SOFT_SHADOW | 7854 | * - #EVAS_TEXT_STYLE_SOFT_SHADOW |
7743 | * - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW | 7855 | * - #EVAS_TEXT_STYLE_FAR_SOFT_SHADOW |
7744 | * | 7856 | * |
7745 | * One can also change de direction the shadow grows to, with | 7857 | * One can also change the direction where the shadow grows to, with |
7746 | * evas_object_text_style_set(). | 7858 | * evas_object_text_style_set(). |
7747 | * | 7859 | * |
7748 | * @see evas_object_text_shadow_color_get() | 7860 | * @see evas_object_text_shadow_color_get() |
@@ -8081,7 +8193,7 @@ EAPI Evas_Object *evas_object_textblock_add(Evas *e) EINA_WARN_U | |||
8081 | * @param escape the string to be escaped | 8193 | * @param escape the string to be escaped |
8082 | * @return the unescaped version of escape | 8194 | * @return the unescaped version of escape |
8083 | */ | 8195 | */ |
8084 | EAPI const char *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8196 | EAPI const char *evas_textblock_escape_string_get(const char *escape) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8085 | 8197 | ||
8086 | /** | 8198 | /** |
8087 | * Returns the escaped version of the string. | 8199 | * Returns the escaped version of the string. |
@@ -8089,7 +8201,7 @@ EAPI const char *evas_textblock_escape_string_get(const char *e | |||
8089 | * @param len_ret the len of the part of the string that was used. | 8201 | * @param len_ret the len of the part of the string that was used. |
8090 | * @return the escaped string. | 8202 | * @return the escaped string. |
8091 | */ | 8203 | */ |
8092 | EAPI const char *evas_textblock_string_escape_get(const char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8204 | EAPI const char *evas_textblock_string_escape_get(const char *string, int *len_ret) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8093 | 8205 | ||
8094 | /** | 8206 | /** |
8095 | * Return the unescaped version of the string between start and end. | 8207 | * Return the unescaped version of the string between start and end. |
@@ -8098,8 +8210,35 @@ EAPI const char *evas_textblock_string_escape_get(const char *s | |||
8098 | * @param escape_end the end of the string. | 8210 | * @param escape_end the end of the string. |
8099 | * @return the unescaped version of the range | 8211 | * @return the unescaped version of the range |
8100 | */ | 8212 | */ |
8101 | EAPI const char *evas_textblock_escape_string_range_get(const char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8213 | EAPI const char *evas_textblock_escape_string_range_get(const char *escape_start, const char *escape_end) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8102 | 8214 | ||
8215 | /** | ||
8216 | * Return the plain version of the markup. | ||
8217 | * | ||
8218 | * Works as if you set the markup to a textblock and then retrieve the plain | ||
8219 | * version of the text. i.e: <br> and <\n> will be replaced with \n, &...; with | ||
8220 | * the actual char and etc. | ||
8221 | * | ||
8222 | * @param obj the textblock object to work with. (if NULL, tries the default) | ||
8223 | * @param text the markup text (if NULL, return NULL) | ||
8224 | * @return an allocated plain text version of the markup | ||
8225 | * @since 1.2.0 | ||
8226 | */ | ||
8227 | EAPI char *evas_textblock_text_markup_to_utf8(const Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC; | ||
8228 | |||
8229 | /** | ||
8230 | * Return the markup version of the plain text. | ||
8231 | * | ||
8232 | * Replaces \n -> <br/> \t -> <tab/> and etc. Generally needed before you pass | ||
8233 | * plain text to be set in a textblock. | ||
8234 | * | ||
8235 | * @param obj the textblock object to work with (if NULL, it just does the | ||
8236 | * default behaviour, i.e with no extra object information). | ||
8237 | * @param text the markup text (if NULL, return NULL) | ||
8238 | * @return an allocated plain text version of the markup | ||
8239 | * @since 1.2.0 | ||
8240 | */ | ||
8241 | EAPI char *evas_textblock_text_utf8_to_markup(const Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC; | ||
8103 | 8242 | ||
8104 | /** | 8243 | /** |
8105 | * Creates a new textblock style. | 8244 | * Creates a new textblock style. |
@@ -8128,7 +8267,7 @@ EAPI void evas_textblock_style_set(Evas_Textblock_Style | |||
8128 | * @param ts the style to get it's text. | 8267 | * @param ts the style to get it's text. |
8129 | * @return the text of the style or null on error. | 8268 | * @return the text of the style or null on error. |
8130 | */ | 8269 | */ |
8131 | EAPI const char *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8270 | EAPI const char *evas_textblock_style_get(const Evas_Textblock_Style *ts) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8132 | 8271 | ||
8133 | 8272 | ||
8134 | /** | 8273 | /** |
@@ -8144,7 +8283,7 @@ EAPI void evas_object_textblock_style_set(Evas_Object *o | |||
8144 | * @param obj the object to get the style from. | 8283 | * @param obj the object to get the style from. |
8145 | * @return the style of the object. | 8284 | * @return the style of the object. |
8146 | */ | 8285 | */ |
8147 | EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8286 | EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8148 | 8287 | ||
8149 | /** | 8288 | /** |
8150 | * @brief Set the "replacement character" to use for the given textblock object. | 8289 | * @brief Set the "replacement character" to use for the given textblock object. |
@@ -8161,7 +8300,7 @@ EAPI void evas_object_textblock_replace_char_set(Evas_Ob | |||
8161 | * @param obj The given textblock object | 8300 | * @param obj The given textblock object |
8162 | * @return replacement character or @c NULL | 8301 | * @return replacement character or @c NULL |
8163 | */ | 8302 | */ |
8164 | EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8303 | EAPI const char *evas_object_textblock_replace_char_get(Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8165 | 8304 | ||
8166 | /** | 8305 | /** |
8167 | * @brief Sets the vertical alignment of text within the textblock object | 8306 | * @brief Sets the vertical alignment of text within the textblock object |
@@ -8230,7 +8369,7 @@ EAPI void evas_object_textblock_legacy_newline_set(Evas_ | |||
8230 | * @return EINA_TRUE if in legacy mode, EINA_FALSE otherwise. | 8369 | * @return EINA_TRUE if in legacy mode, EINA_FALSE otherwise. |
8231 | * @since 1.1.0 | 8370 | * @since 1.1.0 |
8232 | */ | 8371 | */ |
8233 | EAPI Eina_Bool evas_object_textblock_legacy_newline_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8372 | EAPI Eina_Bool evas_object_textblock_legacy_newline_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8234 | 8373 | ||
8235 | 8374 | ||
8236 | /** | 8375 | /** |
@@ -8270,7 +8409,7 @@ EAPI const char *evas_object_textblock_text_markup_get(const Ev | |||
8270 | * @param obj the object. | 8409 | * @param obj the object. |
8271 | * @return the obj's main cursor. | 8410 | * @return the obj's main cursor. |
8272 | */ | 8411 | */ |
8273 | EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8412 | EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8274 | 8413 | ||
8275 | /** | 8414 | /** |
8276 | * Create a new cursor, associate it to the obj and init it to point | 8415 | * Create a new cursor, associate it to the obj and init it to point |
@@ -8421,7 +8560,7 @@ EAPI void evas_textblock_cursor_at_format_set(Evas_Textb | |||
8421 | * @return #EINA_TRUE if the cursor points to a visible format, #EINA_FALSE otherwise. | 8560 | * @return #EINA_TRUE if the cursor points to a visible format, #EINA_FALSE otherwise. |
8422 | * @see evas_textblock_cursor_format_get() | 8561 | * @see evas_textblock_cursor_format_get() |
8423 | */ | 8562 | */ |
8424 | EAPI Eina_Bool evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8563 | EAPI Eina_Bool evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8425 | 8564 | ||
8426 | /** | 8565 | /** |
8427 | * Advances to the next format node | 8566 | * Advances to the next format node |
@@ -8464,6 +8603,24 @@ EAPI Eina_Bool evas_textblock_cursor_char_next(Evas_Textblock | |||
8464 | EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | 8603 | EAPI Eina_Bool evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); |
8465 | 8604 | ||
8466 | /** | 8605 | /** |
8606 | * Moves the cursor to the start of the word under the cursor. | ||
8607 | * | ||
8608 | * @param cur the cursor to move. | ||
8609 | * @return #EINA_TRUE on success #EINA_FALSE otherwise. | ||
8610 | * @since 1.2.0 | ||
8611 | */ | ||
8612 | EAPI Eina_Bool evas_textblock_cursor_word_start(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||
8613 | |||
8614 | /** | ||
8615 | * Moves the cursor to the end of the word under the cursor. | ||
8616 | * | ||
8617 | * @param cur the cursor to move. | ||
8618 | * @return #EINA_TRUE on success #EINA_FALSE otherwise. | ||
8619 | * @since 1.2.0 | ||
8620 | */ | ||
8621 | EAPI Eina_Bool evas_textblock_cursor_word_end(Evas_Textblock_Cursor *cur) EINA_ARG_NONNULL(1); | ||
8622 | |||
8623 | /** | ||
8467 | * Go to the first char in the node the cursor is pointing on. | 8624 | * Go to the first char in the node the cursor is pointing on. |
8468 | * | 8625 | * |
8469 | * @param cur the cursor to update. | 8626 | * @param cur the cursor to update. |
@@ -8501,7 +8658,7 @@ EAPI void evas_textblock_cursor_line_char_last(Evas_Text | |||
8501 | * @param cur the cursor to take the position from. | 8658 | * @param cur the cursor to take the position from. |
8502 | * @return the position or -1 on error | 8659 | * @return the position or -1 on error |
8503 | */ | 8660 | */ |
8504 | EAPI int evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8661 | EAPI int evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8505 | 8662 | ||
8506 | /** | 8663 | /** |
8507 | * Set the cursor pos. | 8664 | * Set the cursor pos. |
@@ -8527,7 +8684,7 @@ EAPI Eina_Bool evas_textblock_cursor_line_set(Evas_Textblock_ | |||
8527 | * @param cur2 the second cursor. | 8684 | * @param cur2 the second cursor. |
8528 | * @return -1 if cur1 < cur2, 0 if cur1 == cur2 and 1 otherwise. | 8685 | * @return -1 if cur1 < cur2, 0 if cur1 == cur2 and 1 otherwise. |
8529 | */ | 8686 | */ |
8530 | EAPI int evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8687 | EAPI int evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8531 | 8688 | ||
8532 | /** | 8689 | /** |
8533 | * Make cur_dest point to the same place as cur. Does not work if they don't | 8690 | * Make cur_dest point to the same place as cur. Does not work if they don't |
@@ -8630,7 +8787,7 @@ EAPI void evas_textblock_cursor_range_delete(Evas_Textbl | |||
8630 | * @param cur the cursor pointing to the paragraph. | 8787 | * @param cur the cursor pointing to the paragraph. |
8631 | * @return the text on success, NULL otherwise. | 8788 | * @return the text on success, NULL otherwise. |
8632 | */ | 8789 | */ |
8633 | EAPI const char *evas_textblock_cursor_paragraph_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8790 | EAPI const char *evas_textblock_cursor_paragraph_text_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8634 | 8791 | ||
8635 | /** | 8792 | /** |
8636 | * Return the length of the paragraph, cheaper the eina_unicode_strlen() | 8793 | * Return the length of the paragraph, cheaper the eina_unicode_strlen() |
@@ -8638,7 +8795,7 @@ EAPI const char *evas_textblock_cursor_paragraph_text_get(const | |||
8638 | * @param cur the position of the paragraph. | 8795 | * @param cur the position of the paragraph. |
8639 | * @return the length of the paragraph on success, -1 otehrwise. | 8796 | * @return the length of the paragraph on success, -1 otehrwise. |
8640 | */ | 8797 | */ |
8641 | EAPI int evas_textblock_cursor_paragraph_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8798 | EAPI int evas_textblock_cursor_paragraph_text_length_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8642 | 8799 | ||
8643 | /** | 8800 | /** |
8644 | * Return the currently visible range. | 8801 | * Return the currently visible range. |
@@ -8648,7 +8805,7 @@ EAPI int evas_textblock_cursor_paragraph_text_length_ge | |||
8648 | * @return EINA_TRUE on success. EINA_FALSE otherwise. | 8805 | * @return EINA_TRUE on success. EINA_FALSE otherwise. |
8649 | * @since 1.1.0 | 8806 | * @since 1.1.0 |
8650 | */ | 8807 | */ |
8651 | Eina_Bool evas_textblock_cursor_visible_range_get(Evas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) EINA_ARG_NONNULL(1, 2); | 8808 | EAPI Eina_Bool evas_textblock_cursor_visible_range_get(Evas_Textblock_Cursor *start, Evas_Textblock_Cursor *end) EINA_ARG_NONNULL(1, 2); |
8652 | 8809 | ||
8653 | /** | 8810 | /** |
8654 | * Return the format nodes in the range between cur1 and cur2. | 8811 | * Return the format nodes in the range between cur1 and cur2. |
@@ -8658,7 +8815,7 @@ Eina_Bool evas_textblock_cursor_visible_range_get(Evas_T | |||
8658 | * @return the foramt nodes in the range. You have to free it. | 8815 | * @return the foramt nodes in the range. You have to free it. |
8659 | * @since 1.1.0 | 8816 | * @since 1.1.0 |
8660 | */ | 8817 | */ |
8661 | EAPI Eina_List * evas_textblock_cursor_range_formats_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8818 | EAPI Eina_List * evas_textblock_cursor_range_formats_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8662 | 8819 | ||
8663 | /** | 8820 | /** |
8664 | * Return the text in the range between cur1 and cur2 | 8821 | * Return the text in the range between cur1 and cur2 |
@@ -8669,13 +8826,15 @@ EAPI Eina_List * evas_textblock_cursor_range_formats_get(const E | |||
8669 | * @return the text in the range | 8826 | * @return the text in the range |
8670 | * @see elm_entry_markup_to_utf8() | 8827 | * @see elm_entry_markup_to_utf8() |
8671 | */ | 8828 | */ |
8672 | EAPI char *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8829 | EAPI char *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8673 | 8830 | ||
8674 | /** | 8831 | /** |
8675 | * Return the content of the cursor. | 8832 | * Return the content of the cursor. |
8676 | * | 8833 | * |
8834 | * Free the returned string pointer when done (if it is not NULL). | ||
8835 | * | ||
8677 | * @param cur the cursor | 8836 | * @param cur the cursor |
8678 | * @return the text in the range | 8837 | * @return the text in the range, terminated by a nul byte (may be utf8). |
8679 | */ | 8838 | */ |
8680 | EAPI char *evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; | 8839 | EAPI char *evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; |
8681 | 8840 | ||
@@ -8766,7 +8925,7 @@ EAPI int evas_textblock_cursor_line_coord_set(Evas_Text | |||
8766 | * @param cur2 other side of the range. | 8925 | * @param cur2 other side of the range. |
8767 | * @return a list of Rectangles representing the geometry of the range. | 8926 | * @return a list of Rectangles representing the geometry of the range. |
8768 | */ | 8927 | */ |
8769 | EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 8928 | EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
8770 | EAPI Eina_Bool evas_textblock_cursor_format_item_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); | 8929 | EAPI Eina_Bool evas_textblock_cursor_format_item_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) EINA_ARG_NONNULL(1); |
8771 | 8930 | ||
8772 | 8931 | ||
@@ -8776,7 +8935,7 @@ EAPI Eina_List *evas_textblock_cursor_range_geometry_get(const | |||
8776 | * @param cur the cursor to check. | 8935 | * @param cur the cursor to check. |
8777 | * @return #EINA_TRUE if true, #EINA_FALSE otherwise. | 8936 | * @return #EINA_TRUE if true, #EINA_FALSE otherwise. |
8778 | */ | 8937 | */ |
8779 | EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 8938 | EAPI Eina_Bool evas_textblock_cursor_eol_get(const Evas_Textblock_Cursor *cur) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
8780 | 8939 | ||
8781 | 8940 | ||
8782 | /** | 8941 | /** |
@@ -8931,6 +9090,12 @@ EAPI void evas_object_polygon_points_clear (Evas_Object *obj) EINA | |||
8931 | * @} | 9090 | * @} |
8932 | */ | 9091 | */ |
8933 | 9092 | ||
9093 | /* @since 1.2.0 */ | ||
9094 | EAPI void evas_object_is_frame_object_set(Evas_Object *obj, Eina_Bool is_frame); | ||
9095 | |||
9096 | /* @since 1.2.0 */ | ||
9097 | EAPI Eina_Bool evas_object_is_frame_object_get(Evas_Object *obj); | ||
9098 | |||
8934 | /** | 9099 | /** |
8935 | * @defgroup Evas_Smart_Group Smart Functions | 9100 | * @defgroup Evas_Smart_Group Smart Functions |
8936 | * | 9101 | * |
@@ -9273,7 +9438,7 @@ EAPI Evas_Smart *evas_smart_class_new (const | |||
9273 | * @param s a valid #Evas_Smart pointer | 9438 | * @param s a valid #Evas_Smart pointer |
9274 | * @return the #Evas_Smart_Class in it | 9439 | * @return the #Evas_Smart_Class in it |
9275 | */ | 9440 | */ |
9276 | EAPI const Evas_Smart_Class *evas_smart_class_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9441 | EAPI const Evas_Smart_Class *evas_smart_class_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9277 | 9442 | ||
9278 | 9443 | ||
9279 | /** | 9444 | /** |
@@ -9284,7 +9449,7 @@ EAPI const Evas_Smart_Class *evas_smart_class_get (const | |||
9284 | * This data pointer is set as the data field in the #Evas_Smart_Class | 9449 | * This data pointer is set as the data field in the #Evas_Smart_Class |
9285 | * passed in to evas_smart_class_new(). | 9450 | * passed in to evas_smart_class_new(). |
9286 | */ | 9451 | */ |
9287 | EAPI void *evas_smart_data_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9452 | EAPI void *evas_smart_data_get (const Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9288 | 9453 | ||
9289 | /** | 9454 | /** |
9290 | * Get the smart callbacks known by this #Evas_Smart handle's smart | 9455 | * Get the smart callbacks known by this #Evas_Smart handle's smart |
@@ -9338,7 +9503,7 @@ EAPI const Evas_Smart_Cb_Description **evas_smart_callbacks_descriptions_get(con | |||
9338 | * | 9503 | * |
9339 | * @see evas_smart_callbacks_descriptions_get() | 9504 | * @see evas_smart_callbacks_descriptions_get() |
9340 | */ | 9505 | */ |
9341 | EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_find(const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2) EINA_PURE; | 9506 | EAPI const Evas_Smart_Cb_Description *evas_smart_callback_description_find(const Evas_Smart *s, const char *name) EINA_ARG_NONNULL(1, 2); |
9342 | 9507 | ||
9343 | 9508 | ||
9344 | /** | 9509 | /** |
@@ -9507,7 +9672,7 @@ EAPI void evas_object_smart_member_del (Evas_Object *obj) EINA | |||
9507 | * @see evas_object_smart_member_add() | 9672 | * @see evas_object_smart_member_add() |
9508 | * @see evas_object_smart_member_del() | 9673 | * @see evas_object_smart_member_del() |
9509 | */ | 9674 | */ |
9510 | EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9675 | EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9511 | 9676 | ||
9512 | /** | 9677 | /** |
9513 | * Gets the parent smart object of a given Evas object, if it has one. | 9678 | * Gets the parent smart object of a given Evas object, if it has one. |
@@ -9519,7 +9684,7 @@ EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj | |||
9519 | * | 9684 | * |
9520 | * @ingroup Evas_Smart_Object_Group | 9685 | * @ingroup Evas_Smart_Object_Group |
9521 | */ | 9686 | */ |
9522 | EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9687 | EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9523 | 9688 | ||
9524 | /** | 9689 | /** |
9525 | * Checks whether a given smart object or any of its smart object | 9690 | * Checks whether a given smart object or any of its smart object |
@@ -9546,7 +9711,7 @@ EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj | |||
9546 | * | 9711 | * |
9547 | * @ingroup Evas_Smart_Object_Group | 9712 | * @ingroup Evas_Smart_Object_Group |
9548 | */ | 9713 | */ |
9549 | EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 9714 | EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
9550 | 9715 | ||
9551 | /** | 9716 | /** |
9552 | * Checks whether a given smart object or any of its smart object | 9717 | * Checks whether a given smart object or any of its smart object |
@@ -9561,7 +9726,7 @@ EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj | |||
9561 | * | 9726 | * |
9562 | * @ingroup Evas_Smart_Object_Group | 9727 | * @ingroup Evas_Smart_Object_Group |
9563 | */ | 9728 | */ |
9564 | EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 9729 | EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
9565 | 9730 | ||
9566 | /** | 9731 | /** |
9567 | * Get the #Evas_Smart from which @p obj smart object was created. | 9732 | * Get the #Evas_Smart from which @p obj smart object was created. |
@@ -9571,7 +9736,7 @@ EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj | |||
9571 | * | 9736 | * |
9572 | * @ingroup Evas_Smart_Object_Group | 9737 | * @ingroup Evas_Smart_Object_Group |
9573 | */ | 9738 | */ |
9574 | EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9739 | EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9575 | 9740 | ||
9576 | /** | 9741 | /** |
9577 | * Retrieve user data stored on a given smart object. | 9742 | * Retrieve user data stored on a given smart object. |
@@ -9585,7 +9750,7 @@ EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj | |||
9585 | * | 9750 | * |
9586 | * @ingroup Evas_Smart_Object_Group | 9751 | * @ingroup Evas_Smart_Object_Group |
9587 | */ | 9752 | */ |
9588 | EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 9753 | EAPI void *evas_object_smart_data_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9589 | 9754 | ||
9590 | /** | 9755 | /** |
9591 | * Store a pointer to user data for a given smart object. | 9756 | * Store a pointer to user data for a given smart object. |
@@ -9683,6 +9848,34 @@ EAPI void evas_object_smart_callback_priority_add(Evas_Object *obj, | |||
9683 | EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3); | 9848 | EAPI void *evas_object_smart_callback_del (Evas_Object *obj, const char *event, Evas_Smart_Cb func) EINA_ARG_NONNULL(1, 2, 3); |
9684 | 9849 | ||
9685 | /** | 9850 | /** |
9851 | * Delete (unregister) a callback function from the smart event | ||
9852 | * specified by @p event on the smart object @p obj. | ||
9853 | * | ||
9854 | * @param obj a smart object | ||
9855 | * @param event the event's name string | ||
9856 | * @param func the callback function | ||
9857 | * @param data the data pointer that was passed to the callback | ||
9858 | * @return the data pointer | ||
9859 | * | ||
9860 | * This function removes <b>the first</b> added smart callback on the | ||
9861 | * object @p obj matching the event name @p event, the registered | ||
9862 | * function pointer @p func and the callback data pointer @p data. If | ||
9863 | * the removal is successful it will also return the data pointer that | ||
9864 | * was passed to evas_object_smart_callback_add() (that will be the same | ||
9865 | * as the parameter) when the callback(s) was(were) added to the canvas. | ||
9866 | * If not successful @c NULL will be returned. A common use would be to | ||
9867 | * remove an exact match of a callback | ||
9868 | * | ||
9869 | * @see evas_object_smart_callback_add() for more details. | ||
9870 | * @since 1.2.0 | ||
9871 | * @ingroup Evas_Smart_Object_Group | ||
9872 | * | ||
9873 | * @note To delete all smart event callbacks which match @p type and @p func, | ||
9874 | * use evas_object_smart_callback_del(). | ||
9875 | */ | ||
9876 | EAPI void *evas_object_smart_callback_del_full(Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1, 2, 3); | ||
9877 | |||
9878 | /** | ||
9686 | * Call a given smart callback on the smart object @p obj. | 9879 | * Call a given smart callback on the smart object @p obj. |
9687 | * | 9880 | * |
9688 | * @param obj the smart object | 9881 | * @param obj the smart object |
@@ -9856,7 +10049,7 @@ EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj, | |||
9856 | * | 10049 | * |
9857 | * @ingroup Evas_Smart_Object_Group | 10050 | * @ingroup Evas_Smart_Object_Group |
9858 | */ | 10051 | */ |
9859 | EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 10052 | EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9860 | 10053 | ||
9861 | /** | 10054 | /** |
9862 | * Call the @b calculate() smart function immediataly on a given smart | 10055 | * Call the @b calculate() smart function immediataly on a given smart |
@@ -9977,7 +10170,7 @@ EAPI void evas_object_smart_move_children_relative(Evas_Objec | |||
9977 | * | 10170 | * |
9978 | * @see evas_object_smart_clipped_smart_add() | 10171 | * @see evas_object_smart_clipped_smart_add() |
9979 | */ | 10172 | */ |
9980 | EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 10173 | EAPI Evas_Object *evas_object_smart_clipped_clipper_get (Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
9981 | 10174 | ||
9982 | /** | 10175 | /** |
9983 | * Set a given smart class' callbacks so it implements the <b>clipped smart | 10176 | * Set a given smart class' callbacks so it implements the <b>clipped smart |
@@ -10885,7 +11078,7 @@ EAPI Eina_List *evas_object_box_children_get | |||
10885 | * _Evas_Object_Box_Api::property_name_get smart class function of the | 11078 | * _Evas_Object_Box_Api::property_name_get smart class function of the |
10886 | * box, which is originally set to @c NULL. | 11079 | * box, which is originally set to @c NULL. |
10887 | */ | 11080 | */ |
10888 | EAPI const char *evas_object_box_option_property_name_get (Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11081 | EAPI const char *evas_object_box_option_property_name_get (Evas_Object *o, int property) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
10889 | 11082 | ||
10890 | /** | 11083 | /** |
10891 | * Get the numerical identifier of the property of the child elements | 11084 | * Get the numerical identifier of the property of the child elements |
@@ -10904,7 +11097,7 @@ EAPI const char *evas_object_box_option_property_name_get | |||
10904 | * _Evas_Object_Box_Api::property_id_get smart class function of the | 11097 | * _Evas_Object_Box_Api::property_id_get smart class function of the |
10905 | * box, which is originally set to @c NULL. | 11098 | * box, which is originally set to @c NULL. |
10906 | */ | 11099 | */ |
10907 | EAPI int evas_object_box_option_property_id_get (Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 11100 | EAPI int evas_object_box_option_property_id_get (Evas_Object *o, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
10908 | 11101 | ||
10909 | /** | 11102 | /** |
10910 | * Set a property value (by its given numerical identifier), on a | 11103 | * Set a property value (by its given numerical identifier), on a |
@@ -11081,7 +11274,7 @@ EAPI void evas_object_table_homogeneous_set (Evas | |||
11081 | * | 11274 | * |
11082 | * @see evas_object_table_homogeneous_set() | 11275 | * @see evas_object_table_homogeneous_set() |
11083 | */ | 11276 | */ |
11084 | EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11277 | EAPI Evas_Object_Table_Homogeneous_Mode evas_object_table_homogeneous_get (const Evas_Object *o) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11085 | 11278 | ||
11086 | /** | 11279 | /** |
11087 | * Set padding between cells. | 11280 | * Set padding between cells. |
@@ -11455,7 +11648,7 @@ EAPI Eina_List *evas_object_grid_children_get (const | |||
11455 | * @return @c EINA_TRUE if it wants, @c EINA_FALSE otherwise. | 11648 | * @return @c EINA_TRUE if it wants, @c EINA_FALSE otherwise. |
11456 | * @ingroup Evas_Cserve | 11649 | * @ingroup Evas_Cserve |
11457 | */ | 11650 | */ |
11458 | EAPI Eina_Bool evas_cserve_want_get (void) EINA_WARN_UNUSED_RESULT EINA_PURE; | 11651 | EAPI Eina_Bool evas_cserve_want_get (void) EINA_WARN_UNUSED_RESULT; |
11459 | 11652 | ||
11460 | /** | 11653 | /** |
11461 | * Retrieves if the system is connected to the server used to share | 11654 | * Retrieves if the system is connected to the server used to share |
@@ -11482,7 +11675,7 @@ EAPI Eina_Bool evas_cserve_stats_get (Evas_Cserve_Stats | |||
11482 | * | 11675 | * |
11483 | * @param cache A handle to the given images cache. | 11676 | * @param cache A handle to the given images cache. |
11484 | */ | 11677 | */ |
11485 | EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image_Cache *cache) EINA_PURE; | 11678 | EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image_Cache *cache); |
11486 | 11679 | ||
11487 | /** | 11680 | /** |
11488 | * Retrieves the current configuration of the Evas image caching | 11681 | * Retrieves the current configuration of the Evas image caching |
@@ -11501,7 +11694,7 @@ EAPI void evas_cserve_image_cache_contents_clean (Evas_Cserve_Image | |||
11501 | * | 11694 | * |
11502 | * @ingroup Evas_Cserve | 11695 | * @ingroup Evas_Cserve |
11503 | */ | 11696 | */ |
11504 | EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; | 11697 | EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT; |
11505 | 11698 | ||
11506 | /** | 11699 | /** |
11507 | * Changes the configurations of the Evas image caching server. | 11700 | * Changes the configurations of the Evas image caching server. |
@@ -11515,7 +11708,7 @@ EAPI Eina_Bool evas_cserve_config_get (Evas_Cserve_Confi | |||
11515 | * | 11708 | * |
11516 | * @ingroup Evas_Cserve | 11709 | * @ingroup Evas_Cserve |
11517 | */ | 11710 | */ |
11518 | EAPI Eina_Bool evas_cserve_config_set (const Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT EINA_PURE; | 11711 | EAPI Eina_Bool evas_cserve_config_set (const Evas_Cserve_Config *config) EINA_WARN_UNUSED_RESULT; |
11519 | 11712 | ||
11520 | /** | 11713 | /** |
11521 | * Force the system to disconnect from the bitmap caching server. | 11714 | * Force the system to disconnect from the bitmap caching server. |
@@ -11711,7 +11904,7 @@ EAPI int evas_string_char_prev_get (const char *str, int p | |||
11711 | * @return The length in characters (not bytes) | 11904 | * @return The length in characters (not bytes) |
11712 | * @ingroup Evas_Utils | 11905 | * @ingroup Evas_Utils |
11713 | */ | 11906 | */ |
11714 | EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11907 | EAPI int evas_string_char_len_get (const char *str) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11715 | 11908 | ||
11716 | /** | 11909 | /** |
11717 | * @defgroup Evas_Keys Key Input Functions | 11910 | * @defgroup Evas_Keys Key Input Functions |
@@ -11769,7 +11962,7 @@ EAPI int evas_string_char_len_get (const char *str) EINA_ | |||
11769 | * @return An ::Evas_Modifier handle to query Evas' keys subsystem | 11962 | * @return An ::Evas_Modifier handle to query Evas' keys subsystem |
11770 | * with evas_key_modifier_is_set(), or @c NULL on error. | 11963 | * with evas_key_modifier_is_set(), or @c NULL on error. |
11771 | */ | 11964 | */ |
11772 | EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11965 | EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11773 | 11966 | ||
11774 | /** | 11967 | /** |
11775 | * Returns a handle to the list of lock keys registered in the canvas | 11968 | * Returns a handle to the list of lock keys registered in the canvas |
@@ -11787,7 +11980,7 @@ EAPI const Evas_Modifier *evas_key_modifier_get (const Evas *e) EINA_WA | |||
11787 | * @return An ::Evas_Lock handle to query Evas' keys subsystem with | 11980 | * @return An ::Evas_Lock handle to query Evas' keys subsystem with |
11788 | * evas_key_lock_is_set(), or @c NULL on error. | 11981 | * evas_key_lock_is_set(), or @c NULL on error. |
11789 | */ | 11982 | */ |
11790 | EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE; | 11983 | EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); |
11791 | 11984 | ||
11792 | 11985 | ||
11793 | /** | 11986 | /** |
@@ -11808,7 +12001,7 @@ EAPI const Evas_Lock *evas_key_lock_get (const Evas *e) EINA_WA | |||
11808 | * @see evas_key_modifier_on | 12001 | * @see evas_key_modifier_on |
11809 | * @see evas_key_modifier_off | 12002 | * @see evas_key_modifier_off |
11810 | */ | 12003 | */ |
11811 | EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 12004 | EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
11812 | 12005 | ||
11813 | 12006 | ||
11814 | /** | 12007 | /** |
@@ -11828,7 +12021,7 @@ EAPI Eina_Bool evas_key_modifier_is_set (const Evas_Modifier *m | |||
11828 | * @see evas_key_lock_on | 12021 | * @see evas_key_lock_on |
11829 | * @see evas_key_lock_off | 12022 | * @see evas_key_lock_off |
11830 | */ | 12023 | */ |
11831 | EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 12024 | EAPI Eina_Bool evas_key_lock_is_set (const Evas_Lock *l, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
11832 | 12025 | ||
11833 | 12026 | ||
11834 | /** | 12027 | /** |
@@ -12012,7 +12205,7 @@ EAPI void evas_key_lock_off (Evas *e, const char *k | |||
12012 | * @see evas_object_key_grab | 12205 | * @see evas_object_key_grab |
12013 | * @see evas_object_key_ungrab | 12206 | * @see evas_object_key_ungrab |
12014 | */ | 12207 | */ |
12015 | EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; | 12208 | EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const char *keyname) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2); |
12016 | 12209 | ||
12017 | 12210 | ||
12018 | /** | 12211 | /** |
diff --git a/libraries/evas/src/lib/Evas_GL.h b/libraries/evas/src/lib/Evas_GL.h index 04bedea..fdfbaad 100644 --- a/libraries/evas/src/lib/Evas_GL.h +++ b/libraries/evas/src/lib/Evas_GL.h | |||
@@ -28,7 +28,7 @@ typedef enum _Evas_GL_Depth_Bits | |||
28 | EVAS_GL_DEPTH_BIT_8 = 1, | 28 | EVAS_GL_DEPTH_BIT_8 = 1, |
29 | EVAS_GL_DEPTH_BIT_16 = 2, | 29 | EVAS_GL_DEPTH_BIT_16 = 2, |
30 | EVAS_GL_DEPTH_BIT_24 = 3, | 30 | EVAS_GL_DEPTH_BIT_24 = 3, |
31 | EVAS_GL_DEPTH_BIT_32 = 4, | 31 | EVAS_GL_DEPTH_BIT_32 = 4 |
32 | } Evas_GL_Depth_Bits; | 32 | } Evas_GL_Depth_Bits; |
33 | 33 | ||
34 | typedef enum _Evas_GL_Stencil_Bits | 34 | typedef enum _Evas_GL_Stencil_Bits |
@@ -38,14 +38,21 @@ typedef enum _Evas_GL_Stencil_Bits | |||
38 | EVAS_GL_STENCIL_BIT_2 = 2, | 38 | EVAS_GL_STENCIL_BIT_2 = 2, |
39 | EVAS_GL_STENCIL_BIT_4 = 3, | 39 | EVAS_GL_STENCIL_BIT_4 = 3, |
40 | EVAS_GL_STENCIL_BIT_8 = 4, | 40 | EVAS_GL_STENCIL_BIT_8 = 4, |
41 | EVAS_GL_STENCIL_BIT_16 = 5, | 41 | EVAS_GL_STENCIL_BIT_16 = 5 |
42 | } Evas_GL_Stencil_Bits; | 42 | } Evas_GL_Stencil_Bits; |
43 | 43 | ||
44 | typedef enum _Evas_GL_Options_Bits | ||
45 | { | ||
46 | EVAS_GL_OPTIONS_NONE = 0, | ||
47 | EVAS_GL_OPTIONS_DIRECT = (1<<0) | ||
48 | } Evas_GL_Options_Bits; | ||
49 | |||
44 | struct _Evas_GL_Config | 50 | struct _Evas_GL_Config |
45 | { | 51 | { |
46 | Evas_GL_Color_Format color_format; | 52 | Evas_GL_Color_Format color_format; |
47 | Evas_GL_Depth_Bits depth_bits; | 53 | Evas_GL_Depth_Bits depth_bits; |
48 | Evas_GL_Stencil_Bits stencil_bits; | 54 | Evas_GL_Stencil_Bits stencil_bits; |
55 | Evas_GL_Options_Bits options_bits; | ||
49 | }; | 56 | }; |
50 | 57 | ||
51 | #define EVAS_GL_EXTENSIONS 1 | 58 | #define EVAS_GL_EXTENSIONS 1 |
@@ -73,6 +80,7 @@ typedef struct _GLData | |||
73 | { | 80 | { |
74 | Evas_GL_Context *ctx; | 81 | Evas_GL_Context *ctx; |
75 | Evas_GL_Surface *sfc; | 82 | Evas_GL_Surface *sfc; |
83 | Evas_GL_Config *cfg; | ||
76 | Evas_GL *evasgl; | 84 | Evas_GL *evasgl; |
77 | Evas_GL_API *glapi; | 85 | Evas_GL_API *glapi; |
78 | GLuint program; | 86 | GLuint program; |
@@ -93,13 +101,6 @@ static GLuint load_shader (GLData *gld, GLenum type, const char *shader_src) | |||
93 | int | 101 | int |
94 | main(int argc, char **argv) | 102 | main(int argc, char **argv) |
95 | { | 103 | { |
96 | // config for the surface for evas_gl | ||
97 | Evas_GL_Config config = | ||
98 | { | ||
99 | EVAS_GL_RGBA_8888, | ||
100 | EVAS_GL_DEPTH_NONE, | ||
101 | EVAS_GL_STENCIL_NONE | ||
102 | }; | ||
103 | // a size by default | 104 | // a size by default |
104 | int w = 256, h = 256; | 105 | int w = 256, h = 256; |
105 | // some variables we will use | 106 | // some variables we will use |
@@ -124,8 +125,16 @@ main(int argc, char **argv) | |||
124 | // get the evas gl handle for doing gl things | 125 | // get the evas gl handle for doing gl things |
125 | gld->evasgl = evas_gl_new(canvas); | 126 | gld->evasgl = evas_gl_new(canvas); |
126 | gld->glapi = evas_gl_api_get(gld->evasgl); | 127 | gld->glapi = evas_gl_api_get(gld->evasgl); |
128 | |||
129 | // Set a surface config | ||
130 | gld->cfg = evas_gl_config_new(); | ||
131 | gld->cfg->color_format = EVAS_GL_RGBA_8888; | ||
132 | //gld->cfg->depth_bits = EVAS_GL_DEPTH_NONE; // Othe config options | ||
133 | //gld->cfg->stencil_bits = EVAS_GL_STENCIL_NONE; | ||
134 | //gld->cfg->options_bits = EVAS_GL_OPTIONS_NONE; | ||
135 | |||
127 | // create a surface and context | 136 | // create a surface and context |
128 | gld->sfc = evas_gl_surface_create(gld->evasgl, &config, w, h); | 137 | gld->sfc = evas_gl_surface_create(gld->evasgl, gld->cfg, w, h); |
129 | gld->ctx = evas_gl_context_create(gld->evasgl, NULL); | 138 | gld->ctx = evas_gl_context_create(gld->evasgl, NULL); |
130 | //-// | 139 | //-// |
131 | //-//-//-// END GL INIT BLOB | 140 | //-//-//-// END GL INIT BLOB |
@@ -207,6 +216,7 @@ on_del(void *data, Evas *e, Evas_Object *obj, void *event_info) | |||
207 | 216 | ||
208 | evas_gl_surface_destroy(gld->evasgl, gld->sfc); | 217 | evas_gl_surface_destroy(gld->evasgl, gld->sfc); |
209 | evas_gl_context_destroy(gld->evasgl, gld->ctx); | 218 | evas_gl_context_destroy(gld->evasgl, gld->ctx); |
219 | evas_gl_config_free(gld->cfg); | ||
210 | evas_gl_free(gld->evasgl); | 220 | evas_gl_free(gld->evasgl); |
211 | free(gld); | 221 | free(gld); |
212 | } | 222 | } |
@@ -389,6 +399,22 @@ EAPI Evas_GL *evas_gl_new (Evas *e) EINA_WARN_UNU | |||
389 | EAPI void evas_gl_free (Evas_GL *evas_gl) EINA_ARG_NONNULL(1); | 399 | EAPI void evas_gl_free (Evas_GL *evas_gl) EINA_ARG_NONNULL(1); |
390 | 400 | ||
391 | /** | 401 | /** |
402 | * Allocates a new config object for the user to fill out. | ||
403 | * | ||
404 | * As long as the Evas creates a config object for the user, it takes care | ||
405 | * of the backward compatibility issue. | ||
406 | */ | ||
407 | EAPI Evas_GL_Config *evas_gl_config_new (); | ||
408 | |||
409 | /** | ||
410 | * Frees a config object created from evas_gl_config_new. | ||
411 | * | ||
412 | * As long as the Evas creates a config object for the user, it takes care | ||
413 | * of the backward compatibility issue. | ||
414 | */ | ||
415 | EAPI void evas_gl_config_free (Evas_GL_Config *cfg) EINA_ARG_NONNULL(1); | ||
416 | |||
417 | /** | ||
392 | * Creates and returns new Evas_GL_Surface object for GL Rendering. | 418 | * Creates and returns new Evas_GL_Surface object for GL Rendering. |
393 | * | 419 | * |
394 | * @param evas_gl The given Evas_GL object. | 420 | * @param evas_gl The given Evas_GL object. |
diff --git a/libraries/evas/src/lib/Makefile.am b/libraries/evas/src/lib/Makefile.am index 6b1011a..2a1a92d 100644 --- a/libraries/evas/src/lib/Makefile.am +++ b/libraries/evas/src/lib/Makefile.am | |||
@@ -100,6 +100,11 @@ SUBDIRS += ../modules/engines/software_x11/ | |||
100 | EVAS_STATIC_MODULE += ../modules/engines/software_x11/libevas_engine_software_x11.la | 100 | EVAS_STATIC_MODULE += ../modules/engines/software_x11/libevas_engine_software_x11.la |
101 | EVAS_STATIC_LIBADD += @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ | 101 | EVAS_STATIC_LIBADD += @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ |
102 | endif | 102 | endif |
103 | if EVAS_STATIC_BUILD_WAYLAND_SHM | ||
104 | SUBDIRS += ../modules/engines/wayland_shm/ | ||
105 | EVAS_STATIC_MODULE += ../modules/engines/wayland_shm/libevas_engine_wayland_shm.la | ||
106 | EVAS_STATIC_LIBADD += @evas_engine_wayland_shm_libs@ | ||
107 | endif | ||
103 | if EVAS_STATIC_BUILD_BMP | 108 | if EVAS_STATIC_BUILD_BMP |
104 | SUBDIRS += ../modules/loaders/bmp | 109 | SUBDIRS += ../modules/loaders/bmp |
105 | EVAS_STATIC_MODULE += ../modules/loaders/bmp/libevas_loader_bmp.la | 110 | EVAS_STATIC_MODULE += ../modules/loaders/bmp/libevas_loader_bmp.la |
@@ -200,9 +205,7 @@ AM_CFLAGS = @WIN32_CFLAGS@ | |||
200 | 205 | ||
201 | lib_LTLIBRARIES = libevas.la | 206 | lib_LTLIBRARIES = libevas.la |
202 | 207 | ||
203 | ### Evas_GL disabled for 1.1 | 208 | includes_HEADERS = Evas.h Evas_GL.h |
204 | #includes_HEADERS = Evas.h Evas_GL.h | ||
205 | includes_HEADERS = Evas.h | ||
206 | includesdir = $(includedir)/evas-@VMAJ@ | 209 | includesdir = $(includedir)/evas-@VMAJ@ |
207 | 210 | ||
208 | libevas_la_SOURCES = main.c | 211 | libevas_la_SOURCES = main.c |
diff --git a/libraries/evas/src/lib/Makefile.in b/libraries/evas/src/lib/Makefile.in index 87bbaac..ffe71d1 100644 --- a/libraries/evas/src/lib/Makefile.in +++ b/libraries/evas/src/lib/Makefile.in | |||
@@ -101,57 +101,60 @@ host_triplet = @host@ | |||
101 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_48 = ../modules/engines/software_x11/ | 101 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_48 = ../modules/engines/software_x11/ |
102 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_49 = ../modules/engines/software_x11/libevas_engine_software_x11.la | 102 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_49 = ../modules/engines/software_x11/libevas_engine_software_x11.la |
103 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_50 = @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ | 103 | @EVAS_STATIC_BUILD_SOFTWARE_X11_TRUE@am__append_50 = @evas_engine_software_xlib_libs@ @evas_engine_software_xcb_libs@ |
104 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_51 = ../modules/loaders/bmp | 104 | @EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am__append_51 = ../modules/engines/wayland_shm/ |
105 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_52 = ../modules/loaders/bmp/libevas_loader_bmp.la | 105 | @EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am__append_52 = ../modules/engines/wayland_shm/libevas_engine_wayland_shm.la |
106 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_53 = @evas_image_loader_bmp_libs@ | 106 | @EVAS_STATIC_BUILD_WAYLAND_SHM_TRUE@am__append_53 = @evas_engine_wayland_shm_libs@ |
107 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_54 = ../modules/savers/edb ../modules/loaders/edb | 107 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_54 = ../modules/loaders/bmp |
108 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_55 = ../modules/savers/edb/libevas_saver_edb.la ../modules/loaders/edb/libevas_loader_edb.la | 108 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_55 = ../modules/loaders/bmp/libevas_loader_bmp.la |
109 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_56 = @evas_image_loader_edb_libs@ | 109 | @EVAS_STATIC_BUILD_BMP_TRUE@am__append_56 = @evas_image_loader_bmp_libs@ |
110 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_57 = ../modules/savers/eet ../modules/loaders/eet | 110 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_57 = ../modules/savers/edb ../modules/loaders/edb |
111 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_58 = ../modules/savers/eet/libevas_saver_eet.la ../modules/loaders/eet/libevas_loader_eet.la | 111 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_58 = ../modules/savers/edb/libevas_saver_edb.la ../modules/loaders/edb/libevas_loader_edb.la |
112 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_59 = @evas_image_loader_eet_libs@ | 112 | @EVAS_STATIC_BUILD_EDB_TRUE@am__append_59 = @evas_image_loader_edb_libs@ |
113 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_60 = ../modules/loaders/generic | 113 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_60 = ../modules/savers/eet ../modules/loaders/eet |
114 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_61 = ../modules/loaders/generic/libevas_loader_generic.la | 114 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_61 = ../modules/savers/eet/libevas_saver_eet.la ../modules/loaders/eet/libevas_loader_eet.la |
115 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_62 = @evas_image_loader_generic_libs@ | 115 | @EVAS_STATIC_BUILD_EET_TRUE@am__append_62 = @evas_image_loader_eet_libs@ |
116 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_63 = ../modules/loaders/gif | 116 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_63 = ../modules/loaders/generic |
117 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_64 = ../modules/loaders/gif/libevas_loader_gif.la | 117 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_64 = ../modules/loaders/generic/libevas_loader_generic.la |
118 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_65 = @evas_image_loader_gif_libs@ | 118 | @EVAS_STATIC_BUILD_GENERIC_TRUE@am__append_65 = @evas_image_loader_generic_libs@ |
119 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_66 = ../modules/loaders/ico | 119 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_66 = ../modules/loaders/gif |
120 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_67 = ../modules/loaders/ico/libevas_loader_ico.la | 120 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_67 = ../modules/loaders/gif/libevas_loader_gif.la |
121 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_68 = @evas_image_loader_ico_libs@ | 121 | @EVAS_STATIC_BUILD_GIF_TRUE@am__append_68 = @evas_image_loader_gif_libs@ |
122 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_69 = ../modules/loaders/jpeg | 122 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_69 = ../modules/loaders/ico |
123 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_70 = ../modules/loaders/jpeg/libevas_loader_jpeg.la | 123 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_70 = ../modules/loaders/ico/libevas_loader_ico.la |
124 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_71 = ../modules/savers/jpeg | 124 | @EVAS_STATIC_BUILD_ICO_TRUE@am__append_71 = @evas_image_loader_ico_libs@ |
125 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_72 = ../modules/savers/jpeg/libevas_saver_jpeg.la | 125 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_72 = ../modules/loaders/jpeg |
126 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_73 = @evas_image_loader_jpeg_libs@ | 126 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_73 = ../modules/loaders/jpeg/libevas_loader_jpeg.la |
127 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_74 = ../modules/loaders/pmaps | 127 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_74 = ../modules/savers/jpeg |
128 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_75 = ../modules/loaders/pmaps/libevas_loader_pmaps.la | 128 | @BUILD_SAVER_JPEG_TRUE@@EVAS_STATIC_BUILD_JPEG_TRUE@am__append_75 = ../modules/savers/jpeg/libevas_saver_jpeg.la |
129 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_76 = @evas_image_loader_pmaps_libs@ | 129 | @EVAS_STATIC_BUILD_JPEG_TRUE@am__append_76 = @evas_image_loader_jpeg_libs@ |
130 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_77 = ../modules/savers/png ../modules/loaders/png | 130 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_77 = ../modules/loaders/pmaps |
131 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_78 = ../modules/savers/png/libevas_saver_png.la ../modules/loaders/png/libevas_loader_png.la | 131 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_78 = ../modules/loaders/pmaps/libevas_loader_pmaps.la |
132 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_79 = @evas_image_loader_png_libs@ | 132 | @EVAS_STATIC_BUILD_PMAPS_TRUE@am__append_79 = @evas_image_loader_pmaps_libs@ |
133 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_80 = ../modules/loaders/psd | 133 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_80 = ../modules/savers/png ../modules/loaders/png |
134 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_81 = ../modules/loaders/psd/libevas_loader_psd.la | 134 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_81 = ../modules/savers/png/libevas_saver_png.la ../modules/loaders/png/libevas_loader_png.la |
135 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_82 = @evas_image_loader_psd_libs@ | 135 | @EVAS_STATIC_BUILD_PNG_TRUE@am__append_82 = @evas_image_loader_png_libs@ |
136 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_83 = ../modules/loaders/svg | 136 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_83 = ../modules/loaders/psd |
137 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_84 = ../modules/loaders/svg/libevas_loader_svg.la | 137 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_84 = ../modules/loaders/psd/libevas_loader_psd.la |
138 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_85 = @evas_image_loader_svg_libs@ | 138 | @EVAS_STATIC_BUILD_PSD_TRUE@am__append_85 = @evas_image_loader_psd_libs@ |
139 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_86 = ../modules/loaders/tga | 139 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_86 = ../modules/loaders/svg |
140 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_87 = ../modules/loaders/tga/libevas_loader_tga.la | 140 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_87 = ../modules/loaders/svg/libevas_loader_svg.la |
141 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_88 = @evas_image_loader_tga_libs@ | 141 | @EVAS_STATIC_BUILD_SVG_TRUE@am__append_88 = @evas_image_loader_svg_libs@ |
142 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_89 = ../modules/savers/tiff ../modules/loaders/tiff | 142 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_89 = ../modules/loaders/tga |
143 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_90 = ../modules/savers/tiff/libevas_saver_tiff.la ../modules/loaders/tiff/libevas_loader_tiff.la | 143 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_90 = ../modules/loaders/tga/libevas_loader_tga.la |
144 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_91 = @evas_image_loader_tiff_libs@ | 144 | @EVAS_STATIC_BUILD_TGA_TRUE@am__append_91 = @evas_image_loader_tga_libs@ |
145 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_92 = ../modules/loaders/wbmp | 145 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_92 = ../modules/savers/tiff ../modules/loaders/tiff |
146 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_93 = ../modules/loaders/wbmp/libevas_loader_wbmp.la | 146 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_93 = ../modules/savers/tiff/libevas_saver_tiff.la ../modules/loaders/tiff/libevas_loader_tiff.la |
147 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_94 = @evas_image_loader_wbmp_libs@ | 147 | @EVAS_STATIC_BUILD_TIFF_TRUE@am__append_94 = @evas_image_loader_tiff_libs@ |
148 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_95 = ../modules/loaders/xpm | 148 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_95 = ../modules/loaders/wbmp |
149 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_96 = ../modules/loaders/xpm/libevas_loader_xpm.la | 149 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_96 = ../modules/loaders/wbmp/libevas_loader_wbmp.la |
150 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_97 = @evas_image_loader_xpm_libs@ | 150 | @EVAS_STATIC_BUILD_WBMP_TRUE@am__append_97 = @evas_image_loader_wbmp_libs@ |
151 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_98 = engines/common_16/libevas_engine_common_16.la | 151 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_98 = ../modules/loaders/xpm |
152 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_99 = engines/common_16/libevas_engine_common_16.la | 152 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_99 = ../modules/loaders/xpm/libevas_loader_xpm.la |
153 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_100 = engines/common_8/libevas_engine_common_8.la | 153 | @EVAS_STATIC_BUILD_XPM_TRUE@am__append_100 = @evas_image_loader_xpm_libs@ |
154 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_101 = engines/common_8/libevas_engine_common_8.la | 154 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_101 = engines/common_16/libevas_engine_common_16.la |
155 | @BUILD_ENGINE_SOFTWARE_16_TRUE@am__append_102 = engines/common_16/libevas_engine_common_16.la | ||
156 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_103 = engines/common_8/libevas_engine_common_8.la | ||
157 | @BUILD_ENGINE_SOFTWARE_8_TRUE@am__append_104 = engines/common_8/libevas_engine_common_8.la | ||
155 | subdir = src/lib | 158 | subdir = src/lib |
156 | DIST_COMMON = $(includes_HEADERS) $(srcdir)/Makefile.am \ | 159 | DIST_COMMON = $(includes_HEADERS) $(srcdir)/Makefile.am \ |
157 | $(srcdir)/Makefile.in | 160 | $(srcdir)/Makefile.in |
@@ -213,7 +216,7 @@ am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | |||
213 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | 216 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ |
214 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | 217 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ |
215 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | 218 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ |
216 | $(am__DEPENDENCIES_1) | 219 | $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) |
217 | am_libevas_la_OBJECTS = main.lo | 220 | am_libevas_la_OBJECTS = main.lo |
218 | libevas_la_OBJECTS = $(am_libevas_la_OBJECTS) | 221 | libevas_la_OBJECTS = $(am_libevas_la_OBJECTS) |
219 | AM_V_lt = $(am__v_lt_$(V)) | 222 | AM_V_lt = $(am__v_lt_$(V)) |
@@ -393,8 +396,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
393 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 396 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
394 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 397 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
395 | PKG_CONFIG = @PKG_CONFIG@ | 398 | PKG_CONFIG = @PKG_CONFIG@ |
396 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
397 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
398 | PNG_CFLAGS = @PNG_CFLAGS@ | 399 | PNG_CFLAGS = @PNG_CFLAGS@ |
399 | PNG_LIBS = @PNG_LIBS@ | 400 | PNG_LIBS = @PNG_LIBS@ |
400 | RANLIB = @RANLIB@ | 401 | RANLIB = @RANLIB@ |
@@ -411,6 +412,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
411 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 412 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
412 | VERSION = @VERSION@ | 413 | VERSION = @VERSION@ |
413 | VMAJ = @VMAJ@ | 414 | VMAJ = @VMAJ@ |
415 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
416 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
414 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 417 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
415 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 418 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
416 | XCB_CFLAGS = @XCB_CFLAGS@ | 419 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -492,6 +495,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
492 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 495 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
493 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 496 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
494 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 497 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
498 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
499 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
500 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
501 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
495 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 502 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
496 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 503 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
497 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 504 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
@@ -576,9 +583,10 @@ SUBDIRS = canvas cache cserve file engines include $(am__append_1) \ | |||
576 | $(am__append_45) $(am__append_48) $(am__append_51) \ | 583 | $(am__append_45) $(am__append_48) $(am__append_51) \ |
577 | $(am__append_54) $(am__append_57) $(am__append_60) \ | 584 | $(am__append_54) $(am__append_57) $(am__append_60) \ |
578 | $(am__append_63) $(am__append_66) $(am__append_69) \ | 585 | $(am__append_63) $(am__append_66) $(am__append_69) \ |
579 | $(am__append_71) $(am__append_74) $(am__append_77) \ | 586 | $(am__append_72) $(am__append_74) $(am__append_77) \ |
580 | $(am__append_80) $(am__append_83) $(am__append_86) \ | 587 | $(am__append_80) $(am__append_83) $(am__append_86) \ |
581 | $(am__append_89) $(am__append_92) $(am__append_95) | 588 | $(am__append_89) $(am__append_92) $(am__append_95) \ |
589 | $(am__append_98) | ||
582 | EVAS_STATIC_MODULE = $(am__append_2) $(am__append_4) $(am__append_6) \ | 590 | EVAS_STATIC_MODULE = $(am__append_2) $(am__append_4) $(am__append_6) \ |
583 | $(am__append_9) $(am__append_12) $(am__append_15) \ | 591 | $(am__append_9) $(am__append_12) $(am__append_15) \ |
584 | $(am__append_18) $(am__append_21) $(am__append_24) \ | 592 | $(am__append_18) $(am__append_21) $(am__append_24) \ |
@@ -587,20 +595,20 @@ EVAS_STATIC_MODULE = $(am__append_2) $(am__append_4) $(am__append_6) \ | |||
587 | $(am__append_43) $(am__append_46) $(am__append_49) \ | 595 | $(am__append_43) $(am__append_46) $(am__append_49) \ |
588 | $(am__append_52) $(am__append_55) $(am__append_58) \ | 596 | $(am__append_52) $(am__append_55) $(am__append_58) \ |
589 | $(am__append_61) $(am__append_64) $(am__append_67) \ | 597 | $(am__append_61) $(am__append_64) $(am__append_67) \ |
590 | $(am__append_70) $(am__append_72) $(am__append_75) \ | 598 | $(am__append_70) $(am__append_73) $(am__append_75) \ |
591 | $(am__append_78) $(am__append_81) $(am__append_84) \ | 599 | $(am__append_78) $(am__append_81) $(am__append_84) \ |
592 | $(am__append_87) $(am__append_90) $(am__append_93) \ | 600 | $(am__append_87) $(am__append_90) $(am__append_93) \ |
593 | $(am__append_96) | 601 | $(am__append_96) $(am__append_99) |
594 | EVAS_STATIC_LIBADD = $(am__append_7) $(am__append_10) $(am__append_13) \ | 602 | EVAS_STATIC_LIBADD = $(am__append_7) $(am__append_10) $(am__append_13) \ |
595 | $(am__append_16) $(am__append_19) $(am__append_22) \ | 603 | $(am__append_16) $(am__append_19) $(am__append_22) \ |
596 | $(am__append_27) $(am__append_30) $(am__append_33) \ | 604 | $(am__append_27) $(am__append_30) $(am__append_33) \ |
597 | $(am__append_38) $(am__append_41) $(am__append_44) \ | 605 | $(am__append_38) $(am__append_41) $(am__append_44) \ |
598 | $(am__append_47) $(am__append_50) $(am__append_53) \ | 606 | $(am__append_47) $(am__append_50) $(am__append_53) \ |
599 | $(am__append_56) $(am__append_59) $(am__append_62) \ | 607 | $(am__append_56) $(am__append_59) $(am__append_62) \ |
600 | $(am__append_65) $(am__append_68) $(am__append_73) \ | 608 | $(am__append_65) $(am__append_68) $(am__append_71) \ |
601 | $(am__append_76) $(am__append_79) $(am__append_82) \ | 609 | $(am__append_76) $(am__append_79) $(am__append_82) \ |
602 | $(am__append_85) $(am__append_88) $(am__append_91) \ | 610 | $(am__append_85) $(am__append_88) $(am__append_91) \ |
603 | $(am__append_94) $(am__append_97) | 611 | $(am__append_94) $(am__append_97) $(am__append_100) |
604 | AM_CPPFLAGS = \ | 612 | AM_CPPFLAGS = \ |
605 | -I. \ | 613 | -I. \ |
606 | -I$(top_srcdir)/src/lib \ | 614 | -I$(top_srcdir)/src/lib \ |
@@ -619,10 +627,7 @@ AM_CPPFLAGS = \ | |||
619 | 627 | ||
620 | AM_CFLAGS = @WIN32_CFLAGS@ | 628 | AM_CFLAGS = @WIN32_CFLAGS@ |
621 | lib_LTLIBRARIES = libevas.la | 629 | lib_LTLIBRARIES = libevas.la |
622 | 630 | includes_HEADERS = Evas.h Evas_GL.h | |
623 | ### Evas_GL disabled for 1.1 | ||
624 | #includes_HEADERS = Evas.h Evas_GL.h | ||
625 | includes_HEADERS = Evas.h | ||
626 | includesdir = $(includedir)/evas-@VMAJ@ | 631 | includesdir = $(includedir)/evas-@VMAJ@ |
627 | libevas_la_SOURCES = main.c | 632 | libevas_la_SOURCES = main.c |
628 | @EVAS_CSERVE_TRUE@libevas_cserve_la = cserve/libevas_cserve.la | 633 | @EVAS_CSERVE_TRUE@libevas_cserve_la = cserve/libevas_cserve.la |
@@ -631,12 +636,12 @@ libevas_la_LIBADD = canvas/libevas_canvas.la file/libevas_file.la \ | |||
631 | engines/common/libevas_engine_common.la @FREETYPE_LIBS@ \ | 636 | engines/common/libevas_engine_common.la @FREETYPE_LIBS@ \ |
632 | @FRIBIDI_LIBS@ @HARFBUZZ_LIBS@ @EET_LIBS@ @FONTCONFIG_LIBS@ \ | 637 | @FRIBIDI_LIBS@ @HARFBUZZ_LIBS@ @EET_LIBS@ @FONTCONFIG_LIBS@ \ |
633 | @pthread_libs@ @EINA_LIBS@ $(EVAS_STATIC_MODULE) \ | 638 | @pthread_libs@ @EINA_LIBS@ $(EVAS_STATIC_MODULE) \ |
634 | $(EVAS_STATIC_LIBADD) @PIXMAN_LIBS@ -lm $(am__append_98) \ | 639 | $(EVAS_STATIC_LIBADD) @PIXMAN_LIBS@ -lm $(am__append_101) \ |
635 | $(am__append_100) | 640 | $(am__append_103) |
636 | libevas_la_DEPENDENCIES = canvas/libevas_canvas.la \ | 641 | libevas_la_DEPENDENCIES = canvas/libevas_canvas.la \ |
637 | file/libevas_file.la cache/libevas_cache.la \ | 642 | file/libevas_file.la cache/libevas_cache.la \ |
638 | $(libevas_cserve_la) engines/common/libevas_engine_common.la \ | 643 | $(libevas_cserve_la) engines/common/libevas_engine_common.la \ |
639 | $(EVAS_STATIC_MODULE) $(am__append_99) $(am__append_101) | 644 | $(EVAS_STATIC_MODULE) $(am__append_102) $(am__append_104) |
640 | libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ | 645 | libevas_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ |
641 | 646 | ||
642 | ### Evas_GL we are still using it in our code, so just don't install it. | 647 | ### Evas_GL we are still using it in our code, so just don't install it. |
diff --git a/libraries/evas/src/lib/cache/Makefile.in b/libraries/evas/src/lib/cache/Makefile.in index b024731..2b50c81 100644 --- a/libraries/evas/src/lib/cache/Makefile.in +++ b/libraries/evas/src/lib/cache/Makefile.in | |||
@@ -197,8 +197,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
197 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 197 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
198 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 198 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
199 | PKG_CONFIG = @PKG_CONFIG@ | 199 | PKG_CONFIG = @PKG_CONFIG@ |
200 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
201 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
202 | PNG_CFLAGS = @PNG_CFLAGS@ | 200 | PNG_CFLAGS = @PNG_CFLAGS@ |
203 | PNG_LIBS = @PNG_LIBS@ | 201 | PNG_LIBS = @PNG_LIBS@ |
204 | RANLIB = @RANLIB@ | 202 | RANLIB = @RANLIB@ |
@@ -215,6 +213,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
215 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 213 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
216 | VERSION = @VERSION@ | 214 | VERSION = @VERSION@ |
217 | VMAJ = @VMAJ@ | 215 | VMAJ = @VMAJ@ |
216 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
217 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
218 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 218 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
219 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 219 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
220 | XCB_CFLAGS = @XCB_CFLAGS@ | 220 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -296,6 +296,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
296 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 296 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
297 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 297 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
298 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 298 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
299 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
300 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
301 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
302 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
299 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 303 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
300 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 304 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
301 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 305 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/cache/evas_cache_engine_image.c b/libraries/evas/src/lib/cache/evas_cache_engine_image.c index 8ae4392..5ec1af2 100644 --- a/libraries/evas/src/lib/cache/evas_cache_engine_image.c +++ b/libraries/evas/src/lib/cache/evas_cache_engine_image.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <assert.h> | 5 | #include <assert.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
diff --git a/libraries/evas/src/lib/cache/evas_cache_image.c b/libraries/evas/src/lib/cache/evas_cache_image.c index d52c64e..73e4f8a 100644 --- a/libraries/evas/src/lib/cache/evas_cache_image.c +++ b/libraries/evas/src/lib/cache/evas_cache_image.c | |||
@@ -918,12 +918,8 @@ evas_cache_image_drop(Image_Entry *im) | |||
918 | EAPI void | 918 | EAPI void |
919 | evas_cache_image_data_not_needed(Image_Entry *im) | 919 | evas_cache_image_data_not_needed(Image_Entry *im) |
920 | { | 920 | { |
921 | Evas_Cache_Image *cache; | ||
922 | int references; | 921 | int references; |
923 | 922 | ||
924 | /* FIXME: no one uses this api... well evas_cache_engine_parent_not_needed() | ||
925 | * does, but nothing uses that! */ | ||
926 | cache = im->cache; | ||
927 | #ifdef EVAS_FRAME_QUEUING | 923 | #ifdef EVAS_FRAME_QUEUING |
928 | LKL(im->lock_references); | 924 | LKL(im->lock_references); |
929 | #endif | 925 | #endif |
@@ -941,11 +937,12 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned | |||
941 | { | 937 | { |
942 | Image_Entry *im_dirty = im; | 938 | Image_Entry *im_dirty = im; |
943 | Evas_Cache_Image *cache; | 939 | Evas_Cache_Image *cache; |
944 | int references; | ||
945 | 940 | ||
946 | cache = im->cache; | 941 | cache = im->cache; |
947 | if (!(im->flags.dirty)) | 942 | if (!(im->flags.dirty)) |
948 | { | 943 | { |
944 | #ifndef EVAS_CSERVE | ||
945 | int references; | ||
949 | #ifdef EVAS_FRAME_QUEUING | 946 | #ifdef EVAS_FRAME_QUEUING |
950 | LKL(im->lock_references); | 947 | LKL(im->lock_references); |
951 | #endif | 948 | #endif |
@@ -953,21 +950,18 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned | |||
953 | #ifdef EVAS_FRAME_QUEUING | 950 | #ifdef EVAS_FRAME_QUEUING |
954 | LKU(im->lock_references); | 951 | LKU(im->lock_references); |
955 | #endif | 952 | #endif |
956 | #ifndef EVAS_CSERVE | ||
957 | // if ref 1 also copy if using shared cache as its read-only | 953 | // if ref 1 also copy if using shared cache as its read-only |
958 | if (references == 1) im_dirty = im; | 954 | if (references == 1) im_dirty = im; |
959 | else | 955 | else |
960 | #endif | 956 | #endif |
961 | { | 957 | { |
962 | int error; | ||
963 | |||
964 | im_dirty = | 958 | im_dirty = |
965 | evas_cache_image_copied_data(cache, im->w, im->h, | 959 | evas_cache_image_copied_data(cache, im->w, im->h, |
966 | evas_cache_image_pixels(im), | 960 | evas_cache_image_pixels(im), |
967 | im->flags.alpha, im->space); | 961 | im->flags.alpha, im->space); |
968 | if (!im_dirty) goto on_error; | 962 | if (!im_dirty) goto on_error; |
969 | if (cache->func.debug) cache->func.debug("dirty-src", im); | 963 | if (cache->func.debug) cache->func.debug("dirty-src", im); |
970 | error = cache->func.dirty(im_dirty, im); | 964 | cache->func.dirty(im_dirty, im); |
971 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); | 965 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); |
972 | #ifdef EVAS_FRAME_QUEUING | 966 | #ifdef EVAS_FRAME_QUEUING |
973 | LKL(im_dirty->lock_references); | 967 | LKL(im_dirty->lock_references); |
@@ -1014,15 +1008,13 @@ evas_cache_image_alone(Image_Entry *im) | |||
1014 | } | 1008 | } |
1015 | else | 1009 | else |
1016 | { | 1010 | { |
1017 | int error; | ||
1018 | |||
1019 | im_dirty = evas_cache_image_copied_data(cache, im->w, im->h, | 1011 | im_dirty = evas_cache_image_copied_data(cache, im->w, im->h, |
1020 | evas_cache_image_pixels(im), | 1012 | evas_cache_image_pixels(im), |
1021 | im->flags.alpha, | 1013 | im->flags.alpha, |
1022 | im->space); | 1014 | im->space); |
1023 | if (!im_dirty) goto on_error; | 1015 | if (!im_dirty) goto on_error; |
1024 | if (cache->func.debug) cache->func.debug("dirty-src", im); | 1016 | if (cache->func.debug) cache->func.debug("dirty-src", im); |
1025 | error = cache->func.dirty(im_dirty, im); | 1017 | cache->func.dirty(im_dirty, im); |
1026 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); | 1018 | if (cache->func.debug) cache->func.debug("dirty-out", im_dirty); |
1027 | #ifdef EVAS_FRAME_QUEUING | 1019 | #ifdef EVAS_FRAME_QUEUING |
1028 | LKL(im_dirty->lock_references); | 1020 | LKL(im_dirty->lock_references); |
@@ -1296,6 +1288,7 @@ evas_cache_image_preload_cancel(Image_Entry *im, const void *target) | |||
1296 | _evas_cache_image_entry_preload_remove(im, target); | 1288 | _evas_cache_image_entry_preload_remove(im, target); |
1297 | #else | 1289 | #else |
1298 | (void)im; | 1290 | (void)im; |
1291 | (void)target; | ||
1299 | #endif | 1292 | #endif |
1300 | } | 1293 | } |
1301 | 1294 | ||
diff --git a/libraries/evas/src/lib/cache/evas_preload.c b/libraries/evas/src/lib/cache/evas_preload.c index 6e0412a..5eebaed 100644 --- a/libraries/evas/src/lib/cache/evas_preload.c +++ b/libraries/evas/src/lib/cache/evas_preload.c | |||
@@ -225,6 +225,7 @@ evas_preload_thread_run(void (*func_heavy) (void *data), | |||
225 | If no thread and as we don't want to break app that rely on this | 225 | If no thread and as we don't want to break app that rely on this |
226 | facility, we will lock the interface until we are done. | 226 | facility, we will lock the interface until we are done. |
227 | */ | 227 | */ |
228 | (void)func_cancel; | ||
228 | func_heavy((void *)data); | 229 | func_heavy((void *)data); |
229 | func_end((void *)data); | 230 | func_end((void *)data); |
230 | return (void *)1; | 231 | return (void *)1; |
@@ -253,12 +254,13 @@ evas_preload_thread_cancel(Evas_Preload_Pthread *thread) | |||
253 | } | 254 | } |
254 | } | 255 | } |
255 | LKU(_mutex); | 256 | LKU(_mutex); |
256 | 257 | ||
257 | /* Delay the destruction */ | 258 | /* Delay the destruction */ |
258 | work = (Evas_Preload_Pthread_Worker *)thread; | 259 | work = (Evas_Preload_Pthread_Worker *)thread; |
259 | work->cancel = EINA_TRUE; | 260 | work->cancel = EINA_TRUE; |
260 | return EINA_FALSE; | 261 | return EINA_FALSE; |
261 | #else | 262 | #else |
263 | (void) thread; | ||
262 | return EINA_TRUE; | 264 | return EINA_TRUE; |
263 | #endif | 265 | #endif |
264 | } | 266 | } |
diff --git a/libraries/evas/src/lib/canvas/Makefile.in b/libraries/evas/src/lib/canvas/Makefile.in index 0b4e15d..75da67a 100644 --- a/libraries/evas/src/lib/canvas/Makefile.in +++ b/libraries/evas/src/lib/canvas/Makefile.in | |||
@@ -211,8 +211,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
211 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 211 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
212 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 212 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
213 | PKG_CONFIG = @PKG_CONFIG@ | 213 | PKG_CONFIG = @PKG_CONFIG@ |
214 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
215 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
216 | PNG_CFLAGS = @PNG_CFLAGS@ | 214 | PNG_CFLAGS = @PNG_CFLAGS@ |
217 | PNG_LIBS = @PNG_LIBS@ | 215 | PNG_LIBS = @PNG_LIBS@ |
218 | RANLIB = @RANLIB@ | 216 | RANLIB = @RANLIB@ |
@@ -229,6 +227,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
229 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 227 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
230 | VERSION = @VERSION@ | 228 | VERSION = @VERSION@ |
231 | VMAJ = @VMAJ@ | 229 | VMAJ = @VMAJ@ |
230 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
231 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
232 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 232 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
233 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 233 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
234 | XCB_CFLAGS = @XCB_CFLAGS@ | 234 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -310,6 +310,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
310 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 310 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
311 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 311 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
312 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 312 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
313 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
314 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
315 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
316 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
313 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 317 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
314 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 318 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
315 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 319 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/canvas/evas_callbacks.c b/libraries/evas/src/lib/canvas/evas_callbacks.c index 33b93bc..93f34f2 100644 --- a/libraries/evas/src/lib/canvas/evas_callbacks.c +++ b/libraries/evas/src/lib/canvas/evas_callbacks.c | |||
@@ -23,7 +23,7 @@ _evas_post_event_callback_call(Evas *e) | |||
23 | { | 23 | { |
24 | if (!pc->func((void*)pc->data, e)) skip = 1; | 24 | if (!pc->func((void*)pc->data, e)) skip = 1; |
25 | } | 25 | } |
26 | EVAS_MEMPOOL_FREE(_mp_pc, pc); | 26 | EVAS_MEMPOOL_FREE(_mp_pc, pc); |
27 | } | 27 | } |
28 | _evas_unwalk(e); | 28 | _evas_unwalk(e); |
29 | } | 29 | } |
@@ -32,10 +32,10 @@ void | |||
32 | _evas_post_event_callback_free(Evas *e) | 32 | _evas_post_event_callback_free(Evas *e) |
33 | { | 33 | { |
34 | Evas_Post_Callback *pc; | 34 | Evas_Post_Callback *pc; |
35 | 35 | ||
36 | EINA_LIST_FREE(e->post_events, pc) | 36 | EINA_LIST_FREE(e->post_events, pc) |
37 | { | 37 | { |
38 | EVAS_MEMPOOL_FREE(_mp_pc, pc); | 38 | EVAS_MEMPOOL_FREE(_mp_pc, pc); |
39 | } | 39 | } |
40 | _evas_unwalk(e); | 40 | _evas_unwalk(e); |
41 | } | 41 | } |
@@ -48,15 +48,15 @@ evas_event_callback_list_post_free(Eina_Inlist **list) | |||
48 | /* MEM OK */ | 48 | /* MEM OK */ |
49 | for (l = *list; l;) | 49 | for (l = *list; l;) |
50 | { | 50 | { |
51 | Evas_Func_Node *fn; | 51 | Evas_Func_Node *fn; |
52 | 52 | ||
53 | fn = (Evas_Func_Node *)l; | 53 | fn = (Evas_Func_Node *)l; |
54 | l = l->next; | 54 | l = l->next; |
55 | if (fn->delete_me) | 55 | if (fn->delete_me) |
56 | { | 56 | { |
57 | *list = eina_inlist_remove(*list, EINA_INLIST_GET(fn)); | 57 | *list = eina_inlist_remove(*list, EINA_INLIST_GET(fn)); |
58 | EVAS_MEMPOOL_FREE(_mp_fn, fn); | 58 | EVAS_MEMPOOL_FREE(_mp_fn, fn); |
59 | } | 59 | } |
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
@@ -70,7 +70,7 @@ evas_object_event_callback_clear(Evas_Object *obj) | |||
70 | if (!obj->callbacks->callbacks) | 70 | if (!obj->callbacks->callbacks) |
71 | { | 71 | { |
72 | EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks); | 72 | EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks); |
73 | obj->callbacks = NULL; | 73 | obj->callbacks = NULL; |
74 | } | 74 | } |
75 | } | 75 | } |
76 | 76 | ||
@@ -84,7 +84,7 @@ evas_event_callback_clear(Evas *e) | |||
84 | if (!e->callbacks->callbacks) | 84 | if (!e->callbacks->callbacks) |
85 | { | 85 | { |
86 | EVAS_MEMPOOL_FREE(_mp_cb, e->callbacks); | 86 | EVAS_MEMPOOL_FREE(_mp_cb, e->callbacks); |
87 | e->callbacks = NULL; | 87 | e->callbacks = NULL; |
88 | } | 88 | } |
89 | } | 89 | } |
90 | 90 | ||
@@ -95,7 +95,7 @@ evas_object_event_callback_all_del(Evas_Object *obj) | |||
95 | 95 | ||
96 | if (!obj->callbacks) return; | 96 | if (!obj->callbacks) return; |
97 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) | 97 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) |
98 | fn->delete_me = 1; | 98 | fn->delete_me = 1; |
99 | } | 99 | } |
100 | 100 | ||
101 | void | 101 | void |
@@ -115,7 +115,7 @@ evas_event_callback_all_del(Evas *e) | |||
115 | 115 | ||
116 | if (!e->callbacks) return; | 116 | if (!e->callbacks) return; |
117 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) | 117 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) |
118 | fn->delete_me = 1; | 118 | fn->delete_me = 1; |
119 | } | 119 | } |
120 | 120 | ||
121 | void | 121 | void |
@@ -136,25 +136,25 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info) | |||
136 | _evas_walk(e); | 136 | _evas_walk(e); |
137 | if (e->callbacks) | 137 | if (e->callbacks) |
138 | { | 138 | { |
139 | l_mod = &e->callbacks->callbacks; | 139 | l_mod = &e->callbacks->callbacks; |
140 | e->callbacks->walking_list++; | 140 | e->callbacks->walking_list++; |
141 | for (l = *l_mod; l; l = l->next) | 141 | for (l = *l_mod; l; l = l->next) |
142 | { | 142 | { |
143 | Evas_Func_Node *fn; | 143 | Evas_Func_Node *fn; |
144 | 144 | ||
145 | fn = (Evas_Func_Node *)l; | 145 | fn = (Evas_Func_Node *)l; |
146 | if ((fn->type == type) && (!fn->delete_me)) | 146 | if ((fn->type == type) && (!fn->delete_me)) |
147 | { | 147 | { |
148 | Evas_Event_Cb func = fn->func; | 148 | Evas_Event_Cb func = fn->func; |
149 | if (func) | 149 | if (func) |
150 | func(fn->data, e, event_info); | 150 | func(fn->data, e, event_info); |
151 | } | 151 | } |
152 | if (e->delete_me) break; | 152 | if (e->delete_me) break; |
153 | } | 153 | } |
154 | e->callbacks->walking_list--; | 154 | e->callbacks->walking_list--; |
155 | if (!e->callbacks->walking_list) | 155 | if (!e->callbacks->walking_list) |
156 | { | 156 | { |
157 | evas_event_callback_clear(e); | 157 | evas_event_callback_clear(e); |
158 | l_mod = NULL; | 158 | l_mod = NULL; |
159 | } | 159 | } |
160 | } | 160 | } |
@@ -162,7 +162,7 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info) | |||
162 | } | 162 | } |
163 | 163 | ||
164 | void | 164 | void |
165 | evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info) | 165 | evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id) |
166 | { | 166 | { |
167 | /* MEM OK */ | 167 | /* MEM OK */ |
168 | Eina_Inlist **l_mod = NULL, *l; | 168 | Eina_Inlist **l_mod = NULL, *l; |
@@ -170,67 +170,67 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void | |||
170 | Evas *e; | 170 | Evas *e; |
171 | 171 | ||
172 | if ((obj->delete_me) || (!obj->layer)) return; | 172 | if ((obj->delete_me) || (!obj->layer)) return; |
173 | if ((obj->last_event == _evas_event_counter) && | 173 | if ((obj->last_event == event_id) && |
174 | (obj->last_event_type == type)) return; | 174 | (obj->last_event_type == type)) return; |
175 | obj->last_event = _evas_event_counter; | 175 | obj->last_event = event_id; |
176 | obj->last_event_type = type; | 176 | obj->last_event_type = type; |
177 | if (!(e = obj->layer->evas)) return; | 177 | if (!(e = obj->layer->evas)) return; |
178 | 178 | ||
179 | _evas_walk(e); | 179 | _evas_walk(e); |
180 | if (obj->callbacks) | 180 | if (obj->callbacks) |
181 | { | 181 | { |
182 | l_mod = &obj->callbacks->callbacks; | 182 | l_mod = &obj->callbacks->callbacks; |
183 | switch (type) | 183 | switch (type) |
184 | { | 184 | { |
185 | case EVAS_CALLBACK_MOUSE_DOWN: | 185 | case EVAS_CALLBACK_MOUSE_DOWN: |
186 | { | 186 | { |
187 | Evas_Event_Mouse_Down *ev = event_info; | 187 | Evas_Event_Mouse_Down *ev = event_info; |
188 | 188 | ||
189 | flags = ev->flags; | 189 | flags = ev->flags; |
190 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) | 190 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) |
191 | { | 191 | { |
192 | if (obj->last_mouse_down_counter < (e->last_mouse_down_counter - 1)) | 192 | if (obj->last_mouse_down_counter < (e->last_mouse_down_counter - 1)) |
193 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); | 193 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); |
194 | } | 194 | } |
195 | obj->last_mouse_down_counter = e->last_mouse_down_counter; | 195 | obj->last_mouse_down_counter = e->last_mouse_down_counter; |
196 | break; | 196 | break; |
197 | } | 197 | } |
198 | case EVAS_CALLBACK_MOUSE_UP: | 198 | case EVAS_CALLBACK_MOUSE_UP: |
199 | { | 199 | { |
200 | Evas_Event_Mouse_Up *ev = event_info; | 200 | Evas_Event_Mouse_Up *ev = event_info; |
201 | 201 | ||
202 | flags = ev->flags; | 202 | flags = ev->flags; |
203 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) | 203 | if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK)) |
204 | { | 204 | { |
205 | if (obj->last_mouse_up_counter < (e->last_mouse_up_counter - 1)) | 205 | if (obj->last_mouse_up_counter < (e->last_mouse_up_counter - 1)) |
206 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); | 206 | ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK); |
207 | } | 207 | } |
208 | obj->last_mouse_up_counter = e->last_mouse_up_counter; | 208 | obj->last_mouse_up_counter = e->last_mouse_up_counter; |
209 | break; | 209 | break; |
210 | } | 210 | } |
211 | default: | 211 | default: |
212 | break; | 212 | break; |
213 | } | 213 | } |
214 | obj->callbacks->walking_list++; | 214 | obj->callbacks->walking_list++; |
215 | for (l = *l_mod; l; l = l->next) | 215 | for (l = *l_mod; l; l = l->next) |
216 | { | 216 | { |
217 | Evas_Func_Node *fn; | 217 | Evas_Func_Node *fn; |
218 | 218 | ||
219 | fn = (Evas_Func_Node *)l; | 219 | fn = (Evas_Func_Node *)l; |
220 | if ((fn->type == type) && (!fn->delete_me)) | 220 | if ((fn->type == type) && (!fn->delete_me)) |
221 | { | 221 | { |
222 | Evas_Object_Event_Cb func = fn->func; | 222 | Evas_Object_Event_Cb func = fn->func; |
223 | if (func) | 223 | if (func) |
224 | func(fn->data, obj->layer->evas, obj, event_info); | 224 | func(fn->data, obj->layer->evas, obj, event_info); |
225 | } | 225 | } |
226 | if (obj->delete_me) break; | 226 | if (obj->delete_me) break; |
227 | } | 227 | } |
228 | obj->callbacks->walking_list--; | 228 | obj->callbacks->walking_list--; |
229 | if (!obj->callbacks->walking_list) | 229 | if (!obj->callbacks->walking_list) |
230 | { | 230 | { |
231 | evas_object_event_callback_clear(obj); | 231 | evas_object_event_callback_clear(obj); |
232 | l_mod = NULL; | 232 | l_mod = NULL; |
233 | } | 233 | } |
234 | 234 | ||
235 | if (type == EVAS_CALLBACK_MOUSE_DOWN) | 235 | if (type == EVAS_CALLBACK_MOUSE_DOWN) |
236 | { | 236 | { |
@@ -246,12 +246,12 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void | |||
246 | 246 | ||
247 | if (!((obj->no_propagate) && (l_mod) && (*l_mod))) | 247 | if (!((obj->no_propagate) && (l_mod) && (*l_mod))) |
248 | { | 248 | { |
249 | if (!obj->no_propagate) | 249 | if (!obj->no_propagate) |
250 | { | 250 | { |
251 | if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) && | 251 | if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) && |
252 | (type <= EVAS_CALLBACK_KEY_UP)) | 252 | (type <= EVAS_CALLBACK_KEY_UP)) |
253 | evas_object_event_callback_call(obj->smart.parent, type, event_info); | 253 | evas_object_event_callback_call(obj->smart.parent, type, event_info, event_id); |
254 | } | 254 | } |
255 | } | 255 | } |
256 | _evas_unwalk(e); | 256 | _evas_unwalk(e); |
257 | } | 257 | } |
@@ -263,16 +263,16 @@ _callback_priority_cmp(const void *_a, const void *_b) | |||
263 | a = EINA_INLIST_CONTAINER_GET(_a, Evas_Func_Node); | 263 | a = EINA_INLIST_CONTAINER_GET(_a, Evas_Func_Node); |
264 | b = EINA_INLIST_CONTAINER_GET(_b, Evas_Func_Node); | 264 | b = EINA_INLIST_CONTAINER_GET(_b, Evas_Func_Node); |
265 | if (a->priority < b->priority) | 265 | if (a->priority < b->priority) |
266 | return -1; | 266 | return -1; |
267 | else | 267 | else |
268 | return 1; | 268 | return 1; |
269 | } | 269 | } |
270 | 270 | ||
271 | EAPI void | 271 | EAPI void |
272 | evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) | 272 | evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) |
273 | { | 273 | { |
274 | evas_object_event_callback_priority_add(obj, type, | 274 | evas_object_event_callback_priority_add(obj, type, |
275 | EVAS_CALLBACK_PRIORITY_DEFAULT, func, data); | 275 | EVAS_CALLBACK_PRIORITY_DEFAULT, func, data); |
276 | } | 276 | } |
277 | 277 | ||
278 | EAPI void | 278 | EAPI void |
@@ -294,7 +294,7 @@ evas_object_event_callback_priority_add(Evas_Object *obj, Evas_Callback_Type typ | |||
294 | if (!obj->callbacks) return; | 294 | if (!obj->callbacks) return; |
295 | EVAS_MEMPOOL_PREP(_mp_cb, obj->callbacks, Evas_Callbacks); | 295 | EVAS_MEMPOOL_PREP(_mp_cb, obj->callbacks, Evas_Callbacks); |
296 | } | 296 | } |
297 | 297 | ||
298 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); | 298 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); |
299 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); | 299 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); |
300 | if (!fn) return; | 300 | if (!fn) return; |
@@ -305,8 +305,8 @@ evas_object_event_callback_priority_add(Evas_Object *obj, Evas_Callback_Type typ | |||
305 | fn->priority = priority; | 305 | fn->priority = priority; |
306 | 306 | ||
307 | obj->callbacks->callbacks = | 307 | obj->callbacks->callbacks = |
308 | eina_inlist_sorted_insert(obj->callbacks->callbacks, EINA_INLIST_GET(fn), | 308 | eina_inlist_sorted_insert(obj->callbacks->callbacks, EINA_INLIST_GET(fn), |
309 | _callback_priority_cmp); | 309 | _callback_priority_cmp); |
310 | } | 310 | } |
311 | 311 | ||
312 | EAPI void * | 312 | EAPI void * |
@@ -325,17 +325,17 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_O | |||
325 | 325 | ||
326 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) | 326 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) |
327 | { | 327 | { |
328 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) | 328 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) |
329 | { | 329 | { |
330 | void *tmp; | 330 | void *tmp; |
331 | 331 | ||
332 | tmp = fn->data; | 332 | tmp = fn->data; |
333 | fn->delete_me = 1; | 333 | fn->delete_me = 1; |
334 | obj->callbacks->deletions_waiting = 1; | 334 | obj->callbacks->deletions_waiting = 1; |
335 | if (!obj->callbacks->walking_list) | 335 | if (!obj->callbacks->walking_list) |
336 | evas_object_event_callback_clear(obj); | 336 | evas_object_event_callback_clear(obj); |
337 | return tmp; | 337 | return tmp; |
338 | } | 338 | } |
339 | } | 339 | } |
340 | return NULL; | 340 | return NULL; |
341 | } | 341 | } |
@@ -356,17 +356,17 @@ evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, E | |||
356 | 356 | ||
357 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) | 357 | EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn) |
358 | { | 358 | { |
359 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) | 359 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) |
360 | { | 360 | { |
361 | void *tmp; | 361 | void *tmp; |
362 | 362 | ||
363 | tmp = fn->data; | 363 | tmp = fn->data; |
364 | fn->delete_me = 1; | 364 | fn->delete_me = 1; |
365 | obj->callbacks->deletions_waiting = 1; | 365 | obj->callbacks->deletions_waiting = 1; |
366 | if (!obj->callbacks->walking_list) | 366 | if (!obj->callbacks->walking_list) |
367 | evas_object_event_callback_clear(obj); | 367 | evas_object_event_callback_clear(obj); |
368 | return tmp; | 368 | return tmp; |
369 | } | 369 | } |
370 | } | 370 | } |
371 | return NULL; | 371 | return NULL; |
372 | } | 372 | } |
@@ -375,7 +375,7 @@ EAPI void | |||
375 | evas_event_callback_add(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) | 375 | evas_event_callback_add(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) |
376 | { | 376 | { |
377 | evas_event_callback_priority_add(e, type, EVAS_CALLBACK_PRIORITY_DEFAULT, | 377 | evas_event_callback_priority_add(e, type, EVAS_CALLBACK_PRIORITY_DEFAULT, |
378 | func, data); | 378 | func, data); |
379 | } | 379 | } |
380 | 380 | ||
381 | EAPI void | 381 | EAPI void |
@@ -397,7 +397,7 @@ evas_event_callback_priority_add(Evas *e, Evas_Callback_Type type, Evas_Callback | |||
397 | if (!e->callbacks) return; | 397 | if (!e->callbacks) return; |
398 | EVAS_MEMPOOL_PREP(_mp_cb, e->callbacks, Evas_Callbacks); | 398 | EVAS_MEMPOOL_PREP(_mp_cb, e->callbacks, Evas_Callbacks); |
399 | } | 399 | } |
400 | 400 | ||
401 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); | 401 | EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, ); |
402 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); | 402 | fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node); |
403 | if (!fn) return; | 403 | if (!fn) return; |
@@ -408,7 +408,7 @@ evas_event_callback_priority_add(Evas *e, Evas_Callback_Type type, Evas_Callback | |||
408 | fn->priority = priority; | 408 | fn->priority = priority; |
409 | 409 | ||
410 | e->callbacks->callbacks = eina_inlist_sorted_insert(e->callbacks->callbacks, | 410 | e->callbacks->callbacks = eina_inlist_sorted_insert(e->callbacks->callbacks, |
411 | EINA_INLIST_GET(fn), _callback_priority_cmp); | 411 | EINA_INLIST_GET(fn), _callback_priority_cmp); |
412 | } | 412 | } |
413 | 413 | ||
414 | EAPI void * | 414 | EAPI void * |
@@ -427,17 +427,17 @@ evas_event_callback_del(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func) | |||
427 | 427 | ||
428 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) | 428 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) |
429 | { | 429 | { |
430 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) | 430 | if ((fn->func == func) && (fn->type == type) && (!fn->delete_me)) |
431 | { | 431 | { |
432 | void *data; | 432 | void *data; |
433 | 433 | ||
434 | data = fn->data; | 434 | data = fn->data; |
435 | fn->delete_me = 1; | 435 | fn->delete_me = 1; |
436 | e->callbacks->deletions_waiting = 1; | 436 | e->callbacks->deletions_waiting = 1; |
437 | if (!e->callbacks->walking_list) | 437 | if (!e->callbacks->walking_list) |
438 | evas_event_callback_clear(e); | 438 | evas_event_callback_clear(e); |
439 | return data; | 439 | return data; |
440 | } | 440 | } |
441 | } | 441 | } |
442 | return NULL; | 442 | return NULL; |
443 | } | 443 | } |
@@ -458,17 +458,17 @@ evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, Evas_Event_Cb fun | |||
458 | 458 | ||
459 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) | 459 | EINA_INLIST_FOREACH(e->callbacks->callbacks, fn) |
460 | { | 460 | { |
461 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) | 461 | if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) |
462 | { | 462 | { |
463 | void *tmp; | 463 | void *tmp; |
464 | 464 | ||
465 | tmp = fn->data; | 465 | tmp = fn->data; |
466 | fn->delete_me = 1; | 466 | fn->delete_me = 1; |
467 | e->callbacks->deletions_waiting = 1; | 467 | e->callbacks->deletions_waiting = 1; |
468 | if (!e->callbacks->walking_list) | 468 | if (!e->callbacks->walking_list) |
469 | evas_event_callback_clear(e); | 469 | evas_event_callback_clear(e); |
470 | return tmp; | 470 | return tmp; |
471 | } | 471 | } |
472 | } | 472 | } |
473 | return NULL; | 473 | return NULL; |
474 | } | 474 | } |
@@ -477,17 +477,17 @@ EAPI void | |||
477 | evas_post_event_callback_push(Evas *e, Evas_Object_Event_Post_Cb func, const void *data) | 477 | evas_post_event_callback_push(Evas *e, Evas_Object_Event_Post_Cb func, const void *data) |
478 | { | 478 | { |
479 | Evas_Post_Callback *pc; | 479 | Evas_Post_Callback *pc; |
480 | 480 | ||
481 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 481 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
482 | return; | 482 | return; |
483 | MAGIC_CHECK_END(); | 483 | MAGIC_CHECK_END(); |
484 | 484 | ||
485 | EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, ); | 485 | EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, ); |
486 | pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback); | 486 | pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback); |
487 | if (!pc) return; | 487 | if (!pc) return; |
488 | EVAS_MEMPOOL_PREP(_mp_pc, pc, Evas_Post_Callback); | 488 | EVAS_MEMPOOL_PREP(_mp_pc, pc, Evas_Post_Callback); |
489 | if (e->delete_me) return; | 489 | if (e->delete_me) return; |
490 | 490 | ||
491 | pc->func = func; | 491 | pc->func = func; |
492 | pc->data = data; | 492 | pc->data = data; |
493 | e->post_events = eina_list_prepend(e->post_events, pc); | 493 | e->post_events = eina_list_prepend(e->post_events, pc); |
@@ -498,11 +498,11 @@ evas_post_event_callback_remove(Evas *e, Evas_Object_Event_Post_Cb func) | |||
498 | { | 498 | { |
499 | Evas_Post_Callback *pc; | 499 | Evas_Post_Callback *pc; |
500 | Eina_List *l; | 500 | Eina_List *l; |
501 | 501 | ||
502 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 502 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
503 | return; | 503 | return; |
504 | MAGIC_CHECK_END(); | 504 | MAGIC_CHECK_END(); |
505 | 505 | ||
506 | EINA_LIST_FOREACH(e->post_events, l, pc) | 506 | EINA_LIST_FOREACH(e->post_events, l, pc) |
507 | { | 507 | { |
508 | if (pc->func == func) | 508 | if (pc->func == func) |
@@ -518,11 +518,11 @@ evas_post_event_callback_remove_full(Evas *e, Evas_Object_Event_Post_Cb func, co | |||
518 | { | 518 | { |
519 | Evas_Post_Callback *pc; | 519 | Evas_Post_Callback *pc; |
520 | Eina_List *l; | 520 | Eina_List *l; |
521 | 521 | ||
522 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 522 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
523 | return; | 523 | return; |
524 | MAGIC_CHECK_END(); | 524 | MAGIC_CHECK_END(); |
525 | 525 | ||
526 | EINA_LIST_FOREACH(e->post_events, l, pc) | 526 | EINA_LIST_FOREACH(e->post_events, l, pc) |
527 | { | 527 | { |
528 | if ((pc->func == func) && (pc->data == data)) | 528 | if ((pc->func == func) && (pc->data == data)) |
diff --git a/libraries/evas/src/lib/canvas/evas_events.c b/libraries/evas/src/lib/canvas/evas_events.c index 99ecf8c..9b7077e 100644 --- a/libraries/evas/src/lib/canvas/evas_events.c +++ b/libraries/evas/src/lib/canvas/evas_events.c | |||
@@ -1,6 +1,11 @@ | |||
1 | #include "evas_common.h" | 1 | #include "evas_common.h" |
2 | #include "evas_private.h" | 2 | #include "evas_private.h" |
3 | 3 | ||
4 | static Eina_List * | ||
5 | _evas_event_object_list_in_get(Evas *e, Eina_List *in, | ||
6 | const Eina_Inlist *list, Evas_Object *stop, | ||
7 | int x, int y, int *no_rep); | ||
8 | |||
4 | static void | 9 | static void |
5 | _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed) | 10 | _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed) |
6 | { | 11 | { |
@@ -16,13 +21,17 @@ _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_ | |||
16 | } | 21 | } |
17 | 22 | ||
18 | static Eina_List * | 23 | static Eina_List * |
19 | _evas_event_object_list_in_get(Evas *e, Eina_List *in, | 24 | _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in, |
20 | const Eina_Inlist *list, Evas_Object *stop, | 25 | const Eina_Inlist *list, Evas_Object *stop, |
21 | int x, int y, int *no_rep) | 26 | int x, int y, int *no_rep) |
22 | { | 27 | { |
23 | Evas_Object *obj; | 28 | Evas_Object *obj; |
29 | int inside; | ||
30 | |||
24 | if (!list) return in; | 31 | if (!list) return in; |
25 | EINA_INLIST_REVERSE_FOREACH(list, obj) | 32 | for (obj = _EINA_INLIST_CONTAINER(obj, list); |
33 | obj; | ||
34 | obj = _EINA_INLIST_CONTAINER(obj, EINA_INLIST_GET(obj)->prev)) | ||
26 | { | 35 | { |
27 | if (obj == stop) | 36 | if (obj == stop) |
28 | { | 37 | { |
@@ -37,9 +46,9 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
37 | if (obj->smart.smart) | 46 | if (obj->smart.smart) |
38 | { | 47 | { |
39 | int norep = 0; | 48 | int norep = 0; |
40 | int inside; | ||
41 | 49 | ||
42 | if (((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4))) | 50 | if ((obj->cur.usemap) && (obj->cur.map) && |
51 | (obj->cur.map->count == 4)) | ||
43 | { | 52 | { |
44 | inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); | 53 | inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); |
45 | if (inside) | 54 | if (inside) |
@@ -57,7 +66,8 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
57 | evas_object_smart_members_get_direct(obj), | 66 | evas_object_smart_members_get_direct(obj), |
58 | stop, | 67 | stop, |
59 | obj->cur.geometry.x + obj->cur.map->mx, | 68 | obj->cur.geometry.x + obj->cur.map->mx, |
60 | obj->cur.geometry.y + obj->cur.map->my, &norep); | 69 | obj->cur.geometry.y + obj->cur.map->my, |
70 | &norep); | ||
61 | } | 71 | } |
62 | } | 72 | } |
63 | } | 73 | } |
@@ -69,19 +79,24 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
69 | } | 79 | } |
70 | if (norep) | 80 | if (norep) |
71 | { | 81 | { |
72 | if (!obj->repeat_events) *no_rep = 1; | 82 | if (!obj->repeat_events) |
73 | return in; | 83 | { |
84 | *no_rep = 1; | ||
85 | return in; | ||
86 | } | ||
74 | } | 87 | } |
75 | } | 88 | } |
76 | else | 89 | else |
77 | { | 90 | { |
78 | int inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); | 91 | inside = evas_object_is_in_output_rect(obj, x, y, 1, 1); |
79 | 92 | ||
80 | if (((obj->cur.usemap) && (obj->cur.map) && (obj->cur.map->count == 4))) | 93 | if ((obj->cur.usemap) && (obj->cur.map) && |
94 | (obj->cur.map->count == 4)) | ||
81 | { | 95 | { |
82 | if ((inside) && (!evas_map_coords_get(obj->cur.map, x, y, | 96 | if ((inside) && |
83 | &(obj->cur.map->mx), | 97 | (!evas_map_coords_get(obj->cur.map, x, y, |
84 | &(obj->cur.map->my), 0))) | 98 | &(obj->cur.map->mx), |
99 | &(obj->cur.map->my), 0))) | ||
85 | { | 100 | { |
86 | inside = 0; | 101 | inside = 0; |
87 | } | 102 | } |
@@ -105,6 +120,16 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in, | |||
105 | return in; | 120 | return in; |
106 | } | 121 | } |
107 | 122 | ||
123 | static Eina_List * | ||
124 | _evas_event_object_list_in_get(Evas *e, Eina_List *in, | ||
125 | const Eina_Inlist *list, Evas_Object *stop, | ||
126 | int x, int y, int *no_rep) | ||
127 | { | ||
128 | if (!list) return NULL; | ||
129 | return _evas_event_object_list_raw_in_get(e, in, list->last, stop, | ||
130 | x, y, no_rep); | ||
131 | } | ||
132 | |||
108 | Eina_List * | 133 | Eina_List * |
109 | evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y) | 134 | evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y) |
110 | { | 135 | { |
@@ -136,6 +161,24 @@ evas_event_list_copy(Eina_List *list) | |||
136 | /* public functions */ | 161 | /* public functions */ |
137 | 162 | ||
138 | EAPI void | 163 | EAPI void |
164 | evas_event_default_flags_set(Evas *e, Evas_Event_Flags flags) | ||
165 | { | ||
166 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
167 | return; | ||
168 | MAGIC_CHECK_END(); | ||
169 | e->default_event_flags = flags; | ||
170 | } | ||
171 | |||
172 | EAPI Evas_Event_Flags | ||
173 | evas_event_default_flags_get(const Evas *e) | ||
174 | { | ||
175 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
176 | return EVAS_EVENT_FLAG_ON_HOLD; | ||
177 | MAGIC_CHECK_END(); | ||
178 | return e->default_event_flags; | ||
179 | } | ||
180 | |||
181 | EAPI void | ||
139 | evas_event_freeze(Evas *e) | 182 | evas_event_freeze(Evas *e) |
140 | { | 183 | { |
141 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 184 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
@@ -197,6 +240,8 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
197 | Eina_List *l, *copy; | 240 | Eina_List *l, *copy; |
198 | Evas_Event_Mouse_Down ev; | 241 | Evas_Event_Mouse_Down ev; |
199 | Evas_Object *obj; | 242 | Evas_Object *obj; |
243 | int addgrab = 0; | ||
244 | int event_id = 0; | ||
200 | 245 | ||
201 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 246 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
202 | return; | 247 | return; |
@@ -205,12 +250,14 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
205 | if ((b < 1) || (b > 32)) return; | 250 | if ((b < 1) || (b > 32)) return; |
206 | 251 | ||
207 | e->pointer.button |= (1 << (b - 1)); | 252 | e->pointer.button |= (1 << (b - 1)); |
253 | e->pointer.downs++; | ||
208 | 254 | ||
209 | if (e->events_frozen > 0) return; | 255 | if (e->events_frozen > 0) return; |
210 | e->last_timestamp = timestamp; | 256 | e->last_timestamp = timestamp; |
211 | 257 | ||
212 | _evas_object_event_new(); | 258 | _evas_object_event_new(); |
213 | 259 | ||
260 | event_id = _evas_event_counter; | ||
214 | ev.button = b; | 261 | ev.button = b; |
215 | ev.output.x = e->pointer.x; | 262 | ev.output.x = e->pointer.x; |
216 | ev.output.y = e->pointer.y; | 263 | ev.output.y = e->pointer.y; |
@@ -221,7 +268,7 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
221 | ev.locks = &(e->locks); | 268 | ev.locks = &(e->locks); |
222 | ev.flags = flags; | 269 | ev.flags = flags; |
223 | ev.timestamp = timestamp; | 270 | ev.timestamp = timestamp; |
224 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 271 | ev.event_flags = e->default_event_flags; |
225 | 272 | ||
226 | _evas_walk(e); | 273 | _evas_walk(e); |
227 | /* append new touch point to the touch point list */ | 274 | /* append new touch point to the touch point list */ |
@@ -238,14 +285,23 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
238 | e->pointer.object.in = eina_list_free(e->pointer.object.in); | 285 | e->pointer.object.in = eina_list_free(e->pointer.object.in); |
239 | /* and set up the new one */ | 286 | /* and set up the new one */ |
240 | e->pointer.object.in = ins; | 287 | e->pointer.object.in = ins; |
288 | /* adjust grabbed count by the nuymber of currently held down | ||
289 | * fingers/buttons */ | ||
290 | if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1; | ||
241 | } | 291 | } |
242 | copy = evas_event_list_copy(e->pointer.object.in); | 292 | copy = evas_event_list_copy(e->pointer.object.in); |
243 | EINA_LIST_FOREACH(copy, l, obj) | 293 | EINA_LIST_FOREACH(copy, l, obj) |
244 | { | 294 | { |
245 | if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) | 295 | if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) || |
296 | (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) | ||
246 | { | 297 | { |
247 | obj->mouse_grabbed++; | 298 | obj->mouse_grabbed += addgrab + 1; |
248 | e->pointer.mouse_grabbed++; | 299 | e->pointer.mouse_grabbed += addgrab + 1; |
300 | if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) | ||
301 | { | ||
302 | e->pointer.nogrep++; | ||
303 | break; | ||
304 | } | ||
249 | } | 305 | } |
250 | } | 306 | } |
251 | EINA_LIST_FOREACH(copy, l, obj) | 307 | EINA_LIST_FOREACH(copy, l, obj) |
@@ -256,8 +312,10 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int | |||
256 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); | 312 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); |
257 | 313 | ||
258 | if (e->events_frozen <= 0) | 314 | if (e->events_frozen <= 0) |
259 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev); | 315 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id); |
260 | if (e->delete_me) break; | 316 | if (e->delete_me) break; |
317 | if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) | ||
318 | break; | ||
261 | } | 319 | } |
262 | if (copy) eina_list_free(copy); | 320 | if (copy) eina_list_free(copy); |
263 | e->last_mouse_down_counter++; | 321 | e->last_mouse_down_counter++; |
@@ -274,9 +332,11 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
274 | Evas_Event_Mouse_Out ev; | 332 | Evas_Event_Mouse_Out ev; |
275 | Evas_Object *obj; | 333 | Evas_Object *obj; |
276 | int post_called = 0; | 334 | int post_called = 0; |
335 | int event_id = 0; | ||
277 | 336 | ||
278 | _evas_object_event_new(); | 337 | _evas_object_event_new(); |
279 | 338 | ||
339 | event_id = _evas_event_counter; | ||
280 | ev.buttons = e->pointer.button; | 340 | ev.buttons = e->pointer.button; |
281 | ev.output.x = e->pointer.x; | 341 | ev.output.x = e->pointer.x; |
282 | ev.output.y = e->pointer.y; | 342 | ev.output.y = e->pointer.y; |
@@ -286,7 +346,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
286 | ev.modifiers = &(e->modifiers); | 346 | ev.modifiers = &(e->modifiers); |
287 | ev.locks = &(e->locks); | 347 | ev.locks = &(e->locks); |
288 | ev.timestamp = timestamp; | 348 | ev.timestamp = timestamp; |
289 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 349 | ev.event_flags = e->default_event_flags; |
290 | 350 | ||
291 | /* get new list of ins */ | 351 | /* get new list of ins */ |
292 | ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); | 352 | ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); |
@@ -304,7 +364,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
304 | { | 364 | { |
305 | obj->mouse_in = 0; | 365 | obj->mouse_in = 0; |
306 | if (e->events_frozen <= 0) | 366 | if (e->events_frozen <= 0) |
307 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); | 367 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); |
308 | } | 368 | } |
309 | } | 369 | } |
310 | if (e->delete_me) break; | 370 | if (e->delete_me) break; |
@@ -319,6 +379,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
319 | 379 | ||
320 | _evas_object_event_new(); | 380 | _evas_object_event_new(); |
321 | 381 | ||
382 | event_id = _evas_event_counter; | ||
322 | ev_in.buttons = e->pointer.button; | 383 | ev_in.buttons = e->pointer.button; |
323 | ev_in.output.x = e->pointer.x; | 384 | ev_in.output.x = e->pointer.x; |
324 | ev_in.output.y = e->pointer.y; | 385 | ev_in.output.y = e->pointer.y; |
@@ -328,7 +389,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
328 | ev_in.modifiers = &(e->modifiers); | 389 | ev_in.modifiers = &(e->modifiers); |
329 | ev_in.locks = &(e->locks); | 390 | ev_in.locks = &(e->locks); |
330 | ev_in.timestamp = timestamp; | 391 | ev_in.timestamp = timestamp; |
331 | ev_in.event_flags = EVAS_EVENT_FLAG_NONE; | 392 | ev_in.event_flags = e->default_event_flags; |
332 | 393 | ||
333 | EINA_LIST_FOREACH(ins, l, obj_itr) | 394 | EINA_LIST_FOREACH(ins, l, obj_itr) |
334 | { | 395 | { |
@@ -341,7 +402,7 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data) | |||
341 | { | 402 | { |
342 | obj_itr->mouse_in = 1; | 403 | obj_itr->mouse_in = 1; |
343 | if (e->events_frozen <= 0) | 404 | if (e->events_frozen <= 0) |
344 | evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in); | 405 | evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id); |
345 | } | 406 | } |
346 | } | 407 | } |
347 | if (e->delete_me) break; | 408 | if (e->delete_me) break; |
@@ -383,6 +444,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
383 | if ((b < 1) || (b > 32)) return; | 444 | if ((b < 1) || (b > 32)) return; |
384 | 445 | ||
385 | e->pointer.button &= ~(1 << (b - 1)); | 446 | e->pointer.button &= ~(1 << (b - 1)); |
447 | e->pointer.downs--; | ||
386 | 448 | ||
387 | if (e->events_frozen > 0) return; | 449 | if (e->events_frozen > 0) return; |
388 | e->last_timestamp = timestamp; | 450 | e->last_timestamp = timestamp; |
@@ -390,9 +452,11 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
390 | { | 452 | { |
391 | Evas_Event_Mouse_Up ev; | 453 | Evas_Event_Mouse_Up ev; |
392 | Evas_Object *obj; | 454 | Evas_Object *obj; |
455 | int event_id = 0; | ||
393 | 456 | ||
394 | _evas_object_event_new(); | 457 | _evas_object_event_new(); |
395 | 458 | ||
459 | event_id = _evas_event_counter; | ||
396 | ev.button = b; | 460 | ev.button = b; |
397 | ev.output.x = e->pointer.x; | 461 | ev.output.x = e->pointer.x; |
398 | ev.output.y = e->pointer.y; | 462 | ev.output.y = e->pointer.y; |
@@ -403,7 +467,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
403 | ev.locks = &(e->locks); | 467 | ev.locks = &(e->locks); |
404 | ev.flags = flags; | 468 | ev.flags = flags; |
405 | ev.timestamp = timestamp; | 469 | ev.timestamp = timestamp; |
406 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 470 | ev.event_flags = e->default_event_flags; |
407 | 471 | ||
408 | _evas_walk(e); | 472 | _evas_walk(e); |
409 | /* update released touch point */ | 473 | /* update released touch point */ |
@@ -414,7 +478,7 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
414 | ev.canvas.x = e->pointer.x; | 478 | ev.canvas.x = e->pointer.x; |
415 | ev.canvas.y = e->pointer.y; | 479 | ev.canvas.y = e->pointer.y; |
416 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); | 480 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); |
417 | if ((obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) && | 481 | if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) && |
418 | (obj->mouse_grabbed > 0)) | 482 | (obj->mouse_grabbed > 0)) |
419 | { | 483 | { |
420 | obj->mouse_grabbed--; | 484 | obj->mouse_grabbed--; |
@@ -423,9 +487,14 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
423 | if (!obj->delete_me) | 487 | if (!obj->delete_me) |
424 | { | 488 | { |
425 | if (e->events_frozen <= 0) | 489 | if (e->events_frozen <= 0) |
426 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev); | 490 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id); |
427 | } | 491 | } |
428 | if (e->delete_me) break; | 492 | if (e->delete_me) break; |
493 | if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) | ||
494 | { | ||
495 | if (e->pointer.nogrep > 0) e->pointer.nogrep--; | ||
496 | break; | ||
497 | } | ||
429 | } | 498 | } |
430 | if (copy) copy = eina_list_free(copy); | 499 | if (copy) copy = eina_list_free(copy); |
431 | e->last_mouse_up_counter++; | 500 | e->last_mouse_up_counter++; |
@@ -442,9 +511,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t | |||
442 | ERR("BUG? e->pointer.mouse_grabbed (=%d) < 0!", | 511 | ERR("BUG? e->pointer.mouse_grabbed (=%d) < 0!", |
443 | e->pointer.mouse_grabbed); | 512 | e->pointer.mouse_grabbed); |
444 | } | 513 | } |
445 | /* remove released touch point from the touch point list */ | 514 | /* remove released touch point from the touch point list */ |
446 | _evas_touch_point_remove(e, 0); | 515 | _evas_touch_point_remove(e, 0); |
447 | 516 | ||
448 | _evas_unwalk(e); | 517 | _evas_unwalk(e); |
449 | } | 518 | } |
450 | 519 | ||
@@ -465,6 +534,7 @@ evas_event_feed_mouse_cancel(Evas *e, unsigned int timestamp, const void *data) | |||
465 | if ((e->pointer.button & (1 << i))) | 534 | if ((e->pointer.button & (1 << i))) |
466 | evas_event_feed_mouse_up(e, i + 1, 0, timestamp, data); | 535 | evas_event_feed_mouse_up(e, i + 1, 0, timestamp, data); |
467 | } | 536 | } |
537 | // FIXME: multi cancel too? | ||
468 | _evas_unwalk(e); | 538 | _evas_unwalk(e); |
469 | } | 539 | } |
470 | 540 | ||
@@ -474,6 +544,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
474 | Eina_List *l, *copy; | 544 | Eina_List *l, *copy; |
475 | Evas_Event_Mouse_Wheel ev; | 545 | Evas_Event_Mouse_Wheel ev; |
476 | Evas_Object *obj; | 546 | Evas_Object *obj; |
547 | int event_id = 0; | ||
477 | 548 | ||
478 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 549 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
479 | return; | 550 | return; |
@@ -484,6 +555,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
484 | 555 | ||
485 | _evas_object_event_new(); | 556 | _evas_object_event_new(); |
486 | 557 | ||
558 | event_id = _evas_event_counter; | ||
487 | ev.direction = direction; | 559 | ev.direction = direction; |
488 | ev.z = z; | 560 | ev.z = z; |
489 | ev.output.x = e->pointer.x; | 561 | ev.output.x = e->pointer.x; |
@@ -494,7 +566,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
494 | ev.modifiers = &(e->modifiers); | 566 | ev.modifiers = &(e->modifiers); |
495 | ev.locks = &(e->locks); | 567 | ev.locks = &(e->locks); |
496 | ev.timestamp = timestamp; | 568 | ev.timestamp = timestamp; |
497 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 569 | ev.event_flags = e->default_event_flags; |
498 | 570 | ||
499 | _evas_walk(e); | 571 | _evas_walk(e); |
500 | copy = evas_event_list_copy(e->pointer.object.in); | 572 | copy = evas_event_list_copy(e->pointer.object.in); |
@@ -505,7 +577,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
505 | ev.canvas.y = e->pointer.y; | 577 | ev.canvas.y = e->pointer.y; |
506 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); | 578 | _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed); |
507 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) | 579 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) |
508 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev); | 580 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id); |
509 | if (e->delete_me) break; | 581 | if (e->delete_me) break; |
510 | } | 582 | } |
511 | if (copy) copy = eina_list_free(copy); | 583 | if (copy) copy = eina_list_free(copy); |
@@ -517,6 +589,7 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam | |||
517 | EAPI void | 589 | EAPI void |
518 | evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data) | 590 | evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data) |
519 | { | 591 | { |
592 | Evas_Object *nogrep_obj = NULL; | ||
520 | int px, py; | 593 | int px, py; |
521 | //// Evas_Coord pcx, pcy; | 594 | //// Evas_Coord pcx, pcy; |
522 | 595 | ||
@@ -553,9 +626,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
553 | { | 626 | { |
554 | Evas_Event_Mouse_Move ev; | 627 | Evas_Event_Mouse_Move ev; |
555 | Evas_Object *obj; | 628 | Evas_Object *obj; |
629 | int event_id = 0; | ||
556 | 630 | ||
557 | _evas_object_event_new(); | 631 | _evas_object_event_new(); |
558 | 632 | ||
633 | event_id = _evas_event_counter; | ||
559 | ev.buttons = e->pointer.button; | 634 | ev.buttons = e->pointer.button; |
560 | ev.cur.output.x = e->pointer.x; | 635 | ev.cur.output.x = e->pointer.x; |
561 | ev.cur.output.y = e->pointer.y; | 636 | ev.cur.output.y = e->pointer.y; |
@@ -569,7 +644,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
569 | ev.modifiers = &(e->modifiers); | 644 | ev.modifiers = &(e->modifiers); |
570 | ev.locks = &(e->locks); | 645 | ev.locks = &(e->locks); |
571 | ev.timestamp = timestamp; | 646 | ev.timestamp = timestamp; |
572 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 647 | ev.event_flags = e->default_event_flags; |
573 | copy = evas_event_list_copy(e->pointer.object.in); | 648 | copy = evas_event_list_copy(e->pointer.object.in); |
574 | EINA_LIST_FOREACH(copy, l, obj) | 649 | EINA_LIST_FOREACH(copy, l, obj) |
575 | { | 650 | { |
@@ -586,19 +661,28 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
586 | (!obj->clip.clipees)) | 661 | (!obj->clip.clipees)) |
587 | { | 662 | { |
588 | if ((px != x) || (py != y)) | 663 | if ((px != x) || (py != y)) |
589 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev); | 664 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); |
590 | } | 665 | } |
591 | else | 666 | else |
592 | outs = eina_list_append(outs, obj); | 667 | outs = eina_list_append(outs, obj); |
668 | if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) && | ||
669 | (e->pointer.nogrep > 0)) | ||
670 | { | ||
671 | eina_list_free(copy); | ||
672 | nogrep_obj = obj; | ||
673 | goto nogrep; | ||
674 | } | ||
593 | if (e->delete_me) break; | 675 | if (e->delete_me) break; |
594 | } | 676 | } |
595 | _evas_post_event_callback_call(e); | 677 | _evas_post_event_callback_call(e); |
596 | } | 678 | } |
597 | { | 679 | { |
598 | Evas_Event_Mouse_Out ev; | 680 | Evas_Event_Mouse_Out ev; |
681 | int event_id = 0; | ||
599 | 682 | ||
600 | _evas_object_event_new(); | 683 | _evas_object_event_new(); |
601 | 684 | ||
685 | event_id = _evas_event_counter; | ||
602 | ev.buttons = e->pointer.button; | 686 | ev.buttons = e->pointer.button; |
603 | ev.output.x = e->pointer.x; | 687 | ev.output.x = e->pointer.x; |
604 | ev.output.y = e->pointer.y; | 688 | ev.output.y = e->pointer.y; |
@@ -608,7 +692,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
608 | ev.modifiers = &(e->modifiers); | 692 | ev.modifiers = &(e->modifiers); |
609 | ev.locks = &(e->locks); | 693 | ev.locks = &(e->locks); |
610 | ev.timestamp = timestamp; | 694 | ev.timestamp = timestamp; |
611 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 695 | ev.event_flags = e->default_event_flags; |
612 | 696 | ||
613 | if (copy) eina_list_free(copy); | 697 | if (copy) eina_list_free(copy); |
614 | while (outs) | 698 | while (outs) |
@@ -629,7 +713,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
629 | if (!obj->delete_me) | 713 | if (!obj->delete_me) |
630 | { | 714 | { |
631 | if (e->events_frozen <= 0) | 715 | if (e->events_frozen <= 0) |
632 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); | 716 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); |
633 | } | 717 | } |
634 | } | 718 | } |
635 | } | 719 | } |
@@ -645,9 +729,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
645 | Evas_Event_Mouse_Out ev2; | 729 | Evas_Event_Mouse_Out ev2; |
646 | Evas_Event_Mouse_In ev3; | 730 | Evas_Event_Mouse_In ev3; |
647 | Evas_Object *obj; | 731 | Evas_Object *obj; |
732 | int event_id = 0, event_id2 = 0; | ||
648 | 733 | ||
649 | _evas_object_event_new(); | 734 | _evas_object_event_new(); |
650 | 735 | ||
736 | event_id = _evas_event_counter; | ||
651 | ev.buttons = e->pointer.button; | 737 | ev.buttons = e->pointer.button; |
652 | ev.cur.output.x = e->pointer.x; | 738 | ev.cur.output.x = e->pointer.x; |
653 | ev.cur.output.y = e->pointer.y; | 739 | ev.cur.output.y = e->pointer.y; |
@@ -661,7 +747,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
661 | ev.modifiers = &(e->modifiers); | 747 | ev.modifiers = &(e->modifiers); |
662 | ev.locks = &(e->locks); | 748 | ev.locks = &(e->locks); |
663 | ev.timestamp = timestamp; | 749 | ev.timestamp = timestamp; |
664 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 750 | ev.event_flags = e->default_event_flags; |
665 | 751 | ||
666 | ev2.buttons = e->pointer.button; | 752 | ev2.buttons = e->pointer.button; |
667 | ev2.output.x = e->pointer.x; | 753 | ev2.output.x = e->pointer.x; |
@@ -672,7 +758,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
672 | ev2.modifiers = &(e->modifiers); | 758 | ev2.modifiers = &(e->modifiers); |
673 | ev2.locks = &(e->locks); | 759 | ev2.locks = &(e->locks); |
674 | ev2.timestamp = timestamp; | 760 | ev2.timestamp = timestamp; |
675 | ev2.event_flags = EVAS_EVENT_FLAG_NONE; | 761 | ev2.event_flags = e->default_event_flags; |
676 | 762 | ||
677 | ev3.buttons = e->pointer.button; | 763 | ev3.buttons = e->pointer.button; |
678 | ev3.output.x = e->pointer.x; | 764 | ev3.output.x = e->pointer.x; |
@@ -683,7 +769,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
683 | ev3.modifiers = &(e->modifiers); | 769 | ev3.modifiers = &(e->modifiers); |
684 | ev3.locks = &(e->locks); | 770 | ev3.locks = &(e->locks); |
685 | ev3.timestamp = timestamp; | 771 | ev3.timestamp = timestamp; |
686 | ev3.event_flags = EVAS_EVENT_FLAG_NONE; | 772 | ev3.event_flags = e->default_event_flags; |
687 | 773 | ||
688 | /* get all new in objects */ | 774 | /* get all new in objects */ |
689 | ins = evas_event_objects_event_list(e, NULL, x, y); | 775 | ins = evas_event_objects_event_list(e, NULL, x, y); |
@@ -711,7 +797,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
711 | ev.cur.canvas.x = e->pointer.x; | 797 | ev.cur.canvas.x = e->pointer.x; |
712 | ev.cur.canvas.y = e->pointer.y; | 798 | ev.cur.canvas.y = e->pointer.y; |
713 | _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); | 799 | _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); |
714 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev); | 800 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); |
715 | } | 801 | } |
716 | } | 802 | } |
717 | /* otherwise it has left the object */ | 803 | /* otherwise it has left the object */ |
@@ -724,7 +810,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
724 | ev2.canvas.y = e->pointer.y; | 810 | ev2.canvas.y = e->pointer.y; |
725 | _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); | 811 | _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); |
726 | if (e->events_frozen <= 0) | 812 | if (e->events_frozen <= 0) |
727 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2); | 813 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id); |
728 | } | 814 | } |
729 | } | 815 | } |
730 | if (e->delete_me) break; | 816 | if (e->delete_me) break; |
@@ -733,6 +819,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
733 | 819 | ||
734 | _evas_object_event_new(); | 820 | _evas_object_event_new(); |
735 | 821 | ||
822 | event_id2 = _evas_event_counter; | ||
736 | if (copy) copy = eina_list_free(copy); | 823 | if (copy) copy = eina_list_free(copy); |
737 | /* go thru our current list of ins */ | 824 | /* go thru our current list of ins */ |
738 | EINA_LIST_FOREACH(ins, l, obj) | 825 | EINA_LIST_FOREACH(ins, l, obj) |
@@ -747,7 +834,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
747 | { | 834 | { |
748 | obj->mouse_in = 1; | 835 | obj->mouse_in = 1; |
749 | if (e->events_frozen <= 0) | 836 | if (e->events_frozen <= 0) |
750 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3); | 837 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2); |
751 | } | 838 | } |
752 | } | 839 | } |
753 | if (e->delete_me) break; | 840 | if (e->delete_me) break; |
@@ -766,6 +853,160 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const | |||
766 | } | 853 | } |
767 | _evas_post_event_callback_call(e); | 854 | _evas_post_event_callback_call(e); |
768 | } | 855 | } |
856 | _evas_unwalk(e); | ||
857 | return; | ||
858 | nogrep: | ||
859 | { | ||
860 | Eina_List *ins = NULL; | ||
861 | Eina_List *newin = NULL; | ||
862 | Eina_List *l, *copy, *lst = NULL; | ||
863 | Evas_Event_Mouse_Move ev; | ||
864 | Evas_Event_Mouse_Out ev2; | ||
865 | Evas_Event_Mouse_In ev3; | ||
866 | Evas_Object *obj, *below_obj; | ||
867 | int event_id = 0, event_id2 = 0; | ||
868 | int norep = 0, breaknext = 0; | ||
869 | |||
870 | _evas_object_event_new(); | ||
871 | |||
872 | event_id = _evas_event_counter; | ||
873 | ev.buttons = e->pointer.button; | ||
874 | ev.cur.output.x = e->pointer.x; | ||
875 | ev.cur.output.y = e->pointer.y; | ||
876 | ev.cur.canvas.x = e->pointer.x; | ||
877 | ev.cur.canvas.y = e->pointer.y; | ||
878 | ev.prev.output.x = px; | ||
879 | ev.prev.output.y = py; | ||
880 | ev.prev.canvas.x = px; | ||
881 | ev.prev.canvas.y = py; | ||
882 | ev.data = (void *)data; | ||
883 | ev.modifiers = &(e->modifiers); | ||
884 | ev.locks = &(e->locks); | ||
885 | ev.timestamp = timestamp; | ||
886 | ev.event_flags = e->default_event_flags; | ||
887 | |||
888 | ev2.buttons = e->pointer.button; | ||
889 | ev2.output.x = e->pointer.x; | ||
890 | ev2.output.y = e->pointer.y; | ||
891 | ev2.canvas.x = e->pointer.x; | ||
892 | ev2.canvas.y = e->pointer.y; | ||
893 | ev2.data = (void *)data; | ||
894 | ev2.modifiers = &(e->modifiers); | ||
895 | ev2.locks = &(e->locks); | ||
896 | ev2.timestamp = timestamp; | ||
897 | ev2.event_flags = e->default_event_flags; | ||
898 | |||
899 | ev3.buttons = e->pointer.button; | ||
900 | ev3.output.x = e->pointer.x; | ||
901 | ev3.output.y = e->pointer.y; | ||
902 | ev3.canvas.x = e->pointer.x; | ||
903 | ev3.canvas.y = e->pointer.y; | ||
904 | ev3.data = (void *)data; | ||
905 | ev3.modifiers = &(e->modifiers); | ||
906 | ev3.locks = &(e->locks); | ||
907 | ev3.timestamp = timestamp; | ||
908 | ev3.event_flags = e->default_event_flags; | ||
909 | |||
910 | /* go thru old list of in objects */ | ||
911 | copy = evas_event_list_copy(e->pointer.object.in); | ||
912 | EINA_LIST_FOREACH(copy, l, obj) | ||
913 | { | ||
914 | if (breaknext) | ||
915 | { | ||
916 | lst = l; | ||
917 | break; | ||
918 | } | ||
919 | if (obj == nogrep_obj) breaknext = 1; | ||
920 | } | ||
921 | |||
922 | /* get all new in objects */ | ||
923 | below_obj = evas_object_below_get(nogrep_obj); | ||
924 | if (below_obj) | ||
925 | ins = _evas_event_object_list_raw_in_get(e, NULL, | ||
926 | EINA_INLIST_GET(below_obj), NULL, | ||
927 | e->pointer.x, e->pointer.y, | ||
928 | &norep); | ||
929 | EINA_LIST_FOREACH(copy, l, obj) | ||
930 | { | ||
931 | newin = eina_list_append(newin, obj); | ||
932 | if (obj == nogrep_obj) break; | ||
933 | } | ||
934 | EINA_LIST_FOREACH(ins, l, obj) | ||
935 | { | ||
936 | newin = eina_list_append(newin, obj); | ||
937 | } | ||
938 | |||
939 | EINA_LIST_FOREACH(lst, l, obj) | ||
940 | { | ||
941 | /* if its under the pointer and its visible and its in the new */ | ||
942 | /* in list */ | ||
943 | // FIXME: i don't think we need this | ||
944 | // evas_object_clip_recalc(obj); | ||
945 | if ((e->events_frozen <= 0) && | ||
946 | evas_object_is_in_output_rect(obj, x, y, 1, 1) && | ||
947 | (evas_object_clippers_is_visible(obj) || | ||
948 | obj->mouse_grabbed) && | ||
949 | eina_list_data_find(newin, obj) && | ||
950 | (!evas_event_passes_through(obj)) && | ||
951 | (!evas_event_freezes_through(obj)) && | ||
952 | (!obj->clip.clipees) && | ||
953 | ((!obj->precise_is_inside) || evas_object_is_inside(obj, x, y)) | ||
954 | ) | ||
955 | { | ||
956 | if ((px != x) || (py != y)) | ||
957 | { | ||
958 | ev.cur.canvas.x = e->pointer.x; | ||
959 | ev.cur.canvas.y = e->pointer.y; | ||
960 | _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed); | ||
961 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id); | ||
962 | } | ||
963 | } | ||
964 | /* otherwise it has left the object */ | ||
965 | else | ||
966 | { | ||
967 | if (obj->mouse_in) | ||
968 | { | ||
969 | obj->mouse_in = 0; | ||
970 | ev2.canvas.x = e->pointer.x; | ||
971 | ev2.canvas.y = e->pointer.y; | ||
972 | _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed); | ||
973 | if (e->events_frozen <= 0) | ||
974 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id); | ||
975 | } | ||
976 | } | ||
977 | if (e->delete_me) break; | ||
978 | } | ||
979 | _evas_post_event_callback_call(e); | ||
980 | |||
981 | _evas_object_event_new(); | ||
982 | |||
983 | event_id2 = _evas_event_counter; | ||
984 | if (copy) copy = eina_list_free(copy); | ||
985 | /* go thru our current list of ins */ | ||
986 | EINA_LIST_FOREACH(newin, l, obj) | ||
987 | { | ||
988 | ev3.canvas.x = e->pointer.x; | ||
989 | ev3.canvas.y = e->pointer.y; | ||
990 | _evas_event_havemap_adjust(obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed); | ||
991 | /* if its not in the old list of ins send an enter event */ | ||
992 | if (!eina_list_data_find(e->pointer.object.in, obj)) | ||
993 | { | ||
994 | if (!obj->mouse_in) | ||
995 | { | ||
996 | obj->mouse_in = 1; | ||
997 | if (e->events_frozen <= 0) | ||
998 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2); | ||
999 | } | ||
1000 | } | ||
1001 | if (e->delete_me) break; | ||
1002 | } | ||
1003 | /* free our old list of ins */ | ||
1004 | eina_list_free(e->pointer.object.in); | ||
1005 | /* and set up the new one */ | ||
1006 | e->pointer.object.in = newin; | ||
1007 | |||
1008 | _evas_post_event_callback_call(e); | ||
1009 | } | ||
769 | _evas_unwalk(e); | 1010 | _evas_unwalk(e); |
770 | } | 1011 | } |
771 | 1012 | ||
@@ -776,6 +1017,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
776 | Eina_List *l; | 1017 | Eina_List *l; |
777 | Evas_Event_Mouse_In ev; | 1018 | Evas_Event_Mouse_In ev; |
778 | Evas_Object *obj; | 1019 | Evas_Object *obj; |
1020 | int event_id = 0; | ||
779 | 1021 | ||
780 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1022 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
781 | return; | 1023 | return; |
@@ -789,6 +1031,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
789 | 1031 | ||
790 | _evas_object_event_new(); | 1032 | _evas_object_event_new(); |
791 | 1033 | ||
1034 | event_id = _evas_event_counter; | ||
792 | ev.buttons = e->pointer.button; | 1035 | ev.buttons = e->pointer.button; |
793 | ev.output.x = e->pointer.x; | 1036 | ev.output.x = e->pointer.x; |
794 | ev.output.y = e->pointer.y; | 1037 | ev.output.y = e->pointer.y; |
@@ -798,7 +1041,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
798 | ev.modifiers = &(e->modifiers); | 1041 | ev.modifiers = &(e->modifiers); |
799 | ev.locks = &(e->locks); | 1042 | ev.locks = &(e->locks); |
800 | ev.timestamp = timestamp; | 1043 | ev.timestamp = timestamp; |
801 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1044 | ev.event_flags = e->default_event_flags; |
802 | 1045 | ||
803 | _evas_walk(e); | 1046 | _evas_walk(e); |
804 | /* get new list of ins */ | 1047 | /* get new list of ins */ |
@@ -814,7 +1057,7 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data) | |||
814 | { | 1057 | { |
815 | obj->mouse_in = 1; | 1058 | obj->mouse_in = 1; |
816 | if (e->events_frozen <= 0) | 1059 | if (e->events_frozen <= 0) |
817 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev); | 1060 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id); |
818 | } | 1061 | } |
819 | } | 1062 | } |
820 | if (e->delete_me) break; | 1063 | if (e->delete_me) break; |
@@ -832,6 +1075,7 @@ EAPI void | |||
832 | evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | 1075 | evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) |
833 | { | 1076 | { |
834 | Evas_Event_Mouse_Out ev; | 1077 | Evas_Event_Mouse_Out ev; |
1078 | int event_id = 0; | ||
835 | 1079 | ||
836 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1080 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
837 | return; | 1081 | return; |
@@ -843,6 +1087,7 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | |||
843 | 1087 | ||
844 | _evas_object_event_new(); | 1088 | _evas_object_event_new(); |
845 | 1089 | ||
1090 | event_id = _evas_event_counter; | ||
846 | ev.buttons = e->pointer.button; | 1091 | ev.buttons = e->pointer.button; |
847 | ev.output.x = e->pointer.x; | 1092 | ev.output.x = e->pointer.x; |
848 | ev.output.y = e->pointer.y; | 1093 | ev.output.y = e->pointer.y; |
@@ -852,11 +1097,10 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | |||
852 | ev.modifiers = &(e->modifiers); | 1097 | ev.modifiers = &(e->modifiers); |
853 | ev.locks = &(e->locks); | 1098 | ev.locks = &(e->locks); |
854 | ev.timestamp = timestamp; | 1099 | ev.timestamp = timestamp; |
855 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1100 | ev.event_flags = e->default_event_flags; |
856 | 1101 | ||
857 | _evas_walk(e); | 1102 | _evas_walk(e); |
858 | /* if our mouse button is grabbed to any objects */ | 1103 | /* if our mouse button is inside any objects */ |
859 | if (e->pointer.mouse_grabbed == 0) | ||
860 | { | 1104 | { |
861 | /* go thru old list of in objects */ | 1105 | /* go thru old list of in objects */ |
862 | Eina_List *l, *copy; | 1106 | Eina_List *l, *copy; |
@@ -874,14 +1118,16 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data) | |||
874 | if (!obj->delete_me) | 1118 | if (!obj->delete_me) |
875 | { | 1119 | { |
876 | if (e->events_frozen <= 0) | 1120 | if (e->events_frozen <= 0) |
877 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev); | 1121 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id); |
878 | } | 1122 | } |
1123 | obj->mouse_grabbed = 0; | ||
879 | } | 1124 | } |
880 | if (e->delete_me) break; | 1125 | if (e->delete_me) break; |
881 | } | 1126 | } |
882 | if (copy) copy = eina_list_free(copy); | 1127 | if (copy) copy = eina_list_free(copy); |
883 | /* free our old list of ins */ | 1128 | /* free our old list of ins */ |
884 | e->pointer.object.in = eina_list_free(e->pointer.object.in); | 1129 | e->pointer.object.in = eina_list_free(e->pointer.object.in); |
1130 | e->pointer.mouse_grabbed = 0; | ||
885 | _evas_post_event_callback_call(e); | 1131 | _evas_post_event_callback_call(e); |
886 | } | 1132 | } |
887 | _evas_unwalk(e); | 1133 | _evas_unwalk(e); |
@@ -899,16 +1145,20 @@ evas_event_feed_multi_down(Evas *e, | |||
899 | Eina_List *l, *copy; | 1145 | Eina_List *l, *copy; |
900 | Evas_Event_Multi_Down ev; | 1146 | Evas_Event_Multi_Down ev; |
901 | Evas_Object *obj; | 1147 | Evas_Object *obj; |
1148 | int addgrab = 0; | ||
1149 | int event_id = 0; | ||
902 | 1150 | ||
903 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1151 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
904 | return; | 1152 | return; |
905 | MAGIC_CHECK_END(); | 1153 | MAGIC_CHECK_END(); |
906 | 1154 | ||
1155 | e->pointer.downs++; | ||
907 | if (e->events_frozen > 0) return; | 1156 | if (e->events_frozen > 0) return; |
908 | e->last_timestamp = timestamp; | 1157 | e->last_timestamp = timestamp; |
909 | 1158 | ||
910 | _evas_object_event_new(); | 1159 | _evas_object_event_new(); |
911 | 1160 | ||
1161 | event_id = _evas_event_counter; | ||
912 | ev.device = d; | 1162 | ev.device = d; |
913 | ev.output.x = x; | 1163 | ev.output.x = x; |
914 | ev.output.y = y; | 1164 | ev.output.y = y; |
@@ -926,18 +1176,22 @@ evas_event_feed_multi_down(Evas *e, | |||
926 | ev.locks = &(e->locks); | 1176 | ev.locks = &(e->locks); |
927 | ev.flags = flags; | 1177 | ev.flags = flags; |
928 | ev.timestamp = timestamp; | 1178 | ev.timestamp = timestamp; |
929 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1179 | ev.event_flags = e->default_event_flags; |
930 | 1180 | ||
931 | _evas_walk(e); | 1181 | _evas_walk(e); |
932 | /* append new touch point to the touch point list */ | 1182 | /* append new touch point to the touch point list */ |
933 | _evas_touch_point_append(e, d, x, y); | 1183 | _evas_touch_point_append(e, d, x, y); |
1184 | if (e->pointer.mouse_grabbed == 0) | ||
1185 | { | ||
1186 | if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1; | ||
1187 | } | ||
934 | copy = evas_event_list_copy(e->pointer.object.in); | 1188 | copy = evas_event_list_copy(e->pointer.object.in); |
935 | EINA_LIST_FOREACH(copy, l, obj) | 1189 | EINA_LIST_FOREACH(copy, l, obj) |
936 | { | 1190 | { |
937 | if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) | 1191 | if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) |
938 | { | 1192 | { |
939 | obj->mouse_grabbed++; | 1193 | obj->mouse_grabbed += addgrab + 1; |
940 | e->pointer.mouse_grabbed++; | 1194 | e->pointer.mouse_grabbed += addgrab + 1; |
941 | } | 1195 | } |
942 | } | 1196 | } |
943 | EINA_LIST_FOREACH(copy, l, obj) | 1197 | EINA_LIST_FOREACH(copy, l, obj) |
@@ -952,7 +1206,7 @@ evas_event_feed_multi_down(Evas *e, | |||
952 | if (y != ev.canvas.y) | 1206 | if (y != ev.canvas.y) |
953 | ev.canvas.ysub = ev.canvas.y; // fixme - lost precision | 1207 | ev.canvas.ysub = ev.canvas.y; // fixme - lost precision |
954 | if (e->events_frozen <= 0) | 1208 | if (e->events_frozen <= 0) |
955 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev); | 1209 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id); |
956 | if (e->delete_me) break; | 1210 | if (e->delete_me) break; |
957 | } | 1211 | } |
958 | if (copy) eina_list_free(copy); | 1212 | if (copy) eina_list_free(copy); |
@@ -974,16 +1228,19 @@ evas_event_feed_multi_up(Evas *e, | |||
974 | Eina_List *l, *copy; | 1228 | Eina_List *l, *copy; |
975 | Evas_Event_Multi_Up ev; | 1229 | Evas_Event_Multi_Up ev; |
976 | Evas_Object *obj; | 1230 | Evas_Object *obj; |
1231 | int event_id = 0; | ||
977 | 1232 | ||
978 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1233 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
979 | return; | 1234 | return; |
980 | MAGIC_CHECK_END(); | 1235 | MAGIC_CHECK_END(); |
981 | 1236 | ||
1237 | e->pointer.downs--; | ||
982 | if (e->events_frozen > 0) return; | 1238 | if (e->events_frozen > 0) return; |
983 | e->last_timestamp = timestamp; | 1239 | e->last_timestamp = timestamp; |
984 | 1240 | ||
985 | _evas_object_event_new(); | 1241 | _evas_object_event_new(); |
986 | 1242 | ||
1243 | event_id = _evas_event_counter; | ||
987 | ev.device = d; | 1244 | ev.device = d; |
988 | ev.output.x = x; | 1245 | ev.output.x = x; |
989 | ev.output.y = y; | 1246 | ev.output.y = y; |
@@ -1001,7 +1258,7 @@ evas_event_feed_multi_up(Evas *e, | |||
1001 | ev.locks = &(e->locks); | 1258 | ev.locks = &(e->locks); |
1002 | ev.flags = flags; | 1259 | ev.flags = flags; |
1003 | ev.timestamp = timestamp; | 1260 | ev.timestamp = timestamp; |
1004 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1261 | ev.event_flags = e->default_event_flags; |
1005 | 1262 | ||
1006 | _evas_walk(e); | 1263 | _evas_walk(e); |
1007 | /* update released touch point */ | 1264 | /* update released touch point */ |
@@ -1025,7 +1282,7 @@ evas_event_feed_multi_up(Evas *e, | |||
1025 | e->pointer.mouse_grabbed--; | 1282 | e->pointer.mouse_grabbed--; |
1026 | } | 1283 | } |
1027 | if (e->events_frozen <= 0) | 1284 | if (e->events_frozen <= 0) |
1028 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev); | 1285 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id); |
1029 | if (e->delete_me) break; | 1286 | if (e->delete_me) break; |
1030 | } | 1287 | } |
1031 | if (copy) copy = eina_list_free(copy); | 1288 | if (copy) copy = eina_list_free(copy); |
@@ -1051,7 +1308,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1051 | if (e->events_frozen > 0) return; | 1308 | if (e->events_frozen > 0) return; |
1052 | e->last_timestamp = timestamp; | 1309 | e->last_timestamp = timestamp; |
1053 | 1310 | ||
1054 | if (!e->pointer.inside) return; | 1311 | if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return; |
1055 | 1312 | ||
1056 | _evas_walk(e); | 1313 | _evas_walk(e); |
1057 | /* update moved touch point */ | 1314 | /* update moved touch point */ |
@@ -1063,9 +1320,11 @@ evas_event_feed_multi_move(Evas *e, | |||
1063 | Eina_List *l, *copy; | 1320 | Eina_List *l, *copy; |
1064 | Evas_Event_Multi_Move ev; | 1321 | Evas_Event_Multi_Move ev; |
1065 | Evas_Object *obj; | 1322 | Evas_Object *obj; |
1323 | int event_id = 0; | ||
1066 | 1324 | ||
1067 | _evas_object_event_new(); | 1325 | _evas_object_event_new(); |
1068 | 1326 | ||
1327 | event_id = _evas_event_counter; | ||
1069 | ev.device = d; | 1328 | ev.device = d; |
1070 | ev.cur.output.x = x; | 1329 | ev.cur.output.x = x; |
1071 | ev.cur.output.y = y; | 1330 | ev.cur.output.y = y; |
@@ -1082,7 +1341,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1082 | ev.modifiers = &(e->modifiers); | 1341 | ev.modifiers = &(e->modifiers); |
1083 | ev.locks = &(e->locks); | 1342 | ev.locks = &(e->locks); |
1084 | ev.timestamp = timestamp; | 1343 | ev.timestamp = timestamp; |
1085 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1344 | ev.event_flags = e->default_event_flags; |
1086 | 1345 | ||
1087 | copy = evas_event_list_copy(e->pointer.object.in); | 1346 | copy = evas_event_list_copy(e->pointer.object.in); |
1088 | EINA_LIST_FOREACH(copy, l, obj) | 1347 | EINA_LIST_FOREACH(copy, l, obj) |
@@ -1102,7 +1361,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1102 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision | 1361 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision |
1103 | if (y != ev.cur.canvas.y) | 1362 | if (y != ev.cur.canvas.y) |
1104 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision | 1363 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision |
1105 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev); | 1364 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id); |
1106 | } | 1365 | } |
1107 | if (e->delete_me) break; | 1366 | if (e->delete_me) break; |
1108 | } | 1367 | } |
@@ -1114,9 +1373,11 @@ evas_event_feed_multi_move(Evas *e, | |||
1114 | Eina_List *l, *copy; | 1373 | Eina_List *l, *copy; |
1115 | Evas_Event_Multi_Move ev; | 1374 | Evas_Event_Multi_Move ev; |
1116 | Evas_Object *obj; | 1375 | Evas_Object *obj; |
1376 | int event_id = 0; | ||
1117 | 1377 | ||
1118 | _evas_object_event_new(); | 1378 | _evas_object_event_new(); |
1119 | 1379 | ||
1380 | event_id = _evas_event_counter; | ||
1120 | ev.device = d; | 1381 | ev.device = d; |
1121 | ev.cur.output.x = x; | 1382 | ev.cur.output.x = x; |
1122 | ev.cur.output.y = y; | 1383 | ev.cur.output.y = y; |
@@ -1133,7 +1394,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1133 | ev.modifiers = &(e->modifiers); | 1394 | ev.modifiers = &(e->modifiers); |
1134 | ev.locks = &(e->locks); | 1395 | ev.locks = &(e->locks); |
1135 | ev.timestamp = timestamp; | 1396 | ev.timestamp = timestamp; |
1136 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1397 | ev.event_flags = e->default_event_flags; |
1137 | 1398 | ||
1138 | /* get all new in objects */ | 1399 | /* get all new in objects */ |
1139 | ins = evas_event_objects_event_list(e, NULL, x, y); | 1400 | ins = evas_event_objects_event_list(e, NULL, x, y); |
@@ -1165,7 +1426,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1165 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision | 1426 | ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision |
1166 | if (y != ev.cur.canvas.y) | 1427 | if (y != ev.cur.canvas.y) |
1167 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision | 1428 | ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision |
1168 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev); | 1429 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id); |
1169 | } | 1430 | } |
1170 | if (e->delete_me) break; | 1431 | if (e->delete_me) break; |
1171 | } | 1432 | } |
@@ -1190,6 +1451,7 @@ evas_event_feed_multi_move(Evas *e, | |||
1190 | EAPI void | 1451 | EAPI void |
1191 | evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) | 1452 | evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) |
1192 | { | 1453 | { |
1454 | int event_id = 0; | ||
1193 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1455 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
1194 | return; | 1456 | return; |
1195 | MAGIC_CHECK_END(); | 1457 | MAGIC_CHECK_END(); |
@@ -1204,6 +1466,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1204 | 1466 | ||
1205 | _evas_object_event_new(); | 1467 | _evas_object_event_new(); |
1206 | 1468 | ||
1469 | event_id = _evas_event_counter; | ||
1207 | exclusive = EINA_FALSE; | 1470 | exclusive = EINA_FALSE; |
1208 | ev.keyname = (char *)keyname; | 1471 | ev.keyname = (char *)keyname; |
1209 | ev.data = (void *)data; | 1472 | ev.data = (void *)data; |
@@ -1213,7 +1476,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1213 | ev.string = string; | 1476 | ev.string = string; |
1214 | ev.compose = compose; | 1477 | ev.compose = compose; |
1215 | ev.timestamp = timestamp; | 1478 | ev.timestamp = timestamp; |
1216 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1479 | ev.event_flags = e->default_event_flags; |
1217 | 1480 | ||
1218 | if (e->grabs) | 1481 | if (e->grabs) |
1219 | { | 1482 | { |
@@ -1239,7 +1502,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1239 | !evas_event_freezes_through(g->object)) | 1502 | !evas_event_freezes_through(g->object)) |
1240 | evas_object_event_callback_call(g->object, | 1503 | evas_object_event_callback_call(g->object, |
1241 | EVAS_CALLBACK_KEY_DOWN, | 1504 | EVAS_CALLBACK_KEY_DOWN, |
1242 | &ev); | 1505 | &ev, event_id); |
1243 | if (g->exclusive) exclusive = EINA_TRUE; | 1506 | if (g->exclusive) exclusive = EINA_TRUE; |
1244 | } | 1507 | } |
1245 | } | 1508 | } |
@@ -1266,7 +1529,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1266 | { | 1529 | { |
1267 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) | 1530 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) |
1268 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN, | 1531 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN, |
1269 | &ev); | 1532 | &ev, event_id); |
1270 | } | 1533 | } |
1271 | _evas_post_event_callback_call(e); | 1534 | _evas_post_event_callback_call(e); |
1272 | _evas_unwalk(e); | 1535 | _evas_unwalk(e); |
@@ -1275,6 +1538,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch | |||
1275 | EAPI void | 1538 | EAPI void |
1276 | evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) | 1539 | evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data) |
1277 | { | 1540 | { |
1541 | int event_id = 0; | ||
1278 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1542 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
1279 | return; | 1543 | return; |
1280 | MAGIC_CHECK_END(); | 1544 | MAGIC_CHECK_END(); |
@@ -1288,6 +1552,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1288 | 1552 | ||
1289 | _evas_object_event_new(); | 1553 | _evas_object_event_new(); |
1290 | 1554 | ||
1555 | event_id = _evas_event_counter; | ||
1291 | exclusive = EINA_FALSE; | 1556 | exclusive = EINA_FALSE; |
1292 | ev.keyname = (char *)keyname; | 1557 | ev.keyname = (char *)keyname; |
1293 | ev.data = (void *)data; | 1558 | ev.data = (void *)data; |
@@ -1297,7 +1562,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1297 | ev.string = string; | 1562 | ev.string = string; |
1298 | ev.compose = compose; | 1563 | ev.compose = compose; |
1299 | ev.timestamp = timestamp; | 1564 | ev.timestamp = timestamp; |
1300 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1565 | ev.event_flags = e->default_event_flags; |
1301 | 1566 | ||
1302 | if (e->grabs) | 1567 | if (e->grabs) |
1303 | { | 1568 | { |
@@ -1322,7 +1587,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1322 | if (e->events_frozen <= 0 && | 1587 | if (e->events_frozen <= 0 && |
1323 | !evas_event_freezes_through(g->object)) | 1588 | !evas_event_freezes_through(g->object)) |
1324 | evas_object_event_callback_call(g->object, | 1589 | evas_object_event_callback_call(g->object, |
1325 | EVAS_CALLBACK_KEY_UP, &ev); | 1590 | EVAS_CALLBACK_KEY_UP, &ev, event_id); |
1326 | if (g->exclusive) exclusive = EINA_TRUE; | 1591 | if (g->exclusive) exclusive = EINA_TRUE; |
1327 | } | 1592 | } |
1328 | if (e->delete_me) break; | 1593 | if (e->delete_me) break; |
@@ -1349,7 +1614,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char | |||
1349 | { | 1614 | { |
1350 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) | 1615 | if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused)) |
1351 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP, | 1616 | evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP, |
1352 | &ev); | 1617 | &ev, event_id); |
1353 | } | 1618 | } |
1354 | _evas_post_event_callback_call(e); | 1619 | _evas_post_event_callback_call(e); |
1355 | _evas_unwalk(e); | 1620 | _evas_unwalk(e); |
@@ -1361,6 +1626,7 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data | |||
1361 | Eina_List *l, *copy; | 1626 | Eina_List *l, *copy; |
1362 | Evas_Event_Hold ev; | 1627 | Evas_Event_Hold ev; |
1363 | Evas_Object *obj; | 1628 | Evas_Object *obj; |
1629 | int event_id = 0; | ||
1364 | 1630 | ||
1365 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | 1631 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); |
1366 | return; | 1632 | return; |
@@ -1371,17 +1637,18 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data | |||
1371 | 1637 | ||
1372 | _evas_object_event_new(); | 1638 | _evas_object_event_new(); |
1373 | 1639 | ||
1640 | event_id = _evas_event_counter; | ||
1374 | ev.hold = hold; | 1641 | ev.hold = hold; |
1375 | ev.data = (void *)data; | 1642 | ev.data = (void *)data; |
1376 | ev.timestamp = timestamp; | 1643 | ev.timestamp = timestamp; |
1377 | ev.event_flags = EVAS_EVENT_FLAG_NONE; | 1644 | ev.event_flags = e->default_event_flags; |
1378 | 1645 | ||
1379 | _evas_walk(e); | 1646 | _evas_walk(e); |
1380 | copy = evas_event_list_copy(e->pointer.object.in); | 1647 | copy = evas_event_list_copy(e->pointer.object.in); |
1381 | EINA_LIST_FOREACH(copy, l, obj) | 1648 | EINA_LIST_FOREACH(copy, l, obj) |
1382 | { | 1649 | { |
1383 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) | 1650 | if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj)) |
1384 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev); | 1651 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev, event_id); |
1385 | if (e->delete_me) break; | 1652 | if (e->delete_me) break; |
1386 | } | 1653 | } |
1387 | if (copy) copy = eina_list_free(copy); | 1654 | if (copy) copy = eina_list_free(copy); |
@@ -1528,75 +1795,84 @@ evas_object_pointer_mode_get(const Evas_Object *obj) | |||
1528 | EAPI void | 1795 | EAPI void |
1529 | evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type) | 1796 | evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type) |
1530 | { | 1797 | { |
1531 | switch(event_type) | 1798 | switch (event_type) |
1532 | { | 1799 | { |
1533 | case EVAS_CALLBACK_MOUSE_IN: | 1800 | case EVAS_CALLBACK_MOUSE_IN: |
1534 | { | 1801 | { |
1535 | Evas_Event_Mouse_In *ev = event_copy; | 1802 | Evas_Event_Mouse_In *ev = event_copy; |
1536 | evas_event_feed_mouse_in(e, ev->timestamp, ev->data); | 1803 | evas_event_feed_mouse_in(e, ev->timestamp, ev->data); |
1537 | break; | 1804 | break; |
1538 | } | 1805 | } |
1539 | case EVAS_CALLBACK_MOUSE_OUT: | 1806 | case EVAS_CALLBACK_MOUSE_OUT: |
1540 | { | 1807 | { |
1541 | Evas_Event_Mouse_Out *ev = event_copy; | 1808 | Evas_Event_Mouse_Out *ev = event_copy; |
1542 | evas_event_feed_mouse_out(e, ev->timestamp, ev->data); | 1809 | evas_event_feed_mouse_out(e, ev->timestamp, ev->data); |
1543 | break; | 1810 | break; |
1544 | } | 1811 | } |
1545 | case EVAS_CALLBACK_MOUSE_DOWN: | 1812 | case EVAS_CALLBACK_MOUSE_DOWN: |
1546 | { | 1813 | { |
1547 | Evas_Event_Mouse_Down *ev = event_copy; | 1814 | Evas_Event_Mouse_Down *ev = event_copy; |
1548 | evas_event_feed_mouse_down(e, ev->button, ev->flags, ev-> timestamp, ev->data); | 1815 | evas_event_feed_mouse_down(e, ev->button, ev->flags, ev-> timestamp, ev->data); |
1549 | break; | 1816 | break; |
1550 | } | 1817 | } |
1551 | case EVAS_CALLBACK_MOUSE_UP: | 1818 | case EVAS_CALLBACK_MOUSE_UP: |
1552 | { | 1819 | { |
1553 | Evas_Event_Mouse_Up *ev = event_copy; | 1820 | Evas_Event_Mouse_Up *ev = event_copy; |
1554 | evas_event_feed_mouse_up(e, ev->button, ev->flags, ev-> timestamp, ev->data); | 1821 | evas_event_feed_mouse_up(e, ev->button, ev->flags, ev-> timestamp, ev->data); |
1555 | break; | 1822 | break; |
1556 | } | 1823 | } |
1557 | case EVAS_CALLBACK_MOUSE_MOVE: | 1824 | case EVAS_CALLBACK_MOUSE_MOVE: |
1558 | { | 1825 | { |
1559 | Evas_Event_Mouse_Move *ev = event_copy; | 1826 | Evas_Event_Mouse_Move *ev = event_copy; |
1560 | evas_event_feed_mouse_move(e, ev->cur.canvas.x, ev->cur.canvas.y, ev->timestamp, ev->data); | 1827 | evas_event_feed_mouse_move(e, ev->cur.canvas.x, ev->cur.canvas.y, ev->timestamp, ev->data); |
1561 | break; | 1828 | break; |
1562 | } | 1829 | } |
1563 | case EVAS_CALLBACK_MOUSE_WHEEL: | 1830 | case EVAS_CALLBACK_MOUSE_WHEEL: |
1564 | { | 1831 | { |
1565 | Evas_Event_Mouse_Wheel *ev = event_copy; | 1832 | Evas_Event_Mouse_Wheel *ev = event_copy; |
1566 | evas_event_feed_mouse_wheel(e, ev->direction, ev-> z, ev->timestamp, ev->data); | 1833 | evas_event_feed_mouse_wheel(e, ev->direction, ev-> z, ev->timestamp, ev->data); |
1567 | break; | 1834 | break; |
1568 | } | 1835 | } |
1569 | case EVAS_CALLBACK_MULTI_DOWN: | 1836 | case EVAS_CALLBACK_MULTI_DOWN: |
1570 | { | 1837 | { |
1571 | Evas_Event_Multi_Down *ev = event_copy; | 1838 | Evas_Event_Multi_Down *ev = event_copy; |
1572 | evas_event_feed_multi_down(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); | 1839 | evas_event_feed_multi_down(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); |
1573 | break; | 1840 | break; |
1574 | } | 1841 | } |
1575 | case EVAS_CALLBACK_MULTI_UP: | 1842 | case EVAS_CALLBACK_MULTI_UP: |
1576 | { | 1843 | { |
1577 | Evas_Event_Multi_Up *ev = event_copy; | 1844 | Evas_Event_Multi_Up *ev = event_copy; |
1578 | evas_event_feed_multi_up(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); | 1845 | evas_event_feed_multi_up(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data); |
1579 | break; | 1846 | break; |
1580 | } | 1847 | } |
1581 | case EVAS_CALLBACK_MULTI_MOVE: | 1848 | case EVAS_CALLBACK_MULTI_MOVE: |
1582 | { | 1849 | { |
1583 | Evas_Event_Multi_Move *ev = event_copy; | 1850 | Evas_Event_Multi_Move *ev = event_copy; |
1584 | evas_event_feed_multi_move(e, ev->device, ev->cur.canvas.x, ev->cur.canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->cur.canvas.xsub, ev->cur.canvas.ysub, ev->timestamp, ev->data); | 1851 | evas_event_feed_multi_move(e, ev->device, ev->cur.canvas.x, ev->cur.canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->cur.canvas.xsub, ev->cur.canvas.ysub, ev->timestamp, ev->data); |
1585 | break; | 1852 | break; |
1586 | } | 1853 | } |
1587 | case EVAS_CALLBACK_KEY_DOWN: | 1854 | case EVAS_CALLBACK_KEY_DOWN: |
1588 | { | 1855 | { |
1589 | Evas_Event_Key_Down *ev = event_copy; | 1856 | Evas_Event_Key_Down *ev = event_copy; |
1590 | evas_event_feed_key_down(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); | 1857 | evas_event_feed_key_down(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); |
1591 | break; | 1858 | break; |
1592 | } | 1859 | } |
1593 | case EVAS_CALLBACK_KEY_UP: | 1860 | case EVAS_CALLBACK_KEY_UP: |
1594 | { | 1861 | { |
1595 | Evas_Event_Key_Up *ev = event_copy; | 1862 | Evas_Event_Key_Up *ev = event_copy; |
1596 | evas_event_feed_key_up(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); | 1863 | evas_event_feed_key_up(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data); |
1597 | break; | 1864 | break; |
1598 | } | 1865 | } |
1599 | default: /* All non-input events are not handeled */ | 1866 | default: /* All non-input events are not handeled */ |
1600 | break; | 1867 | break; |
1601 | } | 1868 | } |
1602 | } | 1869 | } |
1870 | |||
1871 | EAPI int | ||
1872 | evas_event_down_count_get(const Evas *e) | ||
1873 | { | ||
1874 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
1875 | return 0; | ||
1876 | MAGIC_CHECK_END(); | ||
1877 | return e->pointer.downs; | ||
1878 | } | ||
diff --git a/libraries/evas/src/lib/canvas/evas_focus.c b/libraries/evas/src/lib/canvas/evas_focus.c index a1a3bca..29da7e7 100644 --- a/libraries/evas/src/lib/canvas/evas_focus.c +++ b/libraries/evas/src/lib/canvas/evas_focus.c | |||
@@ -10,29 +10,31 @@ | |||
10 | EAPI void | 10 | EAPI void |
11 | evas_object_focus_set(Evas_Object *obj, Eina_Bool focus) | 11 | evas_object_focus_set(Evas_Object *obj, Eina_Bool focus) |
12 | { | 12 | { |
13 | int event_id = 0; | ||
13 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 14 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
14 | return; | 15 | return; |
15 | MAGIC_CHECK_END(); | 16 | MAGIC_CHECK_END(); |
16 | 17 | ||
17 | _evas_object_event_new(); | 18 | _evas_object_event_new(); |
18 | 19 | ||
20 | event_id = _evas_event_counter; | ||
19 | if (focus) | 21 | if (focus) |
20 | { | 22 | { |
21 | if (obj->focused) goto end; | 23 | if (obj->focused) goto end; |
22 | if (obj->layer->evas->focused) | 24 | if (obj->layer->evas->focused) |
23 | evas_object_focus_set(obj->layer->evas->focused, 0); | 25 | evas_object_focus_set(obj->layer->evas->focused, 0); |
24 | obj->focused = 1; | 26 | obj->focused = 1; |
25 | obj->layer->evas->focused = obj; | 27 | obj->layer->evas->focused = obj; |
26 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL); | 28 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id); |
27 | evas_event_callback_call(obj->layer->evas, | 29 | evas_event_callback_call(obj->layer->evas, |
28 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj); | 30 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj); |
29 | } | 31 | } |
30 | else | 32 | else |
31 | { | 33 | { |
32 | if (!obj->focused) goto end; | 34 | if (!obj->focused) goto end; |
33 | obj->focused = 0; | 35 | obj->focused = 0; |
34 | obj->layer->evas->focused = NULL; | 36 | obj->layer->evas->focused = NULL; |
35 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); | 37 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id); |
36 | evas_event_callback_call(obj->layer->evas, | 38 | evas_event_callback_call(obj->layer->evas, |
37 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj); | 39 | EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj); |
38 | } | 40 | } |
diff --git a/libraries/evas/src/lib/canvas/evas_gl.c b/libraries/evas/src/lib/canvas/evas_gl.c index 47bb583..85ed851 100644 --- a/libraries/evas/src/lib/canvas/evas_gl.c +++ b/libraries/evas/src/lib/canvas/evas_gl.c | |||
@@ -37,6 +37,13 @@ evas_gl_new(Evas *e) | |||
37 | evas_gl->magic = MAGIC_EVAS_GL; | 37 | evas_gl->magic = MAGIC_EVAS_GL; |
38 | evas_gl->evas = e; | 38 | evas_gl->evas = e; |
39 | 39 | ||
40 | if (!evas_gl->evas->engine.func->gl_context_create) | ||
41 | { | ||
42 | ERR("GL engine not available\n"); | ||
43 | free(evas_gl); | ||
44 | return NULL; | ||
45 | } | ||
46 | |||
40 | return evas_gl; | 47 | return evas_gl; |
41 | } | 48 | } |
42 | 49 | ||
@@ -60,6 +67,24 @@ evas_gl_free(Evas_GL *evas_gl) | |||
60 | free(evas_gl); | 67 | free(evas_gl); |
61 | } | 68 | } |
62 | 69 | ||
70 | EAPI Evas_GL_Config * | ||
71 | evas_gl_config_new() | ||
72 | { | ||
73 | Evas_GL_Config *cfg; | ||
74 | |||
75 | cfg = calloc(1, sizeof(Evas_GL_Config)); | ||
76 | |||
77 | if (!cfg) return NULL; | ||
78 | |||
79 | return cfg; | ||
80 | } | ||
81 | |||
82 | EAPI void | ||
83 | evas_gl_config_free(Evas_GL_Config *cfg) | ||
84 | { | ||
85 | if (cfg) free(cfg); | ||
86 | } | ||
87 | |||
63 | EAPI Evas_GL_Surface * | 88 | EAPI Evas_GL_Surface * |
64 | evas_gl_surface_create(Evas_GL *evas_gl, Evas_GL_Config *config, int width, int height) | 89 | evas_gl_surface_create(Evas_GL *evas_gl, Evas_GL_Config *config, int width, int height) |
65 | { | 90 | { |
@@ -77,6 +102,8 @@ evas_gl_surface_create(Evas_GL *evas_gl, Evas_GL_Config *config, int width, int | |||
77 | 102 | ||
78 | surf = calloc(1, sizeof(Evas_GL_Surface)); | 103 | surf = calloc(1, sizeof(Evas_GL_Surface)); |
79 | 104 | ||
105 | if (!surf) return NULL; | ||
106 | |||
80 | surf->data = evas_gl->evas->engine.func->gl_surface_create(evas_gl->evas->engine.data.output, config, width, height); | 107 | surf->data = evas_gl->evas->engine.func->gl_surface_create(evas_gl->evas->engine.data.output, config, width, height); |
81 | 108 | ||
82 | if (!surf->data) | 109 | if (!surf->data) |
diff --git a/libraries/evas/src/lib/canvas/evas_main.c b/libraries/evas/src/lib/canvas/evas_main.c index 0a37b2c..687744f 100644 --- a/libraries/evas/src/lib/canvas/evas_main.c +++ b/libraries/evas/src/lib/canvas/evas_main.c | |||
@@ -118,12 +118,16 @@ evas_new(void) | |||
118 | e->output.render_method = RENDER_METHOD_INVALID; | 118 | e->output.render_method = RENDER_METHOD_INVALID; |
119 | e->viewport.w = 1; | 119 | e->viewport.w = 1; |
120 | e->viewport.h = 1; | 120 | e->viewport.h = 1; |
121 | e->framespace.x = 0; | ||
122 | e->framespace.y = 0; | ||
123 | e->framespace.w = 0; | ||
124 | e->framespace.h = 0; | ||
121 | e->hinting = EVAS_FONT_HINTING_BYTECODE; | 125 | e->hinting = EVAS_FONT_HINTING_BYTECODE; |
122 | e->name_hash = eina_hash_string_superfast_new(NULL); | 126 | e->name_hash = eina_hash_string_superfast_new(NULL); |
123 | eina_clist_init(&e->calc_list); | 127 | eina_clist_init(&e->calc_list); |
124 | eina_clist_init(&e->calc_done); | 128 | eina_clist_init(&e->calc_done); |
125 | 129 | ||
126 | #define EVAS_ARRAY_SET(E, Array) \ | 130 | #define EVAS_ARRAY_SET(E, Array) \ |
127 | eina_array_step_set(&E->Array, sizeof (E->Array), 4096); | 131 | eina_array_step_set(&E->Array, sizeof (E->Array), 4096); |
128 | 132 | ||
129 | EVAS_ARRAY_SET(e, delete_objects); | 133 | EVAS_ARRAY_SET(e, delete_objects); |
@@ -408,6 +412,41 @@ evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord | |||
408 | if (h) *h = e->viewport.h; | 412 | if (h) *h = e->viewport.h; |
409 | } | 413 | } |
410 | 414 | ||
415 | EAPI void | ||
416 | evas_output_framespace_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) | ||
417 | { | ||
418 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
419 | return; | ||
420 | MAGIC_CHECK_END(); | ||
421 | |||
422 | if ((x == e->framespace.x) && (y == e->framespace.y) && | ||
423 | (w == e->framespace.w) && (h == e->framespace.h)) return; | ||
424 | e->framespace.x = x; | ||
425 | e->framespace.y = y; | ||
426 | e->framespace.w = w; | ||
427 | e->framespace.h = h; | ||
428 | e->framespace.changed = 1; | ||
429 | e->output_validity++; | ||
430 | e->changed = 1; | ||
431 | } | ||
432 | |||
433 | EAPI void | ||
434 | evas_output_framespace_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) | ||
435 | { | ||
436 | MAGIC_CHECK(e, Evas, MAGIC_EVAS); | ||
437 | if (x) *x = 0; | ||
438 | if (y) *y = 0; | ||
439 | if (w) *w = 0; | ||
440 | if (h) *h = 0; | ||
441 | return; | ||
442 | MAGIC_CHECK_END(); | ||
443 | |||
444 | if (x) *x = e->framespace.x; | ||
445 | if (y) *y = e->framespace.y; | ||
446 | if (w) *w = e->framespace.w; | ||
447 | if (h) *h = e->framespace.h; | ||
448 | } | ||
449 | |||
411 | EAPI Evas_Coord | 450 | EAPI Evas_Coord |
412 | evas_coord_screen_x_to_world(const Evas *e, int x) | 451 | evas_coord_screen_x_to_world(const Evas *e, int x) |
413 | { | 452 | { |
diff --git a/libraries/evas/src/lib/canvas/evas_map.c b/libraries/evas/src/lib/canvas/evas_map.c index fca8b3a..2359d5a 100644 --- a/libraries/evas/src/lib/canvas/evas_map.c +++ b/libraries/evas/src/lib/canvas/evas_map.c | |||
@@ -81,17 +81,19 @@ _evas_map_calc_map_geometry(Evas_Object *obj) | |||
81 | 81 | ||
82 | p = obj->cur.map->points; | 82 | p = obj->cur.map->points; |
83 | p_end = p + obj->cur.map->count; | 83 | p_end = p + obj->cur.map->count; |
84 | x1 = lround(p->x); | 84 | x1 = x2 = lround(p->x); |
85 | x2 = lround(p->x); | 85 | y1 = y2 = lround(p->y); |
86 | y1 = lround(p->y); | ||
87 | y2 = lround(p->y); | ||
88 | p++; | 86 | p++; |
89 | for (; p < p_end; p++) | 87 | for (; p < p_end; p++) |
90 | { | 88 | { |
91 | if (p->x < x1) x1 = p->x; | 89 | Evas_Coord x, y; |
92 | if (p->x > x2) x2 = p->x; | 90 | |
93 | if (p->y < y1) y1 = p->y; | 91 | x = lround(p->x); |
94 | if (p->y > y2) y2 = p->y; | 92 | y = lround(p->y); |
93 | if (x < x1) x1 = x; | ||
94 | if (x > x2) x2 = x; | ||
95 | if (y < y1) y1 = y; | ||
96 | if (y > y2) y2 = y; | ||
95 | } | 97 | } |
96 | // this causes clip-out bugs now mapped objs canbe opaque!!! | 98 | // this causes clip-out bugs now mapped objs canbe opaque!!! |
97 | // // add 1 pixel of fuzz around the map region to ensure updates are correct | 99 | // // add 1 pixel of fuzz around the map region to ensure updates are correct |
diff --git a/libraries/evas/src/lib/canvas/evas_name.c b/libraries/evas/src/lib/canvas/evas_name.c index c42f941..1a9d20f 100644 --- a/libraries/evas/src/lib/canvas/evas_name.c +++ b/libraries/evas/src/lib/canvas/evas_name.c | |||
@@ -38,3 +38,35 @@ evas_object_name_find(const Evas *e, const char *name) | |||
38 | if (!name) return NULL; | 38 | if (!name) return NULL; |
39 | return (Evas_Object *)eina_hash_find(e->name_hash, name); | 39 | return (Evas_Object *)eina_hash_find(e->name_hash, name); |
40 | } | 40 | } |
41 | |||
42 | static Evas_Object * | ||
43 | _evas_object_name_child_find(const Evas_Object *obj, const char *name, int recurse) | ||
44 | { | ||
45 | const Eina_Inlist *lst; | ||
46 | Evas_Object *child; | ||
47 | |||
48 | if (!obj->smart.smart) return NULL; | ||
49 | lst = evas_object_smart_members_get_direct(obj); | ||
50 | EINA_INLIST_FOREACH(lst, child) | ||
51 | { | ||
52 | if (child->delete_me) continue; | ||
53 | if (!child->name) continue; | ||
54 | if (!strcmp(name, child->name)) return child; | ||
55 | if (recurse != 0) | ||
56 | { | ||
57 | if ((obj = _evas_object_name_child_find(child, name, recurse - 1))) | ||
58 | return (Evas_Object *)obj; | ||
59 | } | ||
60 | } | ||
61 | return NULL; | ||
62 | } | ||
63 | |||
64 | EAPI Evas_Object * | ||
65 | evas_object_name_child_find(const Evas_Object *obj, const char *name, int recurse) | ||
66 | { | ||
67 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
68 | return NULL; | ||
69 | MAGIC_CHECK_END(); | ||
70 | if (!name) return NULL; | ||
71 | return _evas_object_name_child_find(obj, name, recurse); | ||
72 | } | ||
diff --git a/libraries/evas/src/lib/canvas/evas_object_box.c b/libraries/evas/src/lib/canvas/evas_object_box.c index ab2f222..228d37c 100644 --- a/libraries/evas/src/lib/canvas/evas_object_box.c +++ b/libraries/evas/src/lib/canvas/evas_object_box.c | |||
@@ -1363,7 +1363,7 @@ _evas_object_box_layout_flow_horizontal_row_info_collect(Evas_Object_Box_Data *p | |||
1363 | EAPI void | 1363 | EAPI void |
1364 | evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__) | 1364 | evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__) |
1365 | { | 1365 | { |
1366 | int n_children, v_justify; | 1366 | int n_children; |
1367 | int r, row_count = 0; | 1367 | int r, row_count = 0; |
1368 | int min_w = 0, min_h = 0; | 1368 | int min_w = 0, min_h = 0; |
1369 | int max_h, inc_y; | 1369 | int max_h, inc_y; |
@@ -1398,7 +1398,6 @@ evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *pri | |||
1398 | (priv, w, &row_count, row_max_h, row_break, row_width, &offset_y, &max_h); | 1398 | (priv, w, &row_count, row_max_h, row_break, row_width, &offset_y, &max_h); |
1399 | 1399 | ||
1400 | inc_y = 0; | 1400 | inc_y = 0; |
1401 | v_justify = 0; | ||
1402 | remain_y = h - (offset_y + max_h); | 1401 | remain_y = h - (offset_y + max_h); |
1403 | 1402 | ||
1404 | if (remain_y > 0) | 1403 | if (remain_y > 0) |
diff --git a/libraries/evas/src/lib/canvas/evas_object_grid.c b/libraries/evas/src/lib/canvas/evas_object_grid.c index ac96f04..db0f43d 100644 --- a/libraries/evas/src/lib/canvas/evas_object_grid.c +++ b/libraries/evas/src/lib/canvas/evas_object_grid.c | |||
@@ -1,5 +1,5 @@ | |||
1 | #include <errno.h> | ||
2 | #include "evas_common.h" | 1 | #include "evas_common.h" |
2 | #include <errno.h> | ||
3 | 3 | ||
4 | typedef struct _Evas_Object_Grid_Data Evas_Object_Grid_Data; | 4 | typedef struct _Evas_Object_Grid_Data Evas_Object_Grid_Data; |
5 | typedef struct _Evas_Object_Grid_Option Evas_Object_Grid_Option; | 5 | typedef struct _Evas_Object_Grid_Option Evas_Object_Grid_Option; |
diff --git a/libraries/evas/src/lib/canvas/evas_object_image.c b/libraries/evas/src/lib/canvas/evas_object_image.c index 7f757a6..d9f6378 100644 --- a/libraries/evas/src/lib/canvas/evas_object_image.c +++ b/libraries/evas/src/lib/canvas/evas_object_image.c | |||
@@ -1,7 +1,13 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include "config.h" /* so that EAPI in Evas.h is correctly defined */ | ||
3 | #endif | ||
4 | |||
1 | #include <sys/types.h> | 5 | #include <sys/types.h> |
2 | #include <unistd.h> | 6 | #include <unistd.h> |
3 | #include <stdlib.h> | 7 | #include <stdlib.h> |
4 | #include <sys/mman.h> | 8 | #ifdef HAVE_SYS_MMAN_H |
9 | # include <sys/mman.h> | ||
10 | #endif | ||
5 | #include <math.h> | 11 | #include <math.h> |
6 | 12 | ||
7 | #include "evas_common.h" | 13 | #include "evas_common.h" |
@@ -192,8 +198,9 @@ evas_object_image_filled_add(Evas *e) | |||
192 | static void | 198 | static void |
193 | _cleanup_tmpf(Evas_Object *obj) | 199 | _cleanup_tmpf(Evas_Object *obj) |
194 | { | 200 | { |
201 | #ifdef HAVE_SYS_MMAN_H | ||
195 | Evas_Object_Image *o; | 202 | Evas_Object_Image *o; |
196 | 203 | ||
197 | o = (Evas_Object_Image *)(obj->object_data); | 204 | o = (Evas_Object_Image *)(obj->object_data); |
198 | if (!o->tmpf) return; | 205 | if (!o->tmpf) return; |
199 | #ifdef __linux__ | 206 | #ifdef __linux__ |
@@ -204,11 +211,15 @@ _cleanup_tmpf(Evas_Object *obj) | |||
204 | eina_stringshare_del(o->tmpf); | 211 | eina_stringshare_del(o->tmpf); |
205 | o->tmpf_fd = -1; | 212 | o->tmpf_fd = -1; |
206 | o->tmpf = NULL; | 213 | o->tmpf = NULL; |
214 | #else | ||
215 | (void) obj; | ||
216 | #endif | ||
207 | } | 217 | } |
208 | 218 | ||
209 | static void | 219 | static void |
210 | _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) | 220 | _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) |
211 | { | 221 | { |
222 | #ifdef HAVE_SYS_MMAN_H | ||
212 | Evas_Object_Image *o; | 223 | Evas_Object_Image *o; |
213 | char buf[4096]; | 224 | char buf[4096]; |
214 | void *dst; | 225 | void *dst; |
@@ -253,6 +264,12 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__) | |||
253 | o->tmpf = eina_stringshare_add(buf); | 264 | o->tmpf = eina_stringshare_add(buf); |
254 | memcpy(dst, data, size); | 265 | memcpy(dst, data, size); |
255 | munmap(dst, size); | 266 | munmap(dst, size); |
267 | #else | ||
268 | (void) obj; | ||
269 | (void) data; | ||
270 | (void) size; | ||
271 | (void) format; | ||
272 | #endif | ||
256 | } | 273 | } |
257 | 274 | ||
258 | EAPI void | 275 | EAPI void |
@@ -1917,6 +1934,24 @@ evas_object_image_content_hint_get(const Evas_Object *obj) | |||
1917 | return o->content_hint; | 1934 | return o->content_hint; |
1918 | } | 1935 | } |
1919 | 1936 | ||
1937 | EAPI Eina_Bool | ||
1938 | evas_object_image_region_support_get(const Evas_Object *obj) | ||
1939 | { | ||
1940 | Evas_Object_Image *o; | ||
1941 | |||
1942 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
1943 | return EINA_FALSE; | ||
1944 | MAGIC_CHECK_END(); | ||
1945 | o = (Evas_Object_Image *) (obj->object_data); | ||
1946 | MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE); | ||
1947 | return EINA_FALSE; | ||
1948 | MAGIC_CHECK_END(); | ||
1949 | |||
1950 | return obj->layer->evas->engine.func->image_can_region_get( | ||
1951 | obj->layer->evas->engine.data.output, | ||
1952 | o->engine_data); | ||
1953 | } | ||
1954 | |||
1920 | /* animated feature */ | 1955 | /* animated feature */ |
1921 | EAPI Eina_Bool | 1956 | EAPI Eina_Bool |
1922 | evas_object_image_animated_get(const Evas_Object *obj) | 1957 | evas_object_image_animated_get(const Evas_Object *obj) |
@@ -3770,8 +3805,7 @@ evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_C | |||
3770 | to_cspace); | 3805 | to_cspace); |
3771 | break; | 3806 | break; |
3772 | case EVAS_COLORSPACE_YCBCR422601_PL: | 3807 | case EVAS_COLORSPACE_YCBCR422601_PL: |
3773 | fprintf(stderr, "EVAS_COLORSPACE_YCBCR422601_PL:\n"); | 3808 | out = evas_common_convert_yuv_422_601_to(data, |
3774 | out = evas_common_convert_yuv_422_601_to(data, | ||
3775 | o->cur.image.w, | 3809 | o->cur.image.w, |
3776 | o->cur.image.h, | 3810 | o->cur.image.h, |
3777 | to_cspace); | 3811 | to_cspace); |
@@ -3795,7 +3829,7 @@ evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_C | |||
3795 | to_cspace); | 3829 | to_cspace); |
3796 | break; | 3830 | break; |
3797 | default: | 3831 | default: |
3798 | fprintf(stderr, "unknow colorspace: %i\n", o->cur.cspace); | 3832 | WRN("unknow colorspace: %i\n", o->cur.cspace); |
3799 | break; | 3833 | break; |
3800 | } | 3834 | } |
3801 | 3835 | ||
@@ -3806,9 +3840,7 @@ static void | |||
3806 | evas_object_image_filled_resize_listener(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *einfo __UNUSED__) | 3840 | evas_object_image_filled_resize_listener(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *einfo __UNUSED__) |
3807 | { | 3841 | { |
3808 | Evas_Coord w, h; | 3842 | Evas_Coord w, h; |
3809 | Evas_Object_Image *o; | ||
3810 | 3843 | ||
3811 | o = obj->object_data; | ||
3812 | evas_object_geometry_get(obj, NULL, NULL, &w, &h); | 3844 | evas_object_geometry_get(obj, NULL, NULL, &w, &h); |
3813 | evas_object_image_fill_set(obj, 0, 0, w, h); | 3845 | evas_object_image_fill_set(obj, 0, 0, w, h); |
3814 | } | 3846 | } |
diff --git a/libraries/evas/src/lib/canvas/evas_object_inform.c b/libraries/evas/src/lib/canvas/evas_object_inform.c index bc09eb9..302da42 100644 --- a/libraries/evas/src/lib/canvas/evas_object_inform.c +++ b/libraries/evas/src/lib/canvas/evas_object_inform.c | |||
@@ -8,7 +8,7 @@ evas_object_inform_call_show(Evas_Object *obj) | |||
8 | { | 8 | { |
9 | _evas_object_event_new(); | 9 | _evas_object_event_new(); |
10 | 10 | ||
11 | evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL); | 11 | evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter); |
12 | _evas_post_event_callback_call(obj->layer->evas); | 12 | _evas_post_event_callback_call(obj->layer->evas); |
13 | } | 13 | } |
14 | 14 | ||
@@ -17,7 +17,7 @@ evas_object_inform_call_hide(Evas_Object *obj) | |||
17 | { | 17 | { |
18 | _evas_object_event_new(); | 18 | _evas_object_event_new(); |
19 | 19 | ||
20 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL); | 20 | evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter); |
21 | _evas_post_event_callback_call(obj->layer->evas); | 21 | _evas_post_event_callback_call(obj->layer->evas); |
22 | } | 22 | } |
23 | 23 | ||
@@ -26,7 +26,7 @@ evas_object_inform_call_move(Evas_Object *obj) | |||
26 | { | 26 | { |
27 | _evas_object_event_new(); | 27 | _evas_object_event_new(); |
28 | 28 | ||
29 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL); | 29 | evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter); |
30 | _evas_post_event_callback_call(obj->layer->evas); | 30 | _evas_post_event_callback_call(obj->layer->evas); |
31 | } | 31 | } |
32 | 32 | ||
@@ -35,7 +35,7 @@ evas_object_inform_call_resize(Evas_Object *obj) | |||
35 | { | 35 | { |
36 | _evas_object_event_new(); | 36 | _evas_object_event_new(); |
37 | 37 | ||
38 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL); | 38 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter); |
39 | _evas_post_event_callback_call(obj->layer->evas); | 39 | _evas_post_event_callback_call(obj->layer->evas); |
40 | } | 40 | } |
41 | 41 | ||
@@ -44,7 +44,7 @@ evas_object_inform_call_restack(Evas_Object *obj) | |||
44 | { | 44 | { |
45 | _evas_object_event_new(); | 45 | _evas_object_event_new(); |
46 | 46 | ||
47 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL); | 47 | evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter); |
48 | _evas_post_event_callback_call(obj->layer->evas); | 48 | _evas_post_event_callback_call(obj->layer->evas); |
49 | } | 49 | } |
50 | 50 | ||
@@ -53,7 +53,7 @@ evas_object_inform_call_changed_size_hints(Evas_Object *obj) | |||
53 | { | 53 | { |
54 | _evas_object_event_new(); | 54 | _evas_object_event_new(); |
55 | 55 | ||
56 | evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL); | 56 | evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter); |
57 | _evas_post_event_callback_call(obj->layer->evas); | 57 | _evas_post_event_callback_call(obj->layer->evas); |
58 | } | 58 | } |
59 | 59 | ||
@@ -65,7 +65,7 @@ evas_object_inform_call_image_preloaded(Evas_Object *obj) | |||
65 | _evas_object_image_preloading_set(obj, 0); | 65 | _evas_object_image_preloading_set(obj, 0); |
66 | _evas_object_event_new(); | 66 | _evas_object_event_new(); |
67 | 67 | ||
68 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL); | 68 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter); |
69 | _evas_post_event_callback_call(obj->layer->evas); | 69 | _evas_post_event_callback_call(obj->layer->evas); |
70 | } | 70 | } |
71 | 71 | ||
@@ -74,6 +74,6 @@ evas_object_inform_call_image_unloaded(Evas_Object *obj) | |||
74 | { | 74 | { |
75 | _evas_object_event_new(); | 75 | _evas_object_event_new(); |
76 | 76 | ||
77 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL); | 77 | evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter); |
78 | _evas_post_event_callback_call(obj->layer->evas); | 78 | _evas_post_event_callback_call(obj->layer->evas); |
79 | } | 79 | } |
diff --git a/libraries/evas/src/lib/canvas/evas_object_intercept.c b/libraries/evas/src/lib/canvas/evas_object_intercept.c index c3e5e24..54f7265 100644 --- a/libraries/evas/src/lib/canvas/evas_object_intercept.c +++ b/libraries/evas/src/lib/canvas/evas_object_intercept.c | |||
@@ -9,7 +9,6 @@ static void evas_object_intercept_deinit(Evas_Object *obj); | |||
9 | static void | 9 | static void |
10 | evas_object_intercept_init(Evas_Object *obj) | 10 | evas_object_intercept_init(Evas_Object *obj) |
11 | { | 11 | { |
12 | /* MEM OK */ | ||
13 | if (!obj->interceptors) | 12 | if (!obj->interceptors) |
14 | obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func)); | 13 | obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func)); |
15 | } | 14 | } |
@@ -17,7 +16,6 @@ evas_object_intercept_init(Evas_Object *obj) | |||
17 | static void | 16 | static void |
18 | evas_object_intercept_deinit(Evas_Object *obj) | 17 | evas_object_intercept_deinit(Evas_Object *obj) |
19 | { | 18 | { |
20 | /* MEM OK */ | ||
21 | if (!obj->interceptors) return; | 19 | if (!obj->interceptors) return; |
22 | if ((obj->interceptors->show.func) || | 20 | if ((obj->interceptors->show.func) || |
23 | (obj->interceptors->hide.func) || | 21 | (obj->interceptors->hide.func) || |
@@ -41,199 +39,186 @@ evas_object_intercept_deinit(Evas_Object *obj) | |||
41 | void | 39 | void |
42 | evas_object_intercept_cleanup(Evas_Object *obj) | 40 | evas_object_intercept_cleanup(Evas_Object *obj) |
43 | { | 41 | { |
44 | /* MEM OK */ | ||
45 | if (obj->interceptors) free(obj->interceptors); | 42 | if (obj->interceptors) free(obj->interceptors); |
46 | } | 43 | } |
47 | 44 | ||
48 | int | 45 | int |
49 | evas_object_intercept_call_show(Evas_Object *obj) | 46 | evas_object_intercept_call_show(Evas_Object *obj) |
50 | { | 47 | { |
51 | /* MEM OK */ | ||
52 | int ret; | 48 | int ret; |
53 | 49 | ||
54 | if (!obj->interceptors) return 0; | 50 | if (!obj->interceptors) return 0; |
55 | if (obj->intercepted) return 0; | 51 | if (obj->intercepted) return 0; |
56 | obj->intercepted = 1; | 52 | obj->intercepted = EINA_TRUE; |
57 | ret = !!(obj->interceptors->show.func); | 53 | ret = !!(obj->interceptors->show.func); |
58 | if (obj->interceptors->show.func) | 54 | if (ret) |
59 | obj->interceptors->show.func(obj->interceptors->show.data, obj); | 55 | obj->interceptors->show.func(obj->interceptors->show.data, obj); |
60 | obj->intercepted = 0; | 56 | obj->intercepted = EINA_FALSE; |
61 | return ret; | 57 | return ret; |
62 | } | 58 | } |
63 | 59 | ||
64 | int | 60 | int |
65 | evas_object_intercept_call_hide(Evas_Object *obj) | 61 | evas_object_intercept_call_hide(Evas_Object *obj) |
66 | { | 62 | { |
67 | /* MEM OK */ | ||
68 | int ret; | 63 | int ret; |
69 | 64 | ||
70 | if (!obj->interceptors) return 0; | 65 | if (!obj->interceptors) return 0; |
71 | if (obj->intercepted) return 0; | 66 | if (obj->intercepted) return 0; |
72 | obj->intercepted = 1; | 67 | obj->intercepted = EINA_TRUE; |
73 | ret = !!(obj->interceptors->hide.func); | 68 | ret = !!(obj->interceptors->hide.func); |
74 | if (obj->interceptors->hide.func) | 69 | if (ret) |
75 | obj->interceptors->hide.func(obj->interceptors->hide.data, obj); | 70 | obj->interceptors->hide.func(obj->interceptors->hide.data, obj); |
76 | obj->intercepted = 0; | 71 | obj->intercepted = EINA_FALSE; |
77 | return ret; | 72 | return ret; |
78 | } | 73 | } |
79 | 74 | ||
80 | int | 75 | int |
81 | evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) | 76 | evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) |
82 | { | 77 | { |
83 | /* MEM OK */ | ||
84 | int ret; | 78 | int ret; |
85 | 79 | ||
86 | if (!obj->interceptors) return 0; | 80 | if (!obj->interceptors) return 0; |
87 | if (obj->intercepted) return 0; | 81 | if (obj->intercepted) return 0; |
88 | obj->intercepted = 1; | 82 | obj->intercepted = EINA_TRUE; |
89 | ret = !!(obj->interceptors->move.func); | 83 | ret = !!(obj->interceptors->move.func); |
90 | if (obj->interceptors->move.func) | 84 | if (ret) |
91 | obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y); | 85 | obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y); |
92 | obj->intercepted = 0; | 86 | obj->intercepted = EINA_FALSE; |
93 | return ret; | 87 | return ret; |
94 | } | 88 | } |
95 | 89 | ||
96 | int | 90 | int |
97 | evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) | 91 | evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) |
98 | { | 92 | { |
99 | /* MEM OK */ | ||
100 | int ret; | 93 | int ret; |
101 | 94 | ||
102 | if (!obj->interceptors) return 0; | 95 | if (!obj->interceptors) return 0; |
103 | if (obj->intercepted) return 0; | 96 | if (obj->intercepted) return 0; |
104 | obj->intercepted = 1; | 97 | obj->intercepted = EINA_TRUE; |
105 | ret = !!(obj->interceptors->resize.func); | 98 | ret = !!(obj->interceptors->resize.func); |
106 | if (obj->interceptors->resize.func) | 99 | if (ret) |
107 | obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h); | 100 | obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h); |
108 | obj->intercepted = 0; | 101 | obj->intercepted = EINA_FALSE; |
109 | return ret; | 102 | return ret; |
110 | } | 103 | } |
111 | 104 | ||
112 | int | 105 | int |
113 | evas_object_intercept_call_raise(Evas_Object *obj) | 106 | evas_object_intercept_call_raise(Evas_Object *obj) |
114 | { | 107 | { |
115 | /* MEM OK */ | ||
116 | int ret; | 108 | int ret; |
117 | 109 | ||
118 | if (!obj->interceptors) return 0; | 110 | if (!obj->interceptors) return 0; |
119 | if (obj->intercepted) return 0; | 111 | if (obj->intercepted) return 0; |
120 | obj->intercepted = 1; | 112 | obj->intercepted = EINA_TRUE; |
121 | ret = !!(obj->interceptors->raise.func); | 113 | ret = !!(obj->interceptors->raise.func); |
122 | if (obj->interceptors->raise.func) | 114 | if (ret) |
123 | obj->interceptors->raise.func(obj->interceptors->raise.data, obj); | 115 | obj->interceptors->raise.func(obj->interceptors->raise.data, obj); |
124 | obj->intercepted = 0; | 116 | obj->intercepted = EINA_FALSE; |
125 | return ret; | 117 | return ret; |
126 | } | 118 | } |
127 | 119 | ||
128 | int | 120 | int |
129 | evas_object_intercept_call_lower(Evas_Object *obj) | 121 | evas_object_intercept_call_lower(Evas_Object *obj) |
130 | { | 122 | { |
131 | /* MEM OK */ | ||
132 | int ret; | 123 | int ret; |
133 | 124 | ||
134 | if (!obj->interceptors) return 0; | 125 | if (!obj->interceptors) return 0; |
135 | if (obj->intercepted) return 0; | 126 | if (obj->intercepted) return 0; |
136 | obj->intercepted = 1; | 127 | obj->intercepted = EINA_TRUE; |
137 | ret = !!(obj->interceptors->lower.func); | 128 | ret = !!(obj->interceptors->lower.func); |
138 | if (obj->interceptors->lower.func) | 129 | if (ret) |
139 | obj->interceptors->lower.func(obj->interceptors->lower.data, obj); | 130 | obj->interceptors->lower.func(obj->interceptors->lower.data, obj); |
140 | obj->intercepted = 0; | 131 | obj->intercepted = EINA_FALSE; |
141 | return ret; | 132 | return ret; |
142 | } | 133 | } |
143 | 134 | ||
144 | int | 135 | int |
145 | evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above) | 136 | evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above) |
146 | { | 137 | { |
147 | /* MEM OK */ | ||
148 | int ret; | 138 | int ret; |
149 | 139 | ||
150 | if (!obj->interceptors) return 0; | 140 | if (!obj->interceptors) return 0; |
151 | if (obj->intercepted) return 0; | 141 | if (obj->intercepted) return 0; |
152 | obj->intercepted = 1; | 142 | obj->intercepted = EINA_TRUE; |
153 | ret = !!(obj->interceptors->stack_above.func); | 143 | ret = !!(obj->interceptors->stack_above.func); |
154 | if (obj->interceptors->stack_above.func) | 144 | if (ret) |
155 | obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above); | 145 | obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above); |
156 | obj->intercepted = 0; | 146 | obj->intercepted = EINA_FALSE; |
157 | return ret; | 147 | return ret; |
158 | } | 148 | } |
159 | 149 | ||
160 | int | 150 | int |
161 | evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below) | 151 | evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below) |
162 | { | 152 | { |
163 | /* MEM OK */ | ||
164 | int ret; | 153 | int ret; |
165 | 154 | ||
166 | if (!obj->interceptors) return 0; | 155 | if (!obj->interceptors) return 0; |
167 | if (obj->intercepted) return 0; | 156 | if (obj->intercepted) return 0; |
168 | obj->intercepted = 1; | 157 | obj->intercepted = EINA_TRUE; |
169 | ret = !!(obj->interceptors->stack_below.func); | 158 | ret = !!(obj->interceptors->stack_below.func); |
170 | if (obj->interceptors->stack_below.func) | 159 | if (ret) |
171 | obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below); | 160 | obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below); |
172 | obj->intercepted = 0; | 161 | obj->intercepted = EINA_FALSE; |
173 | return ret; | 162 | return ret; |
174 | } | 163 | } |
175 | 164 | ||
176 | int | 165 | int |
177 | evas_object_intercept_call_layer_set(Evas_Object *obj, int l) | 166 | evas_object_intercept_call_layer_set(Evas_Object *obj, int l) |
178 | { | 167 | { |
179 | /* MEM OK */ | ||
180 | int ret; | 168 | int ret; |
181 | 169 | ||
182 | if (!obj->interceptors) return 0; | 170 | if (!obj->interceptors) return 0; |
183 | if (obj->intercepted) return 0; | 171 | if (obj->intercepted) return 0; |
184 | obj->intercepted = 1; | 172 | obj->intercepted = EINA_TRUE; |
185 | ret = !!(obj->interceptors->layer_set.func); | 173 | ret = !!(obj->interceptors->layer_set.func); |
186 | if (obj->interceptors->layer_set.func) | 174 | if (ret) |
187 | obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l); | 175 | obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l); |
188 | obj->intercepted = 0; | 176 | obj->intercepted = EINA_FALSE; |
189 | return ret; | 177 | return ret; |
190 | } | 178 | } |
191 | 179 | ||
192 | int | 180 | int |
193 | evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a) | 181 | evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a) |
194 | { | 182 | { |
195 | /* MEM OK */ | ||
196 | int ret; | 183 | int ret; |
197 | 184 | ||
198 | if (!obj->interceptors) return 0; | 185 | if (!obj->interceptors) return 0; |
199 | if (obj->intercepted) return 0; | 186 | if (obj->intercepted) return 0; |
200 | obj->intercepted = 1; | 187 | obj->intercepted = EINA_TRUE; |
201 | ret = !!(obj->interceptors->color_set.func); | 188 | ret = !!(obj->interceptors->color_set.func); |
202 | if (obj->interceptors->color_set.func) | 189 | if (ret) |
203 | obj->interceptors->color_set.func(obj->interceptors->color_set.data, obj, r, g, b, a); | 190 | obj->interceptors->color_set.func(obj->interceptors->color_set.data, obj, r, g, b, a); |
204 | obj->intercepted = 0; | 191 | obj->intercepted = EINA_FALSE; |
205 | return ret; | 192 | return ret; |
206 | } | 193 | } |
207 | 194 | ||
208 | int | 195 | int |
209 | evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip) | 196 | evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip) |
210 | { | 197 | { |
211 | /* MEM OK */ | ||
212 | int ret; | 198 | int ret; |
213 | 199 | ||
214 | if (!obj->interceptors) return 0; | 200 | if (!obj->interceptors) return 0; |
215 | if (obj->intercepted) return 0; | 201 | if (obj->intercepted) return 0; |
216 | obj->intercepted = 1; | 202 | obj->intercepted = EINA_TRUE; |
217 | ret = !!(obj->interceptors->clip_set.func); | 203 | ret = !!(obj->interceptors->clip_set.func); |
218 | if (obj->interceptors->clip_set.func) | 204 | if (ret) |
219 | obj->interceptors->clip_set.func(obj->interceptors->clip_set.data, obj, clip); | 205 | obj->interceptors->clip_set.func(obj->interceptors->clip_set.data, obj, clip); |
220 | obj->intercepted = 0; | 206 | obj->intercepted = EINA_FALSE; |
221 | return ret; | 207 | return ret; |
222 | } | 208 | } |
223 | 209 | ||
224 | int | 210 | int |
225 | evas_object_intercept_call_clip_unset(Evas_Object *obj) | 211 | evas_object_intercept_call_clip_unset(Evas_Object *obj) |
226 | { | 212 | { |
227 | /* MEM OK */ | ||
228 | int ret; | 213 | int ret; |
229 | 214 | ||
230 | if (!obj->interceptors) return 0; | 215 | if (!obj->interceptors) return 0; |
231 | if (obj->intercepted) return 0; | 216 | if (obj->intercepted) return 0; |
232 | obj->intercepted = 1; | 217 | obj->intercepted = EINA_TRUE; |
233 | ret = !!(obj->interceptors->clip_unset.func); | 218 | ret = !!(obj->interceptors->clip_unset.func); |
234 | if (obj->interceptors->clip_unset.func) | 219 | if (ret) |
235 | obj->interceptors->clip_unset.func(obj->interceptors->clip_unset.data, obj); | 220 | obj->interceptors->clip_unset.func(obj->interceptors->clip_unset.data, obj); |
236 | obj->intercepted = 0; | 221 | obj->intercepted = EINA_FALSE; |
237 | return ret; | 222 | return ret; |
238 | } | 223 | } |
239 | 224 | ||
@@ -242,8 +227,6 @@ evas_object_intercept_call_clip_unset(Evas_Object *obj) | |||
242 | EAPI void | 227 | EAPI void |
243 | evas_object_intercept_show_callback_add(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func, const void *data) | 228 | evas_object_intercept_show_callback_add(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func, const void *data) |
244 | { | 229 | { |
245 | /* MEM OK */ | ||
246 | |||
247 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 230 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
248 | return; | 231 | return; |
249 | MAGIC_CHECK_END(); | 232 | MAGIC_CHECK_END(); |
@@ -257,7 +240,6 @@ evas_object_intercept_show_callback_add(Evas_Object *obj, Evas_Object_Intercept_ | |||
257 | EAPI void * | 240 | EAPI void * |
258 | evas_object_intercept_show_callback_del(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func) | 241 | evas_object_intercept_show_callback_del(Evas_Object *obj, Evas_Object_Intercept_Show_Cb func) |
259 | { | 242 | { |
260 | /* MEM OK */ | ||
261 | void *data; | 243 | void *data; |
262 | 244 | ||
263 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 245 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -275,7 +257,6 @@ evas_object_intercept_show_callback_del(Evas_Object *obj, Evas_Object_Intercept_ | |||
275 | EAPI void | 257 | EAPI void |
276 | evas_object_intercept_hide_callback_add(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func, const void *data) | 258 | evas_object_intercept_hide_callback_add(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func, const void *data) |
277 | { | 259 | { |
278 | /* MEM OK */ | ||
279 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 260 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
280 | return; | 261 | return; |
281 | MAGIC_CHECK_END(); | 262 | MAGIC_CHECK_END(); |
@@ -289,7 +270,6 @@ evas_object_intercept_hide_callback_add(Evas_Object *obj, Evas_Object_Intercept_ | |||
289 | EAPI void * | 270 | EAPI void * |
290 | evas_object_intercept_hide_callback_del(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func) | 271 | evas_object_intercept_hide_callback_del(Evas_Object *obj, Evas_Object_Intercept_Hide_Cb func) |
291 | { | 272 | { |
292 | /* MEM OK */ | ||
293 | void *data; | 273 | void *data; |
294 | 274 | ||
295 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 275 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -307,7 +287,6 @@ evas_object_intercept_hide_callback_del(Evas_Object *obj, Evas_Object_Intercept_ | |||
307 | EAPI void | 287 | EAPI void |
308 | evas_object_intercept_move_callback_add(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func, const void *data) | 288 | evas_object_intercept_move_callback_add(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func, const void *data) |
309 | { | 289 | { |
310 | /* MEM OK */ | ||
311 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 290 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
312 | return; | 291 | return; |
313 | MAGIC_CHECK_END(); | 292 | MAGIC_CHECK_END(); |
@@ -321,7 +300,6 @@ evas_object_intercept_move_callback_add(Evas_Object *obj, Evas_Object_Intercept_ | |||
321 | EAPI void * | 300 | EAPI void * |
322 | evas_object_intercept_move_callback_del(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func) | 301 | evas_object_intercept_move_callback_del(Evas_Object *obj, Evas_Object_Intercept_Move_Cb func) |
323 | { | 302 | { |
324 | /* MEM OK */ | ||
325 | void *data; | 303 | void *data; |
326 | 304 | ||
327 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 305 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -339,7 +317,6 @@ evas_object_intercept_move_callback_del(Evas_Object *obj, Evas_Object_Intercept_ | |||
339 | EAPI void | 317 | EAPI void |
340 | evas_object_intercept_resize_callback_add(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func, const void *data) | 318 | evas_object_intercept_resize_callback_add(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func, const void *data) |
341 | { | 319 | { |
342 | /* MEM OK */ | ||
343 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 320 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
344 | return; | 321 | return; |
345 | MAGIC_CHECK_END(); | 322 | MAGIC_CHECK_END(); |
@@ -353,7 +330,6 @@ evas_object_intercept_resize_callback_add(Evas_Object *obj, Evas_Object_Intercep | |||
353 | EAPI void * | 330 | EAPI void * |
354 | evas_object_intercept_resize_callback_del(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func) | 331 | evas_object_intercept_resize_callback_del(Evas_Object *obj, Evas_Object_Intercept_Resize_Cb func) |
355 | { | 332 | { |
356 | /* MEM OK */ | ||
357 | void *data; | 333 | void *data; |
358 | 334 | ||
359 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 335 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -371,7 +347,6 @@ evas_object_intercept_resize_callback_del(Evas_Object *obj, Evas_Object_Intercep | |||
371 | EAPI void | 347 | EAPI void |
372 | evas_object_intercept_raise_callback_add(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func, const void *data) | 348 | evas_object_intercept_raise_callback_add(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func, const void *data) |
373 | { | 349 | { |
374 | /* MEM OK */ | ||
375 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 350 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
376 | return; | 351 | return; |
377 | MAGIC_CHECK_END(); | 352 | MAGIC_CHECK_END(); |
@@ -385,7 +360,6 @@ evas_object_intercept_raise_callback_add(Evas_Object *obj, Evas_Object_Intercept | |||
385 | EAPI void * | 360 | EAPI void * |
386 | evas_object_intercept_raise_callback_del(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func) | 361 | evas_object_intercept_raise_callback_del(Evas_Object *obj, Evas_Object_Intercept_Raise_Cb func) |
387 | { | 362 | { |
388 | /* MEM OK */ | ||
389 | void *data; | 363 | void *data; |
390 | 364 | ||
391 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 365 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -403,7 +377,6 @@ evas_object_intercept_raise_callback_del(Evas_Object *obj, Evas_Object_Intercept | |||
403 | EAPI void | 377 | EAPI void |
404 | evas_object_intercept_lower_callback_add(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func, const void *data) | 378 | evas_object_intercept_lower_callback_add(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func, const void *data) |
405 | { | 379 | { |
406 | /* MEM OK */ | ||
407 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 380 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
408 | return; | 381 | return; |
409 | MAGIC_CHECK_END(); | 382 | MAGIC_CHECK_END(); |
@@ -417,7 +390,6 @@ evas_object_intercept_lower_callback_add(Evas_Object *obj, Evas_Object_Intercept | |||
417 | EAPI void * | 390 | EAPI void * |
418 | evas_object_intercept_lower_callback_del(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func) | 391 | evas_object_intercept_lower_callback_del(Evas_Object *obj, Evas_Object_Intercept_Lower_Cb func) |
419 | { | 392 | { |
420 | /* MEM OK */ | ||
421 | void *data; | 393 | void *data; |
422 | 394 | ||
423 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 395 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -435,7 +407,6 @@ evas_object_intercept_lower_callback_del(Evas_Object *obj, Evas_Object_Intercept | |||
435 | EAPI void | 407 | EAPI void |
436 | evas_object_intercept_stack_above_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func, const void *data) | 408 | evas_object_intercept_stack_above_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func, const void *data) |
437 | { | 409 | { |
438 | /* MEM OK */ | ||
439 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 410 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
440 | return; | 411 | return; |
441 | MAGIC_CHECK_END(); | 412 | MAGIC_CHECK_END(); |
@@ -449,7 +420,6 @@ evas_object_intercept_stack_above_callback_add(Evas_Object *obj, Evas_Object_Int | |||
449 | EAPI void * | 420 | EAPI void * |
450 | evas_object_intercept_stack_above_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func) | 421 | evas_object_intercept_stack_above_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Above_Cb func) |
451 | { | 422 | { |
452 | /* MEM OK */ | ||
453 | void *data; | 423 | void *data; |
454 | 424 | ||
455 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 425 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -467,7 +437,6 @@ evas_object_intercept_stack_above_callback_del(Evas_Object *obj, Evas_Object_Int | |||
467 | EAPI void | 437 | EAPI void |
468 | evas_object_intercept_stack_below_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func, const void *data) | 438 | evas_object_intercept_stack_below_callback_add(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func, const void *data) |
469 | { | 439 | { |
470 | /* MEM OK */ | ||
471 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 440 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
472 | return; | 441 | return; |
473 | MAGIC_CHECK_END(); | 442 | MAGIC_CHECK_END(); |
@@ -481,7 +450,6 @@ evas_object_intercept_stack_below_callback_add(Evas_Object *obj, Evas_Object_Int | |||
481 | EAPI void * | 450 | EAPI void * |
482 | evas_object_intercept_stack_below_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func) | 451 | evas_object_intercept_stack_below_callback_del(Evas_Object *obj, Evas_Object_Intercept_Stack_Below_Cb func) |
483 | { | 452 | { |
484 | /* MEM OK */ | ||
485 | void *data; | 453 | void *data; |
486 | 454 | ||
487 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 455 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -499,7 +467,6 @@ evas_object_intercept_stack_below_callback_del(Evas_Object *obj, Evas_Object_Int | |||
499 | EAPI void | 467 | EAPI void |
500 | evas_object_intercept_layer_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func, const void *data) | 468 | evas_object_intercept_layer_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func, const void *data) |
501 | { | 469 | { |
502 | /* MEM OK */ | ||
503 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 470 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
504 | return; | 471 | return; |
505 | MAGIC_CHECK_END(); | 472 | MAGIC_CHECK_END(); |
@@ -513,7 +480,6 @@ evas_object_intercept_layer_set_callback_add(Evas_Object *obj, Evas_Object_Inter | |||
513 | EAPI void * | 480 | EAPI void * |
514 | evas_object_intercept_layer_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func) | 481 | evas_object_intercept_layer_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Layer_Set_Cb func) |
515 | { | 482 | { |
516 | /* MEM OK */ | ||
517 | void *data; | 483 | void *data; |
518 | 484 | ||
519 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 485 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -531,7 +497,6 @@ evas_object_intercept_layer_set_callback_del(Evas_Object *obj, Evas_Object_Inter | |||
531 | EAPI void | 497 | EAPI void |
532 | evas_object_intercept_color_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func, const void *data) | 498 | evas_object_intercept_color_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func, const void *data) |
533 | { | 499 | { |
534 | /* MEM OK */ | ||
535 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 500 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
536 | return; | 501 | return; |
537 | MAGIC_CHECK_END(); | 502 | MAGIC_CHECK_END(); |
@@ -545,7 +510,6 @@ evas_object_intercept_color_set_callback_add(Evas_Object *obj, Evas_Object_Inter | |||
545 | EAPI void * | 510 | EAPI void * |
546 | evas_object_intercept_color_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func) | 511 | evas_object_intercept_color_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Color_Set_Cb func) |
547 | { | 512 | { |
548 | /* MEM OK */ | ||
549 | void *data; | 513 | void *data; |
550 | 514 | ||
551 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 515 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -563,7 +527,6 @@ evas_object_intercept_color_set_callback_del(Evas_Object *obj, Evas_Object_Inter | |||
563 | EAPI void | 527 | EAPI void |
564 | evas_object_intercept_clip_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func, const void *data) | 528 | evas_object_intercept_clip_set_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func, const void *data) |
565 | { | 529 | { |
566 | /* MEM OK */ | ||
567 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 530 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
568 | return; | 531 | return; |
569 | MAGIC_CHECK_END(); | 532 | MAGIC_CHECK_END(); |
@@ -577,7 +540,6 @@ evas_object_intercept_clip_set_callback_add(Evas_Object *obj, Evas_Object_Interc | |||
577 | EAPI void * | 540 | EAPI void * |
578 | evas_object_intercept_clip_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func) | 541 | evas_object_intercept_clip_set_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Set_Cb func) |
579 | { | 542 | { |
580 | /* MEM OK */ | ||
581 | void *data; | 543 | void *data; |
582 | 544 | ||
583 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 545 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
@@ -595,7 +557,6 @@ evas_object_intercept_clip_set_callback_del(Evas_Object *obj, Evas_Object_Interc | |||
595 | EAPI void | 557 | EAPI void |
596 | evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func, const void *data) | 558 | evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func, const void *data) |
597 | { | 559 | { |
598 | /* MEM OK */ | ||
599 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 560 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
600 | return; | 561 | return; |
601 | MAGIC_CHECK_END(); | 562 | MAGIC_CHECK_END(); |
@@ -609,7 +570,6 @@ evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, Evas_Object_Inte | |||
609 | EAPI void * | 570 | EAPI void * |
610 | evas_object_intercept_clip_unset_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func) | 571 | evas_object_intercept_clip_unset_callback_del(Evas_Object *obj, Evas_Object_Intercept_Clip_Unset_Cb func) |
611 | { | 572 | { |
612 | /* MEM OK */ | ||
613 | void *data; | 573 | void *data; |
614 | 574 | ||
615 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 575 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
diff --git a/libraries/evas/src/lib/canvas/evas_object_main.c b/libraries/evas/src/lib/canvas/evas_object_main.c index 3eaded9..86ab498 100644 --- a/libraries/evas/src/lib/canvas/evas_object_main.c +++ b/libraries/evas/src/lib/canvas/evas_object_main.c | |||
@@ -25,6 +25,7 @@ evas_object_new(Evas *e __UNUSED__) | |||
25 | obj->magic = MAGIC_OBJ; | 25 | obj->magic = MAGIC_OBJ; |
26 | obj->cur.scale = 1.0; | 26 | obj->cur.scale = 1.0; |
27 | obj->prev.scale = 1.0; | 27 | obj->prev.scale = 1.0; |
28 | obj->is_frame = EINA_FALSE; | ||
28 | 29 | ||
29 | return obj; | 30 | return obj; |
30 | } | 31 | } |
@@ -99,7 +100,8 @@ evas_object_change(Evas_Object *obj) | |||
99 | /* set changed flag on all objects this one clips too */ | 100 | /* set changed flag on all objects this one clips too */ |
100 | if (!((movch) && (obj->is_static_clip))) | 101 | if (!((movch) && (obj->is_static_clip))) |
101 | { | 102 | { |
102 | EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) evas_object_change(obj2); | 103 | EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) |
104 | evas_object_change(obj2); | ||
103 | } | 105 | } |
104 | EINA_LIST_FOREACH(obj->proxy.proxies, l, obj2) | 106 | EINA_LIST_FOREACH(obj->proxy.proxies, l, obj2) |
105 | { | 107 | { |
@@ -111,8 +113,8 @@ evas_object_change(Evas_Object *obj) | |||
111 | void | 113 | void |
112 | evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v) | 114 | evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v) |
113 | { | 115 | { |
114 | if (obj->smart.smart) return ; | 116 | if (obj->smart.smart) return; |
115 | if (is_v == was_v) return ; | 117 | if (is_v == was_v) return; |
116 | if (is_v) | 118 | if (is_v) |
117 | { | 119 | { |
118 | evas_add_rect(rects, | 120 | evas_add_rect(rects, |
@@ -134,8 +136,8 @@ evas_object_render_pre_visible_change(Eina_Array *rects, Evas_Object *obj, int i | |||
134 | void | 136 | void |
135 | evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *obj) | 137 | evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *obj) |
136 | { | 138 | { |
137 | if (obj->smart.smart) return ; | 139 | if (obj->smart.smart) return; |
138 | if (obj->cur.clipper == obj->prev.clipper) return ; | 140 | if (obj->cur.clipper == obj->prev.clipper) return; |
139 | if ((obj->cur.clipper) && (obj->prev.clipper)) | 141 | if ((obj->cur.clipper) && (obj->prev.clipper)) |
140 | { | 142 | { |
141 | /* get difference rects between clippers */ | 143 | /* get difference rects between clippers */ |
@@ -223,7 +225,8 @@ evas_object_clip_changes_clean(Evas_Object *obj) | |||
223 | { | 225 | { |
224 | Eina_Rectangle *r; | 226 | Eina_Rectangle *r; |
225 | 227 | ||
226 | EINA_LIST_FREE(obj->clip.changes, r) eina_rectangle_free(r); | 228 | EINA_LIST_FREE(obj->clip.changes, r) |
229 | eina_rectangle_free(r); | ||
227 | } | 230 | } |
228 | 231 | ||
229 | void | 232 | void |
@@ -408,11 +411,11 @@ evas_object_del(Evas_Object *obj) | |||
408 | obj->focused = 0; | 411 | obj->focused = 0; |
409 | obj->layer->evas->focused = NULL; | 412 | obj->layer->evas->focused = NULL; |
410 | _evas_object_event_new(); | 413 | _evas_object_event_new(); |
411 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); | 414 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, _evas_event_counter); |
412 | _evas_post_event_callback_call(obj->layer->evas); | 415 | _evas_post_event_callback_call(obj->layer->evas); |
413 | } | 416 | } |
414 | _evas_object_event_new(); | 417 | _evas_object_event_new(); |
415 | evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL); | 418 | evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL, _evas_event_counter); |
416 | _evas_post_event_callback_call(obj->layer->evas); | 419 | _evas_post_event_callback_call(obj->layer->evas); |
417 | if (obj->mouse_grabbed > 0) | 420 | if (obj->mouse_grabbed > 0) |
418 | obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; | 421 | obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; |
@@ -426,9 +429,6 @@ evas_object_del(Evas_Object *obj) | |||
426 | evas_object_free(obj, 1); | 429 | evas_object_free(obj, 1); |
427 | return; | 430 | return; |
428 | } | 431 | } |
429 | obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed; | ||
430 | obj->mouse_grabbed = 0; | ||
431 | obj->mouse_in = 0; | ||
432 | evas_object_grabs_cleanup(obj); | 432 | evas_object_grabs_cleanup(obj); |
433 | while (obj->clip.clipees) | 433 | while (obj->clip.clipees) |
434 | evas_object_clip_unset(obj->clip.clipees->data); | 434 | evas_object_clip_unset(obj->clip.clipees->data); |
@@ -438,7 +438,7 @@ evas_object_del(Evas_Object *obj) | |||
438 | if (obj->smart.smart) evas_object_smart_del(obj); | 438 | if (obj->smart.smart) evas_object_smart_del(obj); |
439 | evas_object_map_set(obj, NULL); | 439 | evas_object_map_set(obj, NULL); |
440 | _evas_object_event_new(); | 440 | _evas_object_event_new(); |
441 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL); | 441 | evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL, _evas_event_counter); |
442 | _evas_post_event_callback_call(obj->layer->evas); | 442 | _evas_post_event_callback_call(obj->layer->evas); |
443 | evas_object_smart_cleanup(obj); | 443 | evas_object_smart_cleanup(obj); |
444 | obj->delete_me = 1; | 444 | obj->delete_me = 1; |
@@ -449,18 +449,38 @@ EAPI void | |||
449 | evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) | 449 | evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) |
450 | { | 450 | { |
451 | int is, was = 0, pass = 0, freeze = 0; | 451 | int is, was = 0, pass = 0, freeze = 0; |
452 | int nx = 0, ny = 0; | ||
452 | 453 | ||
453 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 454 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
454 | return; | 455 | return; |
455 | MAGIC_CHECK_END(); | 456 | MAGIC_CHECK_END(); |
456 | if (obj->delete_me) return; | 457 | if (obj->delete_me) return; |
457 | if (evas_object_intercept_call_move(obj, x, y)) return; | 458 | |
459 | nx = x; | ||
460 | ny = y; | ||
461 | |||
462 | if (!obj->is_frame) | ||
463 | { | ||
464 | int fx, fy; | ||
465 | |||
466 | evas_output_framespace_get(obj->layer->evas, &fx, &fy, NULL, NULL); | ||
467 | if (!obj->smart.parent) | ||
468 | { | ||
469 | nx += fx; | ||
470 | ny += fy; | ||
471 | } | ||
472 | } | ||
473 | |||
474 | if (evas_object_intercept_call_move(obj, nx, ny)) return; | ||
475 | |||
458 | if (obj->doing.in_move > 0) | 476 | if (obj->doing.in_move > 0) |
459 | { | 477 | { |
460 | WRN("evas_object_move() called on object %p when in the middle of moving the same object", obj); | 478 | WRN("evas_object_move() called on object %p when in the middle of moving the same object", obj); |
461 | return; | 479 | return; |
462 | } | 480 | } |
463 | if ((obj->cur.geometry.x == x) && (obj->cur.geometry.y == y)) return; | 481 | |
482 | if ((obj->cur.geometry.x == nx) && (obj->cur.geometry.y == ny)) return; | ||
483 | |||
464 | if (obj->layer->evas->events_frozen <= 0) | 484 | if (obj->layer->evas->events_frozen <= 0) |
465 | { | 485 | { |
466 | pass = evas_event_passes_through(obj); | 486 | pass = evas_event_passes_through(obj); |
@@ -471,13 +491,16 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) | |||
471 | obj->layer->evas->pointer.y, 1, 1); | 491 | obj->layer->evas->pointer.y, 1, 1); |
472 | } | 492 | } |
473 | obj->doing.in_move++; | 493 | obj->doing.in_move++; |
494 | |||
474 | if (obj->smart.smart) | 495 | if (obj->smart.smart) |
475 | { | 496 | { |
476 | if (obj->smart.smart->smart_class->move) | 497 | if (obj->smart.smart->smart_class->move) |
477 | obj->smart.smart->smart_class->move(obj, x, y); | 498 | obj->smart.smart->smart_class->move(obj, nx, ny); |
478 | } | 499 | } |
479 | obj->cur.geometry.x = x; | 500 | |
480 | obj->cur.geometry.y = y; | 501 | obj->cur.geometry.x = nx; |
502 | obj->cur.geometry.y = ny; | ||
503 | |||
481 | //// obj->cur.cache.geometry.validity = 0; | 504 | //// obj->cur.cache.geometry.validity = 0; |
482 | obj->changed_move = 1; | 505 | obj->changed_move = 1; |
483 | evas_object_change(obj); | 506 | evas_object_change(obj); |
@@ -509,19 +532,40 @@ EAPI void | |||
509 | evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) | 532 | evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) |
510 | { | 533 | { |
511 | int is, was = 0, pass = 0, freeze =0; | 534 | int is, was = 0, pass = 0, freeze =0; |
535 | int nw = 0, nh = 0; | ||
512 | 536 | ||
513 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | 537 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
514 | return; | 538 | return; |
515 | MAGIC_CHECK_END(); | 539 | MAGIC_CHECK_END(); |
516 | if (obj->delete_me) return; | 540 | if (obj->delete_me) return; |
517 | if (w < 0) w = 0; if (h < 0) h = 0; | 541 | if (w < 0) w = 0; if (h < 0) h = 0; |
518 | if (evas_object_intercept_call_resize(obj, w, h)) return; | 542 | |
543 | nw = w; | ||
544 | nh = h; | ||
545 | if (!obj->is_frame) | ||
546 | { | ||
547 | int fw, fh; | ||
548 | |||
549 | evas_output_framespace_get(obj->layer->evas, NULL, NULL, &fw, &fh); | ||
550 | if (!obj->smart.parent) | ||
551 | { | ||
552 | nw = w - fw; | ||
553 | nh = h - fh; | ||
554 | if (nw < 0) nw = 0; | ||
555 | if (nh < 0) nh = 0; | ||
556 | } | ||
557 | } | ||
558 | |||
559 | if (evas_object_intercept_call_resize(obj, nw, nh)) return; | ||
560 | |||
519 | if (obj->doing.in_resize > 0) | 561 | if (obj->doing.in_resize > 0) |
520 | { | 562 | { |
521 | WRN("evas_object_resize() called on object %p when in the middle of resizing the same object", obj); | 563 | WRN("evas_object_resize() called on object %p when in the middle of resizing the same object", obj); |
522 | return; | 564 | return; |
523 | } | 565 | } |
524 | if ((obj->cur.geometry.w == w) && (obj->cur.geometry.h == h)) return; | 566 | |
567 | if ((obj->cur.geometry.w == nw) && (obj->cur.geometry.h == nh)) return; | ||
568 | |||
525 | if (obj->layer->evas->events_frozen <= 0) | 569 | if (obj->layer->evas->events_frozen <= 0) |
526 | { | 570 | { |
527 | pass = evas_event_passes_through(obj); | 571 | pass = evas_event_passes_through(obj); |
@@ -532,13 +576,16 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) | |||
532 | obj->layer->evas->pointer.y, 1, 1); | 576 | obj->layer->evas->pointer.y, 1, 1); |
533 | } | 577 | } |
534 | obj->doing.in_resize++; | 578 | obj->doing.in_resize++; |
579 | |||
535 | if (obj->smart.smart) | 580 | if (obj->smart.smart) |
536 | { | 581 | { |
537 | if (obj->smart.smart->smart_class->resize) | 582 | if (obj->smart.smart->smart_class->resize) |
538 | obj->smart.smart->smart_class->resize(obj, w, h); | 583 | obj->smart.smart->smart_class->resize(obj, nw, nh); |
539 | } | 584 | } |
540 | obj->cur.geometry.w = w; | 585 | |
541 | obj->cur.geometry.h = h; | 586 | obj->cur.geometry.w = nw; |
587 | obj->cur.geometry.h = nh; | ||
588 | |||
542 | //// obj->cur.cache.geometry.validity = 0; | 589 | //// obj->cur.cache.geometry.validity = 0; |
543 | evas_object_change(obj); | 590 | evas_object_change(obj); |
544 | evas_object_clip_dirty(obj); | 591 | evas_object_clip_dirty(obj); |
@@ -581,6 +628,7 @@ evas_object_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, E | |||
581 | if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0; | 628 | if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0; |
582 | return; | 629 | return; |
583 | } | 630 | } |
631 | |||
584 | if (x) *x = obj->cur.geometry.x; | 632 | if (x) *x = obj->cur.geometry.x; |
585 | if (y) *y = obj->cur.geometry.y; | 633 | if (y) *y = obj->cur.geometry.y; |
586 | if (w) *w = obj->cur.geometry.w; | 634 | if (w) *w = obj->cur.geometry.w; |
@@ -1084,8 +1132,7 @@ evas_object_render_op_set(Evas_Object *obj, Evas_Render_Op render_op) | |||
1084 | return; | 1132 | return; |
1085 | MAGIC_CHECK_END(); | 1133 | MAGIC_CHECK_END(); |
1086 | if (obj->delete_me) return; | 1134 | if (obj->delete_me) return; |
1087 | if ((Evas_Render_Op)obj->cur.render_op == render_op) | 1135 | if (obj->cur.render_op == render_op) return; |
1088 | return; | ||
1089 | obj->cur.render_op = render_op; | 1136 | obj->cur.render_op = render_op; |
1090 | evas_object_change(obj); | 1137 | evas_object_change(obj); |
1091 | } | 1138 | } |
@@ -1317,3 +1364,20 @@ evas_object_static_clip_get(const Evas_Object *obj) | |||
1317 | return obj->is_static_clip; | 1364 | return obj->is_static_clip; |
1318 | } | 1365 | } |
1319 | 1366 | ||
1367 | EAPI void | ||
1368 | evas_object_is_frame_object_set(Evas_Object *obj, Eina_Bool is_frame) | ||
1369 | { | ||
1370 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
1371 | return; | ||
1372 | MAGIC_CHECK_END(); | ||
1373 | obj->is_frame = is_frame; | ||
1374 | } | ||
1375 | |||
1376 | EAPI Eina_Bool | ||
1377 | evas_object_is_frame_object_get(Evas_Object *obj) | ||
1378 | { | ||
1379 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
1380 | return EINA_FALSE; | ||
1381 | MAGIC_CHECK_END(); | ||
1382 | return obj->is_frame; | ||
1383 | } | ||
diff --git a/libraries/evas/src/lib/canvas/evas_object_smart.c b/libraries/evas/src/lib/canvas/evas_object_smart.c index a7dfcdf..69d7f3b 100644 --- a/libraries/evas/src/lib/canvas/evas_object_smart.c +++ b/libraries/evas/src/lib/canvas/evas_object_smart.c | |||
@@ -402,6 +402,37 @@ evas_object_smart_callback_del(Evas_Object *obj, const char *event, Evas_Smart_C | |||
402 | return NULL; | 402 | return NULL; |
403 | } | 403 | } |
404 | 404 | ||
405 | EAPI void * | ||
406 | evas_object_smart_callback_del_full(Evas_Object *obj, const char *event, Evas_Smart_Cb func, const void *data) | ||
407 | { | ||
408 | Evas_Object_Smart *o; | ||
409 | Eina_List *l; | ||
410 | Evas_Smart_Callback *cb; | ||
411 | |||
412 | MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); | ||
413 | return NULL; | ||
414 | MAGIC_CHECK_END(); | ||
415 | o = (Evas_Object_Smart *)(obj->object_data); | ||
416 | MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART); | ||
417 | return NULL; | ||
418 | MAGIC_CHECK_END(); | ||
419 | if (!event) return NULL; | ||
420 | EINA_LIST_FOREACH(o->callbacks, l, cb) | ||
421 | { | ||
422 | if ((!strcmp(cb->event, event)) && (cb->func == func) && (cb->func_data == data)) | ||
423 | { | ||
424 | void *ret; | ||
425 | |||
426 | ret = cb->func_data; | ||
427 | cb->delete_me = 1; | ||
428 | o->deletions_waiting = 1; | ||
429 | evas_object_smart_callbacks_clear(obj); | ||
430 | return ret; | ||
431 | } | ||
432 | } | ||
433 | return NULL; | ||
434 | } | ||
435 | |||
405 | EAPI void | 436 | EAPI void |
406 | evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info) | 437 | evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info) |
407 | { | 438 | { |
diff --git a/libraries/evas/src/lib/canvas/evas_object_table.c b/libraries/evas/src/lib/canvas/evas_object_table.c index 6e28fce..cdfa07f 100644 --- a/libraries/evas/src/lib/canvas/evas_object_table.c +++ b/libraries/evas/src/lib/canvas/evas_object_table.c | |||
@@ -1,5 +1,5 @@ | |||
1 | #include <errno.h> | ||
2 | #include "evas_common.h" | 1 | #include "evas_common.h" |
2 | #include <errno.h> | ||
3 | 3 | ||
4 | typedef struct _Evas_Object_Table_Data Evas_Object_Table_Data; | 4 | typedef struct _Evas_Object_Table_Data Evas_Object_Table_Data; |
5 | typedef struct _Evas_Object_Table_Option Evas_Object_Table_Option; | 5 | typedef struct _Evas_Object_Table_Option Evas_Object_Table_Option; |
diff --git a/libraries/evas/src/lib/canvas/evas_object_text.c b/libraries/evas/src/lib/canvas/evas_object_text.c index 6c30fcc..dbe5e08 100644 --- a/libraries/evas/src/lib/canvas/evas_object_text.c +++ b/libraries/evas/src/lib/canvas/evas_object_text.c | |||
@@ -531,8 +531,9 @@ _evas_object_text_layout(Evas_Object *obj, Evas_Object_Text *o, const Eina_Unico | |||
531 | { | 531 | { |
532 | EvasBiDiStrIndex *v_to_l = NULL; | 532 | EvasBiDiStrIndex *v_to_l = NULL; |
533 | size_t pos, visual_pos; | 533 | size_t pos, visual_pos; |
534 | int len = eina_unicode_strlen(text), par_len; | 534 | int len = eina_unicode_strlen(text); |
535 | #ifdef BIDI_SUPPORT | 535 | #ifdef BIDI_SUPPORT |
536 | int par_len = len; | ||
536 | int *segment_idxs = NULL; | 537 | int *segment_idxs = NULL; |
537 | if (o->bidi_delimiters) | 538 | if (o->bidi_delimiters) |
538 | segment_idxs = evas_bidi_segment_idxs_get(text, o->bidi_delimiters); | 539 | segment_idxs = evas_bidi_segment_idxs_get(text, o->bidi_delimiters); |
@@ -543,7 +544,6 @@ _evas_object_text_layout(Evas_Object *obj, Evas_Object_Text *o, const Eina_Unico | |||
543 | #endif | 544 | #endif |
544 | visual_pos = pos = 0; | 545 | visual_pos = pos = 0; |
545 | 546 | ||
546 | par_len = len; | ||
547 | while (len > 0) | 547 | while (len > 0) |
548 | { | 548 | { |
549 | Evas_Font_Instance *script_fi = NULL; | 549 | Evas_Font_Instance *script_fi = NULL; |
diff --git a/libraries/evas/src/lib/canvas/evas_object_textblock.c b/libraries/evas/src/lib/canvas/evas_object_textblock.c index 7941a45..568911c 100644 --- a/libraries/evas/src/lib/canvas/evas_object_textblock.c +++ b/libraries/evas/src/lib/canvas/evas_object_textblock.c | |||
@@ -61,13 +61,13 @@ | |||
61 | * @subsection textblock_layout The layout system | 61 | * @subsection textblock_layout The layout system |
62 | * @todo write @ref textblock_layout | 62 | * @todo write @ref textblock_layout |
63 | */ | 63 | */ |
64 | #include <stdlib.h> | ||
65 | |||
66 | #include "evas_common.h" | 64 | #include "evas_common.h" |
67 | #include "evas_private.h" | 65 | #include "evas_private.h" |
66 | #include <stdlib.h> | ||
68 | 67 | ||
69 | #ifdef HAVE_LINEBREAK | 68 | #ifdef HAVE_LINEBREAK |
70 | #include "linebreak.h" | 69 | #include "linebreak.h" |
70 | #include "wordbreak.h" | ||
71 | #endif | 71 | #endif |
72 | 72 | ||
73 | /* save typing */ | 73 | /* save typing */ |
@@ -78,12 +78,19 @@ | |||
78 | static const char o_type[] = "textblock"; | 78 | static const char o_type[] = "textblock"; |
79 | 79 | ||
80 | /* The char to be inserted instead of visible formats */ | 80 | /* The char to be inserted instead of visible formats */ |
81 | #define EVAS_TEXTBLOCK_REPLACEMENT_CHAR 0xFFFC | 81 | #define _REPLACEMENT_CHAR 0xFFFC |
82 | #define _PARAGRAPH_SEPARATOR 0x2029 | 82 | #define _PARAGRAPH_SEPARATOR 0x2029 |
83 | #define _NEWLINE '\n' | ||
84 | #define _TAB '\t' | ||
85 | |||
86 | #define _REPLACEMENT_CHAR_UTF8 "\xEF\xBF\xBC" | ||
87 | #define _PARAGRAPH_SEPARATOR_UTF8 "\xE2\x80\xA9" | ||
88 | #define _NEWLINE_UTF8 "\n" | ||
89 | #define _TAB_UTF8 "\t" | ||
83 | #define EVAS_TEXTBLOCK_IS_VISIBLE_FORMAT_CHAR(ch) \ | 90 | #define EVAS_TEXTBLOCK_IS_VISIBLE_FORMAT_CHAR(ch) \ |
84 | (((ch) == EVAS_TEXTBLOCK_REPLACEMENT_CHAR) || \ | 91 | (((ch) == _REPLACEMENT_CHAR) || \ |
85 | ((ch) == '\n') || \ | 92 | ((ch) == _NEWLINE) || \ |
86 | ((ch) == '\t') || \ | 93 | ((ch) == _TAB) || \ |
87 | ((ch) == _PARAGRAPH_SEPARATOR)) | 94 | ((ch) == _PARAGRAPH_SEPARATOR)) |
88 | 95 | ||
89 | /* private struct for textblock object internal data */ | 96 | /* private struct for textblock object internal data */ |
@@ -101,6 +108,12 @@ typedef struct _Evas_Object_Textblock Evas_Object_Textblock; | |||
101 | typedef struct _Evas_Object_Style_Tag Evas_Object_Style_Tag; | 108 | typedef struct _Evas_Object_Style_Tag Evas_Object_Style_Tag; |
102 | /** | 109 | /** |
103 | * @internal | 110 | * @internal |
111 | * @typedef Evas_Object_Style_Tag | ||
112 | * The structure used for finding style tags. | ||
113 | */ | ||
114 | typedef struct _Evas_Object_Style_Tag_Base Evas_Object_Style_Tag_Base; | ||
115 | /** | ||
116 | * @internal | ||
104 | * @typedef Evas_Object_Textblock_Node_Text | 117 | * @typedef Evas_Object_Textblock_Node_Text |
105 | * A text node. | 118 | * A text node. |
106 | */ | 119 | */ |
@@ -195,21 +208,26 @@ typedef struct _Evas_Object_Textblock_Format Evas_Object_Textblock_Format; | |||
195 | * Returns true if closer is the closer of base. | 208 | * Returns true if closer is the closer of base. |
196 | */ | 209 | */ |
197 | #define _FORMAT_IS_CLOSER_OF(base, closer, closer_len) \ | 210 | #define _FORMAT_IS_CLOSER_OF(base, closer, closer_len) \ |
198 | (!strncmp(base + 1, closer, closer_len) && \ | 211 | (!strncmp(base, closer, closer_len) && \ |
199 | (!base[closer_len + 1] || \ | 212 | (!base[closer_len] || \ |
200 | (base[closer_len + 1] == '=') || \ | 213 | (base[closer_len] == '=') || \ |
201 | _is_white(base[closer_len + 1]))) | 214 | _is_white(base[closer_len]))) |
202 | 215 | ||
203 | /*FIXME: document the structs and struct items. */ | 216 | /*FIXME: document the structs and struct items. */ |
204 | struct _Evas_Object_Style_Tag | 217 | struct _Evas_Object_Style_Tag_Base |
205 | { | 218 | { |
206 | EINA_INLIST; | ||
207 | char *tag; | 219 | char *tag; |
208 | char *replace; | 220 | char *replace; |
209 | size_t tag_len; | 221 | size_t tag_len; |
210 | size_t replace_len; | 222 | size_t replace_len; |
211 | }; | 223 | }; |
212 | 224 | ||
225 | struct _Evas_Object_Style_Tag | ||
226 | { | ||
227 | EINA_INLIST; | ||
228 | Evas_Object_Style_Tag_Base tag; | ||
229 | }; | ||
230 | |||
213 | struct _Evas_Object_Textblock_Node_Text | 231 | struct _Evas_Object_Textblock_Node_Text |
214 | { | 232 | { |
215 | EINA_INLIST; | 233 | EINA_INLIST; |
@@ -229,11 +247,18 @@ struct _Evas_Object_Textblock_Node_Format | |||
229 | Evas_Object_Textblock_Node_Text *text_node; | 247 | Evas_Object_Textblock_Node_Text *text_node; |
230 | size_t offset; | 248 | size_t offset; |
231 | unsigned char anchor : 2; | 249 | unsigned char anchor : 2; |
250 | Eina_Bool opener : 1; | ||
251 | Eina_Bool own_closer : 1; | ||
232 | Eina_Bool visible : 1; | 252 | Eina_Bool visible : 1; |
233 | Eina_Bool format_change : 1; | 253 | Eina_Bool format_change : 1; |
234 | Eina_Bool is_new : 1; | 254 | Eina_Bool is_new : 1; |
235 | }; | 255 | }; |
236 | 256 | ||
257 | /* The default tags to use */ | ||
258 | static const Evas_Object_Style_Tag_Base default_tags[] = { | ||
259 | { "b", "+ font_weight=Bold", 1, 18 }, | ||
260 | { "i", "+ font_style=Italic", 1, 19 }}; | ||
261 | |||
237 | #define ANCHOR_NONE 0 | 262 | #define ANCHOR_NONE 0 |
238 | #define ANCHOR_A 1 | 263 | #define ANCHOR_A 1 |
239 | #define ANCHOR_ITEM 2 | 264 | #define ANCHOR_ITEM 2 |
@@ -538,8 +563,8 @@ _style_replace(Evas_Textblock_Style *ts, const char *style_text) | |||
538 | 563 | ||
539 | tag = (Evas_Object_Style_Tag *)ts->tags; | 564 | tag = (Evas_Object_Style_Tag *)ts->tags; |
540 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_remove(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); | 565 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_remove(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); |
541 | free(tag->tag); | 566 | free(tag->tag.tag); |
542 | free(tag->replace); | 567 | free(tag->tag.replace); |
543 | free(tag); | 568 | free(tag); |
544 | } | 569 | } |
545 | ts->default_tag = NULL; | 570 | ts->default_tag = NULL; |
@@ -567,19 +592,38 @@ _style_clear(Evas_Textblock_Style *ts) | |||
567 | * @return The replacement string found. | 592 | * @return The replacement string found. |
568 | */ | 593 | */ |
569 | static inline const char * | 594 | static inline const char * |
570 | _style_match_tag(Evas_Textblock_Style *ts, const char *s, size_t tag_len, size_t *replace_len) | 595 | _style_match_tag(const Evas_Textblock_Style *ts, const char *s, size_t tag_len, size_t *replace_len) |
571 | { | 596 | { |
572 | Evas_Object_Style_Tag *tag; | 597 | Evas_Object_Style_Tag *tag; |
573 | 598 | ||
599 | /* Try the style tags */ | ||
574 | EINA_INLIST_FOREACH(ts->tags, tag) | 600 | EINA_INLIST_FOREACH(ts->tags, tag) |
575 | { | 601 | { |
576 | if (tag->tag_len != tag_len) continue; | 602 | if (tag->tag.tag_len != tag_len) continue; |
577 | if (!strncmp(tag->tag, s, tag_len)) | 603 | if (!strncmp(tag->tag.tag, s, tag_len)) |
578 | { | 604 | { |
579 | *replace_len = tag->replace_len; | 605 | *replace_len = tag->tag.replace_len; |
580 | return tag->replace; | 606 | return tag->tag.replace; |
581 | } | 607 | } |
582 | } | 608 | } |
609 | |||
610 | /* Try the default tags */ | ||
611 | { | ||
612 | size_t i; | ||
613 | const Evas_Object_Style_Tag_Base *btag; | ||
614 | for (btag = default_tags, i = 0 ; | ||
615 | i < (sizeof(default_tags) / sizeof(default_tags[0])) ; | ||
616 | btag++, i++) | ||
617 | { | ||
618 | if (btag->tag_len != tag_len) continue; | ||
619 | if (!strncmp(btag->tag, s, tag_len)) | ||
620 | { | ||
621 | *replace_len = btag->replace_len; | ||
622 | return btag->replace; | ||
623 | } | ||
624 | } | ||
625 | } | ||
626 | |||
583 | *replace_len = 0; | 627 | *replace_len = 0; |
584 | return NULL; | 628 | return NULL; |
585 | } | 629 | } |
@@ -1689,8 +1733,8 @@ _format_fill(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char *st | |||
1689 | 1733 | ||
1690 | s = str; | 1734 | s = str; |
1691 | 1735 | ||
1692 | /* get rid of anything +s or -s off the start of the string */ | 1736 | /* get rid of any spaces at the start of the string */ |
1693 | while ((*s == ' ') || (*s == '+') || (*s == '-')) s++; | 1737 | while (*s == ' ') s++; |
1694 | 1738 | ||
1695 | while ((item = _format_parse(&s))) | 1739 | while ((item = _format_parse(&s))) |
1696 | { | 1740 | { |
@@ -2131,7 +2175,6 @@ _layout_format_pop(Ctxt *c, const char *format) | |||
2131 | if ((c->format_stack) && (c->format_stack->next)) | 2175 | if ((c->format_stack) && (c->format_stack->next)) |
2132 | { | 2176 | { |
2133 | Eina_List *redo_nodes = NULL; | 2177 | Eina_List *redo_nodes = NULL; |
2134 | format++; /* Skip the '-' */ | ||
2135 | 2178 | ||
2136 | /* Generic pop, should just pop. */ | 2179 | /* Generic pop, should just pop. */ |
2137 | if (((format[0] == ' ') && !format[1]) || | 2180 | if (((format[0] == ' ') && !format[1]) || |
@@ -2994,21 +3037,29 @@ _format_finalize(Evas_Object *obj, Evas_Object_Textblock_Format *fmt) | |||
2994 | * @def _IS_TAB(item) | 3037 | * @def _IS_TAB(item) |
2995 | */ | 3038 | */ |
2996 | #define _IS_TAB(item) \ | 3039 | #define _IS_TAB(item) \ |
2997 | (!strcmp(item, "\t") || !strcmp(item, "\\t")) | 3040 | (!strcmp(item, "tab") || !strcmp(item, "\t") || !strcmp(item, "\\t")) |
2998 | /** | 3041 | /** |
2999 | * @internal | 3042 | * @internal |
3000 | * Returns true if the item is a line spearator, false otherwise | 3043 | * Returns true if the item is a line spearator, false otherwise |
3001 | * @def _IS_LINE_SEPARATOR(item) | 3044 | * @def _IS_LINE_SEPARATOR(item) |
3002 | */ | 3045 | */ |
3003 | #define _IS_LINE_SEPARATOR(item) \ | 3046 | #define _IS_LINE_SEPARATOR(item) \ |
3004 | (!strcmp(item, "\n") || !strcmp(item, "\\n")) | 3047 | (!strcmp(item, "br") || !strcmp(item, "\n") || !strcmp(item, "\\n")) |
3005 | /** | 3048 | /** |
3006 | * @internal | 3049 | * @internal |
3007 | * Returns true if the item is a paragraph separator, false otherwise | 3050 | * Returns true if the item is a paragraph separator, false otherwise |
3008 | * @def _IS_PARAGRAPH_SEPARATOR(item) | 3051 | * @def _IS_PARAGRAPH_SEPARATOR(item) |
3009 | */ | 3052 | */ |
3053 | #define _IS_PARAGRAPH_SEPARATOR_SIMPLE(item) \ | ||
3054 | (!strcmp(item, "ps")) | ||
3055 | /** | ||
3056 | * @internal | ||
3057 | * Returns true if the item is a paragraph separator, false otherwise | ||
3058 | * takes legacy mode into account. | ||
3059 | * @def _IS_PARAGRAPH_SEPARATOR(item) | ||
3060 | */ | ||
3010 | #define _IS_PARAGRAPH_SEPARATOR(o, item) \ | 3061 | #define _IS_PARAGRAPH_SEPARATOR(o, item) \ |
3011 | (!strcmp(item, "ps") || \ | 3062 | (_IS_PARAGRAPH_SEPARATOR_SIMPLE(item) || \ |
3012 | (o->legacy_newline && _IS_LINE_SEPARATOR(item))) /* Paragraph separator */ | 3063 | (o->legacy_newline && _IS_LINE_SEPARATOR(item))) /* Paragraph separator */ |
3013 | 3064 | ||
3014 | /** | 3065 | /** |
@@ -3041,7 +3092,7 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c, | |||
3041 | int handled = 0; | 3092 | int handled = 0; |
3042 | 3093 | ||
3043 | s = n->format; | 3094 | s = n->format; |
3044 | if (!strncmp(s, "+ item ", 7)) | 3095 | if (!strncmp(s, "item ", 5)) |
3045 | { | 3096 | { |
3046 | // one of: | 3097 | // one of: |
3047 | // item size=20x10 href=name | 3098 | // item size=20x10 href=name |
@@ -3133,16 +3184,14 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c, | |||
3133 | if (!handled) | 3184 | if (!handled) |
3134 | { | 3185 | { |
3135 | Eina_Bool push_fmt = EINA_FALSE; | 3186 | Eina_Bool push_fmt = EINA_FALSE; |
3136 | if (s[0] == '+') | 3187 | if (n->opener && !n->own_closer) |
3137 | { | 3188 | { |
3138 | fmt = _layout_format_push(c, fmt, n); | 3189 | fmt = _layout_format_push(c, fmt, n); |
3139 | s++; | ||
3140 | push_fmt = EINA_TRUE; | 3190 | push_fmt = EINA_TRUE; |
3141 | } | 3191 | } |
3142 | else if (s[0] == '-') | 3192 | else if (!n->opener) |
3143 | { | 3193 | { |
3144 | fmt = _layout_format_pop(c, n->orig_format); | 3194 | fmt = _layout_format_pop(c, n->orig_format); |
3145 | s++; | ||
3146 | } | 3195 | } |
3147 | while ((item = _format_parse(&s))) | 3196 | while ((item = _format_parse(&s))) |
3148 | { | 3197 | { |
@@ -3166,7 +3215,7 @@ _layout_do_format(const Evas_Object *obj __UNUSED__, Ctxt *c, | |||
3166 | 3215 | ||
3167 | fi->parent.w = fi->parent.adv = 0; | 3216 | fi->parent.w = fi->parent.adv = 0; |
3168 | } | 3217 | } |
3169 | else if ((!strcmp(item, "\t")) || (!strcmp(item, "\\t"))) | 3218 | else if (_IS_TAB(item)) |
3170 | { | 3219 | { |
3171 | Evas_Object_Textblock_Format_Item *fi; | 3220 | Evas_Object_Textblock_Format_Item *fi; |
3172 | 3221 | ||
@@ -3215,28 +3264,33 @@ _layout_update_par(Ctxt *c) | |||
3215 | /* -1 means no wrap */ | 3264 | /* -1 means no wrap */ |
3216 | static int | 3265 | static int |
3217 | _layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3266 | _layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3218 | const Evas_Object_Textblock_Text_Item *ti, size_t line_start, | 3267 | const Evas_Object_Textblock_Item *it, size_t line_start, |
3219 | const char *breaks) | 3268 | const char *breaks) |
3220 | { | 3269 | { |
3221 | int wrap; | 3270 | int wrap; |
3222 | size_t uwrap; | 3271 | size_t uwrap; |
3223 | size_t len = eina_ustrbuf_length_get(ti->parent.text_node->unicode); | 3272 | size_t len = eina_ustrbuf_length_get(it->text_node->unicode); |
3224 | /* Currently not being used, because it doesn't contain relevant | 3273 | /* Currently not being used, because it doesn't contain relevant |
3225 | * information */ | 3274 | * information */ |
3226 | (void) breaks; | 3275 | (void) breaks; |
3227 | 3276 | ||
3228 | { | 3277 | { |
3229 | wrap = _layout_text_cutoff_get(c, fmt, ti); | 3278 | if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) |
3279 | wrap = 0; | ||
3280 | else | ||
3281 | wrap = _layout_text_cutoff_get(c, fmt, _ITEM_TEXT(it)); | ||
3282 | |||
3230 | if (wrap < 0) | 3283 | if (wrap < 0) |
3231 | return -1; | 3284 | return -1; |
3232 | uwrap = (size_t) wrap + ti->parent.text_pos; | 3285 | uwrap = (size_t) wrap + it->text_pos; |
3233 | } | 3286 | } |
3234 | 3287 | ||
3235 | 3288 | ||
3236 | if (uwrap == line_start) | 3289 | if ((uwrap == line_start) && (it->type == EVAS_TEXTBLOCK_ITEM_TEXT)) |
3237 | { | 3290 | { |
3238 | uwrap = ti->parent.text_pos + | 3291 | uwrap = it->text_pos + |
3239 | (size_t) evas_common_text_props_cluster_next(&ti->text_props, wrap); | 3292 | (size_t) evas_common_text_props_cluster_next( |
3293 | &_ITEM_TEXT(it)->text_props, wrap); | ||
3240 | } | 3294 | } |
3241 | if ((uwrap <= line_start) || (uwrap > len)) | 3295 | if ((uwrap <= line_start) || (uwrap > len)) |
3242 | return -1; | 3296 | return -1; |
@@ -3259,16 +3313,16 @@ _layout_get_charwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3259 | #endif | 3313 | #endif |
3260 | static int | 3314 | static int |
3261 | _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3315 | _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3262 | const Evas_Object_Textblock_Text_Item *ti, Eina_Bool mixed_wrap, | 3316 | const Evas_Object_Textblock_Item *it, Eina_Bool mixed_wrap, |
3263 | size_t line_start, const char *breaks) | 3317 | size_t line_start, const char *breaks) |
3264 | { | 3318 | { |
3265 | Eina_Bool wrap_after = EINA_FALSE; | 3319 | Eina_Bool wrap_after = EINA_FALSE; |
3266 | size_t wrap; | 3320 | size_t wrap; |
3267 | size_t orig_wrap; | 3321 | size_t orig_wrap; |
3268 | const Eina_Unicode *str = eina_ustrbuf_string_get( | 3322 | const Eina_Unicode *str = eina_ustrbuf_string_get( |
3269 | ti->parent.text_node->unicode); | 3323 | it->text_node->unicode); |
3270 | int item_start = ti->parent.text_pos; | 3324 | int item_start = it->text_pos; |
3271 | size_t len = eina_ustrbuf_length_get(ti->parent.text_node->unicode); | 3325 | size_t len = eina_ustrbuf_length_get(it->text_node->unicode); |
3272 | #ifndef HAVE_LINEBREAK | 3326 | #ifndef HAVE_LINEBREAK |
3273 | /* Not used without liblinebreak ATM. */ | 3327 | /* Not used without liblinebreak ATM. */ |
3274 | (void) breaks; | 3328 | (void) breaks; |
@@ -3276,7 +3330,10 @@ _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3276 | 3330 | ||
3277 | { | 3331 | { |
3278 | int swrap = -1; | 3332 | int swrap = -1; |
3279 | swrap = _layout_text_cutoff_get(c, fmt, ti); | 3333 | if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) |
3334 | swrap = 0; | ||
3335 | else | ||
3336 | swrap = _layout_text_cutoff_get(c, fmt, _ITEM_TEXT(it)); | ||
3280 | /* Avoiding too small textblocks to even contain one char. | 3337 | /* Avoiding too small textblocks to even contain one char. |
3281 | * FIXME: This can cause breaking inside ligatures. */ | 3338 | * FIXME: This can cause breaking inside ligatures. */ |
3282 | 3339 | ||
@@ -3331,7 +3388,7 @@ _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3331 | { | 3388 | { |
3332 | if (mixed_wrap) | 3389 | if (mixed_wrap) |
3333 | { | 3390 | { |
3334 | return _layout_get_charwrap(c, fmt, ti, | 3391 | return _layout_get_charwrap(c, fmt, it, |
3335 | line_start, breaks); | 3392 | line_start, breaks); |
3336 | } | 3393 | } |
3337 | else | 3394 | else |
@@ -3362,20 +3419,20 @@ _layout_get_word_mixwrap_common(Ctxt *c, Evas_Object_Textblock_Format *fmt, | |||
3362 | /* -1 means no wrap */ | 3419 | /* -1 means no wrap */ |
3363 | static int | 3420 | static int |
3364 | _layout_get_wordwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3421 | _layout_get_wordwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3365 | const Evas_Object_Textblock_Text_Item *ti, size_t line_start, | 3422 | const Evas_Object_Textblock_Item *it, size_t line_start, |
3366 | const char *breaks) | 3423 | const char *breaks) |
3367 | { | 3424 | { |
3368 | return _layout_get_word_mixwrap_common(c, fmt, ti, EINA_FALSE, line_start, | 3425 | return _layout_get_word_mixwrap_common(c, fmt, it, EINA_FALSE, line_start, |
3369 | breaks); | 3426 | breaks); |
3370 | } | 3427 | } |
3371 | 3428 | ||
3372 | /* -1 means no wrap */ | 3429 | /* -1 means no wrap */ |
3373 | static int | 3430 | static int |
3374 | _layout_get_mixedwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, | 3431 | _layout_get_mixedwrap(Ctxt *c, Evas_Object_Textblock_Format *fmt, |
3375 | const Evas_Object_Textblock_Text_Item *ti, size_t line_start, | 3432 | const Evas_Object_Textblock_Item *it, size_t line_start, |
3376 | const char *breaks) | 3433 | const char *breaks) |
3377 | { | 3434 | { |
3378 | return _layout_get_word_mixwrap_common(c, fmt, ti, EINA_TRUE, line_start, | 3435 | return _layout_get_word_mixwrap_common(c, fmt, it, EINA_TRUE, line_start, |
3379 | breaks); | 3436 | breaks); |
3380 | } | 3437 | } |
3381 | 3438 | ||
@@ -3503,7 +3560,7 @@ _layout_paragraph_reorder_lines(Evas_Object_Textblock_Paragraph *par) | |||
3503 | 3560 | ||
3504 | static void | 3561 | static void |
3505 | _layout_paragraph_render(Evas_Object_Textblock *o, | 3562 | _layout_paragraph_render(Evas_Object_Textblock *o, |
3506 | Evas_Object_Textblock_Paragraph *par) | 3563 | Evas_Object_Textblock_Paragraph *par) |
3507 | { | 3564 | { |
3508 | if (par->rendered) | 3565 | if (par->rendered) |
3509 | return; | 3566 | return; |
@@ -3521,6 +3578,8 @@ _layout_paragraph_render(Evas_Object_Textblock *o, | |||
3521 | par->bidi_props = NULL; | 3578 | par->bidi_props = NULL; |
3522 | } | 3579 | } |
3523 | } | 3580 | } |
3581 | #else | ||
3582 | (void) o; | ||
3524 | #endif | 3583 | #endif |
3525 | } | 3584 | } |
3526 | 3585 | ||
@@ -3656,120 +3715,127 @@ _layout_par(Ctxt *c) | |||
3656 | else if ((it->format->wrap_word || it->format->wrap_char || | 3715 | else if ((it->format->wrap_word || it->format->wrap_char || |
3657 | it->format->wrap_mixed) && it->text_node) | 3716 | it->format->wrap_mixed) && it->text_node) |
3658 | { | 3717 | { |
3659 | if (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) | 3718 | size_t line_start; |
3719 | size_t it_len; | ||
3720 | |||
3721 | it_len = (it->type == EVAS_TEXTBLOCK_ITEM_FORMAT) ? | ||
3722 | 1 : _ITEM_TEXT(it)->text_props.text_len; | ||
3723 | |||
3724 | |||
3725 | #ifdef HAVE_LINEBREAK | ||
3726 | /* If we haven't calculated the linebreaks yet, | ||
3727 | * do */ | ||
3728 | if (!line_breaks) | ||
3660 | { | 3729 | { |
3661 | /* Don't wrap if it's the only item */ | 3730 | /* Only relevant in those cases */ |
3662 | if (c->ln->items) | 3731 | if (it->format->wrap_word || it->format->wrap_mixed) |
3663 | { | 3732 | { |
3664 | /*FIXME: I should handle format correctly, | 3733 | const char *lang; |
3665 | i.e verify we are allowed to break here */ | 3734 | lang = (it->format->font.fdesc) ? |
3666 | _layout_line_advance(c, it->format); | 3735 | it->format->font.fdesc->lang : ""; |
3667 | wrap = -1; | 3736 | size_t len = |
3737 | eina_ustrbuf_length_get( | ||
3738 | it->text_node->unicode); | ||
3739 | line_breaks = malloc(len); | ||
3740 | set_linebreaks_utf32((const utf32_t *) | ||
3741 | eina_ustrbuf_string_get( | ||
3742 | it->text_node->unicode), | ||
3743 | len, lang, line_breaks); | ||
3668 | } | 3744 | } |
3669 | } | 3745 | } |
3746 | #endif | ||
3747 | if (c->ln->items) | ||
3748 | line_start = c->ln->items->text_pos; | ||
3670 | else | 3749 | else |
3671 | { | 3750 | line_start = it->text_pos; |
3672 | Evas_Object_Textblock_Text_Item *ti = _ITEM_TEXT(it); | ||
3673 | size_t line_start; | ||
3674 | 3751 | ||
3675 | #ifdef HAVE_LINEBREAK | 3752 | adv_line = 1; |
3676 | /* If we haven't calculated the linebreaks yet, | 3753 | /* If we don't already have a wrap point from before */ |
3677 | * do */ | 3754 | if (wrap < 0) |
3678 | if (!line_breaks) | 3755 | { |
3679 | { | 3756 | if (it->format->wrap_word) |
3680 | /* Only relevant in those cases */ | 3757 | wrap = _layout_get_wordwrap(c, it->format, it, |
3681 | if (it->format->wrap_word || it->format->wrap_mixed) | 3758 | line_start, line_breaks); |
3682 | { | 3759 | else if (it->format->wrap_char) |
3683 | const char *lang; | 3760 | wrap = _layout_get_charwrap(c, it->format, it, |
3684 | lang = (it->format->font.fdesc) ? | 3761 | line_start, line_breaks); |
3685 | it->format->font.fdesc->lang : ""; | 3762 | else if (it->format->wrap_mixed) |
3686 | size_t len = | 3763 | wrap = _layout_get_mixedwrap(c, it->format, it, |
3687 | eina_ustrbuf_length_get( | 3764 | line_start, line_breaks); |
3688 | it->text_node->unicode); | ||
3689 | line_breaks = malloc(len); | ||
3690 | set_linebreaks_utf32((const utf32_t *) | ||
3691 | eina_ustrbuf_string_get( | ||
3692 | it->text_node->unicode), | ||
3693 | len, lang, line_breaks); | ||
3694 | } | ||
3695 | } | ||
3696 | #endif | ||
3697 | if (c->ln->items) | ||
3698 | line_start = c->ln->items->text_pos; | ||
3699 | else | 3765 | else |
3700 | line_start = ti->parent.text_pos; | 3766 | wrap = -1; |
3701 | 3767 | } | |
3702 | adv_line = 1; | ||
3703 | /* If we don't already have a wrap point from before */ | ||
3704 | if (wrap < 0) | ||
3705 | { | ||
3706 | if (it->format->wrap_word) | ||
3707 | wrap = _layout_get_wordwrap(c, it->format, ti, | ||
3708 | line_start, line_breaks); | ||
3709 | else if (it->format->wrap_char) | ||
3710 | wrap = _layout_get_charwrap(c, it->format, ti, | ||
3711 | line_start, line_breaks); | ||
3712 | else if (it->format->wrap_mixed) | ||
3713 | wrap = _layout_get_mixedwrap(c, it->format, ti, | ||
3714 | line_start, line_breaks); | ||
3715 | else | ||
3716 | wrap = -1; | ||
3717 | } | ||
3718 | 3768 | ||
3719 | /* If it's before the item, rollback and apply. | 3769 | /* If it's before the item, rollback and apply. |
3720 | if it's in the item, cut. | 3770 | if it's in the item, cut. |
3721 | If it's after the item, delay the cut */ | 3771 | If it's after the item, delay the cut */ |
3722 | if (wrap > 0) | 3772 | if (wrap > 0) |
3773 | { | ||
3774 | size_t uwrap = (size_t) wrap; | ||
3775 | if (uwrap < it->text_pos) | ||
3723 | { | 3776 | { |
3724 | size_t uwrap = (size_t) wrap; | 3777 | /* Rollback latest additions, and cut that |
3725 | if (uwrap < ti->parent.text_pos) | 3778 | item */ |
3779 | i = eina_list_prev(i); | ||
3780 | it = eina_list_data_get(i); | ||
3781 | while (uwrap < it->text_pos) | ||
3726 | { | 3782 | { |
3727 | /* Rollback latest additions, and cut that | ||
3728 | item */ | ||
3729 | i = eina_list_prev(i); | ||
3730 | it = eina_list_data_get(i); | ||
3731 | while (uwrap < it->text_pos) | ||
3732 | { | ||
3733 | c->ln->items = _ITEM( | ||
3734 | eina_inlist_remove( | ||
3735 | EINA_INLIST_GET(c->ln->items), | ||
3736 | EINA_INLIST_GET(it))); | ||
3737 | i = eina_list_prev(i); | ||
3738 | it = eina_list_data_get(i); | ||
3739 | } | ||
3740 | c->x = it->x; | ||
3741 | c->ln->items = _ITEM( | 3783 | c->ln->items = _ITEM( |
3742 | eina_inlist_remove( | 3784 | eina_inlist_remove( |
3743 | EINA_INLIST_GET(c->ln->items), | 3785 | EINA_INLIST_GET(c->ln->items), |
3744 | EINA_INLIST_GET(it))); | 3786 | EINA_INLIST_GET(it))); |
3745 | continue; | 3787 | i = eina_list_prev(i); |
3788 | it = eina_list_data_get(i); | ||
3746 | } | 3789 | } |
3747 | /* If it points to the end, it means the previous | 3790 | c->x = it->x; |
3748 | * char is a whitespace we should remove, so this | 3791 | c->ln->items = _ITEM( |
3749 | * is a wanted cutting point. */ | 3792 | eina_inlist_remove( |
3750 | else if (uwrap > ti->parent.text_pos + | 3793 | EINA_INLIST_GET(c->ln->items), |
3751 | ti->text_props.text_len) | 3794 | EINA_INLIST_GET(it))); |
3752 | wrap = -1; /* Delay the cut in a smart way | 3795 | continue; |
3753 | i.e use the item_pos as the line_start, because | ||
3754 | there's already no cut before*/ | ||
3755 | else | ||
3756 | wrap -= ti->parent.text_pos; /* Cut here */ | ||
3757 | } | 3796 | } |
3758 | 3797 | /* If it points to the end, it means the previous | |
3759 | if (wrap > 0) | 3798 | * char is a whitespace we should remove, so this |
3799 | * is a wanted cutting point. */ | ||
3800 | else if (uwrap > it->text_pos + it_len) | ||
3760 | { | 3801 | { |
3761 | _layout_item_text_split_strip_white(c, ti, i, wrap); | 3802 | /* FIXME: Should redo the ellipsis handling. |
3762 | } | 3803 | * If we can do ellipsis, just cut here. */ |
3763 | else if (wrap == 0) | 3804 | if (it->format->ellipsis == 1.0) |
3805 | { | ||
3806 | _layout_handle_ellipsis(c, it, i); | ||
3807 | ret = 1; | ||
3808 | goto end; | ||
3809 | } | ||
3810 | else | ||
3811 | { | ||
3812 | /* Delay the cut in a smart way i.e use the | ||
3813 | item_pos as the line_start, because | ||
3814 | there's already no cut before*/ | ||
3815 | wrap = -1; | ||
3816 | } | ||
3817 | } | ||
3818 | else | ||
3819 | wrap -= it->text_pos; /* Cut here */ | ||
3820 | } | ||
3821 | |||
3822 | if (wrap > 0) | ||
3823 | { | ||
3824 | if (it->type == EVAS_TEXTBLOCK_ITEM_TEXT) | ||
3764 | { | 3825 | { |
3765 | /* Should wrap before the item */ | 3826 | _layout_item_text_split_strip_white(c, |
3766 | adv_line = 0; | 3827 | _ITEM_TEXT(it), i, wrap); |
3767 | redo_item = 1; | ||
3768 | _layout_line_advance(c, it->format); | ||
3769 | } | 3828 | } |
3770 | /* Reset wrap */ | ||
3771 | wrap = -1; | ||
3772 | } | 3829 | } |
3830 | else if (wrap == 0) | ||
3831 | { | ||
3832 | /* Should wrap before the item */ | ||
3833 | adv_line = 0; | ||
3834 | redo_item = 1; | ||
3835 | _layout_line_advance(c, it->format); | ||
3836 | } | ||
3837 | /* Reset wrap */ | ||
3838 | wrap = -1; | ||
3773 | } | 3839 | } |
3774 | } | 3840 | } |
3775 | 3841 | ||
@@ -3844,18 +3910,16 @@ _format_changes_invalidate_text_nodes(Ctxt *c) | |||
3844 | const char *fstr = fnode->orig_format; | 3910 | const char *fstr = fnode->orig_format; |
3845 | /* balance < 0 means we gave up and everything should be | 3911 | /* balance < 0 means we gave up and everything should be |
3846 | * invalidated */ | 3912 | * invalidated */ |
3847 | if (*fstr == '+') | 3913 | if (fnode->opener && !fnode->own_closer) |
3848 | { | 3914 | { |
3849 | balance++; | 3915 | balance++; |
3850 | if (!fstack) | 3916 | if (!fstack) |
3851 | start_n = fnode->text_node; | 3917 | start_n = fnode->text_node; |
3852 | fstack = eina_list_prepend(fstack, fnode); | 3918 | fstack = eina_list_prepend(fstack, fnode); |
3853 | } | 3919 | } |
3854 | else if (*fstr == '-') | 3920 | else if (!fnode->opener) |
3855 | { | 3921 | { |
3856 | size_t fstr_len; | 3922 | size_t fstr_len; |
3857 | /* Skip the '-' */ | ||
3858 | fstr++; | ||
3859 | fstr_len = strlen(fstr); | 3923 | fstr_len = strlen(fstr); |
3860 | /* Generic popper, just pop */ | 3924 | /* Generic popper, just pop */ |
3861 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) | 3925 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) |
@@ -4429,12 +4493,12 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) | |||
4429 | { | 4493 | { |
4430 | if (!key_start) | 4494 | if (!key_start) |
4431 | { | 4495 | { |
4432 | if (!isspace(*p)) | 4496 | if (!isspace((unsigned char)(*p))) |
4433 | key_start = p; | 4497 | key_start = p; |
4434 | } | 4498 | } |
4435 | else if (!key_stop) | 4499 | else if (!key_stop) |
4436 | { | 4500 | { |
4437 | if ((*p == '=') || (isspace(*p))) | 4501 | if ((*p == '=') || (isspace((unsigned char)(*p)))) |
4438 | key_stop = p; | 4502 | key_stop = p; |
4439 | } | 4503 | } |
4440 | else if (!val_start) | 4504 | else if (!val_start) |
@@ -4479,10 +4543,10 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text) | |||
4479 | tag = calloc(1, sizeof(Evas_Object_Style_Tag)); | 4543 | tag = calloc(1, sizeof(Evas_Object_Style_Tag)); |
4480 | if (tag) | 4544 | if (tag) |
4481 | { | 4545 | { |
4482 | tag->tag = tags; | 4546 | tag->tag.tag = tags; |
4483 | tag->replace = replaces; | 4547 | tag->tag.replace = replaces; |
4484 | tag->tag_len = tag_len; | 4548 | tag->tag.tag_len = tag_len; |
4485 | tag->replace_len = replace_len; | 4549 | tag->tag.replace_len = replace_len; |
4486 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_append(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); | 4550 | ts->tags = (Evas_Object_Style_Tag *)eina_inlist_append(EINA_INLIST_GET(ts->tags), EINA_INLIST_GET(tag)); |
4487 | } | 4551 | } |
4488 | else | 4552 | else |
@@ -4689,7 +4753,11 @@ _escaped_char_match(const char *s, int *adv) | |||
4689 | while ((*mc) && (*sc)) | 4753 | while ((*mc) && (*sc)) |
4690 | { | 4754 | { |
4691 | if ((unsigned char)*sc < (unsigned char)*mc) return NULL; | 4755 | if ((unsigned char)*sc < (unsigned char)*mc) return NULL; |
4692 | if (*sc != *mc) match = 0; | 4756 | if (*sc != *mc) |
4757 | { | ||
4758 | match = 0; | ||
4759 | break; | ||
4760 | } | ||
4693 | mc++; | 4761 | mc++; |
4694 | sc++; | 4762 | sc++; |
4695 | } | 4763 | } |
@@ -4723,7 +4791,7 @@ _escaped_char_get(const char *s, const char *s_end) | |||
4723 | int base = 10; | 4791 | int base = 10; |
4724 | s += 2; /* Skip "&#" */ | 4792 | s += 2; /* Skip "&#" */ |
4725 | 4793 | ||
4726 | if (tolower(*s) == 'x') | 4794 | if (tolower((unsigned char)(*s)) == 'x') |
4727 | { | 4795 | { |
4728 | s++; | 4796 | s++; |
4729 | base = 16; | 4797 | base = 16; |
@@ -4876,6 +4944,7 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char | |||
4876 | * NULL is reached. */ | 4944 | * NULL is reached. */ |
4877 | for (;;) | 4945 | for (;;) |
4878 | { | 4946 | { |
4947 | size_t text_len; | ||
4879 | /* If we got to the end of string or just finished/started tag | 4948 | /* If we got to the end of string or just finished/started tag |
4880 | * or escape sequence handling. */ | 4949 | * or escape sequence handling. */ |
4881 | if ((*p == 0) || | 4950 | if ((*p == 0) || |
@@ -4953,14 +5022,22 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char | |||
4953 | } | 5022 | } |
4954 | } | 5023 | } |
4955 | /* Unicode object replcament char */ | 5024 | /* Unicode object replcament char */ |
4956 | else if (!strncmp("\xEF\xBF\xBC", p, 3)) | 5025 | else if (!strncmp(_REPLACEMENT_CHAR_UTF8, p, |
5026 | text_len = strlen(_REPLACEMENT_CHAR_UTF8)) || | ||
5027 | !strncmp(_NEWLINE_UTF8, p, | ||
5028 | text_len = strlen(_NEWLINE_UTF8)) || | ||
5029 | !strncmp(_TAB_UTF8, p, | ||
5030 | text_len = strlen(_TAB_UTF8)) || | ||
5031 | !strncmp(_PARAGRAPH_SEPARATOR_UTF8, p, | ||
5032 | text_len = strlen(_PARAGRAPH_SEPARATOR_UTF8))) | ||
4957 | { | 5033 | { |
4958 | /*FIXME: currently just remove them, maybe do something | 5034 | /*FIXME: currently just remove them, maybe do something |
4959 | * fancier in the future, atm it breaks if this char | 5035 | * fancier in the future, atm it breaks if this char |
4960 | * is inside <> */ | 5036 | * is inside <> */ |
4961 | _prepend_text_run(cur, s, p); | 5037 | _prepend_text_run(cur, s, p); |
4962 | p += 2; /* it's also advanced later in this loop need +3 | 5038 | /* it's also advanced later in this loop need +text_len |
4963 | * in total*/ | 5039 | in total*/ |
5040 | p += text_len - 1; | ||
4964 | s = p + 1; /* One after the end of the replacement char */ | 5041 | s = p + 1; /* One after the end of the replacement char */ |
4965 | } | 5042 | } |
4966 | p++; | 5043 | p++; |
@@ -4979,19 +5056,19 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char | |||
4979 | * @param fnode the format node to process. | 5056 | * @param fnode the format node to process. |
4980 | */ | 5057 | */ |
4981 | static void | 5058 | static void |
4982 | _markup_get_format_append(Evas_Object_Textblock *o __UNUSED__, Eina_Strbuf *txt, Evas_Object_Textblock_Node_Format *fnode) | 5059 | _markup_get_format_append(Eina_Strbuf *txt, Evas_Object_Textblock_Node_Format *fnode) |
4983 | { | 5060 | { |
4984 | eina_strbuf_append_char(txt, '<'); | 5061 | eina_strbuf_append_char(txt, '<'); |
4985 | { | 5062 | { |
4986 | const char *s; | 5063 | const char *s; |
4987 | int pop = 0; | ||
4988 | 5064 | ||
4989 | // FIXME: need to escape | 5065 | // FIXME: need to escape |
4990 | s = fnode->orig_format; | 5066 | s = fnode->orig_format; |
4991 | if (*s == '-') pop = 1; | 5067 | if (!fnode->opener && !fnode->own_closer) |
4992 | while ((*s == ' ') || (*s == '+') || (*s == '-')) s++; | 5068 | eina_strbuf_append_char(txt, '/'); |
4993 | if (pop) eina_strbuf_append_char(txt, '/'); | ||
4994 | eina_strbuf_append(txt, s); | 5069 | eina_strbuf_append(txt, s); |
5070 | if (fnode->own_closer) | ||
5071 | eina_strbuf_append_char(txt, '/'); | ||
4995 | } | 5072 | } |
4996 | eina_strbuf_append_char(txt, '>'); | 5073 | eina_strbuf_append_char(txt, '>'); |
4997 | } | 5074 | } |
@@ -5061,7 +5138,7 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj) | |||
5061 | tmp_ch = text[off]; | 5138 | tmp_ch = text[off]; |
5062 | text[off] = 0; /* Null terminate the part of the string */ | 5139 | text[off] = 0; /* Null terminate the part of the string */ |
5063 | _markup_get_text_append(txt, text); | 5140 | _markup_get_text_append(txt, text); |
5064 | _markup_get_format_append(o, txt, fnode); | 5141 | _markup_get_format_append(txt, fnode); |
5065 | text[off] = tmp_ch; /* Restore the char */ | 5142 | text[off] = tmp_ch; /* Restore the char */ |
5066 | text += off; | 5143 | text += off; |
5067 | if (fnode->visible) | 5144 | if (fnode->visible) |
@@ -5086,6 +5163,190 @@ evas_object_textblock_text_markup_get(const Evas_Object *obj) | |||
5086 | return o->markup_text; | 5163 | return o->markup_text; |
5087 | } | 5164 | } |
5088 | 5165 | ||
5166 | EAPI char * | ||
5167 | evas_textblock_text_markup_to_utf8(const Evas_Object *obj, const char *text) | ||
5168 | { | ||
5169 | /* FIXME: Redundant and awful, should be merged with markup_prepend */ | ||
5170 | Eina_Strbuf *sbuf; | ||
5171 | char *s, *p, *ret; | ||
5172 | char *tag_start, *tag_end, *esc_start, *esc_end; | ||
5173 | |||
5174 | if (!text) return NULL; | ||
5175 | |||
5176 | |||
5177 | tag_start = tag_end = esc_start = esc_end = NULL; | ||
5178 | sbuf = eina_strbuf_new(); | ||
5179 | p = (char *)text; | ||
5180 | s = p; | ||
5181 | /* This loop goes through all of the mark up text until it finds format | ||
5182 | * tags, escape sequences or the terminating NULL. When it finds either | ||
5183 | * of those, it appends the text found up until that point to the textblock | ||
5184 | * proccesses whatever found. It repeats itself until the termainating | ||
5185 | * NULL is reached. */ | ||
5186 | for (;;) | ||
5187 | { | ||
5188 | /* If we got to the end of string or just finished/started tag | ||
5189 | * or escape sequence handling. */ | ||
5190 | if ((*p == 0) || | ||
5191 | (tag_end) || (esc_end) || | ||
5192 | (tag_start) || (esc_start)) | ||
5193 | { | ||
5194 | if (tag_end) | ||
5195 | { | ||
5196 | /* If we reached to a tag ending, analyze the tag */ | ||
5197 | char *ttag; | ||
5198 | size_t ttag_len; | ||
5199 | |||
5200 | tag_start++; /* Skip the < */ | ||
5201 | tag_end--; /* Skip the > */ | ||
5202 | if ((tag_end > tag_start) && (*(tag_end - 1) == '/')) | ||
5203 | { | ||
5204 | tag_end --; /* Skip the terminating '/' */ | ||
5205 | while (*(tag_end - 1) == ' ') | ||
5206 | tag_end--; /* skip trailing ' ' */ | ||
5207 | } | ||
5208 | |||
5209 | ttag_len = tag_end - tag_start; | ||
5210 | |||
5211 | ttag = malloc(ttag_len + 1); | ||
5212 | if (ttag) | ||
5213 | { | ||
5214 | const char *match = NULL; | ||
5215 | size_t replace_len; | ||
5216 | memcpy(ttag, tag_start, ttag_len); | ||
5217 | ttag[ttag_len] = 0; | ||
5218 | |||
5219 | |||
5220 | if (obj) | ||
5221 | { | ||
5222 | match = _style_match_tag( | ||
5223 | evas_object_textblock_style_get(obj), | ||
5224 | ttag, ttag_len, &replace_len); | ||
5225 | } | ||
5226 | |||
5227 | if (!match) match = ttag; | ||
5228 | |||
5229 | if (_IS_PARAGRAPH_SEPARATOR_SIMPLE(match)) | ||
5230 | eina_strbuf_append(sbuf, _PARAGRAPH_SEPARATOR_UTF8); | ||
5231 | else if (_IS_LINE_SEPARATOR(match)) | ||
5232 | eina_strbuf_append(sbuf, _NEWLINE_UTF8); | ||
5233 | else if (_IS_TAB(match)) | ||
5234 | eina_strbuf_append(sbuf, _TAB_UTF8); | ||
5235 | else if (!strncmp(match, "item", 4)) | ||
5236 | eina_strbuf_append(sbuf, _REPLACEMENT_CHAR_UTF8); | ||
5237 | |||
5238 | free(ttag); | ||
5239 | } | ||
5240 | tag_start = tag_end = NULL; | ||
5241 | } | ||
5242 | else if (esc_end) | ||
5243 | { | ||
5244 | const char *escape; | ||
5245 | |||
5246 | escape = _escaped_char_get(esc_start, esc_end + 1); | ||
5247 | eina_strbuf_append(sbuf, escape); | ||
5248 | esc_start = esc_end = NULL; | ||
5249 | } | ||
5250 | else if (*p == 0) | ||
5251 | { | ||
5252 | eina_strbuf_append_length(sbuf, s, p - s); | ||
5253 | s = NULL; | ||
5254 | } | ||
5255 | if (*p == 0) | ||
5256 | break; | ||
5257 | } | ||
5258 | if (*p == '<') | ||
5259 | { | ||
5260 | if (!esc_start) | ||
5261 | { | ||
5262 | /* Append the text prior to this to the textblock and | ||
5263 | * mark the start of the tag */ | ||
5264 | tag_start = p; | ||
5265 | tag_end = NULL; | ||
5266 | eina_strbuf_append_length(sbuf, s, p - s); | ||
5267 | s = NULL; | ||
5268 | } | ||
5269 | } | ||
5270 | else if (*p == '>') | ||
5271 | { | ||
5272 | if (tag_start) | ||
5273 | { | ||
5274 | tag_end = p + 1; | ||
5275 | s = p + 1; | ||
5276 | } | ||
5277 | } | ||
5278 | else if (*p == '&') | ||
5279 | { | ||
5280 | if (!tag_start) | ||
5281 | { | ||
5282 | /* Append the text prior to this to the textblock and mark | ||
5283 | * the start of the escape sequence */ | ||
5284 | esc_start = p; | ||
5285 | esc_end = NULL; | ||
5286 | eina_strbuf_append_length(sbuf, s, p - s); | ||
5287 | s = NULL; | ||
5288 | } | ||
5289 | } | ||
5290 | else if (*p == ';') | ||
5291 | { | ||
5292 | if (esc_start) | ||
5293 | { | ||
5294 | esc_end = p; | ||
5295 | s = p + 1; | ||
5296 | } | ||
5297 | } | ||
5298 | p++; | ||
5299 | } | ||
5300 | |||
5301 | ret = eina_strbuf_string_steal(sbuf); | ||
5302 | eina_strbuf_free(sbuf); | ||
5303 | return ret; | ||
5304 | } | ||
5305 | |||
5306 | EAPI char * | ||
5307 | evas_textblock_text_utf8_to_markup(const Evas_Object *obj, const char *text) | ||
5308 | { | ||
5309 | Eina_Strbuf *sbuf; | ||
5310 | char *str = NULL; | ||
5311 | int ch, pos = 0, pos2 = 0; | ||
5312 | |||
5313 | (void) obj; | ||
5314 | |||
5315 | if (!text) return NULL; | ||
5316 | |||
5317 | sbuf = eina_strbuf_new(); | ||
5318 | |||
5319 | for (;;) | ||
5320 | { | ||
5321 | pos = pos2; | ||
5322 | pos2 = evas_string_char_next_get(text, pos2, &ch); | ||
5323 | if ((ch <= 0) || (pos2 <= 0)) break; | ||
5324 | |||
5325 | if (ch == _NEWLINE) | ||
5326 | eina_strbuf_append(sbuf, "<br/>"); | ||
5327 | else if (ch == _TAB) | ||
5328 | eina_strbuf_append(sbuf, "<tab/>"); | ||
5329 | else if (ch == '<') | ||
5330 | eina_strbuf_append(sbuf, "<"); | ||
5331 | else if (ch == '>') | ||
5332 | eina_strbuf_append(sbuf, ">"); | ||
5333 | else if (ch == '&') | ||
5334 | eina_strbuf_append(sbuf, "&"); | ||
5335 | else if (ch == _PARAGRAPH_SEPARATOR) | ||
5336 | eina_strbuf_append(sbuf, "<ps/>"); | ||
5337 | else if (ch == _REPLACEMENT_CHAR) | ||
5338 | eina_strbuf_append(sbuf, ""); | ||
5339 | else | ||
5340 | { | ||
5341 | eina_strbuf_append_length(sbuf, text + pos, pos2 - pos); | ||
5342 | } | ||
5343 | } | ||
5344 | str = eina_strbuf_string_steal(sbuf); | ||
5345 | eina_strbuf_free(sbuf); | ||
5346 | return str; | ||
5347 | |||
5348 | } | ||
5349 | |||
5089 | /* cursors */ | 5350 | /* cursors */ |
5090 | 5351 | ||
5091 | /** | 5352 | /** |
@@ -5453,15 +5714,13 @@ evas_textblock_node_format_remove_pair(Evas_Object *obj, | |||
5453 | { | 5714 | { |
5454 | const char *fstr = fmt->orig_format; | 5715 | const char *fstr = fmt->orig_format; |
5455 | 5716 | ||
5456 | if (fstr && (*fstr == '+')) | 5717 | if (fmt->opener && !fmt->own_closer) |
5457 | { | 5718 | { |
5458 | fstack = eina_list_prepend(fstack, fmt); | 5719 | fstack = eina_list_prepend(fstack, fmt); |
5459 | } | 5720 | } |
5460 | else if (fstr && (*fstr == '-')) | 5721 | else if (fstr && !fmt->opener) |
5461 | { | 5722 | { |
5462 | size_t fstr_len; | 5723 | size_t fstr_len; |
5463 | /* Skip the '-' */ | ||
5464 | fstr++; | ||
5465 | fstr_len = strlen(fstr); | 5724 | fstr_len = strlen(fstr); |
5466 | /* Generic popper, just pop */ | 5725 | /* Generic popper, just pop */ |
5467 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) | 5726 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) |
@@ -5708,6 +5967,111 @@ evas_textblock_cursor_format_prev(Evas_Textblock_Cursor *cur) | |||
5708 | return EINA_FALSE; | 5967 | return EINA_FALSE; |
5709 | } | 5968 | } |
5710 | 5969 | ||
5970 | #ifdef HAVE_LINEBREAK | ||
5971 | |||
5972 | /* BREAK_AFTER: true if we can break after the current char. | ||
5973 | * Both macros assume str[i] is not the terminating nul */ | ||
5974 | #define BREAK_AFTER(i) \ | ||
5975 | (breaks[i] == WORDBREAK_BREAK) | ||
5976 | |||
5977 | #else | ||
5978 | |||
5979 | #define BREAK_AFTER(i) \ | ||
5980 | ((!str[i + 1]) || \ | ||
5981 | (_is_white(str[i]) && !_is_white(str[i + 1])) || \ | ||
5982 | (!_is_white(str[i]) && _is_white(str[i + 1]))) | ||
5983 | |||
5984 | #endif | ||
5985 | |||
5986 | EAPI Eina_Bool | ||
5987 | evas_textblock_cursor_word_start(Evas_Textblock_Cursor *cur) | ||
5988 | { | ||
5989 | const Eina_Unicode *text; | ||
5990 | size_t i; | ||
5991 | #ifdef HAVE_LINEBREAK | ||
5992 | char *breaks; | ||
5993 | #endif | ||
5994 | |||
5995 | if (!cur) return EINA_FALSE; | ||
5996 | if (!cur->node) return EINA_FALSE; | ||
5997 | |||
5998 | text = eina_ustrbuf_string_get(cur->node->unicode); | ||
5999 | |||
6000 | #ifdef HAVE_LINEBREAK | ||
6001 | { | ||
6002 | const char *lang = ""; /* FIXME: get lang */ | ||
6003 | size_t len = eina_ustrbuf_length_get(cur->node->unicode); | ||
6004 | breaks = malloc(len); | ||
6005 | set_wordbreaks_utf32((const utf32_t *) text, len, lang, breaks); | ||
6006 | } | ||
6007 | #endif | ||
6008 | |||
6009 | i = cur->pos; | ||
6010 | |||
6011 | /* Skip the first one. This ensures we don't point to the nul, and also | ||
6012 | * we just don't care about it anyway. */ | ||
6013 | if (i > 0) i--; | ||
6014 | |||
6015 | for ( ; i > 0 ; i--) | ||
6016 | { | ||
6017 | if (BREAK_AFTER(i)) | ||
6018 | { | ||
6019 | /* Advance to the current char */ | ||
6020 | i++; | ||
6021 | break; | ||
6022 | } | ||
6023 | } | ||
6024 | |||
6025 | cur->pos = i; | ||
6026 | |||
6027 | #ifdef HAVE_LINEBREAK | ||
6028 | free(breaks); | ||
6029 | #endif | ||
6030 | return EINA_TRUE; | ||
6031 | } | ||
6032 | |||
6033 | EAPI Eina_Bool | ||
6034 | evas_textblock_cursor_word_end(Evas_Textblock_Cursor *cur) | ||
6035 | { | ||
6036 | const Eina_Unicode *text; | ||
6037 | size_t i; | ||
6038 | #ifdef HAVE_LINEBREAK | ||
6039 | char *breaks; | ||
6040 | #endif | ||
6041 | |||
6042 | if (!cur) return EINA_FALSE; | ||
6043 | if (!cur->node) return EINA_FALSE; | ||
6044 | |||
6045 | text = eina_ustrbuf_string_get(cur->node->unicode); | ||
6046 | |||
6047 | #ifdef HAVE_LINEBREAK | ||
6048 | { | ||
6049 | const char *lang = ""; /* FIXME: get lang */ | ||
6050 | size_t len = eina_ustrbuf_length_get(cur->node->unicode); | ||
6051 | breaks = malloc(len); | ||
6052 | set_wordbreaks_utf32((const utf32_t *) text, len, lang, breaks); | ||
6053 | } | ||
6054 | #endif | ||
6055 | |||
6056 | i = cur->pos; | ||
6057 | |||
6058 | for ( ; text[i] ; i++) | ||
6059 | { | ||
6060 | if (BREAK_AFTER(i)) | ||
6061 | { | ||
6062 | /* This is the one to break after. */ | ||
6063 | break; | ||
6064 | } | ||
6065 | } | ||
6066 | |||
6067 | cur->pos = i; | ||
6068 | |||
6069 | #ifdef HAVE_LINEBREAK | ||
6070 | free(breaks); | ||
6071 | #endif | ||
6072 | return EINA_TRUE;; | ||
6073 | } | ||
6074 | |||
5711 | EAPI Eina_Bool | 6075 | EAPI Eina_Bool |
5712 | evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur) | 6076 | evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur) |
5713 | { | 6077 | { |
@@ -5887,10 +6251,9 @@ _evas_textblock_format_is_visible(Evas_Object_Textblock_Node_Format *fnode, | |||
5887 | fnode->anchor = ANCHOR_NONE; | 6251 | fnode->anchor = ANCHOR_NONE; |
5888 | if (!s) return; | 6252 | if (!s) return; |
5889 | 6253 | ||
5890 | if (s[0] == '+' || s[0] == '-') | 6254 | if (!fnode->own_closer) |
5891 | { | 6255 | { |
5892 | is_opener = (s[0] == '+'); | 6256 | is_opener = fnode->opener; |
5893 | s++; | ||
5894 | fnode->format_change = EINA_TRUE; | 6257 | fnode->format_change = EINA_TRUE; |
5895 | } | 6258 | } |
5896 | 6259 | ||
@@ -5902,6 +6265,8 @@ _evas_textblock_format_is_visible(Evas_Object_Textblock_Node_Format *fnode, | |||
5902 | * closing */ | 6265 | * closing */ |
5903 | if ((!strncmp(item, "\n", itlen) || !strncmp(item, "\\n", itlen)) || | 6266 | if ((!strncmp(item, "\n", itlen) || !strncmp(item, "\\n", itlen)) || |
5904 | (!strncmp(item, "\t", itlen) || !strncmp(item, "\\t", itlen)) || | 6267 | (!strncmp(item, "\t", itlen) || !strncmp(item, "\\t", itlen)) || |
6268 | (!strncmp(item, "br", itlen) && (itlen >= 2)) || | ||
6269 | (!strncmp(item, "tab", itlen) && (itlen >= 3)) || | ||
5905 | (!strncmp(item, "ps", itlen) && (itlen >= 2)) || | 6270 | (!strncmp(item, "ps", itlen) && (itlen >= 2)) || |
5906 | (!strncmp(item, "item", itlen) && (itlen >= 4) && is_opener)) | 6271 | (!strncmp(item, "item", itlen) && (itlen >= 4) && is_opener)) |
5907 | { | 6272 | { |
@@ -5986,19 +6351,17 @@ _evas_textblock_node_format_remove_matching(Evas_Object_Textblock *o, | |||
5986 | } | 6351 | } |
5987 | 6352 | ||
5988 | 6353 | ||
5989 | if (fstr && (*fstr == '+')) | 6354 | if (fmt->opener && !fmt->own_closer) |
5990 | { | 6355 | { |
5991 | formats = eina_list_prepend(formats, fmt); | 6356 | formats = eina_list_prepend(formats, fmt); |
5992 | } | 6357 | } |
5993 | else if (fstr && (*fstr == '-')) | 6358 | else if (fstr && !fmt->opener) |
5994 | { | 6359 | { |
5995 | Evas_Object_Textblock_Node_Format *fnode; | 6360 | Evas_Object_Textblock_Node_Format *fnode; |
5996 | size_t fstr_len; | 6361 | size_t fstr_len; |
5997 | /* Skip the '-' */ | ||
5998 | fstr++; | ||
5999 | fstr_len = strlen(fstr); | 6362 | fstr_len = strlen(fstr); |
6000 | /* Generic popper, just pop */ | 6363 | /* Generic popper, just pop (if there's anything to pop). */ |
6001 | if (((fstr[0] == ' ') && !fstr[1]) || !fstr[0]) | 6364 | if (formats && (((fstr[0] == ' ') && !fstr[1]) || !fstr[0])) |
6002 | { | 6365 | { |
6003 | fnode = eina_list_data_get(formats); | 6366 | fnode = eina_list_data_get(formats); |
6004 | formats = eina_list_remove_list(formats, formats); | 6367 | formats = eina_list_remove_list(formats, formats); |
@@ -6855,6 +7218,7 @@ _evas_textblock_node_format_new(Evas_Object_Textblock *o, const char *_format) | |||
6855 | { | 7218 | { |
6856 | Evas_Object_Textblock_Node_Format *n; | 7219 | Evas_Object_Textblock_Node_Format *n; |
6857 | const char *format = _format; | 7220 | const char *format = _format; |
7221 | const char *pre_stripped_format = NULL; | ||
6858 | 7222 | ||
6859 | n = calloc(1, sizeof(Evas_Object_Textblock_Node_Format)); | 7223 | n = calloc(1, sizeof(Evas_Object_Textblock_Node_Format)); |
6860 | /* Create orig_format and format */ | 7224 | /* Create orig_format and format */ |
@@ -6866,62 +7230,80 @@ _evas_textblock_node_format_new(Evas_Object_Textblock *o, const char *_format) | |||
6866 | 7230 | ||
6867 | format++; /* Advance after '<' */ | 7231 | format++; /* Advance after '<' */ |
6868 | format_len = strlen(format); | 7232 | format_len = strlen(format); |
6869 | if (format[format_len - 1] == '>') | 7233 | if ((format_len > 0) && format[format_len - 1] == '>') |
6870 | format_len--; /* We don't care about '>' */ | 7234 | { |
7235 | format_len--; /* We don't care about '>' */ | ||
7236 | /* Check if it closes itself. Skip the </> case. */ | ||
7237 | if ((format_len > 1) && format[format_len - 1] == '/') | ||
7238 | { | ||
7239 | format_len--; /* We don't care about '/' */ | ||
7240 | n->own_closer = EINA_TRUE; | ||
7241 | } | ||
7242 | } | ||
6871 | 7243 | ||
6872 | match = _style_match_tag(o->style, format, format_len, &replace_len); | 7244 | match = _style_match_tag(o->style, format, format_len, &replace_len); |
6873 | if (match) | 7245 | if (match) |
6874 | { | 7246 | { |
6875 | if ((match[0] == '+') || (match[0] == '-')) | 7247 | if (match[0] != '-') |
6876 | { | ||
6877 | char *norm_format; | ||
6878 | norm_format = malloc(format_len + 2 + 1); | ||
6879 | memcpy(norm_format, match, 2); | ||
6880 | memcpy(norm_format + 2, format, format_len); | ||
6881 | norm_format[format_len + 2] = '\0'; | ||
6882 | n->orig_format = | ||
6883 | eina_stringshare_add_length(norm_format, format_len + 2); | ||
6884 | free(norm_format); | ||
6885 | } | ||
6886 | else | ||
6887 | { | 7248 | { |
6888 | n->orig_format = | 7249 | n->opener = EINA_TRUE; |
6889 | eina_stringshare_add_length(format, format_len); | 7250 | if (match[0] != '+') |
7251 | { | ||
7252 | n->own_closer = EINA_TRUE; | ||
7253 | } | ||
6890 | } | 7254 | } |
6891 | n->format = eina_stringshare_add(match); | 7255 | |
7256 | pre_stripped_format = match; | ||
6892 | } | 7257 | } |
6893 | else | 7258 | else |
6894 | { | 7259 | { |
6895 | char *norm_format; | 7260 | if (format[0] == '/') |
6896 | |||
6897 | norm_format = malloc(format_len + 2 + 1); | ||
6898 | if (norm_format) | ||
6899 | { | 7261 | { |
6900 | if (format[0] == '/') | 7262 | format++; |
6901 | { | 7263 | format_len--; |
6902 | memcpy(norm_format, "- ", 2); | 7264 | } |
6903 | memcpy(norm_format + 2, format + 1, format_len - 1); | 7265 | else |
6904 | norm_format[format_len + 2 - 1] = '\0'; | 7266 | { |
6905 | } | 7267 | n->opener = EINA_TRUE; |
6906 | else | ||
6907 | { | ||
6908 | memcpy(norm_format, "+ ", 2); | ||
6909 | memcpy(norm_format + 2, format, format_len); | ||
6910 | norm_format[format_len + 2] = '\0'; | ||
6911 | } | ||
6912 | n->orig_format = eina_stringshare_add(norm_format); | ||
6913 | free(norm_format); | ||
6914 | } | 7268 | } |
6915 | n->format = eina_stringshare_ref(n->orig_format); | ||
6916 | } | 7269 | } |
7270 | |||
7271 | n->orig_format = eina_stringshare_add_length(format, format_len); | ||
7272 | |||
7273 | if (!pre_stripped_format) | ||
7274 | pre_stripped_format = n->orig_format; | ||
6917 | } | 7275 | } |
6918 | /* Just use as is, it's a special format. */ | 7276 | /* Just use as is, it's a special format. */ |
6919 | else | 7277 | else |
6920 | { | 7278 | { |
6921 | n->orig_format = eina_stringshare_add(format); | 7279 | const char *tmp = format; |
6922 | n->format = eina_stringshare_ref(n->orig_format); | 7280 | if (format[0] != '-') |
7281 | { | ||
7282 | n->opener = EINA_TRUE; | ||
7283 | if (format[0] != '+') | ||
7284 | { | ||
7285 | n->own_closer = EINA_TRUE; | ||
7286 | } | ||
7287 | } | ||
7288 | if ((*tmp == '+') || (*tmp == '-')) | ||
7289 | { | ||
7290 | tmp++; | ||
7291 | while (*tmp == ' ') tmp++; | ||
7292 | } | ||
7293 | n->orig_format = eina_stringshare_add(tmp); | ||
7294 | pre_stripped_format = n->orig_format; | ||
6923 | } | 7295 | } |
6924 | 7296 | ||
7297 | /* Strip format */ | ||
7298 | { | ||
7299 | const char *tmp = pre_stripped_format; | ||
7300 | if ((*tmp == '+') || (*tmp == '-')) | ||
7301 | { | ||
7302 | tmp++; | ||
7303 | while (*tmp == ' ') tmp++; | ||
7304 | } | ||
7305 | n->format = eina_stringshare_add(tmp); | ||
7306 | } | ||
6925 | format = n->format; | 7307 | format = n->format; |
6926 | 7308 | ||
6927 | _evas_textblock_format_is_visible(n, format); | 7309 | _evas_textblock_format_is_visible(n, format); |
@@ -7051,11 +7433,11 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form | |||
7051 | if (_IS_PARAGRAPH_SEPARATOR(o, format)) | 7433 | if (_IS_PARAGRAPH_SEPARATOR(o, format)) |
7052 | insert_char = _PARAGRAPH_SEPARATOR; | 7434 | insert_char = _PARAGRAPH_SEPARATOR; |
7053 | else if (_IS_LINE_SEPARATOR(format)) | 7435 | else if (_IS_LINE_SEPARATOR(format)) |
7054 | insert_char = '\n'; | 7436 | insert_char = _NEWLINE; |
7055 | else if (_IS_TAB(format)) | 7437 | else if (_IS_TAB(format)) |
7056 | insert_char = '\t'; | 7438 | insert_char = _TAB; |
7057 | else | 7439 | else |
7058 | insert_char = EVAS_TEXTBLOCK_REPLACEMENT_CHAR; | 7440 | insert_char = _REPLACEMENT_CHAR; |
7059 | 7441 | ||
7060 | eina_ustrbuf_insert_char(cur->node->unicode, insert_char, cur->pos); | 7442 | eina_ustrbuf_insert_char(cur->node->unicode, insert_char, cur->pos); |
7061 | 7443 | ||
@@ -7142,7 +7524,7 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur) | |||
7142 | should_merge = EINA_TRUE; | 7524 | should_merge = EINA_TRUE; |
7143 | } | 7525 | } |
7144 | /* If a singnular, mark as invisible, so we'll delete it. */ | 7526 | /* If a singnular, mark as invisible, so we'll delete it. */ |
7145 | if (!format || ((*format != '+') && (*format != '-'))) | 7527 | if (!format || last_fmt->own_closer) |
7146 | { | 7528 | { |
7147 | last_fmt->visible = EINA_FALSE; | 7529 | last_fmt->visible = EINA_FALSE; |
7148 | } | 7530 | } |
@@ -7271,60 +7653,40 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C | |||
7271 | EAPI char * | 7653 | EAPI char * |
7272 | evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) | 7654 | evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) |
7273 | { | 7655 | { |
7274 | const Eina_Unicode *ustr; | ||
7275 | Eina_Unicode buf[2]; | ||
7276 | char *s; | ||
7277 | if (!cur || !cur->node) return NULL; | 7656 | if (!cur || !cur->node) return NULL; |
7278 | if (evas_textblock_cursor_format_is_visible_get(cur)) | 7657 | if (evas_textblock_cursor_format_is_visible_get(cur)) |
7279 | { | 7658 | { |
7280 | size_t len; | 7659 | Eina_Strbuf *buf; |
7281 | const char *fstr; | 7660 | Evas_Object_Textblock_Node_Format *fnode; |
7282 | char *ret; | 7661 | char *ret; |
7283 | int pop = 0; | 7662 | fnode = _evas_textblock_node_visible_at_pos_get( |
7284 | fstr = evas_textblock_node_format_text_get( | 7663 | evas_textblock_cursor_format_get(cur)); |
7285 | _evas_textblock_node_visible_at_pos_get( | ||
7286 | evas_textblock_cursor_format_get(cur))); | ||
7287 | |||
7288 | if (!fstr) | ||
7289 | return NULL; | ||
7290 | 7664 | ||
7291 | if (*fstr == '-') pop = 1; | 7665 | buf = eina_strbuf_new(); |
7292 | while ((*fstr == ' ') || (*fstr == '+') || (*fstr == '-')) fstr++; | 7666 | _markup_get_format_append(buf, fnode); |
7293 | len = strlen(fstr); | 7667 | ret = eina_strbuf_string_steal(buf); |
7294 | 7668 | eina_strbuf_free(buf); | |
7295 | { | ||
7296 | char *tmp; | ||
7297 | if (pop) | ||
7298 | { | ||
7299 | ret = tmp = malloc(len + 3 + 1); /* </> and the null */ | ||
7300 | memcpy(tmp, "</", 2); | ||
7301 | tmp += 2; | ||
7302 | } | ||
7303 | else | ||
7304 | { | ||
7305 | ret = tmp = malloc(len + 2 + 1); /* <> and the null */ | ||
7306 | *tmp = '<'; | ||
7307 | tmp++; | ||
7308 | } | ||
7309 | memcpy(tmp, fstr, len); | ||
7310 | memcpy(tmp + len, ">", 2); /* Including the null */ | ||
7311 | } | ||
7312 | 7669 | ||
7313 | return ret; | 7670 | return ret; |
7314 | } | 7671 | } |
7672 | else | ||
7673 | { | ||
7674 | const Eina_Unicode *ustr; | ||
7675 | Eina_Unicode buf[2]; | ||
7676 | char *s; | ||
7315 | 7677 | ||
7316 | ustr = eina_ustrbuf_string_get(cur->node->unicode); | 7678 | ustr = eina_ustrbuf_string_get(cur->node->unicode); |
7317 | buf[0] = ustr[cur->pos]; | 7679 | buf[0] = ustr[cur->pos]; |
7318 | buf[1] = 0; | 7680 | buf[1] = 0; |
7319 | s = eina_unicode_unicode_to_utf8(buf, NULL); | 7681 | s = eina_unicode_unicode_to_utf8(buf, NULL); |
7320 | 7682 | ||
7321 | return s; | 7683 | return s; |
7684 | } | ||
7322 | } | 7685 | } |
7323 | 7686 | ||
7324 | static char * | 7687 | static char * |
7325 | _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *_cur2) | 7688 | _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *_cur2) |
7326 | { | 7689 | { |
7327 | Evas_Object_Textblock *o; | ||
7328 | Evas_Object_Textblock_Node_Text *tnode; | 7690 | Evas_Object_Textblock_Node_Text *tnode; |
7329 | Eina_Strbuf *buf; | 7691 | Eina_Strbuf *buf; |
7330 | Evas_Textblock_Cursor *cur2; | 7692 | Evas_Textblock_Cursor *cur2; |
@@ -7333,7 +7695,6 @@ _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, | |||
7333 | if (!cur1 || !cur1->node) return NULL; | 7695 | if (!cur1 || !cur1->node) return NULL; |
7334 | if (!_cur2 || !_cur2->node) return NULL; | 7696 | if (!_cur2 || !_cur2->node) return NULL; |
7335 | if (cur1->obj != _cur2->obj) return NULL; | 7697 | if (cur1->obj != _cur2->obj) return NULL; |
7336 | o = (Evas_Object_Textblock *)(cur1->obj->object_data); | ||
7337 | if (evas_textblock_cursor_compare(cur1, _cur2) > 0) | 7698 | if (evas_textblock_cursor_compare(cur1, _cur2) > 0) |
7338 | { | 7699 | { |
7339 | const Evas_Textblock_Cursor *tc; | 7700 | const Evas_Textblock_Cursor *tc; |
@@ -7401,7 +7762,7 @@ _evas_textblock_cursor_range_text_markup_get(const Evas_Textblock_Cursor *cur1, | |||
7401 | tmp_ch = text[off]; | 7762 | tmp_ch = text[off]; |
7402 | text[off] = 0; /* Null terminate the part of the string */ | 7763 | text[off] = 0; /* Null terminate the part of the string */ |
7403 | _markup_get_text_append(buf, text); | 7764 | _markup_get_text_append(buf, text); |
7404 | _markup_get_format_append(o, buf, fnode); | 7765 | _markup_get_format_append(buf, fnode); |
7405 | text[off] = tmp_ch; /* Restore the char */ | 7766 | text[off] = tmp_ch; /* Restore the char */ |
7406 | text += off; | 7767 | text += off; |
7407 | if (fnode->visible) | 7768 | if (fnode->visible) |
@@ -7623,8 +7984,27 @@ evas_textblock_cursor_format_get(const Evas_Textblock_Cursor *cur) | |||
7623 | EAPI const char * | 7984 | EAPI const char * |
7624 | evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *fmt) | 7985 | evas_textblock_node_format_text_get(const Evas_Object_Textblock_Node_Format *fmt) |
7625 | { | 7986 | { |
7987 | static char *ret = NULL; | ||
7988 | char *tmp; | ||
7989 | |||
7626 | if (!fmt) return NULL; | 7990 | if (!fmt) return NULL; |
7627 | return fmt->orig_format; | 7991 | |
7992 | if (ret) free(ret); | ||
7993 | ret = malloc(strlen(fmt->orig_format) + 2 + 1); | ||
7994 | tmp = ret; | ||
7995 | |||
7996 | if (fmt->opener && !fmt->own_closer) | ||
7997 | { | ||
7998 | *(tmp++) = '+'; | ||
7999 | *(tmp++) = ' '; | ||
8000 | } | ||
8001 | else if (!fmt->opener) | ||
8002 | { | ||
8003 | *(tmp++) = '-'; | ||
8004 | *(tmp++) = ' '; | ||
8005 | } | ||
8006 | strcpy(tmp, fmt->orig_format); | ||
8007 | return ret; | ||
7628 | } | 8008 | } |
7629 | 8009 | ||
7630 | EAPI void | 8010 | EAPI void |
@@ -7673,7 +8053,9 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord | |||
7673 | * the position of the previous */ | 8053 | * the position of the previous */ |
7674 | if ((cur->pos > 0) && !_evas_textblock_cursor_is_at_the_end(cur)) | 8054 | if ((cur->pos > 0) && !_evas_textblock_cursor_is_at_the_end(cur)) |
7675 | { | 8055 | { |
8056 | #ifdef BIDI_SUPPORT | ||
7676 | Eina_Bool before_char = EINA_FALSE; | 8057 | Eina_Bool before_char = EINA_FALSE; |
8058 | #endif | ||
7677 | cur2.obj = cur->obj; | 8059 | cur2.obj = cur->obj; |
7678 | evas_textblock_cursor_copy(cur, &cur2); | 8060 | evas_textblock_cursor_copy(cur, &cur2); |
7679 | evas_textblock_cursor_char_prev(&cur2); | 8061 | evas_textblock_cursor_char_prev(&cur2); |
@@ -7683,12 +8065,16 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord | |||
7683 | if (!fmt || !_IS_LINE_SEPARATOR(fmt->format)) | 8065 | if (!fmt || !_IS_LINE_SEPARATOR(fmt->format)) |
7684 | { | 8066 | { |
7685 | dir_cur = &cur2; | 8067 | dir_cur = &cur2; |
8068 | #ifdef BIDI_SUPPORT | ||
7686 | before_char = EINA_FALSE; | 8069 | before_char = EINA_FALSE; |
8070 | #endif | ||
7687 | } | 8071 | } |
8072 | #ifdef BIDI_SUPPORT | ||
7688 | else | 8073 | else |
7689 | { | 8074 | { |
7690 | before_char = EINA_TRUE; | 8075 | before_char = EINA_TRUE; |
7691 | } | 8076 | } |
8077 | #endif | ||
7692 | ret = evas_textblock_cursor_pen_geometry_get( | 8078 | ret = evas_textblock_cursor_pen_geometry_get( |
7693 | dir_cur, &x, &y, &w, &h); | 8079 | dir_cur, &x, &y, &w, &h); |
7694 | #ifdef BIDI_SUPPORT | 8080 | #ifdef BIDI_SUPPORT |
@@ -8788,6 +9174,7 @@ evas_object_textblock_init(Evas_Object *obj) | |||
8788 | { | 9174 | { |
8789 | linebreak_init = EINA_TRUE; | 9175 | linebreak_init = EINA_TRUE; |
8790 | init_linebreak(); | 9176 | init_linebreak(); |
9177 | init_wordbreak(); | ||
8791 | } | 9178 | } |
8792 | #endif | 9179 | #endif |
8793 | 9180 | ||
diff --git a/libraries/evas/src/lib/canvas/evas_render.c b/libraries/evas/src/lib/canvas/evas_render.c index 0abee97..cdedaec 100644 --- a/libraries/evas/src/lib/canvas/evas_render.c +++ b/libraries/evas/src/lib/canvas/evas_render.c | |||
@@ -1139,7 +1139,7 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1139 | } | 1139 | } |
1140 | } | 1140 | } |
1141 | } | 1141 | } |
1142 | if (surface == e->engine.data.output) | 1142 | // if (surface == e->engine.data.output) |
1143 | e->engine.func->context_clip_clip(e->engine.data.output, | 1143 | e->engine.func->context_clip_clip(e->engine.data.output, |
1144 | e->engine.data.context, | 1144 | e->engine.data.context, |
1145 | ecx, ecy, ecw, ech); | 1145 | ecx, ecy, ecw, ech); |
@@ -1360,6 +1360,8 @@ evas_render_updates_internal(Evas *e, | |||
1360 | 1360 | ||
1361 | RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h); | 1361 | RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h); |
1362 | 1362 | ||
1363 | evas_event_callback_call(e, EVAS_CALLBACK_RENDER_PRE, NULL); | ||
1364 | |||
1363 | /* Check if the modified object mean recalculating every thing */ | 1365 | /* Check if the modified object mean recalculating every thing */ |
1364 | if (!e->invalidate) | 1366 | if (!e->invalidate) |
1365 | _evas_render_check_pending_objects(&e->pending_objects, e); | 1367 | _evas_render_check_pending_objects(&e->pending_objects, e); |
@@ -1399,6 +1401,7 @@ evas_render_updates_internal(Evas *e, | |||
1399 | _evas_render_prev_cur_clip_cache_add(e, obj); | 1401 | _evas_render_prev_cur_clip_cache_add(e, obj); |
1400 | } | 1402 | } |
1401 | eina_array_clean(&e->restack_objects); | 1403 | eina_array_clean(&e->restack_objects); |
1404 | |||
1402 | /* phase 3. add exposes */ | 1405 | /* phase 3. add exposes */ |
1403 | EINA_LIST_FREE(e->damages, r) | 1406 | EINA_LIST_FREE(e->damages, r) |
1404 | { | 1407 | { |
@@ -1406,7 +1409,20 @@ evas_render_updates_internal(Evas *e, | |||
1406 | r->x, r->y, r->w, r->h); | 1409 | r->x, r->y, r->w, r->h); |
1407 | eina_rectangle_free(r); | 1410 | eina_rectangle_free(r); |
1408 | } | 1411 | } |
1409 | /* phase 4. output & viewport changes */ | 1412 | |
1413 | /* phase 4. framespace, output & viewport changes */ | ||
1414 | if (e->framespace.changed) | ||
1415 | { | ||
1416 | int fx, fy, fw, fh; | ||
1417 | |||
1418 | fx = e->viewport.x - e->framespace.x; | ||
1419 | fy = e->viewport.y - e->framespace.y; | ||
1420 | fw = e->viewport.w + e->framespace.w; | ||
1421 | fh = e->viewport.h + e->framespace.h; | ||
1422 | e->engine.func->output_redraws_rect_add(e->engine.data.output, | ||
1423 | fx, fy, fw, fh); | ||
1424 | } | ||
1425 | |||
1410 | if (e->viewport.changed) | 1426 | if (e->viewport.changed) |
1411 | { | 1427 | { |
1412 | e->engine.func->output_redraws_rect_add(e->engine.data.output, | 1428 | e->engine.func->output_redraws_rect_add(e->engine.data.output, |
@@ -1431,6 +1447,7 @@ evas_render_updates_internal(Evas *e, | |||
1431 | 0, 0, | 1447 | 0, 0, |
1432 | e->output.w, e->output.h); | 1448 | e->output.w, e->output.h); |
1433 | } | 1449 | } |
1450 | |||
1434 | /* phase 5. add obscures */ | 1451 | /* phase 5. add obscures */ |
1435 | EINA_LIST_FOREACH(e->obscures, ll, r) | 1452 | EINA_LIST_FOREACH(e->obscures, ll, r) |
1436 | { | 1453 | { |
@@ -1562,13 +1579,6 @@ evas_render_updates_internal(Evas *e, | |||
1562 | else | 1579 | else |
1563 | e->engine.func->context_mask_unset(e->engine.data.output, | 1580 | e->engine.func->context_mask_unset(e->engine.data.output, |
1564 | e->engine.data.context); | 1581 | e->engine.data.context); |
1565 | if (obj->cur.clipper) | ||
1566 | e->engine.func->context_clip_set(e->engine.data.output, | ||
1567 | e->engine.data.context, | ||
1568 | x, y, w, h); | ||
1569 | else | ||
1570 | e->engine.func->context_clip_unset(e->engine.data.output, | ||
1571 | e->engine.data.context); | ||
1572 | #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ | 1582 | #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ |
1573 | for (j = offset; j < e->temporary_objects.count; ++j) | 1583 | for (j = offset; j < e->temporary_objects.count; ++j) |
1574 | { | 1584 | { |
@@ -1671,6 +1681,7 @@ evas_render_updates_internal(Evas *e, | |||
1671 | e->changed = 0; | 1681 | e->changed = 0; |
1672 | e->viewport.changed = 0; | 1682 | e->viewport.changed = 0; |
1673 | e->output.changed = 0; | 1683 | e->output.changed = 0; |
1684 | e->framespace.changed = 0; | ||
1674 | e->invalidate = 0; | 1685 | e->invalidate = 0; |
1675 | 1686 | ||
1676 | /* If their are some object to restack or some object to delete, | 1687 | /* If their are some object to restack or some object to delete, |
@@ -1686,6 +1697,8 @@ evas_render_updates_internal(Evas *e, | |||
1686 | } | 1697 | } |
1687 | 1698 | ||
1688 | evas_module_clean(); | 1699 | evas_module_clean(); |
1700 | |||
1701 | evas_event_callback_call(e, EVAS_CALLBACK_RENDER_POST, NULL); | ||
1689 | 1702 | ||
1690 | RD("---]\n"); | 1703 | RD("---]\n"); |
1691 | 1704 | ||
diff --git a/libraries/evas/src/lib/cserve/Makefile.in b/libraries/evas/src/lib/cserve/Makefile.in index 74b5ff9..7599ca2 100644 --- a/libraries/evas/src/lib/cserve/Makefile.in +++ b/libraries/evas/src/lib/cserve/Makefile.in | |||
@@ -198,8 +198,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
198 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 198 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
199 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 199 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
200 | PKG_CONFIG = @PKG_CONFIG@ | 200 | PKG_CONFIG = @PKG_CONFIG@ |
201 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
202 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
203 | PNG_CFLAGS = @PNG_CFLAGS@ | 201 | PNG_CFLAGS = @PNG_CFLAGS@ |
204 | PNG_LIBS = @PNG_LIBS@ | 202 | PNG_LIBS = @PNG_LIBS@ |
205 | RANLIB = @RANLIB@ | 203 | RANLIB = @RANLIB@ |
@@ -216,6 +214,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
216 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 214 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
217 | VERSION = @VERSION@ | 215 | VERSION = @VERSION@ |
218 | VMAJ = @VMAJ@ | 216 | VMAJ = @VMAJ@ |
217 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
218 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
219 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 219 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
220 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 220 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
221 | XCB_CFLAGS = @XCB_CFLAGS@ | 221 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -297,6 +297,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
297 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 297 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
298 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 298 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
299 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 299 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
300 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
301 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
302 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
303 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
300 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 304 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
301 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 305 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
302 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 306 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/Makefile.in b/libraries/evas/src/lib/engines/Makefile.in index 12e28c1..4c3c1da 100644 --- a/libraries/evas/src/lib/engines/Makefile.in +++ b/libraries/evas/src/lib/engines/Makefile.in | |||
@@ -208,8 +208,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
208 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 208 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
209 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 209 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
210 | PKG_CONFIG = @PKG_CONFIG@ | 210 | PKG_CONFIG = @PKG_CONFIG@ |
211 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
212 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
213 | PNG_CFLAGS = @PNG_CFLAGS@ | 211 | PNG_CFLAGS = @PNG_CFLAGS@ |
214 | PNG_LIBS = @PNG_LIBS@ | 212 | PNG_LIBS = @PNG_LIBS@ |
215 | RANLIB = @RANLIB@ | 213 | RANLIB = @RANLIB@ |
@@ -226,6 +224,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
226 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 224 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
227 | VERSION = @VERSION@ | 225 | VERSION = @VERSION@ |
228 | VMAJ = @VMAJ@ | 226 | VMAJ = @VMAJ@ |
227 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
228 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
229 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 229 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
230 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 230 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
231 | XCB_CFLAGS = @XCB_CFLAGS@ | 231 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -307,6 +307,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
307 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 307 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
308 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 308 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
309 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 309 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
310 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
311 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
312 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
313 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
310 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 314 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
311 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 315 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
312 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 316 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/Makefile.in b/libraries/evas/src/lib/engines/common/Makefile.in index b0162df..7d1f20a 100644 --- a/libraries/evas/src/lib/engines/common/Makefile.in +++ b/libraries/evas/src/lib/engines/common/Makefile.in | |||
@@ -252,8 +252,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
252 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 252 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
253 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 253 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
254 | PKG_CONFIG = @PKG_CONFIG@ | 254 | PKG_CONFIG = @PKG_CONFIG@ |
255 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
256 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
257 | PNG_CFLAGS = @PNG_CFLAGS@ | 255 | PNG_CFLAGS = @PNG_CFLAGS@ |
258 | PNG_LIBS = @PNG_LIBS@ | 256 | PNG_LIBS = @PNG_LIBS@ |
259 | RANLIB = @RANLIB@ | 257 | RANLIB = @RANLIB@ |
@@ -270,6 +268,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
270 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 268 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
271 | VERSION = @VERSION@ | 269 | VERSION = @VERSION@ |
272 | VMAJ = @VMAJ@ | 270 | VMAJ = @VMAJ@ |
271 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
272 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
273 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 273 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
274 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 274 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
275 | XCB_CFLAGS = @XCB_CFLAGS@ | 275 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -351,6 +351,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
351 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 351 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
352 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 352 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
353 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 353 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
354 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
355 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
356 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
357 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
354 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 358 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
355 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 359 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
356 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 360 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c b/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c index b30ec1e..796ff17 100644 --- a/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c +++ b/libraries/evas/src/lib/engines/common/evas_convert_rgb_16.c | |||
@@ -117,7 +117,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr | |||
117 | } | 117 | } |
118 | #endif | 118 | #endif |
119 | return; | 119 | return; |
120 | pal = 0; | 120 | (void)pal; |
121 | #else | 121 | #else |
122 | DATA16 *d = (DATA16 *)dst; | 122 | DATA16 *d = (DATA16 *)dst; |
123 | int w0 = w; | 123 | int w0 = w; |
@@ -144,7 +144,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int sr | |||
144 | d += dst_jump; | 144 | d += dst_jump; |
145 | } | 145 | } |
146 | return; | 146 | return; |
147 | pal = 0; | 147 | (void)pal; |
148 | #endif | 148 | #endif |
149 | } | 149 | } |
150 | #endif | 150 | #endif |
@@ -216,7 +216,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src | |||
216 | } | 216 | } |
217 | #endif | 217 | #endif |
218 | return; | 218 | return; |
219 | pal = 0; | 219 | (void)pal; |
220 | #else | 220 | #else |
221 | DATA16 *d = (DATA16 *)dst; | 221 | DATA16 *d = (DATA16 *)dst; |
222 | int w0 = w; | 222 | int w0 = w; |
@@ -233,7 +233,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src | |||
233 | d += dst_jump; | 233 | d += dst_jump; |
234 | } | 234 | } |
235 | return; | 235 | return; |
236 | pal = 0; | 236 | (void)pal; |
237 | #endif | 237 | #endif |
238 | } | 238 | } |
239 | #endif | 239 | #endif |
@@ -295,7 +295,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
295 | 295 | ||
296 | CONVERT_LOOP2_END_ROT_180(); | 296 | CONVERT_LOOP2_END_ROT_180(); |
297 | return; | 297 | return; |
298 | pal = 0; | 298 | (void)pal; |
299 | } | 299 | } |
300 | #endif | 300 | #endif |
301 | #endif | 301 | #endif |
@@ -333,7 +333,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
333 | 333 | ||
334 | CONVERT_LOOP_END_ROT_180(); | 334 | CONVERT_LOOP_END_ROT_180(); |
335 | return; | 335 | return; |
336 | pal = 0; | 336 | (void)pal; |
337 | } | 337 | } |
338 | #endif | 338 | #endif |
339 | #endif | 339 | #endif |
@@ -394,7 +394,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
394 | 394 | ||
395 | CONVERT_LOOP2_END_ROT_270(); | 395 | CONVERT_LOOP2_END_ROT_270(); |
396 | return; | 396 | return; |
397 | pal = 0; | 397 | (void)pal; |
398 | } | 398 | } |
399 | #endif | 399 | #endif |
400 | #endif | 400 | #endif |
@@ -432,7 +432,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
432 | 432 | ||
433 | CONVERT_LOOP_END_ROT_270(); | 433 | CONVERT_LOOP_END_ROT_270(); |
434 | return; | 434 | return; |
435 | pal = 0; | 435 | (void)pal; |
436 | } | 436 | } |
437 | #endif | 437 | #endif |
438 | #endif | 438 | #endif |
@@ -493,7 +493,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
493 | 493 | ||
494 | CONVERT_LOOP2_END_ROT_90(); | 494 | CONVERT_LOOP2_END_ROT_90(); |
495 | return; | 495 | return; |
496 | pal = 0; | 496 | (void)pal; |
497 | } | 497 | } |
498 | #endif | 498 | #endif |
499 | #endif | 499 | #endif |
@@ -531,7 +531,7 @@ evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
531 | 531 | ||
532 | CONVERT_LOOP_END_ROT_90(); | 532 | CONVERT_LOOP_END_ROT_90(); |
533 | return; | 533 | return; |
534 | pal = 0; | 534 | (void)pal; |
535 | } | 535 | } |
536 | #endif | 536 | #endif |
537 | #endif | 537 | #endif |
@@ -592,7 +592,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int sr | |||
592 | 592 | ||
593 | CONVERT_LOOP2_END_ROT_0(); | 593 | CONVERT_LOOP2_END_ROT_0(); |
594 | return; | 594 | return; |
595 | pal = 0; | 595 | (void)pal; |
596 | } | 596 | } |
597 | #endif | 597 | #endif |
598 | #endif | 598 | #endif |
@@ -630,7 +630,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src | |||
630 | 630 | ||
631 | CONVERT_LOOP_END_ROT_0(); | 631 | CONVERT_LOOP_END_ROT_0(); |
632 | return; | 632 | return; |
633 | pal = 0; | 633 | (void)pal; |
634 | } | 634 | } |
635 | #endif | 635 | #endif |
636 | #endif | 636 | #endif |
@@ -691,7 +691,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
691 | 691 | ||
692 | CONVERT_LOOP2_END_ROT_180(); | 692 | CONVERT_LOOP2_END_ROT_180(); |
693 | return; | 693 | return; |
694 | pal = 0; | 694 | (void)pal; |
695 | } | 695 | } |
696 | #endif | 696 | #endif |
697 | #endif | 697 | #endif |
@@ -731,7 +731,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
731 | 731 | ||
732 | CONVERT_LOOP_END_ROT_180(); | 732 | CONVERT_LOOP_END_ROT_180(); |
733 | return; | 733 | return; |
734 | pal = 0; | 734 | (void)pal; |
735 | } | 735 | } |
736 | #endif | 736 | #endif |
737 | #endif | 737 | #endif |
@@ -792,7 +792,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
792 | 792 | ||
793 | CONVERT_LOOP2_END_ROT_270(); | 793 | CONVERT_LOOP2_END_ROT_270(); |
794 | return; | 794 | return; |
795 | pal = 0; | 795 | (void)pal; |
796 | } | 796 | } |
797 | #endif | 797 | #endif |
798 | #endif | 798 | #endif |
@@ -830,7 +830,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
830 | 830 | ||
831 | CONVERT_LOOP_END_ROT_270(); | 831 | CONVERT_LOOP_END_ROT_270(); |
832 | return; | 832 | return; |
833 | pal = 0; | 833 | (void)pal; |
834 | } | 834 | } |
835 | #endif | 835 | #endif |
836 | #endif | 836 | #endif |
@@ -891,7 +891,7 @@ evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
891 | 891 | ||
892 | CONVERT_LOOP2_END_ROT_90(); | 892 | CONVERT_LOOP2_END_ROT_90(); |
893 | return; | 893 | return; |
894 | pal = 0; | 894 | (void)pal; |
895 | } | 895 | } |
896 | #endif | 896 | #endif |
897 | #endif | 897 | #endif |
@@ -929,7 +929,7 @@ evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
929 | 929 | ||
930 | CONVERT_LOOP_END_ROT_90(); | 930 | CONVERT_LOOP_END_ROT_90(); |
931 | return; | 931 | return; |
932 | pal = 0; | 932 | (void)pal; |
933 | } | 933 | } |
934 | #endif | 934 | #endif |
935 | #endif | 935 | #endif |
@@ -988,7 +988,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int sr | |||
988 | 988 | ||
989 | CONVERT_LOOP2_END_ROT_0(); | 989 | CONVERT_LOOP2_END_ROT_0(); |
990 | return; | 990 | return; |
991 | pal = 0; | 991 | (void)pal; |
992 | } | 992 | } |
993 | #endif | 993 | #endif |
994 | #endif | 994 | #endif |
@@ -1025,7 +1025,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src | |||
1025 | 1025 | ||
1026 | CONVERT_LOOP_END_ROT_0(); | 1026 | CONVERT_LOOP_END_ROT_0(); |
1027 | return; | 1027 | return; |
1028 | pal = 0; | 1028 | (void)pal; |
1029 | } | 1029 | } |
1030 | #endif | 1030 | #endif |
1031 | #endif | 1031 | #endif |
@@ -1084,7 +1084,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
1084 | 1084 | ||
1085 | CONVERT_LOOP2_END_ROT_180(); | 1085 | CONVERT_LOOP2_END_ROT_180(); |
1086 | return; | 1086 | return; |
1087 | pal = 0; | 1087 | (void)pal; |
1088 | } | 1088 | } |
1089 | #endif | 1089 | #endif |
1090 | #endif | 1090 | #endif |
@@ -1121,7 +1121,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
1121 | 1121 | ||
1122 | CONVERT_LOOP_END_ROT_180(); | 1122 | CONVERT_LOOP_END_ROT_180(); |
1123 | return; | 1123 | return; |
1124 | pal = 0; | 1124 | (void)pal; |
1125 | } | 1125 | } |
1126 | #endif | 1126 | #endif |
1127 | #endif | 1127 | #endif |
@@ -1180,7 +1180,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
1180 | 1180 | ||
1181 | CONVERT_LOOP2_END_ROT_270(); | 1181 | CONVERT_LOOP2_END_ROT_270(); |
1182 | return; | 1182 | return; |
1183 | pal = 0; | 1183 | (void)pal; |
1184 | } | 1184 | } |
1185 | #endif | 1185 | #endif |
1186 | #endif | 1186 | #endif |
@@ -1217,7 +1217,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
1217 | 1217 | ||
1218 | CONVERT_LOOP_END_ROT_270(); | 1218 | CONVERT_LOOP_END_ROT_270(); |
1219 | return; | 1219 | return; |
1220 | pal = 0; | 1220 | (void)pal; |
1221 | } | 1221 | } |
1222 | #endif | 1222 | #endif |
1223 | #endif | 1223 | #endif |
@@ -1276,7 +1276,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
1276 | 1276 | ||
1277 | CONVERT_LOOP2_END_ROT_90(); | 1277 | CONVERT_LOOP2_END_ROT_90(); |
1278 | return; | 1278 | return; |
1279 | pal = 0; | 1279 | (void)pal; |
1280 | } | 1280 | } |
1281 | #endif | 1281 | #endif |
1282 | #endif | 1282 | #endif |
@@ -1313,7 +1313,7 @@ evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
1313 | 1313 | ||
1314 | CONVERT_LOOP_END_ROT_90(); | 1314 | CONVERT_LOOP_END_ROT_90(); |
1315 | return; | 1315 | return; |
1316 | pal = 0; | 1316 | (void)pal; |
1317 | } | 1317 | } |
1318 | #endif | 1318 | #endif |
1319 | #endif | 1319 | #endif |
@@ -1372,7 +1372,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int | |||
1372 | 1372 | ||
1373 | CONVERT_LOOP2_END_ROT_0(); | 1373 | CONVERT_LOOP2_END_ROT_0(); |
1374 | return; | 1374 | return; |
1375 | pal = 0; | 1375 | (void)pal; |
1376 | } | 1376 | } |
1377 | #endif | 1377 | #endif |
1378 | #endif | 1378 | #endif |
@@ -1409,7 +1409,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int | |||
1409 | 1409 | ||
1410 | CONVERT_LOOP_END_ROT_0(); | 1410 | CONVERT_LOOP_END_ROT_0(); |
1411 | return; | 1411 | return; |
1412 | pal = 0; | 1412 | (void)pal; |
1413 | } | 1413 | } |
1414 | #endif | 1414 | #endif |
1415 | #endif | 1415 | #endif |
@@ -1468,7 +1468,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 * | |||
1468 | 1468 | ||
1469 | CONVERT_LOOP2_END_ROT_180(); | 1469 | CONVERT_LOOP2_END_ROT_180(); |
1470 | return; | 1470 | return; |
1471 | pal = 0; | 1471 | (void)pal; |
1472 | } | 1472 | } |
1473 | #endif | 1473 | #endif |
1474 | #endif | 1474 | #endif |
@@ -1505,7 +1505,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *d | |||
1505 | 1505 | ||
1506 | CONVERT_LOOP_END_ROT_180(); | 1506 | CONVERT_LOOP_END_ROT_180(); |
1507 | return; | 1507 | return; |
1508 | pal = 0; | 1508 | (void)pal; |
1509 | } | 1509 | } |
1510 | #endif | 1510 | #endif |
1511 | #endif | 1511 | #endif |
@@ -1565,7 +1565,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 * | |||
1565 | 1565 | ||
1566 | CONVERT_LOOP2_END_ROT_270(); | 1566 | CONVERT_LOOP2_END_ROT_270(); |
1567 | return; | 1567 | return; |
1568 | pal = 0; | 1568 | (void)pal; |
1569 | } | 1569 | } |
1570 | #endif | 1570 | #endif |
1571 | #endif | 1571 | #endif |
@@ -1602,7 +1602,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *d | |||
1602 | 1602 | ||
1603 | CONVERT_LOOP_END_ROT_270(); | 1603 | CONVERT_LOOP_END_ROT_270(); |
1604 | return; | 1604 | return; |
1605 | pal = 0; | 1605 | (void)pal; |
1606 | } | 1606 | } |
1607 | #endif | 1607 | #endif |
1608 | #endif | 1608 | #endif |
@@ -1661,7 +1661,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *d | |||
1661 | 1661 | ||
1662 | CONVERT_LOOP2_END_ROT_90(); | 1662 | CONVERT_LOOP2_END_ROT_90(); |
1663 | return; | 1663 | return; |
1664 | pal = 0; | 1664 | (void)pal; |
1665 | } | 1665 | } |
1666 | #endif | 1666 | #endif |
1667 | #endif | 1667 | #endif |
@@ -1698,7 +1698,7 @@ evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *ds | |||
1698 | 1698 | ||
1699 | CONVERT_LOOP_END_ROT_90(); | 1699 | CONVERT_LOOP_END_ROT_90(); |
1700 | return; | 1700 | return; |
1701 | pal = 0; | 1701 | (void)pal; |
1702 | } | 1702 | } |
1703 | #endif | 1703 | #endif |
1704 | #endif | 1704 | #endif |
@@ -1757,7 +1757,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int sr | |||
1757 | 1757 | ||
1758 | CONVERT_LOOP2_END_ROT_0(); | 1758 | CONVERT_LOOP2_END_ROT_0(); |
1759 | return; | 1759 | return; |
1760 | pal = 0; | 1760 | (void)pal; |
1761 | } | 1761 | } |
1762 | #endif | 1762 | #endif |
1763 | #endif | 1763 | #endif |
@@ -1794,7 +1794,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src | |||
1794 | 1794 | ||
1795 | CONVERT_LOOP_END_ROT_0(); | 1795 | CONVERT_LOOP_END_ROT_0(); |
1796 | return; | 1796 | return; |
1797 | pal = 0; | 1797 | (void)pal; |
1798 | } | 1798 | } |
1799 | #endif | 1799 | #endif |
1800 | #endif | 1800 | #endif |
@@ -1853,7 +1853,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst | |||
1853 | 1853 | ||
1854 | CONVERT_LOOP2_END_ROT_180(); | 1854 | CONVERT_LOOP2_END_ROT_180(); |
1855 | return; | 1855 | return; |
1856 | pal = 0; | 1856 | (void)pal; |
1857 | } | 1857 | } |
1858 | #endif | 1858 | #endif |
1859 | #endif | 1859 | #endif |
@@ -1890,7 +1890,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst, | |||
1890 | 1890 | ||
1891 | CONVERT_LOOP_END_ROT_180(); | 1891 | CONVERT_LOOP_END_ROT_180(); |
1892 | return; | 1892 | return; |
1893 | pal = 0; | 1893 | (void)pal; |
1894 | } | 1894 | } |
1895 | #endif | 1895 | #endif |
1896 | #endif | 1896 | #endif |
@@ -1949,7 +1949,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst | |||
1949 | 1949 | ||
1950 | CONVERT_LOOP2_END_ROT_270(); | 1950 | CONVERT_LOOP2_END_ROT_270(); |
1951 | return; | 1951 | return; |
1952 | pal = 0; | 1952 | (void)pal; |
1953 | } | 1953 | } |
1954 | #endif | 1954 | #endif |
1955 | #endif | 1955 | #endif |
@@ -1986,7 +1986,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst, | |||
1986 | 1986 | ||
1987 | CONVERT_LOOP_END_ROT_270(); | 1987 | CONVERT_LOOP_END_ROT_270(); |
1988 | return; | 1988 | return; |
1989 | pal = 0; | 1989 | (void)pal; |
1990 | } | 1990 | } |
1991 | #endif | 1991 | #endif |
1992 | #endif | 1992 | #endif |
@@ -2045,7 +2045,7 @@ evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
2045 | 2045 | ||
2046 | CONVERT_LOOP2_END_ROT_90(); | 2046 | CONVERT_LOOP2_END_ROT_90(); |
2047 | return; | 2047 | return; |
2048 | pal = 0; | 2048 | (void)pal; |
2049 | } | 2049 | } |
2050 | #endif | 2050 | #endif |
2051 | #endif | 2051 | #endif |
@@ -2082,7 +2082,7 @@ evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, | |||
2082 | 2082 | ||
2083 | CONVERT_LOOP_END_ROT_90(); | 2083 | CONVERT_LOOP_END_ROT_90(); |
2084 | return; | 2084 | return; |
2085 | pal = 0; | 2085 | (void)pal; |
2086 | } | 2086 | } |
2087 | #endif | 2087 | #endif |
2088 | #endif | 2088 | #endif |
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c b/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c index 41dac6f..0401a4a 100644 --- a/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c +++ b/libraries/evas/src/lib/engines/common/evas_convert_rgb_32.c | |||
@@ -48,15 +48,167 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_180 (DATA32 *src, DATA8 *dst, int | |||
48 | #endif | 48 | #endif |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | #ifdef TILE_ROTATE | ||
52 | #define FAST_SIMPLE_ROTATE(suffix, pix_type) \ | ||
53 | static void \ | ||
54 | blt_rotated_90_trivial_##suffix(pix_type *dst, \ | ||
55 | int dst_stride, \ | ||
56 | const pix_type *src, \ | ||
57 | int src_stride, \ | ||
58 | int w, \ | ||
59 | int h) \ | ||
60 | { \ | ||
61 | int x, y; \ | ||
62 | for (y = 0; y < h; y++) \ | ||
63 | { \ | ||
64 | const pix_type *s = src + (h - y - 1); \ | ||
65 | pix_type *d = dst + (dst_stride * y); \ | ||
66 | for (x = 0; x < w; x++) \ | ||
67 | { \ | ||
68 | *d++ = *s; \ | ||
69 | s += src_stride; \ | ||
70 | } \ | ||
71 | } \ | ||
72 | } \ | ||
73 | static void \ | ||
74 | blt_rotated_270_trivial_##suffix(pix_type *dst, \ | ||
75 | int dst_stride, \ | ||
76 | const pix_type *src, \ | ||
77 | int src_stride, \ | ||
78 | int w, \ | ||
79 | int h) \ | ||
80 | { \ | ||
81 | int x, y; \ | ||
82 | for (y = 0; y < h; y++) \ | ||
83 | { \ | ||
84 | const pix_type *s = src + (src_stride * (w - 1)) + y; \ | ||
85 | pix_type *d = dst + (dst_stride * y); \ | ||
86 | for (x = 0; x < w; x++) \ | ||
87 | { \ | ||
88 | *d++ = *s; \ | ||
89 | s -= src_stride; \ | ||
90 | } \ | ||
91 | } \ | ||
92 | } \ | ||
93 | static void \ | ||
94 | blt_rotated_90_##suffix(pix_type *dst, \ | ||
95 | int dst_stride, \ | ||
96 | const pix_type *src, \ | ||
97 | int src_stride, \ | ||
98 | int w, \ | ||
99 | int h) \ | ||
100 | { \ | ||
101 | int x, leading_pixels = 0, trailing_pixels = 0; \ | ||
102 | const int TILE_SIZE = TILE_CACHE_LINE_SIZE / sizeof(pix_type); \ | ||
103 | if ((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
104 | { \ | ||
105 | leading_pixels = TILE_SIZE - \ | ||
106 | (((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
107 | if (leading_pixels > w) \ | ||
108 | leading_pixels = w; \ | ||
109 | blt_rotated_90_trivial_##suffix(dst, \ | ||
110 | dst_stride, \ | ||
111 | src, \ | ||
112 | src_stride, \ | ||
113 | leading_pixels, \ | ||
114 | h); \ | ||
115 | dst += leading_pixels; \ | ||
116 | src += leading_pixels * src_stride; \ | ||
117 | w -= leading_pixels; \ | ||
118 | } \ | ||
119 | if ((uintptr_t)(dst + w) & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
120 | { \ | ||
121 | trailing_pixels = (((uintptr_t)(dst + w) & \ | ||
122 | (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
123 | if (trailing_pixels > w) \ | ||
124 | trailing_pixels = w; \ | ||
125 | w -= trailing_pixels; \ | ||
126 | } \ | ||
127 | for (x = 0; x < w; x += TILE_SIZE) \ | ||
128 | { \ | ||
129 | blt_rotated_90_trivial_##suffix(dst + x, \ | ||
130 | dst_stride, \ | ||
131 | src + (src_stride * x), \ | ||
132 | src_stride, \ | ||
133 | TILE_SIZE, \ | ||
134 | h); \ | ||
135 | } \ | ||
136 | if (trailing_pixels) \ | ||
137 | blt_rotated_90_trivial_##suffix(dst + w, \ | ||
138 | dst_stride, \ | ||
139 | src + (w * src_stride), \ | ||
140 | src_stride, \ | ||
141 | trailing_pixels, \ | ||
142 | h); \ | ||
143 | } \ | ||
144 | static void \ | ||
145 | blt_rotated_270_##suffix(pix_type *dst, \ | ||
146 | int dst_stride, \ | ||
147 | const pix_type *src, \ | ||
148 | int src_stride, \ | ||
149 | int w, \ | ||
150 | int h) \ | ||
151 | { \ | ||
152 | int x, leading_pixels = 0, trailing_pixels = 0; \ | ||
153 | const int TILE_SIZE = TILE_CACHE_LINE_SIZE / sizeof(pix_type); \ | ||
154 | if ((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
155 | { \ | ||
156 | leading_pixels = TILE_SIZE - \ | ||
157 | (((uintptr_t)dst & (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
158 | if (leading_pixels > w) \ | ||
159 | leading_pixels = w; \ | ||
160 | blt_rotated_270_trivial_##suffix(dst, \ | ||
161 | dst_stride, \ | ||
162 | src + (src_stride * (w - leading_pixels)), \ | ||
163 | src_stride, \ | ||
164 | leading_pixels, \ | ||
165 | h); \ | ||
166 | dst += leading_pixels; \ | ||
167 | w -= leading_pixels; \ | ||
168 | } \ | ||
169 | if ((uintptr_t)(dst + w) & (TILE_CACHE_LINE_SIZE - 1)) \ | ||
170 | { \ | ||
171 | trailing_pixels = (((uintptr_t)(dst + w) & \ | ||
172 | (TILE_CACHE_LINE_SIZE - 1)) / sizeof(pix_type)); \ | ||
173 | if (trailing_pixels > w) \ | ||
174 | trailing_pixels = w; \ | ||
175 | w -= trailing_pixels; \ | ||
176 | src += trailing_pixels * src_stride; \ | ||
177 | } \ | ||
178 | for (x = 0; x < w; x += TILE_SIZE) \ | ||
179 | { \ | ||
180 | blt_rotated_270_trivial_##suffix(dst + x, \ | ||
181 | dst_stride, \ | ||
182 | src + (src_stride * (w - x - TILE_SIZE)), \ | ||
183 | src_stride, \ | ||
184 | TILE_SIZE, \ | ||
185 | h); \ | ||
186 | } \ | ||
187 | if (trailing_pixels) \ | ||
188 | blt_rotated_270_trivial_##suffix(dst + w, \ | ||
189 | dst_stride, \ | ||
190 | src - (trailing_pixels * src_stride), \ | ||
191 | src_stride, \ | ||
192 | trailing_pixels, \ | ||
193 | h); \ | ||
194 | } | ||
195 | |||
196 | FAST_SIMPLE_ROTATE(8888, DATA8) | ||
197 | #endif | ||
198 | |||
199 | |||
51 | #ifdef BUILD_CONVERT_32_RGB_8888 | 200 | #ifdef BUILD_CONVERT_32_RGB_8888 |
52 | #ifdef BUILD_CONVERT_32_RGB_ROT270 | 201 | #ifdef BUILD_CONVERT_32_RGB_ROT270 |
53 | void | 202 | void |
54 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) | 203 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) |
55 | { | 204 | { |
205 | #ifdef TILE_ROTATE | ||
206 | blt_rotated_270_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ; | ||
207 | #else | ||
56 | DATA32 *src_ptr; | 208 | DATA32 *src_ptr; |
57 | DATA32 *dst_ptr; | 209 | DATA32 *dst_ptr; |
58 | int x, y; | 210 | int x, y; |
59 | 211 | ||
60 | dst_ptr = (DATA32 *)dst; | 212 | dst_ptr = (DATA32 *)dst; |
61 | 213 | ||
62 | CONVERT_LOOP_START_ROT_270(); | 214 | CONVERT_LOOP_START_ROT_270(); |
@@ -64,6 +216,7 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int | |||
64 | *dst_ptr = *src_ptr; | 216 | *dst_ptr = *src_ptr; |
65 | 217 | ||
66 | CONVERT_LOOP_END_ROT_270(); | 218 | CONVERT_LOOP_END_ROT_270(); |
219 | #endif | ||
67 | return; | 220 | return; |
68 | } | 221 | } |
69 | #endif | 222 | #endif |
@@ -74,106 +227,118 @@ evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int | |||
74 | void | 227 | void |
75 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) | 228 | evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x __UNUSED__, int dith_y __UNUSED__, DATA8 *pal __UNUSED__) |
76 | { | 229 | { |
77 | #ifndef BUILD_NEON | 230 | # ifndef BUILD_NEON |
231 | # ifdef TILE_ROTATE | ||
232 | blt_rotated_90_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ; | ||
233 | # else | ||
78 | DATA32 *src_ptr; | 234 | DATA32 *src_ptr; |
79 | DATA32 *dst_ptr; | 235 | DATA32 *dst_ptr; |
80 | int x, y; | 236 | int x, y; |
81 | 237 | ||
82 | dst_ptr = (DATA32 *)dst; | 238 | dst_ptr = (DATA32 *)dst; |
83 | CONVERT_LOOP_START_ROT_90(); | 239 | CONVERT_LOOP_START_ROT_90(); |
84 | 240 | ||
85 | *dst_ptr = *src_ptr; | 241 | *dst_ptr = *src_ptr; |
86 | 242 | ||
87 | CONVERT_LOOP_END_ROT_90(); | 243 | CONVERT_LOOP_END_ROT_90(); |
88 | #else | 244 | # endif |
245 | |||
246 | # else | ||
247 | |||
248 | # ifdef TILE_ROTATE | ||
249 | blt_rotated_90_8888((DATA8 *)dst, dst_jump+w, (const DATA8 *)src, src_jump+h, w, h) ; | ||
250 | # else | ||
89 | if ((w & 1) || (h & 1)) | 251 | if ((w & 1) || (h & 1)) |
90 | { | 252 | { |
91 | /* Rarely (if ever) if ever: so slow path is fine */ | 253 | /* Rarely (if ever) if ever: so slow path is fine */ |
92 | DATA32 *src_ptr; | 254 | DATA32 *src_ptr; |
93 | DATA32 *dst_ptr; | 255 | DATA32 *dst_ptr; |
94 | int x, y; | 256 | int x, y; |
95 | 257 | ||
96 | dst_ptr = (DATA32 *)dst; | 258 | dst_ptr = (DATA32 *)dst; |
97 | CONVERT_LOOP_START_ROT_90(); | 259 | CONVERT_LOOP_START_ROT_90(); |
98 | 260 | ||
99 | *dst_ptr = *src_ptr; | 261 | *dst_ptr = *src_ptr; |
100 | 262 | ||
101 | CONVERT_LOOP_END_ROT_90(); | 263 | CONVERT_LOOP_END_ROT_90(); |
102 | } else { | 264 | } |
103 | #define AP "convert_rgba32_rot_90_" | 265 | else |
104 | asm volatile ( | 266 | { |
105 | ".fpu neon \n\t" | 267 | # define AP "convert_rgba32_rot_90_" |
106 | " mov %[s1], %[src] \n\t" | 268 | asm volatile ( |
107 | " add %[s1], %[h],lsl #2 \n\t" | 269 | ".fpu neon \n\t" |
108 | " sub %[s1], #8 \n\t" | 270 | " mov %[s1], %[src] \n\t" |
109 | 271 | " add %[s1], %[s1], %[h],lsl #2 \n\t" | |
110 | " mov %[s2], %[src] \n\t" | 272 | " sub %[s1], #8 \n\t" |
111 | " add %[s2], %[h], lsl #3 \n\t" | 273 | |
112 | " add %[s2], %[sjmp], lsr #1 \n\t" | 274 | " mov %[s2], %[src] \n\t" |
113 | " sub %[s2], #8 \n\t" | 275 | " add %[s2], %[s2], %[h], lsl #3 \n\t" |
114 | 276 | " add %[s2], %[s2], %[sjmp], lsr #1 \n\t" | |
115 | " mov %[d1], %[dst] \n\t" | 277 | " sub %[s2], #8 \n\t" |
116 | 278 | ||
117 | " add %[d2], %[d1], %[djmp] \n\t" | 279 | " mov %[d1], %[dst] \n\t" |
118 | " add %[d2], %[w], lsl #2 \n\t" | 280 | |
119 | 281 | " add %[d2], %[d1], %[djmp] \n\t" | |
120 | " mov %[sadv], %[h], lsl #3 \n\t" | 282 | " add %[d2], %[d2], %[w], lsl #2 \n\t" |
121 | " add %[sadv], %[sjmp], lsl #1 \n\t" | 283 | |
122 | 284 | " mov %[sadv], %[h], lsl #3 \n\t" | |
123 | " mov %[y], #0 \n\t" | 285 | " add %[sadv], %[sadv], %[sjmp], lsl #1\n\t" |
124 | " mov %[x], #0 \n\t" | 286 | |
125 | AP"loop: \n\t" | 287 | " mov %[y], #0 \n\t" |
126 | " vld1.u32 d0, [%[s1]] \n\t" | 288 | " mov %[x], #0 \n\t" |
127 | " vld1.u32 d1, [%[s2]] \n\t" | 289 | AP"loop: \n\t" |
128 | " add %[x], #2 \n\t" | 290 | " vld1.u32 d0, [%[s1]] \n\t" |
129 | " add %[s1], %[sadv] \n\t" | 291 | " vld1.u32 d1, [%[s2]] \n\t" |
130 | " add %[s2], %[sadv] \n\t" | 292 | " add %[x], #2 \n\t" |
131 | " vtrn.u32 d0, d1 \n\t" | 293 | " add %[s1], %[sadv] \n\t" |
132 | " cmp %[x], %[w] \n\t" | 294 | " add %[s2], %[sadv] \n\t" |
133 | " vst1.u32 d1, [%[d1]]! \n\t" | 295 | " vtrn.u32 d0, d1 \n\t" |
134 | " vst1.u32 d0, [%[d2]]! \n\t" | 296 | " cmp %[x], %[w] \n\t" |
135 | " blt "AP"loop \n\t" | 297 | " vst1.u32 d1, [%[d1]]! \n\t" |
136 | 298 | " vst1.u32 d0, [%[d2]]! \n\t" | |
137 | " mov %[x], #0 \n\t" | 299 | " blt "AP"loop \n\t" |
138 | " add %[d1], %[djmp] \n\t" | 300 | |
139 | " add %[d1], %[w], lsl #2 \n\t" | 301 | " mov %[x], #0 \n\t" |
140 | " add %[d2], %[djmp] \n\t" | 302 | " add %[d1], %[djmp] \n\t" |
141 | " add %[d2], %[w], lsl #2 \n\t" | 303 | " add %[d1], %[d1], %[w], lsl #2 \n\t" |
142 | 304 | " add %[d2], %[djmp] \n\t" | |
143 | " mov %[s1], %[src] \n\t" | 305 | " add %[d2], %[d2], %[w], lsl #2 \n\t" |
144 | " add %[s1], %[h], lsl #2 \n\t" | 306 | |
145 | " sub %[s1], %[y], lsl #2 \n\t" | 307 | " mov %[s1], %[src] \n\t" |
146 | " sub %[s1], #16 \n\t" | 308 | " add %[s1], %[s1], %[h], lsl #2 \n\t" |
147 | 309 | " sub %[s1], %[s1], %[y], lsl #2 \n\t" | |
148 | " add %[s2], %[s1], %[h], lsl #2 \n\t" | 310 | " sub %[s1], #16 \n\t" |
149 | " add %[s2], %[sjmp], lsl #2 \n\t" | 311 | |
150 | 312 | " add %[s2], %[s1], %[h], lsl #2 \n\t" | |
151 | " add %[y], #2 \n\t" | 313 | " add %[s2], %[s2], %[sjmp], lsl #2 \n\t" |
152 | 314 | ||
153 | " cmp %[y], %[h] \n\t" | 315 | " add %[y], #2 \n\t" |
154 | " blt "AP"loop \n\t" | 316 | |
155 | 317 | " cmp %[y], %[h] \n\t" | |
156 | : // Out | 318 | " blt "AP"loop \n\t" |
157 | : [s1] "r" (1), | 319 | |
158 | [s2] "r" (11), | 320 | : // Out |
159 | [d1] "r" (2), | 321 | : [s1] "r" (1), |
160 | [d2] "r" (12), | 322 | [s2] "r" (11), |
161 | [src] "r" (src), | 323 | [d1] "r" (2), |
162 | [dst] "r" (dst), | 324 | [d2] "r" (12), |
163 | [x] "r" (3), | 325 | [src] "r" (src), |
164 | [y] "r" (4), | 326 | [dst] "r" (dst), |
165 | [w] "r" (w), | 327 | [x] "r" (3), |
166 | [h] "r" (h), | 328 | [y] "r" (4), |
167 | [sadv] "r" (5), | 329 | [w] "r" (w), |
168 | [sjmp] "r" (src_jump * 4), | 330 | [h] "r" (h), |
169 | [djmp] "r" (dst_jump * 4 * 2) | 331 | [sadv] "r" (5), |
170 | : "d0", "d1", "memory", "cc"// Clober | 332 | [sjmp] "r" (src_jump * 4), |
171 | 333 | [djmp] "r" (dst_jump * 4 * 2) | |
172 | 334 | : "d0", "d1", "memory", "cc"// Clober | |
173 | ); | 335 | |
174 | } | 336 | |
175 | #undef AP | 337 | ); |
176 | #endif | 338 | } |
339 | # undef AP | ||
340 | # endif | ||
341 | # endif | ||
177 | return; | 342 | return; |
178 | } | 343 | } |
179 | #endif | 344 | #endif |
@@ -448,7 +613,7 @@ evas_common_convert_rgba_to_32bpp_rgb_666(DATA32 *src, DATA8 *dst, int src_jump, | |||
448 | 613 | ||
449 | CONVERT_LOOP_START_ROT_0(); | 614 | CONVERT_LOOP_START_ROT_0(); |
450 | 615 | ||
451 | *dst_ptr = | 616 | *dst_ptr = |
452 | (((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) | | 617 | (((R_VAL(src_ptr) << 12) | (B_VAL(src_ptr) >> 2)) & 0x03f03f) | |
453 | ((G_VAL(src_ptr) << 4) & 0x000fc0); | 618 | ((G_VAL(src_ptr) << 4) & 0x000fc0); |
454 | 619 | ||
diff --git a/libraries/evas/src/lib/engines/common/evas_convert_yuv.c b/libraries/evas/src/lib/engines/common/evas_convert_yuv.c index a0d155c..000cb01 100644 --- a/libraries/evas/src/lib/engines/common/evas_convert_yuv.c +++ b/libraries/evas/src/lib/engines/common/evas_convert_yuv.c | |||
@@ -1091,7 +1091,7 @@ _evas_nv12tiledtorgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int | |||
1091 | const int offset_value[2] = { 0, 64 * 16 }; | 1091 | const int offset_value[2] = { 0, 64 * 16 }; |
1092 | int mb_x, mb_y, mb_w, mb_h; | 1092 | int mb_x, mb_y, mb_w, mb_h; |
1093 | int base_h; | 1093 | int base_h; |
1094 | int uv_x, uv_y, uv_step; | 1094 | int uv_x, uv_step; |
1095 | int stride; | 1095 | int stride; |
1096 | 1096 | ||
1097 | /* Idea iterate over each macroblock and convert each of them using _evas_nv12torgb_raster */ | 1097 | /* Idea iterate over each macroblock and convert each of them using _evas_nv12torgb_raster */ |
@@ -1128,7 +1128,7 @@ _evas_nv12tiledtorgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int | |||
1128 | base_h = (mb_h >> 1) + (mb_h & 0x1); | 1128 | base_h = (mb_h >> 1) + (mb_h & 0x1); |
1129 | stride = w * sizeof (int); | 1129 | stride = w * sizeof (int); |
1130 | 1130 | ||
1131 | uv_x = 0; uv_y = 0; | 1131 | uv_x = 0; |
1132 | 1132 | ||
1133 | /* In this format we linearize macroblock on two line to form a Z and it's invert */ | 1133 | /* In this format we linearize macroblock on two line to form a Z and it's invert */ |
1134 | for (mb_y = 0; mb_y < (mb_h >> 1); mb_y++) | 1134 | for (mb_y = 0; mb_y < (mb_h >> 1); mb_y++) |
diff --git a/libraries/evas/src/lib/engines/common/evas_cpu.c b/libraries/evas/src/lib/engines/common/evas_cpu.c index cff8b2b..fe90c5b 100644 --- a/libraries/evas/src/lib/engines/common/evas_cpu.c +++ b/libraries/evas/src/lib/engines/common/evas_cpu.c | |||
@@ -74,6 +74,7 @@ evas_common_cpu_sse3_test(void) | |||
74 | #endif | 74 | #endif |
75 | } | 75 | } |
76 | 76 | ||
77 | #ifdef BUILD_ALTIVEC | ||
77 | void | 78 | void |
78 | evas_common_cpu_altivec_test(void) | 79 | evas_common_cpu_altivec_test(void) |
79 | { | 80 | { |
@@ -85,6 +86,7 @@ evas_common_cpu_altivec_test(void) | |||
85 | #endif /* __VEC__ */ | 86 | #endif /* __VEC__ */ |
86 | #endif /* __POWERPC__ */ | 87 | #endif /* __POWERPC__ */ |
87 | } | 88 | } |
89 | #endif /* BUILD_ALTIVEC */ | ||
88 | 90 | ||
89 | void | 91 | void |
90 | evas_common_cpu_neon_test(void) | 92 | evas_common_cpu_neon_test(void) |
@@ -177,6 +179,7 @@ evas_common_cpu_init(void) | |||
177 | #endif /* BUILD_SSE3 */ | 179 | #endif /* BUILD_SSE3 */ |
178 | #endif /* BUILD_SSE */ | 180 | #endif /* BUILD_SSE */ |
179 | #endif /* BUILD_MMX */ | 181 | #endif /* BUILD_MMX */ |
182 | #ifdef BUILD_ALTIVEC | ||
180 | #ifdef __POWERPC__ | 183 | #ifdef __POWERPC__ |
181 | #ifdef __VEC__ | 184 | #ifdef __VEC__ |
182 | cpu_feature_mask |= CPU_FEATURE_ALTIVEC * | 185 | cpu_feature_mask |= CPU_FEATURE_ALTIVEC * |
@@ -186,6 +189,7 @@ evas_common_cpu_init(void) | |||
186 | cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC; | 189 | cpu_feature_mask &= ~CPU_FEATURE_ALTIVEC; |
187 | #endif /* __VEC__ */ | 190 | #endif /* __VEC__ */ |
188 | #endif /* __POWERPC__ */ | 191 | #endif /* __POWERPC__ */ |
192 | #endif /* BUILD_ALTIVEC */ | ||
189 | #ifdef __SPARC__ | 193 | #ifdef __SPARC__ |
190 | cpu_feature_mask |= CPU_FEATURE_VIS * | 194 | cpu_feature_mask |= CPU_FEATURE_VIS * |
191 | evas_common_cpu_feature_test(evas_common_cpu_vis_test); | 195 | evas_common_cpu_feature_test(evas_common_cpu_vis_test); |
diff --git a/libraries/evas/src/lib/engines/common/evas_draw_main.c b/libraries/evas/src/lib/engines/common/evas_draw_main.c index 7652708..def19a8 100644 --- a/libraries/evas/src/lib/engines/common/evas_draw_main.c +++ b/libraries/evas/src/lib/engines/common/evas_draw_main.c | |||
@@ -75,6 +75,14 @@ evas_common_draw_context_free(RGBA_Draw_Context *dc) | |||
75 | { | 75 | { |
76 | if (!dc) return; | 76 | if (!dc) return; |
77 | 77 | ||
78 | #ifdef HAVE_PIXMAN | ||
79 | if (dc->col.pixman_color_image) | ||
80 | { | ||
81 | pixman_image_unref(dc->col.pixman_color_image); | ||
82 | dc->col.pixman_color_image = NULL; | ||
83 | } | ||
84 | #endif | ||
85 | |||
78 | evas_common_draw_context_apply_clean_cutouts(&dc->cutout); | 86 | evas_common_draw_context_apply_clean_cutouts(&dc->cutout); |
79 | free(dc); | 87 | free(dc); |
80 | } | 88 | } |
@@ -133,6 +141,20 @@ evas_common_draw_context_set_color(RGBA_Draw_Context *dc, int r, int g, int b, i | |||
133 | G_VAL(&(dc->col.col)) = (DATA8)g; | 141 | G_VAL(&(dc->col.col)) = (DATA8)g; |
134 | B_VAL(&(dc->col.col)) = (DATA8)b; | 142 | B_VAL(&(dc->col.col)) = (DATA8)b; |
135 | A_VAL(&(dc->col.col)) = (DATA8)a; | 143 | A_VAL(&(dc->col.col)) = (DATA8)a; |
144 | #ifdef HAVE_PIXMAN | ||
145 | if (dc && dc->col.pixman_color_image) | ||
146 | pixman_image_unref(dc->col.pixman_color_image); | ||
147 | |||
148 | pixman_color_t pixman_color; | ||
149 | |||
150 | pixman_color.alpha = (dc->col.col & 0xff000000) >> 16; | ||
151 | pixman_color.red = (dc->col.col & 0x00ff0000) >> 8; | ||
152 | pixman_color.green = (dc->col.col & 0x0000ff00); | ||
153 | pixman_color.blue = (dc->col.col & 0x000000ff) << 8; | ||
154 | |||
155 | dc->col.pixman_color_image = pixman_image_create_solid_fill(&pixman_color); | ||
156 | #endif | ||
157 | |||
136 | } | 158 | } |
137 | 159 | ||
138 | EAPI void | 160 | EAPI void |
@@ -159,12 +181,42 @@ evas_common_draw_context_set_mask(RGBA_Draw_Context *dc, RGBA_Image *mask, int x | |||
159 | dc->mask.y = y; | 181 | dc->mask.y = y; |
160 | dc->mask.w = w; | 182 | dc->mask.w = w; |
161 | dc->mask.h = h; | 183 | dc->mask.h = h; |
184 | |||
185 | #ifdef HAVE_PIXMAN | ||
186 | if (mask->pixman.im) | ||
187 | pixman_image_unref(mask->pixman.im); | ||
188 | |||
189 | if (mask->cache_entry.flags.alpha) | ||
190 | { | ||
191 | mask->pixman.im = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h, | ||
192 | (uint32_t *)mask->mask.mask, | ||
193 | w * 4); | ||
194 | } | ||
195 | else | ||
196 | { | ||
197 | mask->pixman.im = pixman_image_create_bits(PIXMAN_x8r8g8b8, w, h, | ||
198 | (uint32_t *)mask->mask.mask, | ||
199 | w * 4); | ||
200 | } | ||
201 | #endif | ||
202 | |||
162 | } | 203 | } |
163 | 204 | ||
164 | EAPI void | 205 | EAPI void |
165 | evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc) | 206 | evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc) |
166 | { | 207 | { |
167 | dc->mask.mask = NULL; | 208 | dc->mask.mask = NULL; |
209 | |||
210 | #ifdef HAVE_PIXMAN | ||
211 | RGBA_Image *mask; | ||
212 | mask = (RGBA_Image *)dc->mask.mask; | ||
213 | |||
214 | if (mask && mask->pixman.im) | ||
215 | { | ||
216 | pixman_image_unref(mask->pixman.im); | ||
217 | mask->pixman.im = NULL; | ||
218 | } | ||
219 | #endif | ||
168 | } | 220 | } |
169 | 221 | ||
170 | 222 | ||
@@ -179,32 +231,32 @@ evas_common_draw_context_add_cutout(RGBA_Draw_Context *dc, int x, int y, int w, | |||
179 | { | 231 | { |
180 | #if 1 // this is a bit faster | 232 | #if 1 // this is a bit faster |
181 | int xa1, xa2, xb1, xb2; | 233 | int xa1, xa2, xb1, xb2; |
182 | 234 | ||
183 | xa1 = x; | 235 | xa1 = x; |
184 | xa2 = xa1 + w - 1; | 236 | xa2 = xa1 + w - 1; |
185 | xb1 = dc->clip.x; | 237 | xb1 = dc->clip.x; |
186 | if (xa2 < xb1) return; | 238 | if (xa2 < xb1) return; |
187 | xb2 = xb1 + dc->clip.w - 1; | 239 | xb2 = xb1 + dc->clip.w - 1; |
188 | if (xa1 >= xb2) return; | 240 | if (xa1 >= xb2) return; |
189 | if (xa2 > xb2) xa2 = xb2; | 241 | if (xa2 > xb2) xa2 = xb2; |
190 | if (xb1 > xa1) xa1 = xb1; | 242 | if (xb1 > xa1) xa1 = xb1; |
191 | x = xa1; | 243 | x = xa1; |
192 | w = xa2 - xa1 + 1; | 244 | w = xa2 - xa1 + 1; |
193 | 245 | ||
194 | xa1 = y; | 246 | xa1 = y; |
195 | xa2 = xa1 + h - 1; | 247 | xa2 = xa1 + h - 1; |
196 | xb1 = dc->clip.y; | 248 | xb1 = dc->clip.y; |
197 | if (xa2 < xb1) return; | 249 | if (xa2 < xb1) return; |
198 | xb2 = xb1 + dc->clip.h - 1; | 250 | xb2 = xb1 + dc->clip.h - 1; |
199 | if (xa1 >= xb2) return; | 251 | if (xa1 >= xb2) return; |
200 | if (xa2 > xb2) xa2 = xb2; | 252 | if (xa2 > xb2) xa2 = xb2; |
201 | if (xb1 > xa1) xa1 = xb1; | 253 | if (xb1 > xa1) xa1 = xb1; |
202 | y = xa1; | 254 | y = xa1; |
203 | h = xa2 - xa1 + 1; | 255 | h = xa2 - xa1 + 1; |
204 | #else | 256 | #else |
205 | RECTS_CLIP_TO_RECT(x, y, w, h, | 257 | RECTS_CLIP_TO_RECT(x, y, w, h, |
206 | dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); | 258 | dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); |
207 | #endif | 259 | #endif |
208 | if ((w < 1) || (h < 1)) return; | 260 | if ((w < 1) || (h < 1)) return; |
209 | } | 261 | } |
210 | evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h); | 262 | evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h); |
@@ -513,7 +565,7 @@ evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc) | |||
513 | 565 | ||
514 | if (!dc->clip.use) return NULL; | 566 | if (!dc->clip.use) return NULL; |
515 | if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL; | 567 | if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL; |
516 | 568 | ||
517 | 569 | ||
518 | res = evas_common_draw_context_cutouts_new(); | 570 | res = evas_common_draw_context_cutouts_new(); |
519 | evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); | 571 | evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); |
diff --git a/libraries/evas/src/lib/engines/common/evas_font_draw.c b/libraries/evas/src/lib/engines/common/evas_font_draw.c index 94aa085..638cdfe 100644 --- a/libraries/evas/src/lib/engines/common/evas_font_draw.c +++ b/libraries/evas/src/lib/engines/common/evas_font_draw.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | static int max_cached_words = WORD_CACHE_NWORDS; | 23 | static int max_cached_words = WORD_CACHE_NWORDS; |
24 | 24 | ||
25 | struct prword | 25 | struct prword |
26 | { | 26 | { |
27 | EINA_INLIST; | 27 | EINA_INLIST; |
28 | struct cinfo *cinfo; | 28 | struct cinfo *cinfo; |
@@ -34,16 +34,16 @@ struct prword | |||
34 | int baseline; | 34 | int baseline; |
35 | }; | 35 | }; |
36 | 36 | ||
37 | struct cinfo | 37 | struct cinfo |
38 | { | 38 | { |
39 | FT_UInt index; | 39 | FT_UInt index; |
40 | struct | 40 | struct |
41 | { | 41 | { |
42 | int x, y; | 42 | int x, y; |
43 | } pos; | 43 | } pos; |
44 | int posx; | 44 | int posx; |
45 | RGBA_Font_Glyph *fg; | 45 | RGBA_Font_Glyph *fg; |
46 | struct | 46 | struct |
47 | { | 47 | { |
48 | int w,h; | 48 | int w,h; |
49 | int rows; | 49 | int rows; |
@@ -77,11 +77,11 @@ evas_common_font_draw_init(void) | |||
77 | #ifdef EVAS_FRAME_QUEUING | 77 | #ifdef EVAS_FRAME_QUEUING |
78 | EAPI void | 78 | EAPI void |
79 | evas_common_font_draw_finish(void) | 79 | evas_common_font_draw_finish(void) |
80 | { | 80 | { |
81 | } | 81 | } |
82 | #endif | 82 | #endif |
83 | 83 | ||
84 | /* | 84 | /* |
85 | * BiDi handling: We receive the shaped string + other props from text_props, | 85 | * BiDi handling: We receive the shaped string + other props from text_props, |
86 | * we need to reorder it so we'll have the visual string (the way we draw) | 86 | * we need to reorder it so we'll have the visual string (the way we draw) |
87 | * and then for kerning we have to switch the order of the kerning query (as the prev | 87 | * and then for kerning we have to switch the order of the kerning query (as the prev |
@@ -89,7 +89,7 @@ evas_common_font_draw_finish(void) | |||
89 | */ | 89 | */ |
90 | static void | 90 | static void |
91 | evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn __UNUSED__, int x, int y, | 91 | evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn __UNUSED__, int x, int y, |
92 | const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w, | 92 | const Evas_Text_Props *text_props, RGBA_Gfx_Func func, int ext_x, int ext_y, int ext_w, |
93 | int ext_h, int im_w, int im_h __UNUSED__) | 93 | int ext_h, int im_w, int im_h __UNUSED__) |
94 | { | 94 | { |
95 | DATA32 *im; | 95 | DATA32 *im; |
@@ -136,7 +136,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
136 | { | 136 | { |
137 | xrun -= x + xrun - ext_x - ext_w; | 137 | xrun -= x + xrun - ext_x - ext_w; |
138 | } | 138 | } |
139 | if (x < ext_x) | 139 | if (x < ext_x) |
140 | { | 140 | { |
141 | int excess = ext_x - x; | 141 | int excess = ext_x - x; |
142 | xstart = excess - 1; | 142 | xstart = excess - 1; |
@@ -244,10 +244,29 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
244 | if (j < w) j = w; | 244 | if (j < w) j = w; |
245 | h = fg->glyph_out->bitmap.rows; | 245 | h = fg->glyph_out->bitmap.rows; |
246 | /* | 246 | /* |
247 | if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) | 247 | if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) |
248 | && (fg->glyph_out->bitmap.num_grays == 256) | 248 | && (fg->glyph_out->bitmap.num_grays == 256) |
249 | ) | 249 | ) |
250 | */ | 250 | */ |
251 | |||
252 | #ifdef HAVE_PIXMAN | ||
253 | # ifdef PIXMAN_FONT | ||
254 | int index; | ||
255 | DATA32 *font_alpha_buffer; | ||
256 | pixman_image_t *font_mask_image; | ||
257 | |||
258 | font_alpha_buffer = alloca(w * h * sizeof(DATA32)); | ||
259 | for (index = 0; index < (w * h); index++) | ||
260 | font_alpha_buffer[index] = data[index] << 24; | ||
261 | |||
262 | font_mask_image = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h, | ||
263 | font_alpha_buffer, | ||
264 | w * sizeof(DATA32)); | ||
265 | |||
266 | if (!font_mask_image) return; | ||
267 | # endif | ||
268 | #endif | ||
269 | |||
251 | { | 270 | { |
252 | if ((j > 0) && (chr_x + w > ext_x)) | 271 | if ((j > 0) && (chr_x + w > ext_x)) |
253 | { | 272 | { |
@@ -255,44 +274,63 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
255 | { | 274 | { |
256 | /* ext glyph draw */ | 275 | /* ext glyph draw */ |
257 | dc->font_ext.func.gl_draw(dc->font_ext.data, | 276 | dc->font_ext.func.gl_draw(dc->font_ext.data, |
258 | (void *)dst, | 277 | (void *)dst, |
259 | dc, fg, chr_x, | 278 | dc, fg, chr_x, |
260 | y - (chr_y - y)); | 279 | y - (chr_y - y)); |
261 | } | 280 | } |
262 | else | 281 | else |
263 | { | 282 | { |
264 | if ((fg->glyph_out->bitmap.num_grays == 256) && | 283 | if ((fg->glyph_out->bitmap.num_grays == 256) && |
265 | (fg->glyph_out->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY)) | 284 | (fg->glyph_out->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY)) |
266 | { | 285 | { |
267 | for (i = 0; i < h; i++) | 286 | #ifdef HAVE_PIXMAN |
287 | # ifdef PIXMAN_FONT | ||
288 | if ((dst->pixman.im) && | ||
289 | (dc->col.pixman_color_image)) | ||
290 | pixman_image_composite(PIXMAN_OP_OVER, | ||
291 | dc->col.pixman_color_image, | ||
292 | font_mask_image, | ||
293 | dst->pixman.im, | ||
294 | chr_x, | ||
295 | y - (chr_y - y), | ||
296 | 0, 0, | ||
297 | chr_x, | ||
298 | y - (chr_y - y), | ||
299 | w, h); | ||
300 | else | ||
301 | # endif | ||
302 | #endif | ||
268 | { | 303 | { |
269 | int dx, dy; | 304 | for (i = 0; i < h; i++) |
270 | int in_x, in_w; | 305 | { |
271 | 306 | int dx, dy; | |
272 | in_x = 0; | 307 | int in_x, in_w; |
273 | in_w = 0; | 308 | |
274 | dx = chr_x; | 309 | in_x = 0; |
275 | dy = y - (chr_y - i - y); | 310 | in_w = 0; |
311 | dx = chr_x; | ||
312 | dy = y - (chr_y - i - y); | ||
276 | #ifdef EVAS_SLI | 313 | #ifdef EVAS_SLI |
277 | if (((dy) % dc->sli.h) == dc->sli.y) | 314 | if (((dy) % dc->sli.h) == dc->sli.y) |
278 | #endif | 315 | #endif |
279 | { | ||
280 | if ((dx < (ext_x + ext_w)) && | ||
281 | (dy >= (ext_y)) && | ||
282 | (dy < (ext_y + ext_h))) | ||
283 | { | 316 | { |
284 | if (dx + w > (ext_x + ext_w)) | 317 | if ((dx < (ext_x + ext_w)) && |
285 | in_w += (dx + w) - (ext_x + ext_w); | 318 | (dy >= (ext_y)) && |
286 | if (dx < ext_x) | 319 | (dy < (ext_y + ext_h))) |
287 | { | 320 | { |
288 | in_w += ext_x - dx; | 321 | if (dx + w > (ext_x + ext_w)) |
289 | in_x = ext_x - dx; | 322 | in_w += (dx + w) - (ext_x + ext_w); |
290 | dx = ext_x; | 323 | if (dx < ext_x) |
291 | } | 324 | { |
292 | if (in_w < w) | 325 | in_w += ext_x - dx; |
293 | { | 326 | in_x = ext_x - dx; |
294 | func(NULL, data + (i * j) + in_x, dc->col.col, | 327 | dx = ext_x; |
295 | im + (dy * im_w) + dx, w - in_w); | 328 | } |
329 | if (in_w < w) | ||
330 | { | ||
331 | func(NULL, data + (i * j) + in_x, dc->col.col, | ||
332 | im + (dy * im_w) + dx, w - in_w); | ||
333 | } | ||
296 | } | 334 | } |
297 | } | 335 | } |
298 | } | 336 | } |
@@ -309,7 +347,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
309 | { | 347 | { |
310 | int dx, dy; | 348 | int dx, dy; |
311 | int in_x, in_w, end; | 349 | int in_x, in_w, end; |
312 | 350 | ||
313 | in_x = 0; | 351 | in_x = 0; |
314 | in_w = 0; | 352 | in_w = 0; |
315 | dx = chr_x; | 353 | dx = chr_x; |
@@ -333,8 +371,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
333 | dp++; | 371 | dp++; |
334 | } | 372 | } |
335 | if ((dx < (ext_x + ext_w)) && | 373 | if ((dx < (ext_x + ext_w)) && |
336 | (dy >= (ext_y)) && | 374 | (dy >= (ext_y)) && |
337 | (dy < (ext_y + ext_h))) | 375 | (dy < (ext_y + ext_h))) |
338 | { | 376 | { |
339 | if (dx + w > (ext_x + ext_w)) | 377 | if (dx + w > (ext_x + ext_w)) |
340 | in_w += (dx + w) - (ext_x + ext_w); | 378 | in_w += (dx + w) - (ext_x + ext_w); |
@@ -347,7 +385,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
347 | if (in_w < w) | 385 | if (in_w < w) |
348 | { | 386 | { |
349 | func(NULL, tmpbuf + in_x, dc->col.col, | 387 | func(NULL, tmpbuf + in_x, dc->col.col, |
350 | im + (dy * im_w) + dx, w - in_w); | 388 | im + (dy * im_w) + dx, w - in_w); |
351 | } | 389 | } |
352 | } | 390 | } |
353 | } | 391 | } |
@@ -356,6 +394,11 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font | |||
356 | } | 394 | } |
357 | } | 395 | } |
358 | } | 396 | } |
397 | #ifdef HAVE_PIXMAN | ||
398 | # ifdef PIXMAN_FONT | ||
399 | pixman_image_unref(font_mask_image); | ||
400 | # endif | ||
401 | #endif | ||
359 | } | 402 | } |
360 | else | 403 | else |
361 | break; | 404 | break; |
@@ -573,7 +616,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Evas_Text_Props *text_prop | |||
573 | } | 616 | } |
574 | } | 617 | } |
575 | } | 618 | } |
576 | else | 619 | else |
577 | { | 620 | { |
578 | im = NULL; | 621 | im = NULL; |
579 | } | 622 | } |
@@ -599,7 +642,7 @@ evas_font_word_prerender(RGBA_Draw_Context *dc, const Evas_Text_Props *text_prop | |||
599 | { | 642 | { |
600 | struct prword *last = (struct prword *)(words->last); | 643 | struct prword *last = (struct prword *)(words->last); |
601 | 644 | ||
602 | if (last) | 645 | if (last) |
603 | { | 646 | { |
604 | if (last->im) free(last->im); | 647 | if (last->im) free(last->im); |
605 | if (last->cinfo) free(last->cinfo); | 648 | if (last->cinfo) free(last->cinfo); |
diff --git a/libraries/evas/src/lib/engines/common/evas_font_main.c b/libraries/evas/src/lib/engines/common/evas_font_main.c index 64b1d5e..7b3dabe 100644 --- a/libraries/evas/src/lib/engines/common/evas_font_main.c +++ b/libraries/evas/src/lib/engines/common/evas_font_main.c | |||
@@ -39,8 +39,6 @@ evas_common_font_init(void) | |||
39 | EAPI void | 39 | EAPI void |
40 | evas_common_font_shutdown(void) | 40 | evas_common_font_shutdown(void) |
41 | { | 41 | { |
42 | int error; | ||
43 | |||
44 | if (initialised < 1) return; | 42 | if (initialised < 1) return; |
45 | initialised--; | 43 | initialised--; |
46 | if (initialised != 0) return; | 44 | if (initialised != 0) return; |
@@ -53,7 +51,7 @@ evas_common_font_shutdown(void) | |||
53 | evas_common_font_cache_set(0); | 51 | evas_common_font_cache_set(0); |
54 | evas_common_font_flush(); | 52 | evas_common_font_flush(); |
55 | 53 | ||
56 | error = FT_Done_FreeType(evas_ft_lib); | 54 | FT_Done_FreeType(evas_ft_lib); |
57 | #ifdef EVAS_FRAME_QUEUING | 55 | #ifdef EVAS_FRAME_QUEUING |
58 | evas_common_font_draw_finish(); | 56 | evas_common_font_draw_finish(); |
59 | #endif | 57 | #endif |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_data.c b/libraries/evas/src/lib/engines/common/evas_image_data.c index 10b3988..2815ff8 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_data.c +++ b/libraries/evas/src/lib/engines/common/evas_image_data.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <assert.h> | 5 | #include <assert.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_load.c b/libraries/evas/src/lib/engines/common/evas_image_load.c index c7eff3f..21ac5d4 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_load.c +++ b/libraries/evas/src/lib/engines/common/evas_image_load.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <sys/types.h> | 5 | #include <sys/types.h> |
2 | #include <sys/stat.h> | 6 | #include <sys/stat.h> |
3 | #include <unistd.h> | 7 | #include <unistd.h> |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_main.c b/libraries/evas/src/lib/engines/common/evas_image_main.c index d4d847c..d2f8c0b 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_main.c +++ b/libraries/evas/src/lib/engines/common/evas_image_main.c | |||
@@ -145,7 +145,7 @@ _evas_common_rgba_image_new(void) | |||
145 | #endif | 145 | #endif |
146 | 146 | ||
147 | evas_common_rgba_image_scalecache_init(&im->cache_entry); | 147 | evas_common_rgba_image_scalecache_init(&im->cache_entry); |
148 | 148 | ||
149 | return &im->cache_entry; | 149 | return &im->cache_entry; |
150 | } | 150 | } |
151 | 151 | ||
@@ -161,7 +161,7 @@ _evas_common_rgba_image_delete(Image_Entry *ie) | |||
161 | LKD(im->cache_entry.ref_fq_del); | 161 | LKD(im->cache_entry.ref_fq_del); |
162 | eina_condition_free(&(im->cache_entry.cond_fq_del)); | 162 | eina_condition_free(&(im->cache_entry.cond_fq_del)); |
163 | # endif | 163 | # endif |
164 | #endif | 164 | #endif |
165 | evas_common_rgba_image_scalecache_shutdown(&im->cache_entry); | 165 | evas_common_rgba_image_scalecache_shutdown(&im->cache_entry); |
166 | if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module); | 166 | if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module); |
167 | /* memset the image to 0x99 because i recently saw a segv where an | 167 | /* memset the image to 0x99 because i recently saw a segv where an |
@@ -173,13 +173,13 @@ _evas_common_rgba_image_delete(Image_Entry *ie) | |||
173 | // memset(im, 0x99, sizeof(im)); | 173 | // memset(im, 0x99, sizeof(im)); |
174 | #ifdef EVAS_CSERVE | 174 | #ifdef EVAS_CSERVE |
175 | if (ie->data1) evas_cserve_image_free(ie); | 175 | if (ie->data1) evas_cserve_image_free(ie); |
176 | #endif | 176 | #endif |
177 | /* | 177 | /* |
178 | * FIXME: This doesn't seem to be needed... But I'm not sure why. | 178 | * FIXME: This doesn't seem to be needed... But I'm not sure why. |
179 | * -- nash | 179 | * -- nash |
180 | { | 180 | { |
181 | Filtered_Image *fi; | 181 | Filtered_Image *fi; |
182 | 182 | ||
183 | EINA_LIST_FREE(im->filtered, fi) | 183 | EINA_LIST_FREE(im->filtered, fi) |
184 | { | 184 | { |
185 | free(fi->key); | 185 | free(fi->key); |
@@ -249,8 +249,8 @@ evas_common_rgba_image_unload(Image_Entry *ie) | |||
249 | #endif | 249 | #endif |
250 | return; | 250 | return; |
251 | } | 251 | } |
252 | #endif | 252 | #endif |
253 | 253 | ||
254 | if (im->image.data && !im->image.no_free) | 254 | if (im->image.data && !im->image.no_free) |
255 | free(im->image.data); | 255 | free(im->image.data); |
256 | im->image.data = NULL; | 256 | im->image.data = NULL; |
@@ -266,18 +266,19 @@ void | |||
266 | _evas_common_rgba_image_post_surface(Image_Entry *ie) | 266 | _evas_common_rgba_image_post_surface(Image_Entry *ie) |
267 | { | 267 | { |
268 | #ifdef HAVE_PIXMAN | 268 | #ifdef HAVE_PIXMAN |
269 | RGBA_Image *im = (RGBA_Image *) ie; | 269 | # ifdef PIXMAN_IMAGE |
270 | 270 | RGBA_Image *im = (RGBA_Image *)ie; | |
271 | |||
271 | if (im->pixman.im) pixman_image_unref(im->pixman.im); | 272 | if (im->pixman.im) pixman_image_unref(im->pixman.im); |
272 | if (im->cache_entry.flags.alpha) | 273 | if (im->cache_entry.flags.alpha) |
273 | { | 274 | { |
274 | im->pixman.im = pixman_image_create_bits | 275 | im->pixman.im = pixman_image_create_bits |
275 | ( | 276 | ( |
276 | // FIXME: endianess determines this | 277 | // FIXME: endianess determines this |
277 | PIXMAN_a8r8g8b8, | 278 | PIXMAN_a8r8g8b8, |
278 | // PIXMAN_b8g8r8a8, | 279 | // PIXMAN_b8g8r8a8, |
279 | im->cache_entry.w, im->cache_entry.h, | 280 | im->cache_entry.w, im->cache_entry.h, |
280 | im->image.data, | 281 | im->image.data, |
281 | im->cache_entry.w * 4 | 282 | im->cache_entry.w * 4 |
282 | ); | 283 | ); |
283 | } | 284 | } |
@@ -285,16 +286,19 @@ _evas_common_rgba_image_post_surface(Image_Entry *ie) | |||
285 | { | 286 | { |
286 | im->pixman.im = pixman_image_create_bits | 287 | im->pixman.im = pixman_image_create_bits |
287 | ( | 288 | ( |
288 | // FIXME: endianess determines this | 289 | // FIXME: endianess determines this |
289 | PIXMAN_x8r8g8b8, | 290 | PIXMAN_x8r8g8b8, |
290 | // PIXMAN_b8g8r8x8, | 291 | // PIXMAN_b8g8r8x8, |
291 | im->cache_entry.w, im->cache_entry.h, | 292 | im->cache_entry.w, im->cache_entry.h, |
292 | im->image.data, | 293 | im->image.data, |
293 | im->cache_entry.w * 4 | 294 | im->cache_entry.w * 4 |
294 | ); | 295 | ); |
295 | } | 296 | } |
297 | # else | ||
298 | (void)ie; | ||
299 | # endif | ||
296 | #else | 300 | #else |
297 | ie = NULL; | 301 | (void)ie; |
298 | #endif | 302 | #endif |
299 | } | 303 | } |
300 | 304 | ||
@@ -306,7 +310,7 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned | |||
306 | 310 | ||
307 | #ifdef EVAS_CSERVE | 311 | #ifdef EVAS_CSERVE |
308 | if (ie->data1) return 0; | 312 | if (ie->data1) return 0; |
309 | #endif | 313 | #endif |
310 | if (im->image.no_free) return 0; | 314 | if (im->image.no_free) return 0; |
311 | 315 | ||
312 | if (im->flags & RGBA_IMAGE_ALPHA_ONLY) | 316 | if (im->flags & RGBA_IMAGE_ALPHA_ONLY) |
@@ -328,7 +332,7 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned | |||
328 | # endif | 332 | # endif |
329 | #endif | 333 | #endif |
330 | _evas_common_rgba_image_post_surface(ie); | 334 | _evas_common_rgba_image_post_surface(ie); |
331 | 335 | ||
332 | return 0; | 336 | return 0; |
333 | } | 337 | } |
334 | 338 | ||
@@ -338,12 +342,14 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie) | |||
338 | RGBA_Image *im = (RGBA_Image *) ie; | 342 | RGBA_Image *im = (RGBA_Image *) ie; |
339 | 343 | ||
340 | #ifdef HAVE_PIXMAN | 344 | #ifdef HAVE_PIXMAN |
345 | # ifdef PIXMAN_IMAGE | ||
341 | if (im->pixman.im) | 346 | if (im->pixman.im) |
342 | { | 347 | { |
343 | pixman_image_unref(im->pixman.im); | 348 | pixman_image_unref(im->pixman.im); |
344 | im->pixman.im = NULL; | 349 | im->pixman.im = NULL; |
345 | } | 350 | } |
346 | #endif | 351 | # endif |
352 | #endif | ||
347 | if (ie->file) | 353 | if (ie->file) |
348 | DBG("unload: [%p] %s %s", ie, ie->file, ie->key); | 354 | DBG("unload: [%p] %s %s", ie, ie->file, ie->key); |
349 | if ((im->cs.data) && (im->image.data)) | 355 | if ((im->cs.data) && (im->image.data)) |
@@ -364,7 +370,7 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie) | |||
364 | #ifdef EVAS_CSERVE | 370 | #ifdef EVAS_CSERVE |
365 | else if (ie->data1) | 371 | else if (ie->data1) |
366 | evas_cserve_image_free(ie); | 372 | evas_cserve_image_free(ie); |
367 | #endif | 373 | #endif |
368 | 374 | ||
369 | im->image.data = NULL; | 375 | im->image.data = NULL; |
370 | ie->allocated.w = 0; | 376 | ie->allocated.w = 0; |
@@ -391,7 +397,7 @@ _evas_common_rgba_image_dirty_region(Image_Entry* ie, unsigned int x __UNUSED__, | |||
391 | 397 | ||
392 | #ifdef EVAS_CSERVE | 398 | #ifdef EVAS_CSERVE |
393 | if (ie->data1) evas_cserve_image_free(ie); | 399 | if (ie->data1) evas_cserve_image_free(ie); |
394 | #endif | 400 | #endif |
395 | im->flags |= RGBA_IMAGE_IS_DIRTY; | 401 | im->flags |= RGBA_IMAGE_IS_DIRTY; |
396 | evas_common_rgba_image_scalecache_dirty(&im->cache_entry); | 402 | evas_common_rgba_image_scalecache_dirty(&im->cache_entry); |
397 | } | 403 | } |
@@ -411,13 +417,13 @@ _evas_common_rgba_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src) | |||
411 | { | 417 | { |
412 | #ifdef EVAS_CSERVE | 418 | #ifdef EVAS_CSERVE |
413 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); | 419 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); |
414 | #endif | 420 | #endif |
415 | return 1; | 421 | return 1; |
416 | } | 422 | } |
417 | 423 | ||
418 | #ifdef EVAS_CSERVE | 424 | #ifdef EVAS_CSERVE |
419 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); | 425 | if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src); |
420 | #endif | 426 | #endif |
421 | evas_common_image_colorspace_normalize(src); | 427 | evas_common_image_colorspace_normalize(src); |
422 | evas_common_image_colorspace_normalize(dst); | 428 | evas_common_image_colorspace_normalize(dst); |
423 | /* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */ | 429 | /* evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */ |
@@ -431,18 +437,18 @@ _evas_common_rgba_image_ram_usage(Image_Entry *ie) | |||
431 | { | 437 | { |
432 | RGBA_Image *im = (RGBA_Image *)ie; | 438 | RGBA_Image *im = (RGBA_Image *)ie; |
433 | int size = sizeof(struct _RGBA_Image); | 439 | int size = sizeof(struct _RGBA_Image); |
434 | 440 | ||
435 | if (ie->cache_key) size += strlen(ie->cache_key); | 441 | if (ie->cache_key) size += strlen(ie->cache_key); |
436 | if (ie->file) size += strlen(ie->file); | 442 | if (ie->file) size += strlen(ie->file); |
437 | if (ie->key) size += strlen(ie->key); | 443 | if (ie->key) size += strlen(ie->key); |
438 | 444 | ||
439 | if (im->image.data) | 445 | if (im->image.data) |
440 | { | 446 | { |
441 | #ifdef EVAS_CSERVE | 447 | #ifdef EVAS_CSERVE |
442 | if ((!im->image.no_free) || (ie->data1)) | 448 | if ((!im->image.no_free) || (ie->data1)) |
443 | #else | 449 | #else |
444 | if ((!im->image.no_free)) | 450 | if ((!im->image.no_free)) |
445 | #endif | 451 | #endif |
446 | size += im->cache_entry.w * im->cache_entry.h * sizeof(DATA32); | 452 | size += im->cache_entry.w * im->cache_entry.h * sizeof(DATA32); |
447 | } | 453 | } |
448 | size += evas_common_rgba_image_scalecache_usage_get(&im->cache_entry); | 454 | size += evas_common_rgba_image_scalecache_usage_get(&im->cache_entry); |
@@ -590,7 +596,7 @@ evas_common_image_colorspace_normalize(RGBA_Image *im) | |||
590 | { | 596 | { |
591 | #ifdef EVAS_CSERVE | 597 | #ifdef EVAS_CSERVE |
592 | if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry); | 598 | if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry); |
593 | #endif | 599 | #endif |
594 | if (!im->image.no_free) free(im->image.data); | 600 | if (!im->image.no_free) free(im->image.data); |
595 | im->image.data = im->cs.data; | 601 | im->image.data = im->cs.data; |
596 | im->cs.no_free = im->image.no_free; | 602 | im->cs.no_free = im->image.no_free; |
diff --git a/libraries/evas/src/lib/engines/common/evas_image_scalecache.c b/libraries/evas/src/lib/engines/common/evas_image_scalecache.c index 24a4f2d..e4e4790 100644 --- a/libraries/evas/src/lib/engines/common/evas_image_scalecache.c +++ b/libraries/evas/src/lib/engines/common/evas_image_scalecache.c | |||
@@ -48,9 +48,7 @@ struct _Scaleitem | |||
48 | #ifdef SCALECACHE | 48 | #ifdef SCALECACHE |
49 | static unsigned long long use_counter = 0; | 49 | static unsigned long long use_counter = 0; |
50 | 50 | ||
51 | #ifdef BUILD_PTHREAD | ||
52 | static LK(cache_lock); | 51 | static LK(cache_lock); |
53 | #endif | ||
54 | static Eina_Inlist *cache_list = NULL; | 52 | static Eina_Inlist *cache_list = NULL; |
55 | static unsigned int cache_size = 0; | 53 | static unsigned int cache_size = 0; |
56 | static int init = 0; | 54 | static int init = 0; |
diff --git a/libraries/evas/src/lib/engines/common/evas_line_main.c b/libraries/evas/src/lib/engines/common/evas_line_main.c index 04401cb..aacf805 100644 --- a/libraries/evas/src/lib/engines/common/evas_line_main.c +++ b/libraries/evas/src/lib/engines/common/evas_line_main.c | |||
@@ -109,9 +109,24 @@ _evas_draw_point(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y) | |||
109 | return; | 109 | return; |
110 | if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h))) | 110 | if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h))) |
111 | return; | 111 | return; |
112 | pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op); | 112 | #ifdef HAVE_PIXMAN |
113 | if (pfunc) | 113 | # ifdef PIXMAN_LINE |
114 | pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x); | 114 | pixman_op_t op = PIXMAN_OP_SRC; |
115 | |||
116 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
117 | op = PIXMAN_OP_OVER; | ||
118 | |||
119 | if ((dst->pixman.im) && (dc->col.pixman_color_image)) | ||
120 | pixman_image_composite(op, dc->col.pixman_color_image, NULL, | ||
121 | dst->pixman.im, x, y, 0, 0, x, y, 1, 1); | ||
122 | else | ||
123 | # endif | ||
124 | #endif | ||
125 | { | ||
126 | pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op); | ||
127 | if (pfunc) | ||
128 | pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x); | ||
129 | } | ||
115 | } | 130 | } |
116 | 131 | ||
117 | /* | 132 | /* |
@@ -130,6 +145,14 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
130 | RGBA_Gfx_Pt_Func pfunc; | 145 | RGBA_Gfx_Pt_Func pfunc; |
131 | RGBA_Gfx_Func sfunc; | 146 | RGBA_Gfx_Func sfunc; |
132 | 147 | ||
148 | #ifdef HAVE_PIXMAN | ||
149 | # ifdef PIXMAN_LINE | ||
150 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
151 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
152 | op = PIXMAN_OP_OVER; | ||
153 | # endif | ||
154 | #endif | ||
155 | |||
133 | dstw = dst->cache_entry.w; | 156 | dstw = dst->cache_entry.w; |
134 | color = dc->col.col; | 157 | color = dc->col.col; |
135 | 158 | ||
@@ -172,12 +195,30 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
172 | 195 | ||
173 | len = x1 - x0 + 1; | 196 | len = x1 - x0 + 1; |
174 | p = dst->image.data + (dstw * y0) + x0; | 197 | p = dst->image.data + (dstw * y0) + x0; |
175 | sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op); | 198 | #ifdef HAVE_PIXMAN |
176 | if (sfunc) | 199 | # ifdef PIXMAN_LINE |
177 | sfunc(NULL, NULL, color, p, len); | 200 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
178 | } | 201 | (!dc->mask.mask)) |
179 | } | 202 | pixman_image_composite(op, dc->col.pixman_color_image, |
180 | return; | 203 | NULL, dst->pixman.im, |
204 | x0, y0, 0, 0, x0, y0, len, 1); | ||
205 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
206 | (dc->mask.mask)) | ||
207 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
208 | dc->mask.mask->pixman.im, | ||
209 | dst->pixman.im, | ||
210 | x0, y0, 0, 0, x0, y0, len, 1); | ||
211 | else | ||
212 | # endif | ||
213 | #endif | ||
214 | { | ||
215 | sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op); | ||
216 | if (sfunc) | ||
217 | sfunc(NULL, NULL, color, p, len); | ||
218 | } | ||
219 | } | ||
220 | } | ||
221 | return; | ||
181 | } | 222 | } |
182 | 223 | ||
183 | pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op); | 224 | pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op); |
@@ -192,17 +233,34 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
192 | 233 | ||
193 | len = y1 - y0 + 1; | 234 | len = y1 - y0 + 1; |
194 | p = dst->image.data + (dstw * y0) + x0; | 235 | p = dst->image.data + (dstw * y0) + x0; |
195 | while (len--) | 236 | #ifdef HAVE_PIXMAN |
196 | { | 237 | # ifdef PIXMAN_LINE |
238 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
239 | (!dc->mask.mask)) | ||
240 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
241 | NULL, dst->pixman.im, | ||
242 | x0, y0, 0, 0, x0, y0, 1, len); | ||
243 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
244 | (dc->mask.mask)) | ||
245 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
246 | dc->mask.mask->pixman.im, dst->pixman.im, | ||
247 | x0, y0, 0, 0, x0, y0, 1, len); | ||
248 | else | ||
249 | # endif | ||
250 | #endif | ||
251 | { | ||
252 | while (len--) | ||
253 | { | ||
197 | #ifdef EVAS_SLI | 254 | #ifdef EVAS_SLI |
198 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) | 255 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) |
199 | #endif | 256 | #endif |
200 | { | 257 | { |
201 | pfunc(0, 255, color, p); | 258 | pfunc(0, 255, color, p); |
202 | } | 259 | } |
203 | p += dstw; | 260 | p += dstw; |
204 | } | 261 | } |
205 | } | 262 | } |
263 | } | ||
206 | return; | 264 | return; |
207 | } | 265 | } |
208 | 266 | ||
@@ -281,16 +339,52 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i | |||
281 | if (dx > 0) dstw--; | 339 | if (dx > 0) dstw--; |
282 | else dstw++; | 340 | else dstw++; |
283 | } | 341 | } |
284 | 342 | #ifdef HAVE_PIXMAN | |
343 | # ifdef PIXMAN_LINE | ||
344 | int pixman_x_position = x0; | ||
345 | int pixman_y_position = y0; | ||
346 | int x_unit = dstw - dst->cache_entry.w; | ||
347 | # endif | ||
348 | #endif | ||
349 | |||
350 | |||
285 | while (len--) | 351 | while (len--) |
286 | { | 352 | { |
287 | #ifdef EVAS_SLI | 353 | #ifdef EVAS_SLI |
288 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) | 354 | if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y) |
289 | #endif | 355 | #endif |
290 | { | 356 | { |
291 | pfunc(0, 255, color, p); | 357 | #ifdef HAVE_PIXMAN |
292 | } | 358 | # ifdef PIXMAN_LINE |
293 | p += dstw; | 359 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
360 | (!dc->mask.mask)) | ||
361 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
362 | NULL, dst->pixman.im, | ||
363 | pixman_x_position, | ||
364 | pixman_y_position, | ||
365 | 0, 0, pixman_x_position, | ||
366 | pixman_y_position, 1, 1); | ||
367 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
368 | (dc->mask.mask)) | ||
369 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
370 | dc->mask.mask->pixman.im, | ||
371 | dst->pixman.im, | ||
372 | pixman_x_position, | ||
373 | pixman_y_position, 0, 0, | ||
374 | pixman_x_position, | ||
375 | pixman_y_position, 1, 1); | ||
376 | else | ||
377 | # endif | ||
378 | #endif | ||
379 | pfunc(0, 255, color, p); | ||
380 | } | ||
381 | #ifdef HAVE_PIXMAN | ||
382 | # ifdef PIXMAN_LINE | ||
383 | pixman_x_position += x_unit; | ||
384 | pixman_y_position += 1; | ||
385 | # endif | ||
386 | #endif | ||
387 | p += dstw; | ||
294 | } | 388 | } |
295 | } | 389 | } |
296 | } | 390 | } |
@@ -456,6 +550,31 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
456 | dx = x1 - x0; | 550 | dx = x1 - x0; |
457 | dy = y1 - y0; | 551 | dy = y1 - y0; |
458 | 552 | ||
553 | #ifdef HAVE_PIXMAN | ||
554 | # ifdef PIXMAN_LINE | ||
555 | int pix_x; | ||
556 | int pix_y; | ||
557 | int pix_x_unit; | ||
558 | int pix_y_unit; | ||
559 | |||
560 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
561 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
562 | op = PIXMAN_OP_OVER; | ||
563 | pix_x = x0; | ||
564 | pix_y = y0; | ||
565 | |||
566 | if (dx < 0) | ||
567 | pix_x_unit = -1; | ||
568 | else | ||
569 | pix_x_unit = 1; | ||
570 | |||
571 | if (dy < 0) | ||
572 | pix_y_unit = -1; | ||
573 | else | ||
574 | pix_y_unit = 1; | ||
575 | # endif | ||
576 | #endif | ||
577 | |||
459 | if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) | 578 | if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) |
460 | { | 579 | { |
461 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); | 580 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); |
@@ -494,6 +613,11 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
494 | prev_y = y; | 613 | prev_y = y; |
495 | p += dh; | 614 | p += dh; |
496 | py += dely; | 615 | py += dely; |
616 | #ifdef HAVE_PIXMAN | ||
617 | # ifdef PIXMAN_LINE | ||
618 | pix_y += pix_y_unit; | ||
619 | # endif | ||
620 | #endif | ||
497 | } | 621 | } |
498 | if (!p1_in) | 622 | if (!p1_in) |
499 | { | 623 | { |
@@ -509,12 +633,37 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
509 | #endif | 633 | #endif |
510 | { | 634 | { |
511 | if (IN_RANGE(px, py, clw, clh)) | 635 | if (IN_RANGE(px, py, clw, clh)) |
512 | pfunc(0, 255, color, p); | 636 | { |
513 | } | 637 | #ifdef HAVE_PIXMAN |
514 | next_x: | 638 | # ifdef PIXMAN_LINE |
515 | yy += dyy; | 639 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
516 | px++; | 640 | (!dc->mask.mask)) |
517 | p++; | 641 | pixman_image_composite(op, dc->col.pixman_color_image, |
642 | NULL, dst->pixman.im, | ||
643 | pix_x, pix_y, 0, 0, | ||
644 | pix_x, pix_y, 1, 1); | ||
645 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
646 | (dc->mask.mask)) | ||
647 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
648 | dc->mask.mask->pixman.im, | ||
649 | dst->pixman.im, | ||
650 | pix_x, pix_y, 0, 0, | ||
651 | pix_x, pix_y, 1, 1); | ||
652 | else | ||
653 | # endif | ||
654 | #endif | ||
655 | pfunc(0, 255, color, p); | ||
656 | } | ||
657 | } | ||
658 | next_x: | ||
659 | yy += dyy; | ||
660 | px++; | ||
661 | p++; | ||
662 | #ifdef HAVE_PIXMAN | ||
663 | # ifdef PIXMAN_LINE | ||
664 | pix_x += pix_x_unit; | ||
665 | # endif | ||
666 | #endif | ||
518 | } | 667 | } |
519 | return; | 668 | return; |
520 | } | 669 | } |
@@ -529,9 +678,14 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
529 | x += ((xx - (x << 16)) >> 15); | 678 | x += ((xx - (x << 16)) >> 15); |
530 | if (prev_x != x) | 679 | if (prev_x != x) |
531 | { | 680 | { |
532 | prev_x = x; | 681 | prev_x = x; |
533 | px += delx; | 682 | px += delx; |
534 | p += delx; | 683 | p += delx; |
684 | #ifdef HAVE_PIXMAN | ||
685 | # ifdef PIXMAN_LINE | ||
686 | pix_x += pix_x_unit; | ||
687 | # endif | ||
688 | #endif | ||
535 | } | 689 | } |
536 | if (!p1_in) | 690 | if (!p1_in) |
537 | { | 691 | { |
@@ -547,12 +701,38 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, | |||
547 | #endif | 701 | #endif |
548 | { | 702 | { |
549 | if (IN_RANGE(px, py, clw, clh)) | 703 | if (IN_RANGE(px, py, clw, clh)) |
550 | pfunc(0, 255, color, p); | 704 | { |
551 | } | 705 | #ifdef HAVE_PIXMAN |
552 | next_y: | 706 | # ifdef PIXMAN_LINE |
707 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
708 | (!dc->mask.mask)) | ||
709 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
710 | NULL, dst->pixman.im, | ||
711 | pix_x, pix_y, 0, 0, | ||
712 | pix_x, pix_y, 1, 1); | ||
713 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
714 | (dc->mask.mask)) | ||
715 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
716 | dc->mask.mask->pixman.im, | ||
717 | dst->pixman.im, | ||
718 | pix_x, pix_y, 0, 0, | ||
719 | pix_x, pix_y, 1, 1); | ||
720 | else | ||
721 | # endif | ||
722 | #endif | ||
723 | pfunc(0, 255, color, p); | ||
724 | } | ||
725 | } | ||
726 | next_y: | ||
553 | xx += dxx; | 727 | xx += dxx; |
554 | py++; | 728 | py++; |
555 | p += dstw; | 729 | p += dstw; |
730 | #ifdef HAVE_PIXMAN | ||
731 | # ifdef PIXMAN_LINE | ||
732 | pix_y += pix_y_unit; | ||
733 | # endif | ||
734 | #endif | ||
735 | |||
556 | } | 736 | } |
557 | } | 737 | } |
558 | 738 | ||
@@ -568,12 +748,43 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
568 | DATA32 *p, *data, color; | 748 | DATA32 *p, *data, color; |
569 | RGBA_Gfx_Pt_Func pfunc; | 749 | RGBA_Gfx_Pt_Func pfunc; |
570 | 750 | ||
751 | dx = x1 - x0; | ||
752 | dy = y1 - y0; | ||
753 | |||
754 | #ifdef HAVE_PIXMAN | ||
755 | # ifdef PIXMAN_LINE | ||
756 | int pix_x; | ||
757 | int pix_y; | ||
758 | int pix_x_unit; | ||
759 | int pix_y_unit; | ||
760 | |||
761 | pixman_image_t *aa_mask_image; | ||
762 | int alpha_data_buffer; | ||
763 | |||
764 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
765 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
766 | op = PIXMAN_OP_OVER; | ||
767 | pix_x = x0; | ||
768 | pix_y = y0; | ||
769 | |||
770 | if (dx < 0) | ||
771 | pix_x_unit = -1; | ||
772 | else | ||
773 | pix_x_unit = 1; | ||
774 | |||
775 | if (dy < 0) | ||
776 | pix_y_unit = -1; | ||
777 | else | ||
778 | pix_y_unit = 1; | ||
779 | # endif | ||
780 | #endif | ||
571 | if (y0 > y1) | 781 | if (y0 > y1) |
572 | EXCHANGE_POINTS(x0, y0, x1, y1); | 782 | EXCHANGE_POINTS(x0, y0, x1, y1); |
783 | |||
573 | dx = x1 - x0; | 784 | dx = x1 - x0; |
574 | dy = y1 - y0; | 785 | dy = y1 - y0; |
575 | 786 | ||
576 | if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) ) | 787 | if ((dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy)) |
577 | { | 788 | { |
578 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); | 789 | _evas_draw_simple_line(dst, dc, x0, y0, x1, y1); |
579 | return; | 790 | return; |
@@ -609,9 +820,14 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
609 | y = (yy >> 16); | 820 | y = (yy >> 16); |
610 | if (prev_y != y) | 821 | if (prev_y != y) |
611 | { | 822 | { |
612 | prev_y = y; | 823 | prev_y = y; |
613 | p += dh; | 824 | p += dh; |
614 | py += dely; | 825 | py += dely; |
826 | #ifdef HAVE_PIXMAN | ||
827 | # ifdef PIXMAN_LINE | ||
828 | pix_y += pix_y_unit; | ||
829 | # endif | ||
830 | #endif | ||
615 | } | 831 | } |
616 | if (!p1_in) | 832 | if (!p1_in) |
617 | { | 833 | { |
@@ -624,39 +840,109 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
624 | } | 840 | } |
625 | if (px < clw) | 841 | if (px < clw) |
626 | { | 842 | { |
627 | aa = ((yy - (y << 16)) >> 8); | 843 | aa = ((yy - (y << 16)) >> 8); |
628 | if ((py) < clh) | 844 | if ((py) < clh) |
629 | pfunc(0, 255 - aa, color, p); | 845 | { |
630 | if ((py + 1) < clh) | 846 | #ifdef HAVE_PIXMAN |
631 | pfunc(0, aa, color, p + dstw); | 847 | # ifdef PIXMAN_LINE |
632 | } | 848 | alpha_data_buffer = 255 - aa; |
633 | 849 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, | |
634 | next_x: | 850 | (uint32_t *)&alpha_data_buffer, 4); |
635 | yy += dyy; | 851 | |
636 | px++; | 852 | if ((dst->pixman.im) && (dc->col.pixman_color_image ) && |
637 | p++; | 853 | (!dc->mask.mask)) |
854 | pixman_image_composite(PIXMAN_OP_OVER, | ||
855 | dc->col.pixman_color_image, | ||
856 | aa_mask_image, dst->pixman.im, | ||
857 | pix_x, pix_y, 0, 0, | ||
858 | pix_x, pix_y, 1, 1); | ||
859 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
860 | (dc->mask.mask) ) | ||
861 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
862 | dc->mask.mask->pixman.im, | ||
863 | dst->pixman.im, | ||
864 | pix_x, pix_y, 0, 0, | ||
865 | pix_x, pix_y, 1, 1); | ||
866 | else | ||
867 | # endif | ||
868 | #endif | ||
869 | pfunc(0, 255 - aa, color, p); | ||
870 | #ifdef HAVE_PIXMAN | ||
871 | # ifdef PIXMAN_LINE | ||
872 | pixman_image_unref(aa_mask_image); | ||
873 | # endif | ||
874 | #endif | ||
875 | } | ||
876 | if ((py + 1) < clh) | ||
877 | { | ||
878 | #ifdef HAVE_PIXMAN | ||
879 | # ifdef PIXMAN_LINE | ||
880 | alpha_data_buffer = aa; | ||
881 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, | ||
882 | (uint32_t *)&alpha_data_buffer, 4); | ||
883 | |||
884 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
885 | (!dc->mask.mask)) | ||
886 | pixman_image_composite(PIXMAN_OP_OVER, | ||
887 | dc->col.pixman_color_image, | ||
888 | aa_mask_image, dst->pixman.im, | ||
889 | pix_x, pix_y + 1, 0, 0, | ||
890 | pix_x, pix_y + 1, 1, 1); | ||
891 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
892 | (dc->mask.mask)) | ||
893 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
894 | dc->mask.mask->pixman.im, | ||
895 | dst->pixman.im, | ||
896 | pix_x, pix_y + 1, 0, 0, | ||
897 | pix_x, pix_y + 1, 1, 1); | ||
898 | else | ||
899 | # endif | ||
900 | #endif | ||
901 | pfunc(0, aa, color, p + dstw); | ||
902 | #ifdef HAVE_PIXMAN | ||
903 | # ifdef PIXMAN_LINE | ||
904 | pixman_image_unref(aa_mask_image); | ||
905 | # endif | ||
906 | #endif | ||
907 | } | ||
908 | } | ||
909 | |||
910 | next_x: | ||
911 | yy += dyy; | ||
912 | px++; | ||
913 | p++; | ||
914 | #ifdef HAVE_PIXMAN | ||
915 | # ifdef PIXMAN_LINE | ||
916 | pix_x += pix_x_unit; | ||
917 | # endif | ||
918 | #endif | ||
638 | } | 919 | } |
639 | return; | 920 | return; |
640 | } | 921 | } |
641 | 922 | ||
642 | /* steep: y-parametric */ | 923 | /* steep: y-parametric */ |
643 | SETUP_LINE_STEEP; | 924 | SETUP_LINE_STEEP; |
644 | 925 | ||
645 | while (py < by) | 926 | while (py < by) |
646 | { | 927 | { |
647 | DATA8 aa; | 928 | DATA8 aa; |
648 | 929 | ||
649 | x = (xx >> 16); | 930 | x = (xx >> 16); |
650 | if (prev_x != x) | 931 | if (prev_x != x) |
651 | { | 932 | { |
652 | prev_x = x; | 933 | prev_x = x; |
653 | px += delx; | 934 | px += delx; |
654 | p += delx; | 935 | p += delx; |
936 | #ifdef HAVE_PIXMAN | ||
937 | # ifdef PIXMAN_LINE | ||
938 | pix_x += pix_x_unit; | ||
939 | # endif | ||
940 | #endif | ||
655 | } | 941 | } |
656 | if (!p1_in) | 942 | if (!p1_in) |
657 | { | 943 | { |
658 | if ((px < 0) && (delx < 0)) return; | 944 | if ((px < 0) && (delx < 0)) return; |
659 | if ((px > rx) && (delx > 0)) return; | 945 | if ((px > rx) && (delx > 0)) return; |
660 | } | 946 | } |
661 | if (!p0_in) | 947 | if (!p0_in) |
662 | { | 948 | { |
@@ -664,15 +950,80 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x | |||
664 | } | 950 | } |
665 | if (py < clh) | 951 | if (py < clh) |
666 | { | 952 | { |
667 | aa = ((xx - (x << 16)) >> 8); | 953 | aa = ((xx - (x << 16)) >> 8); |
668 | if ((px) < clw) | 954 | if ((px) < clw) |
669 | pfunc(0, 255 - aa, color, p); | 955 | { |
670 | if ((px + 1) < clw) | 956 | #ifdef HAVE_PIXMAN |
671 | pfunc(0, aa, color, p + 1); | 957 | # ifdef PIXMAN_LINE |
672 | } | 958 | alpha_data_buffer = 255 - aa; |
959 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, (uint32_t *)&alpha_data_buffer, 4); | ||
960 | |||
961 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
962 | (!dc->mask.mask)) | ||
963 | pixman_image_composite(PIXMAN_OP_OVER, | ||
964 | dc->col.pixman_color_image, | ||
965 | aa_mask_image, dst->pixman.im, | ||
966 | pix_x, pix_y, 0, 0, | ||
967 | pix_x, pix_y, 1, 1); | ||
968 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
969 | (dc->mask.mask)) | ||
970 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
971 | dc->mask.mask->pixman.im, | ||
972 | dst->pixman.im, | ||
973 | pix_x, pix_y, 0, 0, | ||
974 | pix_x, pix_y, 1, 1); | ||
975 | else | ||
976 | # endif | ||
977 | #endif | ||
978 | pfunc(0, 255 - aa, color, p); | ||
979 | #ifdef HAVE_PIXMAN | ||
980 | # ifdef PIXMAN_LINE | ||
981 | pixman_image_unref(aa_mask_image); | ||
982 | # endif | ||
983 | #endif | ||
984 | |||
985 | } | ||
986 | if ((px + 1) < clw) | ||
987 | { | ||
988 | #ifdef HAVE_PIXMAN | ||
989 | # ifdef PIXMAN_LINE | ||
990 | alpha_data_buffer = aa; | ||
991 | aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, | ||
992 | (uint32_t *)&alpha_data_buffer, 4); | ||
993 | |||
994 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
995 | (!dc->mask.mask)) | ||
996 | pixman_image_composite(PIXMAN_OP_OVER, | ||
997 | dc->col.pixman_color_image, | ||
998 | aa_mask_image, dst->pixman.im, | ||
999 | pix_x + 1, pix_y, 0, 0, | ||
1000 | pix_x + 1, pix_y, 1, 1); | ||
1001 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
1002 | (dc->mask.mask)) | ||
1003 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
1004 | dc->mask.mask->pixman.im, | ||
1005 | dst->pixman.im, | ||
1006 | pix_x + 1, pix_y, 0, 0, | ||
1007 | pix_x + 1, pix_y, 1, 1); | ||
1008 | else | ||
1009 | # endif | ||
1010 | #endif | ||
1011 | pfunc(0, aa, color, p + 1); | ||
1012 | #ifdef HAVE_PIXMAN | ||
1013 | # ifdef PIXMAN_LINE | ||
1014 | pixman_image_unref(aa_mask_image); | ||
1015 | # endif | ||
1016 | #endif | ||
1017 | } | ||
1018 | } | ||
673 | next_y: | 1019 | next_y: |
674 | xx += dxx; | 1020 | xx += dxx; |
675 | py++; | 1021 | py++; |
676 | p += dstw; | 1022 | p += dstw; |
1023 | #ifdef HAVE_PIXMAN | ||
1024 | # ifdef PIXMAN_LINE | ||
1025 | pix_y += pix_y_unit; | ||
1026 | # endif | ||
1027 | #endif | ||
677 | } | 1028 | } |
678 | } | 1029 | } |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in index 4c721f9..78e893d 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in index e796ef2..e00dac8 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in | |||
@@ -203,8 +203,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
203 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 203 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
204 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 204 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
205 | PKG_CONFIG = @PKG_CONFIG@ | 205 | PKG_CONFIG = @PKG_CONFIG@ |
206 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
207 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
208 | PNG_CFLAGS = @PNG_CFLAGS@ | 206 | PNG_CFLAGS = @PNG_CFLAGS@ |
209 | PNG_LIBS = @PNG_LIBS@ | 207 | PNG_LIBS = @PNG_LIBS@ |
210 | RANLIB = @RANLIB@ | 208 | RANLIB = @RANLIB@ |
@@ -221,6 +219,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
221 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 219 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
222 | VERSION = @VERSION@ | 220 | VERSION = @VERSION@ |
223 | VMAJ = @VMAJ@ | 221 | VMAJ = @VMAJ@ |
222 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
223 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
224 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 224 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
225 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 225 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
226 | XCB_CFLAGS = @XCB_CFLAGS@ | 226 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -302,6 +302,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
302 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 302 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
303 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 303 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
304 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 304 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
305 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
306 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
307 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
308 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
305 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 309 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
306 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 310 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
307 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 311 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c index 64d5a86..1843265 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c | |||
@@ -53,7 +53,8 @@ _op_blend_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 | |||
53 | static void | 53 | static void |
54 | init_blend_color_span_funcs_sse3(void) | 54 | init_blend_color_span_funcs_sse3(void) |
55 | { | 55 | { |
56 | op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; | 56 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
57 | // op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; | ||
57 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; | 58 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; |
58 | 59 | ||
59 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) | 60 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c index 83230e5..5883d15 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c | |||
@@ -168,7 +168,8 @@ _op_blend_mas_can_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, i | |||
168 | static void | 168 | static void |
169 | init_blend_mask_color_span_funcs_sse3(void) | 169 | init_blend_mask_color_span_funcs_sse3(void) |
170 | { | 170 | { |
171 | op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3; | 171 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
172 | // op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3; | ||
172 | op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3; | 173 | op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3; |
173 | op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3; | 174 | op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3; |
174 | op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3; | 175 | op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3; |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c index 2e72fec..69c597c 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c | |||
@@ -146,7 +146,6 @@ init_blend_pixel_span_funcs_sse3(void) | |||
146 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3; | 146 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3; |
147 | op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3; | 147 | op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3; |
148 | 148 | ||
149 | |||
150 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) | 149 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) |
151 | // op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3; | 150 | // op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3; |
152 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3; | 151 | op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3; |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in index 52658a4..40536c0 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in index 0ccd7f3..d5764b1 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in index f239cf7..d5452fe 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in index b68ed3b..4b93b1b 100644 --- a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in +++ b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common/evas_polygon_main.c b/libraries/evas/src/lib/engines/common/evas_polygon_main.c index bca3f83..ea0bf13 100644 --- a/libraries/evas/src/lib/engines/common/evas_polygon_main.c +++ b/libraries/evas/src/lib/engines/common/evas_polygon_main.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <math.h> | 5 | #include <math.h> |
2 | 6 | ||
3 | #include "evas_common.h" | 7 | #include "evas_common.h" |
@@ -133,6 +137,14 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po | |||
133 | int ext_x, ext_y, ext_w, ext_h; | 137 | int ext_x, ext_y, ext_w, ext_h; |
134 | int *sorted_index; | 138 | int *sorted_index; |
135 | 139 | ||
140 | #ifdef HAVE_PIXMAN | ||
141 | # ifdef PIXMAN_POLY | ||
142 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
143 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
144 | op = PIXMAN_OP_OVER; | ||
145 | # endif | ||
146 | #endif | ||
147 | |||
136 | ext_x = 0; | 148 | ext_x = 0; |
137 | ext_y = 0; | 149 | ext_y = 0; |
138 | ext_w = dst->cache_entry.w; | 150 | ext_w = dst->cache_entry.w; |
@@ -279,10 +291,30 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po | |||
279 | if (((span->y) % dc->sli.h) == dc->sli.y) | 291 | if (((span->y) % dc->sli.h) == dc->sli.y) |
280 | #endif | 292 | #endif |
281 | { | 293 | { |
282 | ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; | 294 | #ifdef HAVE_PIXMAN |
283 | func(NULL, NULL, dc->col.col, ptr, span->w); | 295 | # ifdef PIXMAN_POLY |
284 | } | 296 | if ((dst->pixman.im) && (dc->col.pixman_color_image) && |
285 | } | 297 | (!dc->mask.mask)) |
298 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
299 | NULL, dst->pixman.im, | ||
300 | span->x, span->y, 0, 0, | ||
301 | span->x, span->y, span->w, 1); | ||
302 | else if ((dst->pixman.im) && (dc->col.pixman_color_image) && | ||
303 | (dc->mask.mask)) | ||
304 | pixman_image_composite(op, dc->col.pixman_color_image, | ||
305 | dc->mask.mask->pixman.im, | ||
306 | dst->pixman.im, | ||
307 | span->x, span->y, 0, 0, | ||
308 | span->x, span->y, span->w, 1); | ||
309 | else | ||
310 | # endif | ||
311 | #endif | ||
312 | { | ||
313 | ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x; | ||
314 | func(NULL, NULL, dc->col.col, ptr, span->w); | ||
315 | } | ||
316 | } | ||
317 | } | ||
286 | while (spans) | 318 | while (spans) |
287 | { | 319 | { |
288 | span = (RGBA_Span *)spans; | 320 | span = (RGBA_Span *)spans; |
diff --git a/libraries/evas/src/lib/engines/common/evas_rectangle_main.c b/libraries/evas/src/lib/engines/common/evas_rectangle_main.c index 28aaf16..fc25fd0 100644 --- a/libraries/evas/src/lib/engines/common/evas_rectangle_main.c +++ b/libraries/evas/src/lib/engines/common/evas_rectangle_main.c | |||
@@ -58,16 +58,34 @@ rectangle_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, in | |||
58 | RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); | 58 | RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h); |
59 | if ((w <= 0) || (h <= 0)) return; | 59 | if ((w <= 0) || (h <= 0)) return; |
60 | 60 | ||
61 | func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op); | 61 | #ifdef HAVE_PIXMAN |
62 | ptr = dst->image.data + (y * dst->cache_entry.w) + x; | 62 | # ifdef PIXMAN_RECT |
63 | for (yy = 0; yy < h; yy++) | 63 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY |
64 | |||
65 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
66 | op = PIXMAN_OP_OVER; | ||
67 | |||
68 | if ((dst->pixman.im) && (dc->col.pixman_color_image)) | ||
64 | { | 69 | { |
70 | pixman_image_composite(op, dc->col.pixman_color_image, NULL, | ||
71 | dst->pixman.im, x, y, 0, 0, | ||
72 | x, y, w, h); | ||
73 | } | ||
74 | else | ||
75 | # endif | ||
76 | #endif | ||
77 | { | ||
78 | func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op); | ||
79 | ptr = dst->image.data + (y * dst->cache_entry.w) + x; | ||
80 | for (yy = 0; yy < h; yy++) | ||
81 | { | ||
65 | #ifdef EVAS_SLI | 82 | #ifdef EVAS_SLI |
66 | if (((yy + y) % dc->sli.h) == dc->sli.y) | 83 | if (((yy + y) % dc->sli.h) == dc->sli.y) |
67 | #endif | 84 | #endif |
68 | { | 85 | { |
69 | func(NULL, NULL, dc->col.col, ptr, w); | 86 | func(NULL, NULL, dc->col.col, ptr, w); |
70 | } | 87 | } |
71 | ptr += dst->cache_entry.w; | 88 | ptr += dst->cache_entry.w; |
89 | } | ||
72 | } | 90 | } |
73 | } | 91 | } |
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_sample.c b/libraries/evas/src/lib/engines/common/evas_scale_sample.c index 54b8e92..a8951b8 100644 --- a/libraries/evas/src/lib/engines/common/evas_scale_sample.c +++ b/libraries/evas/src/lib/engines/common/evas_scale_sample.c | |||
@@ -154,7 +154,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
154 | dst_clip_w = m_clip_w; | 154 | dst_clip_w = m_clip_w; |
155 | dst_clip_h = m_clip_h; | 155 | dst_clip_h = m_clip_h; |
156 | } | 156 | } |
157 | 157 | ||
158 | if (dst_clip_x < dst_region_x) | 158 | if (dst_clip_x < dst_region_x) |
159 | { | 159 | { |
160 | dst_clip_w += dst_clip_x - dst_region_x; | 160 | dst_clip_w += dst_clip_x - dst_region_x; |
@@ -258,7 +258,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
258 | func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op); | 258 | func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op); |
259 | maskobj = dc->mask.mask; | 259 | maskobj = dc->mask.mask; |
260 | mask = maskobj->mask.mask; | 260 | mask = maskobj->mask.mask; |
261 | /* | 261 | /* |
262 | if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){ | 262 | if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){ |
263 | printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w, | 263 | printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w, |
264 | maskobj->cache_entry.h); | 264 | maskobj->cache_entry.h); |
@@ -276,26 +276,47 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
276 | if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h)) | 276 | if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h)) |
277 | { | 277 | { |
278 | #ifdef HAVE_PIXMAN | 278 | #ifdef HAVE_PIXMAN |
279 | if ((1) && | 279 | # ifdef PIXMAN_IMAGE_SCALE_SAMPLE |
280 | (src->pixman.im) && (dst->pixman.im) && | 280 | if ((src->pixman.im) && (dst->pixman.im) && (!dc->mask.mask) && |
281 | ((!dc->mul.use) || | 281 | ((!dc->mul.use) || |
282 | ((dc->mul.use) && (dc->mul.col == 0xffffffff))) && | 282 | ((dc->mul.use) && (dc->mul.col == 0xffffffff))) && |
283 | ((dc->render_op == _EVAS_RENDER_COPY) || | 283 | ((dc->render_op == _EVAS_RENDER_COPY) || |
284 | (dc->render_op == _EVAS_RENDER_BLEND)) | 284 | (dc->render_op == _EVAS_RENDER_BLEND))) |
285 | ) | ||
286 | { | 285 | { |
287 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | 286 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY |
288 | if (dc->render_op == _EVAS_RENDER_BLEND) op = PIXMAN_OP_OVER; | 287 | if (dc->render_op == _EVAS_RENDER_BLEND) |
288 | op = PIXMAN_OP_OVER; | ||
289 | |||
289 | pixman_image_composite(op, | 290 | pixman_image_composite(op, |
290 | src->pixman.im, NULL, | 291 | src->pixman.im, NULL, |
291 | dst->pixman.im, | 292 | dst->pixman.im, |
292 | (dst_clip_x - dst_region_x) + src_region_x, | 293 | (dst_clip_x - dst_region_x) + src_region_x, |
293 | (dst_clip_y - dst_region_y) + src_region_y, | 294 | (dst_clip_y - dst_region_y) + src_region_y, |
294 | 0, 0, | 295 | 0, 0, |
295 | dst_clip_x, dst_clip_y, | 296 | dst_clip_x, dst_clip_y, |
297 | dst_clip_w, dst_clip_h); | ||
298 | } | ||
299 | else if ((src->pixman.im) && (dst->pixman.im) && | ||
300 | (dc->mask.mask) && (dc->mask.mask->pixman.im) && | ||
301 | ((dc->render_op == _EVAS_RENDER_COPY) || | ||
302 | (dc->render_op == _EVAS_RENDER_BLEND))) | ||
303 | { | ||
304 | // In case of pixel and color operation. | ||
305 | pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY | ||
306 | if (dc->render_op == _EVAS_RENDER_BLEND) | ||
307 | op = PIXMAN_OP_OVER; | ||
308 | |||
309 | pixman_image_composite(op, | ||
310 | src->pixman.im, dc->mask.mask->pixman.im, | ||
311 | dst->pixman.im, | ||
312 | (dst_clip_x - dst_region_x) + src_region_x, | ||
313 | (dst_clip_y - dst_region_y) + src_region_y, | ||
314 | 0, 0, | ||
315 | dst_clip_x, dst_clip_y, | ||
296 | dst_clip_w, dst_clip_h); | 316 | dst_clip_w, dst_clip_h); |
297 | } | 317 | } |
298 | else | 318 | else |
319 | # endif | ||
299 | #endif | 320 | #endif |
300 | { | 321 | { |
301 | ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; | 322 | ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x; |
@@ -322,59 +343,59 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, | |||
322 | } | 343 | } |
323 | else | 344 | else |
324 | { | 345 | { |
325 | /* fill scale tables */ | 346 | /* fill scale tables */ |
326 | for (x = 0; x < dst_clip_w; x++) | 347 | for (x = 0; x < dst_clip_w; x++) |
327 | lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x; | 348 | lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x; |
328 | for (y = 0; y < dst_clip_h; y++) | 349 | for (y = 0; y < dst_clip_h; y++) |
329 | row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h) | 350 | row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h) |
330 | + src_region_y) * src_w); | 351 | + src_region_y) * src_w); |
331 | /* scale to dst */ | 352 | /* scale to dst */ |
332 | dptr = dst_ptr; | 353 | dptr = dst_ptr; |
333 | #ifdef DIRECT_SCALE | 354 | #ifdef DIRECT_SCALE |
334 | if ((!src->cache_entry.flags.alpha) && | 355 | if ((!src->cache_entry.flags.alpha) && |
335 | (!dst->cache_entry.flags.alpha) && | 356 | (!dst->cache_entry.flags.alpha) && |
336 | (!dc->mul.use)) | 357 | (!dc->mul.use)) |
337 | { | 358 | { |
338 | for (y = 0; y < dst_clip_h; y++) | 359 | for (y = 0; y < dst_clip_h; y++) |
339 | { | 360 | { |
340 | #ifdef EVAS_SLI | 361 | # ifdef EVAS_SLI |
341 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) | 362 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) |
342 | #endif | 363 | # endif |
343 | { | 364 | { |
344 | dst_ptr = dptr; | 365 | dst_ptr = dptr; |
345 | for (x = 0; x < dst_clip_w; x++) | 366 | for (x = 0; x < dst_clip_w; x++) |
346 | { | 367 | { |
347 | ptr = row_ptr[y] + lin_ptr[x]; | 368 | ptr = row_ptr[y] + lin_ptr[x]; |
348 | *dst_ptr = *ptr; | 369 | *dst_ptr = *ptr; |
349 | dst_ptr++; | 370 | dst_ptr++; |
350 | } | 371 | } |
351 | } | 372 | } |
352 | dptr += dst_w; | 373 | dptr += dst_w; |
353 | } | 374 | } |
354 | } | 375 | } |
355 | else | 376 | else |
356 | #endif | 377 | #endif |
357 | { | 378 | { |
358 | /* a scanline buffer */ | 379 | /* a scanline buffer */ |
359 | buf = alloca(dst_clip_w * sizeof(DATA32)); | 380 | buf = alloca(dst_clip_w * sizeof(DATA32)); |
360 | for (y = 0; y < dst_clip_h; y++) | 381 | for (y = 0; y < dst_clip_h; y++) |
361 | { | 382 | { |
362 | #ifdef EVAS_SLI | 383 | #ifdef EVAS_SLI |
363 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) | 384 | if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y) |
364 | #endif | 385 | #endif |
365 | { | 386 | { |
366 | dst_ptr = buf; | 387 | dst_ptr = buf; |
367 | for (x = 0; x < dst_clip_w; x++) | 388 | for (x = 0; x < dst_clip_w; x++) |
368 | { | 389 | { |
369 | ptr = row_ptr[y] + lin_ptr[x]; | 390 | ptr = row_ptr[y] + lin_ptr[x]; |
370 | *dst_ptr = *ptr; | 391 | *dst_ptr = *ptr; |
371 | dst_ptr++; | 392 | dst_ptr++; |
372 | } | 393 | } |
373 | /* * blend here [clip_w *] buf -> dptr * */ | 394 | /* * blend here [clip_w *] buf -> dptr * */ |
374 | func(buf, NULL, dc->mul.col, dptr, dst_clip_w); | 395 | func(buf, NULL, dc->mul.col, dptr, dst_clip_w); |
375 | } | 396 | } |
376 | dptr += dst_w; | 397 | dptr += dst_w; |
377 | } | 398 | } |
378 | } | 399 | } |
379 | } | 400 | } |
380 | } | 401 | } |
diff --git a/libraries/evas/src/lib/engines/common/evas_tiler.c b/libraries/evas/src/lib/engines/common/evas_tiler.c index 0bbe811..ff359a4 100644 --- a/libraries/evas/src/lib/engines/common/evas_tiler.c +++ b/libraries/evas/src/lib/engines/common/evas_tiler.c | |||
@@ -19,7 +19,9 @@ static inline list_node_t *rect_list_add_split_fuzzy(list_t *rects, list_node_t | |||
19 | static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error); | 19 | static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error); |
20 | static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error); | 20 | static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error); |
21 | static inline void rect_print(const rect_t r); | 21 | static inline void rect_print(const rect_t r); |
22 | #if 0 | ||
22 | static inline void rect_list_print(const list_t rects); | 23 | static inline void rect_list_print(const list_t rects); |
24 | #endif | ||
23 | 25 | ||
24 | static const list_node_t list_node_zeroed = { NULL }; | 26 | static const list_node_t list_node_zeroed = { NULL }; |
25 | static const list_t list_zeroed = { NULL, NULL }; | 27 | static const list_t list_zeroed = { NULL, NULL }; |
@@ -117,6 +119,7 @@ rect_print(const rect_t r) | |||
117 | INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height); | 119 | INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height); |
118 | } | 120 | } |
119 | 121 | ||
122 | #if 0 | ||
120 | static inline void | 123 | static inline void |
121 | rect_list_print(const list_t rects) | 124 | rect_list_print(const list_t rects) |
122 | { | 125 | { |
@@ -143,6 +146,7 @@ rect_list_print(const list_t rects) | |||
143 | } | 146 | } |
144 | putchar(']'); | 147 | putchar(']'); |
145 | } | 148 | } |
149 | #endif | ||
146 | 150 | ||
147 | static inline void | 151 | static inline void |
148 | rect_list_append_node(list_t *rects, list_node_t *node) | 152 | rect_list_append_node(list_t *rects, list_node_t *node) |
diff --git a/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c b/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c index 9f7859b..002cfbe 100644 --- a/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c +++ b/libraries/evas/src/lib/engines/common/language/evas_bidi_utils.c | |||
@@ -1,3 +1,7 @@ | |||
1 | #ifdef HAVE_CONFIG_H | ||
2 | # include <config.h> | ||
3 | #endif | ||
4 | |||
1 | #include <string.h> | 5 | #include <string.h> |
2 | #include <stdlib.h> | 6 | #include <stdlib.h> |
3 | 7 | ||
diff --git a/libraries/evas/src/lib/engines/common/language/evas_language_utils.c b/libraries/evas/src/lib/engines/common/language/evas_language_utils.c index 9c9b3e3..b362f10 100644 --- a/libraries/evas/src/lib/engines/common/language/evas_language_utils.c +++ b/libraries/evas/src/lib/engines/common/language/evas_language_utils.c | |||
@@ -13,6 +13,12 @@ | |||
13 | * | 13 | * |
14 | * @{ | 14 | * @{ |
15 | */ | 15 | */ |
16 | #ifdef HAVE_CONFIG_H | ||
17 | # include <config.h> | ||
18 | #endif | ||
19 | |||
20 | #include <stdlib.h> | ||
21 | |||
16 | #include <Eina.h> | 22 | #include <Eina.h> |
17 | 23 | ||
18 | #include "evas_language_utils.h" | 24 | #include "evas_language_utils.h" |
diff --git a/libraries/evas/src/lib/engines/common_16/Makefile.in b/libraries/evas/src/lib/engines/common_16/Makefile.in index 9097a8d..313cbda 100644 --- a/libraries/evas/src/lib/engines/common_16/Makefile.in +++ b/libraries/evas/src/lib/engines/common_16/Makefile.in | |||
@@ -201,8 +201,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
201 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 201 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
202 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 202 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
203 | PKG_CONFIG = @PKG_CONFIG@ | 203 | PKG_CONFIG = @PKG_CONFIG@ |
204 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
205 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
206 | PNG_CFLAGS = @PNG_CFLAGS@ | 204 | PNG_CFLAGS = @PNG_CFLAGS@ |
207 | PNG_LIBS = @PNG_LIBS@ | 205 | PNG_LIBS = @PNG_LIBS@ |
208 | RANLIB = @RANLIB@ | 206 | RANLIB = @RANLIB@ |
@@ -219,6 +217,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
219 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 217 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
220 | VERSION = @VERSION@ | 218 | VERSION = @VERSION@ |
221 | VMAJ = @VMAJ@ | 219 | VMAJ = @VMAJ@ |
220 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
221 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
222 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 222 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
223 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 223 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
224 | XCB_CFLAGS = @XCB_CFLAGS@ | 224 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -300,6 +300,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
300 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 300 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
301 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 301 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
302 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 302 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
303 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
304 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
305 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
306 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
303 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 307 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
304 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 308 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
305 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 309 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/engines/common_8/Makefile.in b/libraries/evas/src/lib/engines/common_8/Makefile.in index 06c13de..7fa4fbb 100644 --- a/libraries/evas/src/lib/engines/common_8/Makefile.in +++ b/libraries/evas/src/lib/engines/common_8/Makefile.in | |||
@@ -200,8 +200,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
200 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 200 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
201 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 201 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
202 | PKG_CONFIG = @PKG_CONFIG@ | 202 | PKG_CONFIG = @PKG_CONFIG@ |
203 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
204 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
205 | PNG_CFLAGS = @PNG_CFLAGS@ | 203 | PNG_CFLAGS = @PNG_CFLAGS@ |
206 | PNG_LIBS = @PNG_LIBS@ | 204 | PNG_LIBS = @PNG_LIBS@ |
207 | RANLIB = @RANLIB@ | 205 | RANLIB = @RANLIB@ |
@@ -218,6 +216,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
218 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 216 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
219 | VERSION = @VERSION@ | 217 | VERSION = @VERSION@ |
220 | VMAJ = @VMAJ@ | 218 | VMAJ = @VMAJ@ |
219 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
220 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
221 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 221 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
222 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 222 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
223 | XCB_CFLAGS = @XCB_CFLAGS@ | 223 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -299,6 +299,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
299 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 299 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
300 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 300 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
301 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 301 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
302 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
303 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
304 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
305 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
302 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 306 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
303 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 307 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
304 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 308 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/file/Makefile.in b/libraries/evas/src/lib/file/Makefile.in index 599d980..2ac89b1 100644 --- a/libraries/evas/src/lib/file/Makefile.in +++ b/libraries/evas/src/lib/file/Makefile.in | |||
@@ -196,8 +196,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
196 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 196 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
197 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 197 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
198 | PKG_CONFIG = @PKG_CONFIG@ | 198 | PKG_CONFIG = @PKG_CONFIG@ |
199 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
200 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
201 | PNG_CFLAGS = @PNG_CFLAGS@ | 199 | PNG_CFLAGS = @PNG_CFLAGS@ |
202 | PNG_LIBS = @PNG_LIBS@ | 200 | PNG_LIBS = @PNG_LIBS@ |
203 | RANLIB = @RANLIB@ | 201 | RANLIB = @RANLIB@ |
@@ -214,6 +212,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
214 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 212 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
215 | VERSION = @VERSION@ | 213 | VERSION = @VERSION@ |
216 | VMAJ = @VMAJ@ | 214 | VMAJ = @VMAJ@ |
215 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
216 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
217 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 217 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
218 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 218 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
219 | XCB_CFLAGS = @XCB_CFLAGS@ | 219 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -295,6 +295,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
295 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 295 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
296 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 296 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
297 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 297 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
298 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
299 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
300 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
301 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
298 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 302 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
299 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 303 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
300 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 304 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/file/evas_module.c b/libraries/evas/src/lib/file/evas_module.c index 6b4d4f6..21d5cd0 100644 --- a/libraries/evas/src/lib/file/evas_module.c +++ b/libraries/evas/src/lib/file/evas_module.c | |||
@@ -285,7 +285,7 @@ evas_module_register(const Evas_Module_Api *module, Evas_Module_Type type) | |||
285 | if (type == EVAS_MODULE_TYPE_ENGINE) | 285 | if (type == EVAS_MODULE_TYPE_ENGINE) |
286 | { | 286 | { |
287 | eina_array_push(evas_engines, em); | 287 | eina_array_push(evas_engines, em); |
288 | em->id_engine = eina_array_count_get(evas_engines); | 288 | em->id_engine = eina_array_count(evas_engines); |
289 | } | 289 | } |
290 | 290 | ||
291 | eina_hash_direct_add(evas_modules[type], module->name, em); | 291 | eina_hash_direct_add(evas_modules[type], module->name, em); |
@@ -398,7 +398,7 @@ Evas_Module * | |||
398 | evas_module_engine_get(int render_method) | 398 | evas_module_engine_get(int render_method) |
399 | { | 399 | { |
400 | if ((render_method <= 0) || | 400 | if ((render_method <= 0) || |
401 | ((unsigned int)render_method > eina_array_count_get(evas_engines))) | 401 | ((unsigned int)render_method > eina_array_count(evas_engines))) |
402 | return NULL; | 402 | return NULL; |
403 | return eina_array_data_get(evas_engines, render_method - 1); | 403 | return eina_array_data_get(evas_engines, render_method - 1); |
404 | } | 404 | } |
diff --git a/libraries/evas/src/lib/file/evas_path.c b/libraries/evas/src/lib/file/evas_path.c index ff13e20..c663c16 100644 --- a/libraries/evas/src/lib/file/evas_path.c +++ b/libraries/evas/src/lib/file/evas_path.c | |||
@@ -123,7 +123,7 @@ evas_file_path_list(char *path, const char *match, int match_case) | |||
123 | else | 123 | else |
124 | files = eina_list_append(files, strdup(info->path + info->name_start)); | 124 | files = eina_list_append(files, strdup(info->path + info->name_start)); |
125 | } | 125 | } |
126 | eina_iterator_free(it); | 126 | if (it) eina_iterator_free(it); |
127 | return files; | 127 | return files; |
128 | } | 128 | } |
129 | 129 | ||
diff --git a/libraries/evas/src/lib/include/Makefile.in b/libraries/evas/src/lib/include/Makefile.in index 9d5c371..21f0099 100644 --- a/libraries/evas/src/lib/include/Makefile.in +++ b/libraries/evas/src/lib/include/Makefile.in | |||
@@ -166,8 +166,6 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ | |||
166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ | 166 | PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ |
167 | PIXMAN_LIBS = @PIXMAN_LIBS@ | 167 | PIXMAN_LIBS = @PIXMAN_LIBS@ |
168 | PKG_CONFIG = @PKG_CONFIG@ | 168 | PKG_CONFIG = @PKG_CONFIG@ |
169 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ | ||
170 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ | ||
171 | PNG_CFLAGS = @PNG_CFLAGS@ | 169 | PNG_CFLAGS = @PNG_CFLAGS@ |
172 | PNG_LIBS = @PNG_LIBS@ | 170 | PNG_LIBS = @PNG_LIBS@ |
173 | RANLIB = @RANLIB@ | 171 | RANLIB = @RANLIB@ |
@@ -184,6 +182,8 @@ VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ | |||
184 | VALGRIND_LIBS = @VALGRIND_LIBS@ | 182 | VALGRIND_LIBS = @VALGRIND_LIBS@ |
185 | VERSION = @VERSION@ | 183 | VERSION = @VERSION@ |
186 | VMAJ = @VMAJ@ | 184 | VMAJ = @VMAJ@ |
185 | WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ | ||
186 | WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ | ||
187 | WIN32_CFLAGS = @WIN32_CFLAGS@ | 187 | WIN32_CFLAGS = @WIN32_CFLAGS@ |
188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ | 188 | WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ |
189 | XCB_CFLAGS = @XCB_CFLAGS@ | 189 | XCB_CFLAGS = @XCB_CFLAGS@ |
@@ -265,6 +265,10 @@ evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ | |||
265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ | 265 | evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ |
266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ | 266 | evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ |
267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ | 267 | evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ |
268 | evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ | ||
269 | evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ | ||
270 | evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ | ||
271 | evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ | ||
268 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ | 272 | evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ |
269 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ | 273 | evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ |
270 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ | 274 | evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ |
diff --git a/libraries/evas/src/lib/include/evas_common.h b/libraries/evas/src/lib/include/evas_common.h index f817202..a9063e6 100644 --- a/libraries/evas/src/lib/include/evas_common.h +++ b/libraries/evas/src/lib/include/evas_common.h | |||
@@ -1,9 +1,9 @@ | |||
1 | #ifndef EVAS_COMMON_H | 1 | #ifndef EVAS_COMMON_H |
2 | #define EVAS_COMMON_H | 2 | #define EVAS_COMMON_H |
3 | 3 | ||
4 | #ifdef HAVE_CONFIG_H | 4 | //#ifdef HAVE_CONFIG_H |
5 | # include "config.h" /* so that EAPI in Evas.h is correctly defined */ | 5 | #include "config.h" /* so that EAPI in Evas.h is correctly defined */ |
6 | #endif | 6 | //#endif |
7 | 7 | ||
8 | #ifdef HAVE_EVIL | 8 | #ifdef HAVE_EVIL |
9 | # include <Evil.h> | 9 | # include <Evil.h> |
@@ -138,8 +138,6 @@ extern EAPI int _evas_log_dom_global; | |||
138 | # define BUILD_PTHREAD | 138 | # define BUILD_PTHREAD |
139 | #endif | 139 | #endif |
140 | 140 | ||
141 | #ifdef BUILD_PTHREAD | ||
142 | |||
143 | #define LK(x) Eina_Lock x | 141 | #define LK(x) Eina_Lock x |
144 | #define LKI(x) eina_lock_new(&(x)) | 142 | #define LKI(x) eina_lock_new(&(x)) |
145 | #define LKD(x) eina_lock_free(&(x)) | 143 | #define LKD(x) eina_lock_free(&(x)) |
@@ -148,42 +146,28 @@ extern EAPI int _evas_log_dom_global; | |||
148 | #define LKU(x) eina_lock_release(&(x)) | 146 | #define LKU(x) eina_lock_release(&(x)) |
149 | #define LKDBG(x) eina_lock_debug(&(x)) | 147 | #define LKDBG(x) eina_lock_debug(&(x)) |
150 | 148 | ||
149 | /* for rwlocks */ | ||
150 | #define RWLK(x) Eina_RWLock x | ||
151 | #define RWLKI(x) eina_rwlock_new(&(x)) | ||
152 | #define RWLKD(x) eina_rwlock_free(&(x)) | ||
153 | #define RDLKL(x) eina_rwlock_take_read(&(x)) | ||
154 | #define WRLKL(x) eina_rwlock_take_write(&(x)) | ||
155 | #define RWLKU(x) eina_rwlock_release(&(x)) | ||
156 | |||
157 | #ifdef BUILD_PTHREAD | ||
158 | |||
151 | # define TH(x) pthread_t x | 159 | # define TH(x) pthread_t x |
152 | # define THI(x) int x | 160 | # define THI(x) int x |
153 | # define TH_MAX 8 | 161 | # define TH_MAX 8 |
154 | 162 | ||
155 | /* for rwlocks */ | ||
156 | #define RWLK(x) pthread_rwlock_t x | ||
157 | #define RWLKI(x) pthread_rwlock_init(&(x), NULL) | ||
158 | #define RWLKD(x) pthread_rwlock_destroy(&(x)) | ||
159 | #define RDLKL(x) pthread_rwlock_rdlock(&(x)) | ||
160 | #define WRLKL(x) pthread_rwlock_wrlock(&(x)) | ||
161 | #define RWLKU(x) pthread_rwlock_unlock(&(x)) | ||
162 | |||
163 | |||
164 | // even though in theory having every Nth rendered line done by a different | 163 | // even though in theory having every Nth rendered line done by a different |
165 | // thread might even out load across threads - it actually slows things down. | 164 | // thread might even out load across threads - it actually slows things down. |
166 | //#define EVAS_SLI 1 | 165 | //#define EVAS_SLI 1 |
167 | 166 | ||
168 | #else | 167 | #else |
169 | # define LK(x) | ||
170 | # define LKI(x) | ||
171 | # define LKD(x) | ||
172 | # define LKL(x) | ||
173 | # define LKT(x) 1 | ||
174 | # define LKU(x) | ||
175 | # define TH(x) | 168 | # define TH(x) |
176 | # define THI(x) | 169 | # define THI(x) |
177 | # define TH_MAX 0 | 170 | # define TH_MAX 0 |
178 | # define LKDBG(x) | ||
179 | |||
180 | /* for rwlocks */ | ||
181 | #define RWLK(x) | ||
182 | #define RWLKI(x) | ||
183 | #define RWLKD(x) | ||
184 | #define RDLKL(x) | ||
185 | #define WRLKL(x) | ||
186 | #define RWLKU(x) | ||
187 | 171 | ||
188 | #endif | 172 | #endif |
189 | 173 | ||
@@ -338,6 +322,21 @@ void *alloca (size_t); | |||
338 | #define pld(addr, off) | 322 | #define pld(addr, off) |
339 | #endif /* __ARMEL__ */ | 323 | #endif /* __ARMEL__ */ |
340 | 324 | ||
325 | // these here are in config.h - just here for documentation | ||
326 | //#ifdef __ARM_ARCH__ | ||
327 | // *IF* you enable pixman, this determines which things pixman will do | ||
328 | ////#define PIXMAN_FONT 1 | ||
329 | ////#define PIXMAN_RECT 1 | ||
330 | ////#define PIXMAN_LINE 1 | ||
331 | ////#define PIXMAN_POLY 1 | ||
332 | //#define PIXMAN_IMAGE 1 | ||
333 | //#define PIXMAN_IMAGE_SCALE_SAMPLE 1 | ||
334 | //#endif | ||
335 | // not related to pixman but an alternate rotate code | ||
336 | //#define TILE_ROTATE 1 | ||
337 | |||
338 | #define TILE_CACHE_LINE_SIZE 64 | ||
339 | |||
341 | /*****************************************************************************/ | 340 | /*****************************************************************************/ |
342 | 341 | ||
343 | #define UNROLL2(op...) op op | 342 | #define UNROLL2(op...) op op |
@@ -678,6 +677,9 @@ struct _RGBA_Draw_Context | |||
678 | DATA32 col; | 677 | DATA32 col; |
679 | } mul; | 678 | } mul; |
680 | struct { | 679 | struct { |
680 | #ifdef HAVE_PIXMAN | ||
681 | pixman_image_t *pixman_color_image; | ||
682 | #endif | ||
681 | DATA32 col; | 683 | DATA32 col; |
682 | } col; | 684 | } col; |
683 | struct RGBA_Draw_Context_clip { | 685 | struct RGBA_Draw_Context_clip { |
@@ -1032,14 +1034,14 @@ struct _Tilebuf | |||
1032 | int x, y, w, h; | 1034 | int x, y, w, h; |
1033 | } prev_add, prev_del; | 1035 | } prev_add, prev_del; |
1034 | #ifdef RECTUPDATE | 1036 | #ifdef RECTUPDATE |
1035 | /* | 1037 | /* |
1036 | Regionbuf *rb; | 1038 | Regionbuf *rb; |
1037 | */ | 1039 | */ |
1038 | #elif defined(EVAS_RECT_SPLIT) | 1040 | #elif defined(EVAS_RECT_SPLIT) |
1039 | int need_merge; | 1041 | int need_merge; |
1040 | list_t rects; | 1042 | list_t rects; |
1041 | #else | 1043 | #else |
1042 | /* | 1044 | /* |
1043 | struct { | 1045 | struct { |
1044 | int w, h; | 1046 | int w, h; |
1045 | Tilebuf_Tile *tiles; | 1047 | Tilebuf_Tile *tiles; |
diff --git a/libraries/evas/src/lib/include/evas_private.h b/libraries/evas/src/lib/include/evas_private.h index 90498d0..84c1d36 100644 --- a/libraries/evas/src/lib/include/evas_private.h +++ b/libraries/evas/src/lib/include/evas_private.h | |||
@@ -301,12 +301,13 @@ struct _Evas | |||
301 | struct { | 301 | struct { |
302 | unsigned char inside : 1; | 302 | unsigned char inside : 1; |
303 | int mouse_grabbed; | 303 | int mouse_grabbed; |
304 | int downs; | ||
304 | DATA32 button; | 305 | DATA32 button; |
305 | Evas_Coord x, y; | 306 | Evas_Coord x, y; |
307 | int nogrep; | ||
306 | struct { | 308 | struct { |
307 | Eina_List *in; | 309 | Eina_List *in; |
308 | } object; | 310 | } object; |
309 | |||
310 | } pointer; | 311 | } pointer; |
311 | 312 | ||
312 | struct { | 313 | struct { |
@@ -320,6 +321,12 @@ struct _Evas | |||
320 | unsigned char changed : 1; | 321 | unsigned char changed : 1; |
321 | } output; | 322 | } output; |
322 | 323 | ||
324 | struct | ||
325 | { | ||
326 | Evas_Coord x, y, w, h; | ||
327 | Eina_Bool changed : 1; | ||
328 | } framespace; | ||
329 | |||
323 | Eina_List *damages; | 330 | Eina_List *damages; |
324 | Eina_List *obscures; | 331 | Eina_List *obscures; |
325 | 332 | ||
@@ -331,6 +338,7 @@ struct _Evas | |||
331 | 338 | ||
332 | int walking_list; | 339 | int walking_list; |
333 | int events_frozen; | 340 | int events_frozen; |
341 | Evas_Event_Flags default_event_flags; | ||
334 | 342 | ||
335 | struct { | 343 | struct { |
336 | Evas_Module *module; | 344 | Evas_Module *module; |
@@ -577,7 +585,7 @@ struct _Evas_Object | |||
577 | unsigned char recalculate_cycle; | 585 | unsigned char recalculate_cycle; |
578 | Eina_Clist calc_entry; | 586 | Eina_Clist calc_entry; |
579 | 587 | ||
580 | Evas_Object_Pointer_Mode pointer_mode : 1; | 588 | Evas_Object_Pointer_Mode pointer_mode : 2; |
581 | 589 | ||
582 | Eina_Bool store : 1; | 590 | Eina_Bool store : 1; |
583 | Eina_Bool pass_events : 1; | 591 | Eina_Bool pass_events : 1; |
@@ -608,6 +616,8 @@ struct _Evas_Object | |||
608 | Eina_Bool changed_move_only : 1; | 616 | Eina_Bool changed_move_only : 1; |
609 | Eina_Bool changed_nomove : 1; | 617 | Eina_Bool changed_nomove : 1; |
610 | Eina_Bool del_ref : 1; | 618 | Eina_Bool del_ref : 1; |
619 | |||
620 | Eina_Bool is_frame : 1; | ||
611 | }; | 621 | }; |
612 | 622 | ||
613 | struct _Evas_Func_Node | 623 | struct _Evas_Func_Node |
@@ -772,6 +782,7 @@ struct _Evas_Func | |||
772 | char *(*image_format_get) (void *data, void *image); | 782 | char *(*image_format_get) (void *data, void *image); |
773 | void (*image_colorspace_set) (void *data, void *image, int cspace); | 783 | void (*image_colorspace_set) (void *data, void *image, int cspace); |
774 | int (*image_colorspace_get) (void *data, void *image); | 784 | int (*image_colorspace_get) (void *data, void *image); |
785 | Eina_Bool (*image_can_region_get) (void *data, void *image); | ||
775 | void (*image_mask_create) (void *data, void *image); | 786 | void (*image_mask_create) (void *data, void *image); |
776 | void *(*image_native_set) (void *data, void *image, void *native); | 787 | void *(*image_native_set) (void *data, void *image, void *native); |
777 | void *(*image_native_get) (void *data, void *image); | 788 | void *(*image_native_get) (void *data, void *image); |
@@ -861,6 +872,7 @@ struct _Evas_Image_Load_Func | |||
861 | Eina_Bool (*file_head) (Image_Entry *ie, const char *file, const char *key, int *error); | 872 | Eina_Bool (*file_head) (Image_Entry *ie, const char *file, const char *key, int *error); |
862 | Eina_Bool (*file_data) (Image_Entry *ie, const char *file, const char *key, int *error); | 873 | Eina_Bool (*file_data) (Image_Entry *ie, const char *file, const char *key, int *error); |
863 | double (*frame_duration) (Image_Entry *ie, const char *file, const int start, const int frame_num); | 874 | double (*frame_duration) (Image_Entry *ie, const char *file, const int start, const int frame_num); |
875 | Eina_Bool do_region; | ||
864 | }; | 876 | }; |
865 | 877 | ||
866 | struct _Evas_Image_Save_Func | 878 | struct _Evas_Image_Save_Func |
@@ -904,7 +916,7 @@ void evas_object_clip_across_check(Evas_Object *obj); | |||
904 | void evas_object_clip_across_clippees_check(Evas_Object *obj); | 916 | void evas_object_clip_across_clippees_check(Evas_Object *obj); |
905 | void evas_object_mapped_clip_across_mark(Evas_Object *obj); | 917 | void evas_object_mapped_clip_across_mark(Evas_Object *obj); |
906 | void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info); | 918 | void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info); |
907 | void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info); | 919 | void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id); |
908 | Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y); | 920 | Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y); |
909 | int evas_mem_free(int mem_required); | 921 | int evas_mem_free(int mem_required); |
910 | int evas_mem_degrade(int mem_required); | 922 | int evas_mem_degrade(int mem_required); |