ROVLib2
RISCOSC++applicationdevelopmentlibrary
wimp_menu.h
1 #pragma once
2 
3 #include "wimp_basics.h"
4 #include "wimp_icons.h"
5 
6 #ifdef __cplusplus
7 extern "C"
8 {
9 #endif
10 
11  typedef struct tMenu tMenu_t; // m
12 
13  typedef struct
14  {
15  unsigned mfDisplayTick : 1;
16  unsigned mfDottedLine : 1;
17  unsigned mfWriteable : 1;
18  unsigned mfSubmenuMessage : 1;
19  unsigned mfOpenIfGreyed : 1;
20  unsigned : 2;
21  unsigned mfLastItem : 1;
22  unsigned mfTitleIsIndirectText : 1;
23  unsigned : 21;
24  } sMenuFlags; // mf
25 
26  typedef struct
27  {
28  union
29  {
30  sMenuFlags mfMenuFlags;
31  unsigned int uiMenuFlags;
32  };
33  union
34  {
35  const tMenu_t* mSubmenu;
36  tWindowHandle whWindow;
37  };
38  union
39  {
40  sIconFlags ifMenuIconFlags;
41  unsigned int uiMenuIconFlags;
42  };
43  uIconData idMenuIconData;
44  } tMenuItem; // mi
45 
46  typedef struct tMenu
47  {
48  union
49  {
50  char caTitle[12];
51  struct
52  {
53  const char* kpcaTitle;
54  const char* kpcaValidation;
55  int iTitleLength;
56  };
57  };
58  struct
59  {
60  unsigned bTitleForegroundColour : 8;
61  unsigned bTitleBackgroundColour : 8;
62  unsigned bWorkAreaForegroundColour : 8;
63  unsigned bWorkAreaBackgroundColour : 8;
64  };
65  tCoordinate cMenuItemWidth;
66  tCoordinate cMenuItemHeight;
67  tCoordinate cVerticalGap;
68  tMenuItem miMenuItems[0];
69  } tMenu; // m
70 
77  int wimp_createmenu(const tMenu* kpmMenu, tCoordinate cX, tCoordinate cY);
78 
85  int wimp_closemenu(void);
86 
87 #ifdef __cplusplus
88 }
89 #endif