Commit fdea37a7 authored by Sam Lantinga's avatar Sam Lantinga

Added some missing pixel formats and SDL_GetPixelFormatName()

parent 25101525
...@@ -24,35 +24,35 @@ import java.lang.*; ...@@ -24,35 +24,35 @@ import java.lang.*;
*/ */
public class SDLActivity extends Activity { public class SDLActivity extends Activity {
//Main components // Main components
private static SDLActivity mSingleton; private static SDLActivity mSingleton;
private static SDLSurface mSurface; private static SDLSurface mSurface;
//Audio // Audio
private static AudioTrack mAudioTrack; private static AudioTrack mAudioTrack;
private static boolean bAudioIsEnabled; private static boolean bAudioIsEnabled;
//Sensors // Sensors
private static boolean bAccelIsEnabled; private static boolean bAccelIsEnabled;
//feature IDs. Must match up on the C side as well. // feature IDs. Must match up on the C side as well.
private static int FEATURE_AUDIO = 1; private static int FEATURE_AUDIO = 1;
private static int FEATURE_ACCEL = 2; private static int FEATURE_ACCEL = 2;
//Load the .so // Load the .so
static { static {
System.loadLibrary("SDL"); System.loadLibrary("SDL");
System.loadLibrary("main"); System.loadLibrary("main");
} }
//Setup // Setup
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//So we can call stuff from static callbacks // So we can call stuff from static callbacks
mSingleton = this; mSingleton = this;
//Set up the surface // Set up the surface
mSurface = new SDLSurface(getApplication()); mSurface = new SDLSurface(getApplication());
setContentView(mSurface); setContentView(mSurface);
SurfaceHolder holder = mSurface.getHolder(); SurfaceHolder holder = mSurface.getHolder();
...@@ -60,11 +60,11 @@ public class SDLActivity extends Activity { ...@@ -60,11 +60,11 @@ public class SDLActivity extends Activity {
} }
//Audio // Audio
public static boolean initAudio(){ public static boolean initAudio(){
//blah. Hardcoded things are bad. FIXME when we have more sound stuff // blah. Hardcoded things are bad. FIXME when we have more sound stuff
//working properly. // working properly.
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
11025, 11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.CHANNEL_CONFIGURATION_MONO,
...@@ -75,7 +75,7 @@ public class SDLActivity extends Activity { ...@@ -75,7 +75,7 @@ public class SDLActivity extends Activity {
return true; return true;
} }
//Accel // Accel
public static boolean initAccel(){ public static boolean initAccel(){
mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true); mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true);
bAccelIsEnabled = true; bAccelIsEnabled = true;
...@@ -110,7 +110,7 @@ public class SDLActivity extends Activity { ...@@ -110,7 +110,7 @@ public class SDLActivity extends Activity {
public static native void onNativeAccel(float x, float y, float z); public static native void onNativeAccel(float x, float y, float z);
//Java functions called from C // Java functions called from C
private static void createGLContext() { private static void createGLContext() {
mSurface.initEGL(); mSurface.initEGL();
} }
...@@ -134,13 +134,13 @@ public class SDLActivity extends Activity { ...@@ -134,13 +134,13 @@ public class SDLActivity extends Activity {
public static void enableFeature(int featureid, int enabled) { public static void enableFeature(int featureid, int enabled) {
Log.v("SDL","Feature " + featureid + " = " + enabled); Log.v("SDL","Feature " + featureid + " = " + enabled);
//Yuck. This is all horribly inelegent. If it gets to more than a few // Yuck. This is all horribly inelegent. If it gets to more than a few
//'features' I'll rip this out and make something nicer, I promise :) // 'features' I'll rip this out and make something nicer, I promise :)
if(featureid == FEATURE_AUDIO){ if(featureid == FEATURE_AUDIO){
if(enabled == 1){ if(enabled == 1){
initAudio(); initAudio();
}else{ }else{
//We don't have one of these yet... // We don't have one of these yet...
//closeAudio(); //closeAudio();
} }
} }
...@@ -241,11 +241,11 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, ...@@ -241,11 +241,11 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
break; break;
case PixelFormat.RGBA_4444: case PixelFormat.RGBA_4444:
Log.v("SDL","pixel format RGBA_4444"); Log.v("SDL","pixel format RGBA_4444");
sdlFormat = 0x85421002; // Doesn't have an SDL constant... sdlFormat = 0x85421002; // SDL_PIXELFORMAT_RGBA4444
break; break;
case PixelFormat.RGBA_5551: case PixelFormat.RGBA_5551:
Log.v("SDL","pixel format RGBA_5551"); Log.v("SDL","pixel format RGBA_5551");
sdlFormat = 0x85441002; // Doesn't have an SDL constant... sdlFormat = 0x85441002; // SDL_PIXELFORMAT_RGBA5551
break; break;
case PixelFormat.RGBA_8888: case PixelFormat.RGBA_8888:
Log.v("SDL","pixel format RGBA_8888"); Log.v("SDL","pixel format RGBA_8888");
...@@ -278,7 +278,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, ...@@ -278,7 +278,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
} }
} }
//unused // unused
public void onDraw(Canvas canvas) {} public void onDraw(Canvas canvas) {}
...@@ -332,7 +332,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, ...@@ -332,7 +332,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
egl.eglWaitNative(EGL10.EGL_NATIVE_RENDERABLE, null); egl.eglWaitNative(EGL10.EGL_NATIVE_RENDERABLE, null);
//drawing here // drawing here
egl.eglWaitGL(); egl.eglWaitGL();
...@@ -370,14 +370,14 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, ...@@ -370,14 +370,14 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
float y = event.getY(); float y = event.getY();
float p = event.getPressure(); float p = event.getPressure();
//TODO: Anything else we need to pass? // TODO: Anything else we need to pass?
SDLActivity.onNativeTouch(action, x, y, p); SDLActivity.onNativeTouch(action, x, y, p);
return true; return true;
} }
// Sensor events // Sensor events
public void enableSensor(int sensortype, boolean enabled) { public void enableSensor(int sensortype, boolean enabled) {
//TODO: This uses getDefaultSensor - what if we have >1 accels? // TODO: This uses getDefaultSensor - what if we have >1 accels?
if (enabled) { if (enabled) {
mSensorManager.registerListener(this, mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(sensortype), mSensorManager.getDefaultSensor(sensortype),
...@@ -389,7 +389,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, ...@@ -389,7 +389,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
} }
public void onAccuracyChanged(Sensor sensor, int accuracy) { public void onAccuracyChanged(Sensor sensor, int accuracy) {
//TODO // TODO
} }
public void onSensorChanged(SensorEvent event) { public void onSensorChanged(SensorEvent event) {
......
...@@ -138,6 +138,7 @@ enum ...@@ -138,6 +138,7 @@ enum
#define SDL_ISPIXELFORMAT_FOURCC(format) \ #define SDL_ISPIXELFORMAT_FOURCC(format) \
((format) && !((format) & 0x80000000)) ((format) && !((format) & 0x80000000))
/* Note: If you modify this list, update SDL_GetPixelFormatName() */
enum enum
{ {
SDL_PIXELFORMAT_UNKNOWN, SDL_PIXELFORMAT_UNKNOWN,
...@@ -170,15 +171,27 @@ enum ...@@ -170,15 +171,27 @@ enum
SDL_PIXELFORMAT_ARGB4444 = SDL_PIXELFORMAT_ARGB4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_4444, 16, 2), SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_RGBA4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_ABGR4444 = SDL_PIXELFORMAT_ABGR4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
SDL_PACKEDLAYOUT_4444, 16, 2), SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_BGRA4444 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
SDL_PACKEDLAYOUT_4444, 16, 2),
SDL_PIXELFORMAT_ARGB1555 = SDL_PIXELFORMAT_ARGB1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
SDL_PACKEDLAYOUT_1555, 16, 2), SDL_PACKEDLAYOUT_1555, 16, 2),
SDL_PIXELFORMAT_RGBA5551 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
SDL_PACKEDLAYOUT_5551, 16, 2),
SDL_PIXELFORMAT_ABGR1555 = SDL_PIXELFORMAT_ABGR1555 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
SDL_PACKEDLAYOUT_1555, 16, 2), SDL_PACKEDLAYOUT_1555, 16, 2),
SDL_PIXELFORMAT_BGRA5551 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
SDL_PACKEDLAYOUT_5551, 16, 2),
SDL_PIXELFORMAT_RGB565 = SDL_PIXELFORMAT_RGB565 =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
SDL_PACKEDLAYOUT_565, 16, 2), SDL_PACKEDLAYOUT_565, 16, 2),
...@@ -269,6 +282,11 @@ typedef struct SDL_PixelFormat ...@@ -269,6 +282,11 @@ typedef struct SDL_PixelFormat
Uint32 Amask; Uint32 Amask;
} SDL_PixelFormat; } SDL_PixelFormat;
/**
* \brief Get the human readable name of a pixel format
*/
extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
/** /**
* \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks. * \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks.
* *
......
...@@ -39,6 +39,50 @@ struct SDL_PaletteWatch ...@@ -39,6 +39,50 @@ struct SDL_PaletteWatch
/* Helper functions */ /* Helper functions */
const char*
SDL_GetPixelFormatName(Uint32 format)
{
switch (format) {
#define CASE(X) case X: return #X;
CASE(SDL_PIXELFORMAT_INDEX1LSB)
CASE(SDL_PIXELFORMAT_INDEX1MSB)
CASE(SDL_PIXELFORMAT_INDEX4LSB)
CASE(SDL_PIXELFORMAT_INDEX4MSB)
CASE(SDL_PIXELFORMAT_INDEX8)
CASE(SDL_PIXELFORMAT_RGB332)
CASE(SDL_PIXELFORMAT_RGB444)
CASE(SDL_PIXELFORMAT_RGB555)
CASE(SDL_PIXELFORMAT_BGR555)
CASE(SDL_PIXELFORMAT_ARGB4444)
CASE(SDL_PIXELFORMAT_RGBA4444)
CASE(SDL_PIXELFORMAT_ABGR4444)
CASE(SDL_PIXELFORMAT_BGRA4444)
CASE(SDL_PIXELFORMAT_ARGB1555)
CASE(SDL_PIXELFORMAT_RGBA5551)
CASE(SDL_PIXELFORMAT_ABGR1555)
CASE(SDL_PIXELFORMAT_BGRA5551)
CASE(SDL_PIXELFORMAT_RGB565)
CASE(SDL_PIXELFORMAT_BGR565)
CASE(SDL_PIXELFORMAT_RGB24)
CASE(SDL_PIXELFORMAT_BGR24)
CASE(SDL_PIXELFORMAT_RGB888)
CASE(SDL_PIXELFORMAT_BGR888)
CASE(SDL_PIXELFORMAT_ARGB8888)
CASE(SDL_PIXELFORMAT_RGBA8888)
CASE(SDL_PIXELFORMAT_ABGR8888)
CASE(SDL_PIXELFORMAT_BGRA8888)
CASE(SDL_PIXELFORMAT_ARGB2101010)
CASE(SDL_PIXELFORMAT_YV12)
CASE(SDL_PIXELFORMAT_IYUV)
CASE(SDL_PIXELFORMAT_YUY2)
CASE(SDL_PIXELFORMAT_UYVY)
CASE(SDL_PIXELFORMAT_YVYU)
#undef CASE
default:
return "SDL_PIXELFORMAT_UNKNOWN";
}
}
SDL_bool SDL_bool
SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask, SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
Uint32 * Gmask, Uint32 * Bmask, Uint32 * Amask) Uint32 * Gmask, Uint32 * Bmask, Uint32 * Amask)
......
...@@ -11,58 +11,6 @@ ...@@ -11,58 +11,6 @@
#define AUDIO_USAGE \ #define AUDIO_USAGE \
"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" "[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]"
struct pformat {
Uint32 id;
const char* idstr;
} pixel_format[]={
{SDL_PIXELFORMAT_INDEX1LSB, "SDL_PIXELFORMAT_INDEX1LSB"},
{SDL_PIXELFORMAT_INDEX1MSB, "SDL_PIXELFORMAT_INDEX1MSB"},
{SDL_PIXELFORMAT_INDEX4LSB, "SDL_PIXELFORMAT_INDEX4LSB"},
{SDL_PIXELFORMAT_INDEX4MSB, "SDL_PIXELFORMAT_INDEX4MSB"},
{SDL_PIXELFORMAT_INDEX8, "SDL_PIXELFORMAT_INDEX8"},
{SDL_PIXELFORMAT_RGB332, "SDL_PIXELFORMAT_RGB332"},
{SDL_PIXELFORMAT_RGB444, "SDL_PIXELFORMAT_RGB444"},
{SDL_PIXELFORMAT_RGB555, "SDL_PIXELFORMAT_RGB555"},
{SDL_PIXELFORMAT_BGR555, "SDL_PIXELFORMAT_BGR555"},
{SDL_PIXELFORMAT_ARGB4444, "SDL_PIXELFORMAT_ARGB4444"},
{SDL_PIXELFORMAT_ABGR4444, "SDL_PIXELFORMAT_ABGR4444"},
{SDL_PIXELFORMAT_ARGB1555, "SDL_PIXELFORMAT_ARGB1555"},
{SDL_PIXELFORMAT_ABGR1555, "SDL_PIXELFORMAT_ABGR1555"},
{SDL_PIXELFORMAT_RGB565, "SDL_PIXELFORMAT_RGB565"},
{SDL_PIXELFORMAT_BGR565, "SDL_PIXELFORMAT_BGR565"},
{SDL_PIXELFORMAT_RGB24, "SDL_PIXELFORMAT_RGB24"},
{SDL_PIXELFORMAT_BGR24, "SDL_PIXELFORMAT_BGR24"},
{SDL_PIXELFORMAT_RGB888, "SDL_PIXELFORMAT_RGB888"},
{SDL_PIXELFORMAT_BGR888, "SDL_PIXELFORMAT_BGR888"},
{SDL_PIXELFORMAT_ARGB8888, "SDL_PIXELFORMAT_ARGB8888"},
{SDL_PIXELFORMAT_RGBA8888, "SDL_PIXELFORMAT_RGBA8888"},
{SDL_PIXELFORMAT_ABGR8888, "SDL_PIXELFORMAT_ABGR8888"},
{SDL_PIXELFORMAT_BGRA8888, "SDL_PIXELFORMAT_BGRA8888"},
{SDL_PIXELFORMAT_ARGB2101010, "SDL_PIXELFORMAT_ARGB2101010"},
{SDL_PIXELFORMAT_YV12, "SDL_PIXELFORMAT_YV12"},
{SDL_PIXELFORMAT_IYUV, "SDL_PIXELFORMAT_IYUV"},
{SDL_PIXELFORMAT_YUY2, "SDL_PIXELFORMAT_YUY2"},
{SDL_PIXELFORMAT_UYVY, "SDL_PIXELFORMAT_UYVY"},
{SDL_PIXELFORMAT_YVYU, "SDL_PIXELFORMAT_YVYU"}
};
const char* PixelFormatToString(Uint32 pformat)
{
Uint32 it=0;
do {
if (pixel_format[it].idstr == NULL) {
break;
}
if (pixel_format[it].id == pformat) {
return pixel_format[it].idstr;
}
it++;
} while(1);
return "SDL_PIXELFORMAT_UNKNOWN";
}
CommonState * CommonState *
CommonCreateState(char **argv, Uint32 flags) CommonCreateState(char **argv, Uint32 flags)
{ {
...@@ -719,7 +667,7 @@ CommonInit(CommonState * state) ...@@ -719,7 +667,7 @@ CommonInit(CommonState * state)
fprintf(stderr, fprintf(stderr,
" Current mode: %dx%d@%dHz, %d bits-per-pixel (%s)\n", " Current mode: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
mode.w, mode.h, mode.refresh_rate, bpp, mode.w, mode.h, mode.refresh_rate, bpp,
PixelFormatToString(mode.format)); SDL_GetPixelFormatName(mode.format));
if (Rmask || Gmask || Bmask) { if (Rmask || Gmask || Bmask) {
fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask); fprintf(stderr, " Red Mask = 0x%.8x\n", Rmask);
fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask); fprintf(stderr, " Green Mask = 0x%.8x\n", Gmask);
...@@ -741,7 +689,7 @@ CommonInit(CommonState * state) ...@@ -741,7 +689,7 @@ CommonInit(CommonState * state)
fprintf(stderr, fprintf(stderr,
" Mode %d: %dx%d@%dHz, %d bits-per-pixel (%s)\n", " Mode %d: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
j, mode.w, mode.h, mode.refresh_rate, bpp, j, mode.w, mode.h, mode.refresh_rate, bpp,
PixelFormatToString(mode.format)); SDL_GetPixelFormatName(mode.format));
if (Rmask || Gmask || Bmask) { if (Rmask || Gmask || Bmask) {
fprintf(stderr, " Red Mask = 0x%.8x\n", fprintf(stderr, " Red Mask = 0x%.8x\n",
Rmask); Rmask);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment