os/mm/imagingandcamerafws/camerafw/Include/ECam/ecamimageprocessingintf.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200 (2014-06-10)
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
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