author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// 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 <w32std.h> /** 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_*/