Add MMP files to build libOpenVG_sw.lib which uses LINKAS to redirect to libOpenVG.dll (and
the same for libEGL_sw.lib and libOpenVGU_sw.lib).
Only the libEGL_sw.lib redirection isn't activated - this can't happen until there is a merged
libEGL.dll which supports the OpenWF synchronisation and also implements the graphical support functions.
The overall aim is to eliminate the *_sw.dll implementations, at least as a compile-time way of choosing
a software-only implementation.The correct way to choose is to put the right set of libraries into a ROM
with suitable renaming, and in the emulator to use the "switching DLL" technique to pick the right set.
As the Symbian Foundation doesn't have any alternative implementations, we don't need the switching DLLs
and we can build directly to the correct name.
// Copyright (c) 2007-2009 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:
//
#include "directgdidriver.h"
#include "directgdipaniccodes.h"
#include <graphics/directgdidrawablesource.h>
#include <graphics/sgimage.h>
/**
Default constructor.
Only for embedding instances of RDirectGdiDrawableSource into other classes as data members.
Before a RDirectGdiDrawableSource can be used the other constructor must be called.
*/
EXPORT_C RDirectGdiDrawableSource::RDirectGdiDrawableSource()
: iDriver(NULL), iHandle(KNullHandle)
{
}
/**
Constructor.
@param aDriver The CDirectGdiDriver for this thread.
@pre The CDirectGdiDriver object has been initialised from the calling thread.
@post This handle has a pointer to the CDirectGdiDriver for this thread.
This handle is not associated with any DirectGDI adaptation-specific resource.
*/
EXPORT_C RDirectGdiDrawableSource::RDirectGdiDrawableSource(CDirectGdiDriver& aDriver)
: iDriver(&aDriver), iHandle(KNullHandle)
{
}
/**
Creates a DirectGDI adaptation-specific resource that is bound to the specified
drawable resource so it can be drawn using the DirectGDI rendering API.
@param aDrawable The drawable resource.
@pre CDirectGdiDriver object for this handle has been set. The drawable
resource has been fully constructed.
@post The DirectGDI adaptation-specific resource that is bound to the given
non-pixel resource is created and this handle is now associated with it.
The reference counter on the drawable resource is incremented.
@return KErrNone if successful, KErrArgument if the drawable resource is not
valid, KErrAlreadyExists if this handle is already associated with a
DirectGDI adaptation-specific resource, otherwise one of the system-wide
error codes.
@panic DGDI 18, if this drawable source has no pointer to its assosicated CDirectGdiDriver.
This may occur if constructed using the default constructor, and has not yet been
assigned to another drawable source created with the constructor overload.
*/
EXPORT_C TInt RDirectGdiDrawableSource::Create(const RSgDrawable& aDrawable)
{
GRAPHICS_ASSERT_ALWAYS(iDriver, EDirectGdiPanicDrawableSourceWithoutDriver);
return iDriver->CreateDrawableSource(*this, aDrawable);
}
/**
Destroys the DirectGDI adaptation-specific resource associated with this handle.
Calling this method on a handle that is not associated with any DirectGDI
adaptation-specific resource will do nothing. Once Close() is called, this handle can be reused.
@pre The CDirectGdiDriver object for this handle has been set.
@post The DirectGDI specific resource associated with this handle will be destroyed,
at any time. This handle is no longer associated with a DirectGDI specific
resource. The reference counter of the underlying drawable resource is
decremented.
@panic DGDI 18, if this drawable source has no pointer to its assosicated CDirectGdiDriver.
This may occur if constructed using the default constructor, and has not yet been
assigned to another drawable source created with the constructor overload.
*/
EXPORT_C void RDirectGdiDrawableSource::Close()
{
if (iHandle != KNullHandle)
{
GRAPHICS_ASSERT_ALWAYS(iDriver, EDirectGdiPanicDrawableSourceWithoutDriver);
iDriver->CloseDrawableSource(*this);
}
}