Symbian3/PDK/Source/GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1.dita
Addition of the PDK content and example code for Documentation_content according to Feature bug 1607 and bug 1608
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License
"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:
-->
<!DOCTYPE concept
PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1" xml:lang="en"><title>ICLExample:
Decoding/Encoding an image using the Image Conversion Library</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>This example application demonstrates how to convert still images, stored
in files or descriptors, to and from bitmap objects using the Image Conversion
Library (ICL) API. It is located in the folder <filepath>examples\Multimedia\ICL\ICLExample</filepath>. </p>
<p>The overview contains the following sections: </p>
<ul>
<li id="GUID-70281B70-B9AB-5F9A-9BA6-B0BF59ECC920-GENID-1-7-1-18-1-1-4-1-7-1-2-3-1"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1.dita#GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1/GUID-647B9A06-3049-516A-962B-65FA9DBB47F8-GENID-1-7-1-18-1-1-4-1-7-1-2-4">Description</xref> </p> </li>
<li id="GUID-8E979A69-630A-592F-A5A0-1C52ED0FFF19-GENID-1-7-1-18-1-1-4-1-7-1-2-3-2"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1.dita">Class summary</xref> </p> </li>
<li id="GUID-A01E2A97-0181-5F3E-AEAB-C23EAAC17507-GENID-1-7-1-18-1-1-4-1-7-1-2-3-3"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1.dita#GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1/GUID-F1138207-7784-508F-9459-00D5AF1E2296-GENID-1-7-1-18-1-1-4-1-7-1-2-7">Build</xref> </p> </li>
<li id="GUID-DE2CD182-FA6C-5678-8DFC-67CB19F45499-GENID-1-7-1-18-1-1-4-1-7-1-2-3-4"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-7-1-18-1-1-4-1-7-1.dita">Example code</xref> </p> </li>
</ul>
<section id="GUID-647B9A06-3049-516A-962B-65FA9DBB47F8-GENID-1-7-1-18-1-1-4-1-7-1-2-4"><title>Description</title> <p>The
example application demonstrates how to encode, decode, rotate and scale an
image using the plug-ins provided by ICL. It covers the following scenarios: </p> <ul>
<li id="GUID-F9DDC56D-CD21-5CBF-9485-D89E06A60FAC-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-1"><p>Decoding an image format
from a descriptor or a file </p> </li>
<li id="GUID-55D04700-D816-5EC7-A3A1-0F44C1EFF8D5-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-2"><p>Encoding an image format
into a descriptor </p> </li>
<li id="GUID-FF25D3AA-FAB0-51F1-ACE8-4F052DAEE3EE-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-3"><p>Rotating a bitmap </p> </li>
<li id="GUID-184C07E7-EDD6-56B9-8E81-A8724A00535A-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-4"><p>Scaling a bitmap with
or without a mask. </p> </li>
<li id="GUID-212AC95D-644C-5CEC-A52F-0C344AF01A94-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-5"><p>Stiching images together
to form a panorama </p> </li>
<li id="GUID-034A7112-AA13-509B-AE59-1B20C905A9A0-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-6"><p>Various image processing
techniques </p> </li>
<li id="GUID-8632CD10-43A3-57E0-BBF2-45BD04CFE108-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-7"><p>Various image transformation
techniques </p> </li>
<li id="GUID-3126D256-DA5D-5715-9C94-F65AE488ADF9-GENID-1-7-1-18-1-1-4-1-7-1-2-4-3-8"><p>Working with Scalado
SpeedView objects(Spmo) inside an image </p> </li>
</ul> <p> <b>Note:</b> An ECom session is started internally by the ICL framework,
as it uses the ECom framework. The session is ended by calling the <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> function. </p> <p><b>Decoding
an image format from a descriptor or a file</b> </p> <p>The application creates
and initialises a decoder (<xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref>) object to decode
either from a descriptor or a file to a bitmap. It uses the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> functions to specify the descriptor and file image sources respectively.
After the source is specified, the application creates a bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>)
object to store the decoded image. Finally, the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> function
is called to start decoding process. </p> <p>Apart from decoding an image
from a file or a descriptor to a bitmap, the example application also demonstrates
the following: </p> <ul>
<li id="GUID-A9AF5D36-6757-53C7-8C33-3508A15A1235-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-1"><p>decoding a JPEG image
to a YUV format image frame using a <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder</apiname></xref> object.
Before starting the decoding process by calling the <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita#GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6/GUID-EFB3F4C9-DDE1-359A-8326-71ECFEAF6759"><apiname>CJPEGImageFrameDecoder::ConvertFrame()</apiname></xref> function,
the <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita#GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6/GUID-616A39D6-ED24-34B8-93CB-A6FAB4B0C734"><apiname>CJPEGImageFrameDecoder::RecommendedBufferSize()</apiname></xref> function
is called to find out whether the image supports YUV format or not. </p> </li>
<li id="GUID-6845715A-5095-5628-97F3-DA0D93E61B80-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-2"><p>accessing the thumbnail
and Exif (Exchangeable Image File Format) metadata of a JPEG image using a <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder</apiname></xref> object </p> </li>
<li id="GUID-10F30C96-210C-511C-9008-706AD3A99859-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-3"><p>decoding a JPEG image
thumbnail to a bitmap </p> </li>
<li id="GUID-6FF227DC-2C7C-5DD2-81C5-DC5F118BC503-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-4"><p>decoding an image to
bitmaps of different sizes using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-1A1E7557-A6C7-3681-B71B-40D8489F5AFD"><apiname>CImageDecoder::ReductionFactor()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6127DC9C-5AFD-3BD8-A345-49EA2057360B"><apiname>CImageDecoder::ReducedSize()</apiname></xref> functions </p> </li>
<li id="GUID-215B6A79-E878-5556-845E-4FFB6BB1BBE5-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-5"><p>decoding an image in
a separate thread using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-23C9224C-1A13-30A2-92F1-12694198EE52"><apiname>CImageDecoder::EOptionAlwaysThread</apiname></xref> option </p> </li>
<li id="GUID-1F4C0BD0-C550-513F-937B-8297B69A029F-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-6"><p>decoding a multi-frame
GIF image to bitmap </p> </li>
<li id="GUID-2AB1A762-CDA3-5072-8D93-56D4BB3D78C5-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-7"><p>decoding a GIF image
to a bitmap with a mask </p> </li>
<li id="GUID-28D62885-CDAF-50F9-9133-0A5EE5CF8D59-GENID-1-7-1-18-1-1-4-1-7-1-2-4-8-8"><p>displaying comments
attached to the image and its frames, using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-F7CADA2E-4B76-3B23-B5CA-92CD652E9A97"><apiname>CImageDecoder::ImageCommentL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-28A8EF22-C0C8-32BB-B9F3-96588F63A321"><apiname>CImageDecoder::FrameCommentL()</apiname></xref> functions. </p> </li>
</ul> <p><b>Encoding an image format into a descriptor</b> </p> <p>The application
creates and initialises an encoder (<xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref>) object
to encode the bitmap to a descriptor. It uses the <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-51ECB4D3-5A87-35E7-82EB-DF2BAEAB2CAC"><apiname>CImageEncoder::DataNewL()</apiname></xref> function
to specify the descriptor to be used to store the encoded image. The application
creates a bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>) object to represent the source
bitmap. Finally, the <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-E1CADEBF-E502-3F7E-85D1-C6AA63E497FE"><apiname>CImageEncoder::Convert()</apiname></xref> function
is called to start the encoding process. </p> <p>Apart from encoding a bitmap
to a descriptor, the example application also demonstrates the following: </p> <ul>
<li id="GUID-A16B7B77-5C4B-5BBF-816B-571F8D97AA35-GENID-1-7-1-18-1-1-4-1-7-1-2-4-12-1"><p>accessing the thumbnail
and setting Exif metadata using <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref> and <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> objects </p> </li>
<li id="GUID-1DF1F3A5-0A2F-5457-ABCC-0EE2E465FDAE-GENID-1-7-1-18-1-1-4-1-7-1-2-4-12-2"><p>resizing an image and
preserving image data using an object of the <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> class </p> </li>
<li id="GUID-D1182BFF-B7E7-5FDF-BD67-CD1BE9AAE0C6-GENID-1-7-1-18-1-1-4-1-7-1-2-4-12-3"><p>adding a thumbnail and
Exif metadata to a JPEG image using <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref>, <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref> and <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> objects. </p> </li>
</ul> <p><b>Rotating a bitmap</b> </p> <p>The example application rotates
a bitmap using an object of the <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator</apiname></xref> class. </p> <p><b> Scaling
a bitmap with and without a mask</b> </p> <p>The example application scales
a bitmap using an object of the <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> class. </p> <p><b>Basic
panorama stitching</b> </p> <p>The example application stitches the individual
images into a panorama image, It uses an object of the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> class
for doing this. </p> <p><b>Panorama stitching based on viewfinder tracking</b> </p> <p>The
example application stitches the images together to form panorama based on
viewfinder tracking. It uses an object of the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> class
for doing this. </p> <p><b>Basic image processing</b> </p> <p>The example
application demonstrates how to scale an image and re-encode at a specific
quality. It uses the <xref href="GUID-EAC2B181-7280-3616-8F33-5C32376A7CF2.dita"><apiname>CImgProcessorObserverStub</apiname></xref> and <xref href="GUID-244CB9D9-1501-35A2-836F-6F6A38DFC374.dita"><apiname>CImgProcessor</apiname></xref> classes
for doing this. </p> <p><b>Image processing with some basic effects</b> </p> <p>The
example demonstrates how to crop an image, apply effects and geometrical operations
to it and re-encode the image to a specific size and quality. It uses a class <xref href="GUID-67233C77-F232-3DEE-BFF1-201FEE29583D.dita"><apiname>TGeometricalOperation</apiname></xref> in
addition to the above mentioned classes. </p> <p><b>Generating Scalado SpeedView
objects (Spmo)</b> </p> <p>The example generates the Spmo objects and adds
them to an image file </p> <p><b>Removing effects from the images</b> </p> <p>The
example application removes the effects applied tpo an image. It uses the
class <xref href="GUID-A14BF41D-3F11-3CFB-9502-28E884DA632D.dita"><apiname>TEffectRotation</apiname></xref> in addition to the basic image processor
classes. </p> <p><b>Adding effects to the images and generating a preview</b> </p> <p>Effects
are added to the images and a preview of images is generated . It uses <xref href="GUID-343B0A46-FB35-3B00-A3EF-A4E2CD99997B.dita"><apiname>TEffect</apiname></xref> and <xref href="GUID-A7B72C01-BD38-3F0A-B79E-61994D700D2E.dita"><apiname>TPreview</apiname></xref> classes
in addition to the above mentioned basic image processing classes. </p> <p><b>Adding
effects to the images and generating an overlay</b> </p> <p>The example demonstrates
overlay of a PNG image on a JPEG image. The overlay can be re-sized and repositioned
through a preview before encoding it into the image. It uses <xref href="GUID-B2DFC582-0B16-3BED-831B-A448A04ACA44.dita"><apiname>TOverlay</apiname></xref> class
in addition to the above mentioned classes. </p> <p><b>Adding a SpeedView
object to the image</b> </p> <p>The example adds a SpeedView object to an
image which has been processed. It uses <xref href="GUID-79F4A36C-E544-3FD7-BBD0-9A4E59008E5B.dita"><apiname>TCapsImageProcessorExtension</apiname></xref> class
in additioned to the above mentioned classes </p> <p><b>Squeeze an image from
a file to a file</b> </p> <p>The example squeezes an image from a file to
file. It uses <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> and<xref href="GUID-11036D6A-55DB-353A-ABA6-C5A5788F4C9A.dita"><apiname>CSqueezeTransformExtension</apiname></xref> for
doing this. </p> <p><b>Squeeze an image from buffer to buffer</b> </p> <p>The
example squeezes an image from a buffer to a buffer. </p> <p><b>Auto squeeze
an image from file to file</b> </p> <p>The example auto squeezes an image
from file to file </p> <p><b>Rotate an image from file to file</b> </p> <p>The
example rotates an image from file to file. </p> <p><b>Blend a jpg data in
file to a file and squeeze it</b> </p> <p>The example generates an overlay
of an image on another image and also squeezes the resultant image from a
file to file. </p><p><b>Note:</b> The application uses an object of the <xref href="GUID-7A6A6EFD-F0DB-3747-9418-A423A613250A.dita"><apiname>TFrameInfo</apiname></xref> class
to store image header information, such as, image size, dimension of the frame,
colour depth and so on.</p> </section>
<section id="GUID-1DFEF992-19E6-4231-BC3C-E996E8C0626C-GENID-1-7-1-18-1-1-4-1-7-1-2-5"><title>Download</title> <p>Click
on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f23a310d-8237-4060-bc6b-b6a1e9813add.zip" scope="external"> ICLExample.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f23a310d-8237-4060-bc6b-b6a1e9813add.html" scope="peer">browse </xref> to view the example code. </p> </section>
<section id="GUID-5859C6F4-EA8F-4CAB-982D-2827DFE958E0-GENID-1-7-1-18-1-1-4-1-7-1-2-6"><title>Class summary</title><p><xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder </apiname></xref> <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder </apiname></xref><xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator </apiname></xref> <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler </apiname></xref> <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform </apiname></xref> <xref href="GUID-4CBAE460-BF54-3F8B-8E5D-BB7EA8633160.dita"><apiname>CGifScaler </apiname></xref> <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder </apiname></xref> <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder </apiname></xref> <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder </apiname></xref> <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama </apiname></xref> <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform </apiname></xref> <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker </apiname></xref> <xref href="GUID-244CB9D9-1501-35A2-836F-6F6A38DFC374.dita"><apiname>CImgProcessor </apiname></xref> <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform </apiname></xref> <xref href="GUID-11036D6A-55DB-353A-ABA6-C5A5788F4C9A.dita"><apiname>CSqueezeTransformExtension </apiname></xref> <xref href="GUID-593AD11D-3CE7-39E7-B5FE-EDEDABE8D936.dita"><apiname>COrientationTransformExtension </apiname></xref> <xref href="GUID-83EA2789-C3FE-383A-B81F-E9E362FE4283.dita"><apiname>COverlayTransformExtension </apiname></xref> <xref href="GUID-0ABAE4E1-FD74-30D5-9760-E2AB4910A6CE.dita"><apiname>CCapsSpmo </apiname></xref> <xref href="GUID-0090C69C-004A-33A8-8EEA-A0B4238A356A.dita"><apiname>CapsSpmoUtility </apiname></xref> <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata </apiname></xref> <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname> MExifMetadataWriter </apiname></xref> <xref href="GUID-8AA987C9-456B-3E7C-95C2-C5578EE977B9.dita"><apiname>TExifReaderUtility </apiname></xref><xref href="GUID-62EA502C-FBE8-39A8-AEC6-3104C15F18C9.dita"><apiname>TExifWriterUtility </apiname></xref> <xref href="GUID-343B0A46-FB35-3B00-A3EF-A4E2CD99997B.dita"><apiname>TEffect </apiname></xref> <xref href="GUID-67233C77-F232-3DEE-BFF1-201FEE29583D.dita"><apiname>TGeometricalOperation </apiname></xref> <xref href="GUID-A14BF41D-3F11-3CFB-9502-28E884DA632D.dita"><apiname> TEffectRotation </apiname></xref> <xref href="GUID-A7B72C01-BD38-3F0A-B79E-61994D700D2E.dita"><apiname>TPreview </apiname></xref> <xref href="GUID-B2DFC582-0B16-3BED-831B-A448A04ACA44.dita"><apiname>TOverlay </apiname></xref> <xref href="GUID-79F4A36C-E544-3FD7-BBD0-9A4E59008E5B.dita"><apiname>TCapsImageProcessorExtension </apiname></xref> </p></section>
<section id="GUID-F1138207-7784-508F-9459-00D5AF1E2296-GENID-1-7-1-18-1-1-4-1-7-1-2-7"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian build process</xref> describes
how to build an application. </p> <p>The <codeph>IclExample</codeph> builds
an executable called <filepath>iclexample.exe</filepath> in the standard location
(<filepath>\epoc32\release\winscw\</filepath> <<i>build_variant</i> > for
CodeWarrior). After launching the executable, depending on the emulator you
are using, you may need to task away from the application launcher/shell screen
to view the console. </p> </section>
</conbody></concept>