Dali 3D User Interface Engine
Functions
Composable subunits of the scaling algorithms.

Functions

void Dali::Internal::Platform::HalveScanlineInPlaceRGB888 (unsigned char *pixels, unsigned int width)
 Average adjacent pairs of pixels, overwriting the input array. More...
 
void Dali::Internal::Platform::HalveScanlineInPlaceRGBA8888 (unsigned char *pixels, unsigned int width)
 Average adjacent pairs of pixels, overwriting the input array. More...
 
void Dali::Internal::Platform::HalveScanlineInPlaceRGB565 (unsigned char *pixels, unsigned int width)
 Average adjacent pairs of pixels, overwriting the input array. More...
 
void Dali::Internal::Platform::HalveScanlineInPlace2Bytes (unsigned char *pixels, unsigned int width)
 Average adjacent pairs of pixels, overwriting the input array. More...
 
void Dali::Internal::Platform::HalveScanlineInPlace1Byte (unsigned char *pixels, unsigned int width)
 Average adjacent pairs of pixels, overwriting the input array. More...
 
void Dali::Internal::Platform::AverageScanlines1 (const unsigned char *scanline1, const unsigned char *scanline2, unsigned char *outputScanline, unsigned int width)
 Average pixels at corresponding offsets in two scanlines. More...
 
void Dali::Internal::Platform::AverageScanlines2 (const unsigned char *scanline1, const unsigned char *scanline2, unsigned char *outputScanline, unsigned int width)
 : Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5. More...
 
void Dali::Internal::Platform::AverageScanlines3 (const unsigned char *scanline1, const unsigned char *scanline2, unsigned char *outputScanline, unsigned int width)
 : Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5. More...
 
void Dali::Internal::Platform::AverageScanlinesRGBA8888 (const unsigned char *scanline1, const unsigned char *scanline2, unsigned char *outputScanline, unsigned int width)
 : Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5. More...
 
void Dali::Internal::Platform::AverageScanlinesRGB565 (const unsigned char *scanline1, const unsigned char *scanline2, unsigned char *outputScanline, unsigned int width)
 : Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5. More...
 

Detailed Description

Function Documentation

void Dali::Internal::Platform::AverageScanlines1 ( const unsigned char *  scanline1,
const unsigned char *  scanline2,
unsigned char *  outputScanline,
unsigned int  width 
)

Average pixels at corresponding offsets in two scanlines.

outputScanline is allowed to alias scanline1.

Parameters
[in]scanline1First scanline of pixels to average.
[in]scanline2Second scanline of pixels to average.
[out]outputScanlineDestination for the averaged pixels.
[in]widthThe widths of all the scanlines passed-in.
Parameters
widthImage width in pixels (1 byte == 1 pixel: e.g. lum8 or alpha8).
void Dali::Internal::Platform::AverageScanlines2 ( const unsigned char *  scanline1,
const unsigned char *  scanline2,
unsigned char *  outputScanline,
unsigned int  width 
)

: Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5.

Note, this is not neon. It runs in the normal integer pipeline so there is no downside like a stall moving between integer and copro, or extra power for clocking-up the idle copro. if (widthInComponents >= 7) { word32* aligned1 = scanline1 + 3 & 3; word32* aligned1_end = scanline1 + widthInPixels & 3; while(aligned1 < aligned1_end) { UHADD8 *aligned1++, *aligned2++, *alignedoutput++ } .. + 0 to 3 spare pixels at each end.

Parameters
widthImage width in pixels (2 bytes == 1 pixel: e.g. lum8alpha8).
void Dali::Internal::Platform::AverageScanlines3 ( const unsigned char *  scanline1,
const unsigned char *  scanline2,
unsigned char *  outputScanline,
unsigned int  width 
)

: Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5.

Note, this is not neon. It runs in the normal integer pipeline so there is no downside like a stall moving between integer and copro, or extra power for clocking-up the idle copro. if (widthInComponents >= 7) { word32* aligned1 = scanline1 + 3 & 3; word32* aligned1_end = scanline1 + widthInPixels & 3; while(aligned1 < aligned1_end) { UHADD8 *aligned1++, *aligned2++, *alignedoutput++ } .. + 0 to 3 spare pixels at each end.

Parameters
widthImage width in pixels (3 bytes == 1 pixel: e.g. RGB888).
void Dali::Internal::Platform::AverageScanlinesRGB565 ( const unsigned char *  scanline1,
const unsigned char *  scanline2,
unsigned char *  outputScanline,
unsigned int  width 
)

: Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5.

Note, this is not neon. It runs in the normal integer pipeline so there is no downside like a stall moving between integer and copro, or extra power for clocking-up the idle copro. if (widthInComponents >= 7) { word32* aligned1 = scanline1 + 3 & 3; word32* aligned1_end = scanline1 + widthInPixels & 3; while(aligned1 < aligned1_end) { UHADD8 *aligned1++, *aligned2++, *alignedoutput++ } .. + 0 to 3 spare pixels at each end.

void Dali::Internal::Platform::AverageScanlinesRGBA8888 ( const unsigned char *  scanline1,
const unsigned char *  scanline2,
unsigned char *  outputScanline,
unsigned int  width 
)

: Optimise for ARM using a 4 bytes at a time loop wrapped around the single ARMV6 instruction: UHADD8 R4, R0, R5.

Note, this is not neon. It runs in the normal integer pipeline so there is no downside like a stall moving between integer and copro, or extra power for clocking-up the idle copro. if (widthInComponents >= 7) { word32* aligned1 = scanline1 + 3 & 3; word32* aligned1_end = scanline1 + widthInPixels & 3; while(aligned1 < aligned1_end) { UHADD8 *aligned1++, *aligned2++, *alignedoutput++ } .. + 0 to 3 spare pixels at each end.

void Dali::Internal::Platform::HalveScanlineInPlace1Byte ( unsigned char *  pixels,
unsigned int  width 
)

Average adjacent pairs of pixels, overwriting the input array.

Parameters
[in,out]pixelsThe array of pixels to work on.
i]width The number of pixels in the array passed-in.

Definition at line 931 of file image-operations.cpp.

References Dali::Internal::Platform::AverageComponent(), Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::DebugAssertScanlineParameters(), and Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::EvenDown().

Referenced by UtcDaliImageOperationsHalveScanlineInPlace1Byte().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Platform::HalveScanlineInPlace2Bytes ( unsigned char *  pixels,
unsigned int  width 
)

Average adjacent pairs of pixels, overwriting the input array.

Parameters
[in,out]pixelsThe array of pixels to work on.
i]width The number of pixels in the array passed-in.

Definition at line 911 of file image-operations.cpp.

References Dali::Internal::Platform::AverageComponent(), Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::DebugAssertScanlineParameters(), and Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::EvenDown().

Referenced by UtcDaliImageOperationsHalveScanlineInPlace2Bytes().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Platform::HalveScanlineInPlaceRGB565 ( unsigned char *  pixels,
unsigned int  width 
)

Average adjacent pairs of pixels, overwriting the input array.

Parameters
[in,out]pixelsThe array of pixels to work on.
i]width The number of pixels in the array passed-in.

Definition at line 895 of file image-operations.cpp.

References Dali::Internal::Platform::AveragePixelRGB565(), DALI_ASSERT_DEBUG, Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::DebugAssertScanlineParameters(), and Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::EvenDown().

Referenced by UtcDaliImageOperationsHalveScanlineInPlaceRGB565().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Platform::HalveScanlineInPlaceRGB888 ( unsigned char *  pixels,
unsigned int  width 
)

Average adjacent pairs of pixels, overwriting the input array.

Parameters
[in,out]pixelsThe array of pixels to work on.
i]width The number of pixels in the array passed-in.

Definition at line 856 of file image-operations.cpp.

References Dali::Internal::Platform::AverageComponent(), Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::DebugAssertScanlineParameters(), and Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::EvenDown().

Referenced by UtcDaliImageOperationsHalveScanlineInPlaceRGB888().

Here is the call graph for this function:

Here is the caller graph for this function:

void Dali::Internal::Platform::HalveScanlineInPlaceRGBA8888 ( unsigned char *  pixels,
unsigned int  width 
)

Average adjacent pairs of pixels, overwriting the input array.

Parameters
[in,out]pixelsThe array of pixels to work on.
i]width The number of pixels in the array passed-in.

Definition at line 879 of file image-operations.cpp.

References Dali::Internal::Platform::AveragePixelRGBA8888(), DALI_ASSERT_DEBUG, Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::DebugAssertScanlineParameters(), and Dali::Internal::Platform::anonymous_namespace{image-operations.cpp}::EvenDown().

Referenced by UtcDaliImageOperationsHalveScanlineInPlaceRGBA8888().

Here is the call graph for this function:

Here is the caller graph for this function:

Dali Docs Home
Read more about Dali