Reference to a SFImage event-out slot.
Namespace: Vrml.EAI.Field
Assembly: VrmlEAI.NET
Collapse/Expand Syntax
C#
public abstract class EventOutSFImage :  EventOut
Collapse/Expand Remarks
Use this class to read values from SFImage event-out slots.
Collapse/Expand Members

Click here to see the list of members.

Collapse/Expand Example
The following example gets the image field of a PixelTexture node and writes the color components of all pixels to the console:
C#
Vrml.EAI.Node pixelTexture = ...;
Vrml.EAI.Field.EventOutSFImage image_changed = (Vrml.EAI.Field.EventOutSFImage)pixelTexture.GetEventOut("image_changed");
int width = image_changed.GetWidth();
System.Console.WriteLine("width = " + width + " pixels");
int height = image_changed.GetHeight();
System.Console.WriteLine("height = " + height + " pixels");
int[] pixels = image_changed.GetPixels();
int intensity, red, green, blue, alpha, i;
switch (image_changed.GetComponents())
{
    case 1:
        System.Console.WriteLine("components = 1 (intensity)");
        i = 0;
        for (int y = 0; y < height; ++y)
            for (int x = 0; x < width; ++x)
            {
                System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
                intensity = pixels[i] & 0xff;
                System.Console.WriteLine("intensity = " + intensity);
                ++i;
            }
        break;
    case 2:
        System.Console.WriteLine("components = 2 (intensity, alpha)");
        i = 0;
        for (int y = 0; y < height; ++y)
            for (int x = 0; x < width; ++x)
            {
                System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
                intensity = (pixels[i] >> 8) & 0xff;
                alpha = pixels[i] & 0xff;
                System.Console.WriteLine("intensity = " + intensity + ", alpha = " + alpha);
                ++i;
            }
        break;
    case 3:
        System.Console.WriteLine("components = 3 (red, green, blue)");
        i = 0;
        for (int y = 0; y < height; ++y)
            for (int x = 0; x < width; ++x)
            {
                System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
                red = (pixels[i] >> 16) & 0xff;
                green = (pixels[i] >> 8) & 0xff;
                blue = pixels[i] & 0xff;
                System.Console.WriteLine("red = " + red + ", green = " + green + ", blue = " + blue);
                ++i;
            }
        break;
    case 4:
        System.Console.WriteLine("components = 4 (red, green, blue, alpha)");
        i = 0;
        for (int y = 0; y < height; ++y)
            for (int x = 0; x < width; ++x)
            {
                System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
                red = (pixels[i] >> 24) & 0xff;
                green = (pixels[i] >> 16) & 0xff;
                blue = (pixels[i] >> 8) & 0xff;
                alpha = pixels[i] & 0xff;
                System.Console.WriteLine("red = " + red + ", green = " + green + ", blue = " + blue + ", alpha = " + alpha);
                ++i;
            }
       break;
}