LoginLogin
Might make SBS readonly: thread

LFILTER

Root / Documentation / [.]

Created:
Apply a filter to a layer.

Syntax

LFILTER id% {, filterType%, filterParams... }
LFILTER id% OUT filterType%
ArgumentDescription
id%The ID of the target layer.
filterType%The type of filter to apply to the layer.
ValueDescription
0No filter
1Mosaic
2Blur
3Horizontal Raster Deformation
4Vertical Raster Deformation
5HSV Color Shift
Optional. 0, if not specified.
filterParams...Parameters to the specified filter. The number and type of parameters depends on filterType%. See following sections for details on filters.
If filterType% and filterParams... are not specified, the filter is cleared.

Filters

The following sections specify how each layer filter is used.

No Filter

The filter settings for the layer are reset.
LFILTER id%, 0
InputDescription
id%The ID of the target layer.
0Specify 0 for filterType% to clear the filter.

Mosaic

Apply a "pixelated" effect to the layer by downsampling the image.
LFILTER id%, 1, factor%
InputDescription
id%The ID of the target layer.
1Specify 1 for filterType% to use the mosaic filter.
factor%The amount of downsampling to apply. 1 = no change.

Blur

Blur the layer.
LFILTER id%, 2, amount%
InputDescription
id%The ID of the target layer.
2Specify 2 for filterType% to use the blur filter.
amount%The amount of blur to apply. 0 = no change.

Horizontal/Vertical Raster Deformation

Apply offset and scaling to each row or column of pixels.
LFILTER id%, 3, deformArray#[], repeatFlag%
LFILTER id%, 4, deformArray#[], repeatFlag%
InputDescription
id%The ID of the target layer.
3, 4Specify 3 for filterType% to use the horizontal deformation filter. Specify 4 for filterType% to use the vertical deformation filter.
deformArray#[]A 2D real number array containing deformation information.
repeatFlag%When true, the layer's contents will be repeated if the deformation samples outside the layer.
The first dimension of deformArray#[] must be the display's height (in pixels) for horizontal deformation and the display's width for vertical deformation. These correspond to each row or column of the display, respectively. The second dimension must be 2 or 4. If it is 2, then offset and scale are specified only for the X direction (horizontal deform) or Y direction (vertical deform) of each row/column. If it is 4, then offset and scale can be specified in both the X and Y directions. To sum up, here is a table of what each index refers to in the four possible modes.
Filter/IndexHorizontal 2Vertical 2Horizontal 4Vertical 4
0Row X offsetColumn Y offsetRow X offsetColumn X offset
1Row X scaleColumn Y offsetRow X scaleColumn X scale
2unusedunusedRow Y offsetColumn Y offset
3unusedunusedRow Y scaleColumn Y scale
Offset values are specified as real numbers, where 1.0 is the width/height of the display, depending on axis.

HSV Color Shift

Change the colors of the image by adjusting the HSV values.
LFILTER id%, 5, hue#, saturation#, value#
InputDescription
id%The ID of the target layer.
5Specify 2 for filterType% to use the blur filter.
hue#Amount to adjust the hue by.
saturation#Amount to adjust the saturation by.
value#Amount to adjust the value (brightness) by.

Examples

Each example will demonstrate a different filter individually, using a given sample image. The sample image, and the code that generates it, is below.
ACLS
FOR I%=0 TO 239
 GLINE 0,I%,399,I%,RGBF(0,I%/239,1)
NEXT I%
GTRI 150,170,150,70,250,120,#C_RED
GTRI 250,170,250,70,150,120,#C_BLUE,#G_ADD
TFILL 0,18,8,22,12,&hE801
SPSET 0,0:SPOFS 0,32,64:SPHOME 0,8,8
SPSET 1,1:SPOFS 1,64,64:SPHOME 1,8,8:SPSCALE 1,2:SPROT 1,45
SPSET 2,2:SPOFS 2,112,64:SPHOME 2,8,8:SPSCALE 2,3,3:SPROT 2,90
LOCATE 18,2
PRINT "Hello, ";
COLOR #C_BLACK
PRINT" World!"

Mosaic

'apply a mosaic with 5x downsampling
LFILTER 0,1,5

Blur

'apply a blur with a strength of 50
LFILTER 0,2,50

Horizontal Raster Deformation

'horizontal sine distortion
'declare filter params array [height of screen,2]
DIM FP#[240,2]
'set params for each row of screen
FOR I%=0 TO 239
 'shift row horizontally by sine function
 FP#[I%,0]=SIN(I%/120*#PI)/8
 'keep scale the same
 FP#[I%,1]=1
NEXT I%
'apply filter, enable wrapping
LFILTER 0,3,FP#,#TRUE

Vertical Raster Deformation

'vertical sine distortion
'declare filter params array [width of screen,2]
DIM FP#[400,2]
'set params for each column of screen
FOR I%=0 TO 399
 'shift row horizontally by sine function
 FP#[I%,0]=SIN(I%/200*#PI)/8
 'keep scale the same
 FP#[I%,1]=1
NEXT I%
'apply filter, enable wrapping
LFILTER 0,4,FP#,#TRUE

HSV Color Shift

'shift hue by 180 degrees
'shift saturation by -50
'shift value by 86
LFILTER 0,5,180,-50,86

No posts yet (will you be the first?)