PictureEffects Xojo and Real Studio Plugin

LevelsEffect Class

A class to apply levels changes to images and to generate histograms for each color channel or a combined RGB histogram.

This class supports use of multiple CPU cores on MacOS X, Windows and Linux systems.


The control mechanism to draw the histogram and to control it is included with PictureEffects in form of a REALbasic closed source class.


The effect allows for mutating levels of in - channels and out channels. Changing the in channels discards levels from the image, while changing the out channel stretches and converts the input to different levels range. So for example a image could discard levels bellow 100 on the red channel but then let the remaining levels convert and stretch to levels 50 to 220.

MapEffect
   LevelsEffect

class LevelsEffect implements

IGraphicsEffect

IGraphicsEffectInPlace

Constructors

LevelsEffectDefault constructor for the LevelsEffect

Properties

BlueHistogramReturns the histogram for the blue channel of image passed into last call to the CreateHistograms method.
GreenHistogramReturns the histogram for the green channel of image passed into last call to the CreateHistograms method.
InRangeBlueReturns the In range for the blue channel.
InRangeGreenReturns the In range for the green channel.
InRangeRedReturns the In range for the red channel.
MaskSets mask for the operation of the simple version of the Apply functions.
OutRangeBlueReturns the out range for the blue channel.
OutRangeGreenReturns the out range for the green channel.
OutRangeRedReturns the out range for the red channel.
RedHistogramReturns the histogram for the red channel of image passed into last call to the CreateHistograms method.
RGBHistogramReturns the histogram for the combined RGB channels of image passed into last call to the CreateHistograms method.
IgnoreAlpha (Inherited) If set to true then the alpha channel of the source image will not be included in the destination image.
CPUCoreCount (Inherited) Returns number of detected CPU cores on the running machine.
ErrorCode (Inherited) Returns error code after applying the effect. This value is a Constant defined in the PictureEffectsError module.
MultiprocessingHint (Inherited) 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) 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

ApplyApplies the effect on a given 32 bit source image with a given 32 bit mask and returns the result to a new image.
ApplyApplies the effect on a given 32 bit source image with parameters that have been set on the class instance.
Apply (Inherited) Applies the effect on a given source image with a given mask.
ApplyInPlaceApplies the effect in place on a given 32 bit source image with parameters that have been set on the class instance.
ApplyInPlaceApplies the effect in place on a given 32 bit source image with a given 32 bit mask.
ApplyInPlace (Inherited) 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.
CreateHistogramsCreates histograms (Red, Green, Blue and combined RBG) for a given image.

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.

Example:

Dim s as new LevelsEffect

s.InRangeRed.Minimum = 100
s.OutRangeRed.Minimum = 50
s.OutRangeRed.Maximum = 220
img = s.Apply(EnsurePictureBits(AfGrabrok,32))

Supported Platforms:

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

    Unsupported Platforms: