All pastes #2081304 Raw Edit

Stuff

public text v1 · immutable
#2081304 ·published 2011-09-19 14:56 UTC
rendered paste body
    int Pix_V=255;
    int Pix_C=255;
    int  dx, dy, sx, sy, kl, swap;
    long incr1, incr2;
    long s;              /* Текущее значение ошибки  */
    long s_max;          /* Макс значение ошибки     */
    int  color_tek;      /* Текущий номеp оттенка    */
    int  xt;
    sx=0;
    if ((dx=xk-xn) < 0) {dx=-dx; --sx;} else if (dx>0) ++sx;
    sy=0;
    if ((dy=yk-yn) < 0) {dy=-dy; --sy;} else if (dy>0) ++sy;
    swap=0;
    if ((kl=dx) < (s=dy)) {dx=s;  dy=kl;  kl=s; ++swap;}
    s=(long)dx*(long)Pix_V;
    incr1=2l*(long)dy*(long)Pix_V;
    incr2=2l*s;
    s_max=incr2-incr1;
    color_tek=Pix_V;
    Pix_C=0;
    if (dx)color_tek=(int)((((long)Pix_V*(long)dy)/(long)dx)/2l);
    for(int i=xn*10; i<xn*10+10; i++)
    {
        for(int j=yn*10; j<yn*10+10; j++)
            {
                 image->setPixel(i, j, qRgba(0,0,0,Pix_C+color_tek));
            }
    }
    while (--kl >= 0) {
      if (s >= s_max) {
         if (swap) xn+= sx; else yn+= sy;
         s-= incr2;
      }
      if (swap) yn+= sy; else xn+= sx;
      s+=  incr1;
      if (dx) color_tek= s / dx /2;

    for(int i=xn*10; i<xn*10+10; i++)
    {
        for(int j=yn*10; j<yn*10+10; j++)
        {
           image->setPixel(i, j, qRgba(0,0,0,Pix_C+color_tek));
        }
    }
/* Однотонная закраска строки многоугольника макс цветом  */
      xt=xn;
      while (++xt <= xk)
      {
      for(int i=xn*10; i<xn*10+10; i++)
      {
          for(int j=yn*10; j<yn*10+10; j++)
          {
             image->setPixel(i, j, qRgba(0,0,0,Pix_C+Pix_V-1));
          }
      }
      }
   }