diff options
Diffstat (limited to 'binutils-2.24/binutils/windint.h')
-rw-r--r-- | binutils-2.24/binutils/windint.h | 1098 |
1 files changed, 0 insertions, 1098 deletions
diff --git a/binutils-2.24/binutils/windint.h b/binutils-2.24/binutils/windint.h deleted file mode 100644 index 0a758995..00000000 --- a/binutils-2.24/binutils/windint.h +++ /dev/null @@ -1,1098 +0,0 @@ -/* windint.h -- internal header file for windres program. - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2011 - Free Software Foundation, Inc. - Written by Kai Tietz, Onevision. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include "winduni.h" - -#ifndef WINDINT_H -#define WINDINT_H - -/* Use bfd_size_type to ensure a sufficient number of bits. */ -#ifndef DEFINED_RC_UINT_TYPE -#define DEFINED_RC_UINT_TYPE -typedef bfd_size_type rc_uint_type; -#endif - -/* Resource directory structure. */ - -typedef struct res_hdr -{ - rc_uint_type data_size; - rc_uint_type header_size; -} res_hdr; - -struct __attribute__ ((__packed__)) bin_res_hdr -{ - bfd_byte data_size[4]; - bfd_byte header_size[4]; -}; -#define BIN_RES_HDR_SIZE 8 - -struct __attribute__ ((__packed__)) bin_res_id -{ - bfd_byte sig[2]; /* Has to be 0xffff for unnamed ids. */ - bfd_byte id[2]; -}; -#define BIN_RES_ID 4 - -/* This structure is used when converting resource information to - binary. */ - -typedef struct bindata -{ - /* Next data. */ - struct bindata *next; - /* Length of data. */ - rc_uint_type length; - /* Data. */ - bfd_byte *data; -} bindata; - -/* This structure is used when converting resource information to - coff. */ -typedef struct coff_res_data -{ - /* Next data. */ - struct coff_res_data *next; - /* Length of data. */ - rc_uint_type length; - /* Data. */ - const struct rc_res_resource *res; -} coff_res_data; - -/* We represent resources internally as a tree, similar to the tree - used in the .rsrc section of a COFF file. The root is a - rc_res_directory structure. */ - -typedef struct rc_res_directory -{ - /* Resource flags. According to the MS docs, this is currently - always zero. */ - rc_uint_type characteristics; - /* Time/date stamp. */ - rc_uint_type time; - /* Major version number. */ - rc_uint_type major; - /* Minor version number. */ - rc_uint_type minor; - /* Directory entries. */ - struct rc_res_entry *entries; -} rc_res_directory; - -/* A resource ID is stored in a rc_res_id structure. */ - -typedef struct rc_res_id -{ - /* Non-zero if this entry has a name rather than an ID. */ - rc_uint_type named : 1; - union - { - /* If the named field is non-zero, this is the name. */ - struct - { - /* Length of the name. */ - rc_uint_type length; - /* Pointer to the name, which is a Unicode string. */ - unichar *name; - } n; - /* If the named field is zero, this is the ID. */ - rc_uint_type id; - } u; -} rc_res_id; - -/* Each entry in the tree is a rc_res_entry structure. We mix - directories and resources because in a COFF file all entries in a - directory are sorted together, whether the entries are - subdirectories or resources. */ - -typedef struct rc_res_entry -{ - /* Next entry. */ - struct rc_res_entry *next; - /* Resource ID. */ - rc_res_id id; - /* Non-zero if this entry is a subdirectory rather than a leaf. */ - rc_uint_type subdir : 1; - union - { - /* If the subdir field is non-zero, this is a pointer to the - subdirectory. */ - rc_res_directory *dir; - /* If the subdir field is zero, this is a pointer to the resource - data. */ - struct rc_res_resource *res; - } u; -} rc_res_entry; - -/* Types of resources. */ - -enum rc_res_type -{ - RES_TYPE_UNINITIALIZED, - RES_TYPE_ACCELERATOR, - RES_TYPE_BITMAP, - RES_TYPE_CURSOR, - RES_TYPE_GROUP_CURSOR, - RES_TYPE_DIALOG, - RES_TYPE_FONT, - RES_TYPE_FONTDIR, - RES_TYPE_ICON, - RES_TYPE_GROUP_ICON, - RES_TYPE_MENU, - RES_TYPE_MESSAGETABLE, - RES_TYPE_RCDATA, - RES_TYPE_STRINGTABLE, - RES_TYPE_USERDATA, - RES_TYPE_VERSIONINFO, - RES_TYPE_DLGINCLUDE, - RES_TYPE_PLUGPLAY, - RES_TYPE_VXD, - RES_TYPE_ANICURSOR, - RES_TYPE_ANIICON, - RES_TYPE_DLGINIT, - RES_TYPE_TOOLBAR -}; - -/* A res file and a COFF file store information differently. The - res_info structures holds data which in a res file is stored with - each resource, but in a COFF file is stored elsewhere. */ - -typedef struct rc_res_res_info -{ - /* Language. In a COFF file, the third level of the directory is - keyed by the language, so the language of a resource is defined - by its location in the resource tree. */ - rc_uint_type language; - /* Characteristics of the resource. Entirely user defined. In a - COFF file, the rc_res_directory structure has a characteristics - field, but I don't know if it's related to the one in the res - file. */ - rc_uint_type characteristics; - /* Version of the resource. Entirely user defined. In a COFF file, - the rc_res_directory structure has a characteristics field, but I - don't know if it's related to the one in the res file. */ - rc_uint_type version; - /* Memory flags. This is a combination of the MEMFLAG values - defined below. Most of these values are historical, and are not - meaningful for win32. I don't think there is any way to store - this information in a COFF file. */ - rc_uint_type memflags; -} rc_res_res_info; - -/* Binary layout of rc_res_info. */ - -struct __attribute__ ((__packed__)) bin_res_info -{ - bfd_byte version[4]; - bfd_byte memflags[2]; - bfd_byte language[2]; - bfd_byte version2[4]; - bfd_byte characteristics[4]; -}; -#define BIN_RES_INFO_SIZE 16 - -/* Each resource in a COFF file has some information which can does - not appear in a res file. */ - -typedef struct rc_res_coff_info -{ - /* The code page used for the data. I don't really know what this - should be. It has something todo with ASCII to Unicode encoding. */ - rc_uint_type codepage; - /* A resource entry in a COFF file has a reserved field, which we - record here when reading a COFF file. When writing a COFF file, - we set this field to zero. */ - rc_uint_type reserved; -} rc_res_coff_info; - -/* Resource data is stored in a rc_res_resource structure. */ - -typedef struct rc_res_resource -{ - /* The type of resource. */ - enum rc_res_type type; - /* The data for the resource. */ - union - { - struct - { - rc_uint_type length; - const bfd_byte *data; - } data; - struct rc_accelerator *acc; - struct rc_cursor *cursor; - struct rc_group_cursor *group_cursor; - struct rc_dialog *dialog; - struct rc_fontdir *fontdir; - struct rc_group_icon *group_icon; - struct rc_menu *menu; - struct rc_rcdata_item *rcdata; - struct rc_stringtable *stringtable; - struct rc_rcdata_item *userdata; - struct rc_versioninfo *versioninfo; - struct rc_toolbar *toolbar; - } u; - /* Information from a res file. */ - struct rc_res_res_info res_info; - /* Information from a COFF file. */ - rc_res_coff_info coff_info; -} rc_res_resource; - -#define SUBLANG_SHIFT 10 - -/* Memory flags in the memflags field of a rc_res_resource. */ - -#define MEMFLAG_MOVEABLE 0x10 -#define MEMFLAG_PURE 0x20 -#define MEMFLAG_PRELOAD 0x40 -#define MEMFLAG_DISCARDABLE 0x1000 - -/* Standard resource type codes. These are used in the ID field of a - rc_res_entry structure. */ - -#define RT_CURSOR 1 -#define RT_BITMAP 2 -#define RT_ICON 3 -#define RT_MENU 4 -#define RT_DIALOG 5 -#define RT_STRING 6 -#define RT_FONTDIR 7 -#define RT_FONT 8 -#define RT_ACCELERATOR 9 -#define RT_RCDATA 10 -#define RT_MESSAGETABLE 11 -#define RT_GROUP_CURSOR 12 -#define RT_GROUP_ICON 14 -#define RT_VERSION 16 -#define RT_DLGINCLUDE 17 -#define RT_PLUGPLAY 19 -#define RT_VXD 20 -#define RT_ANICURSOR 21 -#define RT_ANIICON 22 -#define RT_HTML 23 -#define RT_MANIFEST 24 -#define RT_DLGINIT 240 -#define RT_TOOLBAR 241 - -/* An accelerator resource is a linked list of these structures. */ - -typedef struct rc_accelerator -{ - /* Next accelerator. */ - struct rc_accelerator *next; - /* Flags. A combination of the ACC values defined below. */ - rc_uint_type flags; - /* Key value. */ - rc_uint_type key; - /* Resource ID. */ - rc_uint_type id; -} rc_accelerator; - -struct __attribute__ ((__packed__)) bin_accelerator -{ - bfd_byte flags[2]; - bfd_byte key[2]; - bfd_byte id[2]; - bfd_byte pad[2]; -}; -#define BIN_ACCELERATOR_SIZE 8 - -/* Accelerator flags in the flags field of a rc_accelerator. - These are the same values that appear in a res file. I hope. */ - -#define ACC_VIRTKEY 0x01 -#define ACC_NOINVERT 0x02 -#define ACC_SHIFT 0x04 -#define ACC_CONTROL 0x08 -#define ACC_ALT 0x10 -#define ACC_LAST 0x80 - -/* A cursor resource. */ - -typedef struct rc_cursor -{ - /* X coordinate of hotspot. */ - bfd_signed_vma xhotspot; - /* Y coordinate of hotspot. */ - bfd_signed_vma yhotspot; - /* Length of bitmap data. */ - rc_uint_type length; - /* Data. */ - const bfd_byte *data; -} rc_cursor; - -struct __attribute__ ((__packed__)) bin_cursor -{ - bfd_byte xhotspot[2]; - bfd_byte yhotspot[2]; -}; -#define BIN_CURSOR_SIZE 4 - -/* A group_cursor resource is a list of rc_i_group_cursor structures. */ - -typedef struct rc_group_cursor -{ - /* Next cursor in group. */ - struct rc_group_cursor *next; - /* Width. */ - rc_uint_type width; - /* Height. */ - rc_uint_type height; - /* Planes. */ - rc_uint_type planes; - /* Bits per pixel. */ - rc_uint_type bits; - /* Number of bytes in cursor resource. */ - rc_uint_type bytes; - /* Index of cursor resource. */ - rc_uint_type index; -} rc_group_cursor; - -struct __attribute__ ((__packed__)) bin_group_cursor_item -{ - bfd_byte width[2]; - bfd_byte height[2]; - bfd_byte planes[2]; - bfd_byte bits[2]; - bfd_byte bytes[4]; - bfd_byte index[2]; -}; -#define BIN_GROUP_CURSOR_ITEM_SIZE 14 - -struct __attribute__ ((__packed__)) bin_group_cursor -{ - bfd_byte sig1[2]; - bfd_byte sig2[2]; - bfd_byte nitems[2]; - /* struct bin_group_cursor_item item[nitems]; */ -}; -#define BIN_GROUP_CURSOR_SIZE 6 - -/* A dialog resource. */ - -typedef struct rc_dialog -{ - /* Basic window style. */ - unsigned int style; - /* Extended window style. */ - rc_uint_type exstyle; - /* X coordinate. */ - rc_uint_type x; - /* Y coordinate. */ - rc_uint_type y; - /* Width. */ - rc_uint_type width; - /* Height. */ - rc_uint_type height; - /* Menu name. */ - rc_res_id menu; - /* Class name. */ - rc_res_id class; - /* Caption. */ - unichar *caption; - /* Font point size. */ - rc_uint_type pointsize; - /* Font name. */ - unichar *font; - /* Extended information for a dialogex. */ - struct rc_dialog_ex *ex; - /* Controls. */ - struct rc_dialog_control *controls; -} rc_dialog; - -struct __attribute__ ((__packed__)) bin_dialog -{ - bfd_byte style[4]; - bfd_byte exstyle[4]; - bfd_byte off[2]; - bfd_byte x[2]; - bfd_byte y[2]; - bfd_byte width[2]; - bfd_byte height[2]; -}; -#define BIN_DIALOG_SIZE 18 - -/* An extended dialog has additional information. */ - -typedef struct rc_dialog_ex -{ - /* Help ID. */ - rc_uint_type help; - /* Font weight. */ - rc_uint_type weight; - /* Whether the font is italic. */ - bfd_byte italic; - /* Character set. */ - bfd_byte charset; -} rc_dialog_ex; - -struct __attribute__ ((__packed__)) bin_dialogex -{ - bfd_byte sig1[2]; - bfd_byte sig2[2]; - bfd_byte help[4]; - bfd_byte exstyle[4]; - bfd_byte style[4]; - bfd_byte off[2]; - bfd_byte x[2]; - bfd_byte y[2]; - bfd_byte width[2]; - bfd_byte height[2]; -}; -#define BIN_DIALOGEX_SIZE 26 - -struct __attribute__ ((__packed__)) bin_dialogfont -{ - bfd_byte pointsize[2]; -}; -#define BIN_DIALOGFONT_SIZE 2 - -struct __attribute__ ((__packed__)) bin_dialogexfont -{ - bfd_byte pointsize[2]; - bfd_byte weight[2]; - bfd_byte italic[1]; - bfd_byte charset[1]; -}; -#define BIN_DIALOGEXFONT_SIZE 6 - -/* Window style flags, from the winsup Defines.h header file. These - can appear in the style field of a rc_dialog or a rc_dialog_control. */ - -#define CW_USEDEFAULT 0x80000000 -#define WS_BORDER 0x800000L -#define WS_CAPTION 0xc00000L -#define WS_CHILD 0x40000000L -#define WS_CHILDWINDOW 0x40000000L -#define WS_CLIPCHILDREN 0x2000000L -#define WS_CLIPSIBLINGS 0x4000000L -#define WS_DISABLED 0x8000000L -#define WS_DLGFRAME 0x400000L -#define WS_GROUP 0x20000L -#define WS_HSCROLL 0x100000L -#define WS_ICONIC 0x20000000L -#define WS_MAXIMIZE 0x1000000L -#define WS_MAXIMIZEBOX 0x10000L -#define WS_MINIMIZE 0x20000000L -#define WS_MINIMIZEBOX 0x20000L -#define WS_OVERLAPPED 0L -#define WS_OVERLAPPEDWINDOW 0xcf0000L -#define WS_POPUP 0x80000000L -#define WS_POPUPWINDOW 0x80880000L -#define WS_SIZEBOX 0x40000L -#define WS_SYSMENU 0x80000L -#define WS_TABSTOP 0x10000L -#define WS_THICKFRAME 0x40000L -#define WS_TILED 0L -#define WS_TILEDWINDOW 0xcf0000L -#define WS_VISIBLE 0x10000000L -#define WS_VSCROLL 0x200000L -#define MDIS_ALLCHILDSTYLES 0x1 -#define BS_3STATE 0x5L -#define BS_AUTO3STATE 0x6L -#define BS_AUTOCHECKBOX 0x3L -#define BS_AUTORADIOBUTTON 0x9L -#define BS_BITMAP 0x80L -#define BS_BOTTOM 0x800L -#define BS_CENTER 0x300L -#define BS_CHECKBOX 0x2L -#define BS_DEFPUSHBUTTON 0x1L -#define BS_GROUPBOX 0x7L -#define BS_ICON 0x40L -#define BS_LEFT 0x100L -#define BS_LEFTTEXT 0x20L -#define BS_MULTILINE 0x2000L -#define BS_NOTIFY 0x4000L -#define BS_OWNERDRAW 0xbL -#define BS_PUSHBOX 0xcL /* FIXME! What should this be? */ -#define BS_PUSHBUTTON 0L -#define BS_PUSHLIKE 0x1000L -#define BS_RADIOBUTTON 0x4L -#define BS_RIGHT 0x200L -#define BS_RIGHTBUTTON 0x20L -#define BS_TEXT 0L -#define BS_TOP 0x400L -#define BS_USERBUTTON 0x8L -#define BS_VCENTER 0xc00L -#define CBS_AUTOHSCROLL 0x40L -#define CBS_DISABLENOSCROLL 0x800L -#define CBS_DROPDOWN 0x2L -#define CBS_DROPDOWNLIST 0x3L -#define CBS_HASSTRINGS 0x200L -#define CBS_LOWERCASE 0x4000L -#define CBS_NOINTEGRALHEIGHT 0x400L -#define CBS_OEMCONVERT 0x80L -#define CBS_OWNERDRAWFIXED 0x10L -#define CBS_OWNERDRAWVARIABLE 0x20L -#define CBS_SIMPLE 0x1L -#define CBS_SORT 0x100L -#define CBS_UPPERCASE 0x2000L -#define ES_AUTOHSCROLL 0x80L -#define ES_AUTOVSCROLL 0x40L -#define ES_CENTER 0x1L -#define ES_LEFT 0L -#define ES_LOWERCASE 0x10L -#define ES_MULTILINE 0x4L -#define ES_NOHIDESEL 0x100L -#define ES_NUMBER 0x2000L -#define ES_OEMCONVERT 0x400L -#define ES_PASSWORD 0x20L -#define ES_READONLY 0x800L -#define ES_RIGHT 0x2L -#define ES_UPPERCASE 0x8L -#define ES_WANTRETURN 0x1000L -#define LBS_DISABLENOSCROLL 0x1000L -#define LBS_EXTENDEDSEL 0x800L -#define LBS_HASSTRINGS 0x40L -#define LBS_MULTICOLUMN 0x200L -#define LBS_MULTIPLESEL 0x8L -#define LBS_NODATA 0x2000L -#define LBS_NOINTEGRALHEIGHT 0x100L -#define LBS_NOREDRAW 0x4L -#define LBS_NOSEL 0x4000L -#define LBS_NOTIFY 0x1L -#define LBS_OWNERDRAWFIXED 0x10L -#define LBS_OWNERDRAWVARIABLE 0x20L -#define LBS_SORT 0x2L -#define LBS_STANDARD 0xa00003L -#define LBS_USETABSTOPS 0x80L -#define LBS_WANTKEYBOARDINPUT 0x400L -#define SBS_BOTTOMALIGN 0x4L -#define SBS_HORZ 0L -#define SBS_LEFTALIGN 0x2L -#define SBS_RIGHTALIGN 0x4L -#define SBS_SIZEBOX 0x8L -#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x4L -#define SBS_SIZEBOXTOPLEFTALIGN 0x2L -#define SBS_SIZEGRIP 0x10L -#define SBS_TOPALIGN 0x2L -#define SBS_VERT 0x1L -#define SS_BITMAP 0xeL -#define SS_BLACKFRAME 0x7L -#define SS_BLACKRECT 0x4L -#define SS_CENTER 0x1L -#define SS_CENTERIMAGE 0x200L -#define SS_ENHMETAFILE 0xfL -#define SS_ETCHEDFRAME 0x12L -#define SS_ETCHEDHORZ 0x10L -#define SS_ETCHEDVERT 0x11L -#define SS_GRAYFRAME 0x8L -#define SS_GRAYRECT 0x5L -#define SS_ICON 0x3L -#define SS_LEFT 0L -#define SS_LEFTNOWORDWRAP 0xcL -#define SS_NOPREFIX 0x80L -#define SS_NOTIFY 0x100L -#define SS_OWNERDRAW 0xdL -#define SS_REALSIZEIMAGE 0x800L -#define SS_RIGHT 0x2L -#define SS_RIGHTJUST 0x400L -#define SS_SIMPLE 0xbL -#define SS_SUNKEN 0x1000L -#define SS_USERITEM 0xaL -#define SS_WHITEFRAME 0x9L -#define SS_WHITERECT 0x6L -#define DS_3DLOOK 0x4L -#define DS_ABSALIGN 0x1L -#define DS_CENTER 0x800L -#define DS_CENTERMOUSE 0x1000L -#define DS_CONTEXTHELP 0x2000L -#define DS_CONTROL 0x400L -#define DS_FIXEDSYS 0x8L -#define DS_LOCALEDIT 0x20L -#define DS_MODALFRAME 0x80L -#define DS_NOFAILCREATE 0x10L -#define DS_NOIDLEMSG 0x100L -#define DS_SETFONT 0x40L -#define DS_SETFOREGROUND 0x200L -#define DS_SYSMODAL 0x2L - -/* A dialog control. */ - -typedef struct rc_dialog_control -{ - /* Next control. */ - struct rc_dialog_control *next; - /* ID. */ - rc_uint_type id; - /* Style. */ - rc_uint_type style; - /* Extended style. */ - rc_uint_type exstyle; - /* X coordinate. */ - rc_uint_type x; - /* Y coordinate. */ - rc_uint_type y; - /* Width. */ - rc_uint_type width; - /* Height. */ - rc_uint_type height; - /* Class name. */ - rc_res_id class; - /* Associated text. */ - rc_res_id text; - /* Extra data for the window procedure. */ - struct rc_rcdata_item *data; - /* Help ID. Only used in an extended dialog. */ - rc_uint_type help; -} rc_dialog_control; - -struct __attribute__ ((__packed__)) bin_dialog_control -{ - bfd_byte style[4]; - bfd_byte exstyle[4]; - bfd_byte x[2]; - bfd_byte y[2]; - bfd_byte width[2]; - bfd_byte height[2]; - bfd_byte id[2]; -}; -#define BIN_DIALOG_CONTROL_SIZE 18 - -struct __attribute__ ((__packed__)) bin_dialogex_control -{ - bfd_byte help[4]; - bfd_byte exstyle[4]; - bfd_byte style[4]; - bfd_byte x[2]; - bfd_byte y[2]; - bfd_byte width[2]; - bfd_byte height[2]; - bfd_byte id[4]; -}; -#define BIN_DIALOGEX_CONTROL_SIZE 24 - -/* Control classes. These can be used as the ID field in a rc_dialog_control. */ - -#define CTL_BUTTON 0x80 -#define CTL_EDIT 0x81 -#define CTL_STATIC 0x82 -#define CTL_LISTBOX 0x83 -#define CTL_SCROLLBAR 0x84 -#define CTL_COMBOBOX 0x85 - -/* A fontdir resource is a list of rc_fontdir. */ - -typedef struct rc_fontdir -{ - struct rc_fontdir *next; - /* Index of font entry. */ - rc_uint_type index; - /* Length of font information. */ - rc_uint_type length; - /* Font information. */ - const bfd_byte *data; -} rc_fontdir; - -struct __attribute__ ((__packed__)) bin_fontdir_item -{ - bfd_byte index[2]; - bfd_byte header[54]; - bfd_byte device_name[1]; - /* bfd_byte face_name[]; */ -}; - -/* A group_icon resource is a list of rc_group_icon. */ - -typedef struct rc_group_icon -{ - /* Next icon in group. */ - struct rc_group_icon *next; - /* Width. */ - bfd_byte width; - /* Height. */ - bfd_byte height; - /* Color count. */ - bfd_byte colors; - /* Planes. */ - rc_uint_type planes; - /* Bits per pixel. */ - rc_uint_type bits; - /* Number of bytes in cursor resource. */ - rc_uint_type bytes; - /* Index of cursor resource. */ - rc_uint_type index; -} rc_group_icon; - -struct __attribute__ ((__packed__)) bin_group_icon -{ - bfd_byte sig1[2]; - bfd_byte sig2[2]; - bfd_byte count[2]; -}; -#define BIN_GROUP_ICON_SIZE 6 - -struct __attribute__ ((__packed__)) bin_group_icon_item -{ - bfd_byte width[1]; - bfd_byte height[1]; - bfd_byte colors[1]; - bfd_byte pad[1]; - bfd_byte planes[2]; - bfd_byte bits[2]; - bfd_byte bytes[4]; - bfd_byte index[2]; -}; -#define BIN_GROUP_ICON_ITEM_SIZE 14 - -/* A menu resource. */ - -typedef struct rc_menu -{ - /* List of menuitems. */ - struct rc_menuitem *items; - /* Help ID. I don't think there is any way to set this in an rc - file, but it can appear in the binary format. */ - rc_uint_type help; -} rc_menu; - -struct __attribute__ ((__packed__)) bin_menu -{ - bfd_byte sig1[2]; - bfd_byte sig2[2]; -}; -#define BIN_MENU_SIZE 4 - -struct __attribute__ ((__packed__)) bin_menuex -{ - bfd_byte sig1[2]; - bfd_byte sig2[2]; - bfd_byte help[4]; -}; -#define BIN_MENUEX_SIZE 8 - -/* A menu resource is a list of rc_menuitem. */ - -typedef struct rc_menuitem -{ - /* Next menu item. */ - struct rc_menuitem *next; - /* Type. In a normal menu, rather than a menuex, this is the flags - field. */ - rc_uint_type type; - /* State. This is only used in a menuex. */ - rc_uint_type state; - /* Id. */ - rc_uint_type id; - /* Unicode text. */ - unichar *text; - /* Popup menu items for a popup. */ - struct rc_menuitem *popup; - /* Help ID. This is only used in a menuex. */ - rc_uint_type help; -} rc_menuitem; - -struct __attribute__ ((__packed__)) bin_menuitem -{ - bfd_byte flags[2]; - bfd_byte id[2]; -}; -#define BIN_MENUITEM_SIZE 4 -#define BIN_MENUITEM_POPUP_SIZE 2 - -struct __attribute__ ((__packed__)) bin_menuitemex -{ - bfd_byte type[4]; - bfd_byte state[4]; - bfd_byte id[4]; - bfd_byte flags[2]; - /* unicode text */ - /* if popup: align, bfd_byte help[4], align, bin_menuitemex[]; */ -}; -#define BIN_MENUITEMEX_SIZE 14 - -/* Menu item flags. These can appear in the flags field of a rc_menuitem. */ - -#define MENUITEM_GRAYED 0x001 -#define MENUITEM_INACTIVE 0x002 -#define MENUITEM_BITMAP 0x004 -#define MENUITEM_OWNERDRAW 0x100 -#define MENUITEM_CHECKED 0x008 -#define MENUITEM_POPUP 0x010 -#define MENUITEM_MENUBARBREAK 0x020 -#define MENUITEM_MENUBREAK 0x040 -#define MENUITEM_ENDMENU 0x080 -#define MENUITEM_HELP 0x4000 - -/* An rcdata resource is a pointer to a list of rc_rcdata_item. */ - -typedef struct rc_rcdata_item -{ - /* Next data item. */ - struct rc_rcdata_item *next; - /* Type of data. */ - enum - { - RCDATA_WORD, - RCDATA_DWORD, - RCDATA_STRING, - RCDATA_WSTRING, - RCDATA_BUFFER - } type; - union - { - rc_uint_type word; - rc_uint_type dword; - struct - { - rc_uint_type length; - const char *s; - } string; - struct - { - rc_uint_type length; - const unichar *w; - } wstring; - struct - { - rc_uint_type length; - const bfd_byte *data; - } buffer; - } u; -} rc_rcdata_item; - -/* A stringtable resource is a pointer to a rc_stringtable. */ - -typedef struct rc_stringtable -{ - /* Each stringtable resource is a list of 16 unicode strings. */ - struct - { - /* Length of string. */ - rc_uint_type length; - /* String data if length > 0. */ - unichar *string; - } strings[16]; -} rc_stringtable; - -/* A versioninfo resource points to a rc_versioninfo. */ - -typedef struct rc_versioninfo -{ - /* Fixed version information. */ - struct rc_fixed_versioninfo *fixed; - /* Variable version information. */ - struct rc_ver_info *var; -} rc_versioninfo; - -struct __attribute__ ((__packed__)) bin_versioninfo -{ - bfd_byte size[2]; - bfd_byte fixed_size[2]; - bfd_byte sig2[2]; -}; -#define BIN_VERSIONINFO_SIZE 6 - -/* The fixed portion of a versioninfo resource. */ - -typedef struct rc_fixed_versioninfo -{ - /* The file version, which is two 32 bit integers. */ - rc_uint_type file_version_ms; - rc_uint_type file_version_ls; - /* The product version, which is two 32 bit integers. */ - rc_uint_type product_version_ms; - rc_uint_type product_version_ls; - /* The file flags mask. */ - rc_uint_type file_flags_mask; - /* The file flags. */ - rc_uint_type file_flags; - /* The OS type. */ - rc_uint_type file_os; - /* The file type. */ - rc_uint_type file_type; - /* The file subtype. */ - rc_uint_type file_subtype; - /* The date, which in Windows is two 32 bit integers. */ - rc_uint_type file_date_ms; - rc_uint_type file_date_ls; -} rc_fixed_versioninfo; - -struct __attribute__ ((__packed__)) bin_fixed_versioninfo -{ - bfd_byte sig1[4]; - bfd_byte sig2[4]; - bfd_byte file_version[4]; - bfd_byte file_version_ls[4]; - bfd_byte product_version_ms[4]; - bfd_byte product_version_ls[4]; - bfd_byte file_flags_mask[4]; - bfd_byte file_flags[4]; - bfd_byte file_os[4]; - bfd_byte file_type[4]; - bfd_byte file_subtype[4]; - bfd_byte file_date_ms[4]; - bfd_byte file_date_ls[4]; -}; -#define BIN_FIXED_VERSIONINFO_SIZE 52 - -/* A list of string version information. */ - -typedef struct rc_ver_stringtable -{ - /* Next item. */ - struct rc_ver_stringtable *next; - /* Language. */ - unichar *language; - /* Strings. */ - struct rc_ver_stringinfo *strings; -} rc_ver_stringtable; - -/* A list of variable version information. */ - -typedef struct rc_ver_info -{ - /* Next item. */ - struct rc_ver_info *next; - /* Type of data. */ - enum { VERINFO_STRING, VERINFO_VAR } type; - union - { - /* StringFileInfo data. */ - struct - { - /* String tables. */ - struct rc_ver_stringtable *stringtables; - } string; - /* VarFileInfo data. */ - struct - { - /* Key. */ - unichar *key; - /* Values. */ - struct rc_ver_varinfo *var; - } var; - } u; -} rc_ver_info; - -struct __attribute__ ((__packed__)) bin_ver_info -{ - bfd_byte size[2]; - bfd_byte sig1[2]; - bfd_byte sig2[2]; -}; -#define BIN_VER_INFO_SIZE 6 - -/* A list of string version information. */ - -typedef struct rc_ver_stringinfo -{ - /* Next string. */ - struct rc_ver_stringinfo *next; - /* Key. */ - unichar *key; - /* Value. */ - unichar *value; -} rc_ver_stringinfo; - -/* A list of variable version information. */ - -typedef struct rc_ver_varinfo -{ - /* Next item. */ - struct rc_ver_varinfo *next; - /* Language ID. */ - rc_uint_type language; - /* Character set ID. */ - rc_uint_type charset; -} rc_ver_varinfo; - -typedef struct rc_toolbar_item -{ - struct rc_toolbar_item *next; - struct rc_toolbar_item *prev; - rc_res_id id; -} rc_toolbar_item; - -struct __attribute__ ((__packed__)) bin_messagetable_item -{ - bfd_byte length[2]; - bfd_byte flags[2]; - bfd_byte data[1]; -}; -#define BIN_MESSAGETABLE_ITEM_SIZE 4 - -#define MESSAGE_RESOURCE_UNICODE 0x0001 - -struct __attribute__ ((__packed__)) bin_messagetable_block -{ - bfd_byte lowid[4]; - bfd_byte highid[4]; - bfd_byte offset[4]; -}; -#define BIN_MESSAGETABLE_BLOCK_SIZE 12 - -struct __attribute__ ((__packed__)) bin_messagetable -{ - bfd_byte cblocks[4]; - struct bin_messagetable_block items[1]; -}; -#define BIN_MESSAGETABLE_SIZE 8 - -typedef struct rc_toolbar -{ - rc_uint_type button_width; - rc_uint_type button_height; - rc_uint_type nitems; - rc_toolbar_item *items; -} rc_toolbar; - -struct __attribute__ ((__packed__)) bin_toolbar -{ - bfd_byte button_width[4]; - bfd_byte button_height[4]; - bfd_byte nitems[4]; - /* { bfd_byte id[4]; } * nitems; */ -}; -#define BIN_TOOLBAR_SIZE 12 - -extern int target_is_bigendian; - -typedef struct windres_bfd -{ - bfd *abfd; - asection *sec; - rc_uint_type kind : 4; -} windres_bfd; - -#define WR_KIND_TARGET 0 -#define WR_KIND_BFD 1 -#define WR_KIND_BFD_BIN_L 2 -#define WR_KIND_BFD_BIN_B 3 - -#define WR_KIND(PTR) (PTR)->kind -#define WR_SECTION(PTR) (PTR)->sec -#define WR_BFD(PTR) (PTR)->abfd - -extern void set_windres_bfd_content (windres_bfd *, const void *, rc_uint_type, rc_uint_type); -extern void get_windres_bfd_content (windres_bfd *, void *, rc_uint_type, rc_uint_type); - -extern void windres_put_8 (windres_bfd *, void *, rc_uint_type); -extern void windres_put_16 (windres_bfd *, void *, rc_uint_type); -extern void windres_put_32 (windres_bfd *, void *, rc_uint_type); -extern rc_uint_type windres_get_8 (windres_bfd *, const void *, rc_uint_type); -extern rc_uint_type windres_get_16 (windres_bfd *, const void *, rc_uint_type); -extern rc_uint_type windres_get_32 (windres_bfd *, const void *, rc_uint_type); - -extern void set_windres_bfd (windres_bfd *, bfd *, asection *, rc_uint_type); -extern void set_windres_bfd_endianness (windres_bfd *, int); - -#endif |