?? interp.c
字號:
* Affects IP,MDAP,MIAP,MIRP,MSIRP,SHC,SHE,SHP */void Inpter_SRP0(VirtualMachine *vm){ vm->gstate.rp0 = Pop(vm);}/* SRP1[] Set reference point 1 * Code Range 0x11 * Pops p: point number (ULONG) * Pushes - * Sets rp1 * Affects IP,MDAP,MIAP,MIRP,MSIRP,SHC,SHE,SHP */void Inpter_SRP1(VirtualMachine *vm){ vm->gstate.rp1 = Pop(vm);}/* SRP2[] Set reference point 2 * Code Range 0x12 * Pops p: point number (ULONG) * Pushes - * Sets rp2 * Affects IP,MDAP,MIAP,MIRP,MSIRP,SHC,SHE,SHP */void Inpter_SRP2(VirtualMachine *vm){ vm->gstate.rp2 = Pop(vm);}/* SZP0[] Set zone pointer 0 * Code Range 0x13 * Pops n: zone number (ULONG) * Pushes - * Sets zp0 * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP, * MIRP,MSIRP,SHC,SHE,SHP,UTP */void Inpterp_SZP0(VirtualMachine *vm){ vm->gstate.zp0 = Pop(vm);}/* SZP1[] Set zone pointer 1 * Code Range 0x14 * Pops n: zone number (ULONG) * Pushes - * Sets zp1 * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP, * MIRP,MSIRP,SHC,SHE,SHP,UTP */void Inpterp_SZP1(VirtualMachine *vm){ vm->gstate.zp1 = Pop(vm);}/* SZP2[] Set zone pointer 2 * Code Range 0x15 * Pops n: zone number (ULONG) * Pushes - * Sets zp2 * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP, * MIRP,MSIRP,SHC,SHE,SHP,UTP */void Inpterp_SZP2(VirtualMachine *vm){ vm->gstate.zp2 = Pop(vm);}/* SZPS[] Set zone pointerS * Code Range 0x16 * Pops n: zone number (ULONG) * Pushes - * Sets zp0,zp1,zp2 * Affects ALIGNPTS,ALIGNRP,DELTAP1,DELTAP2,DELTAP3,IP,ISECT,MD,MDAP,MIAP, * MIRP,MSIRP,SHC,SHE,SHP,UTP */void Inpterp_SZPS(VirtualMachine *vm){ vm->gstate.zp0 = vm->gstate.zp1 = vm->gstate.zp2 = Pop(vm);}/* RTHG[] Round to half grid * Code Range 0x19 * Pops - * Pushes - * Sets round_state * Affects MDAP,MDRP,MDIAP,MIRP,ROUND * Uses freedom_vector, projection_vetor */void Interp_RTHG(VirtualMachine *vm){ vm->gstate.round_state = 0;}/* RTG[] Round to grid * Code Range 0x18 * Pops - * Pushes - * Sets round_state * Affects MDAP,MDRP,MDIAP,MIRP,ROUND * Uses freedom_vector, projection_vetor */void Interp_RTG(VirtualMachine *vm){ vm->gstate.round_state = 1;}/* RTDG[] Round to double grid * Code Range 0x3D * Pops - * Pushes - * Sets round_state * Affects MDAP,MDRP,MDIAP,MIRP,ROUND * Uses freedom_vector, projection_vetor */void Interp_RTDG(VirtualMachine *vm){ vm->gstate.round_state = 2;}/* RTHG[] Round down to grid * Code Range 0x7D * Pops - * Pushes - * Sets round_state * Affects MDAP,MDRP,MDIAP,MIRP,ROUND * Uses freedom_vector, projection_vetor */void Interp_RDTG(VirtualMachine *vm){ vm->gstate.round_state = 3;}/* RUTG[] Round up to grid * Code Range 0x7C * Pops - * Pushes - * Sets round_state * Affects MDAP,MDRP,MDIAP,MIRP,ROUND * Uses freedom_vector, projection_vetor */void Interp_RUTG(VirtualMachine *vm){ vm->gstate.round_state = 4;}/* ROFF[] Round off * Code Range 0x7A * Pops - * Pushes - * Sets round_state * Affects MDAP,MDRP,MDIAP,MIRP,ROUND * Uses freedom_vector, projection_vetor */void Interp_ROFF(VirtualMachine *vm){ vm->gstate.round_state = 5;}/* SROUND[] Super round * Code Range 0x76 * Pops n: number (ULONG) decomposed to obtain period, phase, threshold * Pushes - * Sets round_state * Affects MDAP,MDRP,MIAP,MIRP,ROUND */void Interp_SROUND(VirtualMachine *vm){ ULONG n; n = Pop(vm); /* not finished yet */}/* S45ROUND[] Super round 45 degrees * Code Range 0x77 * Pops n: number (ULONG) decomposed to obtain period, phase, threshold * Pushes - * Sets round_state * Affects MDAP,MDRP,MIAP,MIRP,ROUND */void Interp_S45ROUND(VirtualMachine *vm){ ULONG n; n = Pop(vm); /* not finished yet */}/* SLOOP[] Set LOOP variable * Code Range 0x17 * Pops n: value for loop graphics state variable * Pushes - * Set loop * Affects ALIGNRP,FLIPPT,IP,SHP,SHIP */void Interp_SLOOP(VirtualMachine *vm){ vm->gstate.loop = Pop(vm);}/* SMD[] Set minimum_distance * Code Range 0x1a * Pops distance: value for minimum_distance (F26Dot6) * Pushes - * Sets minimum_distance */void Interp_SMD(VirtualMachine *vm){ vm->gstate.minimum_distance = Pop(vm);}/* INSTCTRL[] Instruction execution control * Code Range 0x8E * Pops s: selector flags * value: USHORT padded to 32 bits used to set value of * instruction control * Pushes - * Sets instruction_control */void Interp_INSTCTRL(VirtualMachine *vm){ ULONG flag; flag = Pop(vm); vm->gstate.instruction_control = Pop(vm); /* not finished yet */}/* SCANCTRL[] Scan conversion cotrol * Code Range 0x85 * Pops n: flags indication when to turn on dropout mode (16 bits padded * to 32 bits) * Pushes - * Sets scan_control */void Interp_SCANCTRL(VirtualMachine *vm){ USHORT flag; flag = Pop(vm); /* not finished yet */}/* SCANTYPE[] Scantype * Code Range 0x8D * Pops n: 16 bit interger * Pushes - * Sets scan_control */void Interp_SCANTYPE(VirtualMachine *vm){ /* not finished yet */}/* SCVTCI[] Set control value table cut in * Code Range 0x1D * Pops n: value for cut_in (F26Dot6) * Pushes - * Sets control_value_cut_in * Affects MIAP,MIRP */void Interp_SCVTCI(VirtualMachine *vm){ vm->gstate.control_value_cut_in = Pop(vm);}/* SSWCI[] Single width cut in * Code Range 0x1E * Pops n: value for single_width_cut_in * Pushes - * Sets signel_width_cut_in * Affects MIAP,MIRP */void Interp_SSWCI(VirtualMachine *vm){ vm->gstate.single_width_cut_in = Pop(vm);}/* SSW[] Set single width * Code Range 0x1F * Pops n: value for single_width_value (FUnits) * Pushes - * Sets single_width_value */void Interp_SSW(VirtualMachine *vm){ vm->gstate.single_width_cut_in = Pop(vm);}/* FLIPON[] Set the auto_flip on * Code Range 0x4D * Pops - * Pushes - * Sets auto_flip * Affects MIRP */void Interp_FLIPON(VirtualMachine *vm){ vm->gstate.auto_flip = 1;}/* FLIPOFF[] Set the auto_flip off * Code Range 0x4E * Pops - * Pushes - * Sets auto_flip * Affects MIRP */void Interp_FLIPOFF(VirtualMachine *vm){ vm->gstate.auto_flip = 0;}/* SDB Set delta_base in the graphics state * Code Range 0x5E * Pops n: value for delta_base (ULONG) * Pushes - * Sets delta_base * Affects DELTAP1,DELTAP2,DELTAP3,DELTAC1,DELTAC2,DELTAC3 */void Interp_SDB(VirtualMachine *vm){ vm->gstate.delta_base = Pop(vm);}/* SDS Set delta_shift in the graphics state * Code Range 0x5F * Pops n: value for delat_shift (ULONG) * Sets delta_shift * Affects DELTAP1,DELTAP2,DELTAP3,DELATC1,DELTAC2,DELTAC3 */void Interp_SDS(VirtualMachine *vm){ vm->gstate.delta_shift = Pop(vm);}/* Reading and writing data *//* GC[a] Get coordinate projected on to the projection_vector * Code Range 0x46 - 0x47 * a 0: use current position of point p * 1: use the position of point p in the original outline * Pops p: point number (ULONG) * Pushes value: coordinate location (F26Dot6) * Uses zp2,projection */void Interp_GC(VirtualMachine *vm){ ULONG point; TTFVector pos; point = Pop(vm); /* not finished yet */}/* SCFS[] Sets coordinate from the stack using projection_vector and * freedom_vector * Code Range 0x48 * Pops value: distance from origin to move point (F26Dot6) * p: point number (ULONG) * Pushes - * Uses zp2, freedom_vector, projection_vector */void Interp_SCFS(VirtualMachine *vm){ long long tmp; F26Dot6 value; ULONG point; value = Pop(vm); point = Pop(vm); /* not finished yet */} /* MD[a] Measure Distance * * Code Range 0x49-0x4A * a 0: measure distance in grid-fitted outline * 1: measure distance in original outline * Pops p1: point number (ULONG) * p2: point number (ULONG); * Pushes distance (F26Dot6) * uses zp1 with point p1, zp2 withe point p2, projection_vector */void Interp_MD(VirtualMachine *vm){ ULONG p1,p2; BYTE opcode; TTFUnitVector vect; opcode = (vm->iStream)[vm->ip]; p1 = Pop(vm); p2 = Pop(vm); switch (opcode) { /* not finished yet */ case 0x49: break; case 0x4A: break; } /* not finished yet */}/* MPPEM[] Measure Pixel Per EM * * Code Range 0x4B * Pops - * Pushes ppem:pixel per em (ULONG) */void Interp_MPPEM(VirtualMachine *vm){ /* not finished yet */}/* MPS[] Measure Point Size * * Code Range 0x4C * Pops - * Pushes pointSize: the size in points of the current glyph (F26Dot6) */void Interp_MPS(VirtualMachine *vm){ F26Dot6 pointSize = vm->pointsize; Push(vm,pointSize);}/* Mananging Outlines *//* FLIPPT[] Flip point * Code Range 0x80 * Pops p: point number (ULONG) * Pushes - * Uses loop, p is referenced in zp0 */void Interp_FLIPPT(VirtualMachine *vm){ ULONG point; point = Pop(vm); /* not finished yet */}/* FLIPRGON[] Filp range on * Code Range 0x81 * Pops hightpoint: highest point number in range of points to be flipped * lowpoint: lowest point number in range of points to be flipped * both are ULONG * Pushes - */void Interp_FLIPRGON(VirtualMachine *vm){ }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -