Merge "Adding getSupportedPictureSizes to CameraParameters.DO NOT MERGE" into gingerbread

This commit is contained in:
Wu-cheng Li
2010-08-19 11:08:36 -07:00
committed by Android (Google) Code Review
2 changed files with 47 additions and 2 deletions

View File

@@ -22,6 +22,21 @@
namespace android {
struct Size {
int width;
int height;
Size() {
width = 0;
height = 0;
}
Size(int w, int h) {
width = w;
height = h;
}
};
class CameraParameters
{
public:
@@ -49,6 +64,7 @@ public:
const char *getPreviewFormat() const;
void setPictureSize(int width, int height);
void getPictureSize(int *width, int *height) const;
void getSupportedPictureSizes(Vector<Size> &sizes) const;
void setPictureFormat(const char *format);
const char *getPictureFormat() const;

View File

@@ -269,7 +269,7 @@ void CameraParameters::remove(const char *key)
mMap.removeItem(String8(key));
}
static int parse_size(const char *str, int &width, int &height)
static int parse_size(const char *str, int &width, int &height, char **endptr = NULL)
{
// Find the width.
char *end;
@@ -279,11 +279,15 @@ static int parse_size(const char *str, int &width, int &height)
return -1;
// Find the height, immediately after the 'x'.
int h = (int)strtol(end+1, 0, 10);
int h = (int)strtol(end+1, &end, 10);
width = w;
height = h;
if (endptr) {
*endptr = end;
}
return 0;
}
@@ -338,6 +342,31 @@ void CameraParameters::setPictureSize(int width, int height)
set(KEY_PICTURE_SIZE, str);
}
void CameraParameters::getSupportedPictureSizes(Vector<Size> &sizes) const
{
const char *pictureSizesStr = get(KEY_SUPPORTED_PICTURE_SIZES);
if (pictureSizesStr == 0) {
return;
}
char *sizeStartPtr = (char *)pictureSizesStr;
while (true) {
int width, height;
int success = parse_size(sizeStartPtr, width, height, &sizeStartPtr);
if (success == -1 || (*sizeStartPtr != ',' && *sizeStartPtr != '\0')) {
LOGE("Picture sizes string \"%s\" contains invalid character.", pictureSizesStr);
return;
}
sizes.push(Size(width, height));
if (*sizeStartPtr == '\0') {
return;
}
sizeStartPtr++;
}
}
void CameraParameters::getPictureSize(int *width, int *height) const
{
*width = -1;