ifdefs for ANDROID_ARGB_8888 vs RGB_565

This commit is contained in:
James Sanford 2012-10-10 23:56:03 -07:00
parent 9cbd698d4d
commit c0ecd8da18
2 changed files with 32 additions and 10 deletions

View File

@ -188,8 +188,19 @@ x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy,
int x, y;
indata += (srcy * in_width) + srcx;
#ifdef ANDROID_ARGB_8888
pixels = ((char *)pixels + (g_bitmap_info.stride * desty)) + (destx * 4);
for (y=0; y<height; y++) {
uint32_t *line = (uint32_t*)pixels;
inptr = indata;
for (x=0; x<width; x++) {
line++[0] = (uint32_t)(palptr[*inptr++]);
}
pixels = (char *)pixels + g_bitmap_info.stride;
indata += in_width;
}
#else
pixels = ((char *)pixels + (g_bitmap_info.stride * desty)) + (destx * 2);
for (y=0; y<height; y++) {
uint16_t *line = (uint16_t*)pixels;
inptr = indata;
@ -199,6 +210,7 @@ x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy,
pixels = (char *)pixels + g_bitmap_info.stride;
indata += in_width;
}
#endif
AndroidBitmap_unlockPixels(g_env, g_bitmap);
@ -294,10 +306,17 @@ Java_com_froop_app_kegs_KegsView_00024KegsThread_mainLoop( JNIEnv* env, jobject
return;
}
#ifdef ANDROID_ARGB_8888
if (g_bitmap_info.format != ANDROID_BITMAP_FORMAT_ARGB_8888) {
LOGE("Bitmap format must be ARGB_8888");
return;
}
#else
if (g_bitmap_info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
LOGE("Bitmap format must be RGB_565");
return;
}
#endif
kegsmain(0, NULL);
}
@ -310,13 +329,23 @@ dev_video_init()
int lores_col;
// We tell KEGS we have an 8bit display,
// but then when it asks us to push it, we transform the update area
// into ARGB_8888. There may be palette update bugs?
// into ARGB_8888.
g_screen_mdepth = 8;
g_screen_depth = g_screen_mdepth;
#ifdef ANDROID_ARGB_8888
g_red_left_shift = 0;
g_green_left_shift = 8;
g_blue_left_shift = 16;
#else
// RGB_565
g_red_right_shift = 3;
g_green_right_shift = 2;
g_blue_right_shift = 3;
g_red_left_shift = 11;
g_green_left_shift = 5;
g_blue_left_shift = 0;
#endif
video_get_kimages();

View File

@ -3508,18 +3508,11 @@ video_update_color_raw(int col_num, int a2_color)
newgreen = green >> g_green_right_shift;
newblue = blue >> g_blue_right_shift;
#if 1
// jsanford TESTING FIXME
// can be even shorter, see above...
tmp = 0 + ((red & 0xF8) << (11 - 3)) + ((green & 0xFC) << (5 - 2)) + ((blue & 0xF8) >> 3);
#else
tmp = ((newred & g_red_mask) << g_red_left_shift) +
((newgreen & g_green_mask) << g_green_left_shift) +
((newblue & g_blue_mask) << g_blue_left_shift);
#ifdef __ANDROID__
#if defined(__ANDROID__) && defined(ANDROID_ARGB_8888)
tmp |= 0xFF000000; // Alpha FF.
#endif
#endif
g_palette_8to1624[col_num] = tmp;