|
|
#ifndef EMF_DEFINE_H
|
|
|
#define EMF_DEFINE_H
|
|
|
|
|
|
#define DIRTY_NONE 0x00
|
|
|
#define DIRTY_TEXT 0x01
|
|
|
#define DIRTY_FILL 0x02
|
|
|
#define DIRTY_STROKE 0x04
|
|
|
/** \cond */
|
|
|
#define TEREMIN(A,B) (A < B ? A : B)
|
|
|
#define TEREMAX(A,B) (A > B ? A : B)
|
|
|
|
|
|
#define ALLOCINFO_CHUNK 32
|
|
|
#define ALLOCOUT_CHUNK 8192
|
|
|
#define TRPRINT trinfo_append_out
|
|
|
|
|
|
|
|
|
/** \defgroup color background options
|
|
|
Text is underwritten with the background color not at all,
|
|
|
by reassembled line, or by full assembly .
|
|
|
@{
|
|
|
*/
|
|
|
#define BKCLR_NONE 0x00 /**< text is not underwritten with background color (default) */
|
|
|
#define BKCLR_FRAG 0x01 /**< each fragment of text is underwritten with background color */
|
|
|
#define BKCLR_LINE 0x02 /**< each line of text is underwritten with background color */
|
|
|
#define BKCLR_ALL 0x03 /**< entire assembly is underwritten with background color */
|
|
|
/** @} */
|
|
|
|
|
|
/** \endcond */
|
|
|
|
|
|
/** \defgroup color background options
|
|
|
Text is underwritten with the background color not at all,
|
|
|
by reassembled line, or by full assembly .
|
|
|
@{
|
|
|
*/
|
|
|
//#define BKCLR_NONE 0x00 /**< text is not underwritten with background color (default) */
|
|
|
//#define BKCLR_FRAG 0x01 /**< each fragment of text is underwritten with background color */
|
|
|
//#define BKCLR_LINE 0x02 /**< each line of text is underwritten with background color */
|
|
|
//#define BKCLR_ALL 0x03 /**< entire assembly is underwritten with background color */
|
|
|
/** @} */
|
|
|
|
|
|
/** \defgroup decoration options
|
|
|
One of these values may be present in the decoration field.
|
|
|
Unused bits may be used by end user code.
|
|
|
These values are SVG specific. Other applications could use the text
|
|
|
decoration field for a different set of bits, so long as it provided its own
|
|
|
output function.
|
|
|
@{
|
|
|
*/
|
|
|
#define TXTDECOR_NONE 0x000 /**< text is not decorated (default) */
|
|
|
#define TXTDECOR_UNDER 0x001 /**< underlined */
|
|
|
#define TXTDECOR_OVER 0x002 /**< overlined */
|
|
|
#define TXTDECOR_BLINK 0x004 /**< blinking text */
|
|
|
#define TXTDECOR_STRIKE 0x008 /**< strike through */
|
|
|
#define TXTDECOR_TMASK 0x00F /**< Mask for selecting bits above */
|
|
|
|
|
|
#define TXTDECOR_SOLID 0x000 /**< draw as single solid line */
|
|
|
#define TXTDECOR_DOUBLE 0x010 /**< draw as double solid line */
|
|
|
#define TXTDECOR_DOTTED 0x020 /**< draw as single dotted line */
|
|
|
#define TXTDECOR_DASHED 0x040 /**< draw as single dashed line */
|
|
|
#define TXTDECOR_WAVY 0x080 /**< draw as single wavy line */
|
|
|
#define TXTDECOR_LMASK 0x0F0 /**< Mask for selecting these bits */
|
|
|
|
|
|
#define TXTDECOR_CLRSET 0x100 /**< decoration has its own color */
|
|
|
|
|
|
/** @} */
|
|
|
|
|
|
/** \defgroup text alignment types
|
|
|
Location of text's {X,Y} coordinate on bounding rectangle.
|
|
|
Values are compatible with Fontconfig.
|
|
|
@{
|
|
|
*/
|
|
|
#define ALILEFT 0x01 /**< text object horizontal alignment = left */
|
|
|
#define ALICENTER 0x02 /**< text object horizontal alignment = center */
|
|
|
#define ALIRIGHT 0x04 /**< text object horizontal alignment = right */
|
|
|
#define ALIHORI 0x07 /**< text object horizontal alignment mask */
|
|
|
#define ALITOP 0x08 /**< text object vertical alignment = top */
|
|
|
#define ALIBASE 0x10 /**< text object vertical alignment = baseline */
|
|
|
#define ALIBOT 0x20 /**< text object vertical alignment = bottom */
|
|
|
#define ALIVERT 0x38 /**< text object vertical alignment mask */
|
|
|
/** @} */
|
|
|
|
|
|
/** \defgroup language direction types
|
|
|
@{
|
|
|
*/
|
|
|
#define LDIR_LR 0x00 /**< left to right */
|
|
|
#define LDIR_RL 0x01 /**< right to left */
|
|
|
#define LDIR_TB 0x02 /**< top to bottom */
|
|
|
/** @} */
|
|
|
|
|
|
|
|
|
static unsigned int wingdings_convert[256] = {
|
|
|
0xFFFD, // 0x00 no replacement
|
|
|
0xFFFD, // 0x01 no replacement
|
|
|
0xFFFD, // 0x02 no replacement
|
|
|
0xFFFD, // 0x03 no replacement
|
|
|
0xFFFD, // 0x04 no replacement
|
|
|
0xFFFD, // 0x05 no replacement
|
|
|
0xFFFD, // 0x06 no replacement
|
|
|
0xFFFD, // 0x07 no replacement
|
|
|
0xFFFD, // 0x08 no replacement
|
|
|
0xFFFD, // 0x09 no replacement
|
|
|
0xFFFD, // 0x0A no replacement
|
|
|
0xFFFD, // 0x0B no replacement
|
|
|
0xFFFD, // 0x0C no replacement
|
|
|
0xFFFD, // 0x0D no replacement
|
|
|
0xFFFD, // 0x0E no replacement
|
|
|
0xFFFD, // 0x0F no replacement
|
|
|
0xFFFD, // 0x10 no replacement
|
|
|
0xFFFD, // 0x11 no replacement
|
|
|
0xFFFD, // 0x12 no replacement
|
|
|
0xFFFD, // 0x13 no replacement
|
|
|
0xFFFD, // 0x14 no replacement
|
|
|
0xFFFD, // 0x15 no replacement
|
|
|
0xFFFD, // 0x16 no replacement
|
|
|
0xFFFD, // 0x17 no replacement
|
|
|
0xFFFD, // 0x18 no replacement
|
|
|
0xFFFD, // 0x19 no replacement
|
|
|
0xFFFD, // 0x1A no replacement
|
|
|
0xFFFD, // 0x1B no replacement
|
|
|
0xFFFD, // 0x1C no replacement
|
|
|
0xFFFD, // 0x1D no replacement
|
|
|
0xFFFD, // 0x1E no replacement
|
|
|
0xFFFD, // 0x1F no replacement
|
|
|
0x0020, // 0x20 SPACE
|
|
|
0x270E, // 0x21 LOWER RIGHT PENCIL (close, but not exact)
|
|
|
0x2702, // 0x22 BLACK SCISSORS
|
|
|
0x2701, // 0x23 UPPER BLADE SCISSORS
|
|
|
0xFFFD, // 0x24 no replacement
|
|
|
0xFFFD, // 0x25 no replacement
|
|
|
0xFFFD, // 0x26 no replacement
|
|
|
0xFFFD, // 0x27 no replacement
|
|
|
0x260E, // 0x28 BLACK TELEPHONE
|
|
|
0x2706, // 0x29 TELEPHONE LOCATION SIGN (close, but not exact)
|
|
|
0x2709, // 0x2A ENVELOPE
|
|
|
0x2709, // 0x2B ENVELOPE (close, but not exact)
|
|
|
0xFFFD, // 0x2C no replacement
|
|
|
0xFFFD, // 0x2D no replacement
|
|
|
0xFFFD, // 0x2E no replacement
|
|
|
0xFFFD, // 0x2F no replacement
|
|
|
0xFFFD, // 0x30 no replacement
|
|
|
0xFFFD, // 0x31 no replacement
|
|
|
0xFFFD, // 0x32 no replacement
|
|
|
0xFFFD, // 0x33 no replacement
|
|
|
0xFFFD, // 0x34 no replacement
|
|
|
0xFFFD, // 0x35 no replacement
|
|
|
0x231B, // 0x36 HOURGLASS
|
|
|
0x2328, // 0x37 KEYBOARD
|
|
|
0xFFFD, // 0x38 no replacement
|
|
|
0xFFFD, // 0x39 no replacement
|
|
|
0xFFFD, // 0x3A no replacement
|
|
|
0xFFFD, // 0x3B no replacement
|
|
|
0xFFFD, // 0x3C no replacement
|
|
|
0xFFFD, // 0x3D no replacement
|
|
|
0x2707, // 0x3E TAPE DRIVE
|
|
|
0x270D, // 0x3F WRITING HAND
|
|
|
0x270D, // 0x40 WRITING HAND (close, but not exact)
|
|
|
0x270C, // 0x41 VICTORY HAND
|
|
|
0xFFFD, // 0x42 3 FINGER UP HAND (no replacement)
|
|
|
0xFFFD, // 0x43 THUMBS UP HAND (no replacement)
|
|
|
0xFFFD, // 0x44 THUMBS DOWN HAND (no replacement)
|
|
|
0x261C, // 0x45 WHITE LEFT POINTING INDEX
|
|
|
0x261E, // 0x46 WHITE RIGHT POINTING INDEX
|
|
|
0x261D, // 0x47 WHITE UP POINTING INDEX
|
|
|
0x261F, // 0x48 WHITE DOWN POINTING INDEX
|
|
|
0xFFFD, // 0x49 OPEN HAND (no replacement)
|
|
|
0x263A, // 0x4A WHITE SMILING FACE
|
|
|
0x263A, // 0x4B WHITE SMILING FACE (close, but not exact)
|
|
|
0x2639, // 0x4C WHITE FROWNING FACE
|
|
|
0xFFFD, // 0x4D BOMB (no replacement. 1F4A3)
|
|
|
0x2620, // 0x4E SKULL AND CROSSBONES
|
|
|
0x2690, // 0x4F WHITE FLAG (not exact)
|
|
|
0x2691, // 0x50 WHITE PENANT (use BLACK FLAG)
|
|
|
0x2708, // 0x51 AIRPLANE
|
|
|
0x263C, // 0x52 WHITE SUN WITH RAYS (close, but not exact)
|
|
|
0x2602, // 0x53 RAINDROP (use UMBRELLA)
|
|
|
0x2744, // 0x54 SNOWFLAKE
|
|
|
0x271D, // 0x55 WHITE LATIN CROSS (use BLACK CROSS)
|
|
|
0x271E, // 0x56 SHADOWED WHITE LATIN CROSS
|
|
|
0x271F, // 0x57 CELTIC CROSS (use OUTLINED LATIN CROSS)
|
|
|
0x2720, // 0x58 MALTESE CROSS
|
|
|
0x2721, // 0x59 STAR OF DAVID
|
|
|
0x262A, // 0x5A STAR AND CRESCENT
|
|
|
0x262F, // 0x5B YIN YANG
|
|
|
0x0950, // 0x5C DEVANGARI OM CORRECT|CLOSE: Perhaps PROPOSE SACRED OM ?
|
|
|
0x2638, // 0x5D WHEEL OF DHARMA
|
|
|
0x2648, // 0x5E ARIES
|
|
|
0x2649, // 0x5F TAURUS
|
|
|
0x264A, // 0x60 GEMINI
|
|
|
0x264B, // 0x61 CANCER
|
|
|
0x264C, // 0x62 LEO
|
|
|
0x264D, // 0x63 VIRGO
|
|
|
0x264E, // 0x64 LIBRA
|
|
|
0x264F, // 0x65 SCORPIUS
|
|
|
0x2650, // 0x66 SAGITTARIUS
|
|
|
0x2651, // 0x67 CAPRICORN
|
|
|
0x2652, // 0x68 AQUARIUS
|
|
|
0x2653, // 0x69 PISCES
|
|
|
0xFFFD, // 0x6A LOWER CASE AMPERSAND)?) (no replacement)
|
|
|
0xFF06, // 0x6B AMPERSAND (use FULL WIDTH AMPERSAND, close, but not exact. Do NOT use 0026, or it maps normal Ampersands to Wingdings Ampersand)
|
|
|
0x25CF, // 0x6C BLACK CIRCLE
|
|
|
0x274D, // 0x6D SHADOWED WHITE CIRCLE (close, but not exact)
|
|
|
0x25A0, // 0x6E BLACK SQUARE
|
|
|
0x25A3, // 0x6F WHITE SQUARE IN BLACK RECTANGLE (use BLACK SQUSRE in WHITE SQUARE)
|
|
|
0x25A1, // 0x70 WHITE SQUARE (close, but not exact)
|
|
|
0x2751, // 0x71 LOWER RIGHT SHADOWED WHITE SQUARE
|
|
|
0x2752, // 0x72 UPPER RIGHT SHADOWED WHITE SQUARE
|
|
|
0x25CA, // 0x73 LOZENGE (close, but not exact)
|
|
|
0x25CA, // 0x74 LOZENGE (close, but not exact)
|
|
|
0x25C6, // 0x75 BLACK DIAMOND
|
|
|
0x2756, // 0x76 BLACK DIAMOND MINUS WHITE X
|
|
|
0x25C6, // 0x77 BLACK DIAMOND (close, but not exact)
|
|
|
0x2327, // 0x78 X IN A RECTANGLE BOX
|
|
|
0x2353, // 0x79 APL FUNCTIONAL SYMBOL QUAD UP CARET(close, but not exact)
|
|
|
0x2318, // 0x7A PLACE OF INTEREST SIGN
|
|
|
0x2740, // 0x7B WHITE FLORETTE (close, but not exact)
|
|
|
0x273F, // 0x7C BLACK FLORETTE (close, but not exact)
|
|
|
0x275D, // 0x7D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
|
|
|
0x275E, // 0x7E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
|
|
|
0xFFFD, // 0x7F unused
|
|
|
0x24EA, // 0x80 CIRCLED DIGIT ZERO
|
|
|
0x2460, // 0x81 CIRCLED DIGIT ONE
|
|
|
0x2461, // 0x82 CIRCLED DIGIT TWO
|
|
|
0x2462, // 0x83 CIRCLED DIGIT THREE
|
|
|
0x2463, // 0x84 CIRCLED DIGIT FOUR
|
|
|
0x2464, // 0x85 CIRCLED DIGIT FIVE
|
|
|
0x2465, // 0x86 CIRCLED DIGIT SIX
|
|
|
0x2466, // 0x87 CIRCLED DIGIT SEVEN
|
|
|
0x2467, // 0x88 CIRCLED DIGIT EIGHT
|
|
|
0x2468, // 0x89 CIRCLED DIGIT NINE
|
|
|
0x2469, // 0x8A CIRCLED NUMBER TEN
|
|
|
0xFFFD, // 0x8B no replacement
|
|
|
0x2776, // 0x8C DINGBAT NEGATIVE CIRCLED DIGIT ONE
|
|
|
0x2777, // 0x8D DINGBAT NEGATIVE CIRCLED DIGIT TWO
|
|
|
0x2778, // 0x8E DINGBAT NEGATIVE CIRCLED DIGIT THREE
|
|
|
0x2779, // 0x8F DINGBAT NEGATIVE CIRCLED DIGIT FOUR
|
|
|
0x277A, // 0x90 DINGBAT NEGATIVE CIRCLED DIGIT FIVE
|
|
|
0x277B, // 0x91 DINGBAT NEGATIVE CIRCLED DIGIT SIX
|
|
|
0x277C, // 0x92 DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
|
|
|
0x277D, // 0x93 DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
|
|
|
0x277E, // 0x94 DINGBAT NEGATIVE CIRCLED DIGIT NINE
|
|
|
0x277F, // 0x95 DINGBAT NEGATIVE CIRCLED NUMBER TEN
|
|
|
0xFFFD, // 0x96 ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x97 REVERSED ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x98 REVERSED ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x99 ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x9A ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x9B REVERSED ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x9C REVERSED ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0xFFFD, // 0x9D ROTATED FLORAL HEART BULLET (no good replacement)
|
|
|
0x2219, // 0x9E BULLET (use BULLET operator, so normal font BULLET will not convert to Symbol BULLET)
|
|
|
0x25CF, // 0x9F BLACK CIRCLE (close, but not exact)
|
|
|
0x25AA, // 0xA0 BLACK VERY SMALL SQUARE
|
|
|
0x26AA, // 0xA1 WHITE CIRCLE (use MEDIUM WHITE CIRCLE)
|
|
|
0x25CB, // 0xA2 HEAVY WHITE CIRCLE (use WHITE CIRCLE)
|
|
|
0x25CD, // 0xA3 HEAVIEST CIRCLE (use CIRCLE WITH VERTICAL FILL)
|
|
|
0x25C9, // 0xA4 CIRCLE WITH A CENTRAL DOT (close, dot much bigger)
|
|
|
0x25CE, // 0xA5 BULLSEYE
|
|
|
0x274D, // 0xA6 SHADOWED WHITE CIRCLE (close, but not exact)
|
|
|
0xFFED, // 0xA7 BLACK SMALL SQUARE
|
|
|
0x2610, // 0xA8 WHITE SQUARE (close, but not exact, different fro 25A1)
|
|
|
0xFFFD, // 0xA9 no replacement
|
|
|
0x2726, // 0xAA BLACK FOUR POINTED STAR MAYBE
|
|
|
0x2605, // 0xAB BLACK STAR
|
|
|
0x2736, // 0xAC SIX POINTED BLACK STAR
|
|
|
0x2737, // 0xAD EIGHT POINTED RECTILINEAR BLACK STAR
|
|
|
0x2738, // 0xAE TWELVE POINTED BLACK STAR
|
|
|
0x2735, // 0xAF EIGHT POINTED PINWHEEL STAR
|
|
|
0xFFFD, // 0xB0 no replacement
|
|
|
0xFFFD, // 0xB1 no replacement
|
|
|
0x2727, // 0xB2 WHITE FOUR POINTED STAR
|
|
|
0x2726, // 0xB3 ROTATED WHITE FOUR POINTED STAR (use BLACK FOUR POINTED STAR)
|
|
|
0xFFFD, // 0xB4 REPLACEMENT CHARACTER (close, but not exact)
|
|
|
0x272A, // 0xB5 CIRCLED WHITE STAR
|
|
|
0x2730, // 0xB6 SHADOWED WHITE STAR
|
|
|
0xFFFD, // 0xB7 ANALOG CLOCK 1 (no replacement)
|
|
|
0xFFFD, // 0xB8 ANALOG CLOCK 2 (no replacement)
|
|
|
0xFFFD, // 0xB9 ANALOG CLOCK 3 (no replacement)
|
|
|
0xFFFD, // 0xBA ANALOG CLOCK 4 (no replacement)
|
|
|
0xFFFD, // 0xBB ANALOG CLOCK 5 (no replacement)
|
|
|
0xFFFD, // 0xBC ANALOG CLOCK 6 (no replacement)
|
|
|
0xFFFD, // 0xBD ANALOG CLOCK 7 (no replacement)
|
|
|
0xFFFD, // 0xBE ANALOG CLOCK 8 (no replacement)
|
|
|
0xFFFD, // 0xBF ANALOG CLOCK 9 (no replacement)
|
|
|
0xFFFD, // 0xC0 ANALOG CLOCK 10 (no replacement)
|
|
|
0xFFFD, // 0xC1 ANALOG CLOCK 11 (no replacement)
|
|
|
0xFFFD, // 0xC2 ANALOG CLOCK 12 (no replacement)
|
|
|
0x21B2, // 0xC3 TURN ARROW DOWN AND LEFT (Meaning close, shape differs)
|
|
|
0x21B3, // 0xC4 TURN ARROW DOWN AND RIGHT (Meaning close, shape differs)
|
|
|
0x21B0, // 0xC5 TURN ARROW UP AND LEFT (Meaning close, shape differs)
|
|
|
0x21B1, // 0xC6 TURN ARROW UP AND RIGHT (Meaning close, shape differs)
|
|
|
0x2B11, // 0xC7 TURN ARROW LEFT AND UP (Meaning close, shape differs)
|
|
|
0x2B0F, // 0xC8 TURN ARROW RIGHT AND UP (Meaning close, shape differs)
|
|
|
0x2B10, // 0xC9 TURN ARROW LEFT AND DOWN (Meaning close, shape differs)
|
|
|
0x2B0E, // 0xCA TURN ARROW RIGHT AND DOWN (Meaning close, shape differs)
|
|
|
0xFFFD, // 0xCB no replacement
|
|
|
0xFFFD, // 0xCC no replacement
|
|
|
0xFFFD, // 0xCD no replacement
|
|
|
0xFFFD, // 0xCE no replacement
|
|
|
0xFFFD, // 0xCF no replacement
|
|
|
0xFFFD, // 0xD0 no replacement
|
|
|
0xFFFD, // 0xD1 no replacement
|
|
|
0xFFFD, // 0xD2 no replacement
|
|
|
0xFFFD, // 0xD3 no replacement
|
|
|
0xFFFD, // 0xD4 no replacement
|
|
|
0x232B, // 0xD5 ERASE TO THE LEFT
|
|
|
0x2326, // 0xD6 ERASE TO THE RIGHT
|
|
|
0x25C0, // 0xD7 THREE-D LIGHTED LEFT ARROWHEAD (Use BLACK LEFT TRIANGLE)
|
|
|
0x25B6, // 0xD8 THREE-D LIGHTED RIGHT ARROWHEAD (Use BLACK RIGHT TRIANGLE, 27A2 is exact but has no other directions)
|
|
|
0x25B2, // 0xD9 THREE-D LIGHTED UP ARROWHEAD (Use BLACK UP TRIANGLE)
|
|
|
0x25BC, // 0xDA THREE-D LIGHTED DOWN ARROWHEAD (Use BLACK DOWN TRIANGLE)
|
|
|
0xFFFD, // 0xDB no replacement
|
|
|
0x27B2, // 0xDC CIRCLED HEAVY WHITE RIGHTWARDS ARROW
|
|
|
0xFFFD, // 0xDD no replacement
|
|
|
0xFFFD, // 0xDE no replacement
|
|
|
0x2190, // 0xDF LEFT ARROW
|
|
|
0x2192, // 0xE0 RIGHT ARROW
|
|
|
0x2191, // 0xE1 UP ARROW
|
|
|
0x2193, // 0xE2 DOWN ARROW
|
|
|
0x2196, // 0xE3 UPPER LEFT ARROW
|
|
|
0x2197, // 0xE4 UPPER RIGHT ARROW
|
|
|
0x2199, // 0xE5 LOWER LEFT ARROW
|
|
|
0x2198, // 0xE6 LOWER RIGHT ARROW
|
|
|
0x2B05, // 0xE7 HEAVY LEFT BLACK ARROW (same as regular BLACK ARROW)
|
|
|
0x2B08, // 0xE8 HEAVY RIGHT BLACK ARROW (same as regular BLACK ARROW)
|
|
|
0x2B06, // 0xE9 HEAVY UP BLACK ARROW (no equiv BLACK ARROW)
|
|
|
0x2B07, // 0xEA HEAVY DOWN BLACK ARROW (same as regular BLACK ARROW)
|
|
|
0x2B09, // 0xEB HEAVY UPPER LEFT BLACK ARROW same as regular BLACK ARROW)
|
|
|
0x2B08, // 0xEC HEAVY UPPER RIGHT BLACK ARROW same as regular BLACK ARROW)
|
|
|
0x2B0B, // 0xED HEAVY LOWER LEFT BLACK ARROW (same as regular BLACK ARROW)
|
|
|
0x2B0A, // 0xEE HEAVY LOWER RIGHT BLACK ARROW (same as regular BLACK ARROW)
|
|
|
0x21E6, // 0xEF LEFTWARDS WHITE ARROW
|
|
|
0x21E8, // 0xF0 RIGHTWARDS WHITE ARROW
|
|
|
0x21E7, // 0xF1 UPWARDS WHITE ARROW
|
|
|
0x21E9, // 0xF2 DOWNWARDS WHITE ARROW
|
|
|
0x21D4, // 0xF3 LEFT RIGHT DOUBLE ARROW
|
|
|
0x21D5, // 0xF4 UP DOWN DOUBLE ARROW
|
|
|
0x21D6, // 0xF5 NORTH WEST DOUBLE ARROW (close, but not exact)
|
|
|
0x21D7, // 0xF6 NORTH EAST DOUBLE ARROW (close, but not exact)
|
|
|
0x21D9, // 0xF7 SOUTH WEST DOUBLE ARROW (close, but not exact)
|
|
|
0x21D8, // 0xF8 SOUTH EAST DOUBLE ARROW (close, but not exact)
|
|
|
0xFFFD, // 0xF9 no replacement
|
|
|
0xFFFD, // 0xFA no replacement
|
|
|
0x2717, // 0xFB BALLOT X
|
|
|
0x2713, // 0xFC CHECK MARK
|
|
|
0x2612, // 0xFD BALLOT BOX WITH X
|
|
|
0x2611, // 0xFE BALLOT BOX WITH CHECK
|
|
|
0xFFFD // 0xFF no replacement
|
|
|
};
|
|
|
|
|
|
/* characters from zapf dingbat font, conversion to a unicode font. Change both the
|
|
|
code and the font on conversion. These are untested as the development machine did
|
|
|
not have the font installed. */
|
|
|
static unsigned int dingbats_convert[256] = {
|
|
|
0xFFFD, // 0x00 no replacement
|
|
|
0xFFFD, // 0x01 no replacement
|
|
|
0xFFFD, // 0x02 no replacement
|
|
|
0xFFFD, // 0x03 no replacement
|
|
|
0xFFFD, // 0x04 no replacement
|
|
|
0xFFFD, // 0x05 no replacement
|
|
|
0xFFFD, // 0x06 no replacement
|
|
|
0xFFFD, // 0x07 no replacement
|
|
|
0xFFFD, // 0x08 no replacement
|
|
|
0xFFFD, // 0x09 no replacement
|
|
|
0xFFFD, // 0x0A no replacement
|
|
|
0xFFFD, // 0x0B no replacement
|
|
|
0xFFFD, // 0x0C no replacement
|
|
|
0xFFFD, // 0x0D no replacement
|
|
|
0xFFFD, // 0x0E no replacement
|
|
|
0xFFFD, // 0x0F no replacement
|
|
|
0xFFFD, // 0x10 no replacement
|
|
|
0xFFFD, // 0x11 no replacement
|
|
|
0xFFFD, // 0x12 no replacement
|
|
|
0xFFFD, // 0x13 no replacement
|
|
|
0xFFFD, // 0x14 no replacement
|
|
|
0xFFFD, // 0x15 no replacement
|
|
|
0xFFFD, // 0x16 no replacement
|
|
|
0xFFFD, // 0x17 no replacement
|
|
|
0xFFFD, // 0x18 no replacement
|
|
|
0xFFFD, // 0x19 no replacement
|
|
|
0xFFFD, // 0x1A no replacement
|
|
|
0xFFFD, // 0x1B no replacement
|
|
|
0xFFFD, // 0x1C no replacement
|
|
|
0xFFFD, // 0x1D no replacement
|
|
|
0xFFFD, // 0x1E no replacement
|
|
|
0xFFFD, // 0x1F no replacement
|
|
|
0x0020, // 0x20 SPACE
|
|
|
0x2701, // 0x21 UPPER BLADE SCISSORS
|
|
|
0x2702, // 0x22 BLACK SCISSORS
|
|
|
0x2703, // 0x23 LOWER BLADE SCISSORS
|
|
|
0x2704, // 0x24 WHITE SCISSORS
|
|
|
0x260E, // 0x25 BLACK TELEPHONE
|
|
|
0x2706, // 0x26 TELEPHONE LOCATION SIGN
|
|
|
0x2707, // 0x27 TAPE DRIVE
|
|
|
0x2708, // 0x28 AIRPLANE
|
|
|
0x2709, // 0x29 ENVELOPE
|
|
|
0x261B, // 0x2A BLACK RIGHT POINTING INDEX
|
|
|
0x261E, // 0x2B WHITE RIGHT POINTING INDEX
|
|
|
0x270C, // 0x2C VICTORY HAND
|
|
|
0x270D, // 0x2D WRITING HAND
|
|
|
0x270E, // 0x2E LOWER RIGHT PENCIL
|
|
|
0x270F, // 0x2F PENCIL
|
|
|
0x2710, // 0x30 UPPER RIGHT PENCIL
|
|
|
0x2711, // 0x31 WHITE NIB
|
|
|
0x2712, // 0x32 BLACK NIB
|
|
|
0x2713, // 0x33 CHECK MARK
|
|
|
0x2714, // 0x34 HEAVY CHECK MARK
|
|
|
0x2715, // 0x35 MULTIPLICATION X
|
|
|
0x2716, // 0x36 HEAVY MULTIPLICATION X
|
|
|
0x2717, // 0x37 BALLOT X
|
|
|
0x2718, // 0x38 HEAVY BALLOT X
|
|
|
0x2719, // 0x39 OUTLINED GREEK CROSS
|
|
|
0x271A, // 0x3A HEAVY GREEK CROSS
|
|
|
0x271B, // 0x3B OPEN CENTRE CROSS
|
|
|
0x271C, // 0x3C HEAVY OPEN CENTRE CROSS
|
|
|
0x271D, // 0x3D LATIN CROSS
|
|
|
0x271E, // 0x3E SHADOWED WHITE LATIN CROSS
|
|
|
0x271F, // 0x3F OUTLINED LATIN CROSS
|
|
|
0x2720, // 0x40 MALTESE CROSS
|
|
|
0x2721, // 0x41 STAR OF DAVID
|
|
|
0x2722, // 0x42 FOUR TEARDROP-SPOKED ASTERISK
|
|
|
0x2723, // 0x43 FOUR BALLOON-SPOKED ASTERISK
|
|
|
0x2724, // 0x44 HEAVY FOUR BALLOON-SPOKED ASTERISK
|
|
|
0x2725, // 0x45 FOUR CLUB-SPOKED ASTERISK
|
|
|
0x2726, // 0x46 BLACK FOUR POINTED STAR
|
|
|
0x2727, // 0x47 WHITE FOUR POINTED STAR
|
|
|
0x2605, // 0x48 BLACK STAR
|
|
|
0x2729, // 0x49 STRESS OUTLINED WHITE STAR
|
|
|
0x272A, // 0x4A CIRCLED WHITE STAR
|
|
|
0x272B, // 0x4B OPEN CENTRE BLACK STAR
|
|
|
0x272C, // 0x4C BLACK CENTRE WHITE STAR
|
|
|
0x272D, // 0x4D OUTLINED BLACK STAR
|
|
|
0x272E, // 0x4E HEAVY OUTLINED BLACK STAR
|
|
|
0x272F, // 0x4F PINWHEEL STAR
|
|
|
0x2730, // 0x50 SHADOWED WHITE STAR
|
|
|
0x2731, // 0x51 HEAVY ASTERISK
|
|
|
0x2732, // 0x52 OPEN CENTRE ASTERISK
|
|
|
0x2733, // 0x53 EIGHT SPOKED ASTERISK
|
|
|
0x2734, // 0x54 EIGHT POINTED BLACK STAR
|
|
|
0x2735, // 0x55 EIGHT POINTED PINWHEEL STAR
|
|
|
0x2736, // 0x56 SIX POINTED BLACK STAR
|
|
|
0x2737, // 0x57 EIGHT POINTED RECTILINEAR BLACK STAR
|
|
|
0x2738, // 0x58 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
|
|
|
0x2739, // 0x59 TWELVE POINTED BLACK STAR
|
|
|
0x273A, // 0x5A SIXTEEN POINTED ASTERISK
|
|
|
0x273B, // 0x5B TEARDROP-SPOKED ASTERISK
|
|
|
0x273C, // 0x5C OPEN CENTRE TEARDROP-SPOKED ASTERISK
|
|
|
0x273D, // 0x5D HEAVY TEARDROP-SPOKED ASTERISK
|
|
|
0x273E, // 0x5E SIX PETALLED BLACK AND WHITE FLORETTE
|
|
|
0x273F, // 0x5F BLACK FLORETTE
|
|
|
0x2740, // 0x60 WHITE FLORETTE
|
|
|
0x2741, // 0x61 EIGHT PETALLED OUTLINED BLACK FLORETTE
|
|
|
0x2742, // 0x62 CIRCLED OPEN CENTRE EIGHT POINTED STAR
|
|
|
0x2743, // 0x63 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
|
|
|
0x2744, // 0x64 SNOWFLAKE
|
|
|
0x2745, // 0x65 TIGHT TRIFOLIATE SNOWFLAKE
|
|
|
0x2746, // 0x66 HEAVY CHEVRON SNOWFLAKE
|
|
|
0x2747, // 0x67 SPARKLE
|
|
|
0x2748, // 0x68 HEAVY SPARKLE
|
|
|
0x2749, // 0x69 BALLOON-SPOKED ASTERISK
|
|
|
0x274A, // 0x6A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
|
|
|
0x274B, // 0x6B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
|
|
|
0x25CF, // 0x6C BLACK CIRCLE
|
|
|
0x274D, // 0x6D SHADOWED WHITE CIRCLE
|
|
|
0x25A0, // 0x6E BLACK SQUARE
|
|
|
0x274F, // 0x6F LOWER RIGHT DROP-SHADOWED WHITE SQUARE
|
|
|
0x2750, // 0x70 UPPER RIGHT DROP-SHADOWED WHITE SQUARE
|
|
|
0x2751, // 0x71 LOWER RIGHT SHADOWED WHITE SQUARE
|
|
|
0x2752, // 0x72 UPPER RIGHT SHADOWED WHITE SQUARE
|
|
|
0x25B2, // 0x73 BLACK UP-POINTING TRIANGLE
|
|
|
0x25BC, // 0x74 BLACK DOWN-POINTING TRIANGLE
|
|
|
0x25C6, // 0x75 BLACK DIAMOND
|
|
|
0x2756, // 0x76 BLACK DIAMOND MINUS WHITE X
|
|
|
0x25D7, // 0x77 RIGHT HALF BLACK CIRCLE
|
|
|
0x2758, // 0x78 LIGHT VERTICAL BAR
|
|
|
0x2759, // 0x79 MEDIUM VERTICAL BAR
|
|
|
0x275A, // 0x7A HEAVY VERTICAL BAR
|
|
|
0x275B, // 0x7B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
|
|
|
0x275C, // 0x7C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
|
|
|
0x275D, // 0x7D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
|
|
|
0x275E, // 0x7E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
|
|
|
0xFFFD, // 0x7F no replacement
|
|
|
0xF8D7, // 0x80 MEDIUM LEFT PARENTHESIS ORNAMENT
|
|
|
0xF8D8, // 0x81 MEDIUM RIGHT PARENTHESIS ORNAMENT
|
|
|
0xF8D9, // 0x82 MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
|
|
|
0xF8DA, // 0x83 MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
|
|
|
0xF8DB, // 0x84 MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
|
|
|
0xF8DC, // 0x85 MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
|
|
|
0xF8DD, // 0x86 HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
|
|
|
0xF8DE, // 0x87 HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
|
|
|
0xF8DF, // 0x88 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
|
|
|
0xF8E0, // 0x89 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
|
|
|
0xF8E1, // 0x8A LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
|
|
|
0xF8E2, // 0x8B LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
|
|
|
0xF8E3, // 0x8C MEDIUM LEFT CURLY BRACKET ORNAMENT
|
|
|
0xF8E4, // 0x8D MEDIUM RIGHT CURLY BRACKET ORNAMENT
|
|
|
0xFFFD, // 0x8E no replacement
|
|
|
0xFFFD, // 0x8F no replacement
|
|
|
0xFFFD, // 0x90 no replacement
|
|
|
0xFFFD, // 0x91 no replacement
|
|
|
0xFFFD, // 0x92 no replacement
|
|
|
0xFFFD, // 0x93 no replacement
|
|
|
0xFFFD, // 0x94 no replacement
|
|
|
0xFFFD, // 0x95 no replacement
|
|
|
0xFFFD, // 0x96 no replacement
|
|
|
0xFFFD, // 0x97 no replacement
|
|
|
0xFFFD, // 0x98 no replacement
|
|
|
0xFFFD, // 0x99 no replacement
|
|
|
0xFFFD, // 0x9A no replacement
|
|
|
0xFFFD, // 0x9B no replacement
|
|
|
0xFFFD, // 0x9C no replacement
|
|
|
0xFFFD, // 0x9D no replacement
|
|
|
0xFFFD, // 0x9E no replacement
|
|
|
0xFFFD, // 0x9F no replacement
|
|
|
0xFFFD, // 0xA0 no replacement
|
|
|
0x2761, // 0xA1 CURVED STEM PARAGRAPH SIGN ORNAMENT
|
|
|
0x2762, // 0xA2 HEAVY EXCLAMATION MARK ORNAMENT
|
|
|
0x2763, // 0xA3 HEAVY HEART EXCLAMATION MARK ORNAMENT
|
|
|
0x2764, // 0xA4 HEAVY BLACK HEART
|
|
|
0x2765, // 0xA5 ROTATED HEAVY BLACK HEART BULLET
|
|
|
0x2766, // 0xA6 FLORAL HEART
|
|
|
0x2767, // 0xA7 ROTATED FLORAL HEART BULLET
|
|
|
0x2663, // 0xA8 BLACK CLUB SUIT
|
|
|
0x2666, // 0xA9 BLACK DIAMOND SUIT
|
|
|
0x2665, // 0xAA BLACK HEART SUIT
|
|
|
0x2660, // 0xAB BLACK SPADE SUIT
|
|
|
0x2460, // 0xAC CIRCLED DIGIT ONE
|
|
|
0x2461, // 0xAD CIRCLED DIGIT TWO
|
|
|
0x2462, // 0xAE CIRCLED DIGIT THREE
|
|
|
0x2463, // 0xAF CIRCLED DIGIT FOUR
|
|
|
0x2464, // 0xB0 CIRCLED DIGIT FIVE
|
|
|
0x2465, // 0xB1 CIRCLED DIGIT SIX
|
|
|
0x2466, // 0xB2 CIRCLED DIGIT SEVEN
|
|
|
0x2467, // 0xB3 CIRCLED DIGIT EIGHT
|
|
|
0x2468, // 0xB4 CIRCLED DIGIT NINE
|
|
|
0x2469, // 0xB5 CIRCLED NUMBER TEN
|
|
|
0x2776, // 0xB6 DINGBAT NEGATIVE CIRCLED DIGIT ONE
|
|
|
0x2777, // 0xB7 DINGBAT NEGATIVE CIRCLED DIGIT TWO
|
|
|
0x2778, // 0xB8 DINGBAT NEGATIVE CIRCLED DIGIT THREE
|
|
|
0x2779, // 0xB9 DINGBAT NEGATIVE CIRCLED DIGIT FOUR
|
|
|
0x277A, // 0xBA DINGBAT NEGATIVE CIRCLED DIGIT FIVE
|
|
|
0x277B, // 0xBB DINGBAT NEGATIVE CIRCLED DIGIT SIX
|
|
|
0x277C, // 0xBC DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
|
|
|
0x277D, // 0xBD DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
|
|
|
0x277E, // 0xBE DINGBAT NEGATIVE CIRCLED DIGIT NINE
|
|
|
0x277F, // 0xBF DINGBAT NEGATIVE CIRCLED NUMBER TEN
|
|
|
0x2780, // 0xC0 DINGBAT CIRCLED SANS-SERIF DIGIT ONE
|
|
|
0x2781, // 0xC1 DINGBAT CIRCLED SANS-SERIF DIGIT TWO
|
|
|
0x2782, // 0xC2 DINGBAT CIRCLED SANS-SERIF DIGIT THREE
|
|
|
0x2783, // 0xC3 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
|
|
|
0x2784, // 0xC4 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
|
|
|
0x2785, // 0xC5 DINGBAT CIRCLED SANS-SERIF DIGIT SIX
|
|
|
0x2786, // 0xC6 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
|
|
|
0x2787, // 0xC7 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
|
|
|
0x2788, // 0xC8 DINGBAT CIRCLED SANS-SERIF DIGIT NINE
|
|
|
0x2789, // 0xC9 DINGBAT CIRCLED SANS-SERIF NUMBER TEN
|
|
|
0x278A, // 0xCA DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
|
|
|
0x278B, // 0xCB DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
|
|
|
0x278C, // 0xCC DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
|
|
|
0x278D, // 0xCD DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
|
|
|
0x278E, // 0xCE DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
|
|
|
0x278F, // 0xCF DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
|
|
|
0x2790, // 0xD0 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
|
|
|
0x2791, // 0xD1 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
|
|
|
0x2792, // 0xD2 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
|
|
|
0x2793, // 0xD3 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
|
|
|
0x2794, // 0xD4 HEAVY WIDE-HEADED RIGHTWARDS ARROW
|
|
|
0x2192, // 0xD5 RIGHTWARDS ARROW
|
|
|
0x2194, // 0xD6 LEFT RIGHT ARROW
|
|
|
0x2195, // 0xD7 UP DOWN ARROW
|
|
|
0x2798, // 0xD8 HEAVY SOUTH EAST ARROW
|
|
|
0x2799, // 0xD9 HEAVY RIGHTWARDS ARROW
|
|
|
0x279A, // 0xDA HEAVY NORTH EAST ARROW
|
|
|
0x279B, // 0xDB DRAFTING POINT RIGHTWARDS ARROW
|
|
|
0x279C, // 0xDC HEAVY ROUND-TIPPED RIGHTWARDS ARROW
|
|
|
0x279D, // 0xDD TRIANGLE-HEADED RIGHTWARDS ARROW
|
|
|
0x279E, // 0xDE HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
|
|
|
0x279F, // 0xDF DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
|
|
|
0x27A0, // 0xE0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
|
|
|
0x27A1, // 0xE1 BLACK RIGHTWARDS ARROW
|
|
|
0x27A2, // 0xE2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
|
|
|
0x27A3, // 0xE3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
|
|
|
0x27A4, // 0xE4 BLACK RIGHTWARDS ARROWHEAD
|
|
|
0x27A5, // 0xE5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
|
|
|
0x27A6, // 0xE6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
|
|
|
0x27A7, // 0xE7 SQUAT BLACK RIGHTWARDS ARROW
|
|
|
0x27A8, // 0xE8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
|
|
|
0x27A9, // 0xE9 RIGHT-SHADED WHITE RIGHTWARDS ARROW
|
|
|
0x27AA, // 0xEA LEFT-SHADED WHITE RIGHTWARDS ARROW
|
|
|
0x27AB, // 0xEB BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
|
|
|
0x27AC, // 0xEC FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
|
|
|
0x27AD, // 0xED HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
|
|
|
0x27AE, // 0xEE HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
|
|
|
0x27AF, // 0xEF NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
|
|
|
0xFFFD, // 0xF0 no replacement
|
|
|
0x27B1, // 0xF1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
|
|
|
0x27B2, // 0xF2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW
|
|
|
0x27B3, // 0xF3 WHITE-FEATHERED RIGHTWARDS ARROW
|
|
|
0x27B4, // 0xF4 BLACK-FEATHERED SOUTH EAST ARROW
|
|
|
0x27B5, // 0xF5 BLACK-FEATHERED RIGHTWARDS ARROW
|
|
|
0x27B6, // 0xF6 BLACK-FEATHERED NORTH EAST ARROW
|
|
|
0x27B7, // 0xF7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW
|
|
|
0x27B8, // 0xF8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
|
|
|
0x27B9, // 0xF9 HEAVY BLACK-FEATHERED NORTH EAST ARROW
|
|
|
0x27BA, // 0xFA TEARDROP-BARBED RIGHTWARDS ARROW
|
|
|
0x27BB, // 0xFB HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
|
|
|
0x27BC, // 0xFC WEDGE-TAILED RIGHTWARDS ARROW
|
|
|
0x27BD, // 0xFD HEAVY WEDGE-TAILED RIGHTWARDS ARROW
|
|
|
0x27BE, // 0xFE OPEN-OUTLINED RIGHTWARDS ARROW
|
|
|
0xFFFD // 0xFF no replacement
|
|
|
};
|
|
|
|
|
|
/* characters from symbol font, conversion to a unicode font. Change both the
|
|
|
code and the font on conversion. */
|
|
|
static unsigned int symbol_convert[256] = {
|
|
|
0xFFFD, // 0x00 no replacement
|
|
|
0xFFFD, // 0x01 no replacement
|
|
|
0xFFFD, // 0x02 no replacement
|
|
|
0xFFFD, // 0x03 no replacement
|
|
|
0xFFFD, // 0x04 no replacement
|
|
|
0xFFFD, // 0x05 no replacement
|
|
|
0xFFFD, // 0x06 no replacement
|
|
|
0xFFFD, // 0x07 no replacement
|
|
|
0xFFFD, // 0x08 no replacement
|
|
|
0xFFFD, // 0x09 no replacement
|
|
|
0xFFFD, // 0x0A no replacement
|
|
|
0xFFFD, // 0x0B no replacement
|
|
|
0xFFFD, // 0x0C no replacement
|
|
|
0xFFFD, // 0x0D no replacement
|
|
|
0xFFFD, // 0x0E no replacement
|
|
|
0xFFFD, // 0x0F no replacement
|
|
|
0xFFFD, // 0x10 no replacement
|
|
|
0xFFFD, // 0x11 no replacement
|
|
|
0xFFFD, // 0x12 no replacement
|
|
|
0xFFFD, // 0x13 no replacement
|
|
|
0xFFFD, // 0x14 no replacement
|
|
|
0xFFFD, // 0x15 no replacement
|
|
|
0xFFFD, // 0x16 no replacement
|
|
|
0xFFFD, // 0x17 no replacement
|
|
|
0xFFFD, // 0x18 no replacement
|
|
|
0xFFFD, // 0x19 no replacement
|
|
|
0xFFFD, // 0x1A no replacement
|
|
|
0xFFFD, // 0x1B no replacement
|
|
|
0xFFFD, // 0x1C no replacement
|
|
|
0xFFFD, // 0x1D no replacement
|
|
|
0xFFFD, // 0x1E no replacement
|
|
|
0xFFFD, // 0x1F no replacement
|
|
|
0x0020, // 0x20 SPACE
|
|
|
0x0021, // 0x21 EXCLAMATION MARK
|
|
|
0x2200, // 0x22 FOR ALL
|
|
|
0x0023, // 0x23 NUMBER SIGN
|
|
|
0x2203, // 0x24 THERE EXISTS
|
|
|
0x0025, // 0x25 PERCENT SIGN
|
|
|
0x0026, // 0x26 AMPERSAND
|
|
|
0x220B, // 0x27 CONTAINS AS MEMBER
|
|
|
0x0028, // 0x28 OPENING PARENTHESIS
|
|
|
0x0029, // 0x29 CLOSING PARENTHESIS
|
|
|
0x2217, // 0x2A ASTERISK OPERATOR
|
|
|
0x002B, // 0x2B PLUS SIGN
|
|
|
0x002C, // 0x2C COMMA
|
|
|
0x2212, // 0x2D MINUS SIGN
|
|
|
0x002E, // 0x2E PERIOD
|
|
|
0x002F, // 0x2F SLASH
|
|
|
0x0030, // 0x30 DIGIT ZERO
|
|
|
0x0031, // 0x31 DIGIT ONE
|
|
|
0x0032, // 0x32 DIGIT TWO
|
|
|
0x0033, // 0x33 DIGIT THREE
|
|
|
0x0034, // 0x34 DIGIT FOUR
|
|
|
0x0035, // 0x35 DIGIT FIVE
|
|
|
0x0036, // 0x36 DIGIT SIX
|
|
|
0x0037, // 0x37 DIGIT SEVEN
|
|
|
0x0038, // 0x38 DIGIT EIGHT
|
|
|
0x0039, // 0x39 DIGIT NINE
|
|
|
0x003A, // 0x3A COLON
|
|
|
0x003B, // 0x3B SEMICOLON
|
|
|
0x003C, // 0x3C LESS-THAN SIGN
|
|
|
0x003D, // 0x3D EQUALS SIGN
|
|
|
0x003E, // 0x3E GREATER-THAN SIGN
|
|
|
0x003F, // 0x3F QUESTION MARK
|
|
|
0x2245, // 0x40 APPROXIMATELY EQUAL TO
|
|
|
0x0391, // 0x41 GREEK CAPITAL LETTER ALPHA
|
|
|
0x0392, // 0x42 GREEK CAPITAL LETTER BETA
|
|
|
0x03A7, // 0x43 GREEK CAPITAL LETTER CHI
|
|
|
0x0394, // 0x44 GREEK CAPITAL LETTER DELTA
|
|
|
0x0395, // 0x45 GREEK CAPITAL LETTER EPSILON
|
|
|
0x03A6, // 0x46 GREEK CAPITAL LETTER PHI
|
|
|
0x0393, // 0x47 GREEK CAPITAL LETTER GAMMA
|
|
|
0x0397, // 0x48 GREEK CAPITAL LETTER ETA
|
|
|
0x0399, // 0x49 GREEK CAPITAL LETTER IOTA
|
|
|
0x03D1, // 0x4A GREEK SMALL LETTER SCRIPT THETA
|
|
|
0x039A, // 0x4B GREEK CAPITAL LETTER KAPPA
|
|
|
0x039B, // 0x4C GREEK CAPITAL LETTER LAMBDA
|
|
|
0x039C, // 0x4D GREEK CAPITAL LETTER MU
|
|
|
0x039D, // 0x4E GREEK CAPITAL LETTER NU
|
|
|
0x039F, // 0x4F GREEK CAPITAL LETTER OMICRON
|
|
|
0x03A0, // 0x50 GREEK CAPITAL LETTER PI
|
|
|
0x0398, // 0x51 GREEK CAPITAL LETTER THETA
|
|
|
0x03A1, // 0x52 GREEK CAPITAL LETTER RHO
|
|
|
0x03A3, // 0x53 GREEK CAPITAL LETTER SIGMA
|
|
|
0x03A4, // 0x54 GREEK CAPITAL LETTER TAU
|
|
|
0x03A5, // 0x55 GREEK CAPITAL LETTER UPSILON
|
|
|
0x03C2, // 0x56 GREEK SMALL LETTER FINAL SIGMA
|
|
|
0x03A9, // 0x57 GREEK CAPITAL LETTER OMEGA
|
|
|
0x039E, // 0x58 GREEK CAPITAL LETTER XI
|
|
|
0x03A8, // 0x59 GREEK CAPITAL LETTER PSI
|
|
|
0x0396, // 0x5A GREEK CAPITAL LETTER ZETA
|
|
|
0x005B, // 0x5B OPENING SQUARE BRACKET
|
|
|
0x2234, // 0x5C THEREFORE
|
|
|
0x005D, // 0x5D CLOSING SQUARE BRACKET
|
|
|
0x22A5, // 0x5E UP TACK
|
|
|
0x005F, // 0x5F SPACING UNDERSCORE
|
|
|
0x203E, // 0x60 SPACING OVERSCORE
|
|
|
0x03B1, // 0x61 GREEK SMALL LETTER ALPHA
|
|
|
0x03B2, // 0x62 GREEK SMALL LETTER BETA
|
|
|
0x03C7, // 0x63 GREEK SMALL LETTER CHI
|
|
|
0x03B4, // 0x64 GREEK SMALL LETTER DELTA
|
|
|
0x03B5, // 0x65 GREEK SMALL LETTER EPSILON
|
|
|
0x03C6, // 0x66 GREEK SMALL LETTER PHI
|
|
|
0x03B3, // 0x67 GREEK SMALL LETTER GAMMA
|
|
|
0x03B7, // 0x68 GREEK SMALL LETTER ETA
|
|
|
0x03B9, // 0x69 GREEK SMALL LETTER IOTA
|
|
|
0x03D5, // 0x6A GREEK SMALL LETTER SCRIPT PHI
|
|
|
0x03BA, // 0x6B GREEK SMALL LETTER KAPPA
|
|
|
0x03BB, // 0x6C GREEK SMALL LETTER LAMBDA
|
|
|
0x03BC, // 0x6D GREEK SMALL LETTER MU
|
|
|
0x03BD, // 0x6E GREEK SMALL LETTER NU
|
|
|
0x03BF, // 0x6F GREEK SMALL LETTER OMICRON
|
|
|
0x03C0, // 0x70 GREEK SMALL LETTER PI
|
|
|
0x03B8, // 0x71 GREEK SMALL LETTER THETA
|
|
|
0x03C1, // 0x72 GREEK SMALL LETTER RHO
|
|
|
0x03C3, // 0x73 GREEK SMALL LETTER SIGMA
|
|
|
0x03C4, // 0x74 GREEK SMALL LETTER TAU
|
|
|
0x03C5, // 0x75 GREEK SMALL LETTER UPSILON
|
|
|
0x03D6, // 0x76 GREEK SMALL LETTER OMEGA PI
|
|
|
0x03C9, // 0x77 GREEK SMALL LETTER OMEGA
|
|
|
0x03BE, // 0x78 GREEK SMALL LETTER XI
|
|
|
0x03C8, // 0x79 GREEK SMALL LETTER PSI
|
|
|
0x03B6, // 0x7A GREEK SMALL LETTER ZETA
|
|
|
0x007B, // 0x7B OPENING CURLY BRACKET
|
|
|
0x007C, // 0x7C VERTICAL BAR
|
|
|
0x007D, // 0x7D CLOSING CURLY BRACKET
|
|
|
0x223C, // 0x7E TILDE OPERATOR
|
|
|
0xFFFD, // 0x7F no replacement
|
|
|
0xFFFD, // 0x80 no replacement
|
|
|
0xFFFD, // 0x81 no replacement
|
|
|
0xFFFD, // 0x82 no replacement
|
|
|
0xFFFD, // 0x83 no replacement
|
|
|
0xFFFD, // 0x84 no replacement
|
|
|
0xFFFD, // 0x85 no replacement
|
|
|
0xFFFD, // 0x86 no replacement
|
|
|
0xFFFD, // 0x87 no replacement
|
|
|
0xFFFD, // 0x88 no replacement
|
|
|
0xFFFD, // 0x89 no replacement
|
|
|
0xFFFD, // 0x8A no replacement
|
|
|
0xFFFD, // 0x8B no replacement
|
|
|
0xFFFD, // 0x8C no replacement
|
|
|
0xFFFD, // 0x8D no replacement
|
|
|
0xFFFD, // 0x8E no replacement
|
|
|
0xFFFD, // 0x8F no replacement
|
|
|
0xFFFD, // 0x90 no replacement
|
|
|
0xFFFD, // 0x91 no replacement
|
|
|
0xFFFD, // 0x92 no replacement
|
|
|
0xFFFD, // 0x93 no replacement
|
|
|
0xFFFD, // 0x94 no replacement
|
|
|
0xFFFD, // 0x95 no replacement
|
|
|
0xFFFD, // 0x96 no replacement
|
|
|
0xFFFD, // 0x97 no replacement
|
|
|
0xFFFD, // 0x98 no replacement
|
|
|
0xFFFD, // 0x99 no replacement
|
|
|
0xFFFD, // 0x9A no replacement
|
|
|
0xFFFD, // 0x9B no replacement
|
|
|
0xFFFD, // 0x9C no replacement
|
|
|
0xFFFD, // 0x9D no replacement
|
|
|
0xFFFD, // 0x9E no replacement
|
|
|
0xFFFD, // 0x9F no replacement
|
|
|
0x20AC, // 0xA0 EURO SIGN
|
|
|
0x03D2, // 0xA1 GREEK CAPITAL LETTER UPSILON HOOK
|
|
|
0x2032, // 0xA2 PRIME
|
|
|
0x2264, // 0xA3 LESS THAN OR EQUAL TO
|
|
|
0x2044, // 0xA4 FRACTION SLASH
|
|
|
0x221E, // 0xA5 INFINITY
|
|
|
0x0192, // 0xA6 LATIN SMALL LETTER SCRIPT F
|
|
|
0x2663, // 0xA7 BLACK CLUB SUIT
|
|
|
0x2666, // 0xA8 BLACK DIAMOND SUIT
|
|
|
0x2665, // 0xA9 BLACK HEART SUIT
|
|
|
0x2660, // 0xAA BLACK SPADE SUIT
|
|
|
0x2194, // 0xAB LEFT RIGHT ARROW
|
|
|
0x2190, // 0xAC LEFT ARROW
|
|
|
0x2191, // 0xAD UP ARROW
|
|
|
0x2192, // 0xAE RIGHT ARROW
|
|
|
0x2193, // 0xAF DOWN ARROW
|
|
|
0x00B0, // 0xB0 DEGREE SIGN
|
|
|
0x00B1, // 0xB1 PLUS-OR-MINUS SIGN
|
|
|
0x2033, // 0xB2 DOUBLE PRIME
|
|
|
0x2265, // 0xB3 GREATER THAN OR EQUAL TO
|
|
|
0x00D7, // 0xB4 MULTIPLICATION SIGN
|
|
|
0x221D, // 0xB5 PROPORTIONAL TO
|
|
|
0x2202, // 0xB6 PARTIAL DIFFERENTIAL
|
|
|
0x2219, // 0xB7 BULLET (use BULLET operator, so normal font BULLET will not convert to Symbol BULLET)
|
|
|
0x00F7, // 0xB8 DIVISION SIGN
|
|
|
0x2260, // 0xB9 NOT EQUAL TO
|
|
|
0x2261, // 0xBA IDENTICAL TO
|
|
|
0x2248, // 0xBB ALMOST EQUAL TO
|
|
|
0x2026, // 0xBC HORIZONTAL ELLIPSIS
|
|
|
0xF8E6, // 0xBD VERTICAL ARROW EXTENDER
|
|
|
0xF8E7, // 0xBE HORIZONTAL ARROW EXTENDER
|
|
|
0x21B5, // 0xBF DOWN ARROW WITH CORNER LEFT
|
|
|
0x2135, // 0xC0 FIRST TRANSFINITE CARDINAL
|
|
|
0x2111, // 0xC1 BLACK-LETTER I
|
|
|
0x211C, // 0xC2 BLACK-LETTER R
|
|
|
0x2118, // 0xC3 SCRIPT P
|
|
|
0x2297, // 0xC4 CIRCLED TIMES
|
|
|
0x2295, // 0xC5 CIRCLED PLUS
|
|
|
0x2205, // 0xC6 EMPTY SET
|
|
|
0x2229, // 0xC7 INTERSECTION
|
|
|
0x222A, // 0xC8 UNION
|
|
|
0x2283, // 0xC9 SUPERSET OF
|
|
|
0x2287, // 0xCA SUPERSET OF OR EQUAL TO
|
|
|
0x2284, // 0xCB NOT A SUBSET OF
|
|
|
0x2282, // 0xCC SUBSET OF
|
|
|
0x2286, // 0xCD SUBSET OF OR EQUAL TO
|
|
|
0x2208, // 0xCE ELEMENT OF
|
|
|
0x2209, // 0xCF NOT AN ELEMENT OF
|
|
|
0x2220, // 0xD0 ANGLE
|
|
|
0x2207, // 0xD1 NABLA
|
|
|
0x00AE, // 0xD2 REGISTERED TRADE MARK SIGN
|
|
|
0x00A9, // 0xD3 COPYRIGHT SIGN
|
|
|
0x2122, // 0xD4 TRADEMARK
|
|
|
0x220F, // 0xD5 N-ARY PRODUCT
|
|
|
0x221A, // 0xD6 SQUARE ROOT
|
|
|
0x22C5, // 0xD7 DOT OPERATOR
|
|
|
0x00AC, // 0xD8 NOT SIGN
|
|
|
0x2227, // 0xD9 LOGICAL AND
|
|
|
0x2228, // 0xDA LOGICAL OR
|
|
|
0x21D4, // 0xDB LEFT RIGHT DOUBLE ARROW
|
|
|
0x21D0, // 0xDC LEFT DOUBLE ARROW
|
|
|
0x21D1, // 0xDD UP DOUBLE ARROW
|
|
|
0x21D2, // 0xDE RIGHT DOUBLE ARROW
|
|
|
0x21D3, // 0xDF DOWN DOUBLE ARROW
|
|
|
0x25CA, // 0xE0 LOZENGE
|
|
|
0x2329, // 0xE1 BRA
|
|
|
0x00AE, // 0xE2 REGISTERED TRADE MARK SIGN
|
|
|
0x00A9, // 0xE3 COPYRIGHT SIGN
|
|
|
0x2122, // 0xE4 TRADEMARK
|
|
|
0x2211, // 0xE5 N-ARY SUMMATION
|
|
|
0x239B, // 0xE6 LEFT PAREN TOP
|
|
|
0x239C, // 0xE7 LEFT PAREN EXTENDER
|
|
|
0x239D, // 0xE8 LEFT PAREN BOTTOM
|
|
|
0x23A1, // 0xE9 LEFT SQUARE BRACKET TOP
|
|
|
0x23A2, // 0xEA LEFT SQUARE BRACKET EXTENDER
|
|
|
0x23A3, // 0xEB LEFT SQUARE BRACKET BOTTOM
|
|
|
0x23A7, // 0xEC LEFT CURLY BRACKET TOP
|
|
|
0x23A8, // 0xED LEFT CURLY BRACKET MID
|
|
|
0x23A9, // 0xEE LEFT CURLY BRACKET BOTTOM
|
|
|
0x23AA, // 0xEF CURLY BRACKET EXTENDER
|
|
|
0xFFFD, // 0xF0 no replacement
|
|
|
0x232A, // 0xF1 KET
|
|
|
0x222B, // 0xF2 INTEGRAL
|
|
|
0x2320, // 0xF3 TOP HALF INTEGRAL
|
|
|
0x23AE, // 0xF4 INTEGRAL EXTENDER
|
|
|
0x2321, // 0xF5 BOTTOM HALF INTEGRAL
|
|
|
0x239E, // 0xF6 RIGHT PAREN TOP
|
|
|
0x239F, // 0xF7 RIGHT PAREN EXTENDER
|
|
|
0x23A0, // 0xF8 RIGHT PAREN BOTTOM
|
|
|
0x23A4, // 0xF9 RIGHT SQUARE BRACKET TOP
|
|
|
0x23A5, // 0xFA RIGHT SQUARE BRACKET EXTENDER
|
|
|
0x23A6, // 0xFB RIGHT SQUARE BRACKET BOTTOM
|
|
|
0x23AB, // 0xFC RIGHT CURLY BRACKET TOP
|
|
|
0x23AC, // 0xFD RIGHT CURLY BRACKET MID
|
|
|
0x23AD, // 0xFE RIGHT CURLY BRACKET BOTTOM
|
|
|
0xFFFD // 0xFF no replacement
|
|
|
};
|
|
|
|
|
|
enum cvt_to_font { CVTNON, CVTSYM, CVTZDG, CVTWDG };
|
|
|
enum SPCSSFontStyle : std::uint_least8_t {
|
|
|
SP_CSS_FONT_STYLE_NORMAL,
|
|
|
SP_CSS_FONT_STYLE_ITALIC,
|
|
|
SP_CSS_FONT_STYLE_OBLIQUE
|
|
|
};
|
|
|
enum MFDrawMode { DRAW_PAINT, DRAW_PATTERN, DRAW_IMAGE, DRAW_LINEAR_GRADIENT, DRAW_RADIAL_GRADIENT };
|
|
|
|
|
|
|
|
|
#ifndef M_PI
|
|
|
# define M_PI 3.14159265358979323846 /* pi */
|
|
|
#endif
|
|
|
|
|
|
typedef struct
|
|
|
{
|
|
|
double x; //<2F>߶ε<DFB6><CEB5><EFBFBD>x
|
|
|
double y; //<2F>߶ε<DFB6><CEB5><EFBFBD>y
|
|
|
}EMRLINETOS;
|
|
|
/**
|
|
|
\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
//FT_Library library; // Fontconfig <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱע<CAB1>ͣ<EFBFBD><CDA3><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|
|
|
//FNT_SPECS *fonts; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD>飨<EFBFBD><E9A3A8>ʱע<CAB1>ͣ<EFBFBD><CDA3><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|
|
|
uint32_t space; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ĵ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t used; // <20><>ʹ<EFBFBD>õĴ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
} FT_INFO;
|
|
|
|
|
|
typedef struct {
|
|
|
uint8_t Red; // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD> (0-255)
|
|
|
uint8_t Green; // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD> (0-255)
|
|
|
uint8_t Blue; // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD> (0-255)
|
|
|
uint8_t Reserved; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6>δʹ<CEB4><CAB9>
|
|
|
} TRCOLORREF;
|
|
|
|
|
|
/**
|
|
|
\brief <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
uint8_t *string; // UTF-8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
double ori; // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>ߵĽǶȣ<C7B6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double fs; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
double x; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR_INFO <20><> x,y <20><> x <20><><EFBFBD>꣬<EFBFBD><EAA3AC>λΪ<CEBB>㣨points<74><73>
|
|
|
double y; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR_INFO <20><> x,y <20><> y <20><><EFBFBD>꣬<EFBFBD><EAA3AC>λΪ<CEBB>㣨points<74><73>
|
|
|
double xkern; // <20><>ǰһ<C7B0><D2BB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD> x <20><><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
|
|
double ykern; // <20><>ǰһ<C7B0><D2BB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD> y <20><><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
|
|
|
double boff; // <20><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵײ<DAB5><D7B2>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
double vadvance; // <20>м<EFBFBD><D0BC>࣬<EFBFBD><E0A3AC><EFBFBD><EFBFBD>ֵΪ 1.25 <20><> 1.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
TRCOLORREF color1; // <20>ı<EFBFBD><C4B1><EFBFBD>ɫ<EFBFBD><C9AB>RGB<47><42>
|
|
|
int taln; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x,y <20>Ķ<EFBFBD><C4B6>뷽ʽ
|
|
|
int ldir; // <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>LDIR_*<2A><>
|
|
|
int italics; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD> FontConfig <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
|
|
int weight; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD> FontConfig <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
|
|
int condensed; // <20>Ƿ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FontConfig <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
|
|
int decoration; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>κ<D7B6><CEBA>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʹ<CAB1><CAB9>
|
|
|
int spaces; // <20><>¼<EFBFBD>ڿ<EFBFBD><DABF>־<EFBFBD><D6BE><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>Ŀո<C4BF><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><> 2<><32>
|
|
|
TRCOLORREF decColor1; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>κ<D7B6><CEBA>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʹ<CAB1><CAB9>
|
|
|
int co; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> narrow ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>
|
|
|
int rt_tidx; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int fi_idx; // ʹ<>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FT_INFO <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
} TCHUNK_SPECS;
|
|
|
|
|
|
/**
|
|
|
\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR_INFO <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>/<2F><>ת<EFBFBD><D7AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
TCHUNK_SPECS *chunks; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t space; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ĵ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t used; // <20><>ʹ<EFBFBD>õĴ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
} TP_INFO;
|
|
|
|
|
|
/**
|
|
|
\brief <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR_INFO <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>/<2F><>ת<EFBFBD><D7AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
double xll; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½ǵ<C2BD> x <20><><EFBFBD><EFBFBD>
|
|
|
double yll; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½ǵ<C2BD> y <20><><EFBFBD><EFBFBD>
|
|
|
double xur; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻǵ<CFBD> x <20><><EFBFBD><EFBFBD>
|
|
|
double yur; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻǵ<CFBD> y <20><><EFBFBD><EFBFBD>
|
|
|
double xbearing; // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> x <20><><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD>أ<EFBFBD>
|
|
|
} BRECT_SPECS;
|
|
|
|
|
|
/**
|
|
|
\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
BRECT_SPECS *rects; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t space; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ĵ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t used; // <20><>ʹ<EFBFBD>õĴ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
} BR_INFO;
|
|
|
|
|
|
/**
|
|
|
\brief <20><>¼һ<C2BC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塱<EFBFBD><E5A1B1>complex<65><78><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><D4B1>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
int *members; // <20>洢<EFBFBD><E6B4A2>ֱ<EFBFBD><D6B1><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣<EFBFBD><E9A1A3><EFBFBD><EFBFBD>Ϊ TR_PARA_*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
// cxi <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ TR_TEXT <20><> TR_LINE<4E><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
|
|
|
// <20><>Ӧ tpi <20>е<EFBFBD><D0B5>ı<EFBFBD>
|
|
|
uint32_t space; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ĵ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t used; // <20><>ʹ<EFBFBD>õĴ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
} CHILD_SPECS;
|
|
|
|
|
|
/**
|
|
|
\brief <20><>ʾһ<CABE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塱<EFBFBD><E5A1B1>complex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
int rt_cidx; // <20><><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
enum tr_classes type; // <20>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7>ࣨtr_classes<65><73>
|
|
|
CHILD_SPECS kids; // <20>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>ӽڵ<D3BD><DAB5><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TR_TEXT <20><><EFBFBD>ͣ<EFBFBD>kids <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> tpi<70><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> cxi
|
|
|
|
|
|
} CX_SPECS;
|
|
|
|
|
|
/**
|
|
|
\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塱<EFBFBD><E5A1B1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
CX_SPECS *cx; // <20>洢<EFBFBD><E6B4A2><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t space; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ĵ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t used; // <20><>ʹ<EFBFBD>õĴ洢<C4B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t phase1; // <20><>һ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20>ı<EFBFBD>Ƭ<EFBFBD>Σ<EFBFBD>
|
|
|
uint32_t lines; // <20><>һ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD>У<EFBFBD>lines<65><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint32_t paras; // <20>ڶ<EFBFBD><DAB6><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>壨<EFBFBD><E5A3A8><EFBFBD>䣩<EFBFBD><E4A3A9><EFBFBD><EFBFBD>
|
|
|
} CX_INFO;
|
|
|
|
|
|
/**
|
|
|
\brief <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
typedef struct {
|
|
|
FT_INFO *fti; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>洢<EFBFBD>ṹָ<E1B9B9><D6B8>
|
|
|
TP_INFO *tpi; // <20>ı<EFBFBD><C4B1><EFBFBD>Ϣ/λ<>ô洢<C3B4>ṹָ<E1B9B9><D6B8>
|
|
|
BR_INFO *bri; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>洢<EFBFBD>ṹָ<E1B9B9><D6B8>
|
|
|
CX_INFO *cxi; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>洢<EFBFBD>ṹָ<E1B9B9><D6B8>
|
|
|
uint8_t *out; // <20><><EFBFBD>ڴ洢<DAB4><E6B4A2>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double qe; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>points<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double esc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ƕȣ<C7B6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double x; // <20><>һ<EFBFBD><D2BB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x <20><><EFBFBD>꣨points<74><73>
|
|
|
double y; // <20><>һ<EFBFBD><D2BB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> y <20><><EFBFBD>꣨points<74><73>
|
|
|
int dirty; // <20><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>¼<EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 1
|
|
|
int use_kern; // <20><>ʹ<EFBFBD><CAB9><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>kerning<6E><67><EFBFBD><EFBFBD>Ϊ 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0
|
|
|
int load_flags; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> FT_LOAD_NO_SCALE <20><> FT_LOAD_TARGET_NORMAL
|
|
|
int kern_mode; // <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>FT_KERNING_DEFAULT, FT_KERNING_UNFITTED <20><>
|
|
|
uint32_t outspace; // out <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
|
|
|
uint32_t outused; // out <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5>С
|
|
|
int usebk; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB>Ʊ<EFBFBD><C6B1><EFBFBD>ɫ<EFBFBD><C9AB>Ϊ 1
|
|
|
TRCOLORREF bkcolor; // <20><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>ɫ<EFBFBD><C9AB>RGB<47><42>
|
|
|
} TR_INFO;
|
|
|
|
|
|
/**
|
|
|
\brief EMF_OBJECT <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EMF <20><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
struct EMF_OBJECT {
|
|
|
int type = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int level = 0; // Ƕ<>ײ㼶
|
|
|
char *lpEMFR = nullptr; // ָ<><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> EMF <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
\brief EMF_STRINGS <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڴ洢<DAB4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
struct EMF_STRINGS {
|
|
|
int size = 0; // <20>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int count = 0; // <20><>ʹ<EFBFBD>õ<EFBFBD><C3B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
char **strings = nullptr; // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
\brief EMF_DEVICE_CONTEXT <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC>ǰ<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>DC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
|
|
*/
|
|
|
struct EMF_DEVICE_CONTEXT
|
|
|
{
|
|
|
EMF_DEVICE_CONTEXT() :
|
|
|
font_size(0),
|
|
|
font_ori_value(0),
|
|
|
font_name(nullptr),
|
|
|
clip_id(0),
|
|
|
stroke_set(false), stroke_mode(0), stroke_idx(0), stroke_recidx(0),
|
|
|
fill_set(false), fill_mode(0), fill_idx(0), fill_recidx(0),
|
|
|
dirty(0),
|
|
|
ScaleInX(0), ScaleInY(0),
|
|
|
ScaleOutX(0), ScaleOutY(0),
|
|
|
bkMode(U_TRANSPARENT),
|
|
|
textAlign(0),
|
|
|
pen_width(0.1)
|
|
|
{
|
|
|
sizeWnd = sizel_set(0, 0);
|
|
|
sizeView = sizel_set(0, 0);
|
|
|
winorg = point32_set(0, 0);
|
|
|
vieworg = point32_set(0, 0);
|
|
|
bkColor = U_RGB(255, 255, 255); // Ĭ<>ϱ<EFBFBD><CFB1><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
|
|
|
textColor = U_RGB(0, 0, 0); // Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
|
|
|
worldTransform.eM11 = 1.0;
|
|
|
worldTransform.eM12 = 0.0;
|
|
|
worldTransform.eM21 = 0.0;
|
|
|
worldTransform.eM22 = 1.0;
|
|
|
worldTransform.eDx = 0.0;
|
|
|
worldTransform.eDy = 0.0;
|
|
|
cur = point32_set(0, 0);
|
|
|
}
|
|
|
|
|
|
double font_size; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>points<74><73>
|
|
|
double font_ori_value; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕȣ<C7B6><C8A3>ȣ<EFBFBD>
|
|
|
char *font_name; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int clip_id; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44>0 <20><>ʾ<EFBFBD><EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
bool stroke_set; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱ʻ<CBB1>
|
|
|
int stroke_mode; // <20>ʻ<EFBFBD>ģʽ<C4A3><CABD>ö<EFBFBD>٣<EFBFBD>
|
|
|
int stroke_idx; // <20>ʻ<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int stroke_recidx; // <20>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱʻ<D6B1><CABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
bool fill_set; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int fill_mode; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ö<EFBFBD>٣<EFBFBD>
|
|
|
int fill_idx; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int fill_recidx; // <20>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int dirty; // <20><>ʶ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ʻ<EFBFBD><CABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1>ࡱ״̬
|
|
|
|
|
|
double pen_width;
|
|
|
|
|
|
U_SIZEL sizeWnd; // <20><><EFBFBD>ڴ<EFBFBD>С
|
|
|
U_SIZEL sizeView; // <20><>ͼ<EFBFBD><CDBC>С
|
|
|
U_POINTL winorg; // <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
|
|
|
U_POINTL vieworg; // <20><>ͼԭ<CDBC><D4AD>
|
|
|
double ScaleInX, ScaleInY; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double ScaleOutX, ScaleOutY; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
uint16_t bkMode; // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><CDB8> U_TRANSPARENT <20>ȣ<EFBFBD>
|
|
|
U_COLORREF bkColor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>RGB<47><42>
|
|
|
U_COLORREF textColor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>RGB<47><42>
|
|
|
uint32_t textAlign; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>뷽ʽ
|
|
|
U_XFORM worldTransform; // <20><><EFBFBD><EFBFBD><EFBFBD>任<EFBFBD><E4BBBB><EFBFBD><EFBFBD>
|
|
|
U_POINTL cur; // <20><>ǰ<EFBFBD><C7B0>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|
|
};
|
|
|
|
|
|
inline constexpr auto EMF_MAX_DC = 128;
|
|
|
|
|
|
/**
|
|
|
\brief EMF_CALLBACK_DATA <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
|
|
|
*/
|
|
|
struct EMF_CALLBACK_DATA
|
|
|
{
|
|
|
EMF_CALLBACK_DATA() :
|
|
|
level(0),
|
|
|
E2IdirY(1.0),
|
|
|
D2PscaleX(1.0), D2PscaleY(1.0),
|
|
|
MM100InX(0), MM100InY(0),
|
|
|
PixelsInX(0), PixelsInY(0),
|
|
|
PixelsOutX(0), PixelsOutY(0),
|
|
|
ulCornerInX(0), ulCornerInY(0),
|
|
|
ulCornerOutX(0), ulCornerOutY(0),
|
|
|
mask(0),
|
|
|
arcdir(U_AD_COUNTERCLOCKWISE),
|
|
|
dwRop2(U_R2_COPYPEN), dwRop3(0),
|
|
|
MMX(0), MMY(0),
|
|
|
m_wordScaleX(0), m_wordScaleY(0),
|
|
|
m_renderingOriginX(0), m_renderingOriginY(0),
|
|
|
m_objID(-1), m_fillColor(0),
|
|
|
m_lineColor(0), m_fillRect(0, 0, 0, 0),
|
|
|
drawtype(0),
|
|
|
pDesc(nullptr),
|
|
|
tri(nullptr),
|
|
|
n_obj(0)
|
|
|
{}
|
|
|
|
|
|
EMF_DEVICE_CONTEXT dc[EMF_MAX_DC + 1]; // <20>洢<EFBFBD><E6B4A2><EFBFBD>㼶<EFBFBD><E3BCB6><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
int level; // <20><>ǰǶ<C7B0>ײ㼶
|
|
|
|
|
|
double E2IdirY; // EMF <20><> Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>(<28><> Inkscape)<29><> Y <20><><EFBFBD><EFBFBD>
|
|
|
double D2PscaleX, D2PscaleY; // EMF <20>豸<EFBFBD><E8B1B8>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double MM100InX, MM100InY; // <20><>ͼ<EFBFBD><CDBC>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ٷ<EFBFBD>֮һ<D6AE><D2BB><EFBFBD>ף<EFBFBD>
|
|
|
double PixelsInX, PixelsInY; // <20><>ͼ<EFBFBD><CDBC>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>EMF <20><><EFBFBD>أ<EFBFBD>
|
|
|
double PixelsOutX, PixelsOutY; // <20><>ͼ<EFBFBD><CDBC>С<EFBFBD><D0A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD> Inkscape <20><><EFBFBD>أ<EFBFBD>
|
|
|
double ulCornerInX, ulCornerInY; // <20><EFBFBD><DFBC><EFBFBD>λ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>Ͻǣ<CFBD><C7A3><EFBFBD><EFBFBD><EFBFBD> EMF header rclBounds<64><73>
|
|
|
double ulCornerOutX, ulCornerOutY; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>Ͻ<EFBFBD>
|
|
|
|
|
|
uint32_t mask; // <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
int arcdir; // <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD>U_AD_COUNTERCLOCKWISE <20><> U_AD_CLOCKWISE
|
|
|
|
|
|
uint32_t dwRop2; // <20><>Ԫ<EFBFBD><D4AA>դ<EFBFBD><D5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0 <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|
|
|
uint32_t dwRop3; // <20><>Ԫ<EFBFBD><D4AA>դ<EFBFBD><D5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0 <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
double MMX; // <20><>¼<EFBFBD><C2BC>һЩ<D2BB><D0A9><EFBFBD><EFBFBD>/<2F>ߴ磬<DFB4><E7A3AC><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
double MMY;
|
|
|
|
|
|
double m_wordScaleX; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(U_PMR_ScaleWorldTransform)
|
|
|
double m_wordScaleY; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>(U_PMR_ScaleWorldTransform)
|
|
|
int m_renderingOriginX; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Xƫ<58><C6AB>ϵ<EFBFBD><CFB5>(U_PMR_SetRenderingOrigin)
|
|
|
int m_renderingOriginY; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Yƫ<59><C6AB>ϵ<EFBFBD><CFB5>(U_PMR_SetRenderingOrigin)
|
|
|
int m_objID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID(U_PMR_Object)
|
|
|
COLORREF m_fillColor; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(U_PMR_FillRects)
|
|
|
COLORREF m_lineColor; //<2F>߶<EFBFBD><DFB6><EFBFBD>ɫ(U_PMR_Object) U_PMR_DrawPath
|
|
|
CRect8 m_fillRect; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>U_PMR_FillRects<74><73>
|
|
|
|
|
|
unsigned int drawtype; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD> U_EMR_FILLPATH, U_EMR_STROKEPATH <20><>
|
|
|
char *pDesc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣָ<CFA2><D6B8>
|
|
|
|
|
|
EMF_STRINGS hatches; // <20><><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
EMF_STRINGS images; // <20><><EFBFBD>ڴ洢ͼ<E6B4A2><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
EMF_STRINGS gradients; // <20><><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
EMF_STRINGS clips; // <20><><EFBFBD>ڴ洢<DAB4>ü<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
TR_INFO *tri; // <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>飨Text Reassembly<6C><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹָ<E1B9B9><D6B8>
|
|
|
|
|
|
int n_obj; // EMF <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
EMF_OBJECT *emf_obj; // ָ<><D6B8> EMF_OBJECT <20><><EFBFBD><EFBFBD>
|
|
|
};
|
|
|
|
|
|
using PEMF_CALLBACK_DATA = EMF_CALLBACK_DATA * ;
|
|
|
|
|
|
// boolean operation
|
|
|
enum BooleanOp
|
|
|
{
|
|
|
bool_op_union, // A OR B
|
|
|
bool_op_inters, // A AND B
|
|
|
bool_op_diff, // A \ B
|
|
|
bool_op_symdiff, // A XOR B
|
|
|
bool_op_cut, // coupure (pleines)
|
|
|
bool_op_slice // coupure (contour)
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif//EMF_DEFINE_H
|