PictureEffectsConsole Xojo Plugin

MapEffectConsole Class (console only)

The map effect is a low level effect for developers to make simple pixel mapping. This effect does the same as the Xojo’s built in RGBSurface.Transform function, except this class makes use of the PictureEffects multi-core processing.

Applies a one-to-one pixel transformation to all pixels of an RGBSurface.

Specify the transformation via either of three lookup tables, red, green, and blue, or one lookup table to apply to all three channels.

Each map parameter is an 256 element array of UInt8. The transformation works as follows: For each pixel, the pixel’s RGB value is used as an index into the map arrays and the value found becomes the new R, G, or B value for the pixel.
For example, if you set up a map such that red(i)=255-i, then using this function will invert the image.

This class supports use of multiple CPU cores.

MPImageFilterConsole
   MapEffectConsole

class MapEffectConsole

Properties

CPUCoreCount (Inherited) (console only) Returns number of detected CPU cores on the running machine.
ErrorCode (Inherited) (console only) Returns error code after applying the effect. This value is a Constant defined in the PictureEffectsError module.
MultiprocessingHint (Inherited) (console only) Use this property to fine tune CPU usage for this algorithm. By default this property is set to zero (Automatic). This property accepts all constants that are defined in this class.
ProgressHandler (Inherited) (console only) Use this property to use a progress class to get progress feedback from this function. This class must be a class that Implements the IProgressHandler Interface which is defined in this plugin.

Methods

Apply (console only) Applies the effect on a given source image with a given mask.
ApplyInPlace (console only) Applies the effect on a given source image with a given mask without creating a new image, the result is written into the source image. Very Important read the remarks.

Constants

CPU_USE_MACHINE_CORE_COUNT = -1 (Inherited) Uses exactly the number of available CPU cores in the machine. (Available here means on-line CPU cores, some laptops can put CPU cores off line in low battery situations)
CPU_USE_AUTOMATIC = 0 (Inherited) Takes into account number of available CPU cores on the Machine and also tries to select the fastest way based on developer rating for each algorithm and picture size. (In simple algorithms then the fastest path is sometimes 2 or 3 CPU cores and not 4 CPU cores because of the overhead of managing multiple cores). In more complex algorithms then 3 or 4 cores are almost always faster than 2 cores.
CPU_USE_1_CORE = 1 (Inherited) Uses one CPU core.
CPU_USE_2_CORES = 2 (Inherited) Uses two CPU cores. This setting will also work on machines with less than two CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_3_CORES = 3 (Inherited) Uses three CPU cores. This setting will also work on machines with less than three CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_4_CORES = 4 (Inherited) Uses four CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_5_CORES = 5 (Inherited) Uses five CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_6_CORES = 6 (Inherited) Uses six CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_7_CORES = 7 (Inherited) Uses seven CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_8_CORES = 8 (Inherited) Uses eight CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.

Examples

Dim pic as Picture
Dim effect as MapEffectConsole

Dim i as Integer
Dim mapping(255) as UInt8

if m_Picture = nil then
    return
end if

effect = new MapEffectConsole()

// Do a simple Invert mapping
for i = 0 to 255
    mapping(i) = 255-i
next

m_DistortedImage = effect.Apply(m_Picture,mapping,mapping,mapping,nil)

Supported Platforms:

  • MacOS X Carbon
  • MacOS X Cocoa
  • Win32 - Windows
  • Linux x86

    Unsupported Platforms: