--- /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 <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_*/