libUEMF
A portable library for reading and writing WMF, EMF and EMF+ files
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
uwmf.h
Go to the documentation of this file.
1 
37 /*
38 File: uwmf.h
39 Version: 0.0.8
40 Date: 27-FEB-2013
41 Author: David Mathog, Biology Division, Caltech
42 email: mathog@caltech.edu
43 Copyright: 2013 David Mathog and California Institute of Technology (Caltech)
44 */
45 
46 #ifndef _UWMF_
47 #define _UWMF_
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 #include <stdlib.h>
54 #include <stdio.h>
55 #include <stdint.h>
56 #include <stdbool.h>
57 #include <string.h>
58 #include "uemf.h" /* many structures/defs in common, pull in the EMF ones as a basis */
59 #include "uemf_utf.h"
60 #include "uwmf_endian.h"
61 
62 
63 
64 
65 
66 // ***********************************************************************************
67 // Value Enumerations and other predefined constants, alphabetical order by group
68 
69 /* RecordType Enumeration WMF manual 2.1.1.1 */
330 };
331 #define U_WMR_MIN 0
332 #define U_WMR_MAX 255
333 #define U_WMR_MASK 0xFF
334 #define U_WMR_INVALID 0xFFFFFFFF
335 
336 
346 #define BI_BITCOUNT_0 U_BCBM_EXPLICIT
347 #define BI_BITCOUNT_1 U_BCBM_MONOCHROME
348 #define BI_BITCOUNT_2 U_BCBM_COLOR4
349 #define BI_BITCOUNT_3 U_BCBM_COLOR8
350 #define BI_BITCOUNT_4 U_BCBM_COLOR16
351 #define BI_BITCOUNT_5 U_BCBM_COLOR24
352 #define BI_BITCOUNT_6 U_BCBM_COLOR32
353 
355 /* BrushStyle Enumeration WMF manual 2.1.1.4
356  Same as "EMF LB_Style Enumeration" in uemf.h
357 */
358 
359 /* CharacterSet Enumeration WMF manual 2.1.1.5
360  Same as "EMF LF_CharSet Enumeration" in uemf.h
361 */
362 
370 #define U_DIB_PAL_INDICES 2
371 
378 #define U_BI_CMYK 0x000B
379 #define U_BI_CMYKRLE8 0x000C
380 #define U_BI_CMYKRLE4 = 0x000D
381 
383 /* FamilyFont Enumeration WMF manual 2.1.1.8
384  Only used in a PitchAndFamily object, defined there
385 */
386 
387 /* FloodFill Enumeration WMF manual 2.1.1.9
388  Same as "EMF FloodFill Enumeration" in uemf.h
389 */
390 
391 /* FontQuality Enumeration WMF manual 2.1.1.10
392  Same as "EMF LF_Quality Enumeration" in uemf.h
393 */
394 
395 /* GamutMappingIntent Enumeration WMF manual 2.1.1.11
396  Same as "EMF LCS_Intent Enumeration" in uemf.h
397 */
398 
399 /* HatchStyle Enumeration WMF manual 2.1.1.12
400  Same as "EMF HatchStyle Enumeration" in uemf.h
401 */
402 
403 /* Layout Enumeration WMF manual 2.1.1.13
404  Same as "EMF Mirroring Enumeration" in uemf.h
405 */
406 
411 /* U_LCS_CALIBRATED_RGB is defined in uemf.h under LCS_CSType Enumeration, WMF manual also defines it, but do not replicate define.
412 #define U_LCS_CALIBRATED_RGB 0x00000000 //!< calibrated RGB
413 */
414 #define U_LCS_sRGB 0x73524742
415 #define U_LCS_WINDOWS_COLOR_SPACE 0x57696E20
416 
418 /* LogicalColorSpaceV5 Enumeration WMF manual 2.1.1.15
419  Same as "EMF Profile Enumeration" in uemf.h
420 */
421 
422 /* MapMode Enumeration WMF manual 2.1.1.16
423  Same as "EMF MapMode Enumeration" in uemf.h
424 */
425 
431 #define U_MFE_NEWFRAME 0x0001
432 #define U_MFE_ABORTDOC 0x0002
433 #define U_MFE_NEXTBAND 0x0003
434 #define U_MFE_SETCOLORTABLE 0x0004
435 #define U_MFE_GETCOLORTABLE 0x0005
436 #define U_MFE_FLUSHOUT 0x0006
437 #define U_MFE_DRAFTMODE 0x0007
438 #define U_MFE_QUERYESCSUPPORT 0x0008
439 #define U_MFE_SETABORTPROC 0x0009
440 #define U_MFE_STARTDOC 0x000A
441 #define U_MFE_ENDDOC 0x000B
442 #define U_MFE_GETPHYSPAGESIZE 0x000C
443 #define U_MFE_GETPRINTINGOFFSET 0x000D
444 #define U_MFE_GETSCALINGFACTOR 0x000E
445 #define U_MFE_META_ESCAPE_ENHANCED_METAFILE 0x000F
446 #define U_MFE_SETPENWIDTH 0x0010
447 #define U_MFE_SETCOPYCOUNT 0x0011
448 #define U_MFE_SETPAPERSOURCE 0x0012
449 #define U_MFE_PASSTHROUGH 0x0013
450 #define U_MFE_GETTECHNOLOGY 0x0014
451 #define U_MFE_SETLINECAP 0x0015
452 #define U_MFE_SETLINEJOIN 0x0016
453 #define U_MFE_SETMITERLIMIT 0x0017
454 #define U_MFE_BANDINFO 0x0018
455 #define U_MFE_DRAWPATTERNRECT 0x0019
456 #define U_MFE_GETVECTORPENSIZE 0x001A
457 #define U_MFE_GETVECTORBRUSHSIZE 0x001B
458 #define U_MFE_ENABLEDUPLEX 0x001C
459 #define U_MFE_GETSETPAPERBINS 0x001D
460 #define U_MFE_GETSETPRINTORIENT 0x001E
461 #define U_MFE_ENUMPAPERBINS 0x001F
462 #define U_MFE_SETDIBSCALING 0x0020
463 #define U_MFE_EPSPRINTING 0x0021
464 #define U_MFE_ENUMPAPERMETRICS 0x0022
465 #define U_MFE_GETSETPAPERMETRICS 0x0023
466 #define U_MFE_POSTSCRIPT_DATA 0x0025
467 #define U_MFE_POSTSCRIPT_IGNORE 0x0026
468 #define U_MFE_GETDEVICEUNITS 0x002A
469 #define U_MFE_GETEXTENDEDTEXTMETRICS 0x0100
470 #define U_MFE_GETPAIRKERNTABLE 0x0102
471 #define U_MFE_EXTTEXTOUT 0x0200
472 #define U_MFE_GETFACENAME 0x0201
473 #define U_MFE_DOWNLOADFACE 0x0202
474 #define U_MFE_METAFILE_DRIVER 0x0801
475 #define U_MFE_QUERYDIBSUPPORT 0x0C01
476 #define U_MFE_BEGIN_PATH 0x1000
477 #define U_MFE_CLIP_TO_PATH 0x1001
478 #define U_MFE_END_PATH 0x1002
479 #define U_MFE_OPEN_CHANNEL 0x100E
480 #define U_MFE_DOWNLOADHEADER 0x100F
481 #define U_MFE_CLOSE_CHANNEL 0x1010
482 #define U_MFE_POSTSCRIPT_PASSTHROUGH 0x1013
483 #define U_MFE_ENCAPSULATED_POSTSCRIPT 0x1014
484 #define U_MFE_POSTSCRIPT_IDENTIFY 0x1015
485 #define U_MFE_POSTSCRIPT_INJECTION 0x1016
486 #define U_MFE_CHECKJPEGFORMAT 0x1017
487 #define U_MFE_CHECKPNGFORMAT 0x1018
488 #define U_MFE_GET_PS_FEATURESETTING 0x1019
489 #define U_MFE_MXDC_ESCAPE 0x101A
490 #define U_MFE_SPCLPASSTHROUGH2 0x11D8
491 
496 #define U_MEMORYMETAFILE 0x0001
497 #define U_DISKMETAFILE 0x0002
498 
504 #define U_METAVERSION100 0x0100
505 #define U_METAVERSION300 0x0300
506 
508 /* MixMode Enumeration WMF manual 2.1.1.20
509  Same as "EMF BackgroundMode Enumeration" in uemf.h
510 */
511 
512 /* OutPrecision Enumeration WMF manual 2.1.1.21
513  Same as "EMF LF_OutPrecision Enumeration" in uemf.h
514 */
515 
519 #define U_PC_RESERVED 0x01
520 #define U_PC_EXPLICIT 0x02
521 #define U_PC_NOCOLLAPSE 0x04
522 
533 /* PitchFont Enumeration WMF manual 2.1.1.24
534  These are only used in PitchAndFamily object, defined there.
535 */
536 
537 /* PolyFillMode Enumeration WMF manual 2.1.1.25
538  These are the first two emtries in "EMF PolygonFillMode Enumeration" in uemf.h
539 
540 */
541 
546 #define U_WPS_CAP_NOTSET -2
547 #define U_WPS_CAP_FLAT 0
548 #define U_WPS_CAP_ROUND 1
549 #define U_WPS_CAP_SQUARE 2
550 
552 /* PostScriptClipping Enumeration WMF manual 2.1.1.27
553  PostFeatureSetting Enumeration WMF manual 2.1.1.28
554 
555  These are used by postscript drivers, not supported by libUWEMF.
556 */
557 
562 #define U_WPS_JOIN_NOTSET -2
563 #define U_WPS_JOIN_MITER 0
564 #define U_WPS_JOIN_ROUND 1
565 #define U_WPS_JOIN_BEVEL 2
566 
568 /* StretchMode Enumeration WMF manual 2.1.1.30
569  Same as "EMF StretchMode Enumeration" in uemf.h
570 
571 */
572 
573 /* TernaryRasterOperation Enumeration WMF manual 2.1.1.31
574  Same as "EMF Ternary Raster Operation Enumeration" in uemf.h
575  Only partially supported in libUWMF.h
576 */
577 
578 /* ClipPrecision Flags WMF manual 2.1.2.1
579  Same as "EMF LF_ClipPrecision Enumeration" in uemf.h
580 */
581 
582 /* ExtTextOutOptions Flags WMF manual 2.1.2.2
583  These are a subset of "EMF ExtTextOutOptions Enumeration" in uemf.h
584 
585  Not defined for WMF: U_ETO_NONE, U_ETO_GRAYED, U_ETO_NORECT,
586  U_ETO_SMALL_CHARS,U_ETO_IGNORELANGUAGE,U_ETO_REVERSE_INDEX_MAP
587 
588  Defined for WMF: U_ETO_OPAQUE, U_ETO_CLIPPED, U_ETO_GLYPH_INDEX,
589  U_ETO_RTLREADING,_ETO_NUMERICSLOCAL,U_ETO_NUMERICSLATIN,
590  U_ETO_PDY
591 */
592 
593 /* TextAlignment Enumeration WMF manual 2.1.2.3
594  VertialTextAlignment Enumeration WMF manual 2.1.2.4
595  These are both in "EMF TextAlignment Enumeration" in uemf.h
596 */
597 
598 
599 
600 // ***************************************************************************
601 // Miscellaneous Values
602 /* TextAlignmentMode Flags WMF manual 2.1.2.3
603  VerticalTextAlignmentMode Flags WMF manual 2.1.2.4
604  Same as "EMF TextAlignment Enumeration" in uemf.h
605 */
606 
626 #define U_SIZE_PAIRF 8
627 #define U_SIZE_COLORREF 4
628 #define U_SIZE_BRUSH 8
629 #define U_SIZE_FONT 19
630 #define U_SIZE_FONT_CORE 18
631 #define U_SIZE_PLTNTRY 4
632 #define U_SIZE_PALETTE 8
633 #define U_SIZE_PEN 10
634 #define U_SIZE_POINT16 4
635 #define U_SIZE_RECT16 8
636 #define U_SIZE_REGION 20
637 #define U_SIZE_BITMAP16 10
638 #define U_SIZE_BITMAPCOREHEADER 12
639 #define U_SIZE_BITMAPINFOHEADER 40
640 #define U_SIZE_BITMAPV4HEADER 108
641 #define U_SIZE_BITMAPV5HEADER 124
642 #define U_SIZE_WLOGBRUSH 8
643 #define U_SIZE_POLYPOLYGON 4
644 #define U_SIZE_SCAN 8
645 #define U_SIZE_METARECORD 6
646 #define U_SIZE_WMRPLACEABLE 22
647 #define U_SIZE_WMRHEADER 18
648 #define U_SIZE_WMREOF 6
649 #define U_SIZE_WMRSETRELABS 6
650 #define U_SIZE_WMRSAVEDC 6
651 #define U_SIZE_WMRRESTOREDC 8
652 #define U_SIZE_WMRREALIZEPALETTE 6
653 #define U_SIZE_WMRSETBKCOLOR 10
654 #define U_SIZE_WMRSETTEXTCOLOR 10
655 #define U_SIZE_WMRSETBKMODE 8
656 #define U_SIZE_WMRSETROP2 8
657 #define U_SIZE_WMRSETPOLYFILLMODE 8
658 #define U_SIZE_WMRSETSTRETCHBLTMODE 8
659 #define U_SIZE_WMRSETTEXTALIGN 8
660 #define U_SIZE_WMRSETMAPMODE 8
661 #define U_SIZE_WMRSETTEXTCHAREXTRA 8
662 #define U_SIZE_WMRSETTEXTJUSTIFICATION 10
663 #define U_SIZE_WMRSETWINDOWORG 10
664 #define U_SIZE_WMRSETWINDOWEXT 10
665 #define U_SIZE_WMRSETVIEWPORTORG 10
666 #define U_SIZE_WMRSETVIEWPORTEXT 10
667 #define U_SIZE_WMROFFSETWINDOWORG 10
668 #define U_SIZE_WMROFFSETVIEWPORTORG 10
669 #define U_SIZE_WMRLINETO 10
670 #define U_SIZE_WMRMOVETO 10
671 #define U_SIZE_WMROFFSETCLIPRGN 10
672 #define U_SIZE_WMRSCALEWINDOWEXT 14
673 #define U_SIZE_WMRSCALEVIEWPORTEXT 14
674 #define U_SIZE_WMREXCLUDECLIPRECT 14
675 #define U_SIZE_WMRINTERSECTCLIPRECT 14
676 #define U_SIZE_WMRARC 22
677 #define U_SIZE_WMRELLIPSE 14
678 #define U_SIZE_WMRRECTANGLE 14
679 #define U_SIZE_WMRFLOODFILL 16
680 #define U_SIZE_WMREXTFLOODFILL 16
681 #define U_SIZE_WMRSETPIXEL 14
682 #define U_SIZE_WMRPIE 22
683 #define U_SIZE_WMRCHORD 22
684 #define U_SIZE_WMRROUNDRECT 18
685 #define U_SIZE_WMRPATBLT 18
686 #define U_SIZE_WMRTEXTOUT 8
687 #define U_SIZE_WMRBITBLT_NOPX 24
688 #define U_SIZE_WMRBITBLT_PX 22
689 #define U_SIZE_WMRSTRETCHBLT_NOPX 28
690 #define U_SIZE_WMRSTRETCHBLT_PX 26
691 #define U_SIZE_WMRPOLYGON 10
692 #define U_SIZE_WMRPOLYLINE 10
693 #define U_SIZE_WMRESCAPE 10
694 #define U_SIZE_WMRFILLREGION 10
695 #define U_SIZE_WMRFRAMEREGION 14
696 #define U_SIZE_WMRINVERTREGION 8
697 #define U_SIZE_WMRPAINTREGION 8
698 #define U_SIZE_WMRSELECTCLIPREGION 8
699 #define U_SIZE_WMRSELECTOBJECT 8
700 #define U_SIZE_WMRSELECTPALETTE 8
701 #define U_SIZE_WMRRESIZEPALETTE 8
702 #define U_SIZE_WMRDELETEOBJECT 8
703 #define U_SIZE_WMRDRAWTEXT 6
704 #define U_SIZE_WMRCREATEBITMAPINDIRECT 6
705 #define U_SIZE_WMRCREATEBITMAP 6
706 #define U_SIZE_WMRSETMAPPERFLAGS 10
707 #define U_SIZE_WMREXTTEXTOUT 14
708 #define U_SIZE_WMRSETDIBTODEV 22
709 #define U_SIZE_WMRANIMATEPALETTE 14
710 #define U_SIZE_WMRSETPALENTRIES 14
711 #define U_SIZE_WMRCREATEPALETTE 14
712 #define U_SIZE_WMRPOLYPOLYGON 10
713 #define U_SIZE_WMRDIBBITBLT_NOPX 24
714 #define U_SIZE_WMRDIBBITBLT_PX 22
715 #define U_SIZE_WMRDIBSTRETCHBLT_NOPX 28
716 #define U_SIZE_WMRDIBSTRETCHBLT_PX 26
717 #define U_SIZE_WMRDIBCREATEPATTERNBRUSH 10
718 #define U_SIZE_WMRSTRETCHDIB 28
719 #define U_SIZE_WMRCREATEPATTERNBRUSH 6
720 #define U_SIZE_WMRCREATEPENINDIRECT 16
721 #define U_SIZE_WMRCREATEFONTINDIRECT 26
722 #define U_SIZE_WMRCREATEBRUSHINDIRECT 14
723 #define U_SIZE_WMRCREATEREGION 26
727 // ***************************************************************************
728 // Macros
729 
736 #define U_TEST_NOPX2(A,B) (A == (uint32_t) (B + 3))
737 #define U_TEST_NOPXB(A,B) (A/2 == (uint32_t) (B + 3))
738 #define U_WMRTYPE(A) (((U_METARECORD *)A)->iType)
739 #define U_WMRXB(A) (((U_METARECORD *)A)->xb)
740 #define U_WMR_XB_FROM_TYPE(A) ((uint8_t) (U_wmr_values(A)>>8))
741 #define U_U16(A) (*(uint16_t *)&A)
742 #define U_P16(A) ( (uint16_t *)&A)
743 #define U_PP16(A) ( (uint16_t *) A)
744 
745 
747 /* ************************************************************
748  WMF structures OTHER than those corresponding to complete U_WMR_* records
749  ************************************************************ */
750 
764 typedef struct {
765  uint16_t Style;
767  uint8_t Data[1];
768 } U_BRUSH;
769 
770 
774 typedef struct {
775  int16_t Height;
776  int16_t Width;
777  int16_t Escapement;
778  int16_t Orientation;
779  int16_t Weight;
780  uint8_t Italic;
781  uint8_t Underline;
782  uint8_t StrikeOut;
783  uint8_t CharSet;
784  uint8_t OutPrecision;
785  uint8_t ClipPrecision;
786  uint8_t Quality;
787  uint8_t PitchAndFamily;
788  uint8_t FaceName[1];
789 } U_FONT;
790 
795 typedef struct {
796  uint8_t Value;
797  uint8_t Blue;
798  uint8_t Green;
799  uint8_t Red;
800 } U_PLTNTRY;
801 
809 typedef struct {
810  uint16_t Start;
811  uint16_t NumEntries;
812  U_PLTNTRY PalEntries[1];
813 } U_PALETTE;
814 
817 typedef struct {
818  uint16_t Style;
819  uint16_t Widthw[2];
821 } U_PEN;
822 
831 typedef struct {
832  int16_t left;
833  int16_t top;
834  int16_t right;
835  int16_t bottom;
836 } U_RECT16;
837 
838 #define U_RCL16_DEF (U_RECT16){0,0,-1,-1}
839 
840 
842 typedef struct {
843  uint16_t ignore1;
844  uint16_t Type;
845  uint16_t ignore2;
846  int16_t Size;
847  int16_t sCount;
848  int16_t sMax;
850  uint16_t aScans[1];
851 } U_REGION;
852 
860 typedef struct {
861  int16_t Type;
862  int16_t Width;
863  int16_t Height;
864  int16_t WidthBytes;
865  uint8_t Planes;
866  uint8_t BitsPixel;
867 } U_BITMAP16;
868 
871 typedef struct {
872  uint16_t Size_4[2];
873  uint16_t Width;
874  uint16_t Height;
875  uint16_t Planes;
876  uint16_t BitCount;
878 
879 
885 
888 typedef struct {
889  uint32_t bV4Size;
890  int32_t bV4Width;
891  int32_t bV4Height;
892  uint16_t bV4Planes;
893  uint16_t bV4BitCount;
894  uint32_t bV4Compression;
895  uint32_t bV4SizeImage;
896  int32_t bV4XPelsPerMeter;
897  int32_t bV4YPelsPerMeter;
898  uint32_t bV4ClrUsed;
899  uint32_t bV4ClrImportant;
900  uint32_t bV4RedMask;
901  uint32_t bV4GreenMask;
902  uint32_t bV4BlueMask;
903  uint32_t bV4AlphaMask;
904  uint32_t bV4CSType;
905  U_CIEXYZTRIPLE bV4EndPoints;
906  uint32_t bV4GammaRed;
907  uint32_t bV4GammaGreen;
908  uint32_t bV4GammaBlue;
909 } U_BITMAPV4HEADER;
910 
911 
914 typedef struct {
915  uint32_t bV5Size;
916  int32_t bV5Width;
917  int32_t bV5Height;
918  uint16_t bV5Planes;
919  uint16_t bV5BitCount;
920  uint32_t bV5Compression;
921  uint32_t bV5SizeImage;
922  int32_t bV5XPelsPerMeter;
923  int32_t bV5YPelsPerMeter;
924  uint32_t bV5ClrUsed;
925  uint32_t bV5ClrImportant;
926  uint32_t bV5RedMask;
927  uint32_t bV5GreenMask;
928  uint32_t bV5BlueMask;
929  uint32_t bV5AlphaMask;
930  uint32_t bV5CSType;
931  U_CIEXYZTRIPLE bV5Endpoints;
932  uint32_t bV5GammaRed;
933  uint32_t bV5GammaGreen;
934  uint32_t bV5GammaBlue;
935  uint32_t bV5Intent;
936  uint32_t bV5ProfileData;
937  uint32_t bV5ProfileSize;
938  uint32_t bV5Reserved;
939 } U_BITMAPV5HEADER;
940 
942 
943 
977 typedef struct {
978  uint16_t Style;
980  uint16_t Hatch;
981 } U_WLOGBRUSH;
982 
983 /* LogColorSpace Object WMF manual 2.2.2.11
984  Same as "EMF LOGCOLORSPACEA Object" in uemf.h
985  use U_LOGCOLORSPACEA
986 */
987 
988 /* LogColorSpaceW Object WMF manual 2.2.2.12
989  Same as "EMF LOGCOLORSPACEW Object" in uemf.h
990  use U_LOGCOLORSPACEW
991 */
992 
993 
994 /* PaletteEntry Object WMF manual 2.2.2.13
995  moved up before Palette Object */
996 
997 /* PitchAndFamily Enumerations WMF manual 2.2.2.14
998  Same as "EMF LF_PitchAndFamily Enumeration" in uemf.h
999 */
1000 
1001 /* PointL Object WMF manual 2.2.2.15
1002  Same as "EMF Point Object" in uemf.h
1003 */
1004 
1005 /* PointS Object WMF manual 2.2.2.16
1006  Same as "EMF POINTS Object" in uemf.h
1007 */
1008 
1009 /* PolyPolygon Object WMF manual 2.2.2.17 */
1019 typedef struct {
1020  uint16_t nPolys;
1021  uint16_t aPolyCounts[1];
1022 } U_POLYPOLYGON;
1023 
1024 /* Rect Object WMF manual 2.2.2.18
1025  This one is out of order, had to be created much earlier than this
1026 */
1027 
1028 /* RectL Object WMF manual 2.2.2.19
1029  Same as "EMF RECT Object" in uemf.h
1030 */
1031 
1032 /* RGBQuad Object WMF manual 2.2.2.20
1033  Same as "EMF RGBQUAD Object" in uemf.h
1034 */
1035 
1043 typedef struct {
1044  uint16_t count;
1045  uint16_t top;
1046  uint16_t bottom;
1047  uint16_t ScanLines[1];
1048 } U_SCAN;
1049 
1061 typedef struct {
1062  uint16_t Size16_4[2];
1063  uint8_t iType;
1064  uint8_t xb;
1065 } U_METARECORD;
1066 
1072 typedef struct {
1073  uint32_t Key;
1074  uint16_t HWmf;
1076  uint16_t Inch;
1077  uint32_t Reserved;
1078  uint16_t Checksum;
1079 } U_WMRPLACEABLE;
1080 
1083 typedef struct {
1084  uint8_t iType;
1085  uint8_t xb;
1086  uint16_t Size16w;
1087  uint16_t version;
1088  uint16_t Sizew[2];
1089  uint16_t nObjects;
1090  uint32_t maxSize;
1091  uint16_t nMembers;
1092 } U_WMRHEADER;
1093 
1094 
1095 // ***********************************************************************************
1096 // The following structures correspond to U_WMR_# records
1097 
1098 /* Index 00 U_WMREOF WMF manual 2.3.2.1 META_EOF */
1101 typedef struct {
1102  uint16_t Size16_4[2];
1103  uint8_t iType;
1104  uint8_t xb;
1105 } U_WMREOF,
1106  U_WMRSETRELABS,
1107  U_WMRSAVEDC,
1109 
1110 /* Index 01 U_WMRSETBKCOLOR WMF manual 2.3.5.14 */
1113 typedef struct {
1114  uint16_t Size16_4[2];
1115  uint8_t iType;
1116  uint8_t xb;
1118 } U_WMRSETBKCOLOR,
1120 
1121 /* Index 02 U_WMRSETBKMODE WMF manual 2.3.5.15 */
1125 typedef struct {
1126  uint16_t Size16_4[2];
1127  uint8_t iType;
1128  uint8_t xb;
1129  uint16_t Mode;
1130  uint16_t Reserved;
1131 } U_WMRSETBKMODE,
1133  U_WMRSETROP2,
1136 
1137 /* Index 03 U_WMRSETMAPMODE WMF manual 2.3.5.17 */
1141 typedef struct {
1142  uint16_t Size16_4[2];
1143  uint8_t iType;
1144  uint8_t xb;
1145  uint16_t Mode;
1146 } U_WMRSETMAPMODE,
1148 
1149 /* Index 04 U_WMRSETROP2 WMF manual 2.3.5.22 See Index 02 */
1150 
1151 /* Index 05 U_WMRSETRELABS WMF manual 2.3.5.21 See Index 00*/
1152 
1153 /* Index 06 U_WMRSETPOLYFILLMODE WMF manual 2.3.5.20 See Index 02
1154  Index 07 U_WMRSETSTRETCHBLTMODE WMF manual 2.3.5.23 */
1155 
1156 /* Index 08 U_WMRSETTEXTCHAREXTRA WMF manual 2.3.5.25 See Index 03*/
1157 
1158 /* Index 09 U_WMRSETTEXTCOLOR WMF manual 2.3.5.26 see Index 01 */
1159 
1160 /* Index 0A U_WMRSETTEXTJUSTIFICATION WMF manual 2.3.5.27 */
1163 typedef struct {
1164  uint16_t Size16_4[2];
1165  uint8_t iType;
1166  uint8_t xb;
1167  uint16_t Count;
1168  uint16_t Extra;
1170 
1171 /* Index 0B U_WMRSETWINDOWORG WMF manual 2.3.5.31
1172  Index 0C U_WMRSETWINDOWEXT WMF manual 2.3.5.30
1173  Index 0D U_WMRSETVIEWPORTORG WMF manual 2.3.5.29
1174  Index 0E U_WMRSETVIEWPORTEXT WMF manual 2.3.5.28
1175  Index 0F U_WMROFFSETWINDOWORG WMF manual 2.3.5.7
1176  Index 0F U_WMROFFSETVIEWPORTORG WMF manual 2.3.5.6
1177  Index 13 U_WMRLINETO WMF manual 2.3.3.10
1178  Index 14 U_WMRMOVETO WMF manual 2.3.3.4
1179  Index 20 U_WMROFFSETCLIPRGN WMF manual 2.3.5.5
1180 */
1184 typedef struct {
1185  uint16_t Size16_4[2];
1186  uint8_t iType;
1187  uint8_t xb;
1188  int16_t y;
1189  int16_t x;
1196  U_WMRLINETO,
1197  U_WMRMOVETO,
1199 
1200 /* Index 10 U_WMRSCALEWINDOWEXT WMF manual 2.3.5.13
1201  Index 12 U_WMRSCALEVIEWPORTEXT WMF manual 2.3.5.12
1202 */
1205 typedef struct {
1206  uint16_t Size16_4[2];
1207  uint8_t iType;
1208  uint8_t xb;
1209  int16_t yDenom;
1210  int16_t yNum;
1211  int16_t xDenom;
1212  int16_t xNum;
1215 
1216 /* Index 11 U_WMROFFSETVIEWPORTORG WMF manual 2.3.5.6 see Index 0B */
1217 
1218 /* Index 12 U_WMRSCALEVIEWPORTEXT WMF manual 2.3.5.12 see Index 10 */
1219 
1220 /* Index 13 U_WMRLINETO WMF manual 2.3.3.10 see index 0B
1221  Index 14 U_WMRMOVETO WMF manual 2.3.5.4 */
1222 
1223 /* Index 15 U_WMREXCLUDECLIPRECT WMF manual 2.3.5.2
1224  Index 16 U_WMRINTERSECTCLIPRECT WMF manual 2.3.5.3
1225 */
1228 typedef struct {
1229  uint16_t Size16_4[2];
1230  uint8_t iType;
1231  uint8_t xb;
1232  int16_t Bottom;
1233  int16_t Right;
1234  int16_t Top;
1235  int16_t Left;
1238 
1239 /* Index 17 U_WMRARC WMF manual 2.3.3.1 */
1242 typedef struct {
1243  uint16_t Size16_4[2];
1244  uint8_t iType;
1245  uint8_t xb;
1246  int16_t yEndArc;
1247  int16_t xEndArc;
1248  int16_t yStartArc;
1249  int16_t xStartArc;
1250  int16_t Bottom;
1251  int16_t Right;
1252  int16_t Top;
1253  int16_t Left;
1254 } U_WMRARC;
1255 
1256 /* Index 18 U_WMRELLIPSE WMF manual 2.3.3.3
1257  Index 1B U_WMRRECTANGLE WMF manual 2.3.3.17
1258 */
1261 typedef struct {
1262  uint16_t Size16_4[2];
1263  uint8_t iType;
1264  uint8_t xb;
1265  int16_t Bottom;
1266  int16_t Right;
1267  int16_t Top;
1268  int16_t Left;
1269 } U_WMRELLIPSE,
1270  U_WMRRECTANGLE;
1271 
1272 /* Index 19 U_WMRFLOODFILL WMF manual 2.3.3.7
1273  Index 48 U_WMREXTFLOODFILL WMF manual 2.3.3.4
1274 */
1277 typedef struct {
1278  uint16_t Size16_4[2];
1279  uint8_t iType;
1280  uint8_t xb;
1281  int16_t Mode;
1283  int16_t y;
1284  int16_t x;
1285 } U_WMRFLOODFILL,
1287 
1288 /* Index 1A U_WMRPIE WMF manual 2.3.3.13
1289  Index 30 U_WMRCHORD WMF manual 2.3.3.2
1290 */
1293 typedef struct {
1294  uint16_t Size16_4[2];
1295  uint8_t iType;
1296  uint8_t xb;
1297  int16_t yRadial2;
1298  int16_t xRadial2;
1299  int16_t yRadial1;
1300  int16_t xRadial1;
1301  int16_t Bottom;
1302  int16_t Right;
1303  int16_t Top;
1304  int16_t Left;
1305 } U_WMRPIE,
1306  U_WMRCHORD;
1307 
1308 /* Index 1B U_WMRRECTANGLE WMF manual 2.3.3.17 See Index 18 */
1309 
1310 /* Index 1C U_WMRROUNDRECT WMF manual 2.3.3.18 */
1313 typedef struct {
1314  uint16_t Size16_4[2];
1315  uint8_t iType;
1316  uint8_t xb;
1317  int16_t Height;
1318  int16_t Width;
1319  int16_t Bottom;
1320  int16_t Right;
1321  int16_t Top;
1322  int16_t Left;
1323 } U_WMRROUNDRECT;
1324 
1325 /* Index 1D U_WMRPATBLT WMF manual 2.3.3.12
1326 */
1329 typedef struct {
1330  uint16_t Size16_4[2];
1331  uint8_t iType;
1332  uint8_t xb;
1333  uint16_t rop3w[2];
1334  int16_t Height;
1335  int16_t Width;
1336  int16_t yDst;
1337  int16_t xDst;
1338 } U_WMRPATBLT;
1339 
1340 /* Index 1E U_WMRSAVEDC WMF manual 2.3.5.11 See Index 00*/
1341 
1342 /* Index 1F U_WMRSETPIXEL WMF manual 2.3.3.19 */
1345 typedef struct {
1346  uint16_t Size16_4[2];
1347  uint8_t iType;
1348  uint8_t xb;
1350  int16_t y;
1351  int16_t x;
1352 } U_WMRSETPIXEL;
1353 
1354 /* Index 20 U_WMROFFSETCLIPRGN WMF manual 2.3.5.5 See Index 0B*/
1355 
1356 /* Index 21 U_WMRTEXTOUT WMF manual 2.3.3.20
1357 */
1365 typedef struct {
1366  uint16_t Size16_4[2];
1367  uint8_t iType;
1368  uint8_t xb;
1369  int16_t Length;
1370  uint8_t String;
1371 } U_WMRTEXTOUT;
1372 
1373 /* Index 22 U_WMRBITBLT WMF manual 2.3.1.1
1374 */
1383 typedef struct {
1384  uint16_t Size16_4[2];
1385  uint8_t iType;
1386  uint8_t xb;
1387  uint16_t rop3w[2];
1388  int16_t ySrc;
1389  int16_t xSrc;
1390  int16_t ignore;
1391  int16_t Height;
1392  int16_t Width;
1393  int16_t yDst;
1394  int16_t xDst;
1396 
1405 typedef struct {
1406  uint16_t Size16_4[2];
1407  uint8_t iType;
1408  uint8_t xb;
1409  uint16_t rop3w[2];
1410  int16_t ySrc;
1411  int16_t xSrc;
1412  int16_t Height;
1413  int16_t Width;
1414  int16_t yDst;
1415  int16_t xDst;
1417 } U_WMRBITBLT_PX;
1418 
1419 
1420 /* Index 23 U_WMRSTRETCHBLT WMF manual 2.3.1.5 */
1429 typedef struct {
1430  uint16_t Size16_4[2];
1431  uint8_t iType;
1432  uint8_t xb;
1433  uint16_t rop3w[2];
1434  int16_t hSrc;
1435  int16_t wSrc;
1436  int16_t ySrc;
1437  int16_t xSrc;
1438  int16_t ignore;
1439  int16_t hDst;
1440  int16_t wDst;
1441  int16_t yDst;
1442  int16_t xDst;
1444 
1445 
1446 /* Index 23 U_WMRSTRETCHBLT WMF manual 2.3.1.5 */
1454 typedef struct {
1455  uint16_t Size16_4[2];
1456  uint8_t iType;
1457  uint8_t xb;
1458  uint16_t rop3w[2];
1459  int16_t hSrc;
1460  int16_t wSrc;
1461  int16_t ySrc;
1462  int16_t xSrc;
1463  int16_t hDst;
1464  int16_t wDst;
1465  int16_t yDst;
1466  int16_t xDst;
1469 
1470 /* Index 24 U_WMRPOLYGON WMF manual 2.3.3.15
1471  Index 25 U_WMRPOLYLINE WMF manual 2.3.3.14
1472 */
1475 typedef struct {
1476  uint16_t Size16_4[2];
1477  uint8_t iType;
1478  uint8_t xb;
1479  int16_t nPoints;
1480  U_POINT16 aPoints[1];
1481 } U_WMRPOLYGON,
1482  U_WMRPOLYLINE;
1483 
1484 /* Index 26 U_WMRESCAPE WMF manual 2.3.6.1 */
1487 typedef struct {
1488  uint16_t Size16_4[2];
1489  uint8_t iType;
1490  uint8_t xb;
1491  uint16_t eFunc;
1492  uint16_t nBytes;
1493  uint8_t Data[1];
1494 } U_WMRESCAPE;
1495 
1496 /* Index 27 U_WMRRESTOREDC WMF manual 2.3.5.10 */
1499 typedef struct {
1500  uint16_t Size16_4[2];
1501  uint8_t iType;
1502  uint8_t xb;
1503  int16_t DC;
1504 } U_WMRRESTOREDC;
1505 
1506 /* Index 28 U_WMRFILLREGION WMF manual 2.3.3.6 */
1509 typedef struct {
1510  uint16_t Size16_4[2];
1511  uint8_t iType;
1512  uint8_t xb;
1513  uint16_t Region;
1514  uint16_t Brush;
1515 } U_WMRFILLREGION;
1516 
1517 /* Index 29 U_WMRFRAMEREGION WMF manual 2.3.3.8 */
1520 typedef struct {
1521  uint16_t Size16_4[2];
1522  uint8_t iType;
1523  uint8_t xb;
1524  uint16_t Region;
1525  uint16_t Brush;
1526  int16_t Height;
1527  int16_t Width;
1529 
1530 /* Index 2A U_WMRINVERTREGION WMF manual 2.3.3.9
1531  Index 2B U_WMRPAINTREGION WMF manual 2.3.3.11
1532  Index 2C U_WMRSELECTCLIPREGION WMF manual 2.3.4.9
1533  Index 2D U_WMRSELECTOBJECT WMF manual 2.3.4.10
1534  Index 34 U_WMRSELECTPALETTE WMF manual 2.3.4.11
1535  Index 39 U_WMRRESIZEPALETTE WMF manual 2.3.5.9
1536  Index F0 U_WMRDELETEOBJECT WMF manual 2.3.4.7
1537 */
1541 typedef struct {
1542  uint16_t Size16_4[2];
1543  uint8_t iType;
1544  uint8_t xb;
1545  uint16_t index;
1553 
1554 /* Index 2E U_WMRSETTEXTALIGN WMF manual 2.3.5.24 See Index 02 */
1555 
1556 /* Index 2F U_WMRDRAWTEXT in GDI and Wine, not documented in WMF manual.
1557  Index FE U_WMRCREATEBITMAP in GDI and Wine, not documented in WMF manual.
1558  Index FD U_WMRCREATEBITMAPINDIRECT in GDI and Wine, not documented in WMF manual.
1559 
1560  no documentation found, this part of these records, at least, must be correct */
1563 typedef struct {
1564  uint16_t Size16_4[2];
1565  uint8_t iType;
1566  uint8_t xb;
1567 } U_WMRDRAWTEXT,
1570 
1571 /* Index 30 U_WMRCHORD WMF manual 2.3.3.2 See Index 1A */
1572 
1573 /* Index 31 U_WMRSETMAPPERFLAGS WMF manual 2.3.5.18 */
1576 typedef struct {
1577  uint16_t Size16_4[2];
1578  uint8_t iType;
1579  uint8_t xb;
1580  uint16_t valuew[2];
1582 
1583 /* Index 32 U_WMREXTTEXTOUT WMF manual 2.3.3.5
1584 */
1595 typedef struct {
1596  uint16_t Size16_4[2];
1597  uint8_t iType;
1598  uint8_t xb;
1599  int16_t y;
1600  int16_t x;
1601  int16_t Length;
1602  uint16_t Opts;
1603 } U_WMREXTTEXTOUT;
1604 
1605 /* Index 33 U_WMRSETDIBTODEV WMF manual 2.3.1.4 */
1610 typedef struct {
1611  uint16_t Size16_4[2];
1612  uint8_t iType;
1613  uint8_t xb;
1614  uint16_t cUsage;
1615  uint16_t ScanCount;
1616  uint16_t StartScan;
1617  int16_t ySrc;
1618  int16_t xSrc;
1619  int16_t Height;
1620  int16_t Width;
1621  int16_t yDst;
1622  int16_t xDst;
1623  uint8_t dib[1];
1625 
1626 /* Index 34 U_WMRSELECTPALETTE WMF manual 2.3.4.11 See Index 2A */
1627 
1628 /* Index 35 U_WMRREALIZEPALETTE WMF manual 2.3.5.8 See Index 00 */
1629 
1630 /* Index 36 U_WMRANIMATEPALETTE WMF manual 2.3.5.1
1631  Index 37 U_WMRSETPALENTRIES WMF manual 2.3.5.19
1632  Index F7 U_WMRCREATEPALETTE WMF manual 2.3.4.3
1633 */
1636 typedef struct {
1637  uint16_t Size16_4[2];
1638  uint8_t iType;
1639  uint8_t xb;
1644 
1645 /* Index 38 U_WMRPOLYPOLYGON WMF manual 2.3.3.16 */
1648 typedef struct {
1649  uint16_t Size16_4[2];
1650  uint8_t iType;
1651  uint8_t xb;
1654 
1655 /* Index 39 U_WMRRESIZEPALETTE WMF manual 2.3.5.9 See Index 2A */
1656 
1657 /* Index 40 U_WMRDIBBITBLT WMF manual 2.3.1.2
1658 */
1668 typedef struct {
1669  uint16_t Size16_4[2];
1670  uint8_t iType;
1671  uint8_t xb;
1672  uint16_t rop3w[2];
1673  int16_t ySrc;
1674  int16_t xSrc;
1675  uint16_t ignore;
1676  int16_t Height;
1677  int16_t Width;
1678  int16_t yDst;
1679  int16_t xDst;
1681 
1691 typedef struct {
1692  uint16_t Size16_4[2];
1693  uint8_t iType;
1694  uint8_t xb;
1695  uint16_t rop3w[2];
1696  int16_t ySrc;
1697  int16_t xSrc;
1698  int16_t Height;
1699  int16_t Width;
1700  int16_t yDst;
1701  int16_t xDst;
1702  uint8_t dib[1];
1704 
1705 /* Index 41 U_WMRDIBSTRETCHBLT WMF manual 2.3.1.3 */
1715 typedef struct {
1716  uint16_t Size16_4[2];
1717  uint8_t iType;
1718  uint8_t xb;
1719  uint16_t rop3w[2];
1720  int16_t hSrc;
1721  int16_t wSrc;
1722  int16_t ySrc;
1723  int16_t xSrc;
1724  uint16_t ignore;
1725  int16_t hDst;
1726  int16_t wDst;
1727  int16_t yDst;
1728  int16_t xDst;
1730 
1740 typedef struct {
1741  uint16_t Size16_4[2];
1742  uint8_t iType;
1743  uint8_t xb;
1744  uint16_t rop3w[2];
1745  int16_t hSrc;
1746  int16_t wSrc;
1747  int16_t ySrc;
1748  int16_t xSrc;
1749  int16_t hDst;
1750  int16_t wDst;
1751  int16_t yDst;
1752  int16_t xDst;
1753  uint8_t dib[1];
1755 
1756 
1757 /* Index 42 U_WMRDIBCREATEPATTERNBRUSH WMF manual 2.3.4.8
1758 */
1768 typedef struct {
1769  uint16_t Size16_4[2];
1770  uint8_t iType;
1771  uint8_t xb;
1772  uint16_t Style;
1773  uint16_t cUsage;
1774  uint8_t Src[1];
1776 
1777 /* Index 43 U_WMRSTRETCHDIB WMF manual 2.3.1.6 */
1780 typedef struct {
1781  uint16_t Size16_4[2];
1782  uint8_t iType;
1783  uint8_t xb;
1784  uint16_t rop3w[2];
1785  uint16_t cUsage;
1786  int16_t hSrc;
1787  int16_t wSrc;
1788  int16_t ySrc;
1789  int16_t xSrc;
1790  int16_t hDst;
1791  int16_t wDst;
1792  int16_t yDst;
1793  int16_t xDst;
1794  uint8_t dib[1];
1795 } U_WMRSTRETCHDIB;
1796 
1797 /* Index 48 U_WMREXTFLOODFILL WMF manual 2.3.3.4 See Index 19*/
1798 /* Index 4C U_WMR4C */
1799 /* Index 4D U_WMR4D */
1800 /* Index 4F U_WMR4F */
1801 /* Index 50 U_WMR50 */
1802 /* Index 52 U_WMR52 */
1803 /* Index 5E U_WMR5E */
1804 /* Index 5F U_WMR5F */
1805 /* Index 60 U_WMR60 */
1806 /* Index 61 U_WMR61 */
1807 /* Index 62 U_WMR62 */
1808 /* Index 63 U_WMR63 */
1809 /* Index 64 U_WMR64 */
1810 /* Index 65 U_WMR65 */
1811 /* Index 66 U_WMR66 */
1812 /* Index 67 U_WMR67 */
1813 /* Index 68 U_WMR68 */
1814 /* Index 69 U_WMR69 */
1815 /* Index 6A U_WMR6A */
1816 /* Index 6B U_WMR6B */
1817 /* Index 6C U_WMR6C */
1818 /* Index 6D U_WMR6D */
1819 /* Index 6E U_WMR6E */
1820 /* Index 6F U_WMR6F */
1821 /* Index 70 U_WMR70 */
1822 /* Index 71 U_WMR71 */
1823 /* Index 72 U_WMR72 */
1824 /* Index 73 U_WMR73 */
1825 /* Index 74 U_WMR74 */
1826 /* Index 75 U_WMR75 */
1827 /* Index 76 U_WMR76 */
1828 /* Index 77 U_WMR77 */
1829 /* Index 78 U_WMR78 */
1830 /* Index 79 U_WMR79 */
1831 /* Index 7A U_WMR7A */
1832 /* Index 7B U_WMR7B */
1833 /* Index 7C U_WMR7C */
1834 /* Index 7D U_WMR7D */
1835 /* Index 7E U_WMR7E */
1836 /* Index 7F U_WMR7F */
1837 /* Index 80 U_WMR80 */
1838 /* Index 81 U_WMR81 */
1839 /* Index 82 U_WMR82 */
1840 /* Index 83 U_WMR83 */
1841 /* Index 84 U_WMR84 */
1842 /* Index 85 U_WMR85 */
1843 /* Index 86 U_WMR86 */
1844 /* Index 87 U_WMR87 */
1845 /* Index 88 U_WMR88 */
1846 /* Index 89 U_WMR89 */
1847 /* Index 8A U_WMR8A */
1848 /* Index 8B U_WMR8B */
1849 /* Index 8C U_WMR8C */
1850 /* Index 8D U_WMR8D */
1851 /* Index 8E U_WMR8E */
1852 /* Index 8F U_WMR8F */
1853 /* Index 90 U_WMR90 */
1854 /* Index 91 U_WMR91 */
1855 /* Index 92 U_WMR92 */
1856 /* Index 93 U_WMR93 */
1857 /* Index 94 U_WMR94 */
1858 /* Index 95 U_WMR95 */
1859 /* Index 96 U_WMR96 */
1860 /* Index 97 U_WMR97 */
1861 /* Index 98 U_WMR98 */
1862 /* Index 99 U_WMR99 */
1863 /* Index 9A U_WMR9A */
1864 /* Index 9B U_WMR9B */
1865 /* Index 9C U_WMR9C */
1866 /* Index 9D U_WMR9D */
1867 /* Index 9E U_WMR9E */
1868 /* Index 9F U_WMR9F */
1869 /* Index A0 U_WMRA0 */
1870 /* Index A1 U_WMRA1 */
1871 /* Index A2 U_WMRA2 */
1872 /* Index A3 U_WMRA3 */
1873 /* Index A4 U_WMRA4 */
1874 /* Index A5 U_WMRA5 */
1875 /* Index A6 U_WMRA6 */
1876 /* Index A7 U_WMRA7 */
1877 /* Index A8 U_WMRA8 */
1878 /* Index A9 U_WMRA9 */
1879 /* Index AA U_WMRAA */
1880 /* Index AB U_WMRAB */
1881 /* Index AC U_WMRAC */
1882 /* Index AD U_WMRAD */
1883 /* Index AE U_WMRAE */
1884 /* Index AF U_WMRAF */
1885 /* Index B0 U_WMRB0 */
1886 /* Index B1 U_WMRB1 */
1887 /* Index B2 U_WMRB2 */
1888 /* Index B3 U_WMRB3 */
1889 /* Index B4 U_WMRB4 */
1890 /* Index B5 U_WMRB5 */
1891 /* Index B6 U_WMRB6 */
1892 /* Index B7 U_WMRB7 */
1893 /* Index B8 U_WMRB8 */
1894 /* Index B9 U_WMRB9 */
1895 /* Index BA U_WMRBA */
1896 /* Index BB U_WMRBB */
1897 /* Index BC U_WMRBC */
1898 /* Index BD U_WMRBD */
1899 /* Index BE U_WMRBE */
1900 /* Index BF U_WMRBF */
1901 /* Index C0 U_WMRC0 */
1902 /* Index C1 U_WMRC1 */
1903 /* Index C2 U_WMRC2 */
1904 /* Index C3 U_WMRC3 */
1905 /* Index C4 U_WMRC4 */
1906 /* Index C5 U_WMRC5 */
1907 /* Index C6 U_WMRC6 */
1908 /* Index C7 U_WMRC7 */
1909 /* Index C8 U_WMRC8 */
1910 /* Index C9 U_WMRC9 */
1911 /* Index CA U_WMRCA */
1912 /* Index CB U_WMRCB */
1913 /* Index CC U_WMRCC */
1914 /* Index CD U_WMRCD */
1915 /* Index CE U_WMRCE */
1916 /* Index CF U_WMRCF */
1917 /* Index D0 U_WMRD0 */
1918 /* Index D1 U_WMRD1 */
1919 /* Index D2 U_WMRD2 */
1920 /* Index D3 U_WMRD3 */
1921 /* Index D4 U_WMRD4 */
1922 /* Index D5 U_WMRD5 */
1923 /* Index D6 U_WMRD6 */
1924 /* Index D7 U_WMRD7 */
1925 /* Index D8 U_WMRD8 */
1926 /* Index D9 U_WMRD9 */
1927 /* Index DA U_WMRDA */
1928 /* Index DB U_WMRDB */
1929 /* Index DC U_WMRDC */
1930 /* Index DD U_WMRDD */
1931 /* Index DE U_WMRDE */
1932 /* Index DF U_WMRDF */
1933 /* Index E0 U_WMRE0 */
1934 /* Index E1 U_WMRE1 */
1935 /* Index E2 U_WMRE2 */
1936 /* Index E3 U_WMRE3 */
1937 /* Index E4 U_WMRE4 */
1938 /* Index E5 U_WMRE5 */
1939 /* Index E6 U_WMRE6 */
1940 /* Index E7 U_WMRE7 */
1941 /* Index E8 U_WMRE8 */
1942 /* Index E9 U_WMRE9 */
1943 /* Index EA U_WMREA */
1944 /* Index EB U_WMREB */
1945 /* Index EC U_WMREC */
1946 /* Index ED U_WMRED */
1947 /* Index EE U_WMREE */
1948 /* Index EF U_WMREF */
1949 /* Index F0 U_WMRDELETEOBJECT WMF manual 2.3.4.7 See Index 2A */
1950 /* Index F1 U_WMRF1 */
1951 /* Index F2 U_WMRF2 */
1952 /* Index F3 U_WMRF3 */
1953 /* Index F4 U_WMRF4 */
1954 /* Index F5 U_WMRF5 */
1955 
1956 /* Index F7 U_WMRCREATEPALETTE WMF manual 2.3.4.3 See Index 36*/
1957 
1958 /* Index F8 U_WMRF8 */
1959 /* Index F9 U_WMRCREATEPATTERNBRUSH WMF manual 2.3.4.4 */
1975 typedef struct {
1976  uint16_t Size16_4[2];
1977  uint8_t iType;
1978  uint8_t xb;
1980 
1981 /* Index FA U_WMRCREATEPENINDIRECT WMF manual 2.3.4.5 */
1984 typedef struct {
1985  uint16_t Size16_4[2];
1986  uint8_t iType;
1987  uint8_t xb;
1990 
1991 /* Index FB U_WMRCREATEFONTINDIRECT WMF manual 2.3.4.2 */
1994 typedef struct {
1995  uint16_t Size16_4[2];
1996  uint8_t iType;
1997  uint8_t xb;
2000 
2001 /* Index FC U_WMRCREATEBRUSHINDIRECT WMF manual 2.3.4.1 */
2004 typedef struct {
2005  uint16_t Size16_4[2];
2006  uint8_t iType;
2007  uint8_t xb;
2010 
2011 /* Index FD U_WMRCREATEBITMAPINDIRECT in GDI and Wine, not in WMF manual, see index 2F */
2012 
2013 /* Index FE U_WMRCREATEBITMAP in GDI and Wine, not in WMF manual, see index 2F */
2014 
2015 /* Index FF U_WMRCREATEREGION WMF manual 2.3.4.6 */
2018 typedef struct {
2019  uint16_t Size16_4[2];
2020  uint8_t iType;
2021  uint8_t xb;
2024 
2025 
2026 
2027 // ************************************************************************************************
2028 // Utility function structures
2029 
2033 typedef struct {
2034  FILE *fp;
2035  size_t allocated;
2036  size_t used;
2037  uint32_t records;
2038  uint16_t ignore;
2039  uint32_t PalEntries;
2040  uint32_t chunk;
2041  char *buf;
2042  uint32_t largest;
2043  uint32_t sumObjects;
2044 } WMFTRACK;
2045 
2055 typedef struct {
2056  uint32_t *table;
2057  size_t allocated;
2058  size_t chunk;
2059  uint32_t lolimit;
2060  uint32_t hilimit;
2061  uint32_t peak;
2062 } WMFHANDLES;
2063 
2065 // ************************************************************************************************
2066 // Prototypes (_set first, then _get)
2067 char *wmr_dup(const char *wmr);
2068 int wmf_start(const char *name, uint32_t initsize, uint32_t chunksize, WMFTRACK **wt);
2069 int wmf_free(WMFTRACK **wt);
2070 int wmf_finish(WMFTRACK *wt);
2071 int wmf_append(U_METARECORD *rec, WMFTRACK *wt, int freerec);
2072 int wmf_header_append(U_METARECORD *rec,WMFTRACK *et, int freerec);
2073 int wmf_readdata(const char *filename, char **contents, size_t*length);
2074 #define wmf_fopen emf_fopen
2075 int wmf_htable_create(uint32_t initsize, uint32_t chunksize, WMFHANDLES **wht);
2076 int wmf_htable_delete(uint32_t *ih, WMFHANDLES *wht);
2077 int wmf_htable_insert(uint32_t *ih, WMFHANDLES *wht);
2078 int wmf_htable_free(WMFHANDLES **wht);
2079 int16_t U_16_checksum(int16_t *buf, int count);
2080 int16_t *dx16_set( int32_t height, uint32_t weight, uint32_t members);
2081 uint32_t U_wmr_properties(uint32_t type);
2082 
2083 uint32_t U_wmr_size(const U_METARECORD *record);
2084 uint32_t U_wmr_values(int idx);
2085 char *U_wmr_names(int idx);
2086 char *U_wmr_escnames(int idx);
2087 
2088 void U_sanerect16(U_RECT16 rc, double *left, double *top, double *right, double *bottom);
2089 
2090 
2091 U_FONT *U_FONT_set(int16_t Height, int16_t Width, int16_t Escapement, int16_t Orientation,
2092  int16_t Weight, uint8_t Italic, uint8_t Underline, uint8_t StrikeOut,
2093  uint8_t CharSet, uint8_t OutPrecision, uint8_t ClipPrecision,
2094  uint8_t Quality, uint8_t PitchAndFamily, char *FaceName);
2096 U_PALETTE *U_PLTENTRY_set(uint16_t Start, uint16_t NumEntries, U_PLTNTRY *Entries);
2097 U_PEN U_PEN_set(uint16_t Style, uint16_t Width, U_COLORREF Color);
2099 U_BITMAP16 *U_BITMAP16_set(const int16_t Type, const int16_t Width, const int16_t Height,
2100  const int16_t LineN, const uint8_t BitsPixel, const char *Bits);
2101 U_SCAN *U_SCAN_set(uint16_t count, uint16_t top, uint16_t bottom, uint16_t *ScanLines);
2102 U_REGION *U_REGION_set(int16_t Size, int16_t sCount, int16_t sMax, U_RECT16 sRect, uint16_t *aScans);
2103 U_WLOGBRUSH U_WLOGBRUSH_set(uint16_t Style, U_COLORREF Color, uint16_t Hatch);
2104 U_PAIRF *U_PAIRF_set(float x, float y);
2105 
2106 char *wdeleteobject_set(uint32_t *ihObject, WMFHANDLES *wht);
2107 char *wselectobject_set(uint32_t ihObject, WMFHANDLES *wht );
2108 char *wcreatepenindirect_set(uint32_t *ihPen, WMFHANDLES *wht, U_PEN pen);
2109 char *wcreatebrushindirect_set(uint32_t *ihBrush, WMFHANDLES *wht, U_WLOGBRUSH lb);
2110 char *wcreatedibpatternbrush_srcdib_set(uint32_t *ihBrush, WMFHANDLES *wht,
2111  uint32_t iUsage, const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px);
2112 char *wcreatedibpatternbrush_srcbm16_set(uint32_t *ihBrush, WMFHANDLES *wht,
2113  uint32_t iUsage, const U_BITMAP16 *Bm16);
2114 char *wcreatepatternbrush_set(uint32_t *ihBrush, WMFHANDLES *wht, U_BITMAP16 *Bm16, char *Pattern);
2115 char *wcreatefontindirect_set(uint32_t *ihFont, WMFHANDLES *wht, U_FONT *uf);
2116 char *wcreatepalette_set(uint32_t *ihPal, WMFHANDLES *wht, U_PALETTE *up);
2117 char *wsetpaletteentries_set(uint32_t *ihPal, WMFHANDLES *wht, const U_PALETTE *Palletes);
2118 char *wcreateregion_set(uint32_t *ihReg, WMFHANDLES *wht, const U_REGION *Region);
2119 char *wbegin_path_set(void);
2120 char *wend_path_set(void);
2121 char *wlinecap_set(int32_t Type);
2122 char *wlinejoin_set(int32_t Type);
2123 char *wmiterlimit_set(int32_t limit);
2124 
2125 
2126 char *U_WMRHEADER_set(U_PAIRF *size,unsigned int dpi);
2127 char *U_WMREOF_set(void);
2128 char *U_WMRSETBKCOLOR_set(U_COLORREF Color);
2129 char *U_WMRSETBKMODE_set(uint16_t Mode);
2130 char *U_WMRSETMAPMODE_set(uint16_t Mode);
2131 char *U_WMRSETROP2_set(uint16_t Mode);
2132 char *U_WMRSETRELABS_set(void);
2133 char *U_WMRSETPOLYFILLMODE_set(uint16_t Mode);
2134 char *U_WMRSETSTRETCHBLTMODE_set(uint16_t Mode);
2135 char *U_WMRSETTEXTCHAREXTRA_set(uint16_t Mode);
2136 char *U_WMRSETTEXTCOLOR_set(U_COLORREF Color);
2137 char *U_WMRSETTEXTJUSTIFICATION_set(uint16_t Count, uint16_t Extra);
2138 char *U_WMRSETWINDOWORG_set(U_POINT16 coord);
2139 char *U_WMRSETWINDOWEXT_set(U_POINT16 extent);
2140 char *U_WMRSETVIEWPORTORG_set(U_POINT16 coord);
2141 char *U_WMRSETVIEWPORTEXT_set(U_POINT16 extent);
2142 char *U_WMROFFSETWINDOWORG_set(U_POINT16 offset);
2143 char *U_WMRSCALEWINDOWEXT_set(U_POINT16 Denom, U_POINT16 Num);
2146 char *U_WMRLINETO_set(U_POINT16 coord);
2147 char *U_WMRMOVETO_set(U_POINT16 coord);
2150 char *U_WMRARC_set(U_POINT16 StartArc, U_POINT16 EndArc, U_RECT16 rect);
2151 char *U_WMRELLIPSE_set(U_RECT16 rect);
2152 char *U_WMRFLOODFILL_set(uint16_t Mode, U_COLORREF Color, U_POINT16 coord);
2153 char *U_WMRPIE_set(U_POINT16 Radial1, U_POINT16 Radial2, U_RECT16 rect);
2154 char *U_WMRRECTANGLE_set(U_RECT16 rect);
2155 char *U_WMRROUNDRECT_set(int16_t Width, int16_t Height, U_RECT16 rect);
2156 char *U_WMRPATBLT_set(U_POINT16 Dst, U_POINT16 cwh, uint32_t dwRop3);
2157 char *U_WMRSAVEDC_set(void);
2158 char *U_WMRSETPIXEL_set(U_COLORREF Color, U_POINT16 coord);
2159 char *U_WMROFFSETCLIPRGN_set(U_POINT16 offset);
2160 char *U_WMRTEXTOUT_set(U_POINT16 Dst, char *string);
2161 char *U_WMRBITBLT_set(U_POINT16 Dst, U_POINT16 cwh, U_POINT16 Src,
2162  uint32_t dwRop3, const U_BITMAP16 *Bm16);
2163 char *U_WMRSTRETCHBLT_set(U_POINT16 Dst, U_POINT16 cDst, U_POINT16 Src,
2164  U_POINT16 cSrc, uint32_t dwRop3, const U_BITMAP16 *Bm16);
2165 char *U_WMRPOLYGON_set(uint16_t Length, const U_POINT16 * Data);
2166 char *U_WMRPOLYLINE_set(uint16_t Length, const U_POINT16 * Data);
2167 char *U_WMRESCAPE_set(uint16_t Escape, uint16_t Length, const void *Data);
2168 char *U_WMRRESTOREDC_set(int16_t DC);
2169 char *U_WMRFILLREGION_set(uint16_t Region, uint16_t Brush);
2170 char *U_WMRFRAMEREGION_set(uint16_t Region, uint16_t Brush, int16_t Height, int16_t Width);
2171 char *U_WMRINVERTREGION_set(uint16_t Region);
2172 char *U_WMRPAINTREGION_set(uint16_t Region);
2173 char *U_WMRSELECTCLIPREGION_set(uint16_t Region);
2174 char *U_WMRSELECTOBJECT_set(uint16_t object);
2175 char *U_WMRSETTEXTALIGN_set(uint16_t Mode);
2176 char *U_WMRDRAWTEXT_set(void); /* in GDI and Wine, not in WMF manual. */
2177 char *U_WMRCHORD_set(U_POINT16 Radial1, U_POINT16 Radial2, U_RECT16 rect);
2178 char *U_WMRSETMAPPERFLAGS_set(uint32_t Mode);
2179 char *U_WMREXTTEXTOUT_set(U_POINT16 Dst, int16_t Length, uint16_t Opts, const char *string, int16_t *dx, U_RECT16 rect);
2180 char *U_WMRSETDIBTODEV_set(void);
2181 char *U_WMRSELECTPALETTE_set(uint16_t Palette);
2182 char *U_WMRREALIZEPALETTE_set(void);
2183 char *U_WMRANIMATEPALETTE_set(U_PALETTE *Palette);
2184 char *U_WMRSETPALENTRIES_set(const U_PALETTE *Palette);
2185 char *U_WMRPOLYPOLYGON_set(const uint16_t, const uint16_t *aPolyCounts, const U_POINT16 * points);
2186 char *U_WMRRESIZEPALETTE_set(uint16_t Palette);
2187 char *U_WMR3A_set(void);
2188 char *U_WMR3B_set(void);
2189 char *U_WMR3C_set(void);
2190 char *U_WMR3D_set(void);
2191 char *U_WMR3E_set(void);
2192 char *U_WMR3F_set(void);
2193 char *U_WMRDIBBITBLT_set(U_POINT16 Dst, U_POINT16 cwh, U_POINT16 Src,
2194  uint32_t dwRop3, const U_BITMAPINFO * Bmi, uint32_t cbPx, const char *Px);
2196  U_POINT16 cSrc, uint32_t dwRop3, const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px);
2197 char *U_WMRDIBCREATEPATTERNBRUSH_set(const uint16_t Style, const uint16_t iUsage,
2198  const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px, const U_BITMAP16 *Bm16);
2199 char *U_WMRSTRETCHDIB_set(U_POINT16 Dest, U_POINT16 cDest, U_POINT16 Src, U_POINT16 cSrc,
2200  const uint16_t cUsage, uint32_t dwRop3, const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px);
2201 char *U_WMR44_set(void);
2202 char *U_WMR45_set(void);
2203 char *U_WMR46_set(void);
2204 char *U_WMR47_set(void);
2205 char *U_WMREXTFLOODFILL_set(uint16_t Mode, U_COLORREF Color, U_POINT16 coord);
2206 char *U_WMR49_set(void);
2207 char *U_WMR4A_set(void);
2208 char *U_WMR4B_set(void);
2209 char *U_WMR4C_set(void);
2210 char *U_WMR4D_set(void);
2211 char *U_WMR4E_set(void);
2212 char *U_WMR4F_set(void);
2213 char *U_WMR50_set(void);
2214 char *U_WMR51_set(void);
2215 char *U_WMRABORTDOC_set(void);
2216 char *U_WMR53_set(void);
2217 char *U_WMR54_set(void);
2218 char *U_WMR55_set(void);
2219 char *U_WMR56_set(void);
2220 char *U_WMR57_set(void);
2221 char *U_WMR58_set(void);
2222 char *U_WMR59_set(void);
2223 char *U_WMR5A_set(void);
2224 char *U_WMR5B_set(void);
2225 char *U_WMR5C_set(void);
2226 char *U_WMR5D_set(void);
2227 char *U_WMR5E_set(void);
2228 char *U_WMR5F_set(void);
2229 char *U_WMR60_set(void);
2230 char *U_WMR61_set(void);
2231 char *U_WMR62_set(void);
2232 char *U_WMR63_set(void);
2233 char *U_WMR64_set(void);
2234 char *U_WMR65_set(void);
2235 char *U_WMR66_set(void);
2236 char *U_WMR67_set(void);
2237 char *U_WMR68_set(void);
2238 char *U_WMR69_set(void);
2239 char *U_WMR6A_set(void);
2240 char *U_WMR6B_set(void);
2241 char *U_WMR6C_set(void);
2242 char *U_WMR6D_set(void);
2243 char *U_WMR6E_set(void);
2244 char *U_WMR6F_set(void);
2245 char *U_WMR70_set(void);
2246 char *U_WMR71_set(void);
2247 char *U_WMR72_set(void);
2248 char *U_WMR73_set(void);
2249 char *U_WMR74_set(void);
2250 char *U_WMR75_set(void);
2251 char *U_WMR76_set(void);
2252 char *U_WMR77_set(void);
2253 char *U_WMR78_set(void);
2254 char *U_WMR79_set(void);
2255 char *U_WMR7A_set(void);
2256 char *U_WMR7B_set(void);
2257 char *U_WMR7C_set(void);
2258 char *U_WMR7D_set(void);
2259 char *U_WMR7E_set(void);
2260 char *U_WMR7F_set(void);
2261 char *U_WMR80_set(void);
2262 char *U_WMR81_set(void);
2263 char *U_WMR82_set(void);
2264 char *U_WMR83_set(void);
2265 char *U_WMR84_set(void);
2266 char *U_WMR85_set(void);
2267 char *U_WMR86_set(void);
2268 char *U_WMR87_set(void);
2269 char *U_WMR88_set(void);
2270 char *U_WMR89_set(void);
2271 char *U_WMR8A_set(void);
2272 char *U_WMR8B_set(void);
2273 char *U_WMR8C_set(void);
2274 char *U_WMR8D_set(void);
2275 char *U_WMR8E_set(void);
2276 char *U_WMR8F_set(void);
2277 char *U_WMR90_set(void);
2278 char *U_WMR91_set(void);
2279 char *U_WMR92_set(void);
2280 char *U_WMR93_set(void);
2281 char *U_WMR94_set(void);
2282 char *U_WMR95_set(void);
2283 char *U_WMR96_set(void);
2284 char *U_WMR97_set(void);
2285 char *U_WMR98_set(void);
2286 char *U_WMR99_set(void);
2287 char *U_WMR9A_set(void);
2288 char *U_WMR9B_set(void);
2289 char *U_WMR9C_set(void);
2290 char *U_WMR9D_set(void);
2291 char *U_WMR9E_set(void);
2292 char *U_WMR9F_set(void);
2293 char *U_WMRA0_set(void);
2294 char *U_WMRA1_set(void);
2295 char *U_WMRA2_set(void);
2296 char *U_WMRA3_set(void);
2297 char *U_WMRA4_set(void);
2298 char *U_WMRA5_set(void);
2299 char *U_WMRA6_set(void);
2300 char *U_WMRA7_set(void);
2301 char *U_WMRA8_set(void);
2302 char *U_WMRA9_set(void);
2303 char *U_WMRAA_set(void);
2304 char *U_WMRAB_set(void);
2305 char *U_WMRAC_set(void);
2306 char *U_WMRAD_set(void);
2307 char *U_WMRAE_set(void);
2308 char *U_WMRAF_set(void);
2309 char *U_WMRB0_set(void);
2310 char *U_WMRB1_set(void);
2311 char *U_WMRB2_set(void);
2312 char *U_WMRB3_set(void);
2313 char *U_WMRB4_set(void);
2314 char *U_WMRB5_set(void);
2315 char *U_WMRB6_set(void);
2316 char *U_WMRB7_set(void);
2317 char *U_WMRB8_set(void);
2318 char *U_WMRB9_set(void);
2319 char *U_WMRBA_set(void);
2320 char *U_WMRBB_set(void);
2321 char *U_WMRBC_set(void);
2322 char *U_WMRBD_set(void);
2323 char *U_WMRBE_set(void);
2324 char *U_WMRBF_set(void);
2325 char *U_WMRC0_set(void);
2326 char *U_WMRC1_set(void);
2327 char *U_WMRC2_set(void);
2328 char *U_WMRC3_set(void);
2329 char *U_WMRC4_set(void);
2330 char *U_WMRC5_set(void);
2331 char *U_WMRC6_set(void);
2332 char *U_WMRC7_set(void);
2333 char *U_WMRC8_set(void);
2334 char *U_WMRC9_set(void);
2335 char *U_WMRCA_set(void);
2336 char *U_WMRCB_set(void);
2337 char *U_WMRCC_set(void);
2338 char *U_WMRCD_set(void);
2339 char *U_WMRCE_set(void);
2340 char *U_WMRCF_set(void);
2341 char *U_WMRD0_set(void);
2342 char *U_WMRD1_set(void);
2343 char *U_WMRD2_set(void);
2344 char *U_WMRD3_set(void);
2345 char *U_WMRD4_set(void);
2346 char *U_WMRD5_set(void);
2347 char *U_WMRD6_set(void);
2348 char *U_WMRD7_set(void);
2349 char *U_WMRD8_set(void);
2350 char *U_WMRD9_set(void);
2351 char *U_WMRDA_set(void);
2352 char *U_WMRDB_set(void);
2353 char *U_WMRDC_set(void);
2354 char *U_WMRDD_set(void);
2355 char *U_WMRDE_set(void);
2356 char *U_WMRDF_set(void);
2357 char *U_WMRE0_set(void);
2358 char *U_WMRE1_set(void);
2359 char *U_WMRE2_set(void);
2360 char *U_WMRE3_set(void);
2361 char *U_WMRE4_set(void);
2362 char *U_WMRE5_set(void);
2363 char *U_WMRE6_set(void);
2364 char *U_WMRE7_set(void);
2365 char *U_WMRE8_set(void);
2366 char *U_WMRE9_set(void);
2367 char *U_WMREA_set(void);
2368 char *U_WMREB_set(void);
2369 char *U_WMREC_set(void);
2370 char *U_WMRED_set(void);
2371 char *U_WMREE_set(void);
2372 char *U_WMREF_set(void);
2373 char *U_WMRDELETEOBJECT_set(uint16_t object);
2374 char *U_WMRF1_set(void);
2375 char *U_WMRF2_set(void);
2376 char *U_WMRF3_set(void);
2377 char *U_WMRF4_set(void);
2378 char *U_WMRF5_set(void);
2379 char *U_WMRF6_set(void);
2380 char *U_WMRCREATEPALETTE_set(U_PALETTE *Palette);
2381 char *U_WMRF8_set(void);
2382 char *U_WMRCREATEPATTERNBRUSH_set(U_BITMAP16 *Bm16, char *Pattern);
2384 char *U_WMRCREATEFONTINDIRECT_set(U_FONT *font);
2386 char *U_WMRCREATEBITMAPINDIRECT_set(void); /* in GDI and Wine, not in WMF manual. */
2387 char *U_WMRCREATEBITMAP_set(void); /* in GDI and Wine, not in WMF manual. */
2388 char *U_WMRCREATEREGION_set(const U_REGION *region);
2389 
2390 int16_t *dx16_get( int32_t height, uint32_t weight, uint32_t members);
2391 size_t U_WMRRECSAFE_get(const char *contents, const char *blimit);
2392 int wmfheader_get(const char *contents, const char *blimit, U_WMRPLACEABLE *Placeable, U_WMRHEADER *Header);
2393 int wmr_arc_points(U_RECT16 rclBox, U_POINT16 ArcStart, U_POINT16 ArcEnd,
2394  int *f1, int f2, U_PAIRF *center, U_PAIRF *start, U_PAIRF *end, U_PAIRF *size );
2395 void U_BITMAPINFOHEADER_get(const char *Bmih, uint32_t *Size, int32_t *Width, int32_t *Height,
2396  uint32_t *Planes, uint32_t *BitCount, uint32_t *Compression, uint32_t *SizeImage,
2397  int32_t *XPelsPerMeter, int32_t *YPelsPerMeter, uint32_t *ClrUsed, uint32_t *ClrImportant);
2398 void U_BITMAPCOREHEADER_get(const char *BmiCh, int32_t *Size, int32_t *Width, int32_t *Height, int32_t *BitCount);
2399 int wget_DIB_params(const char *dib, const char **px, const U_RGBQUAD **ct, int32_t *numCt,
2400  int32_t *width, int32_t *height, int32_t *colortype, int32_t *invert);
2401 int U_WMREOF_get(const char *contents);
2402 int U_WMRSETBKCOLOR_get(const char *contents, U_COLORREF *Color);
2403 int U_WMRSETBKMODE_get(const char *contents, uint16_t *Mode);
2404 int U_WMRSETMAPMODE_get(const char *contents, uint16_t *Mode);
2405 int U_WMRSETROP2_get(const char *contents, uint16_t *Mode);
2406 int U_WMRSETRELABS_get(const char *contents);
2407 int U_WMRSETPOLYFILLMODE_get(const char *contents, uint16_t *Mode);
2408 int U_WMRSETSTRETCHBLTMODE_get(const char *contents, uint16_t *Mode);
2409 int U_WMRSETTEXTCHAREXTRA_get(const char *contents, uint16_t *Mode);
2410 int U_WMRSETTEXTCOLOR_get(const char *contents, U_COLORREF *Color);
2411 int U_WMRSETTEXTJUSTIFICATION_get(const char *contents, uint16_t *Count, uint16_t *Extra);
2412 int U_WMRSETWINDOWORG_get(const char *contents, U_POINT16 * coord);
2413 int U_WMRSETWINDOWEXT_get(const char *contents, U_POINT16 * extent);
2414 int U_WMRSETVIEWPORTORG_get(const char *contents, U_POINT16 * coord);
2415 int U_WMRSETVIEWPORTEXT_get(const char *contents, U_POINT16 * extent);
2416 int U_WMROFFSETWINDOWORG_get(const char *contents, U_POINT16 * offset);
2417 int U_WMRSCALEWINDOWEXT_get(const char *contents, U_POINT16 * Denom, U_POINT16 * Num);
2418 int U_WMROFFSETVIEWPORTORG_get(const char *contents, U_POINT16 * offset);
2419 int U_WMRSCALEVIEWPORTEXT_get(const char *contents, U_POINT16 * Denom, U_POINT16 * Num);
2420 int U_WMRLINETO_get(const char *contents, U_POINT16 * coord);
2421 int U_WMRMOVETO_get(const char *contents, U_POINT16 * coord);
2422 int U_WMREXCLUDECLIPRECT_get(const char *contents, U_RECT16 * rect);
2423 int U_WMRINTERSECTCLIPRECT_get(const char *contents, U_RECT16 * rect);
2424 int U_WMRARC_get(const char *contents, U_POINT16 * StartArc, U_POINT16 * EndArc, U_RECT16 * rect);
2425 int U_WMRELLIPSE_get(const char *contents, U_RECT16 * rect);
2426 int U_WMRFLOODFILL_get(const char *contents, uint16_t *Mode, U_COLORREF *Color, U_POINT16 * coord);
2427 int U_WMRPIE_get(const char *contents, U_POINT16 * Radial1, U_POINT16 * Radial2, U_RECT16 * rect);
2428 int U_WMRRECTANGLE_get(const char *contents, U_RECT16 * rect);
2429 int U_WMRROUNDRECT_get(const char *contents, int16_t *Width, int16_t *Height, U_RECT16 * rect);
2430 int U_WMRPATBLT_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cwh, uint32_t *dwRop3);
2431 int U_WMRSAVEDC_get(const char *contents);
2432 int U_WMRSETPIXEL_get(const char *contents, U_COLORREF *Color, U_POINT16 * coord);
2433 int U_WMROFFSETCLIPRGN_get(const char *contents, U_POINT16 * offset);
2434 int U_WMRTEXTOUT_get(const char *contents, U_POINT16 * Dst, int16_t *Length, const char **string);
2435 int U_WMRBITBLT_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cwh, U_POINT16 * Src, uint32_t *dwRop3, U_BITMAP16 *Bm16, const char **px);
2436 int U_WMRSTRETCHBLT_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cDst, U_POINT16 * Src, U_POINT16 * cSrc, uint32_t *dwRop3, U_BITMAP16 *Bm16, const char **px);
2437 int U_WMRPOLYGON_get(const char *contents, uint16_t *Length, const char **Data);
2438 int U_WMRPOLYLINE_get(const char *contents, uint16_t *Length, const char **Data);
2439 int U_WMRESCAPE_get(const char *contents, uint16_t *Escape, uint16_t *Length, const char **Data);
2440 int U_WMRRESTOREDC_get(const char *contents, int16_t *DC);
2441 int U_WMRFILLREGION_get(const char *contents, uint16_t *Region, uint16_t *Brush);
2442 int U_WMRFRAMEREGION_get(const char *contents, uint16_t *Region, uint16_t *Brush, int16_t *Height, int16_t *Width);
2443 int U_WMRINVERTREGION_get(const char *contents, uint16_t *Region);
2444 int U_WMRPAINTREGION_get(const char *contents, uint16_t *Region);
2445 int U_WMRSELECTCLIPREGION_get(const char *contents, uint16_t *Region);
2446 int U_WMRSELECTOBJECT_get(const char *contents, uint16_t *Object);
2447 int U_WMRSETTEXTALIGN_get(const char *contents, uint16_t *Mode);
2448 int U_WMRDRAWTEXT_get(void); /* in GDI and Wine, not in WMF manual. */
2449 int U_WMRCHORD_get(const char *contents, U_POINT16 * Radial1, U_POINT16 * Radial2, U_RECT16 * rect);
2450 int U_WMRSETMAPPERFLAGS_get(const char *contents, uint32_t *Mode);
2451 int U_WMREXTTEXTOUT_get(const char *contents, U_POINT16 * Dst, int16_t *Length, uint16_t *Opts, const char **string, const int16_t **dx, U_RECT16 * rect);
2452 int U_WMRSETDIBTODEV_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cwh, U_POINT16 * Src, uint16_t *cUsage, uint16_t *ScanCount, uint16_t *StartScan, const char **dib);
2453 int U_WMRSELECTPALETTE_get(const char *contents, uint16_t *Palette);
2454 int U_WMRREALIZEPALETTE_get(const char *contents);
2455 int U_WMRANIMATEPALETTE_get(const char *contents, U_PALETTE *Palette, const char **PalEntries);
2456 int U_WMRSETPALENTRIES_get(const char *contents, U_PALETTE *Palette, const char **PalEntries);
2457 int U_WMRPOLYPOLYGON_get(const char *contents, uint16_t *nPolys, const uint16_t **aPolyCounts, const char **Points);
2458 int U_WMRRESIZEPALETTE_get(const char *contents, uint16_t *Palette);
2459 int U_WMR3A_get(void);
2460 int U_WMR3B_get(void);
2461 int U_WMR3C_get(void);
2462 int U_WMR3D_get(void);
2463 int U_WMR3E_get(void);
2464 int U_WMR3F_get(void);
2465 int U_WMRDIBBITBLT_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cwh, U_POINT16 * Src, uint32_t *dwRop3, const char **dib);
2466 int U_WMRDIBSTRETCHBLT_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cDst, U_POINT16 * Src, U_POINT16 * cSrc, uint32_t *dwRop3, const char **dib);
2467 int U_WMRDIBCREATEPATTERNBRUSH_get(const char *contents, uint16_t *Style, uint16_t *cUsage, const char **Bm16, const char **dib);
2468 int U_WMRSTRETCHDIB_get(const char *contents, U_POINT16 * Dst, U_POINT16 * cDst, U_POINT16 * Src, U_POINT16 * cSrc, uint16_t *cUsage, uint32_t *dwRop3, const char **dib);
2469 int U_WMR44_get(void);
2470 int U_WMR45_get(void);
2471 int U_WMR46_get(void);
2472 int U_WMR47_get(void);
2473 int U_WMREXTFLOODFILL_get(const char *contents, uint16_t *Mode, U_COLORREF *Color, U_POINT16 * coord);
2474 int U_WMR49_get(void);
2475 int U_WMR4A_get(void);
2476 int U_WMR4B_get(void);
2477 int U_WMR4C_get(void);
2478 int U_WMR4D_get(void);
2479 int U_WMR4E_get(void);
2480 int U_WMR4F_get(void);
2481 int U_WMR50_get(void);
2482 int U_WMR51_get(void);
2483 int U_WMRABORTDOC_get(void);
2484 int U_WMR53_get(void);
2485 int U_WMR54_get(void);
2486 int U_WMR55_get(void);
2487 int U_WMR56_get(void);
2488 int U_WMR57_get(void);
2489 int U_WMR58_get(void);
2490 int U_WMR59_get(void);
2491 int U_WMR5A_get(void);
2492 int U_WMR5B_get(void);
2493 int U_WMR5C_get(void);
2494 int U_WMR5D_get(void);
2495 int U_WMR5E_get(void);
2496 int U_WMR5F_get(void);
2497 int U_WMR60_get(void);
2498 int U_WMR61_get(void);
2499 int U_WMR62_get(void);
2500 int U_WMR63_get(void);
2501 int U_WMR64_get(void);
2502 int U_WMR65_get(void);
2503 int U_WMR66_get(void);
2504 int U_WMR67_get(void);
2505 int U_WMR68_get(void);
2506 int U_WMR69_get(void);
2507 int U_WMR6A_get(void);
2508 int U_WMR6B_get(void);
2509 int U_WMR6C_get(void);
2510 int U_WMR6D_get(void);
2511 int U_WMR6E_get(void);
2512 int U_WMR6F_get(void);
2513 int U_WMR70_get(void);
2514 int U_WMR71_get(void);
2515 int U_WMR72_get(void);
2516 int U_WMR73_get(void);
2517 int U_WMR74_get(void);
2518 int U_WMR75_get(void);
2519 int U_WMR76_get(void);
2520 int U_WMR77_get(void);
2521 int U_WMR78_get(void);
2522 int U_WMR79_get(void);
2523 int U_WMR7A_get(void);
2524 int U_WMR7B_get(void);
2525 int U_WMR7C_get(void);
2526 int U_WMR7D_get(void);
2527 int U_WMR7E_get(void);
2528 int U_WMR7F_get(void);
2529 int U_WMR80_get(void);
2530 int U_WMR81_get(void);
2531 int U_WMR82_get(void);
2532 int U_WMR83_get(void);
2533 int U_WMR84_get(void);
2534 int U_WMR85_get(void);
2535 int U_WMR86_get(void);
2536 int U_WMR87_get(void);
2537 int U_WMR88_get(void);
2538 int U_WMR89_get(void);
2539 int U_WMR8A_get(void);
2540 int U_WMR8B_get(void);
2541 int U_WMR8C_get(void);
2542 int U_WMR8D_get(void);
2543 int U_WMR8E_get(void);
2544 int U_WMR8F_get(void);
2545 int U_WMR90_get(void);
2546 int U_WMR91_get(void);
2547 int U_WMR92_get(void);
2548 int U_WMR93_get(void);
2549 int U_WMR94_get(void);
2550 int U_WMR95_get(void);
2551 int U_WMR96_get(void);
2552 int U_WMR97_get(void);
2553 int U_WMR98_get(void);
2554 int U_WMR99_get(void);
2555 int U_WMR9A_get(void);
2556 int U_WMR9B_get(void);
2557 int U_WMR9C_get(void);
2558 int U_WMR9D_get(void);
2559 int U_WMR9E_get(void);
2560 int U_WMR9F_get(void);
2561 int U_WMRA0_get(void);
2562 int U_WMRA1_get(void);
2563 int U_WMRA2_get(void);
2564 int U_WMRA3_get(void);
2565 int U_WMRA4_get(void);
2566 int U_WMRA5_get(void);
2567 int U_WMRA6_get(void);
2568 int U_WMRA7_get(void);
2569 int U_WMRA8_get(void);
2570 int U_WMRA9_get(void);
2571 int U_WMRAA_get(void);
2572 int U_WMRAB_get(void);
2573 int U_WMRAC_get(void);
2574 int U_WMRAD_get(void);
2575 int U_WMRAE_get(void);
2576 int U_WMRAF_get(void);
2577 int U_WMRB0_get(void);
2578 int U_WMRB1_get(void);
2579 int U_WMRB2_get(void);
2580 int U_WMRB3_get(void);
2581 int U_WMRB4_get(void);
2582 int U_WMRB5_get(void);
2583 int U_WMRB6_get(void);
2584 int U_WMRB7_get(void);
2585 int U_WMRB8_get(void);
2586 int U_WMRB9_get(void);
2587 int U_WMRBA_get(void);
2588 int U_WMRBB_get(void);
2589 int U_WMRBC_get(void);
2590 int U_WMRBD_get(void);
2591 int U_WMRBE_get(void);
2592 int U_WMRBF_get(void);
2593 int U_WMRC0_get(void);
2594 int U_WMRC1_get(void);
2595 int U_WMRC2_get(void);
2596 int U_WMRC3_get(void);
2597 int U_WMRC4_get(void);
2598 int U_WMRC5_get(void);
2599 int U_WMRC6_get(void);
2600 int U_WMRC7_get(void);
2601 int U_WMRC8_get(void);
2602 int U_WMRC9_get(void);
2603 int U_WMRCA_get(void);
2604 int U_WMRCB_get(void);
2605 int U_WMRCC_get(void);
2606 int U_WMRCD_get(void);
2607 int U_WMRCE_get(void);
2608 int U_WMRCF_get(void);
2609 int U_WMRD0_get(void);
2610 int U_WMRD1_get(void);
2611 int U_WMRD2_get(void);
2612 int U_WMRD3_get(void);
2613 int U_WMRD4_get(void);
2614 int U_WMRD5_get(void);
2615 int U_WMRD6_get(void);
2616 int U_WMRD7_get(void);
2617 int U_WMRD8_get(void);
2618 int U_WMRD9_get(void);
2619 int U_WMRDA_get(void);
2620 int U_WMRDB_get(void);
2621 int U_WMRDC_get(void);
2622 int U_WMRDD_get(void);
2623 int U_WMRDE_get(void);
2624 int U_WMRDF_get(void);
2625 int U_WMRE0_get(void);
2626 int U_WMRE1_get(void);
2627 int U_WMRE2_get(void);
2628 int U_WMRE3_get(void);
2629 int U_WMRE4_get(void);
2630 int U_WMRE5_get(void);
2631 int U_WMRE6_get(void);
2632 int U_WMRE7_get(void);
2633 int U_WMRE8_get(void);
2634 int U_WMRE9_get(void);
2635 int U_WMREA_get(void);
2636 int U_WMREB_get(void);
2637 int U_WMREC_get(void);
2638 int U_WMRED_get(void);
2639 int U_WMREE_get(void);
2640 int U_WMREF_get(void);
2641 int U_WMRDELETEOBJECT_get(const char *contents, uint16_t *Object);
2642 int U_WMRF1_get(void);
2643 int U_WMRF2_get(void);
2644 int U_WMRF3_get(void);
2645 int U_WMRF4_get(void);
2646 int U_WMRF5_get(void);
2647 int U_WMRF6_get(void);
2648 int U_WMRCREATEPALETTE_get(const char *contents, U_PALETTE *Palette, const char **PalEntries);
2649 int U_WMRF8_get(void);
2650 int U_WMRCREATEPATTERNBRUSH_get(const char *contents, U_BITMAP16 *Bm16, int *pasize, const char **Pattern);
2651 int U_WMRCREATEPENINDIRECT_get(const char *contents, U_PEN *pen);
2652 int U_WMRCREATEFONTINDIRECT_get(const char *contents, const char **font);
2653 int U_WMRCREATEBRUSHINDIRECT_get(const char *contents, const char **brush);
2655 int U_WMRCREATEBITMAP_get(void);
2656 int U_WMRCREATEREGION_get(const char *contents, const char **Region);
2658 
2659 
2660 #ifdef __cplusplus
2661 }
2662 #endif
2663 
2664 #endif /* _UWMF_ */
int U_WMROFFSETVIEWPORTORG_get(const char *contents, U_POINT16 *offset)
Retrieve values from a U_WMROFFSETVIEWPORTORG record.
Definition: uwmf.c:5057
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1389
0x00B0 U_WMRB0 record
Definition: uwmf.h:250
char * U_WMRPAINTREGION_set(uint16_t Region)
Allocate and construct a U_WMRPAINTREGION record.
Definition: uwmf.c:3030
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1104
uint16_t Region
Index of region to frame in object table.
Definition: uwmf.h:1524
uint8_t Green
Palette entry Green Intensity.
Definition: uwmf.h:798
0x003D U_WMR3D record
Definition: uwmf.h:135
0x0055 U_WMR55 record
Definition: uwmf.h:159
U_FONT font
Font Object.
Definition: uwmf.h:1998
0x0538 U_WMRPOLYPOLYGON record
Definition: uwmf.h:130
0x0228 U_WMRFILLREGION record
Definition: uwmf.h:114
uint16_t Style
PenStyle Enumeration.
Definition: uwmf.h:818
Definition: uwmf.h:1083
uint8_t Value
0 or PaletteEntryFlag Enumeration
Definition: uwmf.h:796
0x0211 U_WMROFFSETVIEWPORTORG record
Definition: uwmf.h:91
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1478
struct U_WMRSETWINDOWORG U_WMRLINETO
WMF manual 2.3.3.10, Endpoint X,Y in logical units.
Definition: uwmf.h:1163
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1502
int U_WMRCREATEBITMAP_get(void)
Definition: uwmf.c:6914
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1694
char * U_WMRROUNDRECT_set(int16_t Width, int16_t Height, U_RECT16 rect)
Create and return a U_WMRROUNDRECT record.
Definition: uwmf.c:2713
char * U_WMRESCAPE_set(uint16_t Escape, uint16_t Length, const void *Data)
Allocate and construct a U_WMRESCAPE record. WARNING! Only three Escape record types are fully suppor...
Definition: uwmf.c:2981
0x00D9 U_WMRD9 record
Definition: uwmf.h:291
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1693
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1116
int16_t Width
Average Width in Logical units.
Definition: uwmf.h:776
0x0626 U_WMRESCAPE record
Definition: uwmf.h:112
char * U_WMRCREATEBRUSHINDIRECT_set(U_WLOGBRUSH brush)
Allocate and construct a U_WMRCREATEBRUSHINDIRECT record.
Definition: uwmf.c:4321
U_COLORREF Color
Color.
Definition: uwmf.h:1349
U_WMR_TYPES
WMR Record types.
Definition: uwmf.h:73
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1743
0x0064 U_WMR64 record
Definition: uwmf.h:174
char * U_WMRRECTANGLE_set(U_RECT16 rect)
Create and return a U_WMRRECTANGLE record.
Definition: uwmf.c:2696
uint8_t Italic
LF_Italic Enumeration.
Definition: uwmf.h:780
0x0079 U_WMR79 record
Definition: uwmf.h:195
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1544
0x00AB U_WMRAB record
Definition: uwmf.h:245
0x0088 U_WMR88 record
Definition: uwmf.h:210
uint32_t U_wmr_size(const U_METARECORD *record)
Get record size in bytes from U_WMR* record, which may not be aligned.
Definition: uwmf.c:738
int U_WMRROUNDRECT_get(const char *contents, int16_t *Width, int16_t *Height, U_RECT16 *rect)
Retrieve values from a U_WMRROUNDRECT record.
Definition: uwmf.c:5259
0x00D0 U_WMRD0 record
Definition: uwmf.h:282
int16_t xEndArc
Coordinates in logical units.
Definition: uwmf.h:1247
char * U_WMRSETTEXTCOLOR_set(U_COLORREF Color)
Create and return a U_WMRSETTEXTCOLOR record.
Definition: uwmf.c:2481
struct U_WMRSCALEWINDOWEXT U_WMRSCALEVIEWPORTEXT
WMF manual 2.3.5.12.
0x061C U_WMRROUNDRECT record
Definition: uwmf.h:102
Definition: uwmf.h:1242
char * U_WMRMOVETO_set(U_POINT16 coord)
Create and return a U_WMRMOVETO record.
Definition: uwmf.c:2583
int U_WMRRESIZEPALETTE_get(const char *contents, uint16_t *Palette)
Get data from a U_WMRRESIZEPALETTE record.
Definition: uwmf.c:5853
char * wlinejoin_set(int32_t Type)
Allocate and construct the specified U_WMRESCAPE structure, create a handle and returns it Use this f...
Definition: uwmf.c:2318
int U_WMRDIBBITBLT_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cwh, U_POINT16 *Src, uint32_t *dwRop3, const char **dib)
Get data from a U_WMRDIBITBLT record.
Definition: uwmf.c:5897
int16_t x
X.
Definition: uwmf.h:1351
0x00DF U_WMRDF record
Definition: uwmf.h:297
int16_t U_16_checksum(int16_t *buf, int count)
Calculate the int16_t checksum of the buffer for the number of positions specified. This is XOR of all values.
Definition: uwmf.c:1053
0x0415 U_WMREXCLUDECLIPRECT record
Definition: uwmf.h:95
Definition: uwmf.h:1454
int16_t yDst
in logical units (UL corner to fill)
Definition: uwmf.h:1336
0x0094 U_WMR94 record
Definition: uwmf.h:222
char * buf
Buffer for constructing the EMF in memory.
Definition: uwmf.h:2041
int16_t wSrc
in logical units (of Src)
Definition: uwmf.h:1746
uint16_t Extra
Number of extra space characters to add to the line.
Definition: uwmf.h:1168
int16_t Top
Coordinates in logical units.
Definition: uwmf.h:1252
char * U_WMROFFSETCLIPRGN_set(U_POINT16 offset)
Allocate and construct a U_WMROFFSETCLIPRGN record.
Definition: uwmf.c:2784
int wmf_finish(WMFTRACK *wt)
Finalize the emf in memory and write it to the file.
Definition: uwmf.c:1491
uint16_t index
(usually) index of region/object in object table
Definition: uwmf.h:1545
int U_WMRPOLYPOLYGON_get(const char *contents, uint16_t *nPolys, const uint16_t **aPolyCounts, const char **Points)
Get data from a U_WMR_POLYPOLYGON record.
Definition: uwmf.c:5832
0x0096 U_WMR96 record
Definition: uwmf.h:224
char * U_WMRCREATEBITMAP_set(void)
Definition: uwmf.c:4333
0x0093 U_WMR93 record
Definition: uwmf.h:221
int16_t Weight
LF_Weight Enumeration.
Definition: uwmf.h:779
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1368
int U_WMRSETDIBTODEV_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cwh, U_POINT16 *Src, uint16_t *cUsage, uint16_t *ScanCount, uint16_t *StartScan, const char **dib)
Get data from a U_WMRSETDIBTODEV record.
Definition: uwmf.c:5745
0x00A0 U_WMRA0 record
Definition: uwmf.h:234
int U_WMRSETRELABS_get(const char *contents)
Get data from a U_WMRSETRELABS record.
Definition: uwmf.c:4894
uint16_t ScanCount
Number of scan lines in Src.
Definition: uwmf.h:1615
0x00E0 U_WMRE0 record
Definition: uwmf.h:298
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1717
int16_t Top
in logical units
Definition: uwmf.h:1321
0x0056 U_WMR56 record
Definition: uwmf.h:160
Definition: uwmf.h:2055
0x0830 U_WMRCHORD record
Definition: uwmf.h:122
int U_WMRSETSTRETCHBLTMODE_get(const char *contents, uint16_t *Mode)
Retrieve values from a U_WMRSETSTRETCHBLTMODE record.
Definition: uwmf.c:4919
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1696
int U_WMRMOVETO_get(const char *contents, U_POINT16 *coord)
Retrieve values from a U_WMRMOVETO record.
Definition: uwmf.c:5098
0x007D U_WMR7D record
Definition: uwmf.h:199
0x005E U_WMR5E record
Definition: uwmf.h:168
0x0436 U_WMRANIMATEPALETTE record
Definition: uwmf.h:128
Definition: uwmf.h:1061
int U_WMRARC_get(const char *contents, U_POINT16 *StartArc, U_POINT16 *EndArc, U_RECT16 *rect)
Retrieve values from a U_WMRARC record.
Definition: uwmf.c:5139
char * U_WMRSELECTPALETTE_set(uint16_t Palette)
Allocate and construct a U_WMRSELECTPALETTE record.
Definition: uwmf.c:3158
0x02FC U_WMRCREATEBRUSHINDIRECT record
Definition: uwmf.h:326
int16_t right
right coordinate
Definition: uwmf.h:834
0x005B U_WMR5B record
Definition: uwmf.h:165
char * U_WMRDIBCREATEPATTERNBRUSH_set(const uint16_t Style, const uint16_t iUsage, const U_BITMAPINFO *Bmi, const uint32_t cbPx, const char *Px, const U_BITMAP16 *Bm16)
Allocate and construct a U_WMRDIBCREATEPATTERNBRUSH record. Accepts an image as either a DIB (Bmi/CbP...
Definition: uwmf.c:3404
uint16_t ignore
ignore
Definition: uwmf.h:1675
Definition: uwmf.h:1595
0x00E5 U_WMRE5 record
Definition: uwmf.h:303
char * U_WMRRESIZEPALETTE_set(uint16_t Palette)
Allocate and construct a U_WMRRESIZEPALETTE record.
Definition: uwmf.c:3226
uint16_t Style
BrushStyle Enumeration.
Definition: uwmf.h:1772
char * U_WMRSETMAPMODE_set(uint16_t Mode)
Create and return a U_WMRSETMAPMODE record.
Definition: uwmf.c:2428
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1143
struct U_WMRFLOODFILL U_WMREXTFLOODFILL
WMF manual 2.3.3.7.
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1332
0x00C4 U_WMRC4 record
Definition: uwmf.h:270
0x0086 U_WMR86 record
Definition: uwmf.h:208
int U_WMRBITBLT_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cwh, U_POINT16 *Src, uint32_t *dwRop3, U_BITMAP16 *Bm16, const char **px)
Get data from a U_WMRBITBLT record. Note that unlike U_EMRBITBLT there is no scaling available - the ...
Definition: uwmf.c:5387
0x0104 U_WMRSETROP2 record
Definition: uwmf.h:78
0x00EC U_WMREC record
Definition: uwmf.h:310
int wmf_header_append(U_METARECORD *rec, WMFTRACK *wt, int freerec)
Append an WMF header to a wmf in memory. This may reallocate buf memory. WMF header is not a normal r...
Definition: uwmf.c:1624
0x00F8 U_WMRF8 record
Definition: uwmf.h:322
0x004A U_WMR4A record
Definition: uwmf.h:148
uint8_t String
String to write, storage area must be 2n bytes.
Definition: uwmf.h:1370
Prototypes for functions that manipulate UTF and various types of text.
int U_WMROFFSETWINDOWORG_get(const char *contents, U_POINT16 *offset)
Retrieve values from a U_WMROFFSETWINDOWORG record.
Definition: uwmf.c:5029
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1477
int U_WMREXTFLOODFILL_get(const char *contents, uint16_t *Mode, U_COLORREF *Color, U_POINT16 *coord)
Retrieve values from a U_WMREXTFLOODFILL record.
Definition: uwmf.c:6092
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1792
U_FONT * U_FONT_set(int16_t Height, int16_t Width, int16_t Escapement, int16_t Orientation, int16_t Weight, uint8_t Italic, uint8_t Underline, uint8_t StrikeOut, uint8_t CharSet, uint8_t OutPrecision, uint8_t ClipPrecision, uint8_t Quality, uint8_t PitchAndFamily, char *FaceName)
Create and return a U_FONT structure.
Definition: uwmf.c:773
int U_WMRCREATEPATTERNBRUSH_get(const char *contents, U_BITMAP16 *Bm16, int *pasize, const char **Pattern)
Get data from a U_WMRCREATEPATTERNBRUSH record. Warning - application support for U_WMRCREATEPATTERNB...
Definition: uwmf.c:6847
0x0412 U_WMRSCALEVIEWPORTEXT record
Definition: uwmf.h:92
0x00F4 U_WMRF4 record
Definition: uwmf.h:318
0x008E U_WMR8E record
Definition: uwmf.h:216
uint16_t top
Y coordinate of the top scanline.
Definition: uwmf.h:1045
char * U_WMRLINETO_set(U_POINT16 coord)
Create and return a U_WMRLINETO record.
Definition: uwmf.c:2574
Definition: uwmf.h:1043
uint16_t ignore1
unused value
Definition: uwmf.h:843
Definition: uwmf.h:1072
uint16_t Hatch
HatchStyle Enumeration.
Definition: uwmf.h:980
int U_WMREXCLUDECLIPRECT_get(const char *contents, U_RECT16 *rect)
Retrieve values from a U_WMREXCLUDECLIPRECT record.
Definition: uwmf.c:5111
int16_t xDenom
X denominator.
Definition: uwmf.h:1211
0x0090 U_WMR90 record
Definition: uwmf.h:218
0x0081 U_WMR81 record
Definition: uwmf.h:203
char * U_WMRCREATEBITMAPINDIRECT_set(void)
Definition: uwmf.c:4327
char * U_WMRREALIZEPALETTE_set(void)
Allocate and construct a U_WMRREALIZEPALETTE record.
Definition: uwmf.c:3166
uint16_t Style
BrushStyle Enumeration.
Definition: uwmf.h:978
char * U_WMRSETPALENTRIES_set(const U_PALETTE *Palette)
Allocate and construct a U_WMRSETPALENTRIES record.
Definition: uwmf.c:3184
0x005F U_WMR5F record
Definition: uwmf.h:169
0x0076 U_WMR76 record
Definition: uwmf.h:192
0x00B1 U_WMRB1 record
Definition: uwmf.h:251
uint16_t ignore
ignore
Definition: uwmf.h:1724
struct U_WMRSETWINDOWORG U_WMRSETVIEWPORTORG
WMF manual 2.3.5.29, Viewport X,Y origin.
int U_WMRLINETO_get(const char *contents, U_POINT16 *coord)
Retrieve values from a U_WMRLINETO record.
Definition: uwmf.c:5085
int16_t Height
Height in Logical units.
Definition: uwmf.h:775
0x00A5 U_WMRA5 record
Definition: uwmf.h:239
Definition: uwmf.h:809
0x00D4 U_WMRD4 record
Definition: uwmf.h:286
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1407
char * U_WMRPOLYLINE_set(uint16_t Length, const U_POINT16 *Data)
Allocate and construct a U_WMRPOLYLINE record.
Definition: uwmf.c:2964
0x006E U_WMR6E record
Definition: uwmf.h:184
int16_t wSrc
in logical units (of Src)
Definition: uwmf.h:1721
char * U_WMRSCALEVIEWPORTEXT_set(U_POINT16 Denom, U_POINT16 Num)
Create and return a U_WMRSCALEVIEWPORTEXT record.
Definition: uwmf.c:2565
0x0418 U_WMRELLIPSE record
Definition: uwmf.h:98
int16_t Bottom
Coordinates in logical units.
Definition: uwmf.h:1232
uint16_t Checksum
Checksum of preceding 10 16 bit values.
Definition: uwmf.h:1078
int U_WMRDRAWTEXT_get(void)
Definition: uwmf.c:5648
int U_WMRCREATEPALETTE_get(const char *contents, U_PALETTE *Palette, const char **PalEntries)
Retrieve values from a U_WMRCREATEPALETTE record.
Definition: uwmf.c:6824
int U_WMRINTERSECTCLIPRECT_get(const char *contents, U_RECT16 *rect)
Retrieve values from a U_WMRINTERSECTCLIPRECT record.
Definition: uwmf.c:5124
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1578
0x00CE U_WMRCE record
Definition: uwmf.h:280
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1230
U_COLORREF Color
Pen Color, the 32 bit value is not aligned.
Definition: uwmf.h:820
U_BITMAP16 bitmap
Src bitmap.
Definition: uwmf.h:1416
0x009F U_WMR9F record
Definition: uwmf.h:233
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1793
int16_t Right
in logical units
Definition: uwmf.h:1302
struct U_WMRANIMATEPALETTE U_WMRCREATEPALETTE
WMF manual 2.3.4.3.
0x0049 U_WMR49 record
Definition: uwmf.h:147
char * U_WMRSETWINDOWEXT_set(U_POINT16 extent)
Create and return a U_WMRSETWINDOWEXT record.
Definition: uwmf.c:2509
int U_WMRSETWINDOWORG_get(const char *contents, U_POINT16 *coord)
Retrieve values from a U_WMRSETWINDOWORG record.
Definition: uwmf.c:4976
char * U_WMRSETROP2_set(uint16_t Mode)
Create and return a U_WMRSETROP2 record.
Definition: uwmf.c:2437
int U_WMRSETBKCOLOR_get(const char *contents, U_COLORREF *Color)
Retrieve values from a U_WMRSETBKCOLOR record.
Definition: uwmf.c:4840
Definition: uwmf.h:1975
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1718
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1622
0x0817 U_WMRARC record
Definition: uwmf.h:97
uint8_t BitsPixel
number of adjacent color bits on each plane (R bits + G bits + B bits ????)
Definition: uwmf.h:866
0x004F U_WMR4F record
Definition: uwmf.h:153
int U_WMRTEXTOUT_get(const char *contents, U_POINT16 *Dst, int16_t *Length, const char **string)
Get data from a U_WMRTEXTOUT record.
Definition: uwmf.c:5354
0x008F U_WMR8F record
Definition: uwmf.h:217
char * U_WMRSELECTOBJECT_set(uint16_t object)
Allocate and construct a U_WMRSELECTOBJECT record.
Definition: uwmf.c:3048
int U_WMRCREATEBITMAPINDIRECT_get(void)
Definition: uwmf.c:6908
int16_t hSrc
in logical units (of Src)
Definition: uwmf.h:1745
Coordinates of the upper left, lower right corner. Note that the coordinate system is 0...
Definition: uwmf.h:831
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1367
int16_t y
Y value (note order!)
Definition: uwmf.h:1188
Definition: uwmf.h:1475
struct U_WMREOF U_WMRREALIZEPALETTE
WMF manual 2.3.5.8.
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:2007
char * U_WMRPIE_set(U_POINT16 Radial1, U_POINT16 Radial2, U_RECT16 rect)
Create and return a U_WMRPIE record.
Definition: uwmf.c:2677
0x00CA U_WMRCA record
Definition: uwmf.h:276
int16_t Top
Coordinates in logical units.
Definition: uwmf.h:1267
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1618
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1674
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1064
0x061D U_WMRPATBLT record
Definition: uwmf.h:103
int16_t Height
in logical units (of Src and Dst)
Definition: uwmf.h:1619
U_COLORREF Color
Color.
Definition: uwmf.h:1282
0x00C1 U_WMRC1 record
Definition: uwmf.h:267
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1727
Definition: uwmf.h:1509
0x00D3 U_WMRD3 record
Definition: uwmf.h:285
0x0103 U_WMRSETMAPMODE record
Definition: uwmf.h:77
FILE * fp
Open file.
Definition: uwmf.h:2034
uint32_t chunk
Number of bytes to add when more space is needed.
Definition: uwmf.h:2040
char * U_wmr_escnames(int idx)
Text description of Escape record type.
Definition: uwmf.c:600
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1770
int16_t Width
in logical units (of Src and Dst)
Definition: uwmf.h:1620
char * wcreatepenindirect_set(uint32_t *ihPen, WMFHANDLES *wht, U_PEN pen)
Allocate and construct a U_WMRCREATEPENINDIRECT record, create a handle and returns it Use this funct...
Definition: uwmf.c:2105
0x00DC U_WMRDC record
Definition: uwmf.h:294
U_WLOGBRUSH U_WLOGBRUSH_set(uint16_t Style, U_COLORREF Color, uint16_t Hatch)
Create and return a U_WLOGBRUSH structure.
Definition: uwmf.c:1007
0x00F7 U_WMRCREATEPALETTE record
Definition: uwmf.h:321
0x012D U_WMRSELECTOBJECT record
Definition: uwmf.h:119
uint8_t Red
Palette entry Red Intensity.
Definition: uwmf.h:799
uint16_t eFunc
Escape function.
Definition: uwmf.h:1491
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1348
0x020B U_WMRSETWINDOWORG record
Definition: uwmf.h:85
void U_BITMAPINFOHEADER_get(const char *Bmih, uint32_t *Size, int32_t *Width, int32_t *Height, uint32_t *Planes, uint32_t *BitCount, uint32_t *Compression, uint32_t *SizeImage, int32_t *XPelsPerMeter, int32_t *YPelsPerMeter, uint32_t *ClrUsed, uint32_t *ClrImportant)
Return parameters from a bitinfoheader. All are returned as 32 bit integers, regardless of their inte...
Definition: uwmf.c:4686
char * wmr_dup(const char *wmr)
Duplicate an WMR record.
Definition: uwmf.c:1404
0x0127 U_WMRRESTOREDC record
Definition: uwmf.h:113
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1127
uint16_t Size16w
Total number of 16bit words in record.
Definition: uwmf.h:1086
char * U_WMRSETDIBTODEV_set(void)
Allocate and construct a U_WMRSETDIBTODEV record.
Definition: uwmf.c:3149
For U_LOGCOLORSPACEA and U_LOGCOLORSPACEW lcsEndpints field.
Definition: uemf.h:439
0x0051 U_WMR51 record
Definition: uwmf.h:155
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1441
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1085
0x0099 U_WMR99 record
Definition: uwmf.h:227
Definition: uwmf.h:977
int16_t Right
in logical units
Definition: uwmf.h:1320
int16_t Height
in logical units (of Src and Dst)
Definition: uwmf.h:1676
int16_t Left
in logical units
Definition: uwmf.h:1322
0x006C U_WMR6C record
Definition: uwmf.h:182
0x06FF U_WMRCREATEREGION record
Definition: uwmf.h:329
uint16_t nMembers
Unused, should be 0.
Definition: uwmf.h:1091
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1296
int U_WMRSETTEXTCHAREXTRA_get(const char *contents, uint16_t *Mode)
Retrieve values from a U_WMRSETTEXTCHAREXTRA record.
Definition: uwmf.c:4932
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1457
char * U_WMRRESTOREDC_set(int16_t DC)
Allocate and construct a U_WMRRESTOREDC record.
Definition: uwmf.c:2990
int16_t Bottom
in logical units
Definition: uwmf.h:1301
int16_t Bottom
in logical units
Definition: uwmf.h:1319
0x00EF U_WMREF record
Definition: uwmf.h:313
char * U_WMRANIMATEPALETTE_set(U_PALETTE *Palette)
Allocate and construct a U_WMRSETPALENTRIES record.
Definition: uwmf.c:3175
struct U_WMRINVERTREGION U_WMRPAINTREGION
WMF manual 2.3.3.11, paint region.
int16_t y
in logical units (draw point)
Definition: uwmf.h:1599
char * wcreateregion_set(uint32_t *ihReg, WMFHANDLES *wht, const U_REGION *Region)
Allocate and construct a U_WMRCREATEREGION record, create a handle and returns it Use this function i...
Definition: uwmf.c:2266
U_RECT16 sRect
bounding rectangle
Definition: uwmf.h:849
0x0231 U_WMRSETMAPPERFLAGS record
Definition: uwmf.h:123
0x00E8 U_WMRE8 record
Definition: uwmf.h:306
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1748
int16_t hSrc
in logical units (of Src)
Definition: uwmf.h:1720
0x06FE U_WMRCREATEBITMAP record
Definition: uwmf.h:328
int U_WMRSETPALENTRIES_get(const char *contents, U_PALETTE *Palette, const char **PalEntries)
Get data from a U_WMRSETPALENTRIES record.
Definition: uwmf.c:5816
Definition: uwmf.h:1141
uint16_t count
Number of entries in the ScanLines array.
Definition: uwmf.h:1044
int16_t Height
in logical units (of frame)
Definition: uwmf.h:1526
0x081A U_WMRPIE record
Definition: uwmf.h:100
void U_sanerect16(U_RECT16 rc, double *left, double *top, double *right, double *bottom)
A U_RECT16 may have its values swapped, L&lt;-&gt;R and T&lt;-&gt;B, this extracts the leftmost as left...
Definition: uwmf.c:722
0x0548 U_WMREXTFLOODFILL record
Definition: uwmf.h:146
Definition: uwmf.h:1125
0x00DB U_WMRDB record
Definition: uwmf.h:293
0x00B4 U_WMRB4 record
Definition: uwmf.h:254
0x006F U_WMR6F record
Definition: uwmf.h:185
0x00BE U_WMRBE record
Definition: uwmf.h:264
char * wcreatepatternbrush_set(uint32_t *ihBrush, WMFHANDLES *wht, U_BITMAP16 *Bm16, char *Pattern)
Allocate and construct a U_WMRCREATEPATTERNBRUSH record, create a handle and returns it Use this func...
Definition: uwmf.c:2189
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1613
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1977
0x0059 U_WMR59 record
Definition: uwmf.h:163
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:2020
int U_WMRSCALEVIEWPORTEXT_get(const char *contents, U_POINT16 *Denom, U_POINT16 *Num)
Retrieve values from a U_WMRSCALEVIEWPORTEXT record.
Definition: uwmf.c:5071
int U_WMRDIBCREATEPATTERNBRUSH_get(const char *contents, uint16_t *Style, uint16_t *cUsage, const char **Bm16, const char **dib)
Get data from a U_WMRDIBCREATEPATTERNBRUSH record. Returns an image as either a DIB (Bmi/CbPx/Px defi...
Definition: uwmf.c:5993
Definition: uwmf.h:1365
0x00E6 U_WMRE6 record
Definition: uwmf.h:304
U_WLOGBRUSH brush
WLogBrush Object.
Definition: uwmf.h:2008
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1103
0x009C U_WMR9C record
Definition: uwmf.h:230
0x020F U_WMROFFSETWINDOWORG record
Definition: uwmf.h:89
char * wcreatedibpatternbrush_srcbm16_set(uint32_t *ihBrush, WMFHANDLES *wht, const uint32_t iUsage, const U_BITMAP16 *Bm16)
Allocate and construct a U_WMRCREATEPATTERNBRUSH record from a U_BITMAP16 object. Use this function i...
Definition: uwmf.c:2168
0x00F2 U_WMRF2 record
Definition: uwmf.h:316
0x0058 U_WMR58 record
Definition: uwmf.h:162
uint16_t Width
DIB width in pixels.
Definition: uwmf.h:873
0x005A U_WMR5A record
Definition: uwmf.h:164
0x00E9 U_WMRE9 record
Definition: uwmf.h:307
char * U_WMRTEXTOUT_set(U_POINT16 Dst, char *string)
Allocate and construct a U_WMRTEXTOUT record.
Definition: uwmf.c:2794
Definition: uwmf.h:1184
0x009A U_WMR9A record
Definition: uwmf.h:228
0x008C U_WMR8C record
Definition: uwmf.h:214
int16_t Width
in logical units (rounded corner)
Definition: uwmf.h:1318
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1115
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:2006
int16_t Height
in logical units (of Src and Dst rects)
Definition: uwmf.h:1391
0x00F3 U_WMRF3 record
Definition: uwmf.h:317
0x00A9 U_WMRA9 record
Definition: uwmf.h:243
U_COLORREF Color
Brush Color value, 32 bit value is not aligned.
Definition: uwmf.h:766
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1997
uint32_t maxSize
Largest record in file, in number of 16bit words (This uint32_t is aligned)
Definition: uwmf.h:1090
uint32_t lolimit
Lowest unoccupied table slot, may be a hole created by a deleteobject.
Definition: uwmf.h:2059
int U_WMRSETBKMODE_get(const char *contents, uint16_t *Mode)
Retrieve values from a U_WMRSETBKMODE record.
Definition: uwmf.c:4856
0x0078 U_WMR78 record
Definition: uwmf.h:194
int wmf_start(const char *name, const uint32_t initsize, const uint32_t chunksize, WMFTRACK **wt)
Start constructing an wmf in memory. Supply the file name and initial size.
Definition: uwmf.c:1431
int16_t Width
in logical units (of frame)
Definition: uwmf.h:1527
0x00B6 U_WMRB6 record
Definition: uwmf.h:256
int16_t y
Y.
Definition: uwmf.h:1350
char * U_WMREXTTEXTOUT_set(U_POINT16 Dst, int16_t Length, uint16_t Opts, const char *string, int16_t *dx, U_RECT16 rect)
Allocate and construct a U_WMREXTTEXTOUT record.
Definition: uwmf.c:3107
uint8_t Blue
Palette entry Blue Intensity.
Definition: uwmf.h:797
U_REGION region
Region Object.
Definition: uwmf.h:2022
0x00A7 U_WMRA7 record
Definition: uwmf.h:241
uint8_t iType
RecordType Enumeration, must be 1.
Definition: uwmf.h:1084
U_COLORREF Color
Brush Color value, 32 bit value is not aligned.
Definition: uwmf.h:979
0x0092 U_WMR92 record
Definition: uwmf.h:220
char * U_WMRFILLREGION_set(uint16_t Region, uint16_t Brush)
Allocate and construct a U_WMRFILLREGION record.
Definition: uwmf.c:3000
int U_WMRSETTEXTALIGN_get(const char *contents, uint16_t *Mode)
Get data from a U_WMRSETTEXTALIGN record.
Definition: uwmf.c:5639
0x0213 U_WMRLINETO record
Definition: uwmf.h:93
struct U_WMRINVERTREGION U_WMRSELECTCLIPREGION
WMF manual 2.3.4.9, select as clip region.
int16_t yRadial2
in logical units
Definition: uwmf.h:1297
U_PLTNTRY U_PLTNTRY_set(U_COLORREF Color)
Create and return a U_PLTENTRY structure.
Definition: uwmf.c:817
0x0922 U_WMRBITBLT record
Definition: uwmf.h:108
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1393
int16_t Left
in logical units
Definition: uwmf.h:1304
0x0077 U_WMR77 record
Definition: uwmf.h:193
struct U_WMRANIMATEPALETTE U_WMRSETPALENTRIES
WMF manual 2.3.5.19.
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1489
uint16_t HWmf
0. (Always. Manual says total number of 16bit words in record, but no examples found like that) ...
Definition: uwmf.h:1074
0x0419 U_WMRFLOODFILL record
Definition: uwmf.h:99
0x00B9 U_WMRB9 record
Definition: uwmf.h:259
char * U_WMRSETTEXTALIGN_set(uint16_t Mode)
Allocate and construct a U_WMRSETTEXTALIGN record.
Definition: uwmf.c:3057
Definition: uwmf.h:1293
int16_t xRadial2
in logical units
Definition: uwmf.h:1298
int16_t hDst
Height in logical units of Dst rect.
Definition: uwmf.h:1463
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1432
int16_t WidthBytes
bytes per scan line.
Definition: uwmf.h:864
int16_t y
Y.
Definition: uwmf.h:1283
uint8_t PitchAndFamily
LF_PitchAndFamily Enumeration.
Definition: uwmf.h:787
0x0095 U_WMR95 record
Definition: uwmf.h:223
int16_t Height
in logical units (of Src and Dst rects)
Definition: uwmf.h:1412
0x0108 U_WMRSETTEXTCHAREXTRA record
Definition: uwmf.h:82
char * U_WMRSETSTRETCHBLTMODE_set(uint16_t Mode)
Create and return a U_WMRSETSTRETCHBLTMODE record.
Definition: uwmf.c:2463
int16_t * dx16_get(int32_t height, uint32_t weight, uint32_t members)
Make up an approximate dx array to pass to U_WMREXTTEXTOUT_get(), based on character height and weigh...
Definition: uwmf.c:4377
0x003A U_WMR3A record
Definition: uwmf.h:132
Definition: uwmf.h:795
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:2021
0x00C7 U_WMRC7 record
Definition: uwmf.h:273
Definition: uwmf.h:1101
0x004B U_WMR4B record
Definition: uwmf.h:149
0x0940 U_WMRDIBBITBLT record
Definition: uwmf.h:138
0x012E U_WMRSETTEXTALIGN record
Definition: uwmf.h:120
int16_t wSrc
Wdith in logical units of Dst rect.
Definition: uwmf.h:1435
int U_WMRELLIPSE_get(const char *contents, U_RECT16 *rect)
Retrieve values from a U_WMRELLIPSE record.
Definition: uwmf.c:5165
Definition: uwmf.h:1487
Definition: uwmf.h:1768
int16_t xNum
X numerator.
Definition: uwmf.h:1212
char * U_WMRSETRELABS_set(void)
Allocate and construct a U_WMRSETRELABS record.
Definition: uwmf.c:2445
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1245
int wmf_htable_free(WMFHANDLES **wht)
Free all memory in an htable. Sets the pointer to NULL.
Definition: uwmf.c:1752
int wget_DIB_params(const char *dib, const char **px, const U_RGBQUAD **ct, int32_t *numCt, int32_t *width, int32_t *height, int32_t *colortype, int32_t *invert)
Assume a packed DIB and get the parameters from it, use by DBI_to_RGBA()
Definition: uwmf.c:4730
uint32_t Reserved
must be 0
Definition: uwmf.h:1077
int16_t nPoints
Number of points in aPoints.
Definition: uwmf.h:1479
int16_t x
X value.
Definition: uwmf.h:1189
0x0083 U_WMR83 record
Definition: uwmf.h:205
int U_WMRSELECTCLIPREGION_get(const char *contents, uint16_t *Region)
Get data from a U_WMRSELECTCLIPREGION record.
Definition: uwmf.c:5612
0x0416 U_WMRINTERSECTCLIPRECT record
Definition: uwmf.h:96
struct U_WMRDRAWTEXT U_WMRCREATEBITMAP
in GDI and Wine, not documented in WMF manual.
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1408
struct U_WMREOF U_WMRSETRELABS
WMF manual 2.3.5.21.
0x01F9 U_WMRCREATEPATTERNBRUSH record
Definition: uwmf.h:323
size_t used
Amount consumed.
Definition: uwmf.h:2036
0x0047 U_WMR47 record
Definition: uwmf.h:145
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1165
0x00C0 U_WMRC0 record
Definition: uwmf.h:266
int U_WMRSETVIEWPORTEXT_get(const char *contents, U_POINT16 *extent)
Retrieve values from a U_WMRSETVIEWPORTEXT record.
Definition: uwmf.c:5016
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1490
int U_WMRDIBSTRETCHBLT_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cDst, U_POINT16 *Src, U_POINT16 *cSrc, uint32_t *dwRop3, const char **dib)
Get data from a U_WMRSTRETCHDIB record.
Definition: uwmf.c:5943
uint16_t ignore
size padding,not used
Definition: uwmf.h:2038
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1280
uint32_t peak
Highest table slot occupied (ever)
Definition: uwmf.h:2061
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1186
char * U_WMRSTRETCHDIB_set(U_POINT16 Dst, U_POINT16 cDst, U_POINT16 Src, U_POINT16 cSrc, uint16_t cUsage, uint32_t dwRop3, const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px)
Allocate and construct a U_WMRSTRETCHDIB record.
Definition: uwmf.c:3460
0x02FD U_WMRCREATEBITMAPINDIRECT record
Definition: uwmf.h:327
int U_WMRSETMAPPERFLAGS_get(const char *contents, uint32_t *Mode)
Get data from a U_WMRSETMAPPERFLAGS record.
Definition: uwmf.c:5686
0x007A U_WMR7A record
Definition: uwmf.h:196
int U_WMRSCALEWINDOWEXT_get(const char *contents, U_POINT16 *Denom, U_POINT16 *Num)
Retrieve values from a U_WMRSCALEWINDOWEXT record.
Definition: uwmf.c:5043
int16_t sCount
number of scanlines in region
Definition: uwmf.h:847
U_SCAN * U_SCAN_set(uint16_t count, uint16_t top, uint16_t bottom, uint16_t *ScanLines)
Create and return a U_SCAN structure.
Definition: uwmf.c:942
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1789
0x0073 U_WMR73 record
Definition: uwmf.h:189
0x003E U_WMR3E record
Definition: uwmf.h:136
0x0325 U_WMRPOLYLINE record
Definition: uwmf.h:111
int16_t yRadial1
in logical units
Definition: uwmf.h:1299
0x00E1 U_WMRE1 record
Definition: uwmf.h:299
int16_t hDst
in logical units (of Dst)
Definition: uwmf.h:1749
0x00BA U_WMRBA record
Definition: uwmf.h:260
int U_WMRPOLYLINE_get(const char *contents, uint16_t *Length, const char **Data)
Get data from a U_WMRPOLYLINE record.
Definition: uwmf.c:5502
uint16_t Reserved
Ignore (ALSO OPTIONAL - FIELD MAY NOT BE PRESENT!!!!)
Definition: uwmf.h:1130
int16_t Height
in logical units (of Src and Dst)
Definition: uwmf.h:1698
int16_t yNum
Y numerator.
Definition: uwmf.h:1210
struct U_WMRSETBKMODE U_WMRSETROP2
WMF manual 2.3.5.22 Binary Raster Operation Enumeration.
0x00EB U_WMREB record
Definition: uwmf.h:309
Definition: uwmf.h:842
int16_t Orientation
Angle in 0.1 degrees between baseline and X axis.
Definition: uwmf.h:778
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1462
int U_WMRRESTOREDC_get(const char *contents, int16_t *DC)
Get data from a U_WMRRESTOREDC record.
Definition: uwmf.c:5539
U_POLYPOLYGON PPolygon
PolyPolygon object (size is variable!)
Definition: uwmf.h:1652
0x02FB U_WMRCREATEFONTINDIRECT record
Definition: uwmf.h:325
0x00DA U_WMRDA record
Definition: uwmf.h:292
struct U_WMRINVERTREGION U_WMRDELETEOBJECT
WMF manual 2.3.4.7, delete object.
Definition: uwmf.h:1228
0x007E U_WMR7E record
Definition: uwmf.h:200
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1996
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1388
Structures, definitions, and function prototypes for EMF files.
Definition: uwmf.h:1740
uint32_t records
Number of records already contained.
Definition: uwmf.h:2037
0x0B23 U_WMRSTRETCHBLT record
Definition: uwmf.h:109
int16_t hSrc
Height in logical units of Src rect.
Definition: uwmf.h:1434
uint8_t OutPrecision
LF_OutPrecision Enumeration.
Definition: uwmf.h:784
uint16_t StartScan
First Scan line in Src.
Definition: uwmf.h:1616
Definition: uwmf.h:1563
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1612
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1415
int16_t Right
Coordinates in logical units.
Definition: uwmf.h:1251
int16_t x
in logical units (draw point)
Definition: uwmf.h:1600
uint16_t ignore2
unused value
Definition: uwmf.h:845
0x00A2 U_WMRA2 record
Definition: uwmf.h:236
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1315
Point type for 16 bit EMR drawing functions.
Definition: uemf.h:541
0x004E U_WMR4E record
Definition: uwmf.h:152
0x0050 U_WMR50 record
Definition: uwmf.h:154
int U_WMRPATBLT_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cwh, uint32_t *dwRop3)
Get data from a U_WMRPATBLT record.
Definition: uwmf.c:5285
int16_t Bottom
Coordinates in logical units.
Definition: uwmf.h:1265
int16_t Type
&quot;bitmap type&quot; MS PDF does not define this field beyond this.
Definition: uwmf.h:861
0x0220 U_WMROFFSETCLIPRGN record
Definition: uwmf.h:106
int16_t wDst
in logical units (of Dst)
Definition: uwmf.h:1726
uint8_t Quality
LF_Quality Enumeration.
Definition: uwmf.h:786
0x0046 U_WMR46 record
Definition: uwmf.h:144
0x0067 U_WMR67 record
Definition: uwmf.h:177
int16_t Bottom
Coordinates in logical units.
Definition: uwmf.h:1250
int16_t left
left coordinate
Definition: uwmf.h:832
int wmf_readdata(const char *filename, char **contents, size_t *length)
Retrieve contents of an WMF file by name.
Definition: uwmf.c:1535
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1347
0x0045 U_WMR45 record
Definition: uwmf.h:143
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1394
struct U_WMRINVERTREGION U_WMRSELECTOBJECT
WMF manual 2.3.4.10, select object.
struct U_WMRSETWINDOWORG U_WMRSETVIEWPORTEXT
WMF manual 2.3.5.28, Viewport X,Y extent.
char * wdeleteobject_set(uint32_t *ihObject, WMFHANDLES *wht)
Allocate and construct a U_WMRDELETEOBJECT record and also delete the requested object from the table...
Definition: uwmf.c:2065
struct U_WMRPOLYGON U_WMRPOLYLINE
WMF manual 2.3.3.14.
int16_t sMax
largest number of points in any scan
Definition: uwmf.h:848
int U_WMRRECTANGLE_get(const char *contents, U_RECT16 *rect)
Retrieve values from a U_WMRRECTANGLE record.
Definition: uwmf.c:5237
char * U_WMRSELECTCLIPREGION_set(uint16_t Region)
Allocate and construct a U_WMRSELECTCLIPREGION record.
Definition: uwmf.c:3039
int U_WMRSETTEXTJUSTIFICATION_get(const char *contents, uint16_t *Count, uint16_t *Extra)
Retrieve values from a U_WMRSETTEXTJUSTIFICATION record.
Definition: uwmf.c:4962
char * wend_path_set(void)
Allocate and construct the specified U_WMRESCAPE structure, create a handle and returns it Use this f...
Definition: uwmf.c:2291
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1986
int16_t wDst
in logical units (of Dst)
Definition: uwmf.h:1791
0x007F U_WMR7F record
Definition: uwmf.h:201
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1414
0x00D5 U_WMRD5 record
Definition: uwmf.h:287
char * U_WMRSAVEDC_set(void)
Allocate and construct a U_WMRSAVEDC record.
Definition: uwmf.c:2759
0x00AC U_WMRAC record
Definition: uwmf.h:246
int U_WMRPIE_get(const char *contents, U_POINT16 *Radial1, U_POINT16 *Radial2, U_RECT16 *rect)
Retrieve values from a U_WMRPIE record.
Definition: uwmf.c:5211
0x0060 U_WMR60 record
Definition: uwmf.h:170
0x0052 U_WMR52 record
Definition: uwmf.h:156
int U_WMRSTRETCHBLT_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cDst, U_POINT16 *Src, U_POINT16 *cSrc, uint32_t *dwRop3, U_BITMAP16 *Bm16, const char **px)
Get data from a U_WMRSTRETCHBLT record.
Definition: uwmf.c:5437
int U_WMREXTTEXTOUT_get(const char *contents, U_POINT16 *Dst, int16_t *Length, uint16_t *Opts, const char **string, const int16_t **dx, U_RECT16 *rect)
Get data from a U_WMREXTTEXTOUT record.
Definition: uwmf.c:5707
0x0D33 U_WMRSETDIBTODEV record
Definition: uwmf.h:125
char * U_WMRHEADER_set(U_PAIRF *size, unsigned int dpi)
Set up fields for a (placeable) WMR_HEADER. Most of the fields are blank and are not set until all is...
Definition: uwmf.c:2356
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1597
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1728
char * U_WMRSETBKMODE_set(uint16_t Mode)
Create and return a U_WMRSETBKMODE record.
Definition: uwmf.c:2419
Definition: uwmf.h:1691
int16_t xStartArc
Coordinates in logical units.
Definition: uwmf.h:1249
struct U_WMRSETBKMODE U_WMRSETPOLYFILLMODE
WMF manual 2.3.5.20 Mode = PolyFillMode Enumeration.
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1436
U_RECT16 U_RECT16_set(U_POINT16 ul, U_POINT16 lr)
Create and return a U_RECT16 structure from Upper Left and Lower Right corner points.
Definition: uwmf.c:878
0x0098 U_WMR98 record
Definition: uwmf.h:226
0x0106 U_WMRSETPOLYFILLMODE record
Definition: uwmf.h:80
char * U_WMRCHORD_set(U_POINT16 Radial1, U_POINT16 Radial2, U_RECT16 rect)
Create and return a U_WMRCHORD record.
Definition: uwmf.c:3074
For U_EMR_* OffBmi* fields.
Definition: uemf.h:2020
0x0234 U_WMRSELECTPALETTE record
Definition: uwmf.h:126
char * U_WMRCREATEPENINDIRECT_set(U_PEN pen)
Allocate and construct a U_WMRCREATEPENINDIRECT record.
Definition: uwmf.c:4292
0x0071 U_WMR71 record
Definition: uwmf.h:187
char * U_WMROFFSETWINDOWORG_set(U_POINT16 offset)
Create and return a U_WMROFFSETWINDOWORG record.
Definition: uwmf.c:2536
struct U_WMRPIE U_WMRCHORD
WMF manual 2.3.3.2.
0x0102 U_WMRSETBKMODE record
Definition: uwmf.h:76
uint16_t BitCount
Pixel Format (BitCount Enumeration)
Definition: uwmf.h:876
char * U_WMREOF_set(void)
Allocate and construct a U_WMREOF record.
Definition: uwmf.c:2401
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1670
0x014D U_WMR4D record
Definition: uwmf.h:151
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1466
char * wcreatebrushindirect_set(uint32_t *ihBrush, WMFHANDLES *wht, U_WLOGBRUSH lb)
Allocate and construct a U_WMRCREATEBRUSHINDIRECT record, create a handle and returns it Use this fun...
Definition: uwmf.c:2124
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1579
0x0085 U_WMR85 record
Definition: uwmf.h:207
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1410
Definition: uwmf.h:1405
struct U_WMRSETWINDOWORG U_WMRMOVETO
WMF manual 2.3.3.4, Destination X,Y in logical units.
0x012C U_WMRSELECTCLIPREGION record
Definition: uwmf.h:118
char * U_WMRSCALEWINDOWEXT_set(U_POINT16 Denom, U_POINT16 Num)
Create and return a U_WMRSCALEWINDOWEXT record.
Definition: uwmf.c:2546
0x0105 U_WMRSETRELABS record
Definition: uwmf.h:79
0x0054 U_WMR54 record
Definition: uwmf.h:158
U_PALETTE Palette
Palette object.
Definition: uwmf.h:1640
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1442
uint16_t version
Metafile version Enumeration.
Definition: uwmf.h:1087
Definition: uwmf.h:1205
U_PEN pen
Pen Object.
Definition: uwmf.h:1988
0x007C U_WMR7C record
Definition: uwmf.h:198
0x0062 U_WMR62 record
Definition: uwmf.h:172
Definition: uwmf.h:1636
0x00E3 U_WMRE3 record
Definition: uwmf.h:301
char * wmiterlimit_set(int32_t limit)
Allocate and construct the specified U_WMRESCAPE structure, create a handle and returns it Use this f...
Definition: uwmf.c:2335
int U_WMRCHORD_get(const char *contents, U_POINT16 *Radial1, U_POINT16 *Radial2, U_RECT16 *rect)
Retrieve values from a U_WMRCHORD record.
Definition: uwmf.c:5660
int16_t Length
Stringlength in bytes.
Definition: uwmf.h:1601
0x00B2 U_WMRB2 record
Definition: uwmf.h:252
uint16_t Mode
Various Enumeraton and other.
Definition: uwmf.h:1145
0x00C2 U_WMRC2 record
Definition: uwmf.h:268
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1565
Prototypes for functions for converting WMF records between Big Endian and Little Endian...
int16_t Width
in logical units (of Src and Dst rects)
Definition: uwmf.h:1392
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1723
char * U_WMRCREATEPALETTE_set(U_PALETTE *Palette)
Create and return a U_WMRCREATEPALETTE record.
Definition: uwmf.c:4248
char * U_WMRSETPOLYFILLMODE_set(uint16_t Mode)
Create and return a U_WMRSETPOLYFILLMODE record.
Definition: uwmf.c:2454
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1411
0x006D U_WMR6D record
Definition: uwmf.h:183
0x0139 U_WMRRESIZEPALETTE record
Definition: uwmf.h:131
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1638
int16_t ignore
ignore
Definition: uwmf.h:1390
U_PEN U_PEN_set(uint16_t Style, uint16_t Width, U_COLORREF Color)
Create and return a U_PEN structure.
Definition: uwmf.c:857
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1264
Definition: uwmf.h:1329
0x020A U_WMRSETTEXTJUSTIFICATION record
Definition: uwmf.h:84
0x00A1 U_WMRA1 record
Definition: uwmf.h:235
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1752
int U_WMRSTRETCHDIB_get(const char *contents, U_POINT16 *Dst, U_POINT16 *cDst, U_POINT16 *Src, U_POINT16 *cSrc, uint16_t *cUsage, uint32_t *dwRop3, const char **dib)
Get data from a U_WMRSTRETCHDIB record.
Definition: uwmf.c:6039
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1543
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1208
0x00AA U_WMRAA record
Definition: uwmf.h:244
char * U_WMRARC_set(U_POINT16 StartArc, U_POINT16 EndArc, U_RECT16 rect)
Create and return a U_WMRARC record.
Definition: uwmf.c:2624
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1465
0x00A8 U_WMRA8 record
Definition: uwmf.h:242
0x020C U_WMRSETWINDOWEXT record
Definition: uwmf.h:86
int16_t xDst
in logical units (UL corner to fill)
Definition: uwmf.h:1337
int16_t hSrc
Height in logical units of Src rect.
Definition: uwmf.h:1459
int16_t hSrc
in logical units (of Src)
Definition: uwmf.h:1786
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1617
0x00BF U_WMRBF record
Definition: uwmf.h:265
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1263
U_REGION * U_REGION_set(int16_t Size, int16_t sCount, int16_t sMax, U_RECT16 sRect, uint16_t *aScans)
Create and return a U_REGION structure.
Definition: uwmf.c:969
Definition: uwmf.h:2004
int16_t top
top coordinate
Definition: uwmf.h:833
char * U_WMRINVERTREGION_set(uint16_t Region)
Allocate and construct a U_WMRINVERTREGION record.
Definition: uwmf.c:3021
int16_t x
X.
Definition: uwmf.h:1284
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1437
int U_WMRSELECTPALETTE_get(const char *contents, uint16_t *Palette)
Get data from a U_WMRSELECTPALETTE record.
Definition: uwmf.c:5776
Definition: uwmf.h:1994
uint16_t Mode
Various Enumeraton.
Definition: uwmf.h:1129
0x0070 U_WMR70 record
Definition: uwmf.h:186
0x00D8 U_WMRD8 record
Definition: uwmf.h:290
0x0A32 U_WMREXTTEXTOUT record
Definition: uwmf.h:124
uint8_t StrikeOut
LF_StrikeOut Enumeration.
Definition: uwmf.h:782
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1650
int U_WMRDELETEOBJECT_get(const char *contents, uint16_t *Object)
Get data from a U_WMRDELETEOBJECT record.
Definition: uwmf.c:6784
0x0053 U_WMR53 record
Definition: uwmf.h:157
0x0080 U_WMR80 record
Definition: uwmf.h:202
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1671
0x001E U_WMRSAVEDC record
Definition: uwmf.h:104
struct U_WMRSETWINDOWORG U_WMROFFSETWINDOWORG
WMF manual 2.3.5.7, Window X,Y offset in device units.
Definition: uemf.h:1617
U_BITMAP16 * U_BITMAP16_set(const int16_t Type, const int16_t Width, const int16_t Height, const int16_t LineN, const uint8_t BitsPixel, const char *Bits)
Create and return a U_BITMAP16 structure.
Definition: uwmf.c:900
char * U_WMRCREATEREGION_set(const U_REGION *region)
Allocate and construct a U_WMRCREATEREGION record.
Definition: uwmf.c:4342
uint16_t Start
Either 0x0300 or an offset into the Palette table.
Definition: uwmf.h:810
uint32_t sumObjects
Number of objects created (used by WMF, not by EMF)
Definition: uwmf.h:2043
Definition: uwmf.h:1715
uint16_t Opts
ExtTextOutOptions Flags.
Definition: uwmf.h:1602
struct U_WMRSETWINDOWORG U_WMRSETWINDOWEXT
WMF manual 2.3.5.30, Window X,Y extent.
struct U_WMRINVERTREGION U_WMRSELECTPALETTE
WMF manual 2.3.4.11, select palette object.
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1386
int U_WMRESCAPE_get(const char *contents, uint16_t *Escape, uint16_t *Length, const char **Data)
Get data from a U_WMRESCAPE record. WARNING! Only three Escape record types are fully supported: SETL...
Definition: uwmf.c:5524
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1385
uint32_t U_wmr_properties(uint32_t type)
Look up the properties (a bit map) of a type of WMR record. Bits that may be set are defined in &quot;Draw...
Definition: uwmf.c:1118
uint16_t cUsage
See table above.
Definition: uwmf.h:1773
0x00CB U_WMRCB record
Definition: uwmf.h:277
int16_t wSrc
in logical units (of Src)
Definition: uwmf.h:1787
U_PALETTE * U_PLTENTRY_set(uint16_t Start, uint16_t NumEntries, U_PLTNTRY *PalEntries)
Create and return a U_PALETTE structure.
Definition: uwmf.c:833
char * U_WMRDRAWTEXT_set(void)
Definition: uwmf.c:3063
int16_t Right
Coordinates in logical units.
Definition: uwmf.h:1266
0x0066 U_WMR66 record
Definition: uwmf.h:176
struct U_WMREOF U_WMRSAVEDC
WMF manual 2.3.5.11.
uint8_t Underline
LF_Underline Enumeration.
Definition: uwmf.h:781
0x00CF U_WMRCF record
Definition: uwmf.h:281
int wmfheader_get(const char *contents, const char *blimit, U_WMRPLACEABLE *Placeable, U_WMRHEADER *Header)
Get data from a (placeable) WMR_HEADER.
Definition: uwmf.c:4796
int16_t Right
Coordinates in logical units.
Definition: uwmf.h:1233
int16_t Height
bitmap height in scan lines.
Definition: uwmf.h:863
char * U_WMRINTERSECTCLIPRECT_set(U_RECT16 rect)
Create and return a U_WMRINTERSECTCLIPRECT record.
Definition: uwmf.c:2607
0x01F0 U_WMRDELETEOBJECT record
Definition: uwmf.h:314
int U_WMRSETWINDOWEXT_get(const char *contents, U_POINT16 *extent)
Retrieve values from a U_WMRSETWINDOWEXT record.
Definition: uwmf.c:4989
int U_WMRSETROP2_get(const char *contents, uint16_t *Mode)
Retrieve values from a U_WMRSETROP2 record.
Definition: uwmf.c:4882
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1523
0x0065 U_WMR65 record
Definition: uwmf.h:175
int U_WMRINVERTREGION_get(const char *contents, uint16_t *Region)
Get data from a U_WMRINVERTREGION record.
Definition: uwmf.c:5586
int wmf_append(U_METARECORD *rec, WMFTRACK *wt, int freerec)
Append an WMF record to a wmf in memory. This may reallocate buf memory.
Definition: uwmf.c:1580
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1771
int16_t Top
Coordinates in logical units.
Definition: uwmf.h:1234
char * U_WMRPOLYPOLYGON_set(const uint16_t nPolys, const uint16_t *aPolyCounts, const U_POINT16 *Points)
Allocate and construct a U_WMR_POLYPOLYGON record.
Definition: uwmf.c:3195
Definition: uwmf.h:1019
struct U_WMREXCLUDECLIPRECT U_WMRINTERSECTCLIPRECT
WMF manual 2.3.5.3.
0x0097 U_WMR97 record
Definition: uwmf.h:225
0x00A6 U_WMRA6 record
Definition: uwmf.h:240
Definition: uwmf.h:1383
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1639
int wmf_free(WMFTRACK **wt)
Release memory for an wmf structure in memory. Call this after wmf_finish().
Definition: uwmf.c:1473
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1598
0x00F1 U_WMRF1 record
Definition: uwmf.h:315
uint8_t ClipPrecision
LF_ClipPrecision Enumeration.
Definition: uwmf.h:785
uint32_t PalEntries
Number of PalEntries (set from U_EMREOF)
Definition: uwmf.h:2039
0x0044 U_WMR44 record
Definition: uwmf.h:142
int U_WMRFRAMEREGION_get(const char *contents, uint16_t *Region, uint16_t *Brush, int16_t *Height, int16_t *Width)
Get data from a U_WMRFRAMEREGION record.
Definition: uwmf.c:5570
char * U_WMRSETVIEWPORTORG_set(U_POINT16 coord)
Create and return a U_WMRSETVIEWPORTORG record.
Definition: uwmf.c:2518
int U_WMREOF_get(const char *contents)
Get data from a U_WMREOF record.
Definition: uwmf.c:4828
0x0037 U_WMRSETPALENTRIES record
Definition: uwmf.h:129
char * wselectobject_set(uint32_t ihObject, WMFHANDLES *wht)
Allocate and construct a U_WMRSELECTOBJECT record, checks that the handle specified is one that can a...
Definition: uwmf.c:2084
char * U_WMRSETMAPPERFLAGS_set(uint32_t Mode)
Allocate and construct a U_WMRSETMAPPERFLAGS record.
Definition: uwmf.c:3093
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1651
0x0084 U_WMR84 record
Definition: uwmf.h:206
uint16_t cUsage
ColorUsage Enumeration.
Definition: uwmf.h:1785
char * U_WMRSETBKCOLOR_set(U_COLORREF Color)
Create and return a U_WMRSETBKCOLOR record.
Definition: uwmf.c:2410
U_RECT16 Dst
Destination bounding box in logical units.
Definition: uwmf.h:1075
int U_WMRCREATEBRUSHINDIRECT_get(const char *contents, const char **brush)
Get data from a U_WMRCREATEBRUSHINDIRECT record.
Definition: uwmf.c:6899
int16_t Escapement
Angle in 0.1 degrees betweem escapement vector and X axis.
Definition: uwmf.h:777
char * U_WMRSTRETCHBLT_set(U_POINT16 Dst, U_POINT16 cDst, U_POINT16 Src, U_POINT16 cSrc, uint32_t dwRop3, const U_BITMAP16 *Bm16)
Allocate and construct a U_WMRSTRETCHBLT record.
Definition: uwmf.c:2891
char * U_WMRPOLYGON_set(uint16_t Length, const U_POINT16 *Data)
Allocate and construct a U_WMRPOLYGON record.
Definition: uwmf.c:2954
struct U_WMRSETBKMODE U_WMRSETSTRETCHBLTMODE
WMF manual 2.3.5.23 Mode = StretchMode Enumeration.
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1331
0x007B U_WMR7B record
Definition: uwmf.h:197
Definition: uwmf.h:774
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1783
0x0214 U_WMRMOVETO record
Definition: uwmf.h:94
0x008B U_WMR8B record
Definition: uwmf.h:213
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1700
int16_t Length
Stringlength in bytes.
Definition: uwmf.h:1369
0x0082 U_WMR82 record
Definition: uwmf.h:204
int U_WMROFFSETCLIPRGN_get(const char *contents, U_POINT16 *offset)
Get data from a U_WMROFFSETCLIPRGN record.
Definition: uwmf.c:5339
char * wsetpaletteentries_set(uint32_t *ihPal, WMFHANDLES *wht, const U_PALETTE *Palettes)
Allocate and construct a U_WMRSETPALENTRIES record, create a handle and returns it Use this function ...
Definition: uwmf.c:2247
uint32_t U_wmr_values(int idx)
Look up the full numeric type of a WMR record by type.
Definition: uwmf.c:58
char * U_WMRPATBLT_set(U_POINT16 Dst, U_POINT16 cwh, uint32_t dwRop3)
Allocate and construct a U_WMRPATBLT record.
Definition: uwmf.c:2732
uint32_t Key
MUST be 0x9AC6CDD7.
Definition: uwmf.h:1073
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1244
0x012A U_WMRINVERTREGION record
Definition: uwmf.h:116
0x006A U_WMR6A record
Definition: uwmf.h:180
size_t U_WMRRECSAFE_get(const char *contents, const char *blimit)
Return the size of a WMF record, or 0 if it is found to be invalid. A valid record will have a size t...
Definition: uwmf.c:4402
Definition: uwmf.h:1610
U_PAIRF * U_PAIRF_set(float x, float y)
Create and return a U_PAIRF structure.
Definition: uwmf.c:1029
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1678
uint32_t largest
Largest record size, in bytes (used by WMF, not by EMF)
Definition: uwmf.h:2042
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1501
size_t allocated
Slots in the buffer.
Definition: uwmf.h:2057
0x009B U_WMR9B record
Definition: uwmf.h:229
Definition: uwmf.h:1277
int U_WMRFLOODFILL_get(const char *contents, uint16_t *Mode, U_COLORREF *Color, U_POINT16 *coord)
Retrieve values from a U_WMRFLOODFILL record.
Definition: uwmf.c:5187
int16_t * dx16_set(int32_t height, uint32_t weight, uint32_t members)
Make up an approximate dx array to pass to U_WMREXTTEXTOUT_set(), based on character height and weigh...
Definition: uwmf.c:1096
0x00C5 U_WMRC5 record
Definition: uwmf.h:271
0x00EA U_WMREA record
Definition: uwmf.h:308
0x00C8 U_WMRC8 record
Definition: uwmf.h:274
char * U_WMRSETWINDOWORG_set(U_POINT16 coord)
Create and return a U_WMRSETWINDOWORG record.
Definition: uwmf.c:2500
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1782
struct U_WMRSETBKCOLOR U_WMRSETTEXTCOLOR
WMF manual 2.3.5.26.
0x00E7 U_WMRE7 record
Definition: uwmf.h:305
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1295
0x0000 U_WMREOF record
Definition: uwmf.h:74
int wmf_htable_create(uint32_t initsize, uint32_t chunksize, WMFHANDLES **wht)
Create a handle table. Entries filled with 0 are empty, entries &gt;0 hold a handle. ...
Definition: uwmf.c:1663
struct U_WMRINVERTREGION U_WMRRESIZEPALETTE
WMF manual 2.3.5.9, resize the system palette to &quot;index&quot;.
int U_WMRCREATEREGION_get(const char *contents, const char **Region)
Get data from a U_WMRCREATEREGION record.
Definition: uwmf.c:6924
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1128
0x0087 U_WMR87 record
Definition: uwmf.h:209
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1788
int16_t Height
in logical units (of Rect to Fill)
Definition: uwmf.h:1334
char * wcreatedibpatternbrush_srcdib_set(uint32_t *ihBrush, WMFHANDLES *wht, const uint32_t iUsage, const U_BITMAPINFO *Bmi, const uint32_t cbPx, const char *Px)
Allocate and construct a U_WMRDIBCREATEPATTERNBRUSH record from a DIB. Use this function instead of c...
Definition: uwmf.c:2145
0x008D U_WMR8D record
Definition: uwmf.h:215
char * U_WMREXCLUDECLIPRECT_set(U_RECT16 rect)
Create and return a U_WMREXCLUDECLIPRECT record.
Definition: uwmf.c:2592
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1187
uint16_t nObjects
Total number of brushes, pens, and other graphics objects defined in this file.
Definition: uwmf.h:1089
0x005D U_WMR5D record
Definition: uwmf.h:167
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1279
0x0063 U_WMR63 record
Definition: uwmf.h:173
int U_WMRSETVIEWPORTORG_get(const char *contents, U_POINT16 *coord)
Retrieve values from a U_WMRSETVIEWPORTORG record.
Definition: uwmf.c:5002
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1978
int16_t hDst
in logical units (of Dst)
Definition: uwmf.h:1790
0x0075 U_WMR75 record
Definition: uwmf.h:191
int U_WMRSELECTOBJECT_get(const char *contents, uint16_t *Object)
Get data from a U_WMRSELECTOBJECT record.
Definition: uwmf.c:5626
0x0107 U_WMRSETSTRETCHBLTMODE record
Definition: uwmf.h:81
U_COLORREF Color
Color value, the 32 bit value is not aligned.
Definition: uwmf.h:1117
0x003B U_WMR3B record
Definition: uwmf.h:133
uint32_t * table
Array Buffer for constructing the WMF in memory.
Definition: uwmf.h:2056
0x00ED U_WMRED record
Definition: uwmf.h:311
0x00F5 U_WMRF5 record
Definition: uwmf.h:319
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1747
char * U_WMRCREATEFONTINDIRECT_set(U_FONT *font)
Allocate and construct a U_WMRCREATEFONTINDIRECT record.
Definition: uwmf.c:4301
Definition: uwmf.h:1576
0x00B7 U_WMRB7 record
Definition: uwmf.h:257
For U_BITMAPINFO crColor field.
Definition: uemf.h:452
int16_t Width
bitmap width in pixels.
Definition: uwmf.h:862
0x020E U_WMRSETVIEWPORTEXT record
Definition: uwmf.h:88
struct U_WMRSETMAPMODE U_WMRSETTEXTCHAREXTRA
WMF manual 2.3.5.25, Mode = Extra space in logical units to add to each character.
0x009D U_WMR9D record
Definition: uwmf.h:231
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1566
0x00E4 U_WMRE4 record
Definition: uwmf.h:302
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1722
0x0089 U_WMR89 record
Definition: uwmf.h:211
char * U_WMRSETVIEWPORTEXT_set(U_POINT16 extent)
Create and return a U_WMRSETVIEWPORTEXT record.
Definition: uwmf.c:2527
0x0429 U_WMRFRAMEREGION record
Definition: uwmf.h:115
char * wcreatefontindirect_set(uint32_t *ihFont, WMFHANDLES *wht, U_FONT *uf)
Allocate and construct a U_WMRCREATEFONTINDIRECT record, create a handle and returns it Use this func...
Definition: uwmf.c:2209
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1751
int16_t Width
in logical units (of Src and Dst rects)
Definition: uwmf.h:1413
uint16_t Height
DIB height in pixels.
Definition: uwmf.h:874
void U_BITMAPCOREHEADER_get(const char *BmiCh, int32_t *Size, int32_t *Width, int32_t *Height, int32_t *BitCount)
Return parameters from a bitmapcoreheader. All are returned as 32 bit integers, regardless of their i...
Definition: uwmf.c:4652
char * U_WMREXTFLOODFILL_set(uint16_t Mode, U_COLORREF Color, U_POINT16 coord)
Create and return a U_WMREXTFLOODFILL record.
Definition: uwmf.c:3528
uint16_t cUsage
ColorUsage Enumeration.
Definition: uwmf.h:1614
0x0201 U_WMRSETBKCOLOR record
Definition: uwmf.h:75
int16_t Left
Coordinates in logical units.
Definition: uwmf.h:1235
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1679
char * U_WMRSETTEXTCHAREXTRA_set(uint16_t Mode)
Create and return a U_WMRSETTEXTCHAREXTRA record.
Definition: uwmf.c:2472
uint16_t Region
Index of region to fill in object table.
Definition: uwmf.h:1513
int16_t xRadial1
in logical units
Definition: uwmf.h:1300
0x00F6 U_WMRF6 record
Definition: uwmf.h:320
struct U_WMRELLIPSE U_WMRRECTANGLE
WMF manual 2.3.3.17.
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1063
0x0035 U_WMRREALIZEPALETTE record
Definition: uwmf.h:127
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1987
0x00E2 U_WMRE2 record
Definition: uwmf.h:300
0x0074 U_WMR74 record
Definition: uwmf.h:190
0x00BB U_WMRBB record
Definition: uwmf.h:261
0x02FA U_WMRCREATEPENINDIRECT record
Definition: uwmf.h:324
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1742
0x003F U_WMR3F record
Definition: uwmf.h:137
int16_t Width
in logical units (of Src and Dst)
Definition: uwmf.h:1699
0x0072 U_WMR72 record
Definition: uwmf.h:188
size_t chunk
Number to add if a realloc is required.
Definition: uwmf.h:2058
int U_WMRPAINTREGION_get(const char *contents, uint16_t *Region)
Get data from a U_WMRPAINTREGION record.
Definition: uwmf.c:5599
int wmf_htable_insert(uint32_t *ih, WMFHANDLES *wht)
Returns the index of the first free slot. Call realloc() if needed. The slot is set to handle (indica...
Definition: uwmf.c:1721
Definition: uwmf.h:860
struct U_WMRSETWINDOWORG U_WMROFFSETVIEWPORTORG
WMF manual 2.3.5.6, Viewport X,Y offset in device units.
0x0068 U_WMR68 record
Definition: uwmf.h:178
struct U_WMRSETBKMODE U_WMRSETTEXTALIGN
WMF manual 2.3.5.24 Mode = TextAlignment Enumeration.
Definition: uwmf.h:1668
Definition: uwmf.h:1345
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1456
int16_t DC
DC to restore (negative is relative to current, positive is absolute)
Definition: uwmf.h:1503
0x00D6 U_WMRD6 record
Definition: uwmf.h:288
int16_t wDst
in logical units (of Dst)
Definition: uwmf.h:1750
0x00A4 U_WMRA4 record
Definition: uwmf.h:238
0x0142 U_WMRDIBCREATEPATTERNBRUSH record
Definition: uwmf.h:140
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1461
Definition: uwmf.h:1429
0x00C3 U_WMRC3 record
Definition: uwmf.h:269
uint16_t bottom
Y coordinate of the bottom scanline.
Definition: uwmf.h:1046
Definition: uwmf.h:2018
0x00A3 U_WMRA3 record
Definition: uwmf.h:237
uint16_t Planes
must be 1
Definition: uwmf.h:875
char * wlinecap_set(int32_t Type)
Allocate and construct the specified U_WMRESCAPE structure, create a handle and returns it Use this f...
Definition: uwmf.c:2301
int16_t Width
in logical units (of Src and Dst)
Definition: uwmf.h:1677
uint16_t Brush
Index of brush to use in object table.
Definition: uwmf.h:1514
int16_t xSrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1697
0x00D7 U_WMRD7 record
Definition: uwmf.h:289
int16_t wDst
Wdith in logical units of Dst rect.
Definition: uwmf.h:1440
char * U_WMRCREATEPATTERNBRUSH_set(U_BITMAP16 *Bm16, char *Pattern)
Allocate and construct a U_WMRCREATEPATTERNBRUSH record. Warning - application support for U_WMRCREAT...
Definition: uwmf.c:4265
For U_BITMAPINFO bmiColors field.
Definition: uemf.h:570
Definition: uwmf.h:817
struct U_WMRSETWINDOWORG U_WMROFFSETCLIPRGN
WMF manual 2.3.5.5, Y offset in logical units.
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1207
0x00D2 U_WMRD2 record
Definition: uwmf.h:284
0x0069 U_WMR69 record
Definition: uwmf.h:179
0x00B5 U_WMRB5 record
Definition: uwmf.h:255
0x014C U_WMR4C record
Definition: uwmf.h:150
char * wbegin_path_set(void)
Allocate and construct the specified U_WMRESCAPE structure, create a handle and returns it Use this f...
Definition: uwmf.c:2282
0x0061 U_WMR61 record
Definition: uwmf.h:171
int16_t Mode
FloodFill Enumeration.
Definition: uwmf.h:1281
int16_t hDst
in logical units (of Dst)
Definition: uwmf.h:1725
int16_t yStartArc
Coordinates in logical units.
Definition: uwmf.h:1248
0x00D1 U_WMRD1 record
Definition: uwmf.h:283
uint16_t Type
must be 0x0006.
Definition: uwmf.h:844
char * U_WMRDELETEOBJECT_set(uint16_t object)
Create and return a U_WMRDELETEOBJECT record.
Definition: uwmf.c:4213
Definition: uwmf.h:1541
struct U_WMRDRAWTEXT U_WMRCREATEBITMAPINDIRECT
in GDI and Wine, not documented in WMF manual.
Definition: uwmf.h:1313
0x00CC U_WMRCC record
Definition: uwmf.h:278
size_t allocated
Size of the buffer.
Definition: uwmf.h:2035
0x00DD U_WMRDD record
Definition: uwmf.h:295
0x020D U_WMRSETVIEWPORTORG record
Definition: uwmf.h:87
int16_t ignore
ignored
Definition: uwmf.h:1438
int16_t xDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1701
0x00AD U_WMRAD record
Definition: uwmf.h:247
int16_t Left
Coordinates in logical units.
Definition: uwmf.h:1268
int16_t yEndArc
Coordinates in logical units.
Definition: uwmf.h:1246
Definition: uwmf.h:2033
0x00AE U_WMRAE record
Definition: uwmf.h:248
int U_WMRSETPOLYFILLMODE_get(const char *contents, uint16_t *Mode)
Retrieve values from a U_WMRSETPOLYFILLMODE record.
Definition: uwmf.c:4906
uint16_t Inch
Logical units/inch (convention if not specified: 1440 logical units/inch)
Definition: uwmf.h:1076
uint8_t CharSet
LF_CharSet Enumeration.
Definition: uwmf.h:783
uint16_t nBytes
bytes in the data array
Definition: uwmf.h:1492
uint16_t Count
Number of space characters in the line.
Definition: uwmf.h:1167
char * U_WMRFLOODFILL_set(uint16_t Mode, U_COLORREF Color, U_POINT16 coord)
Create and return a U_WMRFLOODFILL record.
Definition: uwmf.c:2660
0x0209 U_WMRSETTEXTCOLOR record
Definition: uwmf.h:83
char * U_wmr_names(int idx)
Look up the name of the WMR record by type. Returns U_WMR_INVALID if out of range.
Definition: uwmf.c:330
int16_t Left
Coordinates in logical units.
Definition: uwmf.h:1253
uint32_t hilimit
Highest table slot occupied (currently)
Definition: uwmf.h:2060
0x006B U_WMR6B record
Definition: uwmf.h:181
0x0091 U_WMR91 record
Definition: uwmf.h:219
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1431
0x00AF U_WMRAF record
Definition: uwmf.h:249
Definition: uwmf.h:1520
0x00B3 U_WMRB3 record
Definition: uwmf.h:253
Definition: uwmf.h:871
char * U_WMROFFSETVIEWPORTORG_set(U_POINT16 offset)
Create and return a U_WMROFFSETVIEWPORTORG record.
Definition: uwmf.c:2555
0x00C6 U_WMRC6 record
Definition: uwmf.h:272
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1144
0x008A U_WMR8A record
Definition: uwmf.h:212
uint16_t Style
BrushStyle Enumeration.
Definition: uwmf.h:765
0x0410 U_WMRSCALEWINDOWEXT record
Definition: uwmf.h:90
0x00CD U_WMRCD record
Definition: uwmf.h:279
char * U_WMRDIBBITBLT_set(U_POINT16 Dst, U_POINT16 cwh, U_POINT16 Src, uint32_t dwRop3, const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px)
Allocate and construct a U_WMRDIBITBLT record.
Definition: uwmf.c:3268
int U_WMRSETMAPMODE_get(const char *contents, uint16_t *Mode)
Retrieve values from a U_WMRSETMAPMODE record.
Definition: uwmf.c:4869
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1231
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1512
int16_t Width
in logical units (of Rect to Fill)
Definition: uwmf.h:1335
0x009E U_WMR9E record
Definition: uwmf.h:232
char * wcreatepalette_set(uint32_t *ihPal, WMFHANDLES *wht, U_PALETTE *up)
Allocate and construct a U_WMRCREATEPALETTE record, create a handle and returns it Use this function ...
Definition: uwmf.c:2228
U_BITMAP16 bitmap
Src bitmap.
Definition: uwmf.h:1467
Definition: uwmf.h:1499
int U_WMRCREATEFONTINDIRECT_get(const char *contents, const char **font)
Get data from a U_WMRCREATEFONTINDIRECT record.
Definition: uwmf.c:6886
0x005C U_WMR5C record
Definition: uwmf.h:166
0x003C U_WMR3C record
Definition: uwmf.h:134
int16_t bottom
bottom coordinate
Definition: uwmf.h:835
char * U_WMRSETTEXTJUSTIFICATION_set(uint16_t Count, uint16_t Extra)
Create and return a U_WMRSETTEXTJUSTIFICATION record.
Definition: uwmf.c:2491
0x041F U_WMRSETPIXEL record
Definition: uwmf.h:105
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1522
int U_WMRSETTEXTCOLOR_get(const char *contents, U_COLORREF *Color)
Retrieve values from a U_WMRSETTEXTCOLOR record.
Definition: uwmf.c:4945
uint16_t nPolys
Number of polygons.
Definition: uwmf.h:1020
int16_t Height
in logical units (rounded corner)
Definition: uwmf.h:1317
int U_WMRANIMATEPALETTE_get(const char *contents, U_PALETTE *Palette, const char **PalEntries)
Get data from a U_WMRSETPALENTRIES record.
Definition: uwmf.c:5801
0x00B8 U_WMRB8 record
Definition: uwmf.h:258
Definition: uwmf.h:1648
int16_t Top
in logical units
Definition: uwmf.h:1303
0x0324 U_WMRPOLYGON record
Definition: uwmf.h:110
uint16_t NumEntries
Number of U_LOGPLTNTRY objects.
Definition: uwmf.h:811
int16_t yDst
in logical units (UL corner of Dst rect)
Definition: uwmf.h:1621
0x062F U_WMRDRAWTEXT record
Definition: uwmf.h:121
int16_t hDst
Height in logical units of Dst rect.
Definition: uwmf.h:1439
0x00C9 U_WMRC9 record
Definition: uwmf.h:275
int16_t ySrc
in logical units (UL corner of Src rect)
Definition: uwmf.h:1673
uint8_t Planes
must be 1.
Definition: uwmf.h:865
Definition: uwmf.h:764
int16_t yDenom
Y denominator.
Definition: uwmf.h:1209
int wmr_arc_points(U_RECT16 rclBox16, U_POINT16 ArcStart16, U_POINT16 ArcEnd16, int *f1, int f2, U_PAIRF *center, U_PAIRF *start, U_PAIRF *end, U_PAIRF *size)
Derive from bounding box and start and end arc, for WMF arc, chord, or pie records, the center, start, and end points, and the bounding rectangle.
Definition: uwmf.c:690
Definition: uwmf.h:1113
int16_t wSrc
Wdith in logical units of Dst rect.
Definition: uwmf.h:1460
int U_WMRSETPIXEL_get(const char *contents, U_COLORREF *Color, U_POINT16 *Coord)
Get data from a U_WMRSETPIXEL record.
Definition: uwmf.c:5319
int wmf_htable_delete(uint32_t *ih, WMFHANDLES *wht)
Delete an entry from the handle table. Move it back onto the stack. The specified slot is filled with...
Definition: uwmf.c:1697
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1316
0x0521 U_WMRTEXTOUT record
Definition: uwmf.h:107
0x0B41 U_WMRDIBSTRETCHBLT record
Definition: uwmf.h:139
0x00EE U_WMREE record
Definition: uwmf.h:312
Definition: uwmf.h:1261
int U_WMRSAVEDC_get(const char *contents)
Get data from a U_WMRSAVEDC record.
Definition: uwmf.c:5306
0x012B U_WMRPAINTREGION record
Definition: uwmf.h:117
0x041B U_WMRRECTANGLE record
Definition: uwmf.h:101
int U_WMRPOLYGON_get(const char *contents, uint16_t *Length, const char **Data)
Get data from a U_WMRPOLYGON record.
Definition: uwmf.c:5487
0x00BC U_WMRBC record
Definition: uwmf.h:262
0x0057 U_WMR57 record
Definition: uwmf.h:161
char * U_WMRDIBSTRETCHBLT_set(U_POINT16 Dst, U_POINT16 cDst, U_POINT16 Src, U_POINT16 cSrc, uint32_t dwRop3, const U_BITMAPINFO *Bmi, uint32_t cbPx, const char *Px)
Allocate and construct a U_WMRSTRETCHDIB record.
Definition: uwmf.c:3335
int16_t wDst
Wdith in logical units of Dst rect.
Definition: uwmf.h:1464
int16_t Size
aScans in bytes + regions size in bytes (size of this header plus all U_SCAN objects?)
Definition: uwmf.h:846
uint8_t xb
Extra high order byte associated with record type.
Definition: uwmf.h:1166
Definition: uwmf.h:1780
0x00BD U_WMRBD record
Definition: uwmf.h:263
char * U_WMRELLIPSE_set(U_RECT16 rect)
Create and return a U_WMRELLIPSE record.
Definition: uwmf.c:2643
char * U_WMRBITBLT_set(U_POINT16 Dst, U_POINT16 cwh, U_POINT16 Src, uint32_t dwRop3, const U_BITMAP16 *Bm16)
Allocate and construct a U_WMRBITBLT record. Note that unlike U_EMRBITBLT there is no scaling availab...
Definition: uwmf.c:2829
uint16_t Brush
Index of brush to use in frame in object table.
Definition: uwmf.h:1525
int U_WMRREALIZEPALETTE_get(const char *contents)
Get data from a U_WMRREALIZEPALETTE record.
Definition: uwmf.c:5788
char * U_WMRSETPIXEL_set(U_COLORREF Color, U_POINT16 Coord)
Allocate and construct a U_WMRSETPIXEL record.
Definition: uwmf.c:2769
Definition: uwmf.h:1984
0x00DE U_WMRDE record
Definition: uwmf.h:296
uint8_t iType
RecordType Enumeration.
Definition: uwmf.h:1511
int U_WMRFILLREGION_get(const char *contents, uint16_t *Region, uint16_t *Brush)
Get data from a U_WMRFILLREGION record.
Definition: uwmf.c:5553
int U_WMRCREATEPENINDIRECT_get(const char *contents, U_PEN *pen)
Get data from a U_WMRCREATEPENINDIRECT record.
Definition: uwmf.c:6870
char * U_WMRFRAMEREGION_set(uint16_t Region, uint16_t Brush, int16_t Height, int16_t Width)
Allocate and construct a U_WMRFRAMEREGION record.
Definition: uwmf.c:3012
0x0F43 U_WMRSTRETCHDIB record
Definition: uwmf.h:141