public static GfxLogicalOp ToGfxLogicalOp(this PICALogicalOp LogicalOp) { switch (LogicalOp) { case PICALogicalOp.Clear: return(GfxLogicalOp.Clear); case PICALogicalOp.Copy: return(GfxLogicalOp.Copy); case PICALogicalOp.Noop: return(GfxLogicalOp.Noop); case PICALogicalOp.Set: return(GfxLogicalOp.Set); case PICALogicalOp.CopyInverted: return(GfxLogicalOp.CopyInverted); case PICALogicalOp.Invert: return(GfxLogicalOp.Invert); case PICALogicalOp.AndReverse: return(GfxLogicalOp.AndReverse); case PICALogicalOp.OrReverse: return(GfxLogicalOp.OrReverse); case PICALogicalOp.And: return(GfxLogicalOp.And); case PICALogicalOp.Or: return(GfxLogicalOp.Or); case PICALogicalOp.Nand: return(GfxLogicalOp.Nand); case PICALogicalOp.Nor: return(GfxLogicalOp.Nor); case PICALogicalOp.Xor: return(GfxLogicalOp.Xor); case PICALogicalOp.Equiv: return(GfxLogicalOp.Equiv); case PICALogicalOp.AndInverted: return(GfxLogicalOp.AndInverted); case PICALogicalOp.OrInverted: return(GfxLogicalOp.OrInverted); default: throw new ArgumentException($"Invalid Logical Operation {LogicalOp}!"); } }
void ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) { PICACommandReader Reader = new PICACommandReader(Commands); while (Reader.HasCommand) { PICACommand Cmd = Reader.GetCommand(); uint Param = Cmd.Parameters[0]; switch (Cmd.Register) { case PICARegister.GPUREG_COLOR_OPERATION: ColorOperation = new PICAColorOperation(Param); break; case PICARegister.GPUREG_BLEND_FUNC: Function = new PICABlendFunction(Param); break; case PICARegister.GPUREG_LOGIC_OP: LogicalOperation = (PICALogicalOp)(Param & 0xf); break; case PICARegister.GPUREG_BLEND_COLOR: Color = new RGBA(Param); break; } } }