/*
 * Motif
 *
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
 *
 * These libraries and programs are free software; you can
 * redistribute them and/or modify them under the terms of the GNU
 * Lesser General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * These libraries and programs are distributed in the hope that
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with these librararies and programs; if not, write
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 * Floor, Boston, MA 02110-1301 USA
 *
 */

#ifndef __Xmcolumnp_h__
#define __Xmcolumnp_h__

#ifdef __cplusplus
extern "C" {
#endif

#include <Xm/XmP.h>
#include <Xm/BulletinBP.h>
#include <Xm/Column.h>

typedef struct _XmColumnClassPart {
    XtPointer extension;
} XmColumnClassPart;

typedef struct _XmColumnClassRec {
    CoreClassPart            core_class;
    CompositeClassPart       composite_class;
    ConstraintClassPart      constraint_class;
    XmManagerClassPart       manager_class;
    XmBulletinBoardClassPart bulletin_board_class;
    XmColumnClassPart	     column_class;
} XmColumnClassRec;

externalref XmColumnClassRec xmColumnClassRec;

typedef struct _XmColumnConstraintPart {

    /* Public */
    unsigned char       label_alignment;
    unsigned char       label_type;
    unsigned char       fill_style;

    Boolean		show_label;
    Boolean		stretchable;
    
    Pixmap              label_pixmap;
    XmString		label_string;

    XmFontList		label_font_list;

    /* Private */

    Widget              label_widget;
    Dimension		request_width;
    Dimension		request_height;
    XRectangle		position;
    Boolean		check_set_render_table; /* used by CheckSetEntryLabelRenderTable */
} XmColumnConstraintPart, * XmColumnConstraint;

typedef struct _XmColumnConstraintRec {
    XmManagerConstraintPart manager;
    XmBulletinBoardConstraintPart bboard;
    XmColumnConstraintPart  column;
} XmColumnConstraintRec, * XmColumnConstraintPtr;

typedef struct _XmColumnPart {
    
    /* Public */

    unsigned char default_label_alignment;
    unsigned char default_fill_style;
    unsigned char orientation;
    unsigned char distribution;
    
    Dimension	  item_spacing;
    Dimension	  label_spacing;

    /* Private */

    Boolean	  resize_done;
    Boolean	  check_set_render_table; /* used by CheckSetDefaultEntryLabelRenderTable */

} XmColumnPart;

typedef struct _XmColumnRec {
    CorePart            core;
    CompositePart       composite;
    ConstraintPart      constraint;
    XmManagerPart       manager;
    XmBulletinBoardPart bulletin_board;
    XmColumnPart        column;
} XmColumnRec;

#define XmColumnIndex (XmBulletinBoardIndex + 1)

#define XmColumnC_label_alignment(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.label_alignment)
#define XmColumnC_label_type(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.label_type)
#define XmColumnC_fill_style(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.fill_style)
#define XmColumnC_show_label(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.show_label)
#define XmColumnC_stretchable(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.stretchable)
#define XmColumnC_label_pixmap(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.label_pixmap)
#define XmColumnC_label_string(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.label_string)
#define XmColumnC_label_font_list(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.label_font_list)
#define XmColumnC_label_widget(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.label_widget)
#define XmColumnC_request_width(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.request_width)
#define XmColumnC_request_height(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.request_height)
#define XmColumnC_position(w) (((XmColumnConstraintPtr)((w)->core.constraints))->column.position)

#define XmColumn_default_label_alignment(w) (((XmColumnWidget)(w))->column.default_label_alignment)
#define XmColumn_default_fill_style(w) (((XmColumnWidget)(w))->column.default_fill_style)
#define XmColumn_orientation(w) (((XmColumnWidget)(w))->column.orientation)
#define XmColumn_distribution(w) (((XmColumnWidget)(w))->column.distribution)
#define XmColumn_item_spacing(w) (((XmColumnWidget)(w))->column.item_spacing)
#define XmColumn_label_spacing(w) (((XmColumnWidget)(w))->column.label_spacing)
#define XmColumn_resize_done(w) (((XmColumnWidget)(w))->column.resize_done)

#ifdef __cplusplus
}
#endif

#endif /* __columnp_h__ */
