The next level of structures (actually, a union) control how the individual rows or columns are layed out.
XmGeoMajorLayoutRec
typedef union _XmGeoMajorLayoutRec {
XmGeoRowLayoutRec row;
XmGeoColumnLayoutRec col;
} XmGeoMajorLayoutRec;
typedef union _XmGeoMajorLayoutRec *XmGeoMajorLayout;
XmGeoRowLayoutRecXmGeoColumnLayoutRecXmGET_ACTUAL_SIZEXmGET_PREFERRED_SIZEXmGEO_PRE_SETXmGEO_POST_SETXmGEO_EXPANDXmGEO_CENTERXmGEO_PACKXmGEO_PROPORTIONALXmGEO_AVERAGINGXmGEO_WRAPThe only member of interest is the XmGeoRowLayoutRec. Here's the layout for both; below, I'll describe what the fields mean for the RowLayoutRec - the fields of a ColumnLayoutRec (should it ever get implemented) are similar.
typedef struct {
Boolean end;
XmGeoSegmentFixUpProc fix_up;
Dimension even_width;
Dimension even_height;
Dimension min_height;
Boolean stretch_height;
Boolean uniform_border;
Dimension border;
unsigned char fill_mode;
unsigned char fit_mode;
Boolean sticky_end;
Dimension space_above;
Dimension space_end;
Dimension space_between;
Dimension max_box_height;
Dimension boxes_width;
Dimension fill_width;
Dimension box_count;
} XmGeoRowLayoutRec, *XmGeoRowLayout;
typedef struct {
Boolean end;
XmGeoSegmentFixUpProc fix_up;
Dimension even_height;
Dimension even_width;
Dimension min_width;
Boolean stretch_width;
Boolean uniform_border;
Dimension border;
unsigned char fill_mode;
unsigned char fit_mode;
Boolean sticky_end;
Dimension space_left;
Dimension space_end;
Dimension space_between;
Dimension max_box_width;
Dimension boxed_height;
Dimension fill_height;
Dimension box_count;
} XmGeoColumnLayoutRec, *XmGeoColumnLayout;
enum {
XmGET_ACTUAL_SIZE = 1,
XmGET_PREFERRED_SIZE,
XmGEO_PRE_SET,
XmGEO_POST_SET
};
/* fill modes for the GeoLayoutRec's below */
enum {
XmGEO_EXPAND,
XmGEO_CENTER,
XmGEO_PACK
};
/* fit modes for the GeoLayoutRec's below */
enum {
XmGEO_PROPORTIONAL,
XmGEO_AVERAGING,
XmGEO_WRAP
};
Now for a description of the XmGeoRowLayoutRec:
In general, the user is only interested in fields up to (and including) space_between. The remaining fields are used during the calculations.