epoc32/include/mw/apgicnfl.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@4
    14
// apgicnfl.h
williamr@2
    15
//
williamr@2
    16
williamr@2
    17
#ifndef __APGICNFL_H__
williamr@2
    18
#define __APGICNFL_H__
williamr@2
    19
williamr@2
    20
#include <apadef.h>
williamr@2
    21
#include <apaid.h>
williamr@2
    22
#include <bitdev.h>
williamr@2
    23
#include <apmstd.h>
williamr@2
    24
#include <badesca.h>
williamr@2
    25
williamr@2
    26
class CFbsBitmap;
williamr@2
    27
class CPersistentStore;
williamr@2
    28
class RReadStream;
williamr@2
    29
class RWriteStream;
williamr@2
    30
williamr@2
    31
/** An application icon.
williamr@2
    32
williamr@2
    33
This is a bitmap and a mask, managed by the Font and Bitmap server.
williamr@2
    34
williamr@2
    35
An object of this type is passed to RApaLsSession::GetAppIcon() to fetch a 
williamr@2
    36
suitable application icon.
williamr@2
    37
williamr@2
    38
@publishedAll
williamr@2
    39
@released
williamr@2
    40
@see RApaLsSession::GetAppIcon() */
williamr@4
    41
class CApaMaskedBitmap : public CFbsBitmap
williamr@2
    42
	{
williamr@2
    43
public:
williamr@2
    44
	IMPORT_C static CApaMaskedBitmap* NewLC();
williamr@2
    45
	IMPORT_C static CApaMaskedBitmap* NewL(const CApaMaskedBitmap* aSourceIcon);
williamr@2
    46
	//
williamr@2
    47
	IMPORT_C CFbsBitmap* Mask() const;
williamr@2
    48
	IMPORT_C void InternalizeL(RReadStream& aStream); 		//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
williamr@2
    49
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
williamr@2
    50
	//
williamr@2
    51
	IMPORT_C ~CApaMaskedBitmap();
williamr@2
    52
	void SetRomBitmapL(TUint8* aRomPointer);				//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
williamr@2
    53
	IMPORT_C void SetMaskBitmap(CFbsBitmap* aMask);
williamr@2
    54
private:
williamr@2
    55
	CApaMaskedBitmap();
williamr@2
    56
	void ConstructL();
williamr@2
    57
private:
williamr@2
    58
	CFbsBitmap* iMask;
williamr@2
    59
	};
williamr@2
    60
williamr@4
    61
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
    62
/**
williamr@2
    63
@internalComponent
williamr@2
    64
*/
williamr@2
    65
class CApaResourceFileWriterBase : public CBase
williamr@2
    66
	{
williamr@2
    67
protected:
williamr@2
    68
	class RBufferSink;
williamr@2
    69
	class MDataSink
williamr@2
    70
		{
williamr@2
    71
	public:
williamr@2
    72
		void WriteBufferL(const TDesC8& aBuffer);
williamr@2
    73
		void WriteCompressedUnicodeRunL(TInt aNumberOfBytesWhenUncompressed, const TDesC8& aTextAsCompressedUnicode);
williamr@2
    74
		void WriteInCompressedUnicodeFormatL(TInt aNumberOfBytesWhenUncompressed, const TDesC8& aData, TBool aInCompressedUnicodeRun);
williamr@2
    75
		TInt NumberOfBytesWhenUncompressed() const;
williamr@2
    76
		inline TBool CompressedUnicodeFormat() const {return (iBufferSinkForCompressedUnicodeFormat!=NULL);}
williamr@2
    77
	protected:
williamr@2
    78
		MDataSink(RBufferSink* aBufferSinkForCompressedUnicodeFormat);
williamr@2
    79
		void FlushL(TBool aFinalFlush);
williamr@2
    80
		void Reset(TInt& aNumberOfBytesWhenUncompressed);
williamr@2
    81
	private:
williamr@2
    82
		void WriteRunLengthL(TInt aRunLength);
williamr@2
    83
	private:
williamr@2
    84
		enum
williamr@2
    85
			{
williamr@2
    86
			EFlag_InCompressedUnicodeRun	=0x00000001
williamr@2
    87
			};
williamr@2
    88
	private:
williamr@2
    89
		// new virtual functions
williamr@2
    90
		virtual void DoWriteBufferL(const TDesC8& aBuffer)=0;
williamr@2
    91
	private:
williamr@2
    92
		TInt iNumberOfBytesWhenUncompressed;
williamr@2
    93
		TUint iFlags;
williamr@2
    94
		RBufferSink* iBufferSinkForCompressedUnicodeFormat; // does not own what it points to
williamr@2
    95
		};
williamr@2
    96
	class RBufferSink : public MDataSink
williamr@2
    97
		{
williamr@2
    98
	public:
williamr@2
    99
		RBufferSink(RBufferSink* aBufferSinkForCompressedUnicodeFormat);
williamr@2
   100
		void ConstructLC();
williamr@2
   101
		void Close();
williamr@2
   102
		void FlushAndGetAndResetL(TInt& aNumberOfBytesWhenUncompressed, RBuf8& aBuffer);
williamr@2
   103
	private:
williamr@2
   104
		// from MDataSink
williamr@2
   105
		virtual void DoWriteBufferL(const TDesC8& aBuffer);
williamr@2
   106
	private:
williamr@2
   107
		RBuf8 iBuffer;
williamr@2
   108
		};
williamr@2
   109
protected:
williamr@2
   110
	CApaResourceFileWriterBase();
williamr@2
   111
	void DoGenerateFileContentsL(RBuf8& aBuffer, TUid aUid2, TUid aUid3) const;
williamr@2
   112
	void WriteUidTypeL(MDataSink& aDataSink, TUid aUid2, TUid aUid3) const;
williamr@2
   113
	void WriteTextL(MDataSink& aDataSink, const TDesC& aText) const;
williamr@2
   114
	void WriteText8L(MDataSink& aDataSink, const TDesC8& aText8) const;
williamr@2
   115
	void WriteUint8L(MDataSink& aDataSink, TUint aUint8) const;
williamr@2
   116
	void WriteLittleEndianUint16L(MDataSink& aDataSink, TUint aUint16) const;
williamr@2
   117
	void WriteLittleEndianUint32L(MDataSink& aDataSink, TUint aUint32) const;
williamr@2
   118
	void WriteBufferL(MDataSink& aDataSink, const TDesC8& aBuffer) const;
williamr@2
   119
private:
williamr@2
   120
	static HBufC8* AsCompressedUnicodeLC(const TDesC& aUncompressedUnicode);
williamr@2
   121
	void MainResourceInCompiledFormatLC(TInt& aMainResourceSizeInBytesWhenUncompressed, RBuf8& aBuffer, TBool aCompressedUnicodeFormat) const;
williamr@2
   122
private:
williamr@2
   123
	// new virtual functions
williamr@2
   124
	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const=0;
williamr@2
   125
	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const=0;
williamr@2
   126
	};
williamr@2
   127
williamr@2
   128
/**
williamr@2
   129
Used to support the registration of non-native applications.
williamr@2
   130
williamr@2
   131
The task of this class is to generate the resource files expected by the Apparc server. Applications 
williamr@2
   132
that register other applications can use functions of this class to customise the generated resource files.
williamr@2
   133
williamr@2
   134
@publishedPartner
williamr@2
   135
@released
williamr@2
   136
*/
williamr@2
   137
class CApaRegistrationResourceFileWriter : public CApaResourceFileWriterBase
williamr@2
   138
	{
williamr@2
   139
public:
williamr@2
   140
	IMPORT_C static CApaRegistrationResourceFileWriter* NewL(TUid aAppUid, const TDesC& aAppFile, TUint aAttributes);
williamr@2
   141
	IMPORT_C virtual ~CApaRegistrationResourceFileWriter();
williamr@2
   142
	TUid AppUid() const;
williamr@2
   143
	void GenerateFileContentsL(RBuf8& aBuffer) const;
williamr@2
   144
	void SetLocalisableResourceFileL(const TDesC& aLocalisableResourceFile);
williamr@2
   145
	IMPORT_C void SetAppIsHiddenL(TBool aAppIsHidden);
williamr@2
   146
	IMPORT_C void SetEmbeddabilityL(TApaAppCapability::TEmbeddability aEmbeddability);
williamr@2
   147
	IMPORT_C void SetSupportsNewFileL(TBool aSupportsNewFile);
williamr@2
   148
	IMPORT_C void SetLaunchInBackgroundL(TBool aLaunchInBackground);
williamr@2
   149
	IMPORT_C void SetGroupNameL(const TDesC& aGroupName);
williamr@2
   150
	IMPORT_C void SetDefaultScreenNumberL(TInt aDefaultScreenNumber);
williamr@2
   151
	IMPORT_C void SetOpaqueDataL(const TDesC8& aOpaqueData);
williamr@2
   152
	IMPORT_C void AddDataTypeL(TInt aPriority, const TDesC8& aType);
williamr@2
   153
	IMPORT_C void AddFileOwnershipInfoL(const TDesC& aFileName);
williamr@2
   154
// Not needing to be supported for the foreseeable future:
williamr@2
   155
//	IMPORT_C void AddServiceInfoL(TUid aServiceUid, const TDesC8* aOpaqueData);
williamr@2
   156
//	IMPORT_C void AddServiceInfoDataTypeL(TUid aServiceUid, TInt aPriority, const TDesC8& aType);
williamr@2
   157
private:
williamr@2
   158
	struct SDataType // DATATYPE
williamr@2
   159
		{
williamr@2
   160
		TInt iPriority;
williamr@2
   161
		HBufC8* iType;
williamr@2
   162
		};
williamr@2
   163
	struct SFileOwnershipInfo // FILE_OWNERSHIP_INFO
williamr@2
   164
		{
williamr@2
   165
		HBufC* iFileName;
williamr@2
   166
		};
williamr@2
   167
private:
williamr@2
   168
	CApaRegistrationResourceFileWriter(TUid aAppUid, TUint aAttributes);
williamr@2
   169
	void ConstructL(const TDesC& aAppFile);
williamr@2
   170
	void WriteDataTypeL(MDataSink& aDataSink, const SDataType& aDataType) const;
williamr@2
   171
	void WriteFileOwnershipInfoL(MDataSink& aDataSink, const SFileOwnershipInfo& aFileOwnershipInfo) const;
williamr@2
   172
	// from CApaResourceFileWriterBase
williamr@2
   173
	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const;
williamr@2
   174
	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const;
williamr@2
   175
private:
williamr@2
   176
	TUid iAppUid;
williamr@2
   177
	HBufC* iAppFile;
williamr@2
   178
	TUint iAttributes;
williamr@2
   179
	HBufC* iLocalisableResourceFile;
williamr@2
   180
	TBool iAppIsHidden;
williamr@2
   181
	TApaAppCapability::TEmbeddability iEmbeddability;
williamr@2
   182
	TBool iSupportsNewFile;
williamr@2
   183
	TBool iLaunchInBackground;
williamr@2
   184
	HBufC* iGroupName;
williamr@2
   185
	TInt iDefaultScreenNumber;
williamr@2
   186
	HBufC8* iOpaqueData;
williamr@2
   187
	RArray<SDataType> iDataTypeList;
williamr@2
   188
	RArray<SFileOwnershipInfo> iFileOwnershipList;
williamr@2
   189
	};
williamr@2
   190
williamr@2
   191
/**
williamr@2
   192
@internalAll
williamr@2
   193
*/
williamr@2
   194
class CApaLocalisableResourceFileWriter : public CApaResourceFileWriterBase
williamr@2
   195
	{
williamr@2
   196
public:
williamr@2
   197
	IMPORT_C static CApaLocalisableResourceFileWriter* NewL(const TDesC& aShortCaption, const TDesC& aCaption, TInt aNumberOfIcons, const TDesC& aGroupName);
williamr@2
   198
	IMPORT_C virtual ~CApaLocalisableResourceFileWriter();
williamr@2
   199
	void GenerateFileContentsL(RBuf8& aBuffer) const;
williamr@2
   200
	void SetIconFileL(const TDesC& aIconFile);
williamr@2
   201
// Not needing to be supported for the foreseeable future:
williamr@2
   202
//	IMPORT_C void AddViewDataL(TUid aViewUid, TInt aScreenMode, const TDesC& aCaption, TInt aNumberOfIcons, const TDesC& aIconFile);
williamr@2
   203
private:
williamr@2
   204
	struct SCaptionAndIconInfo // CAPTION_AND_ICON_INFO
williamr@2
   205
		{
williamr@2
   206
		HBufC* iCaption;
williamr@2
   207
		TInt iNumberOfIcons;
williamr@2
   208
		HBufC* iIconFile;
williamr@2
   209
		};
williamr@2
   210
private:
williamr@2
   211
	CApaLocalisableResourceFileWriter(TInt aNumberOfIcons);
williamr@2
   212
	void ConstructL(const TDesC& aShortCaption, const TDesC& aCaption, const TDesC& aGroupName);
williamr@2
   213
	void WriteCaptionAndIconInfoL(MDataSink& aDataSink, const SCaptionAndIconInfo& aCaptionAndIcon) const;
williamr@2
   214
	// from CApaResourceFileWriterBase
williamr@2
   215
	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const;
williamr@2
   216
	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const;
williamr@2
   217
private:
williamr@2
   218
	HBufC* iShortCaption;
williamr@2
   219
	SCaptionAndIconInfo iCaptionAndIcon;
williamr@2
   220
	HBufC* iGroupName;
williamr@2
   221
	};
williamr@2
   222
williamr@4
   223
#endif //SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
   224
williamr@2
   225
#endif
williamr@2
   226