package org.apache.poi.hwmf.record; public enum WmfTernaryRasterOp { BLACKNESS(0x0000,0x0042,"0"), DPSOON(0x0001,0x0289,"DPSoon"), DPSONA(0x0002,0x0C89,"DPSona"), PSON(0x0003,0x00AA,"PSon"), SDPONA(0x0004,0x0C88,"SDPona"), DPON(0x0005,0x00A9,"DPon"), PDSXNON(0x0006,0x0865,"PDSxnon"), PDSAON(0x0007,0x02C5,"PDSaon"), SDPNAA(0x0008,0x0F08,"SDPnaa"), PDSXON(0x0009,0x0245,"PDSxon"), DPNA(0x000A,0x0329,"DPna"), PSDNAON(0x000B,0x0B2A,"PSDnaon"), SPNA(0x000C,0x0324,"SPna"), PDSNAON(0x000D,0x0B25,"PDSnaon"), PDSONON(0x000E,0x08A5,"PDSonon"), PN(0x000F,0x0001,"Pn"), PDSONA(0x0010,0x0C85,"PDSona"), NOTSRCERASE(0x0011,0x00A6,"DSon"), SDPXNON(0x0012,0x0868,"SDPxnon"), SDPAON(0x0013,0x02C8,"SDPaon"), DPSXNON(0x0014,0x0869,"DPSxnon"), DPSAON(0x0015,0x02C9,"DPSaon"), PSDPSANAXX(0x0016,0x5CCA,"PSDPSanaxx"), SSPXDSXAXN(0x0017,0x1D54,"SSPxDSxaxn"), SPXPDXA(0x0018,0x0D59,"SPxPDxa"), SDPSANAXN(0x0019,0x1CC8,"SDPSanaxn"), PDSPAOX(0x001A,0x06C5,"PDSPaox"), SDPSXAXN(0x001B,0x0768,"SDPSxaxn"), PSDPAOX(0x001C,0x06CA,"PSDPaox"), DSPDXAXN(0x001D,0x0766,"DSPDxaxn"), PDSOX(0x001E,0x01A5,"PDSox"), PDSOAN(0x001F,0x0385,"PDSoan"), DPSNAA(0x0020,0x0F09,"DPSnaa"), SDPXON(0x0021,0x0248,"SDPxon"), DSNA(0x0022,0x0326,"DSna"), SPDNAON(0x0023,0x0B24,"SPDnaon"), SPXDSXA(0x0024,0x0D55,"SPxDSxa"), PDSPANAXN(0x0025,0x1CC5,"PDSPanaxn"), SDPSAOX(0x0026,0x06C8,"SDPSaox"), SDPSXNOX(0x0027,0x1868,"SDPSxnox"), DPSXA(0x0028,0x0369,"DPSxa"), PSDPSAOXXN(0x0029,0x16CA,"PSDPSaoxxn"), DPSANA(0x002A,0x0CC9,"DPSana"), SSPXPDXAXN(0x002B,0x1D58,"SSPxPDxaxn"), SPDSOAX(0x002C,0x0784,"SPDSoax"), PSDNOX(0x002D,0x060A,"PSDnox"), PSDPXOX(0x002E,0x064A,"PSDPxox"), PSDNOAN(0x002F,0x0E2A,"PSDnoan"), PSNA(0x0030,0x032A,"PSna"), SDPNAON(0x0031,0x0B28,"SDPnaon"), SDPSOOX(0x0032,0x0688,"SDPSoox"), NOTSRCCOPY(0x0033,0x0008,"Sn"), SPDSAOX(0x0034,0x06C4,"SPDSaox"), SPDSXNOX(0x0035,0x1864,"SPDSxnox"), SDPOX(0x0036,0x01A8,"SDPox"), SDPOAN(0x0037,0x0388,"SDPoan"), PSDPOAX(0x0038,0x078A,"PSDPoax"), SPDNOX(0x0390,0x604,"SPDnox"), SPDSXOX(0x003A,0x0644,"SPDSxox"), SPDNOAN(0x003B,0x0E24,"SPDnoan"), PSX(0x003C,0x004A,"PSx"), SPDSONOX(0x003D,0x18A4,"SPDSonox"), SPDSNAOX(0x003E,0x1B24,"SPDSnaox"), PSAN(0x003F,0x00EA,"PSan"), PSDNAA(0x0040,0x0F0A,"PSDnaa"), DPSXON(0x0041,0x0249,"DPSxon"), SDXPDXA(0x0042,0x0D5D,"SDxPDxa"), SPDSANAXN(0x0043,0x1CC4,"SPDSanaxn"), SRCERASE(0x0044,0x0328,"SDna"), DPSNAON(0x0045,0x0B29,"DPSnaon"), DSPDAOX(0x0046,0x06C6,"DSPDaox"), PSDPXAXN(0x0047,0x076A,"PSDPxaxn"), SDPXA(0x0048,0x0368,"SDPxa"), PDSPDAOXXN(0x0049,0x16C5,"PDSPDaoxxn"), DPSDOAX(0x004A,0x0789,"DPSDoax"), PDSNOX(0x004B,0x0605,"PDSnox"), SDPANA(0x004C,0x0CC8,"SDPana"), SSPXDSXOXN(0x004D,0x1954,"SSPxDSxoxn"), PDSPXOX(0x004E,0x0645,"PDSPxox"), PDSNOAN(0x004F,0x0E25,"PDSnoan"), PDNA(0x0050,0x0325,"PDna"), DSPNAON(0x0051,0x0B26,"DSPnaon"), DPSDAOX(0x0052,0x06C9,"DPSDaox"), SPDSXAXN(0x0053,0x0764,"SPDSxaxn"), DPSONON(0x0054,0x08A9,"DPSonon"), DSTINVERT(0x0055,0x0009,"Dn"), DPSOX(0x0056,0x01A9,"DPSox"), DPSOAN(0x0005,0x70389,"DPSoan"), PDSPOAX(0x0058,0x0785,"PDSPoax"), DPSNOX(0x0059,0x0609,"DPSnox"), PATINVERT(0x005A,0x0049,"DPx"), DPSDONOX(0x005B,0x18A9,"DPSDonox"), DPSDXOX(0x005C,0x0649,"DPSDxox"), DPSNOAN(0x005D,0x0E29,"DPSnoan"), DPSDNAOX(0x005E,0x1B29,"DPSDnaox"), DPAN(0x005F,0x00E9,"DPan"), PDSXA(0x0060,0x0365,"PDSxa"), DSPDSAOXXN(0x0061,0x16C6,"DSPDSaoxxn"), DSPDOAX(0x0062,0x0786,"DSPDoax"), SDPNOX(0x0063,0x0608,"SDPnox"), SDPSOAX(0x0064,0x0788,"SDPSoax"), DSPNOX(0x0065,0x0606,"DSPnox"), SRCINVERT(0x0066,0x0046,"DSx"), SDPSONOX(0x0067,0x18A8,"SDPSonox"), DSPDSONOXXN(0x0068,0x58A6,"DSPDSonoxxn"), PDSXXN(0x0069,0x0145,"PDSxxn"), DPSAX(0x006A,0x01E9,"DPSax"), PSDPSOAXXN(0x006B,0x178A,"PSDPSoaxxn"), SDPAX(0x006C,0x01E8,"SDPax"), PDSPDOAXXN(0x006D,0x1785,"PDSPDoaxxn"), SDPSNOAX(0x006E,0x1E28,"SDPSnoax"), // PDXNAN(0x006F,0x0C65,"PDXnan"), // invalid combo PDSANA(0x0070,0x0CC5,"PDSana"), SSDXPDXAXN(0x0071,0x1D5C,"SSDxPDxaxn"), SDPSXOX(0x0072,0x0648,"SDPSxox"), SDPNOAN(0x0073,0x0E28,"SDPnoan"), DSPDXOX(0x0074,0x0646,"DSPDxox"), DSPNOAN(0x0075,0x0E26,"DSPnoan"), SDPSNAOX(0x0076,0x1B28,"SDPSnaox"), DSAN(0x0077,0x00E6,"DSan"), PDSAX(0x0078,0x01E5,"PDSax"), DSPDSOAXXN(0x0079,0x1786,"DSPDSoaxxn"), DPSDNOAX(0x007A,0x1E29,"DPSDnoax"), SDPXNAN(0x007B,0x0C68,"SDPxnan"), SPDSNOAX(0x007C,0x1E24,"SPDSnoax"), DPSXNAN(0x007D,0x0C69,"DPSxnan"), SPXDSXO(0x007E,0x0955,"SPxDSxo"), DPSAAN(0x007F,0x03C9,"DPSaan"), DPSAA(0x0080,0x03E9,"DPSaa"), SPXDSXON(0x0081,0x0975,"SPxDSxon"), DPSXNA(0x0082,0x0C49,"DPSxna"), SPDSNOAXN(0x0083,0x1E04,"SPDSnoaxn"), SDPXNA(0x0084,0x0C48,"SDPxna"), PDSPNOAXN(0x0085,0x1E05,"PDSPnoaxn"), DSPDSOAXX(0x0086,0x17A6,"DSPDSoaxx"), PDSAXN(0x0087,0x01C5,"PDSaxn"), SRCAND(0x0088,0x00C6,"DSa"), SDPSNAOXN(0x0089,0x1B08,"SDPSnaoxn"), DSPNOA(0x008A,0x0E06,"DSPnoa"), DSPDXOXN(0x008B,0x0666,"DSPDxoxn"), SDPNOA(0x008C,0x0E08,"SDPnoa"), SDPSXOXN(0x008D,0x0668,"SDPSxoxn"), SSDXPDXAX(0x008E,0x1D7C,"SSDxPDxax"), PDSANAN(0x008F,0x0CE5,"PDSanan"), PDSXNA(0x0090,0x0C45,"PDSxna"), SDPSNOAXN(0x0091,0x1E08,"SDPSnoaxn"), DPSDPOAXX(0x0092,0x17A9,"DPSDPoaxx"), SPDAXN(0x0093,0x01C4,"SPDaxn"), PSDPSOAXX(0x0094,0x17AA,"PSDPSoaxx"), DPSAXN(0x0095,0x01C9,"DPSaxn"), DPSXX(0x0096,0x0169,"DPSxx"), PSDPSONOXX(0x0097,0x588A,"PSDPSonoxx"), SDPSONOXN(0x0098,0x1888,"SDPSonoxn"), DSXN(0x0099,0x0066,"DSxn"), DPSNAX(0x009A,0x0709,"DPSnax"), SDPSOAXN(0x009B,0x07A8,"SDPSoaxn"), SPDNAX(0x009C,0x0704,"SPDnax"), DSPDOAXN(0x009D,0x07A6,"DSPDoaxn"), DSPDSAOXX(0x009E,0x16E6,"DSPDSaoxx"), PDSXAN(0x009F,0x0345,"PDSxan"), DPA(0x00A0,0x00C9,"DPa"), PDSPNAOXN(0x00A1,0x1B05,"PDSPnaoxn"), DPSNOA(0x00A2,0x0E09,"DPSnoa"), DPSDXOXN(0x00A3,0x0669,"DPSDxoxn"), PDSPONOXN(0x00A4,0x1885,"PDSPonoxn"), PDXN(0x00A5,0x0065,"PDxn"), DSPNAX(0x00A6,0x0706,"DSPnax"), PDSPOAXN(0x00A7,0x07A5,"PDSPoaxn"), DPSOA(0x00A8,0x03A9,"DPSoa"), DPSOXN(0x00A9,0x0189,"DPSoxn"), D(0x00AA,0x0029,"D"), DPSONO(0x00AB,0x0889,"DPSono"), SPDSXAX(0x00AC,0x0744,"SPDSxax"), DPSDAOXN(0x00AD,0x06E9,"DPSDaoxn"), DSPNAO(0x00AE,0x0B06,"DSPnao"), DPNO(0x00AF,0x0229,"DPno"), PDSNOA(0x00B0,0x0E05,"PDSnoa"), PDSPXOXN(0x00B1,0x0665,"PDSPxoxn"), SSPXDSXOX(0x00B2,0x1974,"SSPxDSxox"), SDPANAN(0x00B3,0x0CE8,"SDPanan"), PSDNAX(0x00B4,0x070A,"PSDnax"), DPSDOAXN(0x00B5,0x07A9,"DPSDoaxn"), DPSDPAOXX(0x00B6,0x16E9,"DPSDPaoxx"), SDPXAN(0x00B7,0x0348,"SDPxan"), PSDPXAX(0x00B8,0x074A,"PSDPxax"), DSPDAOXN(0x00B9,0x06E6,"DSPDaoxn"), DPSNAO(0x00BA,0x0B09,"DPSnao"), MERGEPAINT(0x00BB,0x0226,"DSno"), SPDSANAX(0x00BC,0x1CE4,"SPDSanax"), SDXPDXAN(0x00BD,0x0D7D,"SDxPDxan"), DPSXO(0x00BE,0x0269,"DPSxo"), DPSANO(0x00BF,0x08C9,"DPSano"), MERGECOPY(0x00C0,0x00CA,"PSa"), SPDSNAOXN(0x00C1,0x1B04,"SPDSnaoxn"), SPDSONOXN(0x00C2,0x1884,"SPDSonoxn"), PSXN(0x00C3,0x006A,"PSxn"), SPDNOA(0x00C4,0x0E04,"SPDnoa"), SPDSXOXN(0x00C5,0x0664,"SPDSxoxn"), SDPNAX(0x00C6,0x0708,"SDPnax"), PSDPOAXN(0x00C7,0x07AA,"PSDPoaxn"), SDPOA(0x00C8,0x03A8,"SDPoa"), SPDOXN(0x00C9,0x0184,"SPDoxn"), DPSDXAX(0x00CA,0x0749,"DPSDxax"), SPDSAOXN(0x00CB,0x06E4,"SPDSaoxn"), SRCCOPY(0x00CC,0x0020,"S"), SDPONO(0x00CD,0x0888,"SDPono"), SDPNAO(0x00CE,0x0B08,"SDPnao"), SPNO(0x00CF,0x0224,"SPno"), PSDNOA(0x00D0,0x0E0A,"PSDnoa"), PSDPXOXN(0x00D1,0x066A,"PSDPxoxn"), PDSNAX(0x00D2,0x0705,"PDSnax"), SPDSOAXN(0x00D3,0x07A4,"SPDSoaxn"), SSPXPDXAX(0x00D4,0x1D78,"SSPxPDxax"), DPSANAN(0x00D5,0x0CE9,"DPSanan"), PSDPSAOXX(0x00D6,0x16EA,"PSDPSaoxx"), DPSXAN(0x00D7,0x0349,"DPSxan"), PDSPXAX(0x00D8,0x0745,"PDSPxax"), SDPSAOXN(0x00D9,0x06E8,"SDPSaoxn"), DPSDANAX(0x00DA,0x1CE9,"DPSDanax"), SPXDSXAN(0x00DB,0x0D75,"SPxDSxan"), SPDNAO(0x00DC,0x0B04,"SPDnao"), SDNO(0x00DD,0x0228,"SDno"), SDPXO(0x00DE,0x0268,"SDPxo"), SDPANO(0x00DF,0x08C8,"SDPano"), PDSOA(0x00E0,0x03A5,"PDSoa"), PDSOXN(0x00E1,0x0185,"PDSoxn"), DSPDXAX(0x00E2,0x0746,"DSPDxax"), PSDPAOXN(0x00E3,0x06EA,"PSDPaoxn"), SDPSXAX(0x00E4,0x0748,"SDPSxax"), PDSPAOXN(0x00E5,0x06E5,"PDSPaoxn"), SDPSANAX(0x00E6,0x1CE8,"SDPSanax"), SPXPDXAN(0x00E7,0x0D79,"SPxPDxan"), SSPXDSXAX(0x00E8,0x1D74,"SSPxDSxax"), DSPDSANAXXN(0x00E9,0x5CE6,"DSPDSanaxxn"), DPSAO(0x00EA,0x02E9,"DPSao"), DPSXNO(0x00EB,0x0849,"DPSxno"), SDPAO(0x00EC,0x02E8,"SDPao"), SDPXNO(0x00ED,0x0848,"SDPxno"), SRCPAINT(0x00EE,0x0086,"DSo"), SDPNOO(0x00EF,0x0A08,"SDPnoo"), PATCOPY(0x00F0,0x0021,"P"), PDSONO(0x00F1,0x0885,"PDSono"), PDSNAO(0x00F2,0x0B05,"PDSnao"), PSNO(0x00F3,0x022A,"PSno"), PSDNAO(0x00F4,0x0B0A,"PSDnao"), PDNO(0x00F5,0x0225,"PDno"), PDSXO(0x00F6,0x0265,"PDSxo"), PDSANO(0x00F7,0x08C5,"PDSano"), PDSAO(0x00F8,0x02E5,"PDSao"), PDSXNO(0x00F9,0x0845,"PDSxno"), DPO(0x00FA,0x0089,"DPo"), PATPAINT(0x00FB,0x0A09,"DPSnoo"), PSO(0x00FC,0x008A,"PSo"), PSDNOO(0x00FD,0x0A0A,"PSDnoo"), DPSOO(0x00FE,0x02A9,"DPSoo"), WHITENESS(0x00FF,0x0062,"1"); int opIndex; int opCode; String opCmd; WmfTernaryRasterOp(int opIndex, int opCode, String opCmd) { this.opIndex=opIndex; this.opCode=opCode; this.opCmd=opCmd; } public static WmfTernaryRasterOp fromOpIndex(int opIndex) { for (WmfTernaryRasterOp bb : WmfTernaryRasterOp.values()) { if (bb.opIndex == opIndex) { return bb; } } return null; } public String describeCmd() { String stack[] = new String[10]; int stackPnt = 0; for (char c : opCmd.toCharArray()) { switch (c) { case 'S': case 'D': case 'P': stack[stackPnt++] = ""+c; break; case 'n': stack[stackPnt-1] = "not("+stack[stackPnt-1]+")"; break; case 'a': stack[stackPnt-2] = "("+stack[stackPnt-1]+" and "+stack[stackPnt-2]+")"; stackPnt--; break; case 'o': stack[stackPnt-2] = "("+stack[stackPnt-1]+" or "+stack[stackPnt-2]+")"; stackPnt--; break; case 'x': stack[stackPnt-2] = "("+stack[stackPnt-1]+" xor "+stack[stackPnt-2]+")"; stackPnt--; break; case '1': stack[stackPnt++] = "all white"; break; case '0': stack[stackPnt++] = "all black"; break; default: throw new RuntimeException("unknown cmd '"+c+"'."); } } return stack[--stackPnt]; } }