1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef _HAIKU_SUPPORT_H
20 #define _HAIKU_SUPPORT_H
21
22 #include <stdint.h>
23
24 #ifdef HAVE_FREETYPE
25 #include <ft2build.h>
26 #include <fontconfig/fontconfig.h>
27 #include FT_FREETYPE_H
28 #include FT_SIZES_H
29 #endif
30
31 #ifdef USE_BE_CAIRO
32 #include <cairo.h>
33 #endif
34
35 #include <math.h>
36
37 #include <kernel/OS.h>
38
39 enum haiku_cursor
40 {
41 CURSOR_ID_SYSTEM_DEFAULT = 1,
42 CURSOR_ID_CONTEXT_MENU = 3,
43 CURSOR_ID_COPY = 4,
44 CURSOR_ID_CREATE_LINK = 29,
45 CURSOR_ID_CROSS_HAIR = 5,
46 CURSOR_ID_FOLLOW_LINK = 6,
47 CURSOR_ID_GRAB = 7,
48 CURSOR_ID_GRABBING = 8,
49 CURSOR_ID_HELP = 9,
50 CURSOR_ID_I_BEAM = 2,
51 CURSOR_ID_I_BEAM_HORIZONTAL = 10,
52 CURSOR_ID_MOVE = 11,
53 CURSOR_ID_NO_CURSOR = 12,
54 CURSOR_ID_NOT_ALLOWED = 13,
55 CURSOR_ID_PROGRESS = 14,
56 CURSOR_ID_RESIZE_NORTH = 15,
57 CURSOR_ID_RESIZE_EAST = 16,
58 CURSOR_ID_RESIZE_SOUTH = 17,
59 CURSOR_ID_RESIZE_WEST = 18,
60 CURSOR_ID_RESIZE_NORTH_EAST = 19,
61 CURSOR_ID_RESIZE_NORTH_WEST = 20,
62 CURSOR_ID_RESIZE_SOUTH_EAST = 21,
63 CURSOR_ID_RESIZE_SOUTH_WEST = 22,
64 CURSOR_ID_RESIZE_NORTH_SOUTH = 23,
65 CURSOR_ID_RESIZE_EAST_WEST = 24,
66 CURSOR_ID_RESIZE_NORTH_EAST_SOUTH_WEST = 25,
67 CURSOR_ID_RESIZE_NORTH_WEST_SOUTH_EAST = 26,
68 CURSOR_ID_ZOOM_IN = 27,
69 CURSOR_ID_ZOOM_OUT = 28
70 };
71
72 enum haiku_z_group
73 {
74 Z_GROUP_ABOVE,
75 Z_GROUP_NONE,
76 Z_GROUP_BELOW,
77 };
78
79 enum haiku_alert_type
80 {
81 HAIKU_EMPTY_ALERT = 0,
82 HAIKU_INFO_ALERT,
83 HAIKU_IDEA_ALERT,
84 HAIKU_WARNING_ALERT,
85 HAIKU_STOP_ALERT
86 };
87
88 enum haiku_event_type
89 {
90 QUIT_REQUESTED,
91 FRAME_RESIZED,
92 FRAME_EXPOSED,
93 KEY_DOWN,
94 KEY_UP,
95 ACTIVATION,
96 MOUSE_MOTION,
97 BUTTON_DOWN,
98 BUTTON_UP,
99 ICONIFICATION,
100 MOVE_EVENT,
101 SCROLL_BAR_VALUE_EVENT,
102 SCROLL_BAR_PART_EVENT,
103 SCROLL_BAR_DRAG_EVENT,
104 WHEEL_MOVE_EVENT,
105 MENU_BAR_RESIZE,
106 MENU_BAR_CLICK,
107 MENU_BAR_OPEN,
108 MENU_BAR_SELECT_EVENT,
109 MENU_BAR_CLOSE,
110 MENU_BAR_HELP_EVENT,
111 ZOOM_EVENT,
112 DRAG_AND_DROP_EVENT,
113 APP_QUIT_REQUESTED_EVENT,
114 DUMMY_EVENT,
115 SCREEN_CHANGED_EVENT,
116 MENU_BAR_LEFT,
117 CLIPBOARD_CHANGED_EVENT,
118 FONT_CHANGE_EVENT,
119 NOTIFICATION_CLICK_EVENT,
120 };
121
122 struct haiku_clipboard_changed_event
123 {
124 char dummy;
125 };
126
127 struct haiku_screen_changed_event
128 {
129 bigtime_t when;
130 };
131
132 struct haiku_quit_requested_event
133 {
134 void *window;
135 };
136
137 struct haiku_resize_event
138 {
139 void *window;
140 float width;
141 float height;
142 };
143
144 struct haiku_expose_event
145 {
146 void *window;
147 int x;
148 int y;
149 int width;
150 int height;
151 };
152
153 struct haiku_drag_and_drop_event
154 {
155 void *window;
156 int x, y;
157 void *message;
158 };
159
160 struct haiku_app_quit_requested_event
161 {
162 char dummy;
163 };
164
165 struct haiku_dummy_event
166 {
167 char dummy;
168 };
169
170 enum haiku_modifier_specification
171 {
172 HAIKU_MODIFIER_ALT = 1,
173 HAIKU_MODIFIER_CTRL = (1 << 1),
174 HAIKU_MODIFIER_SHIFT = (1 << 2),
175 HAIKU_MODIFIER_SUPER = (1 << 3),
176 };
177
178 struct haiku_key_event
179 {
180 void *window;
181 int modifiers;
182 unsigned keysym;
183 uint32_t multibyte_char;
184
185
186 bigtime_t time;
187 };
188
189 struct haiku_activation_event
190 {
191 void *window;
192 int activated_p;
193 };
194
195 struct haiku_mouse_motion_event
196 {
197 void *window;
198 bool just_exited_p;
199 int x;
200 int y;
201 bigtime_t time;
202 bool dnd_message;
203 };
204
205 struct haiku_menu_bar_left_event
206 {
207 void *window;
208 int x, y;
209 };
210
211 struct haiku_menu_bar_click_event
212 {
213 void *window;
214 int x, y;
215 };
216
217 struct haiku_button_event
218 {
219 void *window;
220 void *scroll_bar;
221 int btn_no;
222 int modifiers;
223 int x;
224 int y;
225 bigtime_t time;
226 };
227
228 struct haiku_iconification_event
229 {
230 void *window;
231 int iconified_p;
232 };
233
234 struct haiku_move_event
235 {
236 void *window;
237 int x, y;
238 int decorator_width;
239 int decorator_height;
240 };
241
242 struct haiku_wheel_move_event
243 {
244 void *window;
245 int modifiers;
246 float delta_x;
247 float delta_y;
248 };
249
250 struct haiku_menu_bar_select_event
251 {
252 void *window;
253 void *ptr;
254 };
255
256 struct haiku_menu_bar_help_event
257 {
258 void *window;
259 int mb_idx;
260 void *data;
261 bool highlight_p;
262 };
263
264 struct haiku_zoom_event
265 {
266 void *window;
267 int fullscreen_mode;
268 };
269
270 enum haiku_font_specification
271 {
272 FSPEC_FAMILY = 1,
273 FSPEC_STYLE = 1 << 1,
274 FSPEC_SLANT = 1 << 2,
275 FSPEC_WEIGHT = 1 << 3,
276 FSPEC_SPACING = 1 << 4,
277 FSPEC_WANTED = 1 << 5,
278 FSPEC_NEED_ONE_OF = 1 << 6,
279 FSPEC_WIDTH = 1 << 7,
280 FSPEC_LANGUAGE = 1 << 8,
281 FSPEC_INDICES = 1 << 9,
282 FSPEC_ANTIALIAS = 1 << 10,
283 };
284
285 typedef char haiku_font_family_or_style[64];
286
287 enum haiku_font_slant
288 {
289 NO_SLANT = -1,
290 SLANT_OBLIQUE,
291 SLANT_REGULAR,
292 SLANT_ITALIC
293 };
294
295 enum haiku_font_width
296 {
297 NO_WIDTH = -1,
298 ULTRA_CONDENSED,
299 EXTRA_CONDENSED,
300 CONDENSED,
301 SEMI_CONDENSED,
302 NORMAL_WIDTH,
303 SEMI_EXPANDED,
304 EXPANDED,
305 EXTRA_EXPANDED,
306 ULTRA_EXPANDED
307 };
308
309 enum haiku_font_language
310 {
311 LANGUAGE_CN,
312 LANGUAGE_KO,
313 LANGUAGE_JP,
314 MAX_LANGUAGE
315 };
316
317 enum haiku_font_weight
318 {
319 NO_WEIGHT = -1,
320 HAIKU_THIN = 0,
321 HAIKU_EXTRALIGHT = 40,
322 HAIKU_LIGHT = 50,
323 HAIKU_SEMI_LIGHT = 75,
324 HAIKU_REGULAR = 100,
325 HAIKU_SEMI_BOLD = 180,
326 HAIKU_BOLD = 200,
327 HAIKU_EXTRA_BOLD = 205,
328 HAIKU_BOOK = 400,
329 HAIKU_HEAVY = 800,
330 HAIKU_ULTRA_HEAVY = 900,
331 HAIKU_BLACK = 1000,
332 HAIKU_MEDIUM = 2000,
333 };
334
335 enum haiku_fullscreen_mode
336 {
337 FULLSCREEN_MODE_NONE,
338 FULLSCREEN_MODE_WIDTH,
339 FULLSCREEN_MODE_HEIGHT,
340 FULLSCREEN_MODE_BOTH,
341 FULLSCREEN_MODE_MAXIMIZED,
342 };
343
344 struct haiku_font_pattern
345 {
346
347 int specified;
348
349
350 struct haiku_font_pattern *next;
351
352
353 struct haiku_font_pattern *last;
354
355
356
357 struct haiku_font_pattern *next_family;
358
359
360 haiku_font_family_or_style family;
361
362
363 haiku_font_family_or_style style;
364
365
366 int mono_spacing_p;
367
368
369 enum haiku_font_slant slant;
370
371
372 enum haiku_font_width width;
373
374
375 enum haiku_font_language language;
376
377
378 enum haiku_font_weight weight;
379
380
381
382 int *wanted_chars;
383
384
385 int want_chars_len;
386
387
388
389 int *need_one_of;
390
391
392 int need_one_of_len;
393
394
395 int family_index;
396
397
398 int style_index;
399
400
401 int oblique_seen_p;
402
403
404
405 int use_antialiasing;
406 };
407
408 struct haiku_scroll_bar_value_event
409 {
410 void *scroll_bar;
411 void *window;
412 int position;
413 };
414
415 struct haiku_scroll_bar_drag_event
416 {
417 void *scroll_bar;
418 void *window;
419 int dragging_p;
420 };
421
422 enum haiku_scroll_bar_part
423 {
424 HAIKU_SCROLL_BAR_UP_BUTTON,
425 HAIKU_SCROLL_BAR_DOWN_BUTTON
426 };
427
428 struct haiku_scroll_bar_part_event
429 {
430 void *scroll_bar;
431 void *window;
432 enum haiku_scroll_bar_part part;
433 };
434
435 struct haiku_menu_bar_resize_event
436 {
437 void *window;
438 int width;
439 int height;
440 };
441
442 struct haiku_menu_bar_state_event
443 {
444 void *window;
445 };
446
447 enum haiku_what_font
448 {
449 FIXED_FAMILY,
450 FIXED_STYLE,
451 DEFAULT_FAMILY,
452 DEFAULT_STYLE,
453 };
454
455 struct haiku_font_change_event
456 {
457
458 haiku_font_family_or_style new_family;
459 haiku_font_family_or_style new_style;
460 int new_size;
461
462
463
464
465 enum haiku_what_font what;
466 };
467
468 struct haiku_notification_click_event
469 {
470
471 intmax_t id;
472 };
473
474 struct haiku_session_manager_reply
475 {
476 bool quit_reply;
477 };
478
479 #ifdef __cplusplus
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497 #define BE_RECT_HEIGHT(rect) (ceil (((rect).bottom - (rect).top) + 1))
498 #define BE_RECT_WIDTH(rect) (ceil (((rect).right - (rect).left) + 1))
499 #endif
500
501 #ifdef __cplusplus
502 extern "C"
503 {
504 #endif
505 #include <OS.h>
506
507 #ifdef __cplusplus
508 typedef void *haiku;
509
510 extern void haiku_put_pixel (haiku, int, int, unsigned long);
511 extern unsigned long haiku_get_pixel (haiku, int, int);
512 #endif
513
514 extern port_id port_application_to_emacs;
515 extern port_id port_popup_menu_to_emacs;
516 extern port_id port_emacs_to_session_manager;
517
518 extern void haiku_io_init (void);
519 extern void haiku_io_init_in_app_thread (void);
520
521 extern void haiku_read_size (ssize_t *, bool);
522
523 extern int haiku_read (enum haiku_event_type *, void *, ssize_t);
524 extern int haiku_read_with_timeout (enum haiku_event_type *, void *, ssize_t,
525 bigtime_t, bool);
526 extern int haiku_write (enum haiku_event_type, void *);
527 extern int haiku_write_without_signal (enum haiku_event_type, void *, bool);
528
529 extern void rgb_color_hsl (uint32_t, double *, double *, double *);
530 extern void hsl_color_rgb (double, double, double, uint32_t *);
531
532 extern void *BBitmap_new (int, int, int);
533 extern void *BBitmap_data (void *);
534 extern int BBitmap_convert (void *, void **);
535 extern void be_draw_cross_on_pixmap (void *, int, int, int, int,
536 uint32_t);
537
538 extern void BBitmap_free (void *);
539
540 extern void BBitmap_dimensions (void *, int *, int *, int *, int *,
541 int32_t *, int *);
542 extern void *BApplication_setup (void);
543 extern void *BWindow_new (void **);
544 extern void BWindow_quit (void *);
545
546 extern void BWindow_set_offset (void *, int, int);
547 extern void BWindow_iconify (void *);
548 extern void BWindow_set_visible (void *, int);
549 extern void BWindow_retitle (void *, const char *);
550 extern void BWindow_resize (void *, int, int);
551 extern void BWindow_activate (void *);
552 extern void BWindow_center_on_screen (void *);
553 extern void BWindow_change_decoration (void *, int);
554 extern void BWindow_set_tooltip_decoration (void *);
555 extern void BWindow_set_avoid_focus (void *, int);
556 extern void BWindow_set_size_alignment (void *, int, int);
557 extern void BWindow_sync (void *);
558 extern void BWindow_send_behind (void *, void *);
559 extern bool BWindow_is_active (void *);
560 extern void BWindow_set_override_redirect (void *, bool);
561 extern void BWindow_dimensions (void *, int *, int *);
562 extern void BWindow_set_z_group (void *, enum haiku_z_group);
563 extern void BWindow_set_sticky (void *, bool);
564 extern void BWindow_Flush (void *);
565
566 extern void BFont_close (void *);
567 extern void BFont_metrics (void *, int *, int *, int *, int *,
568 int *, int *, int *, int *, int *, int *);
569 extern int BFont_have_char_p (void *, int32_t);
570 extern int BFont_have_char_block (void *, int32_t, int32_t);
571 extern void BFont_char_bounds (void *, const char *, int *, int *, int *);
572 extern void BFont_nchar_bounds (void *, const char *, int *, int *,
573 int *, int32_t);
574 extern struct haiku_font_pattern *BFont_find (struct haiku_font_pattern *);
575
576 extern void BView_StartClip (void *);
577 extern void BView_EndClip (void *);
578 extern void BView_SetHighColor (void *, uint32_t);
579 extern void BView_SetLowColor (void *, uint32_t);
580 extern void BView_SetPenSize (void *, int);
581 extern void BView_SetFont (void *, void *);
582 extern void BView_MovePenTo (void *, int, int);
583 extern void BView_DrawString (void *, const char *, ptrdiff_t);
584 extern void BView_DrawChar (void *, char);
585 extern void BView_FillRectangle (void *, int, int, int, int);
586 extern void BView_FillRectangleAbs (void *, int, int, int, int);
587 extern void BView_FillTriangle (void *, int, int, int, int, int, int);
588 extern void BView_StrokeRectangle (void *, int, int, int, int);
589 extern void BView_SetViewColor (void *, uint32_t);
590 extern void BView_ClipToRect (void *, int, int, int, int);
591 extern void BView_ClipToInverseRect (void *, int, int, int, int);
592 extern void BView_StrokeLine (void *, int, int, int, int);
593 extern void BView_CopyBits (void *, int, int, int, int, int, int, int, int);
594 extern void BView_InvertRect (void *, int, int, int, int);
595 extern void BView_DrawBitmap (void *, void *, int, int, int, int, int, int,
596 int, int, bool);
597 extern void BView_DrawBitmapWithEraseOp (void *, void *, int, int, int, int);
598 extern void BView_DrawBitmapTiled (void *, void *, int, int,
599 int, int, int, int, int, int);
600
601 extern void BView_resize_to (void *, int, int);
602 extern void BView_set_view_cursor (void *, void *);
603 extern void BView_move_frame (void *, int, int, int, int);
604 extern void BView_scroll_bar_update (void *, int, int, int, int, bool);
605
606 extern void *be_transform_bitmap (void *, void *, uint32_t, double,
607 int, int, bool);
608 extern void be_apply_affine_transform (void *, double, double, double,
609 double, double, double);
610 extern void be_apply_inverse_transform (double (*)[3], int, int, int *, int *);
611 extern void be_draw_image_mask (void *, void *, int, int, int, int, int, int,
612 int, int, uint32_t);
613 extern void be_draw_bitmap_with_mask (void *, void *, void *, int, int, int,
614 int, int, int, int, int, bool);
615
616 extern void be_get_display_resolution (double *, double *);
617 extern void be_get_screen_dimensions (int *, int *);
618
619
620 extern void *be_create_cursor_from_id (int);
621 extern void *be_create_pixmap_cursor (void *, int, int);
622 extern void be_delete_cursor (void *);
623
624 extern void *be_make_scroll_bar_for_view (void *, int, int, int, int, int);
625 extern void BScrollBar_delete (void *);
626 extern int BScrollBar_default_size (int);
627
628 extern void BView_invalidate (void *);
629 extern void BView_draw_lock (void *, bool, int, int, int, int);
630 extern void BView_invalidate_region (void *, int, int, int, int);
631 extern void BView_draw_unlock (void *);
632 extern void BBitmap_import_fringe_bitmap (void *, unsigned short *, int, int);
633
634 extern void haiku_font_pattern_free (struct haiku_font_pattern *);
635
636 extern int BFont_open_pattern (struct haiku_font_pattern *, void **, float);
637 extern void BFont_populate_fixed_family (struct haiku_font_pattern *);
638 extern void BFont_populate_plain_family (struct haiku_font_pattern *);
639
640 extern void BView_publish_scroll_bar (void *, int, int, int, int);
641 extern void BView_forget_scroll_bar (void *, int, int, int, int);
642 extern bool BView_inside_scroll_bar (void *, int, int);
643 extern void BView_get_mouse (void *, int *, int *);
644 extern void BView_convert_to_screen (void *, int *, int *);
645 extern void BView_convert_from_screen (void *, int *, int *);
646
647 extern void BView_emacs_delete (void *);
648
649 extern void *BPopUpMenu_new (const char *);
650
651 extern void BMenu_add_item (void *, const char *, void *, bool,
652 bool, bool, void *, const char *,
653 const char *);
654 extern void BMenu_add_separator (void *);
655 extern void *BMenu_new_submenu (void *, const char *, bool);
656 extern void *BMenu_new_menu_bar_submenu (void *, const char *);
657 extern int BMenu_count_items (void *);
658 extern void *BMenu_item_at (void *, int);
659 extern void *BMenu_run (void *, int, int, void (*) (void *, void *),
660 void (*) (void), void (*) (void),
661 struct timespec (*) (void), void *);
662 extern void BPopUpMenu_delete (void *);
663 extern void *BMenuBar_new (void *);
664 extern void BMenu_delete_all (void *);
665 extern void BMenuBar_delete (void *);
666 extern void BMenu_item_set_label (void *, const char *);
667 extern void *BMenu_item_get_menu (void *);
668 extern void BMenu_delete_from (void *, int, int);
669
670 extern void haiku_ring_bell (void);
671
672 extern void *BAlert_new (const char *, enum haiku_alert_type);
673 extern void *BAlert_add_button (void *, const char *);
674 extern void BAlert_set_offset_spacing (void *);
675 extern int32 BAlert_go (void *, void (*) (void), void (*) (void),
676 void (*) (void));
677 extern void BButton_set_enabled (void *, int);
678 extern void BView_set_tooltip (void *, const char *);
679 extern void BView_show_tooltip (void *);
680 extern void be_show_sticky_tooltip (void *, const char *, int, int);
681
682 extern void BAlert_delete (void *);
683
684 extern void EmacsWindow_parent_to (void *, void *);
685 extern void EmacsWindow_unparent (void *);
686 extern void EmacsWindow_move_weak_child (void *, void *, int, int);
687
688 extern void be_get_version_string (char *, int);
689 extern int be_get_display_planes (void);
690 extern int be_get_display_color_cells (void);
691 extern bool be_is_display_grayscale (void);
692 extern void be_warp_pointer (int, int);
693
694 extern void EmacsView_set_up_double_buffering (void *);
695 extern void EmacsView_disable_double_buffering (void *);
696 extern void EmacsView_flip_and_blit (void *);
697 extern int EmacsView_double_buffered_p (void *);
698
699 extern char *be_popup_file_dialog (int, const char *, int,
700 int, void *, const char *,
701 const char *, void (*) (void));
702
703 #ifdef HAVE_NATIVE_IMAGE_API
704 extern int be_can_translate_type_to_bitmap_p (const char *);
705 extern void *be_translate_bitmap_from_file_name (const char *);
706 extern void *be_translate_bitmap_from_memory (const void *, size_t);
707 #endif
708
709 extern bool BMenuBar_start_tracking (void *);
710 extern size_t BBitmap_bytes_length (void *);
711
712 #ifdef USE_BE_CAIRO
713 extern cairo_t *EmacsView_cairo_context (void *);
714 extern void BView_cr_dump_clipping (void *, cairo_t *);
715 extern void EmacsWindow_begin_cr_critical_section (void *);
716 extern void EmacsWindow_end_cr_critical_section (void *);
717 #endif
718
719 extern void BMenu_add_title (void *, const char *);
720
721 extern int be_plain_font_height (void);
722 extern int be_string_width_with_plain_font (const char *);
723 extern void be_init_font_data (void);
724 extern void be_evict_font_cache (void);
725 extern int be_get_display_screens (void);
726 extern bool be_use_subpixel_antialiasing (void);
727 extern const char *be_find_setting (const char *);
728 extern haiku_font_family_or_style *be_list_font_families (size_t *);
729 extern void be_font_style_to_flags (const char *, struct haiku_font_pattern *);
730 extern void *be_open_font_at_index (int, int, float);
731 extern void be_set_font_antialiasing (void *, bool);
732 extern int be_get_ui_color (const char *, uint32_t *);
733
734 extern void BMessage_delete (void *);
735
736 extern bool be_drag_message (void *, void *, bool, void (*) (void),
737 void (*) (void), void (*) (void),
738 bool (*) (void));
739 extern bool be_drag_and_drop_in_progress (void);
740
741 extern bool be_replay_menu_bar_event (void *, struct haiku_menu_bar_click_event *);
742 extern bool be_select_font (void (*) (void), bool (*) (void),
743 haiku_font_family_or_style *,
744 haiku_font_family_or_style *,
745 int *, bool, int, int, int,
746 bool, bool *);
747
748 extern int be_find_font_indices (struct haiku_font_pattern *, int *, int *);
749 extern status_t be_roster_launch (const char *, const char *, char **,
750 ptrdiff_t, void *, team_id *);
751 extern void be_get_window_decorator_dimensions (void *, int *, int *, int *, int *);
752 extern void be_get_window_decorator_frame (void *, int *, int *, int *, int *);
753 extern void be_send_move_frame_event (void *);
754 extern void be_set_window_fullscreen_mode (void *, enum haiku_fullscreen_mode);
755
756 extern status_t be_write_node_message (const char *, const char *, void *);
757 extern void be_send_message (const char *, void *);
758
759 extern void be_lock_window (void *);
760 extern void be_unlock_window (void *);
761 extern bool be_get_explicit_workarea (int *, int *, int *, int *);
762 extern void be_clear_grab_view (void);
763 extern void be_set_use_frame_synchronization (void *, bool);
764
765 extern void be_listen_font_settings (void);
766
767 extern bool be_lock_font_defaults (void);
768 extern const char *be_get_font_default (enum haiku_what_font);
769 extern int be_get_font_size (enum haiku_what_font);
770 extern void be_unlock_font_defaults (void);
771 #ifdef __cplusplus
772 }
773
774 extern _Noreturn void gui_abort (const char *);
775 extern void *find_appropriate_view_for_draw (void *);
776 #endif
777
778 #endif
779
780
781
782