private void CalculateSingleThread()
      {
        double mult = 2 * Math.PI / 800;
        double r, g, b;
        int index = 0;

        // Assign the parser variables
        ParserVariable x = new ParserVariable(0);
        ParserVariable y = new ParserVariable(0);
        foreach (muParser.Parser p in m_parserImg)
        {
          p.DefineVar("x", x);
          p.DefineVar("y", y);
        }

        for (int yi = 0; yi < pbImage.Height; ++yi)
        {
          y.Value = (yi - 400) * mult;
          for (int xi = 0; xi < pbImage.Width; ++xi)
          {
            x.Value = (xi - 400) * mult;

            r = m_parserImg[(int)EColorPlane.red].Eval();
            g = m_parserImg[(int)EColorPlane.green].Eval();
            b = m_parserImg[(int)EColorPlane.blue].Eval();

            r = GetColorComponent(r);
            g = GetColorComponent(g);
            b = GetColorComponent(b);

            m_data[index] = (byte)(r * 255);
            m_data[index + 1] = (byte)(g * 255);
            m_data[index + 2] = (byte)(b * 255);
            index += 3;
          }
        }
      }
      private void CalculateMultiReturn()
      {
        double mult = 2 * Math.PI / 800;
        double r, g, b;
        int index = 0;

        // Assign the parser variables
        ParserVariable x = new ParserVariable(0);
        ParserVariable y = new ParserVariable(0);
        muParser.Parser p = new muParser.Parser(muParser.Parser.EBaseType.tpDOUBLE);
        p.DefineOprt("%", new Parser.Fun2Delegate(mod), 2);
        p.SetExpr(m_parserImg[0].GetExpr() + "," + m_parserImg[1].GetExpr() + "," + m_parserImg[2].GetExpr());
        p.DefineVar("x", x);
        p.DefineVar("y", y);

        for (int yi = 0; yi < pbImage.Height; ++yi)
        {
          y.Value = (yi - 400) * mult;
          for (int xi = 0; xi < pbImage.Width; ++xi)
          {
            x.Value = (xi - 400) * mult;

            int nNum;
            double[] ret = p.EvalMultiExpr();
            r = GetColorComponent(ret[0]);
            g = GetColorComponent(ret[1]);
            b = GetColorComponent(ret[2]);

            m_data[index] = (byte)(r * 255);
            m_data[index + 1] = (byte)(g * 255);
            m_data[index + 2] = (byte)(b * 255);
            index += 3;
          }
        }
      }
      private void CalculateMultiThread(object s)
      {
        CalcState cs = s as CalcState;
        double mult = 2 * Math.PI / 800;
        int index = 0;

        // Set up parser variables
        Parser p = cs.Parser;
        ParserVariable x = new ParserVariable(0);
        ParserVariable y = new ParserVariable(0);
        p.DefineVar("x", x);
        p.DefineVar("y", y);

        // Do the actual looping for a single colorplane
        double v;
        for (int yi = 0; yi < pbImage.Height; ++yi)
        {
          y.Value = (yi - 400) * mult;
          for (int xi = 0; xi < pbImage.Width; ++xi)
          {
            x.Value = (xi - 400) * mult;

            v = GetColorComponent(p.Eval());
            m_data[index + cs.Offset] = (byte)(v * 255);
            index += 3;
          }
        }

        cs.Reset.Set();
      }
 public void DefineVar(string name, ParserVariable var)
 {
     mupDefineVar(m_parser, name, var.Pointer);
     m_varBuf[name] = var;
 }
Ejemplo n.º 5
0
 public void DefineVar(string name, ParserVariable var)
 {
     mecDefineVar(m_parser, name, var.Pointer);
     m_varBuf[name] = var;
 }
Ejemplo n.º 6
0
        private void CalculateSingleThread()
        {
            float mult = 2 * (float)Math.PI / (float)256.0;
            float r, g, b;
            int index = 0;

            //// Assign the parser variables
            ParserVariable x = new ParserVariable(0);
            ParserVariable y = new ParserVariable(0);
            foreach (muParser.Parser p in m_parserImg)
            {
              p.DefineVar("x", x);
              p.DefineVar("y", y);
            }

            //Parser.CompiledFunDelegate funRed = m_parserImg[(int)EColorPlane.red].Compile();
            //Parser.CompiledFunDelegate funGreen = m_parserImg[(int)EColorPlane.green].Compile();
            //Parser.CompiledFunDelegate funBlue = m_parserImg[(int)EColorPlane.blue].Compile();
            int h = pbImage.Height;
            int w = pbImage.Width;
            for (int yi = 0; yi < h; ++yi)
            {
              y.Value = (yi - 128) * mult;
              for (int xi = 0; xi < w; ++xi)
              {
            x.Value = (xi - 128) * mult;

            r = GetColorComponent(m_parserImg[(int)EColorPlane.red].Eval());
            g = GetColorComponent(m_parserImg[(int)EColorPlane.green].Eval());
            b = GetColorComponent(m_parserImg[(int)EColorPlane.blue].Eval());

            m_data[index] = (byte)(r * 255);
            m_data[index + 1] = (byte)(g * 255);
            m_data[index + 2] = (byte)(b * 255);
            index += 3;
              }
            }
        }
Ejemplo n.º 7
0
        private void CalculateMultiThread(object s)
        {
            CalcState cs = s as CalcState;
            float mult = 2 * (float)Math.PI / (float)256.0;
            int index = 0;

            // Set up parser variables
            Parser p = cs.Parser;
            ParserVariable x = new ParserVariable(0);
            ParserVariable y = new ParserVariable(0);
            p.DefineVar("x", x);
            p.DefineVar("y", y);

            Parser.CompiledFunDelegate fun = p.Compile();

            // Do the actual looping for a single colorplane
            float v;
            for (int yi = 0; yi < pbImage.Height; ++yi)
            {
              y.Value = (yi - 128) * mult;
              for (int xi = 0; xi < pbImage.Width; ++xi)
              {
            x.Value = (xi - 128) * mult;

            //v = GetColorComponent(p.Eval());
            v = GetColorComponent(fun());
            m_data[index + cs.Offset] = (byte)(v * 255);
            index += 3;
              }
            }

            cs.Reset.Set();
        }