summaryrefslogtreecommitdiff
path: root/ElmSharp/Interop/Interop.Evas.cs
blob: e0a19b2113ecd6093f4159ef29c8dcc1c590887e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
/*
 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

using System;
using System.Runtime.InteropServices;

internal static partial class Interop
{
    internal static partial class Evas
    {
        public enum ObjectCallbackType
        {
            MouseIn,
            MouseOut,
            MouseDown,
            MouseUp,
            MouseMove,
            MouseWheel,
            MultiDown,
            MultiUp,
            MultiMove,
            Free,
            KeyDown,
            KeyUp,
            FocusIn,
            FocusOut,
            Show,
            Hide,
            Move,
            Resize,
            Restack,
            Del,
            Hold,
            ChangedSizeHints,
            ImagePreloaded,
            CanvasFocusIn,
            CanvasFocusOut,
            RenderFlushPre,
            RenderFlushPost,
            CanvasObjectFocusIn,
            CanvasObjectFocusOut,
            ImageUnloaded,
            RenderPre,
            RenderPost,
            ImageResize,
            DeviceChanged,
            AxisUpdate,
            CanvasViewportResize
        }

        public enum LoadError
        {
            None = 0, /* No error on load */
            Generic = 1, /* A non-specific error occurred */
            DoesNotRxist = 2, /* File (or file path) does not exist */
            PermissionDenied = 3, /* Permission denied to an existing file (or path) */
            ResourceAllocationFailed = 4, /* Allocation of resources failure prevented load */
            CorruptFile = 5, /* File corrupt (but was detected as a known format) */
            UnknownFormat = 6 /* File is not a known format */
        }

        public enum Colorspace
        {
            Argb8888, /* ARGB 32 bits per pixel, high-byte is Alpha, accessed 1 32bit word at a time */
            Ycbcr422p709pl, /* YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
            Ergb565a5p, /* 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
            Egry8, /* 8bit grayscale */
            Eycbcr422601pl, /*  YCbCr 4:2:2, ITU.BT-601 specifications. The data pointed to is just an array of row pointer, pointing to line of Y,Cb,Y,Cr bytes */
            Eycbcr420nv12601pl, /* YCbCr 4:2:0, ITU.BT-601 specification. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb,Cr rows. */
            Eycbcr420tm12601pl, /* YCbCr 4:2:0, ITU.BT-601 specification. The data pointed to is just an array of tiled row pointer, pointing to the Y rows, then the Cb,Cr rows. */
            Eagry88, /* AY 8bits Alpha and 8bits Grey, accessed 1 16bits at a time */
            Eetc1, /* OpenGL ETC1 encoding of RGB texture (4 bit per pixel) @since 1.10 */
            Ergb8etc2, /* OpenGL GL_COMPRESSED_RGB8_ETC2 texture compression format (4 bit per pixel) @since 1.10 */
            Ergba8etc2eac, /* OpenGL GL_COMPRESSED_RGBA8_ETC2_EAC texture compression format, supports alpha (8 bit per pixel) @since 1.10 */
            Eetc1alpha,     /* ETC1 with alpha support using two planes: ETC1 RGB and ETC1 grey for alpha @since 1.11 */
        }

        public enum ImageScaleHint
        {
            None = 0, /* No scale hint at all */
            Dynamic = 1, /* Image is being re-scaled over time, thus turning scaling cache @b off for its data */
            Static = 2 /* Image is not being re-scaled over time, thus turning scaling cache @b on for its data */
        }

        public enum RenderOp
        {
            Blend = 0, /* default op: d = d*(1-sa) + s */
            BlendRel = 1, /* d = d*(1 - sa) + s*da */
            Copy = 2, /* d = s */
            CopyRel = 3, /* d = s*da */
            Add = 4, /* d = d + s */
            AddRel = 5, /* d = d + s*da */
            Sub = 6, /* d = d - s */
            SubRel = 7, /* d = d - s*da */
            Tint = 8, /* d = d*s + d*(1 - sa) + s*(1 - da) */
            TintRel = 9, /* d = d*(1 - sa + s) */
            Mask = 10, /* d = d*sa */
            Mul = 11 /* d = d*s */
        }

        public enum AspectControl
        {
            None = 0, /* Preference on scaling unset */
            Neither = 1, /* Same effect as unset preference on scaling */
            Horizontal = 2, /* Use all horizontal container space to place an object, using the given aspect */
            Vertical = 3, /* Use all vertical container space to place an object, using the given aspect */
            Both = 4 /* Use all horizontal @b and vertical container spaces to place an object (never growing it out of those bounds), using the given aspect */
        }

        public enum ObjectCallbackPriority
        {
            After = 100,
            Before = -100,
            Default = 0
        }

        public enum TableHomogeneousMode
        {
            None = 0,
            Table = 1,
            Item = 2
        }

        public enum TextStyleType
        {
            Plain, /* plain, standard text */
            Shadow, /* text with shadow underneath */
            Outline, /* text with an outline */
            SoftOutline, /* text with a soft outline */
            Glow, /* text with a glow effect */
            OutlineShadow, /* text with both outline and shadow effects */
            FarShadow, /* text with (far) shadow underneath */
            OutlineSoftShadow, /* text with outline and soft shadow effects combined */
            SoftShadow, /* text with(soft) shadow underneath */
            FarSoftShadow, /* text with(far soft) shadow underneath */
            ShadowDirectionBottomRight, /* shadow growing to bottom right */
            ShadowDirectionBottom, /* shadow growing to the bottom */
            ShadowDirectionBottomLeft, /* shadow growing to bottom left */
            ShadowDirectionLeft, /* shadow growing to the left */
            ShadowDirectionTopLeft, /* shadow growing to top left */
            ShadowDirectionTop, /* shadow growing to the top */
            ShadowDirectionTopRight, /* shadow growing to top right */
            ShadowDirectionRight, /* shadow growing to the right */
        }

        //public struct TextBlockStyle
        //{
        //    string StyleText;
        //    string DefaultTag;

        //    List objects;
        //    bool DeleteMe;
        //}

        //public struct StyleTag
        //{
        //}

        internal delegate void EventCallback(IntPtr data, IntPtr evas, IntPtr obj, IntPtr info);

        internal delegate void EvasCallback(IntPtr data, IntPtr evas, IntPtr info);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_callback_add(IntPtr obj, ObjectCallbackType type, EvasCallback func, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_callback_del(IntPtr obj, ObjectCallbackType type, EvasCallback func);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_event_callback_add(IntPtr obj, ObjectCallbackType type, EventCallback func, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_event_callback_del(IntPtr obj, ObjectCallbackType type, EventCallback func);

        public delegate void SmartCallback(IntPtr data, IntPtr obj, IntPtr info);

        public static readonly string BackKeyName = "XF86Back";
        public static readonly string MenuKeyName = "XF86Menu";

        public enum ButtonFlags
        {
            None, DoubleClick, TripleClick
        }

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_key_grab(IntPtr obj, string keyname, ulong modifier, ulong not_modifier, bool exclusive);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_key_ungrab(IntPtr obj, string keyname, ulong modifier, ulong not_modifier);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_data_get(IntPtr obj, string keyname);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_data_set(IntPtr obj, string keyname, IntPtr data);

        [DllImport(Libraries.Evas, EntryPoint = "evas_object_type_get", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, CharSet = CharSet.Ansi)]
        internal static extern IntPtr _evas_object_type_get(IntPtr obj);

        internal static string evas_object_type_get(IntPtr obj)
        {
            var text = _evas_object_type_get(obj);
            return Marshal.PtrToStringAnsi(text);
        }

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_evas_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_image_add(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_del(IntPtr objectPtr);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_show(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_hide(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_visible_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_callback_add(IntPtr obj, string eventName, SmartCallback seh, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_callback_del(IntPtr obj, string eventName, SmartCallback seh);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_min_set(IntPtr obj, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_min_get(IntPtr obj, out int w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_min_get(IntPtr obj, IntPtr w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_min_get(IntPtr obj, out int w, IntPtr h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_max_set(IntPtr obj, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_max_get(IntPtr obj, out int w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_max_get(IntPtr obj, IntPtr w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_max_get(IntPtr obj, out int w, IntPtr h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_weight_get(IntPtr obj, out double x, out double y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_weight_get(IntPtr obj, out double x, IntPtr y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_weight_get(IntPtr obj, IntPtr x, out double y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_align_get(IntPtr obj, out double x, out double y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_align_get(IntPtr obj, out double x, IntPtr y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_align_get(IntPtr obj, IntPtr x, out double y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_weight_set(IntPtr obj, double x, double y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_align_set(IntPtr obj, double x, double y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_move(IntPtr obj, int x, int y);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_resize(IntPtr obj, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_set(IntPtr obj, int x, int y, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, out int x, out int y, out int w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, out int x, IntPtr y, IntPtr w, IntPtr h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, IntPtr x, out int y, IntPtr w, IntPtr h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, IntPtr x, IntPtr y, out int w, IntPtr h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, IntPtr x, IntPtr y, IntPtr w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, IntPtr x, IntPtr y, out int w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_geometry_get(IntPtr obj, out int x, out int y, IntPtr w, IntPtr h);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_smart_members_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_map_new(int count);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_util_points_populate_from_object_full(IntPtr map, IntPtr obj, int z);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_util_points_populate_from_geometry(IntPtr map, int x, int y, int w, int h, int z);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_util_3d_rotate(IntPtr map, double dx, double dy, double dz, int cx, int cy, int cz);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_util_zoom(IntPtr map, double x, double y, int cx, int cy);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_point_coord_set(IntPtr map, int idx, int x, int y, int z);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_point_coord_get(IntPtr map, int idx, out int x, out int y, out int z);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_map_enable_set(IntPtr obj, bool enabled);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_map_enable_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_util_object_move_sync_set(IntPtr map, bool enabled);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_map_util_object_move_sync_get(IntPtr map);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_map_set(IntPtr obj, IntPtr map);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_map_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_map_free(IntPtr map);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_polygon_add(IntPtr evas);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_polygon_point_add(IntPtr evas, int x, int y);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_polygon_points_clear(IntPtr evas);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_rectangle_add(IntPtr evas);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_color_set(IntPtr obj, int r, int g, int b, int a);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_color_get(IntPtr obj, out int r, out int g, out int b, out int a);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_color_get(IntPtr obj, IntPtr r, IntPtr g, IntPtr b, out int a);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_clip_set(IntPtr obj, IntPtr clip);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_clip_unset(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_clip_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_lower(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_feed_mouse_move(IntPtr obj, int x, int y, int timestamp, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_feed_mouse_down(IntPtr obj, int b, ButtonFlags flags, int timestamp, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_feed_mouse_up(IntPtr obj, int b, ButtonFlags flags, int timestamp, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_feed_key_down(IntPtr obj, string keyname, string key, string str, string compose, int timestamp, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_feed_key_up(IntPtr obj, string keyname, string key, string str, string compose, int timestamp, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_ref(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_unref(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern int evas_object_ref_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_repeat_events_set(IntPtr obj, bool repeat);

        [DllImport(Libraries.Evas)]
        [return: MarshalAs(UnmanagedType.U1)]
        internal static extern bool evas_object_repeat_events_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_propagate_events_set(IntPtr obj, bool propagate);

        [DllImport(Libraries.Evas)]
        [return: MarshalAs(UnmanagedType.U1)]
        internal static extern bool evas_object_propagate_events_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_pass_events_set(IntPtr obj, bool propagate);

        [DllImport(Libraries.Evas)]
        [return: MarshalAs(UnmanagedType.U1)]
        internal static extern bool evas_object_pass_events_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_textblock_size_native_get(IntPtr obj, out int w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_textblock_size_formatted_get(IntPtr obj, out int w, out int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_changed(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_color_argb_premul(int a, ref int r, ref int g, ref int b);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_damage_rectangle_add(IntPtr obj, int x, int y, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_data_argb_premul(uint data, uint length);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_event_callback_del_full(IntPtr obj, ObjectCallbackType type, EvasCallback func, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_font_path_global_append(string path);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_image_cache_flush(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_image_cache_set(IntPtr obj, int size);

        [DllImport(Libraries.Evas)]
        internal static extern string evas_load_error_str(LoadError error);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_data_del(IntPtr obj, string key);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_focus_set(IntPtr obj, bool focus);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_freeze_events_set(IntPtr obj, bool freeze);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_colorspace_set(IntPtr obj, Colorspace colorSpace);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_data_copy_set(IntPtr obj, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_image_data_get(IntPtr obj, bool forWriting);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_data_set(IntPtr obj, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_data_update_add(IntPtr obj, int x, int y, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_fill_set(IntPtr obj, int x, int y, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_image_filled_add(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_filled_set(IntPtr obj, bool setting);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_memfile_set(IntPtr obj, IntPtr data, int size, string format, string key);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_pixels_dirty_set(IntPtr obj, bool dirty);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_save(IntPtr obj, string file, string key, string flags);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_scale_hint_set(IntPtr obj, ImageScaleHint hint);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_size_set(IntPtr obj, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_smooth_scale_set(IntPtr obj, bool smoothScale);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_source_set(IntPtr obj, IntPtr src);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_image_source_visible_set(IntPtr obj, bool visible);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_layer_set(IntPtr obj, int layer);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_raise(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_render_op_set(IntPtr obj, RenderOp op);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_aspect_set(IntPtr obj, AspectControl aspect, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_smart_add(IntPtr obj, IntPtr smart);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_smart_data_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_data_set(IntPtr obj, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_member_add(IntPtr obj, IntPtr smart);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_member_del(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_stack_above(IntPtr obj, IntPtr avobe);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_text_add(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_font_set(IntPtr obj, string font, int size);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_text_set(IntPtr obj, string text);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_textblock_add(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_textblock_style_set(IntPtr obj, IntPtr textBlockStyle);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_textblock_text_markup_set(IntPtr obj, string text);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_obscured_clear(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_smart_class_new(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern string evas_device_name_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern string evas_font_path_global_clear();

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_object_above_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_event_callback_priority_add(IntPtr obj, ObjectCallbackType type, ObjectCallbackPriority priority, EventCallback func, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_focus_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_freeze_events_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern int evas_object_layer_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_callback_priority_add(IntPtr obj, string eventName, ObjectCallbackPriority priority, EventCallback func, IntPtr data);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_smart_clipped_smart_set(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_table_homogeneous_set(IntPtr obj, TableHomogeneousMode mode);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_table_pack(IntPtr obj, IntPtr child, uint col, uint row, uint colspan, uint rowspan);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_table_padding_set(IntPtr obj, int horizontal, int vertical);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_filter_program_set(IntPtr obj, string program);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_glow_color_set(IntPtr obj, int r, int g, int b, int a);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_outline_color_set(IntPtr obj, int r, int g, int b, int a);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_shadow_color_set(IntPtr obj, int r, int g, int b, int a);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_text_style_set(IntPtr obj, TextStyleType type);

        [DllImport(Libraries.Evas)]
        internal static extern bool evas_object_textblock_line_number_geometry_get(IntPtr obj, int line, int x, int y, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_textblock_valign_set(IntPtr obj, double align);

        [DllImport(Libraries.Evas)]
        internal static extern int evas_string_char_len_get(string str);

        [DllImport(Libraries.Evas)]
        internal static extern int evas_textblock_style_free(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern IntPtr evas_textblock_style_new();

        [DllImport(Libraries.Evas)]
        internal static extern void evas_textblock_style_set(IntPtr obj, string text);

        [DllImport(Libraries.Evas)]
        internal static extern string evas_textblock_text_markup_to_utf8(IntPtr obj, string text);

        [DllImport(Libraries.Evas)]
        internal static extern string evas_textblock_text_utf8_to_markup(IntPtr obj, string text);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_obscured_rectangle_add(IntPtr obj, int x, int y, int w, int h);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_render(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_norender(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern int evas_image_cache_get(IntPtr obj);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_font_path_global_prepend(string path);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_color_argb_unpremul(int a, ref int r, ref int g, ref int b);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_color_hsv_to_rgb(int r, int g, int b, out float h, out float s, out float v);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_color_rgb_to_hsv(float h, float s, float v, out int r, out int g, out int b);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_stack_below(IntPtr obj, IntPtr below);

        [DllImport(Libraries.Evas)]
        internal static extern void evas_object_size_hint_aspect_get(IntPtr obj, out AspectControl aspect, out int w, out int h);

        internal static void SetX(IntPtr obj, int x)
        {
            int y = GetY(obj);
            evas_object_move(obj, x, y);
        }

        internal static void SetY(IntPtr obj, int y)
        {
            int x = GetX(obj);
            evas_object_move(obj, x, y);
        }

        internal static void SetWidth(IntPtr obj, int w)
        {
            int h = GetHeight(obj);
            evas_object_resize(obj, w, h);
        }

        internal static void SetHeight(IntPtr obj, int h)
        {
            int w = GetWidth(obj);
            evas_object_resize(obj, w, h);
        }

        internal static int GetX(IntPtr obj)
        {
            int x;
            evas_object_geometry_get(obj, out x, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
            return x;
        }

        internal static int GetY(IntPtr obj)
        {
            int y;
            evas_object_geometry_get(obj, IntPtr.Zero, out y, IntPtr.Zero, IntPtr.Zero);
            return y;
        }

        internal static int GetWidth(IntPtr obj)
        {
            int w;
            evas_object_geometry_get(obj, IntPtr.Zero, IntPtr.Zero, out w, IntPtr.Zero);
            return w;
        }

        internal static int GetHeight(IntPtr obj)
        {
            int h;
            evas_object_geometry_get(obj, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, out h);
            return h;
        }

        internal static double GetAlignX(IntPtr obj)
        {
            double x;
            evas_object_size_hint_align_get(obj, out x, IntPtr.Zero);
            return x;
        }

        internal static double GetAlignY(IntPtr obj)
        {
            double y;
            evas_object_size_hint_align_get(obj, IntPtr.Zero, out y);
            return y;
        }

        internal static void SetAlignX(IntPtr obj, double x)
        {
            double y = GetAlignY(obj);
            evas_object_size_hint_align_set(obj, x, y);
        }

        internal static void SetAlignY(IntPtr obj, double y)
        {
            double x = GetAlignX(obj);
            evas_object_size_hint_align_set(obj, x, y);
        }

        internal static double GetWeightX(IntPtr obj)
        {
            double x;
            evas_object_size_hint_weight_get(obj, out x, IntPtr.Zero);
            return x;
        }

        internal static double GetWeightY(IntPtr obj)
        {
            double y;
            evas_object_size_hint_weight_get(obj, IntPtr.Zero, out y);
            return y;
        }

        internal static void SetWeightX(IntPtr obj, double x)
        {
            double y = GetWeightY(obj);
            evas_object_size_hint_weight_set(obj, x, y);
        }

        internal static void SetWeightY(IntPtr obj, double y)
        {
            double x = GetWeightX(obj);
            evas_object_size_hint_weight_set(obj, x, y);
        }

        internal static int GetAlpha(IntPtr obj)
        {
            int a;
            evas_object_color_get(obj, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, out a);
            return a;
        }

        internal static void SetAlpha(IntPtr obj, int a)
        {
            evas_object_color_set(obj, a, a, a, a);
        }

        internal static void SetPremultipliedColor(IntPtr obj, int r, int g, int b, int a)
        {
            evas_object_color_set(obj, r * a / 255, g * a / 255, b * a / 255, a);
        }
    }
}