OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [binutils/] [windint.h] - Blame information for rev 297

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
/* windint.h -- internal header file for windres program.
2
   Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007
3
   Free Software Foundation, Inc.
4
   Written by Kai Tietz, Onevision.
5
 
6
   This file is part of GNU Binutils.
7
 
8
   This program is free software; you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation; either version 3 of the License, or
11
   (at your option) any later version.
12
 
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
 
18
   You should have received a copy of the GNU General Public License
19
   along with this program; if not, write to the Free Software
20
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
21
   02110-1301, USA.  */
22
 
23
#include "winduni.h"
24
 
25
#ifndef WINDINT_H
26
#define WINDINT_H
27
 
28
/* Use bfd_size_type to ensure a sufficient number of bits.  */
29
#ifndef DEFINED_RC_UINT_TYPE
30
#define DEFINED_RC_UINT_TYPE
31
typedef bfd_size_type rc_uint_type;
32
#endif
33
 
34
/* Resource directory structure.  */
35
 
36
typedef struct res_hdr
37
{
38
  rc_uint_type data_size;
39
  rc_uint_type header_size;
40
} res_hdr;
41
 
42
struct __attribute__ ((__packed__)) bin_res_hdr
43
{
44
  bfd_byte data_size[4];
45
  bfd_byte header_size[4];
46
};
47
#define BIN_RES_HDR_SIZE 8
48
 
49
struct __attribute__ ((__packed__)) bin_res_id
50
{
51
  bfd_byte sig[2]; /* Has to be 0xffff for unnamed ids.  */
52
  bfd_byte id[2];
53
};
54
#define BIN_RES_ID  4
55
 
56
/* This structure is used when converting resource information to
57
   binary.  */
58
 
59
typedef struct bindata
60
{
61
  /* Next data.  */
62
  struct bindata *next;
63
  /* Length of data.  */
64
  rc_uint_type length;
65
  /* Data.  */
66
  bfd_byte *data;
67
} bindata;
68
 
69
/* This structure is used when converting resource information to
70
   coff.  */
71
typedef struct coff_res_data
72
{
73
  /* Next data.  */
74
  struct coff_res_data *next;
75
  /* Length of data.  */
76
  rc_uint_type length;
77
  /* Data.  */
78
  const struct rc_res_resource *res;
79
} coff_res_data;
80
 
81
/* We represent resources internally as a tree, similar to the tree
82
   used in the .rsrc section of a COFF file.  The root is a
83
   rc_res_directory structure.  */
84
 
85
typedef struct rc_res_directory
86
{
87
  /* Resource flags.  According to the MS docs, this is currently
88
     always zero.  */
89
  rc_uint_type characteristics;
90
  /* Time/date stamp.  */
91
  rc_uint_type time;
92
  /* Major version number.  */
93
  rc_uint_type major;
94
  /* Minor version number.  */
95
  rc_uint_type minor;
96
  /* Directory entries.  */
97
  struct rc_res_entry *entries;
98
} rc_res_directory;
99
 
100
/* A resource ID is stored in a rc_res_id structure.  */
101
 
102
typedef struct rc_res_id
103
{
104
  /* Non-zero if this entry has a name rather than an ID.  */
105
  rc_uint_type named : 1;
106
  union
107
  {
108
    /* If the named field is non-zero, this is the name.  */
109
    struct
110
    {
111
      /* Length of the name.  */
112
      rc_uint_type length;
113
      /* Pointer to the name, which is a Unicode string.  */
114
      unichar *name;
115
    } n;
116
    /* If the named field is zero, this is the ID.  */
117
    rc_uint_type id;
118
  } u;
119
} rc_res_id;
120
 
121
/* Each entry in the tree is a rc_res_entry structure.  We mix
122
   directories and resources because in a COFF file all entries in a
123
   directory are sorted together, whether the entries are
124
   subdirectories or resources.  */
125
 
126
typedef struct rc_res_entry
127
{
128
  /* Next entry.  */
129
  struct rc_res_entry *next;
130
  /* Resource ID.  */
131
  rc_res_id id;
132
  /* Non-zero if this entry is a subdirectory rather than a leaf.  */
133
  rc_uint_type subdir : 1;
134
  union
135
  {
136
    /* If the subdir field is non-zero, this is a pointer to the
137
       subdirectory.  */
138
    rc_res_directory *dir;
139
    /* If the subdir field is zero, this is a pointer to the resource
140
       data.  */
141
    struct rc_res_resource *res;
142
  } u;
143
} rc_res_entry;
144
 
145
/* Types of resources.  */
146
 
147
enum rc_res_type
148
{
149
  RES_TYPE_UNINITIALIZED,
150
  RES_TYPE_ACCELERATOR,
151
  RES_TYPE_BITMAP,
152
  RES_TYPE_CURSOR,
153
  RES_TYPE_GROUP_CURSOR,
154
  RES_TYPE_DIALOG,
155
  RES_TYPE_FONT,
156
  RES_TYPE_FONTDIR,
157
  RES_TYPE_ICON,
158
  RES_TYPE_GROUP_ICON,
159
  RES_TYPE_MENU,
160
  RES_TYPE_MESSAGETABLE,
161
  RES_TYPE_RCDATA,
162
  RES_TYPE_STRINGTABLE,
163
  RES_TYPE_USERDATA,
164
  RES_TYPE_VERSIONINFO,
165
  RES_TYPE_DLGINCLUDE,
166
  RES_TYPE_PLUGPLAY,
167
  RES_TYPE_VXD,
168
  RES_TYPE_ANICURSOR,
169
  RES_TYPE_ANIICON,
170
  RES_TYPE_DLGINIT,
171
  RES_TYPE_TOOLBAR
172
};
173
 
174
/* A res file and a COFF file store information differently.  The
175
   res_info structures holds data which in a res file is stored with
176
   each resource, but in a COFF file is stored elsewhere.  */
177
 
178
typedef struct rc_res_res_info
179
{
180
  /* Language.  In a COFF file, the third level of the directory is
181
     keyed by the language, so the language of a resource is defined
182
     by its location in the resource tree.  */
183
  rc_uint_type language;
184
  /* Characteristics of the resource.  Entirely user defined.  In a
185
     COFF file, the rc_res_directory structure has a characteristics
186
     field, but I don't know if it's related to the one in the res
187
     file.  */
188
  rc_uint_type characteristics;
189
  /* Version of the resource.  Entirely user defined.  In a COFF file,
190
     the rc_res_directory structure has a characteristics field, but I
191
     don't know if it's related to the one in the res file.  */
192
  rc_uint_type version;
193
  /* Memory flags.  This is a combination of the MEMFLAG values
194
     defined below.  Most of these values are historical, and are not
195
     meaningful for win32.  I don't think there is any way to store
196
     this information in a COFF file.  */
197
  rc_uint_type memflags;
198
} rc_res_res_info;
199
 
200
/* Binary layout of rc_res_info.  */
201
 
202
struct __attribute__ ((__packed__)) bin_res_info
203
{
204
  bfd_byte version[4];
205
  bfd_byte memflags[2];
206
  bfd_byte language[2];
207
  bfd_byte version2[4];
208
  bfd_byte characteristics[4];
209
};
210
#define BIN_RES_INFO_SIZE 16
211
 
212
/* Each resource in a COFF file has some information which can does
213
   not appear in a res file.  */
214
 
215
typedef struct rc_res_coff_info
216
{
217
  /* The code page used for the data.  I don't really know what this
218
     should be.  It has something todo with ASCII to Unicode encoding.  */
219
  rc_uint_type codepage;
220
  /* A resource entry in a COFF file has a reserved field, which we
221
     record here when reading a COFF file.  When writing a COFF file,
222
     we set this field to zero.  */
223
  rc_uint_type reserved;
224
} rc_res_coff_info;
225
 
226
/* Resource data is stored in a rc_res_resource structure.  */
227
 
228
typedef struct rc_res_resource
229
{
230
  /* The type of resource.  */
231
  enum rc_res_type type;
232
  /* The data for the resource.  */
233
  union
234
  {
235
    struct
236
    {
237
      rc_uint_type length;
238
      const bfd_byte *data;
239
    } data;
240
    struct rc_accelerator *acc;
241
    struct rc_cursor *cursor;
242
    struct rc_group_cursor *group_cursor;
243
    struct rc_dialog *dialog;
244
    struct rc_fontdir *fontdir;
245
    struct rc_group_icon *group_icon;
246
    struct rc_menu *menu;
247
    struct rc_rcdata_item *rcdata;
248
    struct rc_stringtable *stringtable;
249
    struct rc_rcdata_item *userdata;
250
    struct rc_versioninfo *versioninfo;
251
    struct rc_toolbar *toolbar;
252
  } u;
253
  /* Information from a res file.  */
254
  struct rc_res_res_info res_info;
255
  /* Information from a COFF file.  */
256
  rc_res_coff_info coff_info;
257
} rc_res_resource;
258
 
259
#define SUBLANG_SHIFT 10
260
 
261
/* Memory flags in the memflags field of a rc_res_resource.  */
262
 
263
#define MEMFLAG_MOVEABLE        0x10
264
#define MEMFLAG_PURE            0x20
265
#define MEMFLAG_PRELOAD         0x40
266
#define MEMFLAG_DISCARDABLE     0x1000
267
 
268
/* Standard resource type codes.  These are used in the ID field of a
269
   rc_res_entry structure.  */
270
 
271
#define RT_CURSOR                1
272
#define RT_BITMAP                2
273
#define RT_ICON                  3
274
#define RT_MENU                  4
275
#define RT_DIALOG                5
276
#define RT_STRING                6
277
#define RT_FONTDIR               7
278
#define RT_FONT                  8
279
#define RT_ACCELERATOR           9
280
#define RT_RCDATA               10
281
#define RT_MESSAGETABLE         11
282
#define RT_GROUP_CURSOR         12
283
#define RT_GROUP_ICON           14
284
#define RT_VERSION              16
285
#define RT_DLGINCLUDE           17
286
#define RT_PLUGPLAY             19
287
#define RT_VXD                  20
288
#define RT_ANICURSOR            21
289
#define RT_ANIICON              22
290
#define RT_HTML                 23
291
#define RT_MANIFEST             24
292
#define RT_DLGINIT              240
293
#define RT_TOOLBAR              241
294
 
295
/* An accelerator resource is a linked list of these structures.  */
296
 
297
typedef struct rc_accelerator
298
{
299
  /* Next accelerator.  */
300
  struct rc_accelerator *next;
301
  /* Flags.  A combination of the ACC values defined below.  */
302
  rc_uint_type flags;
303
  /* Key value.  */
304
  rc_uint_type key;
305
  /* Resource ID.  */
306
  rc_uint_type id;
307
} rc_accelerator;
308
 
309
struct __attribute__ ((__packed__)) bin_accelerator
310
{
311
  bfd_byte flags[2];
312
  bfd_byte key[2];
313
  bfd_byte id[2];
314
  bfd_byte pad[2];
315
};
316
#define BIN_ACCELERATOR_SIZE  8
317
 
318
/* Accelerator flags in the flags field of a rc_accelerator.
319
   These are the same values that appear in a res file.  I hope.  */
320
 
321
#define ACC_VIRTKEY     0x01
322
#define ACC_NOINVERT    0x02
323
#define ACC_SHIFT       0x04
324
#define ACC_CONTROL     0x08
325
#define ACC_ALT         0x10
326
#define ACC_LAST        0x80
327
 
328
/* A cursor resource.  */
329
 
330
typedef struct rc_cursor
331
{
332
  /* X coordinate of hotspot.  */
333
  bfd_signed_vma xhotspot;
334
  /* Y coordinate of hotspot.  */
335
  bfd_signed_vma yhotspot;
336
  /* Length of bitmap data.  */
337
  rc_uint_type length;
338
  /* Data.  */
339
  const bfd_byte *data;
340
} rc_cursor;
341
 
342
struct __attribute__ ((__packed__)) bin_cursor
343
{
344
  bfd_byte xhotspot[2];
345
  bfd_byte yhotspot[2];
346
};
347
#define BIN_CURSOR_SIZE 4
348
 
349
/* A group_cursor resource is a list of rc_i_group_cursor structures.  */
350
 
351
typedef struct rc_group_cursor
352
{
353
  /* Next cursor in group.  */
354
  struct rc_group_cursor *next;
355
  /* Width.  */
356
  rc_uint_type width;
357
  /* Height.  */
358
  rc_uint_type height;
359
  /* Planes.  */
360
  rc_uint_type planes;
361
  /* Bits per pixel.  */
362
  rc_uint_type bits;
363
  /* Number of bytes in cursor resource.  */
364
  rc_uint_type bytes;
365
  /* Index of cursor resource.  */
366
  rc_uint_type index;
367
} rc_group_cursor;
368
 
369
struct __attribute__ ((__packed__)) bin_group_cursor_item
370
{
371
  bfd_byte width[2];
372
  bfd_byte height[2];
373
  bfd_byte planes[2];
374
  bfd_byte bits[2];
375
  bfd_byte bytes[4];
376
  bfd_byte index[2];
377
};
378
#define BIN_GROUP_CURSOR_ITEM_SIZE 14
379
 
380
struct __attribute__ ((__packed__)) bin_group_cursor
381
{
382
  bfd_byte sig1[2];
383
  bfd_byte sig2[2];
384
  bfd_byte nitems[2];
385
  /* struct bin_group_cursor_item item[nitems]; */
386
};
387
#define BIN_GROUP_CURSOR_SIZE 6
388
 
389
/* A dialog resource.  */
390
 
391
typedef struct rc_dialog
392
{
393
  /* Basic window style.  */
394
  unsigned int style;
395
  /* Extended window style.  */
396
  rc_uint_type exstyle;
397
  /* X coordinate.  */
398
  rc_uint_type x;
399
  /* Y coordinate.  */
400
  rc_uint_type y;
401
  /* Width.  */
402
  rc_uint_type width;
403
  /* Height.  */
404
  rc_uint_type height;
405
  /* Menu name.  */
406
  rc_res_id menu;
407
  /* Class name.  */
408
  rc_res_id class;
409
  /* Caption.  */
410
  unichar *caption;
411
  /* Font point size.  */
412
  rc_uint_type pointsize;
413
  /* Font name.  */
414
  unichar *font;
415
  /* Extended information for a dialogex.  */
416
  struct rc_dialog_ex *ex;
417
  /* Controls.  */
418
  struct rc_dialog_control *controls;
419
} rc_dialog;
420
 
421
struct __attribute__ ((__packed__)) bin_dialog
422
{
423
  bfd_byte style[4];
424
  bfd_byte exstyle[4];
425
  bfd_byte off[2];
426
  bfd_byte x[2];
427
  bfd_byte y[2];
428
  bfd_byte width[2];
429
  bfd_byte height[2];
430
};
431
#define BIN_DIALOG_SIZE 18
432
 
433
/* An extended dialog has additional information.  */
434
 
435
typedef struct rc_dialog_ex
436
{
437
  /* Help ID.  */
438
  rc_uint_type help;
439
  /* Font weight.  */
440
  rc_uint_type weight;
441
  /* Whether the font is italic.  */
442
  bfd_byte italic;
443
  /* Character set.  */
444
  bfd_byte charset;
445
} rc_dialog_ex;
446
 
447
struct __attribute__ ((__packed__)) bin_dialogex
448
{
449
  bfd_byte sig1[2];
450
  bfd_byte sig2[2];
451
  bfd_byte help[4];
452
  bfd_byte exstyle[4];
453
  bfd_byte style[4];
454
  bfd_byte off[2];
455
  bfd_byte x[2];
456
  bfd_byte y[2];
457
  bfd_byte width[2];
458
  bfd_byte height[2];
459
};
460
#define BIN_DIALOGEX_SIZE 26
461
 
462
struct __attribute__ ((__packed__)) bin_dialogfont
463
{
464
  bfd_byte pointsize[2];
465
};
466
#define BIN_DIALOGFONT_SIZE 2
467
 
468
struct __attribute__ ((__packed__)) bin_dialogexfont
469
{
470
  bfd_byte pointsize[2];
471
  bfd_byte weight[2];
472
  bfd_byte italic[1];
473
  bfd_byte charset[1];
474
};
475
#define BIN_DIALOGEXFONT_SIZE 6
476
 
477
/* Window style flags, from the winsup Defines.h header file.  These
478
   can appear in the style field of a rc_dialog or a rc_dialog_control.  */
479
 
480
#define CW_USEDEFAULT   0x80000000
481
#define WS_BORDER       0x800000L
482
#define WS_CAPTION      0xc00000L
483
#define WS_CHILD        0x40000000L
484
#define WS_CHILDWINDOW  0x40000000L
485
#define WS_CLIPCHILDREN 0x2000000L
486
#define WS_CLIPSIBLINGS 0x4000000L
487
#define WS_DISABLED     0x8000000L
488
#define WS_DLGFRAME     0x400000L
489
#define WS_GROUP        0x20000L
490
#define WS_HSCROLL      0x100000L
491
#define WS_ICONIC       0x20000000L
492
#define WS_MAXIMIZE     0x1000000L
493
#define WS_MAXIMIZEBOX  0x10000L
494
#define WS_MINIMIZE     0x20000000L
495
#define WS_MINIMIZEBOX  0x20000L
496
#define WS_OVERLAPPED   0L
497
#define WS_OVERLAPPEDWINDOW     0xcf0000L
498
#define WS_POPUP        0x80000000L
499
#define WS_POPUPWINDOW  0x80880000L
500
#define WS_SIZEBOX      0x40000L
501
#define WS_SYSMENU      0x80000L
502
#define WS_TABSTOP      0x10000L
503
#define WS_THICKFRAME   0x40000L
504
#define WS_TILED        0L
505
#define WS_TILEDWINDOW  0xcf0000L
506
#define WS_VISIBLE      0x10000000L
507
#define WS_VSCROLL      0x200000L
508
#define MDIS_ALLCHILDSTYLES     0x1
509
#define BS_3STATE       0x5L
510
#define BS_AUTO3STATE   0x6L
511
#define BS_AUTOCHECKBOX 0x3L
512
#define BS_AUTORADIOBUTTON      0x9L
513
#define BS_BITMAP       0x80L
514
#define BS_BOTTOM       0x800L
515
#define BS_CENTER       0x300L
516
#define BS_CHECKBOX     0x2L
517
#define BS_DEFPUSHBUTTON        0x1L
518
#define BS_GROUPBOX     0x7L
519
#define BS_ICON         0x40L
520
#define BS_LEFT         0x100L
521
#define BS_LEFTTEXT     0x20L
522
#define BS_MULTILINE    0x2000L
523
#define BS_NOTIFY       0x4000L
524
#define BS_OWNERDRAW    0xbL
525
#define BS_PUSHBOX      0xcL            /* FIXME!  What should this be?  */
526
#define BS_PUSHBUTTON   0L
527
#define BS_PUSHLIKE     0x1000L
528
#define BS_RADIOBUTTON  0x4L
529
#define BS_RIGHT        0x200L
530
#define BS_RIGHTBUTTON  0x20L
531
#define BS_TEXT         0L
532
#define BS_TOP          0x400L
533
#define BS_USERBUTTON   0x8L
534
#define BS_VCENTER      0xc00L
535
#define CBS_AUTOHSCROLL 0x40L
536
#define CBS_DISABLENOSCROLL     0x800L
537
#define CBS_DROPDOWN    0x2L
538
#define CBS_DROPDOWNLIST        0x3L
539
#define CBS_HASSTRINGS  0x200L
540
#define CBS_LOWERCASE   0x4000L
541
#define CBS_NOINTEGRALHEIGHT    0x400L
542
#define CBS_OEMCONVERT  0x80L
543
#define CBS_OWNERDRAWFIXED      0x10L
544
#define CBS_OWNERDRAWVARIABLE   0x20L
545
#define CBS_SIMPLE      0x1L
546
#define CBS_SORT        0x100L
547
#define CBS_UPPERCASE   0x2000L
548
#define ES_AUTOHSCROLL  0x80L
549
#define ES_AUTOVSCROLL  0x40L
550
#define ES_CENTER       0x1L
551
#define ES_LEFT         0L
552
#define ES_LOWERCASE    0x10L
553
#define ES_MULTILINE    0x4L
554
#define ES_NOHIDESEL    0x100L
555
#define ES_NUMBER       0x2000L
556
#define ES_OEMCONVERT   0x400L
557
#define ES_PASSWORD     0x20L
558
#define ES_READONLY     0x800L
559
#define ES_RIGHT        0x2L
560
#define ES_UPPERCASE    0x8L
561
#define ES_WANTRETURN   0x1000L
562
#define LBS_DISABLENOSCROLL     0x1000L
563
#define LBS_EXTENDEDSEL 0x800L
564
#define LBS_HASSTRINGS  0x40L
565
#define LBS_MULTICOLUMN 0x200L
566
#define LBS_MULTIPLESEL 0x8L
567
#define LBS_NODATA      0x2000L
568
#define LBS_NOINTEGRALHEIGHT    0x100L
569
#define LBS_NOREDRAW    0x4L
570
#define LBS_NOSEL       0x4000L
571
#define LBS_NOTIFY      0x1L
572
#define LBS_OWNERDRAWFIXED      0x10L
573
#define LBS_OWNERDRAWVARIABLE   0x20L
574
#define LBS_SORT        0x2L
575
#define LBS_STANDARD    0xa00003L
576
#define LBS_USETABSTOPS 0x80L
577
#define LBS_WANTKEYBOARDINPUT   0x400L
578
#define SBS_BOTTOMALIGN 0x4L
579
#define SBS_HORZ        0L
580
#define SBS_LEFTALIGN   0x2L
581
#define SBS_RIGHTALIGN  0x4L
582
#define SBS_SIZEBOX     0x8L
583
#define SBS_SIZEBOXBOTTOMRIGHTALIGN     0x4L
584
#define SBS_SIZEBOXTOPLEFTALIGN 0x2L
585
#define SBS_SIZEGRIP    0x10L
586
#define SBS_TOPALIGN    0x2L
587
#define SBS_VERT        0x1L
588
#define SS_BITMAP       0xeL
589
#define SS_BLACKFRAME   0x7L
590
#define SS_BLACKRECT    0x4L
591
#define SS_CENTER       0x1L
592
#define SS_CENTERIMAGE  0x200L
593
#define SS_ENHMETAFILE  0xfL
594
#define SS_ETCHEDFRAME  0x12L
595
#define SS_ETCHEDHORZ   0x10L
596
#define SS_ETCHEDVERT   0x11L
597
#define SS_GRAYFRAME    0x8L
598
#define SS_GRAYRECT     0x5L
599
#define SS_ICON         0x3L
600
#define SS_LEFT         0L
601
#define SS_LEFTNOWORDWRAP       0xcL
602
#define SS_NOPREFIX     0x80L
603
#define SS_NOTIFY       0x100L
604
#define SS_OWNERDRAW    0xdL
605
#define SS_REALSIZEIMAGE        0x800L
606
#define SS_RIGHT        0x2L
607
#define SS_RIGHTJUST    0x400L
608
#define SS_SIMPLE       0xbL
609
#define SS_SUNKEN       0x1000L
610
#define SS_USERITEM     0xaL
611
#define SS_WHITEFRAME   0x9L
612
#define SS_WHITERECT    0x6L
613
#define DS_3DLOOK       0x4L
614
#define DS_ABSALIGN     0x1L
615
#define DS_CENTER       0x800L
616
#define DS_CENTERMOUSE  0x1000L
617
#define DS_CONTEXTHELP  0x2000L
618
#define DS_CONTROL      0x400L
619
#define DS_FIXEDSYS     0x8L
620
#define DS_LOCALEDIT    0x20L
621
#define DS_MODALFRAME   0x80L
622
#define DS_NOFAILCREATE 0x10L
623
#define DS_NOIDLEMSG    0x100L
624
#define DS_SETFONT      0x40L
625
#define DS_SETFOREGROUND        0x200L
626
#define DS_SYSMODAL     0x2L
627
 
628
/* A dialog control.  */
629
 
630
typedef struct rc_dialog_control
631
{
632
  /* Next control.  */
633
  struct rc_dialog_control *next;
634
  /* ID.  */
635
  rc_uint_type id;
636
  /* Style.  */
637
  rc_uint_type style;
638
  /* Extended style.  */
639
  rc_uint_type exstyle;
640
  /* X coordinate.  */
641
  rc_uint_type x;
642
  /* Y coordinate.  */
643
  rc_uint_type y;
644
  /* Width.  */
645
  rc_uint_type width;
646
  /* Height.  */
647
  rc_uint_type height;
648
  /* Class name.  */
649
  rc_res_id class;
650
  /* Associated text.  */
651
  rc_res_id text;
652
  /* Extra data for the window procedure.  */
653
  struct rc_rcdata_item *data;
654
  /* Help ID.  Only used in an extended dialog.  */
655
  rc_uint_type help;
656
} rc_dialog_control;
657
 
658
struct __attribute__ ((__packed__)) bin_dialog_control
659
{
660
  bfd_byte style[4];
661
  bfd_byte exstyle[4];
662
  bfd_byte x[2];
663
  bfd_byte y[2];
664
  bfd_byte width[2];
665
  bfd_byte height[2];
666
  bfd_byte id[2];
667
};
668
#define BIN_DIALOG_CONTROL_SIZE 18
669
 
670
struct __attribute__ ((__packed__)) bin_dialogex_control
671
{
672
  bfd_byte help[4];
673
  bfd_byte exstyle[4];
674
  bfd_byte style[4];
675
  bfd_byte x[2];
676
  bfd_byte y[2];
677
  bfd_byte width[2];
678
  bfd_byte height[2];
679
  bfd_byte id[4];
680
};
681
#define BIN_DIALOGEX_CONTROL_SIZE 24
682
 
683
/* Control classes.  These can be used as the ID field in a rc_dialog_control.  */
684
 
685
#define CTL_BUTTON      0x80
686
#define CTL_EDIT        0x81
687
#define CTL_STATIC      0x82
688
#define CTL_LISTBOX     0x83
689
#define CTL_SCROLLBAR   0x84
690
#define CTL_COMBOBOX    0x85
691
 
692
/* A fontdir resource is a list of rc_fontdir.  */
693
 
694
typedef struct rc_fontdir
695
{
696
  struct rc_fontdir *next;
697
  /* Index of font entry.  */
698
  rc_uint_type index;
699
  /* Length of font information.  */
700
  rc_uint_type length;
701
  /* Font information.  */
702
  const bfd_byte *data;
703
} rc_fontdir;
704
 
705
struct __attribute__ ((__packed__)) bin_fontdir_item
706
{
707
  bfd_byte index[2];
708
  bfd_byte header[54];
709
  bfd_byte device_name[1];
710
  /* bfd_byte face_name[]; */
711
};
712
 
713
/* A group_icon resource is a list of rc_group_icon.  */
714
 
715
typedef struct rc_group_icon
716
{
717
  /* Next icon in group.  */
718
  struct rc_group_icon *next;
719
  /* Width.  */
720
  bfd_byte width;
721
  /* Height.  */
722
  bfd_byte height;
723
  /* Color count.  */
724
  bfd_byte colors;
725
  /* Planes.  */
726
  rc_uint_type planes;
727
  /* Bits per pixel.  */
728
  rc_uint_type bits;
729
  /* Number of bytes in cursor resource.  */
730
  rc_uint_type bytes;
731
  /* Index of cursor resource.  */
732
  rc_uint_type index;
733
} rc_group_icon;
734
 
735
struct __attribute__ ((__packed__)) bin_group_icon
736
{
737
  bfd_byte sig1[2];
738
  bfd_byte sig2[2];
739
  bfd_byte count[2];
740
};
741
#define BIN_GROUP_ICON_SIZE 6
742
 
743
struct __attribute__ ((__packed__)) bin_group_icon_item
744
{
745
  bfd_byte width[1];
746
  bfd_byte height[1];
747
  bfd_byte colors[1];
748
  bfd_byte pad[1];
749
  bfd_byte planes[2];
750
  bfd_byte bits[2];
751
  bfd_byte bytes[4];
752
  bfd_byte index[2];
753
};
754
#define BIN_GROUP_ICON_ITEM_SIZE 14
755
 
756
/* A menu resource.  */
757
 
758
typedef struct rc_menu
759
{
760
  /* List of menuitems.  */
761
  struct rc_menuitem *items;
762
  /* Help ID.  I don't think there is any way to set this in an rc
763
     file, but it can appear in the binary format.  */
764
  rc_uint_type help;
765
} rc_menu;
766
 
767
struct __attribute__ ((__packed__)) bin_menu
768
{
769
  bfd_byte sig1[2];
770
  bfd_byte sig2[2];
771
};
772
#define BIN_MENU_SIZE 4
773
 
774
struct __attribute__ ((__packed__)) bin_menuex
775
{
776
  bfd_byte sig1[2];
777
  bfd_byte sig2[2];
778
  bfd_byte help[4];
779
};
780
#define BIN_MENUEX_SIZE 8
781
 
782
/* A menu resource is a list of rc_menuitem.  */
783
 
784
typedef struct rc_menuitem
785
{
786
  /* Next menu item.  */
787
  struct rc_menuitem *next;
788
  /* Type.  In a normal menu, rather than a menuex, this is the flags
789
     field.  */
790
  rc_uint_type type;
791
  /* State.  This is only used in a menuex.  */
792
  rc_uint_type state;
793
  /* Id.  */
794
  rc_uint_type id;
795
  /* Unicode text.  */
796
  unichar *text;
797
  /* Popup menu items for a popup.  */
798
  struct rc_menuitem *popup;
799
  /* Help ID.  This is only used in a menuex.  */
800
  rc_uint_type help;
801
} rc_menuitem;
802
 
803
struct __attribute__ ((__packed__)) bin_menuitem
804
{
805
  bfd_byte flags[2];
806
  bfd_byte id[2];
807
};
808
#define BIN_MENUITEM_SIZE  4
809
#define BIN_MENUITEM_POPUP_SIZE  2
810
 
811
struct __attribute__ ((__packed__)) bin_menuitemex
812
{
813
  bfd_byte type[4];
814
  bfd_byte state[4];
815
  bfd_byte id[4];
816
  bfd_byte flags[2];
817
  /* unicode text */
818
  /* if popup: align, bfd_byte help[4], align, bin_menuitemex[]; */
819
};
820
#define BIN_MENUITEMEX_SIZE 14
821
 
822
/* Menu item flags.  These can appear in the flags field of a rc_menuitem.  */
823
 
824
#define MENUITEM_GRAYED         0x001
825
#define MENUITEM_INACTIVE       0x002
826
#define MENUITEM_BITMAP         0x004
827
#define MENUITEM_OWNERDRAW      0x100
828
#define MENUITEM_CHECKED        0x008
829
#define MENUITEM_POPUP          0x010
830
#define MENUITEM_MENUBARBREAK   0x020
831
#define MENUITEM_MENUBREAK      0x040
832
#define MENUITEM_ENDMENU        0x080
833
#define MENUITEM_HELP          0x4000
834
 
835
/* An rcdata resource is a pointer to a list of rc_rcdata_item.  */
836
 
837
typedef struct rc_rcdata_item
838
{
839
  /* Next data item.  */
840
  struct rc_rcdata_item *next;
841
  /* Type of data.  */
842
  enum
843
  {
844
    RCDATA_WORD,
845
    RCDATA_DWORD,
846
    RCDATA_STRING,
847
    RCDATA_WSTRING,
848
    RCDATA_BUFFER
849
  } type;
850
  union
851
  {
852
    rc_uint_type word;
853
    rc_uint_type dword;
854
    struct
855
    {
856
      rc_uint_type length;
857
      const char *s;
858
    } string;
859
    struct
860
    {
861
      rc_uint_type length;
862
      const unichar *w;
863
    } wstring;
864
    struct
865
    {
866
      rc_uint_type length;
867
      const bfd_byte *data;
868
    } buffer;
869
  } u;
870
} rc_rcdata_item;
871
 
872
/* A stringtable resource is a pointer to a rc_stringtable.  */
873
 
874
typedef struct rc_stringtable
875
{
876
  /* Each stringtable resource is a list of 16 unicode strings.  */
877
  struct
878
  {
879
    /* Length of string.  */
880
    rc_uint_type length;
881
    /* String data if length > 0.  */
882
    unichar *string;
883
  } strings[16];
884
} rc_stringtable;
885
 
886
/* A versioninfo resource points to a rc_versioninfo.  */
887
 
888
typedef struct rc_versioninfo
889
{
890
  /* Fixed version information.  */
891
  struct rc_fixed_versioninfo *fixed;
892
  /* Variable version information.  */
893
  struct rc_ver_info *var;
894
} rc_versioninfo;
895
 
896
struct __attribute__ ((__packed__)) bin_versioninfo
897
{
898
  bfd_byte size[2];
899
  bfd_byte fixed_size[2];
900
  bfd_byte sig2[2];
901
};
902
#define BIN_VERSIONINFO_SIZE 6
903
 
904
/* The fixed portion of a versioninfo resource.  */
905
 
906
typedef struct rc_fixed_versioninfo
907
{
908
  /* The file version, which is two 32 bit integers.  */
909
  rc_uint_type file_version_ms;
910
  rc_uint_type file_version_ls;
911
  /* The product version, which is two 32 bit integers.  */
912
  rc_uint_type product_version_ms;
913
  rc_uint_type product_version_ls;
914
  /* The file flags mask.  */
915
  rc_uint_type file_flags_mask;
916
  /* The file flags.  */
917
  rc_uint_type file_flags;
918
  /* The OS type.  */
919
  rc_uint_type file_os;
920
  /* The file type.  */
921
  rc_uint_type file_type;
922
  /* The file subtype.  */
923
  rc_uint_type file_subtype;
924
  /* The date, which in Windows is two 32 bit integers.  */
925
  rc_uint_type file_date_ms;
926
  rc_uint_type file_date_ls;
927
} rc_fixed_versioninfo;
928
 
929
struct __attribute__ ((__packed__)) bin_fixed_versioninfo
930
{
931
  bfd_byte sig1[4];
932
  bfd_byte sig2[4];
933
  bfd_byte file_version[4];
934
  bfd_byte file_version_ls[4];
935
  bfd_byte product_version_ms[4];
936
  bfd_byte product_version_ls[4];
937
  bfd_byte file_flags_mask[4];
938
  bfd_byte file_flags[4];
939
  bfd_byte file_os[4];
940
  bfd_byte file_type[4];
941
  bfd_byte file_subtype[4];
942
  bfd_byte file_date_ms[4];
943
  bfd_byte file_date_ls[4];
944
};
945
#define BIN_FIXED_VERSIONINFO_SIZE 52
946
 
947
/* A list of variable version information.  */
948
 
949
typedef struct rc_ver_info
950
{
951
  /* Next item.  */
952
  struct rc_ver_info *next;
953
  /* Type of data.  */
954
  enum { VERINFO_STRING, VERINFO_VAR } type;
955
  union
956
  {
957
    /* StringFileInfo data.  */
958
    struct
959
    {
960
      /* Language.  */
961
      unichar *language;
962
      /* Strings.  */
963
      struct rc_ver_stringinfo *strings;
964
    } string;
965
    /* VarFileInfo data.  */
966
    struct
967
    {
968
      /* Key.  */
969
      unichar *key;
970
      /* Values.  */
971
      struct rc_ver_varinfo *var;
972
    } var;
973
  } u;
974
} rc_ver_info;
975
 
976
struct __attribute__ ((__packed__)) bin_ver_info
977
{
978
  bfd_byte size[2];
979
  bfd_byte sig1[2];
980
  bfd_byte sig2[2];
981
};
982
#define BIN_VER_INFO_SIZE 6
983
 
984
/* A list of string version information.  */
985
 
986
typedef struct rc_ver_stringinfo
987
{
988
  /* Next string.  */
989
  struct rc_ver_stringinfo *next;
990
  /* Key.  */
991
  unichar *key;
992
  /* Value.  */
993
  unichar *value;
994
} rc_ver_stringinfo;
995
 
996
/* A list of variable version information.  */
997
 
998
typedef struct rc_ver_varinfo
999
{
1000
  /* Next item.  */
1001
  struct rc_ver_varinfo *next;
1002
  /* Language ID.  */
1003
  rc_uint_type language;
1004
  /* Character set ID.  */
1005
  rc_uint_type charset;
1006
} rc_ver_varinfo;
1007
 
1008
typedef struct rc_toolbar_item
1009
{
1010
  struct rc_toolbar_item *next;
1011
  struct rc_toolbar_item *prev;
1012
  rc_res_id id;
1013
} rc_toolbar_item;
1014
 
1015
struct __attribute__ ((__packed__)) bin_messagetable_item
1016
{
1017
  bfd_byte length[2];
1018
  bfd_byte flags[2];
1019
  bfd_byte data[1];
1020
};
1021
#define BIN_MESSAGETABLE_ITEM_SIZE  4
1022
 
1023
#define MESSAGE_RESOURCE_UNICODE  0x0001
1024
 
1025
struct __attribute__ ((__packed__)) bin_messagetable_block
1026
{
1027
  bfd_byte lowid[4];
1028
  bfd_byte highid[4];
1029
  bfd_byte offset[4];
1030
};
1031
#define BIN_MESSAGETABLE_BLOCK_SIZE 12
1032
 
1033
struct __attribute__ ((__packed__)) bin_messagetable
1034
{
1035
  bfd_byte cblocks[4];
1036
  struct bin_messagetable_block items[1];
1037
};
1038
#define BIN_MESSAGETABLE_SIZE 8
1039
 
1040
typedef struct rc_toolbar
1041
{
1042
  rc_uint_type button_width;
1043
  rc_uint_type button_height;
1044
  rc_uint_type nitems;
1045
  rc_toolbar_item *items;
1046
} rc_toolbar;
1047
 
1048
struct __attribute__ ((__packed__)) bin_toolbar
1049
{
1050
  bfd_byte button_width[4];
1051
  bfd_byte button_height[4];
1052
  bfd_byte nitems[4];
1053
  /* { bfd_byte id[4]; } * nitems; */
1054
};
1055
#define BIN_TOOLBAR_SIZE 12
1056
 
1057
extern int target_is_bigendian;
1058
 
1059
typedef struct windres_bfd
1060
{
1061
  bfd *abfd;
1062
  asection *sec;
1063
  rc_uint_type kind : 4;
1064
} windres_bfd;
1065
 
1066
#define WR_KIND_TARGET    0
1067
#define WR_KIND_BFD       1
1068
#define WR_KIND_BFD_BIN_L 2
1069
#define WR_KIND_BFD_BIN_B 3
1070
 
1071
#define WR_KIND(PTR)  (PTR)->kind
1072
#define WR_SECTION(PTR) (PTR)->sec
1073
#define WR_BFD(PTR) (PTR)->abfd
1074
 
1075
extern void set_windres_bfd_content (windres_bfd *, const void *, rc_uint_type, rc_uint_type);
1076
extern void get_windres_bfd_content (windres_bfd *, void *, rc_uint_type, rc_uint_type);
1077
 
1078
extern void windres_put_8 (windres_bfd *, void *, rc_uint_type);
1079
extern void windres_put_16 (windres_bfd *, void *, rc_uint_type);
1080
extern void windres_put_32 (windres_bfd *, void *, rc_uint_type);
1081
extern rc_uint_type windres_get_8 (windres_bfd *, const void *, rc_uint_type);
1082
extern rc_uint_type windres_get_16 (windres_bfd *, const void *, rc_uint_type);
1083
extern rc_uint_type windres_get_32 (windres_bfd *, const void *, rc_uint_type);
1084
 
1085
extern void set_windres_bfd (windres_bfd *, bfd *, asection *, rc_uint_type);
1086
extern void set_windres_bfd_endianess (windres_bfd *, int);
1087
 
1088
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.