--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandlingutilities/thumbnailmanager/inc/thumbnailmanagerconstants.h Tue Jan 26 15:18:05 2010 +0200
@@ -0,0 +1,526 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Thumbnail manager constants
+ *
+*/
+
+
+#ifndef THUMBNAILMANAGERCONSTANTS_H
+#define THUMBNAILMANAGERCONSTANTS_H
+
+#include <e32base.h>
+#include <gdi.h>
+#include <etel3rdparty.h>
+
+#include <apmstd.h>
+
+#include "thumbnailmanager.h" // TThumbnailFlags
+
+class CThumbnailServerSession;
+
+// P&S stuff
+static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
+static _LIT_SECURITY_POLICY_C1(KPowerMgmtPolicy,ECapabilityPowerMgmt);
+
+const TUid KTMPSNotification = { 0x102830AB };
+const TUid KTAGDPSNotification = { 0x2001FD51 };
+const TUid KMdSPSShutdown = { 0x20022E94 };
+const TUid KServerIdle = { 0x102830AB };
+const TUid KDaemonUid = { 0x2001FD51 };
+
+const TInt KShutdown = 0x00000001;
+const TInt KMdSShutdown = 0x00000002;
+//used to signal from server side when it's idle
+const TInt KIdle = 0x00000004;
+
+//insert to temp table first wo indexing and move data to main table as batch
+const TUint KMaxBatchItems = 18;
+
+const TUint KMaxQueryItems = 1;
+
+// maximum number of active client queue requests
+const TUint KMaxClientRequests = 2;
+
+// maximum number of active daemon requests
+const TUint KMaxDaemonRequests = 3;
+
+const TUint KClientRequestTimeout = 60000000; //60 sec
+
+const TUint KThumbnailServerMajorVersionNumber = 0;
+const TUint KThumbnailServerMinorVersionNumber = 1;
+const TUint KThumbnailServerBuildVersionNumber = 1;
+
+const TInt KThumbnailErrThumbnailNotFound = -62000;
+
+//give MDS 1000 msec time to settle before starting generating TNs
+const TInt KHarvestingCompleteTimeout = 10000000; //10 sec
+
+const TInt KPSKeyTimeout = 10000000; //10 sec
+//Store's auto flush timeout
+const TInt KAutoFlushTimeout = 30000000; //30 sec
+
+// video decoder timeout
+const TInt KVideoDecoderTimeout = 5000000; // 5 seconds
+
+const TDisplayMode KThumbnailDefaultDisplayMode = EColor64K;
+
+//default displaymode (bpp - bits per pixel) for TNs in DB
+//this makes possible to provide all colour depths up to 16M aka 24 -bit full colour
+const TDisplayMode KStoreDisplayMode = EColor16M;
+
+//required amount of memory to keep bitmaps on RAM in bits
+const TInt KMemoryNeed = 5000000;
+
+_LIT( KThumbnailServerName, "ThumbnailServer" );
+_LIT( KThumbnailServerProcess, "*ThumbnailServer*" );
+_LIT( KThumbnailServerExe, "thumbnailserver.exe" );
+_LIT( KThumbnailServerShutdown, "Thumbnailserver_Shutdown" );
+
+_LIT( KTAGDaemonName, "ThumbAGDaemon" );
+_LIT( KTAGDaemonProcess, "*ThumbAGDaemon*" );
+_LIT( KTAGDaemonExe, "thumbagdaemon.exe" );
+
+// server message slots, -1 doesn't reserve fixed amount from global but uses free available amount instead
+const TInt KMessageSlots = -1;
+
+const TInt KMinPriority = KMinTInt;
+const TInt KMinPlaceholderPriority = (KMinTInt +1000);
+const TInt KLowPriority = -1000;
+const TInt KNormalPriority = 0;
+const TInt KHighPriority = 1000;
+const TInt KMaxGeneratePriority = (KMaxTInt -1000);
+const TInt KMaxPriority = KMaxTInt; // For scaling tasks
+const TInt KImeiBufferSize = CTelephony::KPhoneSerialNumberSize;
+const TInt KCheckValue = 123456;
+
+_LIT8( KJpegMime, "image/jpeg" ); _LIT( KJpegExt, ".jpeg" );
+_LIT8( KJpeg2000Mime, "image/jp2" ); _LIT( KJpeg2000Ext, ".jp2" );
+_LIT8( KJpgMime, "image/jpeg" ); _LIT( KJpgExt, ".jpg" );
+_LIT8( KGifMime, "image/gif" ); _LIT( KGifExt, ".gif" );
+_LIT8( KPngMime, "image/png" ); _LIT( KPngExt, ".png" );
+_LIT8( KSvgMime, "image/svg+xml" ); _LIT( KSvgExt, ".svg" );
+_LIT8( KMpgMime1, "video/mpeg"); _LIT( KMpgExt1, ".mpg" );
+_LIT8( KMpeg4Mime, "video/mpeg4" ); _LIT( KMpeg4Ext,".mpeg4" );
+_LIT8( KMp4Mime, "video/mp4" ); _LIT( KMp4Ext, ".mp4" );
+_LIT8( KAviMime, "video/x-msvideo" ); _LIT( KAviExt, ".avi" );
+_LIT8( KMp3Mime, "audio/mpeg" ); _LIT( KMp3Ext, ".mp3" );
+_LIT8( KNonEmbeddArtMime, "audio/mpeg" ); _LIT( KNonEmbeddArtExt, ".alb" );
+_LIT8( KM4aMime, "audio/mp4" ); _LIT( KM4aExt, ".m4a" );
+_LIT8( KAacMime, "audio/aac" ); _LIT( KAacExt, ".aac" );
+_LIT8( KWmaMime, "audio/x-ms-wma" ); _LIT( KWmaExt, ".wma" );
+_LIT8( KBmpMime, "image/bmp" ); _LIT( KBmpExt, ".bmp" );
+_LIT8( KAudio3gppMime, "audio/3gpp" );
+_LIT8( KVideo3gppMime, "video/3gpp" ); _LIT( K3gpExt, ".3gp" );
+_LIT8( KAudioAmrMime, "audio/AMR" ); _LIT( KAmrExt, ".amr" );
+_LIT8( KVideoWmvMime, "video/x-ms-wmv" ); _LIT( KWmvExt, ".wmv" );
+_LIT8( KRealAudioMime, "audio/vnd.rn-realaudio" ); _LIT( KRealAudioExt, ".ra" );
+_LIT8( KPmRealAudioPluginMime, "audio/x-pn-realaudio-plugin" ); _LIT( KPmRealAudioPluginExt, ".rpm" );
+_LIT8( KPmRealVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVideoPluginExt, ".rm" );
+_LIT8( KPmRealVbVideoPluginMime, "video/x-pn-realvideo" ); _LIT( KPmRealVbVideoPluginExt, ".rmvb" );
+_LIT8( KPmRealAudioMime, "audio/x-pn-realaudio" ); _LIT( KPmRealAudioExt, ".ra" );
+_LIT8( KRealVideoMime, "video/vnd.rn-realvideo" ); _LIT( KRealVideoExt, ".rv" );
+_LIT8( KFlashVideoMime, "video/x-flv" ); _LIT( KFlashVideoExt, ".flv" );
+_LIT8( KMatroskaVideoMime, "video/x-matroska" ); _LIT( KMatroskaVideoExt, ".mkv" );
+_LIT( KImageMime, "image/*" );
+_LIT( KVideoMime, "video/*" );
+_LIT( KAudioMime, "audio/*" );
+_LIT( KM4vExt, ".m4v" );
+_LIT( KNonEmbeddedArtExt, ".alb" );
+
+/**
+ * Control flags set by the server for handling specific situations
+ * (for example for distinguishing between preview thumbnails and
+ * final thumbnails).
+ *
+ * @since S60 v5.0
+ */
+enum TThumbnailControlFlags
+ {
+ /**
+ * Default value. No flags set.
+ */
+ EThumbnailNoControlFlags = 0,
+
+ /**
+ * Set by the server when the request is completed and it is only the
+ * first part of a two-phase request
+ */
+ EThumbnailPreviewThumbnail = 1,
+
+ /**
+ * Set by the client to inform server to create only missing persistent sizes thumbnails
+ */
+ EThumbnailGeneratePersistentSizesOnly = 2
+};
+
+
+/**
+ * Thumbnail request parameters used for client-server communication.
+ *
+ * @since S60 v5.0
+ */
+struct TThumbnailRequestParams
+ {
+public:
+ /**
+ * Bitmap handle for completed requests
+ */
+ TInt iBitmapHandle;
+
+ /**
+ * Flags for new requests.
+ */
+ CThumbnailManager::TThumbnailFlags iFlags;
+
+ /**
+ * Quality-preference value for new requests.
+ */
+ CThumbnailManager::TThumbnailQualityPreference iQualityPreference;
+
+ /**
+ * Priority for new requests.
+ */
+ TInt iPriority;
+
+ /**
+ * Requested thumbnail size new requests.
+ */
+ TSize iSize;
+
+ /**
+ * Requested display mode new requests.
+ */
+ TDisplayMode iDisplayMode;
+
+ /**
+ * Full path to object file for new requests. Should be set even
+ * when file handles are used.
+ */
+ TFileName iFileName;
+
+ /**
+ * Full path to object to which the imported thumb is to be linked.
+ */
+ TFileName iTargetUri;
+
+ /**
+ * Thumbnail ID
+ */
+ TThumbnailId iThumbnailId;
+
+ /**
+ * Relative thumbnail size
+ */
+ TThumbnailSize iThumbnailSize;
+
+ /**
+ * MIME type
+ */
+ TDataType iMimeType;
+
+ /**
+ * Image buffer used to create & set the thumbnail
+ */
+ TDesC8* iBuffer;
+
+ /**
+ * Session specific request ID allocated by the client.
+ */
+ TThumbnailRequestId iRequestId;
+
+ /**
+ * Control flags set by the server for handling specific situations
+ * (for example for distinguishing between preview thumbnails and
+ * final thumbnails).
+ */
+ TThumbnailControlFlags iControlFlags;
+
+ /**
+ * Thumbnail's modify timestamp
+ */
+ TInt64 iModified;
+
+ /**
+ * Thumbnail's orientation
+ */
+ TInt iOrientation;
+ };
+
+
+typedef TPckg < TThumbnailRequestParams > TThumbnailRequestParamsPckg;
+typedef TPckgBuf < TThumbnailRequestParams > TThumbnailRequestParamsPckgBuf;
+
+
+/**
+ * Request ID class used on the server side. Consists of a pointer to a
+ * session and a session specific ID.
+ *
+ * @since S60 v5.0
+ */
+struct TThumbnailServerRequestId
+ {
+ /**
+ * Default C++ constructor
+ *
+ * @since S60 v5.0
+ */
+ inline TThumbnailServerRequestId(): iSession( NULL ), iRequestId( 0 ){}
+
+ /**
+ * C++ constructor
+ *
+ * @since S60 v5.0
+ * @param aSession Pointer to the server-side session object, which
+ * created the request.
+ * @param aRequestId Session specific request ID as allocated by the
+ * client.
+ */
+ inline TThumbnailServerRequestId( CThumbnailServerSession* aSession,
+ TThumbnailRequestId aRequestId ): iSession( aSession ), iRequestId(
+ aRequestId ){}
+
+ /**
+ * Compare request IDs. Both session and client-side request ID must
+ * match.
+ *
+ * @param aRequestId Another TThumbnailServerRequestId to compare to
+ * @since S60 v5.0
+ */
+ inline TBool operator == ( const TThumbnailServerRequestId& aRequestId )
+ const
+ {
+ return aRequestId.iSession == iSession && aRequestId.iRequestId ==
+ iRequestId;
+ }
+
+public:
+ /**
+ * Pointer to the server-side session object, which created the request.
+ * Not own.
+ */
+ CThumbnailServerSession* iSession;
+
+ /**
+ * Session specific request ID as allocated by the client.
+ */
+ TThumbnailRequestId iRequestId;
+};
+
+/**
+ * Client-server message IDs
+ *
+ * @since S60 v5.0
+ * Start from 0 so that TPolicy range matches to function count.
+ */
+enum TThumbnailServerRequest
+ {
+ /**
+ * Thumbnail request using file path. A TThumbnailRequestParams
+ * struct is passed as a parameter.
+ * @see TThumbnailRequestParams
+ */
+ ERequestThumbByPathAsync = 0,
+
+ /**
+ * Thumbnail request using file path. A TThumbnailRequestParams
+ * struct is passed as a parameter as well as the file handle using
+ * TransferToServer()/AdoptFromClient().
+ * @see TThumbnailRequestParams
+ */
+ ERequestThumbByFileHandleAsync,
+
+ /**
+ * Release a bitmap after the client callback has returned. Bitmap
+ * handle is passed as a parameter.
+ */
+ EReleaseBitmap,
+
+ /**
+ * Cancel a thumbnail request. Session specific request ID is passed
+ * as a parameter.
+ */
+ ECancelRequest,
+
+ /**
+ * Change the priority of a thumbnail request. Session specific request
+ * ID and new priority value are passed as parameters.
+ */
+ EChangePriority,
+
+ /**
+ * Create thumbnails for a file. File path is passed as a
+ * parameter.
+ */
+ ECreateThumbnails,
+
+ /**
+ * Delete existing thumbnails for a file. File path is passed as a
+ * parameter.
+ */
+ EDeleteThumbnails,
+
+ /**
+ * Get the required size (in characters) for a buffer that contains the
+ * list of supported MIME types. Size in integers is returned in the
+ * first parameter.
+ */
+ EGetMimeTypeBufferSize,
+
+ /**
+ * Get the list of supported MIME types and store them as the first
+ * parameter. The first parameter should be allocated by the client
+ * to be large enough (using EGetMimeTypeBufferSize).
+ */
+ EGetMimeTypeList,
+
+ /**
+ * Thumbnail request using ID.
+ */
+ ERequestThumbByIdAsync,
+
+ ERequestThumbByBufferAsync,
+
+ /**
+ * Request to set thumbnail created from buffered image
+ */
+ ERequestSetThumbnailByBuffer,
+
+ /**
+ * Delete existing thumbnails. Id as parameter.
+ */
+ EDeleteThumbnailsById,
+
+ EReserved1,
+
+ /**
+ * Update thumbnails by given Id.
+ */
+ EUpdateThumbnails,
+
+ /**
+ * Request to set thumbnail created from given bitmap
+ */
+ ERequestSetThumbnailByBitmap,
+
+ /**
+ * Do not remove and keep as last item! Holds count of functions supported.
+ */
+ EThumbnailServerRequestCount
+ };
+
+/**
+ * Thumbnail format in storage
+ *
+ * @since S60 v5.0
+ */
+enum TThumbnailFormat
+ {
+ /**
+ * Symbian internal bitmap format, usually as extranlized BLOB in the db.
+ */
+ EThumbnailFormatFbsBitmap,
+ /**
+ * Stantard JPEG
+ */
+ EThumbnailFormatJpeg
+ };
+
+struct TThumbnailDatabaseData
+ {
+public:
+ /**
+ * Full path to object to which the imported thumb is to be linked.
+ */
+ TPath iPath;
+ /**
+ * Thumbnail ID
+ */
+ TInt iTnId;
+ /**
+ * Requested thumbnail size new requests.
+ */
+ TInt iSize;
+ /**
+ * type of data
+ */
+ TInt iFormat;
+ /**
+ * Path for the thumbnails
+ */
+ TPath iTnPath;
+ /**
+ * Data if bitmap
+ */
+ CFbsBitmap* iBlob;
+ /**
+ * Data if jpeg
+ */
+ TDesC8* iData;
+ /**
+ * Width of thumbnail
+ */
+ TInt iWidth;
+ /**
+ * Height of thumbnail
+ */
+ TInt iHeight;
+ /**
+ * Original width of thumbnail
+ */
+ TInt iOrigWidth;
+ /**
+ * Original height of thumbnail
+ */
+ TInt iOrigHeight;
+ /**
+ * flags
+ */
+ TInt iFlags;
+ /**
+ * videoposition
+ */
+ TInt iVideoPosition;
+ /**
+ * thumb oritentation
+ */
+ TInt iOrientation;
+ /**
+ * Thumb created from associated path
+ */
+ TInt iThumbFromPath;
+ /**
+ * last modified
+ */
+ TInt64 iModified;
+
+ };
+
+/**
+ * MDS query modes used during thumbnail generation
+ *
+ * @since S60 v5.0
+ */
+enum TMDSQueryType
+ {
+ /**
+ * Query Id by Path
+ */
+ EId,
+ /**
+ * Query Path by Id
+ */
+ EURI
+ };
+
+#endif // THUMBNAILMANAGERCONSTANTS_H