--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/wmlengine/src/css/include/CSSImageList.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,417 @@
+/*
+* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: Hold different CSS images
+*
+*/
+
+
+#ifndef CCSSImageList_H
+#define CCSSImageList_H
+
+// INCLUDES
+#include "BrsrStatusCodes.h"
+#include "nw_text_ucs2.h"
+#include "nw_image_abstractimage.h"
+#include "nw_image_virtualimage.h"
+#include "nw_image_epoc32simpleimage.h"
+#include <nwx_http_header.h>
+#include "nw_css_processor.h"
+#include <e32base.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+class CVirtualNodeImageEntry;
+
+typedef CArrayPtrFlat<CVirtualNodeImageEntry> CVirtualNodeImageList;
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* This class contains information about virtual node-image pairs associated
+* with an image list entry
+* @lib css.lib
+* @since 2.1
+*/
+class CVirtualNodeImageEntry : public CBase
+ {
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @return CVirtualNodeImageEntry*
+ */
+ static CVirtualNodeImageEntry* NewL();
+
+ /**
+ * Two-phased constructor.
+ * @return CVirtualNodeImageEntry*
+ */
+ static CVirtualNodeImageEntry* NewLC();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CVirtualNodeImageEntry();
+
+ /**
+ * This method add a new virtual image
+ * @since 2.1
+ * @param aVirtualImage: virtual image
+ * @return void
+ */
+ void AddVirtualImage( NW_Image_Virtual_t* aVirtualImage ) { iVirtualImage = aVirtualImage; }
+
+ /**
+ * This method add a new virtual node
+ * @since 2.1
+ * @param aVirtualNode: virtual node associated with a virtual image
+ * @return void
+ */
+ void AddVirtualNode( NW_DOM_ElementNode_t* aVirtualNode ) { iVirtualNode = aVirtualNode; }
+
+ /**
+ * This method sets the ownership of the virtual image
+ * @since 2.1
+ * @return void
+ */
+ void TakeVirtualImageOwnership( void ) { iImageOwnership = ETrue; }
+
+ /**
+ * This method removes the ownership of the virtual image
+ * @since 2.1
+ * @param aUrl: url of the image
+ * @return void
+ */
+ void RemoveVirtualImageOwnership( void ) { iImageOwnership = EFalse; }
+
+ /**
+ * This method returns the virtual image
+ * @since 2.1
+ * @return NW_Image_Virtual_t* virtual image
+ */
+ NW_Image_Virtual_t* VirtualImage( void ) { return iVirtualImage; }
+
+ /**
+ * This method returns with virtual node
+ * @since 2.1
+ * @return NW_DOM_ElementNode_t* virtual node
+ */
+ NW_DOM_ElementNode_t* VirtulaNode( void ) { return iVirtualNode; }
+
+ /**
+ * This method returns the value of the ownership
+ * @since 2.1
+ * @return TBool: ETrue if the image is owned by the entry
+ */
+ TBool VirtualImageOwnership( void ) { return iImageOwnership; }
+
+ private: // New functions
+
+ /**
+ * C++ default constructor.
+ */
+ CVirtualNodeImageEntry();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private:
+ // associated virtual image.
+ // "ownership" member indicates
+ // the imageOwnership of the image
+ NW_Image_Virtual_t* iVirtualImage;
+ // associated virtual DOM node.
+ // not owned
+ NW_DOM_ElementNode_t* iVirtualNode;
+ TBool iImageOwnership;
+ };
+
+
+/**
+* This class contains information about an image entry in the list
+* @lib css.lib
+* @since 2.1
+*/
+class CCSSImageListEntry : public CBase
+{
+public:
+
+ /**
+ * Two-phased constructor.
+ * @return CCSSImageListEntry*
+ */
+ static CCSSImageListEntry* NewL( NW_Text_t* aUrl, TBool aListItem );
+
+ /**
+ * Two-phased constructor.
+ * @return CCSSImageListEntry*
+ */
+ static CCSSImageListEntry* NewLC( NW_Text_t* aUrl, TBool aListItem );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCSSImageListEntry();
+
+ public: // set-get functions
+
+ /**
+ * This method sets the image and its content type
+ * @since 2.1
+ * @param aImage: image object
+ * @param aContentType: content type string
+ * @return void
+ */
+ void SetAbstractImage( NW_Image_AbstractImage_t* aImage, NW_Http_ContentTypeString_t aContentType );
+
+ /**
+ * This method returns the listItem member variable
+ * @since 2.1
+ * @return TBool EFalse if the image is background image
+ */
+ TBool ListItem( ) { return iListItem; }
+
+ /**
+ * This method returns the "main" image which is the base of every
+ * virtual images in the list
+ * @since 2.1
+ * @return NW_Image_AbstractImage_t* main image
+ */
+ NW_Image_AbstractImage_t* AbstractImage( ) { return iImage; }
+
+ /**
+ * This method returns the URL of the image. It is also the ID of the list.
+ * @since 2.1
+ * @return NW_Text_t* url
+ */
+ NW_Text_t* ImageUrl( ) { return iUrl; }
+
+ /**
+ * This method returns the content type of the image
+ * @since 2.1
+ * @return NW_Http_ContentTypeString_t content type
+ */
+ NW_Http_ContentTypeString_t ImageContentType( ) { return iContentTypeString; }
+
+ /**
+ * This method returns the virtual node-image list associated with this entry
+ * @since 2.1
+ * @return CVirtualNodeImageList* virtual node-image pair list
+ */
+ CVirtualNodeImageList* VirtualNodeImageList() { return iVirtualNodeImageList; }
+
+ /**
+ * This method appends a new virtual-node pair to the list
+ * @since 2.1
+ * @param aVirtualImageNodeEntry: virtual image-node pair entry
+ * @return void
+ */
+ void AddVirtualImageNodeEntryL( CVirtualNodeImageEntry* aVirtualImageNodeEntry )
+ { iVirtualNodeImageList->AppendL( aVirtualImageNodeEntry ); }
+
+ private: // New functions
+
+ /**
+ * C++ default constructor.
+ */
+ CCSSImageListEntry( NW_Text_t* aUrl, TBool aListItem );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private: // members
+
+ // url of Image. owned
+ NW_Text_t* iUrl;
+ // content type of image. owned
+ NW_Http_ContentTypeString_t iContentTypeString;
+ // either background or list image
+ TBool iListItem;
+ // "main" image. owned
+ NW_Image_AbstractImage_t* iImage;
+ // list of virtual node-image pairs
+ CVirtualNodeImageList* iVirtualNodeImageList;
+};
+// CLASS DECLARATION
+
+/**
+* This class has different CSS images that can be used by the document
+* @lib css.lib
+* @since 2.1
+*/
+class CCSSImageList : public CBase
+{
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @return CCSSHandler*
+ */
+ static CCSSImageList* NewL( NW_CSS_Processor_t& aProcessor );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCSSImageList();
+
+ public: // New functions
+
+ /**
+ * This method creates a new image entry for a given URL
+ * @since 2.1
+ * @param aUrl: url of the image
+ * @param aImageNode: associated DOM node
+ * @param aListItem: image can be either list item or background image
+ * @return void
+ */
+ void CreateImageEntryL( NW_Text_t* aUrl, NW_DOM_ElementNode_t* aImageNode, TBool aListItem );
+
+ /**
+ * This method add a new virtual node for a given URL
+ * @since 2.1
+ * @param aUrl: url of the image
+ * @param aVirtualImageNode: virtual node
+ * @return void
+ */
+ NW_Image_AbstractImage_t* AddVirtualNodeToImageEntryL( NW_Text_t* aUrl, NW_DOM_ElementNode_t* aVirtualImageNode );
+
+ /**
+ * This method sets the image for a given URL
+ * @since 2.1
+ * @param aUrl: url of the image
+ * @param aData: image data
+ * @param aLength: image length
+ * @param aContentTypeString: content type of image
+ * @return image object
+ */
+ NW_Image_AbstractImage_t* SetImageL(NW_Text_t* aUrl, NW_Byte* aData, NW_Uint32 aLength,
+ NW_Http_ContentTypeString_t aContentTypeString );
+
+ /**
+ * This method returns the image corresponding to a given URL
+ * @since 2.1
+ * @param aUrl: url of the image
+ * @param aFound: denotes if entry exists
+ * @return corresponding image
+ */
+ NW_Image_AbstractImage_t* GetImageL( NW_Text_t* aUrl, TBool& aFound );
+
+ /**
+ * This method returns the image list entry corresponding to a given virtual image
+ * @since 2.1
+ * @param aVirtualImage: image
+ * @param aImageNode: corresponding node
+ * @return CCSSImageListEntry* corresponding image list entry
+ */
+ CCSSImageListEntry* EntryByVirtualImage( NW_Image_AbstractImage_t* aVirtualImage,
+ NW_DOM_ElementNode_t** aImageNode );
+ /**
+ * This method removes the virtual image ownership.
+ * @since 2.1
+ * @param aImageEnrty: image enrty that holds the virtual image
+ * @param aVirtualImage: image to be removed
+ * @return void
+ */
+ void RemoveVirtualImageOwnership( CCSSImageListEntry& aImageEnrty, NW_Image_AbstractImage_t* aVirtualImage );
+
+ /**
+ * This method removes the virtual image.
+ * @since 2.1
+ * @param aImageEnrty: image enrty that holds the virtual image
+ * @param aVirtualImage: image to be removed
+ * @return void
+ */
+ void VirtualImageDestroyed( CCSSImageListEntry& aImageEnrty, NW_Image_AbstractImage_t* aVirtualImage );
+
+ /**
+ * This method Write CSS image components to a file in the form of multipart segments.
+ * Each segment consists of:
+ * header length (including content type length)
+ * image data length
+ * content type (including character encoding)
+ * headers
+ * image
+ * @since 2.1
+ * @param aFh: file name
+ * @return KBrsrSuccess, KBrsrOutOfMemory, KBrsrFailure, or KBrsrSavedPageFailed
+ */
+ TBrowserStatusCode WriteMultipartSegments(NW_Osu_File_t aFh);
+
+ /**
+ * This method returns the size of the imagelist
+ * @since 2.1
+ * @return size of the imageList
+ */
+ TInt GetNumImages();
+
+ /**
+ * This method issues load request for urls which don't have image
+ * @since 2.1
+ * @return KBrsrSuccess or KBrsrOutOfMemory
+ */
+ TBrowserStatusCode ShowImages();
+
+ private: // New functions
+
+ /**
+ * C++ default constructor.
+ */
+ CCSSImageList( NW_CSS_Processor_t& aProcessor );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * This method gets CSS image for a given URL
+ * @since 2.1
+ * @param aUrl: url of the image to be fetched
+ * @param aRetEntry: image
+ * @return KBrsrSuccess, KBrsrOutOfMemory, KBrsrNotFound
+ */
+ TBool QueryEntryL (NW_Text_t* aUrl, CCSSImageListEntry*& aRetEntry);
+
+ /**
+ * This method changes the ownership status of a virtual image.
+ * @since 2.1
+ * @param aImageEnrty: image enrty that holds the virtual image
+ * @param aVirtualImage: image to be removed
+ * @param aDestroyed: ETrue if the image was destroyed
+ * @return void
+ */
+ void VirtualImageOwnershipChanged( CCSSImageListEntry& aImageEnrty, NW_Image_AbstractImage_t* aVirtualImage,
+ TBool aDestroyed );
+
+
+ typedef CArrayPtrFlat<CCSSImageListEntry> CImageListArray;
+
+ private: // Data
+
+ // vector containing the images. owned
+ CImageListArray* iImageList;
+ // CSS processor. not owned
+ NW_CSS_Processor_t* iProcessor;
+};
+
+#endif /* CCSSImageList_H */