forked from enlightenment/efl
* evas: Add convertion function for 8bpp grayscale no pal (256 and 16 values).
SVN revision: 43491
This commit is contained in:
parent
402103b40b
commit
992a1b4f13
|
@ -1146,6 +1146,12 @@ EVAS_CONVERT_ROT(32, RGB, 270)
|
||||||
## Convert to 32bpp RGB with rotation of 90
|
## Convert to 32bpp RGB with rotation of 90
|
||||||
EVAS_CONVERT_ROT(32, RGB, 90)
|
EVAS_CONVERT_ROT(32, RGB, 90)
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
## Convert to 8bpp grayscale with 256 value, no palette
|
||||||
|
EVAS_CONVERT_COLOR(8, GRY, 1)
|
||||||
|
## Convert to 8bpp grayscale with 16 value, no palette
|
||||||
|
EVAS_CONVERT_COLOR(8, GRY, 16)
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
## Convert to 8bpp grayscale, 64-palette
|
## Convert to 8bpp grayscale, 64-palette
|
||||||
conv_8_grayscale_64="yes"
|
conv_8_grayscale_64="yes"
|
||||||
|
@ -1383,6 +1389,8 @@ echo " 8bpp RGB 222............: $conv_8_rgb_222"
|
||||||
echo " 8bpp RGB 221............: $conv_8_rgb_221"
|
echo " 8bpp RGB 221............: $conv_8_rgb_221"
|
||||||
echo " 8bpp RGB 121............: $conv_8_rgb_121"
|
echo " 8bpp RGB 121............: $conv_8_rgb_121"
|
||||||
echo " 8bpp RGB 111............: $conv_8_rgb_111"
|
echo " 8bpp RGB 111............: $conv_8_rgb_111"
|
||||||
|
echo " 8bpp Grayscale (256)....: $conv_8_gry_1"
|
||||||
|
echo " 8bpp Grayscale (16).....: $conv_8_gry_16"
|
||||||
echo " 8bpp Grayscale 64-pal...: $conv_8_grayscale_64"
|
echo " 8bpp Grayscale 64-pal...: $conv_8_grayscale_64"
|
||||||
# FIXME: add grayscale and B&W support
|
# FIXME: add grayscale and B&W support
|
||||||
echo " 16bpp RGB 565...........: $conv_16_rgb_565"
|
echo " 16bpp RGB 565...........: $conv_16_rgb_565"
|
||||||
|
|
|
@ -5,8 +5,37 @@
|
||||||
#include "evas_common.h"
|
#include "evas_common.h"
|
||||||
#include "evas_convert_gry_8.h"
|
#include "evas_convert_gry_8.h"
|
||||||
|
|
||||||
|
#ifdef USE_DITHER_44
|
||||||
|
extern const DATA8 _evas_dither_44[4][4];
|
||||||
|
#endif
|
||||||
|
#ifdef USE_DITHER_128128
|
||||||
|
extern const DATA8 _evas_dither_128128[128][128];
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_CONVERT_8_GRY_1
|
#ifdef BUILD_CONVERT_8_GRY_1
|
||||||
void evas_common_convert_rgba_to_8bpp_gry_256_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
|
void evas_common_convert_rgba_to_8bpp_gry_256_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
|
||||||
|
{
|
||||||
|
DATA32 *src_ptr;
|
||||||
|
DATA8 *dst_ptr;
|
||||||
|
int x, y;
|
||||||
|
DATA8 r, g, b;
|
||||||
|
DATA32 gry8;
|
||||||
|
|
||||||
|
dst_ptr = (DATA8 *)dst;
|
||||||
|
|
||||||
|
CONVERT_LOOP_START_ROT_0();
|
||||||
|
|
||||||
|
r = (R_VAL(src_ptr));
|
||||||
|
g = (G_VAL(src_ptr));
|
||||||
|
b = (B_VAL(src_ptr));
|
||||||
|
|
||||||
|
// Y = 0.299 * R + 0.587 * G + 0.114 * B;
|
||||||
|
gry8 = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
|
||||||
|
|
||||||
|
*dst_ptr = gry8;
|
||||||
|
|
||||||
|
CONVERT_LOOP_END_ROT_0();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_CONVERT_8_GRY_4
|
#ifdef BUILD_CONVERT_8_GRY_4
|
||||||
|
@ -14,7 +43,34 @@ void evas_common_convert_rgba_to_8bpp_gry_64_dith (DATA32 *src, DATA8 *dst,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_CONVERT_8_GRY_16
|
#ifdef BUILD_CONVERT_8_GRY_16
|
||||||
void evas_common_convert_rgba_to_8bpp_gry_16_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
|
void evas_common_convert_rgba_to_8bpp_gry_16_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
|
||||||
|
{
|
||||||
|
DATA32 *src_ptr;
|
||||||
|
DATA8 *dst_ptr;
|
||||||
|
int x, y;
|
||||||
|
DATA8 r, g, b;
|
||||||
|
DATA32 gry8;
|
||||||
|
DATA8 dith, dith2;
|
||||||
|
|
||||||
|
dst_ptr = (DATA8 *)dst;
|
||||||
|
|
||||||
|
CONVERT_LOOP_START_ROT_0();
|
||||||
|
|
||||||
|
dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
|
||||||
|
|
||||||
|
r = (R_VAL(src_ptr));
|
||||||
|
g = (G_VAL(src_ptr));
|
||||||
|
b = (B_VAL(src_ptr));
|
||||||
|
|
||||||
|
// Y = 0.299 * R + 0.587 * G + 0.114 * B;
|
||||||
|
gry8 = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
|
||||||
|
|
||||||
|
if (((gry8 - gry8 * 255 / 4) >= dith) && (gry8 < 0x07)) gry8++;
|
||||||
|
|
||||||
|
*dst_ptr = gry8;
|
||||||
|
|
||||||
|
CONVERT_LOOP_END_ROT_0();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_CONVERT_8_GRY_64
|
#ifdef BUILD_CONVERT_8_GRY_64
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "evas_convert_rgb_24.h"
|
#include "evas_convert_rgb_24.h"
|
||||||
#include "evas_convert_rgb_32.h"
|
#include "evas_convert_rgb_32.h"
|
||||||
#include "evas_convert_grypal_6.h"
|
#include "evas_convert_grypal_6.h"
|
||||||
|
#include "evas_convert_gry_8.h"
|
||||||
#include "evas_convert_yuv.h"
|
#include "evas_convert_yuv.h"
|
||||||
|
|
||||||
const DATA8 _evas_dither_44[4][4] =
|
const DATA8 _evas_dither_44[4][4] =
|
||||||
|
@ -162,6 +163,14 @@ evas_common_convert_func_get(DATA8 *dest, int w, int h, int depth, DATA32 rmask,
|
||||||
{
|
{
|
||||||
if (depth == 8)
|
if (depth == 8)
|
||||||
{
|
{
|
||||||
|
#ifdef BUILD_CONVERT_8_GRY_1
|
||||||
|
if (pal_mode == PAL_MODE_NONE)
|
||||||
|
return evas_common_convert_rgba_to_8bpp_gry_256_dith;
|
||||||
|
#endif
|
||||||
|
#ifdef BUILD_CONVERT_8_GRY_16
|
||||||
|
if (pal_mode == PAL_MODE_NONE)
|
||||||
|
return evas_common_convert_rgba_to_8bpp_gry_16_dith;
|
||||||
|
#endif
|
||||||
#ifdef BUILD_CONVERT_8_RGB_332
|
#ifdef BUILD_CONVERT_8_RGB_332
|
||||||
if (pal_mode == PAL_MODE_RGB332)
|
if (pal_mode == PAL_MODE_RGB332)
|
||||||
return evas_common_convert_rgba_to_8bpp_rgb_332_dith;
|
return evas_common_convert_rgba_to_8bpp_rgb_332_dith;
|
||||||
|
|
Loading…
Reference in New Issue