diff -r 1882882c7f9c -r e52958d06c29 svgtviewer/SvgtViewerPlugin/SVGCodecSrc/SVGConvert.cpp --- a/svgtviewer/SvgtViewerPlugin/SVGCodecSrc/SVGConvert.cpp Tue May 25 12:28:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* -* Copyright (c) 2005 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: This file implements the decoder for the SVG presentation -* -*/ - - -#include "SVGConvert.h" -#include -#include -#include -#include <102073d7_extra.rsg> -#include -#include "SVGCodec.h" - -_LIT(KSVGPanicCategory, "SVGConvertPlugin"); -const TInt KInitialFrameWidth = 1; -const TInt KInitialFrameHeight = 1; - -// Number of bits per pixel used in ReadFormatL -const TInt KSvgDecBitsPerPixel = 24; - -enum TIclPanic - { - EFrameNumberOutOfRange = 0x1 - }; - -// Global panic function -GLDEF_C void Panic(TIclPanic aError) - { - User::Panic(KSVGPanicCategory, aError); - } - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CSvgDecoder::NewL -// Static constructor. Returns the pointer to the CSvgDecoder -// ----------------------------------------------------------------------------- -// -CSvgDecoder* CSvgDecoder::NewL() - { - return new (ELeave) CSvgDecoder; - } - -// ----------------------------------------------------------------------------- -// CSvgDecoder::~CSvgDecoder -// C++ destructor. -// ----------------------------------------------------------------------------- -// -CSvgDecoder::~CSvgDecoder() - { - CImageDecoderPlugin::Cleanup(); - } - -// ----------------------------------------------------------------------------- -// CSvgDecoder::ImageType -// Returns the image type and sub-type for a given frame of the image that -// has just been opened. -// ----------------------------------------------------------------------------- -// -void CSvgDecoder::ImageType(TInt aFrameNumber, TUid& aImageType, TUid& aImageSubType) const - { - __ASSERT_ALWAYS(aFrameNumber == 0, Panic( EFrameNumberOutOfRange )); - aImageType = KImageTypeSVGUid; - aImageSubType = KNullUid; - } - -// ----------------------------------------------------------------------------- -// Returns the codec specific frame information stored in resource files. -// This is a virtual funtion that each individual plugin must implement. -// ----------------------------------------------------------------------------- -// -CFrameInfoStrings* CSvgDecoder::FrameInfoStringsL( RFs& /*aFs*/, TInt /*aFrameNumber*/ ) - { - return NULL; - } - -// ----------------------------------------------------------------------------- -// CSvgDecoder::CSvgDecoder -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CSvgDecoder::CSvgDecoder() - { - } - -// ----------------------------------------------------------------------------- -// Invokes the ReadFrameHeadersL() method of the supplied plugin. -// This is a virtual funtion that each individual plugin must implement. -// ----------------------------------------------------------------------------- -// -void CSvgDecoder::ScanDataL() - { - CSvgReadCodec* imageReadCodec = CSvgReadCodec::NewL( - TSize(KInitialFrameWidth, KInitialFrameHeight) - ); - SetImageReadCodec( imageReadCodec ); - - ReadFormatL(); - ReadFrameHeadersL(); - } - -// ----------------------------------------------------------------------------- -// Reads the image header & data information -// ----------------------------------------------------------------------------- -// -void CSvgDecoder::ReadFormatL() - { - ReadDataL(0, iFileData, KMaxTInt); - SetDataLength( iFileData.Length() ); - CSvgReadCodec* imageReadCodec = static_cast(ImageReadCodec()); - imageReadCodec->SetFileDataL( iFileData ); - - imageReadCodec->PrepareEngine(); - const TSize contentSize = imageReadCodec->ContentSize(); - - TFrameInfo imageInfo; - imageInfo = ImageInfo(); - imageInfo.iFrameCoordsInPixels.SetRect(TPoint(0, 0), contentSize ); - imageInfo.iOverallSizeInPixels = contentSize; - imageInfo.iBitsPerPixel = KSvgDecBitsPerPixel; - imageInfo.iDelay = 0; - imageInfo.iFlags = TFrameInfo::ECanDither | TFrameInfo::ETransparencyPossible; - imageInfo.iFrameDisplayMode = EColor64K; - imageInfo.iFrameSizeInTwips = ContentSizeInTwips(contentSize); - - SetImageInfo(imageInfo); - SetStartPosition(0); - } - -TSize CSvgDecoder::ContentSizeInTwips(const TSize aContentSizeInPixels) const - { - // Create zoom factor object - TRect boxInTwips(TPoint(0,0), TSize(0,0)); - CCoeEnv* coeEnv = CCoeEnv::Static(); - if(coeEnv) - { - TZoomFactor deviceMap(CCoeEnv::Static()->ScreenDevice()); - // Set zoom factor at 1 to 1 - deviceMap.SetZoomFactor(TZoomFactor::EZoomOneToOne); - const TRect boxInPixels(TPoint(0,0), aContentSizeInPixels); - // convert rectangle co-ordinates into pixels - boxInTwips = deviceMap.PixelsToTwips(boxInPixels); - } - return boxInTwips.Size(); - } - -// End of File -