/*
 * Copyright (C) 2008 Vijay Kiran Kamuju
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it 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 this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

/* Macro to deal with LP64 <=> LLP64 differences in numeric constants with 'l' modifier */
#ifndef __MSABI_LONG
# if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
#  define __MSABI_LONG(x)         x ## l
# else
#  define __MSABI_LONG(x)         x
# endif
#endif

/* Header Control */
#define HDS_HORZ            0x0000
#define HDS_BUTTONS         0x0002
#define HDS_HOTTRACK        0x0004
#define HDS_HIDDEN          0x0008
#define HDS_DRAGDROP        0x0040
#define HDS_FULLDRAG        0x0080
#define HDS_FILTERBAR       0x0100
#define HDS_FLAT            0x0200
#define HDS_CHECKBOXES      0x0400
#define HDS_NOSIZING        0x0800
#define HDS_OVERFLOW        0x1000

/* Rebar Control */
#define RBS_TOOLTIPS        0x0100
#define RBS_VARHEIGHT       0x0200
#define RBS_BANDBORDERS     0x0400
#define RBS_FIXEDORDER      0x0800
#define RBS_REGISTERDROP    0x1000
#define RBS_AUTOSIZE        0x2000
#define RBS_VERTICALGRIPPER 0x4000
#define RBS_DBLCLKTOGGLE    0x8000

/* Tool tips */
#define TTS_ALWAYSTIP       0x01
#define TTS_NOPREFIX        0x02
#define TTS_NOANIMATE       0x10
#define TTS_NOFADE          0x20
#define TTS_BALLOON         0x40
#define TTS_CLOSE           0x80
#define TTS_USEVISUALSTYLE  0x100

/* Statusbar Control */
#define SBARS_SIZEGRIP      0x0100
#define SBARS_TOOLTIPS      0x0800
#define SBT_TOOLTIPS        0x0800

/* Toolbar Control */
#define TBS_AUTOTICKS       0x0001
#define TBS_VERT            0x0002
#define TBS_HORZ            0x0000
#define TBS_TOP             0x0004
#define TBS_BOTTOM          0x0000
#define TBS_LEFT            0x0004
#define TBS_RIGHT           0x0000
#define TBS_BOTH            0x0008
#define TBS_NOTICKS         0x0010
#define TBS_ENABLESELRANGE  0x0020
#define TBS_FIXEDLENGTH     0x0040
#define TBS_NOTHUMB         0x0080
#define TBS_TOOLTIPS        0x0100
#define TBS_REVERSED        0x0200
#define TBS_DOWNISLEFT      0x0400

/* UpDown Control */
#define UDS_WRAP            0x0001
#define UDS_SETBUDDYINT     0x0002
#define UDS_ALIGNRIGHT      0x0004
#define UDS_ALIGNLEFT       0x0008
#define UDS_AUTOBUDDY       0x0010
#define UDS_ARROWKEYS       0x0020
#define UDS_HORZ            0x0040
#define UDS_NOTHOUSANDS     0x0080
#define UDS_HOTTRACK        0x0100

/* Progressbar Control */
#define PBS_SMOOTH          0x01
#define PBS_VERTICAL        0x04
#define PBS_MARQUEE         0x08
#define PBS_SMOOTHREVERSE   0x10

/* Common Control Styles */
#define CCS_TOP             __MSABI_LONG(0x00000001)
#define CCS_NOMOVEY         __MSABI_LONG(0x00000002)
#define CCS_BOTTOM          __MSABI_LONG(0x00000003)
#define CCS_NORESIZE        __MSABI_LONG(0x00000004)
#define CCS_NOPARENTALIGN   __MSABI_LONG(0x00000008)
#define CCS_ADJUSTABLE      __MSABI_LONG(0x00000020)
#define CCS_NODIVIDER       __MSABI_LONG(0x00000040)
#define CCS_VERT            __MSABI_LONG(0x00000080)
#define CCS_LEFT            (CCS_VERT | CCS_TOP)
#define CCS_RIGHT           (CCS_VERT | CCS_BOTTOM)
#define CCS_NOMOVEX         (CCS_VERT | CCS_NOMOVEY)

/* Listview Control */
#define LVS_ICON            0x0000
#define LVS_REPORT          0x0001
#define LVS_SMALLICON       0x0002
#define LVS_LIST            0x0003
#define LVS_TYPEMASK        0x0003
#define LVS_SINGLESEL       0x0004
#define LVS_SHOWSELALWAYS   0x0008
#define LVS_SORTASCENDING   0x0010
#define LVS_SORTDESCENDING  0x0020
#define LVS_SHAREIMAGELISTS 0x0040
#define LVS_NOLABELWRAP     0x0080
#define LVS_AUTOARRANGE     0x0100
#define LVS_EDITLABELS      0x0200
#define LVS_OWNERDATA       0x1000
#define LVS_NOSCROLL        0x2000
#define LVS_TYPESTYLEMASK   0xfc00
#define LVS_ALIGNTOP        0x0000
#define LVS_ALIGNLEFT       0x0800
#define LVS_ALIGNMASK       0x0c00
#define LVS_OWNERDRAWFIXED  0x0400
#define LVS_NOCOLUMNHEADER  0x4000
#define LVS_NOSORTHEADER    0x8000

/* Treeview Control */
#define TVS_HASBUTTONS      0x0001
#define TVS_HASLINES        0x0002
#define TVS_LINESATROOT     0x0004
#define TVS_EDITLABELS      0x0008
#define TVS_DISABLEDRAGDROP 0x0010
#define TVS_SHOWSELALWAYS   0x0020
#define TVS_RTLREADING      0x0040
#define TVS_NOTOOLTIPS      0x0080
#define TVS_CHECKBOXES      0x0100
#define TVS_TRACKSELECT     0x0200
#define TVS_SINGLEEXPAND    0x0400
#define TVS_INFOTIP         0x0800
#define TVS_FULLROWSELECT   0x1000
#define TVS_NOSCROLL        0x2000
#define TVS_NONEVENHEIGHT   0x4000
#define TVS_NOHSCROLL       0x8000

/* Tab Control */
#define TCS_SCROLLOPPOSITE  0x0001   /* assumes multiline tab */
#define TCS_BOTTOM          0x0002
#define TCS_RIGHT           0x0002
#define TCS_MULTISELECT     0x0004  /* allow multi-select in button mode */
#define TCS_FLATBUTTONS     0x0008
#define TCS_FORCEICONLEFT   0x0010
#define TCS_FORCELABELLEFT  0x0020
#define TCS_HOTTRACK        0x0040
#define TCS_VERTICAL        0x0080
#define TCS_TABS            0x0000
#define TCS_BUTTONS         0x0100
#define TCS_SINGLELINE      0x0000
#define TCS_MULTILINE       0x0200
#define TCS_RIGHTJUSTIFY    0x0000
#define TCS_FIXEDWIDTH      0x0400
#define TCS_RAGGEDRIGHT     0x0800
#define TCS_FOCUSONBUTTONDOWN 0x1000
#define TCS_OWNERDRAWFIXED  0x2000
#define TCS_TOOLTIPS        0x4000
#define TCS_FOCUSNEVER      0x8000

/* Animate Control */
#define ACS_CENTER          0x0001
#define ACS_TRANSPARENT     0x0002
#define ACS_AUTOPLAY        0x0004
#define ACS_TIMER           0x0008  /* no threads, just timers */

/* Month Calendar Control */
#define MCS_DAYSTATE        0x0001
#define MCS_MULTISELECT     0x0002
#define MCS_WEEKNUMBERS     0x0004
#define MCS_NOTODAY         0x0010
#define MCS_NOTODAYCIRCLE   0x0008
#define MCS_NOTRAILINGDATES 0x0040

/* Datetime Control */
#define DTS_SHORTDATEFORMAT 0x0000
#define DTS_UPDOWN          0x0001
#define DTS_SHOWNONE        0x0002
#define DTS_LONGDATEFORMAT  0x0004
#define DTS_TIMEFORMAT      0x0009
#define DTS_APPCANPARSE     0x0010
#define DTS_RIGHTALIGN      0x0020

/* Pager Control */
#define PGS_VERT            0x00000000
#define PGS_HORZ            0x00000001
#define PGS_AUTOSCROLL      0x00000002
#define PGS_DRAGNDROP       0x00000004

/* Native Font Control */
#define NFS_EDIT            0x0001
#define NFS_STATIC          0x0002
#define NFS_LISTCOMBO       0x0004
#define NFS_BUTTON          0x0008
#define NFS_ALL             0x0010
#define NFS_USEFONTASSOC    0x0020
