320 lines
12 KiB
Java
320 lines
12 KiB
Java
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];
|
|
}
|
|
}
|