int AREA_4 = 4;
int AREA_5 = 5;
int AREA_6 = 6;
+ int AREA_7 = 7;
+ int AREA_8 = 8;
int BUTTON_1 = 1;
int BUTTON_2 = 2;
}
if (messageDrawer != null)
{
+ if (area == IShowInformation.AREA_C)
+ {
+ messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.CENTER, color, IMessageDrawer.SIZE_LARGE, message);
+ return;
+ }
if (area == IShowInformation.AREA_5)
{
- messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.UP, color, IMessageDrawer.SIZE_STD, message);
+ messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.UPLEFT, color, IMessageDrawer.SIZE_STD, message);
return;
}
if (area == IShowInformation.AREA_6)
{
- messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.LOW, color, IMessageDrawer.SIZE_STD, message);
+ messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.LOWLEFT, color, IMessageDrawer.SIZE_STD, message);
return;
}
- if (area == IShowInformation.AREA_C)
+ if (area == IShowInformation.AREA_7)
{
- messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.CENTER, color, IMessageDrawer.SIZE_LARGE, message);
+ messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.UPRIGHT, color, IMessageDrawer.SIZE_STD, message);
+ return;
+ }
+ if (area == IShowInformation.AREA_8)
+ {
+ messageDrawer.setMessageToShow(IMessageDrawer.MessageArea.LOWRIGHT, color, IMessageDrawer.SIZE_STD, message);
return;
}
if (id == 0)
/**
- *
+ * コンストラクタ
*
*/
public CameraLiveImageView(Context context)
}
/**
- *
+ * コンストラクタ
*
*/
public CameraLiveImageView(Context context, AttributeSet attrs)
}
/**
- *
+ * コンストラクタ
*
*/
public CameraLiveImageView(Context context, AttributeSet attrs, int defStyleAttr)
Bitmap bitmapToShow = imageBitmap;
if (bitmapToShow == null)
{
- // 表示するビットマップがないときは、メッセージ表示のみ行う
- drawInformationMessages(canvas);
+ // 表示するビットマップがないとき
return;
}
RectF viewRect = null;
// Calculate the viewport of bitmap.
- if (imageScaleType == ImageView.ScaleType.FIT_CENTER) {
- viewRect = decideViewRect(canvas, bitmapToShow);
+ if (imageScaleType == ImageView.ScaleType.FIT_CENTER)
+ {
+ viewRect = decideViewRect(canvas, bitmapToShow, imageRotationDegrees);
// Draws the bitmap.
Rect imageRect = new Rect(0, 0, bitmapToShow.getWidth(), bitmapToShow.getHeight());
canvas.drawBitmap(bitmapToShow, imageRect, viewRect, null);
- } else {
+ }
+ else
+ {
// Sorry, other scale types are not supported.
Log.v(TAG, "Sorry, other scale types are not supported. " + imageScaleType);
}
}
// グリッド(撮影補助線)の表示
- if ((viewRect != null) && (showGridFeature) && (gridFrameDrawer != null)) {
+ if ((viewRect != null) && (showGridFeature) && (gridFrameDrawer != null))
+ {
drawGridFrame(canvas, viewRect);
}
}
*
*
*/
- private RectF decideViewRect(Canvas canvas, Bitmap bitmapToShow)
+ private RectF decideViewRect(Canvas canvas, Bitmap bitmapToShow, int degree)
{
final int srcWidth;
final int srcHeight;
- if ((imageRotationDegrees == 0) || (imageRotationDegrees == 180)) {
+ if ((degree == 0) || (degree == 180))
+ {
srcWidth = bitmapToShow.getWidth();
srcHeight = bitmapToShow.getHeight();
- } else {
+ }
+ else
+ {
// Replaces width and height.
srcWidth = bitmapToShow.getHeight();
srcHeight = bitmapToShow.getWidth();
final int dstWidth;
final int dstHeight;
- if (widthRatio < heightRatio) {
+ if (widthRatio < heightRatio)
+ {
// Fits to maxWidth with keeping aspect ratio.
dstWidth = maxWidth;
dstHeight = (int) (smallRatio * srcHeight);
- } else {
+ }
+ else
+ {
// Fits to maxHeight with keeping aspect ratio.
dstHeight = maxHeight;
dstWidth = (int) (smallRatio * srcWidth);
final float halfWidth = dstWidth * 0.5f;
final float halfHeight = dstHeight * 0.5f;
- if ((imageRotationDegrees == 0) || (imageRotationDegrees == 180)) {
+ if ((degree == 0) || (degree == 180))
+ {
return (new RectF(
centerX - halfWidth,
centerY - halfHeight,
private void drawInformationMessages(Canvas canvas)
{
String message;
- float x = 10.0f; // 表示マージン ... 実測なのでチューニング必要
- float y = 55.0f; // 表示マージン ... 実測なのでチューニング必要
+ RectF viewRect;
+ if (imageBitmap != null)
+ {
+ // ビットマップの表示エリアに合わせて位置をチューニングする
+ viewRect = decideViewRect(canvas, imageBitmap, 0);
+ }
+ else
+ {
+ // 適当なサイズ...
+ viewRect = new RectF(5.0f, 0.0f, canvas.getWidth() - 5.0f, canvas.getHeight() - 55.0f);
+ }
// 画面の中心に表示する
message = messageHolder.getMessage(ShowMessageHolder.MessageArea.CENTER);
canvas.drawText(message, cx, cy, paint);
}
- // 画面上部に表示する
- message = messageHolder.getMessage(ShowMessageHolder.MessageArea.UP);
+ // 画面上部右側に表示する
+ message = messageHolder.getMessage(ShowMessageHolder.MessageArea.UPLEFT);
if ((message != null)&&(message.length() > 0))
{
Paint paintUp = new Paint();
- paintUp.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.UP));
- paintUp.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.UP));
- canvas.drawText(message, x, y, paintUp);
+ paintUp.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.UPLEFT));
+ paintUp.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.UPLEFT));
+ canvas.drawText(message, viewRect.left, viewRect.top, paintUp);
}
- // 画面下部に表示する
- message = messageHolder.getMessage(ShowMessageHolder.MessageArea.LOW);
+ // 画面下部右側に表示する
+ message = messageHolder.getMessage(ShowMessageHolder.MessageArea.LOWLEFT);
if ((message != null)&&(message.length() > 0))
{
Paint paint = new Paint();
- paint.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.LOW));
- paint.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.LOW));
+ paint.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.LOWLEFT));
+ paint.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.LOWLEFT));
Paint.FontMetrics fontMetrics = paint.getFontMetrics();
- y = canvas.getHeight() - (fontMetrics.ascent + fontMetrics.descent) - y;
- canvas.drawText(message, x, y, paint);
+ canvas.drawText(message, viewRect.left + 3.0f, viewRect.bottom - fontMetrics.bottom, paint);
}
}
String DRAWABLE_BUTTON6 = "D6";
// 表示エリア
+ String SHOW_TEXT_AREAC = "TXTC";
String SHOW_TEXT_AREA1 = "TXT1";
String SHOW_TEXT_AREA2 = "TXT2";
String SHOW_TEXT_AREA3 = "TXT3";
String SHOW_TEXT_AREA5 = "TXT5";
String SHOW_TEXT_AREA6 = "TXT6";
String SHOW_TEXT_AREA7 = "TXT7";
+ String SHOW_TEXT_AREA8 = "TXT8";
// A01Cが持つ機能 (ボタンに割り当て可能)
int FEATURE_APERTURE_UP = 9;
int FEATURE_SHUTTER_SPEED_DOWN = 10;
int FEATURE_SHUTTER_SPEED_UP = 11;
+ int FEATURE_COLORTONE_DOWN = 12;
+ int FEATURE_COLORTONE_UP = 13;
}
// メッセージを表示する位置
enum MessageArea
{
- UP,
+ UPLEFT,
+ UPRIGHT,
CENTER,
- LOW
+ LOWLEFT,
+ LOWRIGHT
};
int SIZE_STD = 16;
{
case "P":
preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
+ defaultAction = ICameraFeatureDispatcher.FEATURE_COLORTONE_DOWN;
break;
case "A":
{
case "P":
preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
+ defaultAction = ICameraFeatureDispatcher.FEATURE_COLORTONE_UP;
break;
case "A":
propertyProxy.updateCameraPropertyUp(IOlyCameraProperty.SHUTTER_SPEED);
}
+
+ /**
+ * 仕上がり・ピクチャーモードを1段階下げる
+ */
+ private void changeColorToneDown()
+ {
+ IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
+ propertyProxy.updateCameraPropertyDown(IOlyCameraProperty.COLOR_TONE);
+ }
+
+ /**
+ * 仕上がり・ピクチャーモードを1段階あげる
+ *
+ */
+ private void changeColorToneUp()
+ {
+ IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
+ propertyProxy.updateCameraPropertyUp(IOlyCameraProperty.COLOR_TONE);
+ }
+
/**
* 設定画面を開く
*
// シャッター速度を1段階上げる
changeShutterSpeedUp();
break;
+ case ICameraFeatureDispatcher.FEATURE_COLORTONE_DOWN:
+ // 仕上がり・ピクチャーモードを選択
+ changeColorToneDown();
+ break;
+ case ICameraFeatureDispatcher.FEATURE_COLORTONE_UP:
+ // 仕上がり・ピクチャーモードを選択
+ changeColorToneUp();
+ break;
+
}
}
}
*/
class ShowMessageHolder implements IMessageDrawer
{
- private String upperMessage = "";
- private String centerMessage = "";
- private String lowerMessage = "";
-
- private int upperMessageColor = Color.BLUE;
- private int centerMessageColor = Color.BLUE;
- private int lowerMessageColor = Color.BLUE;
-
- private int upperMessageTextSize = 16;
- private int centerMessageTextSize = 24;
- private int lowerMessageTextSize = 16;
-
/**
*
- *
*/
- @Override
- public void setMessageToShow(MessageArea area, int color, int size, String message)
+ private class messageHolder
{
- switch (area)
+ private String message = "";
+ private int color = Color.BLUE;
+ private int textSize = 16;
+
+ String getMessage()
{
- case CENTER:
- centerMessageColor = color;
- centerMessageTextSize = size;
- centerMessage = message;
- break;
+ return message;
+ }
- case UP:
- upperMessageColor = color;
- upperMessageTextSize = size;
- upperMessage = message;
- break;
+ void setMessage(String message)
+ {
+ this.message = message;
+ }
- case LOW:
- default:
- lowerMessageColor = color;
- lowerMessageTextSize = size;
- lowerMessage = message;
- break;
+ int getColor()
+ {
+ return color;
}
+
+ void setColor(int color)
+ {
+ this.color = color;
+ }
+
+ int getTextSize()
+ {
+ return textSize;
+ }
+
+ void setTextSize(int textSize)
+ {
+ this.textSize = textSize;
+ }
+ }
+
+ private messageHolder upperLeft = new messageHolder();
+ private messageHolder upperRight = new messageHolder();
+ private messageHolder center = new messageHolder();
+ private messageHolder lowerLeft = new messageHolder();
+ private messageHolder lowerRight = new messageHolder();
+
+ /**
+ * コンストラクタ
+ *
+ */
+ ShowMessageHolder()
+ {
+ center.setTextSize(24);
}
/**
*
*
*/
- int getSize(MessageArea area)
+ private messageHolder decideHolder(MessageArea area)
{
- int size;
+ messageHolder target;
switch (area)
{
case CENTER:
- size = centerMessageTextSize;
+ target = center;
+ break;
+
+ case UPLEFT:
+ target = upperLeft;
break;
- case UP:
- size = upperMessageTextSize;
+ case UPRIGHT:
+ target = upperRight;
break;
- case LOW:
+ case LOWLEFT:
+ target = lowerLeft;
+ break;
+
+ case LOWRIGHT:
default:
- size = lowerMessageTextSize;
+ target = lowerRight;
break;
}
- return (size);
+ return (target);
}
/**
*
*
*/
- int getColor(MessageArea area)
+ @Override
+ public void setMessageToShow(MessageArea area, int color, int size, String message)
{
- int color;
- switch (area)
- {
- case CENTER:
- color = centerMessageColor;
- break;
+ messageHolder target = decideHolder(area);
+ target.setColor(color);
+ target.setTextSize(size);
+ target.setMessage(message);
+ }
- case UP:
- color = upperMessageColor;
- break;
+ /**
+ *
+ *
+ */
+ int getSize(MessageArea area)
+ {
+ messageHolder target = decideHolder(area);
+ return (target.getTextSize());
+ }
- case LOW:
- default:
- color = lowerMessageColor;
- break;
- }
- return (color);
+ /**
+ *
+ *
+ */
+ int getColor(MessageArea area)
+ {
+ messageHolder target = decideHolder(area);
+ return (target.getColor());
}
/**
*/
String getMessage(MessageArea area)
{
- String message;
- switch (area)
- {
- case CENTER:
- message = centerMessage;
- break;
-
- case UP:
- message = upperMessage;
- break;
-
- case LOW:
- default:
- message = lowerMessage;
- break;
- }
- return (message);
+ messageHolder target = decideHolder(area);
+ return (target.getMessage());
}
}