diff -r 000000000000 -r 5d03bc08d59c windowing/windowserver/inc/Graphics/displaymapping.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/inc/Graphics/displaymapping.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,138 @@ +// Copyright (c) 2008-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: +// + +/** + @file + @publishedPartner + @prototype +*/ + +#ifndef DISPMAP_CLIENT_H_ +#define DISPMAP_CLIENT_H_ +#include + +/** Defines the coordinate space UID values for use with + MDisplayMappingBase::MapCoordinates(). +*/ +enum TCoordinateSpace + { + /** + Application coordinate space, possibly offset but not scaled + relative to full-screen space. + */ + EApplicationSpace = 0x1028656F, + /** + User interface coordinate space, possibly scaled but not offset + relative to composition space. + */ + EFullScreenSpace = 0x10286570, + /** + Composition coordinate space, used by composition back-end in + compositing the display contents. + */ + ECompositionSpace = 0x10286571, + /** + Coordinate space for the DSA buffer. May be offset but not scaled + relative to both application and full-screen spaces. Identical to + full-screen space if the DSA buffer is used for UI rendering. + */ + EDirectScreenAccessSpace = 0x1028656E + }; + +/** Provides facilities to map coordinates between various coordinate + spaces. + +*/ +class MDisplayMappingBase + { +public: + enum + { + KUidDisplayMappingBase = 0x1028656D, + ETypeId= KUidDisplayMappingBase + }; +public: + /** Maps the source rectangle from a source coordinate space to a + target coordinate space. Since there may be scaling involved, the + target rectangle may be larger or smaller than the source one, or + even become empty. + + Two rectangles that abut each other before mapping, when mapped + using the same source and target space UIDs, shall also abut each + other after mapping. + + @param aSourceSpace source space + @param aSource source rectangle + @param aTargetSpace target space + @param aTarget target rectangle to be filled in + @return KErrNone if successful or KErrNotSupported if invalid TCoordinateSpace + */ + virtual TInt MapCoordinates(TCoordinateSpace aSourceSpace, const TRect& aSource, TCoordinateSpace aTargetSpace, TRect& aTarget) const =0; + }; + +/** Provides the Window Server client coordinate space mapping + functions. + +*/ +class MDisplayMapping : public MDisplayMappingBase + { +public: + enum + { + KUidDisplayMapping = 0x1028656B, + ETypeId= KUidDisplayMapping + }; +public: + /** Retrieves the largest window extent that is visible at the current + display resolution. This may be larger than the size reported by + SizeInPixels(), and have a negative top-left position, for example. + + @see MDisplayControl + @see CWsScreenDevice::SizeInPixels + + @param aExtent extent to be filled in + */ + virtual void GetMaximumWindowExtent(TRect& aExtent) const =0; + /** Returns the maximum useful size for a surface to be shown on the + display at the current resolution, in both pixels and twips. + + This may be larger than both the screen device SizeInPixels() and + the size of the maximum window extent, if the user interface is + being scaled by the display. In general, the value will be the + native display resolution. + + @see MDisplayControl + @see CWsScreenDevice::SizeInPixels + + @param aPixels pixels to be filled in + @param aTwips twips to be filled in + */ + virtual void GetMaximumSurfaceSize(TSize& aPixels, TSize& aTwips) const =0; + /** Retrieves the extent of a window relative to the top-left corner of + the display. + + This will differ from the window's AbsPosition() if the current + screen size mode is offset from the corner of the display, or if + the user interface is being scaled on the display. + + @param aWindow window in question + @param aExtent extent to be filled in + */ + virtual void GetDisplayExtentOfWindow(const RWindowBase& aWindow, TRect& aExtent) const =0; + }; + + + +#endif /*DISPMAP_CLIENT_H_*/