sl@0
|
1 |
// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
|
sl@0
|
2 |
// All rights reserved.
|
sl@0
|
3 |
// This component and the accompanying materials are made available
|
sl@0
|
4 |
// under the terms of "Eclipse Public License v1.0"
|
sl@0
|
5 |
// which accompanies this distribution, and is available
|
sl@0
|
6 |
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
sl@0
|
7 |
//
|
sl@0
|
8 |
// Initial Contributors:
|
sl@0
|
9 |
// Nokia Corporation - initial contribution.
|
sl@0
|
10 |
//
|
sl@0
|
11 |
// Contributors:
|
sl@0
|
12 |
//
|
sl@0
|
13 |
// Description:
|
sl@0
|
14 |
//
|
sl@0
|
15 |
|
sl@0
|
16 |
/**
|
sl@0
|
17 |
@file
|
sl@0
|
18 |
@publishedPartner
|
sl@0
|
19 |
@released
|
sl@0
|
20 |
*/
|
sl@0
|
21 |
|
sl@0
|
22 |
#ifndef ECAMIMAGEPROCESSINGINTF_H
|
sl@0
|
23 |
#define ECAMIMAGEPROCESSINGINTF_H
|
sl@0
|
24 |
|
sl@0
|
25 |
#include <ecamimageprocessing.h>
|
sl@0
|
26 |
#include <ecam/ecamadvsettingsintfuids.hrh>
|
sl@0
|
27 |
|
sl@0
|
28 |
/** This is the UID which is used to obtain the interface MCameraImageProcessing, via the
|
sl@0
|
29 |
CCamera::CustomInterface() call, which provides implementation of the M-class interface. */
|
sl@0
|
30 |
static const TUid KECamMCameraImageProcessingUid = {KECamMCameraImageProcessingUidValue};
|
sl@0
|
31 |
|
sl@0
|
32 |
/**
|
sl@0
|
33 |
This is the UID which is used to obtain the interface MCameraImageProcessing2, via the
|
sl@0
|
34 |
CCamera::CustomInterface() call, which provides implementation of the M-class interface.
|
sl@0
|
35 |
*/
|
sl@0
|
36 |
static const TUid KECamMCameraImageProcessing2Uid = {KECamMCameraImageProcessing2UidValue};
|
sl@0
|
37 |
|
sl@0
|
38 |
/**
|
sl@0
|
39 |
This is the UID which is used to obtain the interface MCameraImageProcessing3, via the
|
sl@0
|
40 |
CCamera::CustomInterface() call, which provides implementation of the M-class interface.
|
sl@0
|
41 |
@publishedPartner
|
sl@0
|
42 |
@prototype
|
sl@0
|
43 |
*/
|
sl@0
|
44 |
static const TUid KECamMCameraImageProcessing3Uid = {KECamMCameraImageProcessing3UidValue};
|
sl@0
|
45 |
|
sl@0
|
46 |
|
sl@0
|
47 |
/**
|
sl@0
|
48 |
Mixin class for implementation by providers of the Image Processing Camera Extension API.
|
sl@0
|
49 |
|
sl@0
|
50 |
This class is used to perform image processing operations on the camera.
|
sl@0
|
51 |
These include brightness, contrast, gamma, hue, sharpness and saturation adjustments. The client is also
|
sl@0
|
52 |
able to perform simple image transformations like cropping, rotation, mirroring, scaling, noise reduction and glare reduction. .
|
sl@0
|
53 |
When an operation selection is complete, all clients are notified with the respective event UID.
|
sl@0
|
54 |
|
sl@0
|
55 |
As often cameras may support only a subset of discrete values of the allowed range,
|
sl@0
|
56 |
the API allows the client to retrieve those and use them explicitly.
|
sl@0
|
57 |
|
sl@0
|
58 |
@note it is assumed that setting a new value for a transformations(transform, adjust, effect) effectively
|
sl@0
|
59 |
activates the transformations. Whilst for effects and adjustments there is always a value, transforms
|
sl@0
|
60 |
may have a dependency on other parameters and
|
sl@0
|
61 |
crop - requires setting of source rectangle.
|
sl@0
|
62 |
scale - will use setting of source rectangle, and the magnification factor is
|
sl@0
|
63 |
determined by the source rectangle and the output size. This is always magnification.
|
sl@0
|
64 |
if a value is set, it is assumed to be a scaling factor multiplied by KECamFineResolutionFactor
|
sl@0
|
65 |
and set to integer.
|
sl@0
|
66 |
mirror - values of TMirror type.
|
sl@0
|
67 |
rotation - the angle in degrees.
|
sl@0
|
68 |
noise reduction - TNoiseReduction.
|
sl@0
|
69 |
glare removal - TGlareReduction.
|
sl@0
|
70 |
|
sl@0
|
71 |
Example
|
sl@0
|
72 |
Let's assume that an application would need to check whether gamma correction is
|
sl@0
|
73 |
supported on a particular platform. After obtaining a valid pointer to the interface,
|
sl@0
|
74 |
it would call GetSupportedTransformationsL() to obtain the list of the supported
|
sl@0
|
75 |
tranformations and check whether KUidECamEventImageProcessingAdjustGamma
|
sl@0
|
76 |
is in the list. If it is then call SetTranformationValue(KUidECamEventImageProcessingAdjustGamma, 200);
|
sl@0
|
77 |
to set the new value. A notification will be generated to the client to indicate success.
|
sl@0
|
78 |
|
sl@0
|
79 |
@publishedPartner
|
sl@0
|
80 |
@released
|
sl@0
|
81 |
*/
|
sl@0
|
82 |
class MCameraImageProcessing
|
sl@0
|
83 |
{
|
sl@0
|
84 |
|
sl@0
|
85 |
public:
|
sl@0
|
86 |
|
sl@0
|
87 |
/**
|
sl@0
|
88 |
Releases the interface.
|
sl@0
|
89 |
*/
|
sl@0
|
90 |
virtual void Release()=0;
|
sl@0
|
91 |
|
sl@0
|
92 |
/** Get all transformations supported on the camera.
|
sl@0
|
93 |
|
sl@0
|
94 |
@param aTransformations
|
sl@0
|
95 |
An empty RArray of TUids to store the UIDs of the supported transformations.
|
sl@0
|
96 |
|
sl@0
|
97 |
@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
|
sl@0
|
98 |
*/
|
sl@0
|
99 |
virtual void GetSupportedTransformationsL(RArray<TUid>& aTransformations) const=0;
|
sl@0
|
100 |
|
sl@0
|
101 |
/** Get currently active transformations on the camera.
|
sl@0
|
102 |
|
sl@0
|
103 |
@param aTransformations
|
sl@0
|
104 |
An empty RArray of TUids to store the UIDs of the supported transformations.
|
sl@0
|
105 |
|
sl@0
|
106 |
@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
|
sl@0
|
107 |
*/
|
sl@0
|
108 |
virtual void GetActiveTransformationsL(RArray<TUid>& aTransformations) const=0;
|
sl@0
|
109 |
|
sl@0
|
110 |
/** Get all values supported by an active transformation.
|
sl@0
|
111 |
|
sl@0
|
112 |
@param aTransformation
|
sl@0
|
113 |
The UID of active transform for which values are requested.
|
sl@0
|
114 |
|
sl@0
|
115 |
@param aValues
|
sl@0
|
116 |
An array of integers to represent the values for the requested transformation.
|
sl@0
|
117 |
|
sl@0
|
118 |
@param aInfo
|
sl@0
|
119 |
Additional information describing the returned array of values.
|
sl@0
|
120 |
|
sl@0
|
121 |
@note depending on the value of aInfo parameter, same array of values may describe
|
sl@0
|
122 |
different set of values.
|
sl@0
|
123 |
When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive,
|
sl@0
|
124 |
and the corresponding getter/setters for this feature should not be used.
|
sl@0
|
125 |
|
sl@0
|
126 |
@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
|
sl@0
|
127 |
*/
|
sl@0
|
128 |
virtual void GetTransformationSupportedValuesL(TUid aTransformation, RArray<TInt>& aValues, TValueInfo& aInfo) const=0;
|
sl@0
|
129 |
|
sl@0
|
130 |
/**
|
sl@0
|
131 |
@deprecated Use TInt GetTransformationValue(TUid aTransformation, TInt& aTransformationValue);
|
sl@0
|
132 |
|
sl@0
|
133 |
Get the current value of a transformation
|
sl@0
|
134 |
|
sl@0
|
135 |
@param aTransformation
|
sl@0
|
136 |
The UID of the transformation
|
sl@0
|
137 |
|
sl@0
|
138 |
@return The integer value of the tranformation.
|
sl@0
|
139 |
*/
|
sl@0
|
140 |
virtual TInt TransformationValue(TUid aTransformation) const=0;
|
sl@0
|
141 |
|
sl@0
|
142 |
/** Get the current value of a transformation
|
sl@0
|
143 |
|
sl@0
|
144 |
@param aTransformation
|
sl@0
|
145 |
The UID of the transformation
|
sl@0
|
146 |
|
sl@0
|
147 |
@param aTransformationValue
|
sl@0
|
148 |
Reference to the integer value of the tranformation.
|
sl@0
|
149 |
|
sl@0
|
150 |
@return system wide error code.
|
sl@0
|
151 |
*/
|
sl@0
|
152 |
virtual TInt GetTransformationValue(TUid aTransformation, TInt& aTransformationValue) const=0;
|
sl@0
|
153 |
|
sl@0
|
154 |
/** Set new value for a transformation.
|
sl@0
|
155 |
A notification event with the transformation UID is sent to
|
sl@0
|
156 |
all clients. UIDs are in the form KUidECamEventImageProcessingXXXX.
|
sl@0
|
157 |
|
sl@0
|
158 |
@param aTransformation
|
sl@0
|
159 |
The UID of the transformation
|
sl@0
|
160 |
|
sl@0
|
161 |
@param aValue
|
sl@0
|
162 |
The integer value of the tranformation.
|
sl@0
|
163 |
*/
|
sl@0
|
164 |
virtual void SetTransformationValue(TUid aTransformation, TInt aValue)=0;
|
sl@0
|
165 |
|
sl@0
|
166 |
/** Get the sequence of all active transforms, ordered in order of execution.
|
sl@0
|
167 |
|
sl@0
|
168 |
@param aTransformSequence
|
sl@0
|
169 |
an empty array to be populated with sequence of transform UIDs,
|
sl@0
|
170 |
where transform entries with smaller index are executed earlier.
|
sl@0
|
171 |
|
sl@0
|
172 |
@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
|
sl@0
|
173 |
*/
|
sl@0
|
174 |
virtual void GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const=0;
|
sl@0
|
175 |
|
sl@0
|
176 |
/**
|
sl@0
|
177 |
Set the order of all active transform in terms of execution. The transforms with
|
sl@0
|
178 |
smaller index are executed earlier.
|
sl@0
|
179 |
|
sl@0
|
180 |
@param aTransformSequence
|
sl@0
|
181 |
The list of ordered transforms, where transforms with smaller
|
sl@0
|
182 |
index are executed earlier.
|
sl@0
|
183 |
|
sl@0
|
184 |
@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
|
sl@0
|
185 |
*/
|
sl@0
|
186 |
virtual void SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence)=0;
|
sl@0
|
187 |
|
sl@0
|
188 |
/**
|
sl@0
|
189 |
Set the source rectangle for KUidECamEventImageProcessingTransformScale or
|
sl@0
|
190 |
KUidECamEventImageProcessingTransformCrop.
|
sl@0
|
191 |
The coordinates should fall within the current image rectangle. The result
|
sl@0
|
192 |
is always a logical AND operation between the two rectangles.
|
sl@0
|
193 |
|
sl@0
|
194 |
@param aRect
|
sl@0
|
195 |
a reference to TRect object which describes the coordinates of the
|
sl@0
|
196 |
area of interest.
|
sl@0
|
197 |
*/
|
sl@0
|
198 |
virtual void SetSourceRect(const TRect& aRect)=0;
|
sl@0
|
199 |
|
sl@0
|
200 |
/**
|
sl@0
|
201 |
Get the source rectangle for KUidECamEventImageProcessingTransformScale or
|
sl@0
|
202 |
KUidECamEventImageProcessingTransformCrop.
|
sl@0
|
203 |
The coordinates should fall within the current image rectangle. The result
|
sl@0
|
204 |
is always a logical AND operation between the two rectangles.
|
sl@0
|
205 |
|
sl@0
|
206 |
@param aRect
|
sl@0
|
207 |
a reference to a TRect object to hold the current source rectangle
|
sl@0
|
208 |
coordinates. If it has not been set, the coordinates match these of
|
sl@0
|
209 |
the whole image.
|
sl@0
|
210 |
*/
|
sl@0
|
211 |
virtual void GetSourceRect(TRect& aRect) const=0;
|
sl@0
|
212 |
};
|
sl@0
|
213 |
|
sl@0
|
214 |
/**
|
sl@0
|
215 |
Mixin class for implementation of extended features like color swap and color accent processing
|
sl@0
|
216 |
by providers of the Image Processing Camera Extension API.
|
sl@0
|
217 |
|
sl@0
|
218 |
@publishedPartner
|
sl@0
|
219 |
@released
|
sl@0
|
220 |
*/
|
sl@0
|
221 |
class MCameraImageProcessing2
|
sl@0
|
222 |
{
|
sl@0
|
223 |
|
sl@0
|
224 |
public:
|
sl@0
|
225 |
|
sl@0
|
226 |
/**
|
sl@0
|
227 |
Releases the interface.
|
sl@0
|
228 |
*/
|
sl@0
|
229 |
virtual void Release()=0;
|
sl@0
|
230 |
|
sl@0
|
231 |
/**
|
sl@0
|
232 |
Retrieves the maximum number of simultaneous color swapping possible.
|
sl@0
|
233 |
|
sl@0
|
234 |
@param aConcurrentColorSwappingSupported
|
sl@0
|
235 |
Retrieves the number of simultaneous color swapping supported.
|
sl@0
|
236 |
Retrieves 0 when swapping feature is not supported.
|
sl@0
|
237 |
|
sl@0
|
238 |
@leave May leave as a result of some error.
|
sl@0
|
239 |
*/
|
sl@0
|
240 |
virtual void GetConcurrentColorSwappingsSupportedL(TInt& aConcurrentColorSwappingSupported) const=0;
|
sl@0
|
241 |
|
sl@0
|
242 |
/**
|
sl@0
|
243 |
Retrieves the color swapping capabilites per entry, if different entries have different capabilities
|
sl@0
|
244 |
otherwise the same capabilities retrieved for a particular entry can be assumed to be valid for every entry
|
sl@0
|
245 |
|
sl@0
|
246 |
@param aIndex
|
sl@0
|
247 |
This is a value from 0 to numOfSimultaneousColorSwappings -1. Color swapping capabilities specific to
|
sl@0
|
248 |
a particular entry are retrieved. If uniform capability exists for every entry, then this method need not
|
sl@0
|
249 |
be called per entry.
|
sl@0
|
250 |
|
sl@0
|
251 |
@param aColorSwapCapabilities
|
sl@0
|
252 |
This retrieves the color swap capabilities.
|
sl@0
|
253 |
|
sl@0
|
254 |
@leave May leave as a result of some error.
|
sl@0
|
255 |
*/
|
sl@0
|
256 |
virtual void GetColorSwapCapabilitiesL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationCapabilities& aColorSwapCapabilities) const=0;
|
sl@0
|
257 |
|
sl@0
|
258 |
/**
|
sl@0
|
259 |
Set the color swap entries
|
sl@0
|
260 |
|
sl@0
|
261 |
@param aIndex
|
sl@0
|
262 |
This is a value from 0 to numOfSimultaneousColorSwappings -1. This helps in managing the limited no. of
|
sl@0
|
263 |
simultaneous color swaps. If parameters are already set for the given entry, then it's up to the implementation
|
sl@0
|
264 |
to replace the existing one or discard it.
|
sl@0
|
265 |
|
sl@0
|
266 |
@param aColorSwapParameters
|
sl@0
|
267 |
The parameters necessary to define clearly the color swapping operation for the given entry.
|
sl@0
|
268 |
iEntryStatus has to be updated by the implementation as per the result of the setting operation.
|
sl@0
|
269 |
So, iEntryStatus value is redundant at this point.
|
sl@0
|
270 |
|
sl@0
|
271 |
@note Triggers KUidECamEventCIPSetColorSwapEntry to all MCameraObserver2 clients of the camera.
|
sl@0
|
272 |
HandleEvent is used to report the result or any possible error. TECAMEvent2 class should
|
sl@0
|
273 |
be used in order to provide the entry no. of the color being set.
|
sl@0
|
274 |
Implementation Hint: On success, entry status (iEntryStatus) for that entry should
|
sl@0
|
275 |
be set to TValueInfo::EDiscreteSteps and saved on the implementation side.
|
sl@0
|
276 |
*/
|
sl@0
|
277 |
virtual void SetColorSwapEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& aColorSwapParameters)=0;
|
sl@0
|
278 |
|
sl@0
|
279 |
/**
|
sl@0
|
280 |
Removes the color swap entry corresponding to the given index
|
sl@0
|
281 |
|
sl@0
|
282 |
@param aIndex
|
sl@0
|
283 |
This gives the color swapping entry to be removed.
|
sl@0
|
284 |
|
sl@0
|
285 |
@note Triggers KUidECamEventCIPRemoveColorSwapEntry to all MCameraObserver2 clients of the camera.
|
sl@0
|
286 |
HandleEvent is used to report the result or any possible error. TECAMEvent2 class should be
|
sl@0
|
287 |
used in order to provide the entry no. of the color being removed.
|
sl@0
|
288 |
Implementation Hint: On success, entry status (iEntryStatus) for that entry should
|
sl@0
|
289 |
be set to TValueInfo::ENotActive and saved on the implementation side.
|
sl@0
|
290 |
*/
|
sl@0
|
291 |
virtual void RemoveColorSwapEntry(TInt aIndex)=0;
|
sl@0
|
292 |
|
sl@0
|
293 |
/**
|
sl@0
|
294 |
Get the details of the color swap entry corresponding to the given index
|
sl@0
|
295 |
|
sl@0
|
296 |
@param aIndex
|
sl@0
|
297 |
This gives the color swapping entry whose information has to be retrieved.
|
sl@0
|
298 |
|
sl@0
|
299 |
@param aColorSwapParameters
|
sl@0
|
300 |
This contains the parameters currently being used by the color swapping operation for the given entry.
|
sl@0
|
301 |
|
sl@0
|
302 |
@leave May leave as a result of some error.
|
sl@0
|
303 |
*/
|
sl@0
|
304 |
virtual void GetColorSwapEntryL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationEntry& aColorSwapParameters) const=0;
|
sl@0
|
305 |
|
sl@0
|
306 |
/**
|
sl@0
|
307 |
Starts the color swapping process after taking into account the color swap entries updated up to this point.
|
sl@0
|
308 |
|
sl@0
|
309 |
@note Triggers KUidECamEventCIPStartColorSwap to all MCameraObserver2
|
sl@0
|
310 |
clients of the camera. HandleEvent is used to report the result or any possible error.
|
sl@0
|
311 |
One possible error case is when more than one entry describe the same color source.
|
sl@0
|
312 |
New ecam error KErrECamColorOperationConflict used in such a case.
|
sl@0
|
313 |
*/
|
sl@0
|
314 |
virtual void StartColorSwapping()=0;
|
sl@0
|
315 |
|
sl@0
|
316 |
/**
|
sl@0
|
317 |
Cancel the color swapping process.
|
sl@0
|
318 |
|
sl@0
|
319 |
@leave May leave as a result of some error.
|
sl@0
|
320 |
|
sl@0
|
321 |
@note Used to cancel the color swapping process which might have been just started.
|
sl@0
|
322 |
If the issued StartColorSwappingL() gets cancelled, its event should report KErrCancel.
|
sl@0
|
323 |
*/
|
sl@0
|
324 |
virtual void CancelColorSwappingL()=0;
|
sl@0
|
325 |
|
sl@0
|
326 |
/**
|
sl@0
|
327 |
Retrieves the maximum number of color entries on which simultaneous color accent process is possible.
|
sl@0
|
328 |
|
sl@0
|
329 |
@param aConcurrentColorAccentSupported
|
sl@0
|
330 |
Retrieves the number of color entries on which simultaneous color accent process is possible.
|
sl@0
|
331 |
Retrieves 0 when color accent process is not supported.
|
sl@0
|
332 |
|
sl@0
|
333 |
@leave May leave as a result of some error.
|
sl@0
|
334 |
*/
|
sl@0
|
335 |
virtual void GetConcurrentColorAccentSupportedL(TInt& aConcurrentColorAccentSupported) const=0;
|
sl@0
|
336 |
|
sl@0
|
337 |
/**
|
sl@0
|
338 |
Retrieves the color accent capabilites per entry, if different entries have different capabilities
|
sl@0
|
339 |
otherwise the same capabilities retrieved for a particular entry can be assumed to be valid for every entry
|
sl@0
|
340 |
|
sl@0
|
341 |
@param aIndex
|
sl@0
|
342 |
This is a value from 0 to numOfSimultaneousColorAccent -1. Color accent capabilities specific to
|
sl@0
|
343 |
a particular entry are retrieved. If uniform capability exists for every entry, then this method need not
|
sl@0
|
344 |
be called per entry.
|
sl@0
|
345 |
|
sl@0
|
346 |
@param aColorAccentCapabilities
|
sl@0
|
347 |
This retrieves the color accent capabilities.
|
sl@0
|
348 |
|
sl@0
|
349 |
@leave May leave as a result of some error.
|
sl@0
|
350 |
*/
|
sl@0
|
351 |
virtual void GetColorAccentCapabilitiesL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationCapabilities& aColorAccentCapabilities) const=0;
|
sl@0
|
352 |
|
sl@0
|
353 |
/**
|
sl@0
|
354 |
Set the color accent entries
|
sl@0
|
355 |
|
sl@0
|
356 |
@param aIndex
|
sl@0
|
357 |
This is a value from 0 to numOfSimultaneousColorAccent -1. This helps in managing the limited no. of
|
sl@0
|
358 |
simultaneous color accent. If parameters are already set for the given entry, then it's up to the implementation
|
sl@0
|
359 |
to replace the existing one or discard it.
|
sl@0
|
360 |
|
sl@0
|
361 |
@param aColorAccentParameters
|
sl@0
|
362 |
The parameters necessary to define clearly the color accent operation for the given entry.
|
sl@0
|
363 |
iEntryStatus has to be updated by the implementation as per the result of the setting operation.
|
sl@0
|
364 |
So, iEntryStatus value is redundant at this point. The parameters defined for target colors in
|
sl@0
|
365 |
TColorOperationEntry are redundant for color accent.
|
sl@0
|
366 |
|
sl@0
|
367 |
@note Triggers KUidECamEventCIPSetColorAccentEntry to all MCameraObserver2 clients of the camera.
|
sl@0
|
368 |
HandleEvent is used to report the result or any possible error. TECAMEvent2 class should be
|
sl@0
|
369 |
used in order to provide the entry no. of the color being set.
|
sl@0
|
370 |
Implementation Hint: On success, entry status (iEntryStatus) for that entry should
|
sl@0
|
371 |
be set to TValueInfo::EDiscreteSteps and saved on the implementation side.
|
sl@0
|
372 |
*/
|
sl@0
|
373 |
virtual void SetColorAccentEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& aColorAccentParameters)=0;
|
sl@0
|
374 |
|
sl@0
|
375 |
/**
|
sl@0
|
376 |
Removes the color accent entry corresponding to the given index
|
sl@0
|
377 |
|
sl@0
|
378 |
@param aIndex
|
sl@0
|
379 |
This gives the color accent entry to be removed.
|
sl@0
|
380 |
|
sl@0
|
381 |
@note Triggers KUidECamEventCIPRemoveColorAccentEntry to all MCameraObserver2 clients of the camera.
|
sl@0
|
382 |
HandleEvent is used to report the result or any possible error. TECAMEvent2 class should be
|
sl@0
|
383 |
used in order to provide the entry no. of the color being removed.
|
sl@0
|
384 |
Implementation Hint: On success, entry status (iEntryStatus) for that entry should
|
sl@0
|
385 |
be set to TValueInfo::ENotActive and saved on the implementation side.
|
sl@0
|
386 |
*/
|
sl@0
|
387 |
virtual void RemoveColorAccentEntry(TInt aIndex)=0;
|
sl@0
|
388 |
|
sl@0
|
389 |
/**
|
sl@0
|
390 |
Get the details of the color accent entry corresponding to the given index
|
sl@0
|
391 |
|
sl@0
|
392 |
@param aIndex
|
sl@0
|
393 |
This gives the color accent entry whose information has to be retrieved.
|
sl@0
|
394 |
|
sl@0
|
395 |
@param aColorAccentParameters
|
sl@0
|
396 |
This contains the parameters currently being used by the color accent operation for the given entry.
|
sl@0
|
397 |
The parameters defined for target colors in TColorOperationEntry are redundant for color accent.
|
sl@0
|
398 |
|
sl@0
|
399 |
@leave May leave as a result of some error.
|
sl@0
|
400 |
*/
|
sl@0
|
401 |
virtual void GetColorAccentEntryL(TInt aIndex, CCamera::CCameraImageProcessing::TColorOperationEntry& aColorAccentParameters) const=0;
|
sl@0
|
402 |
|
sl@0
|
403 |
/**
|
sl@0
|
404 |
Starts the color accent process after taking into account the color accent entries updated up to this point.
|
sl@0
|
405 |
|
sl@0
|
406 |
@note Triggers KUidECamEventCIPStartColorAccent to all MCameraObserver2
|
sl@0
|
407 |
clients of the camera. HandleEvent is used to report the result or any possible error.
|
sl@0
|
408 |
*/
|
sl@0
|
409 |
virtual void StartColorAccent()=0;
|
sl@0
|
410 |
|
sl@0
|
411 |
/**
|
sl@0
|
412 |
Cancel the color accent process.
|
sl@0
|
413 |
|
sl@0
|
414 |
@leave May leave as a result of some error.
|
sl@0
|
415 |
|
sl@0
|
416 |
@note Used to cancel the color accent process which might have been just started.
|
sl@0
|
417 |
If the issued StartColorAccentL() gets cancelled, its event should report KErrCancel.
|
sl@0
|
418 |
*/
|
sl@0
|
419 |
virtual void CancelColorAccentL()=0;
|
sl@0
|
420 |
};
|
sl@0
|
421 |
|
sl@0
|
422 |
/**
|
sl@0
|
423 |
Mixin class for implementation of extended features like custom orientation and event filtering
|
sl@0
|
424 |
by providers of the Image Processing Camera Extension API.
|
sl@0
|
425 |
|
sl@0
|
426 |
@publishedPartner
|
sl@0
|
427 |
@prototype
|
sl@0
|
428 |
*/
|
sl@0
|
429 |
class MCameraImageProcessing3
|
sl@0
|
430 |
{
|
sl@0
|
431 |
|
sl@0
|
432 |
public:
|
sl@0
|
433 |
|
sl@0
|
434 |
/**
|
sl@0
|
435 |
Releases the interface.
|
sl@0
|
436 |
*/
|
sl@0
|
437 |
virtual void Release()=0;
|
sl@0
|
438 |
|
sl@0
|
439 |
/**
|
sl@0
|
440 |
Retrieves the supported options for a particular orientation reference.
|
sl@0
|
441 |
|
sl@0
|
442 |
@param aOrientationReference
|
sl@0
|
443 |
A TOrientationReference for which supported relative custom orientation have to retrieved.
|
sl@0
|
444 |
|
sl@0
|
445 |
@param aSupportedRelativeRotation
|
sl@0
|
446 |
A bitfield which retrieves the supported TRelativeRotation for 'aOrientationReference'
|
sl@0
|
447 |
|
sl@0
|
448 |
@param aSupportedRelativeMirroring
|
sl@0
|
449 |
A bitfield which retrieves the supported TRelativeMirror for 'aOrientationReference'
|
sl@0
|
450 |
|
sl@0
|
451 |
@param aSupportedRelativeFlipping
|
sl@0
|
452 |
A bitfield which retrieves the supported TRelativeFlipping for 'aOrientationReference'
|
sl@0
|
453 |
|
sl@0
|
454 |
@leave May leave with any error code.
|
sl@0
|
455 |
*/
|
sl@0
|
456 |
virtual void GetSupportedRelativeOrientationOptionsL(CCamera::CCameraImageProcessing::TOrientationReference aOrientationReference,
|
sl@0
|
457 |
TUint& aSupportedRelativeRotation, TUint& aSupportedRelativeMirroring, TUint& aSupportedRelativeFlipping) const=0;
|
sl@0
|
458 |
|
sl@0
|
459 |
/**
|
sl@0
|
460 |
Retrieves the options which is being used for the current orientation reference.
|
sl@0
|
461 |
|
sl@0
|
462 |
@param aOrientationReference
|
sl@0
|
463 |
A TOrientationReference which is the current orientation reference being used.
|
sl@0
|
464 |
|
sl@0
|
465 |
@param aRelativeRotation
|
sl@0
|
466 |
A TRelativeRotation which is the current relative rotation being used with aOrientationReference.
|
sl@0
|
467 |
|
sl@0
|
468 |
@param aRelativeMirror
|
sl@0
|
469 |
A TRelativeMirror which is the current relative mirroring being used with aOrientationReference.
|
sl@0
|
470 |
|
sl@0
|
471 |
@param aRelativeFlipping
|
sl@0
|
472 |
A TRelativeFlipping which is the current relative flipping being used with aOrientationReference.
|
sl@0
|
473 |
|
sl@0
|
474 |
@leave May leave with any error code.
|
sl@0
|
475 |
*/
|
sl@0
|
476 |
virtual void GetCurrentRelativeOrientationOptionsL(CCamera::CCameraImageProcessing::TOrientationReference& aOrientationReference,
|
sl@0
|
477 |
CCamera::CCameraImageProcessing::TRelativeRotation& aRelativeRotation,
|
sl@0
|
478 |
CCamera::CCameraImageProcessing::TRelativeMirror& aRelativeMirror,
|
sl@0
|
479 |
CCamera::CCameraImageProcessing::TRelativeFlipping& aRelativeFlipping) const=0;
|
sl@0
|
480 |
|
sl@0
|
481 |
/**
|
sl@0
|
482 |
Sets the options which would be used with the desired orientation reference.
|
sl@0
|
483 |
|
sl@0
|
484 |
@param aOrientationReference
|
sl@0
|
485 |
The desired TOrientationReference.
|
sl@0
|
486 |
|
sl@0
|
487 |
@param aRelativeRotation
|
sl@0
|
488 |
The desired TRelativeRotation which would be used with 'aOrientationReference'.
|
sl@0
|
489 |
|
sl@0
|
490 |
@param TRelativeMirror
|
sl@0
|
491 |
The desired TRelativeMirror which would be used with 'aOrientationReference'
|
sl@0
|
492 |
|
sl@0
|
493 |
@param TRelativeFlipping
|
sl@0
|
494 |
The desired TRelativeFlipping which would be used with 'aOrientationReference'
|
sl@0
|
495 |
|
sl@0
|
496 |
@note Event KUidECamEventImageProcessingTransformRelativeOrientation is used to notify clients about relative
|
sl@0
|
497 |
custom orientation setting operation.
|
sl@0
|
498 |
|
sl@0
|
499 |
@note If the current picture orientation (Refer CCamera::CCameraAdvancedSettings::TPictureOrientation) is not possible
|
sl@0
|
500 |
to be achieved with the relative custom orientation, event KUidECamEventPictureOrientationUnachievable will be
|
sl@0
|
501 |
notified to the client.
|
sl@0
|
502 |
|
sl@0
|
503 |
@note If the dimension of the image gets changed by the desired relative orientation options, notification
|
sl@0
|
504 |
KUidECamEventCameraSettingImageSize will be notified to the client.
|
sl@0
|
505 |
*/
|
sl@0
|
506 |
virtual void SetRelativeOrientationOptions(CCamera::CCameraImageProcessing::TOrientationReference aOrientationReference,
|
sl@0
|
507 |
CCamera::CCameraImageProcessing::TRelativeRotation aRelativeRotation,
|
sl@0
|
508 |
CCamera::CCameraImageProcessing::TRelativeMirror aRelativeMirror,
|
sl@0
|
509 |
CCamera::CCameraImageProcessing::TRelativeFlipping aRelativeFlipping) const=0;
|
sl@0
|
510 |
};
|
sl@0
|
511 |
|
sl@0
|
512 |
#endif // ECAMIMAGEPROCESSINGINTF_H
|