OnFilterStart:
{
	if (imageMode != GrayScaleMode 
         && imageMode != RGBMode)
	{
		ErrorOk("This filter works only with 8-bit images in RGB or Grayscale mode.");
		doAction(CA_CANCEL);
        }
        return false;
}


ForEveryTile:
{

if (imageMode == RGBMode)
//Put Grayscale version into channel 0
//Grayscale conversion similar to Photoshops RGB Mode to Grayscale Mode conversion
//app. 30% Red, 59% Green, 11% Blue 
{
       for (y=y_start; y<y_end; y++) 
       for (x=x_start; x<x_end; x++)
           pset( x, y, 0, ( src(x, y, 0) * 76 + src(x, y, 1) * 150 + src(x, y, 2) * 29 ) / 255 );
}

//FILTER CODE that does its weird line art or grayscale thing on channel 0
...

if (imageMode == RGBMode) 
//Copy result to channels 1 and 2 
//because a Grayscale image in RGB mode has three identical channels
{
         for (y=y_start; y<y_end; y++) 
         for (x=x_start; x<x_end; x++)
         { 
               pset(x, y, 1, pget(x, y, 0));
               pset(x, y, 2, pget(x, y, 0));
         }
}

   return true; 
}