 
#ifndef __dl_icon_h
#define __dl_icon_h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __dl_wimp_h
#include "Wimp.h"
#endif
#ifndef __dl_dragaspr_h
#include "DragASpr.h"
#endif
extern icon_handle Icon_BarIcon(char *spritename, window_handle pos);
extern icon_handle Icon_BarIconUser(char *spritename, window_handle pos,
unsigned int *area);
extern BOOL Icon_GetSelect(window_handle window, icon_handle icon);
extern BOOL Icon_GetShade(window_handle window, icon_handle icon);
extern void Icon_SetSelect(window_handle window, icon_handle icon, int flag);
extern void Icon_Select(window_handle window, icon_handle icon);
extern void Icon_Deselect(window_handle window, icon_handle icon);
extern void Icon_SetShade(window_handle window, icon_handle icon, int flag);
extern void Icon_Shade(window_handle window, icon_handle icon);
extern void Icon_Unshade(window_handle window, icon_handle icon);
extern void Icon_SetForeColour(window_handle window, icon_handle icon,
int wimpcolour);
extern void Icon_SetBackColour(window_handle window, icon_handle icon,
int wimpcolour);
extern void Icon_ForceWindowRedraw(window_handle window, icon_handle icon);
#define Icon_ForceRedraw(wind, icon) Wimp_SetIconState(wind, icon, 0, 0);
extern void Icon_SetCaret(window_handle window, icon_handle icon);
extern void Icon_LoseCaret(window_handle window, icon_handle icon);
extern void Icon_SetInteger(window_handle w, icon_handle i, int value);
extern void Icon_SetDouble(window_handle w, icon_handle i,
double value, int decimalplaces);
extern void Icon_SetText(window_handle w, icon_handle i, char *text);
extern void Icon_SetTextRJ(window_handle w, icon_handle i, char *text);
extern void Icon_printf(window_handle window, icon_handle icon,
char *format, ...);
extern double Icon_GetDouble(window_handle w, icon_handle i);
extern int Icon_GetInteger(window_handle w, icon_handle i);
extern void Icon_GetText(window_handle w, icon_handle i, char *text);
extern char *Icon_GetTextPtr(window_handle, icon_handle);
#define Icon_SetFlags(window, icon, flags, set) \
Wimp_SetIconState((window), (icon), ((set) ? (flags) : 0), (flags))
#define Icon_SetFgCol(w, i, col) \
Wimp_SetIconState((w), (i), (col) * icon_FORECOLOUR, 0xF * icon_FORECOLOUR)
#define Icon_SetBgCol(w, i, col) \
Wimp_SetIconState((w), (i), \
(unsigned) (col) * (unsigned) icon_BACKCOLOUR, \
(unsigned) 0xF * (unsigned) icon_BACKCOLOUR)
extern void Icon_ShadeGroup(window_handle window, 
icon_handle icons[], 
BOOL shade);
extern void Icon_SelectGroup(window_handle window, 
icon_handle icons[], 
BOOL select);
extern int Icon_GetFgCol(icon_block *icon);
extern int Icon_GetBgCol(icon_block *icon);
extern void Icon_SetRadios(window_handle window,
icon_handle first, icon_handle last,
icon_handle onradio);
extern int Icon_WhichRadio(window_handle window,
icon_handle first, icon_handle last);
extern int Icon_WhichRadioInEsg(window_handle wh, int esg);
extern void Icon_ClickWait(int waittime);
extern void Icon_StartDrag(window_handle window, icon_handle icon);
#define Icon_StartSolidDrag DragASprite_DragIcon
extern void Icon_DisposeIndData(icon_data *data, icon_flags flags);
extern void Icon_FileIcon(window_handle window, icon_handle icon, int filetype);
extern void Icon_ScreenPos(window_handle window,
icon_handle icon,
wimp_rect *rect);
extern int Icon_SetSlider(window_handle window,
icon_handle baseicon, icon_handle slidericon,
int sliderpos);
extern int Icon_UpdateSlider(window_handle window,
icon_handle baseicon, icon_handle slidericon,
int lastpos);
extern int Icon_DragSlider(window_handle window,
icon_handle baseicon, icon_handle slidericon);
extern int Icon_ReadSlider(window_handle window,
icon_handle baseicon, icon_handle slidericon);
typedef struct {
window_handle window;
icon_handle texticon;
icon_handle incrementicon;
icon_handle decrementicon;
BOOL loop;
unsigned int step;
int min;
int max;
} icon_incdecblock;
extern icon_incdecblock *Icon_InitIncDecHandler(
const window_handle window,
const icon_handle texticon,
const icon_handle incrementicon,
const icon_handle decrementicon,
const BOOL loop,
const unsigned int step,
const int min,
const int max,
const int start);
extern BOOL Icon_ReleaseIncDecHandler(icon_incdecblock *incdecblock);
extern void Icon_AlterValidation(window_handle window, icon_handle icon,
char *newvalidation);
extern BOOL Icon_ButtonIsHeld(void);
#ifdef __cplusplus
}
#endif
#endif
