00001
00002
00003
00004
00005 #ifndef __IMAGECONVERTER_H__
00006 #define __IMAGECONVERTER_H__
00007
00008 #include <e32std.h>
00009 #include <e32base.h>
00010 #include <f32file.h>
00011 #include <ImageConversion.h>
00012 #include <aknglobalnote.h>
00013
00014 class CFbsBitmap;
00015 class CBitmapRotator;
00016 class CBitmapScaler;
00017
00018 class MConverterController
00019 {
00020 public:
00021 virtual void NotifyCompletion( TInt aErr, const TDesC& aMsg ) = 0;
00022 virtual TBool IsAnimating() = 0;
00023 };
00024
00025
00026 enum TState
00027 {
00028 EIdle = 0,
00029 EDecoding,
00030 EEncoding,
00031 ERotating,
00032 EScaling
00033 };
00034
00035 class CImageConverterEngine : public CActive
00036 {
00037
00038 public:
00039
00040 enum TDirection
00041 {
00042 EClockwise90 = 0,
00043 EAntiClockwise90
00044 };
00045
00046 public:
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 static CImageConverterEngine* NewL( MConverterController* aController );
00064
00065 ~CImageConverterEngine();
00066
00067 public:
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 void StartToDecodeL( TFileName& aFileName );
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 void StartToEncodeL( TFileName& aFileName,
00096 TUid aImageType, TUid aImageSubType );
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111 CFrameInfoStrings* GetImageInfoL();
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 static void GetEncoderImageTypesL(
00126 RImageTypeDescriptionArray& aImageTypeArray );
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139 void Rotate( TDirection aDirection );
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153 TInt Scale( TInt aPercent );
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166 CFbsBitmap* GetBitmap();
00167
00168 void ShowProgress();
00169 void CancelProgress();
00170
00171 TBool CanDownScaleMore();
00172
00173 inline TState EngineState(){return iState;};
00174
00175 protected:
00176 void DoCancel();
00177 void RunL();
00178 TInt RunError(TInt aError);
00179
00180 private:
00181 CImageConverterEngine( MConverterController* aController );
00182 void ConstructL();
00183 TBool FitToScreen();
00184 void DoFitToScreen();
00185
00186
00187 private:
00188
00189
00190
00191
00192 CFbsBitmap* iBitmap;
00193 MConverterController* iController;
00194 RFs iFs;
00195 CImageDecoder* iImageDecoder;
00196 CImageEncoder* iImageEncoder;
00197 CBitmapRotator* iRotator;
00198 CBitmapScaler* iScaler;
00199 TState iState;
00200 CAknGlobalNote* iGlobalNote;
00201 TInt iNoteId;
00202 TFileName iFilename;
00203 TInt iScaleDownCounter;
00204 };
00205
00206 #endif // #ifndef __IMAGECONVERTER_H__