allwinner_a64/android/hardware/aw/camera/SceneFactory/SceneModeFactory.cpp
2018-08-08 17:00:29 +08:00

84 lines
No EOL
2.1 KiB
C++

#include "SceneModeFactory.h"
#define LOG_TAG "SceneModeFactory"
namespace android {
ISceneMode* SceneModeFactory::CreateSceneMode(int SceneMode)
{
ISceneMode* mode = NULL;
mSceneMode = SceneMode;
switch(mSceneMode)
{
case SCENE_FACTORY_MODE_HDR:
mode = HDRSceneModeGetInstance();
if(mode == NULL)
ALOGE("Create HDR Scene Mode failed!");
break;
case SCENE_FACTORY_MODE_NIGHT:
mode = NightSceneModeGetInstance();
if(mode == NULL)
ALOGE("Create Night Scene Mode failed!");
break;
default:
break;
}
return mode;
}
void SceneModeFactory::DestorySceneMode(ISceneMode* mode)
{
//destory all mode
ALOGD("DestorySceneMode %d",mSceneMode);
if(mode == NULL){
mSceneMode = SCENE_FACTORY_MODE_AUTO;
if(mHDRSceneMode != NULL){
mHDRSceneMode->ReleaseSceneMode();
delete(mHDRSceneMode);
mHDRSceneMode = NULL;
}
//Night mode
if(mNightSceneMode != NULL){
mNightSceneMode->ReleaseSceneMode();
delete(mNightSceneMode);
mNightSceneMode = NULL;
}
return;
}
//just destory the HDR mode
switch(mode->GetCurrentSceneMode())
{
case SCENE_FACTORY_MODE_HDR:
if(mHDRSceneMode != NULL){
delete(mHDRSceneMode);
mHDRSceneMode = NULL;
}
break;
case SCENE_FACTORY_MODE_NIGHT:
if(mNightSceneMode != NULL){
delete(mNightSceneMode);
mNightSceneMode = NULL;
}
break;
default:
break;
}
mSceneMode = SCENE_FACTORY_MODE_AUTO;
return;
}
HDRSceneMode* SceneModeFactory::HDRSceneModeGetInstance()
{
if(mHDRSceneMode == NULL)
mHDRSceneMode = new HDRSceneMode();
return mHDRSceneMode;
}
NightSceneMode* SceneModeFactory::NightSceneModeGetInstance()
{
if(mNightSceneMode == NULL)
mNightSceneMode = new NightSceneMode();
return mNightSceneMode;
}
};