b46348af83eff3e303a540c20db85e05b74190e1
[harmattan/cameraplus] / lib / qtcamviewfinderrenderer.cpp
1 #include "qtcamviewfinderrenderer.h"
2 #include "qtcamconfig.h"
3 #include <QMap>
4 #include <QDebug>
5
6 static QMap<QString, QMetaObject> _renderers;
7
8 QtCamViewfinderRenderer::QtCamViewfinderRenderer(QtCamConfig *config, QObject *parent) :
9   QObject(parent) {
10
11   Q_UNUSED(config);
12 }
13
14 QtCamViewfinderRenderer::~QtCamViewfinderRenderer() {
15
16 }
17
18 QtCamViewfinderRenderer *QtCamViewfinderRenderer::create(QtCamConfig *config, QObject *parent) {
19   QString key = config->viewfinderRenderer();
20   if (!_renderers.contains(key)) {
21     qCritical() << "Unknown renderer" << key << "will fallback to" << RENDERER_TYPE_GENERIC;
22     key = RENDERER_TYPE_GENERIC;
23   }
24
25   QObject *obj = _renderers[key].newInstance(Q_ARG(QtCamConfig *, config),
26                                              Q_ARG(QObject *, parent));
27
28   if (!obj) {
29     qCritical() << "Failed to create renderer" << key;
30     return 0;
31   }
32
33   return dynamic_cast<QtCamViewfinderRenderer *>(obj);
34 }
35
36 int QtCamViewfinderRenderer::registerRenderer(const QString& key, const QMetaObject& meta) {
37   _renderers[key] = meta;
38   return _renderers.size() - 1;
39 }