Older Newer
Wed, 01 Jan 2020 09:16:20 . . . . SyneRyder [reformat example code]


Changes by last author:

Added:
= RGB to Grayscale Conversion =

<code>

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;

}

</code>