This topic provides an example of flipping and rotating a surface in order to mirror the camera viewfinder during video telephony.
Variant: ScreenPlay. Target audience: Device creators.
When users use the camera at the front of their phone during video telephony, they expect their image to be mirrored like when they look in a mirror. The camera viewfinder renders its content to a graphics surface which is displayed in a window by setting it as the background surface. To mirror the viewfinder content, first flip the surface and then rotate it by 180°.
The following example code assumes that the surface already exists. Call TSurfaceConfiguration::SetFlip() to flip the surface, then call TSurfaceConfiguration::SetOrientation() to rotate the flipped surface by 180°. Finally bind the surface to the window. If necessary, set attributes such as extent to the surface configuration.
TSurfaceConfiguration config; RWindow iWindow; // Set the surface ID. config.SetSurfaceId(iSurfaceId); // Get the window size and set the extent. const TRect windowSize(iWindow->Size()); config.SetExtent(windowSize); // Set the flipping config.SetFlip(ETrue); // Rotate the flipped surface by 180° config.SetOrientation(CFbsBitGc::EGraphicsOrientationRotated180); // Bind the surface to the window using the configuration iWindow.SetBackgroundSurface(config, ETrue);