~rsalveti/qtubuntu-camera/upstream-bump

« back to all changes in this revision

Viewing changes to src/aalimageencodercontrol.cpp

  • Committer: CI bot
  • Author(s): Jim Hodapp
  • Date: 2014-11-05 01:31:18 UTC
  • mfrom: (119.1.2 qtubuntu-camera)
  • Revision ID: ps-jenkins@lists.canonical.com-20141105013118-47z5r3a3a4wp3bkz
Add thumbnail size selection support. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (C) 2013 Canonical, Ltd.
 
2
 * Copyright (C) 2013-2014 Canonical, Ltd.
3
3
 *
4
4
 * This program is free software; you can redistribute it and/or modify
5
5
 * it under the terms of the GNU Lesser General Public License as published by
26
26
AalImageEncoderControl::AalImageEncoderControl(AalCameraService *service, QObject *parent)
27
27
    : QImageEncoderControl(parent),
28
28
      m_service(service),
29
 
      m_currentSize()
 
29
      m_currentSize(),
 
30
      m_currentThumbnailSize()
30
31
{
31
32
}
32
33
 
63
64
    return m_availableSizes;
64
65
}
65
66
 
 
67
QList<QSize> AalImageEncoderControl::supportedThumbnailResolutions(const QImageEncoderSettings &settings, bool *continuous) const
 
68
{
 
69
    Q_UNUSED(continuous);
 
70
    Q_UNUSED(settings);
 
71
 
 
72
    return m_availableThumbnailSizes;
 
73
}
 
74
 
66
75
void AalImageEncoderControl::init(CameraControl *control)
67
76
{
68
77
    Q_ASSERT(control != NULL);
69
78
 
70
79
    if (m_availableSizes.isEmpty()) {
71
 
        android_camera_enumerate_supported_picture_sizes(control, &AalImageEncoderControl::setPictureSizeCb, this);
 
80
        android_camera_enumerate_supported_picture_sizes(control, &AalImageEncoderControl::getPictureSizeCb, this);
 
81
        android_camera_enumerate_supported_thumbnail_sizes(control, &AalImageEncoderControl::getThumbnailSizeCb, this);
72
82
    }
73
83
}
74
84
 
91
101
    android_camera_set_picture_size(cc, size.width(), size.height());
92
102
}
93
103
 
 
104
/*!
 
105
 * \brief AalImageEncoderControl::setThumbnailSize sets the resolution of JPEG thumbnail
 
106
 */
 
107
void AalImageEncoderControl::setThumbnailSize(const QSize &size)
 
108
{
 
109
    CameraControl *cc = m_service->androidControl();
 
110
    if (!cc) {
 
111
        m_currentThumbnailSize = size;
 
112
        return;
 
113
    }
 
114
 
 
115
    if (!m_availableThumbnailSizes.contains(size)) {
 
116
        qWarning() << "Thumbnail size " << size << "is not supported by the camera";
 
117
        qWarning() << "Supported thumbnail sizes are: " << m_availableThumbnailSizes;
 
118
        return;
 
119
    }
 
120
 
 
121
    m_currentThumbnailSize = size;
 
122
 
 
123
    android_camera_set_thumbnail_size(cc, size.width(), size.height());
 
124
}
 
125
 
94
126
void AalImageEncoderControl::resetAllSettings()
95
127
{
96
128
    m_availableSizes.clear();
 
129
    m_availableThumbnailSizes.clear();
97
130
    m_currentSize = QSize();
 
131
    m_currentThumbnailSize = QSize();
98
132
}
99
133
 
100
134
/*!
107
141
        return;
108
142
    }
109
143
    android_camera_set_picture_size(cc, m_currentSize.width(), m_currentSize.height());
110
 
}
111
 
 
112
 
void AalImageEncoderControl::setPictureSizeCb(void *ctx, int width, int height)
113
 
{
114
 
    if (ctx != NULL)
115
 
    {
116
 
        AalImageEncoderControl *self = static_cast<AalImageEncoderControl *>(ctx);
117
 
        self->setPictureSize(width, height);
118
 
    }
119
 
    else
120
 
        qWarning() << "ctx is NULL, cannot set supported camera resolutions." << endl;
121
 
}
122
 
 
123
 
void AalImageEncoderControl::setPictureSize(int width, int height)
 
144
    android_camera_set_thumbnail_size(cc, m_currentThumbnailSize.width(), m_currentThumbnailSize.height());
 
145
}
 
146
 
 
147
void AalImageEncoderControl::getPictureSizeCb(void *ctx, int width, int height)
 
148
{
 
149
    if (ctx != NULL)
 
150
    {
 
151
        AalImageEncoderControl *self = static_cast<AalImageEncoderControl *>(ctx);
 
152
        self->getPictureSize(width, height);
 
153
    }
 
154
    else
 
155
        qWarning() << "ctx is NULL, cannot get supported camera resolutions." << endl;
 
156
}
 
157
 
 
158
void AalImageEncoderControl::getThumbnailSizeCb(void *ctx, int width, int height)
 
159
{
 
160
    if (ctx != NULL)
 
161
    {
 
162
        AalImageEncoderControl *self = static_cast<AalImageEncoderControl *>(ctx);
 
163
        self->getThumbnailSize(width, height);
 
164
    }
 
165
    else
 
166
        qWarning() << "ctx is NULL, cannot get supported thumbnail resolutions." << endl;
 
167
}
 
168
 
 
169
void AalImageEncoderControl::getPictureSize(int width, int height)
124
170
{
125
171
    m_availableSizes.append(QSize(width, height));
126
172
}
 
173
 
 
174
void AalImageEncoderControl::getThumbnailSize(int width, int height)
 
175
{
 
176
    m_availableThumbnailSizes.append(QSize(width, height));
 
177
}