// This source file is part of HGamer3D
// (A project to enable 3D game development in Haskell)
// For the latest info, see http://www.althainz.de/HGamer3D.html
//
// (c) 2011, 2012 Peter Althainz
//
// 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.
//
// ClassListHeader.h
//
#include "wchar.h"
#ifndef _DEFINED_HG3D_ClassListHeader
#define _DEFINED_HG3D_ClassListHeader
#include "ClassPtr.h"
#include "ClassListHeaderSegment.h"
#include "EnumSortDirection.h"
// Return the number of columns or segments attached to the header.
void cegui_lsthdr_getColumnCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
// Return the ListHeaderSegment
void cegui_lsthdr_getSegmentFromColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c, struct hg3dclass_struct * result_c);
// Return the ListHeaderSegment
void cegui_lsthdr_getSegmentFromID(struct hg3dclass_struct * thisclass_c, unsigned int id_c, struct hg3dclass_struct * result_c);
// Return the ListHeaderSegment
void cegui_lsthdr_getSortSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
// Return the zero based column index of the specified segment.
void cegui_lsthdr_getColumnFromSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, unsigned int * result_c);
// Return the zero based column index of the segment with the specified ID.
void cegui_lsthdr_getColumnFromID(struct hg3dclass_struct * thisclass_c, unsigned int id_c, unsigned int * result_c);
// Return the zero based index of the current sort column. There must be at least one segment/column to successfully call this method.
void cegui_lsthdr_getSortColumn(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
// Return the zero based column index of the segment with the specified text.
void cegui_lsthdr_getColumnWithText(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int * result_c);
// Return the pixel offset to the given ListHeaderSegment
void cegui_lsthdr_getPixelOffsetToSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, float * result_c);
// Return the pixel offset to the ListHeaderSegment
void cegui_lsthdr_getPixelOffsetToColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c, float * result_c);
// Return the total pixel width of all attached segments.
void cegui_lsthdr_getTotalSegmentsPixelExtent(struct hg3dclass_struct * thisclass_c, float * result_c);
// Return the currently set sort direction.
void cegui_lsthdr_getSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection * result_c);
// Return whether user manipulation of the sort column & direction are enabled.
void cegui_lsthdr_isSortingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
// Return whether the user may size column segments.
void cegui_lsthdr_isColumnSizingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
// Return whether the user may modify the order of the segments.
void cegui_lsthdr_isColumnDraggingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
// Return the current segment offset value. This value is used to implement scrolling of the header segments within the ListHeader
void cegui_lsthdr_getSegmentOffset(struct hg3dclass_struct * thisclass_c, float * result_c);
// Set whether user manipulation of the sort column and direction is enabled.
void cegui_lsthdr_setSortingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
// Set the current sort direction.
void cegui_lsthdr_setSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection direction_c);
// Set the column segment to be used as the sort column.
void cegui_lsthdr_setSortSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c);
// Set the column to be used as the sort column.
void cegui_lsthdr_setSortColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c);
// Set the column to to be used for sorting via its ID code.
void cegui_lsthdr_setSortColumnFromID(struct hg3dclass_struct * thisclass_c, unsigned int id_c);
// Set whether columns may be sized by the user.
void cegui_lsthdr_setColumnSizingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
// Set whether columns may be reordered by the user via drag and drop.
void cegui_lsthdr_setColumnDraggingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
// Removes a column segment from the ListHeader
void cegui_lsthdr_removeColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c);
// Remove the specified segment from the ListHeader
void cegui_lsthdr_removeSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c);
// Moves a column segment into a new position.
void cegui_lsthdr_moveColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c, unsigned int position_c);
// Move a column segment to a new position.
void cegui_lsthdr_moveColumn2(struct hg3dclass_struct * thisclass_c, unsigned int column_c, struct hg3dclass_struct * position_c);
// Moves a segment into a new position.
void cegui_lsthdr_moveSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, unsigned int position_c);
// Move a segment to a new position.
void cegui_lsthdr_moveSegment2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, struct hg3dclass_struct * position_c);
// Set the current base segment offset. (This implements scrolling of the header segments within the header area).
void cegui_lsthdr_setSegmentOffset(struct hg3dclass_struct * thisclass_c, float offset_c);
// Constructor for the list header base class.
void cegui_lsthdr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
// Destructor for the list header base class.
void cegui_lsthdr_destruct(struct hg3dclass_struct * thisclass_c);
#endif