imagingandcamerafws/imagingfws/MediaClientImage/Documentation/ImageConverterAPI.rtf
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f5\fswiss\fcharset0\fprq2 Arial;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\sa120\widctlpar \f4\fs20\lang2057 \snext0 Normal;}{\s1\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl1
\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f4\fs28\lang2057\kerning28 \sbasedon0\snext0 heading 1;}{\s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }\b\f4\lang2057\kerning28 \sbasedon1\snext0 heading 2;}{
\s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon1\snext0 heading 3;}{\s4\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl4\pndec\pnqr\pnprev1\pnstart1\pnsp144
{\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon3\snext0 heading 4;}{\s5\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl5\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon3\snext0 heading 5;}{
\s6\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl6\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon3\snext0 heading 6;}{\s7\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl7\pndec\pnqr\pnprev1\pnstart1\pnsp144
{\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon3\snext0 heading 7;}{\s8\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl8\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon3\snext0 heading 8;}{
\s9\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl9\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 \sbasedon3\snext0 heading 9;}{\*\cs10 \additive Default Paragraph Font;}{\s15\sa120\widctlpar\brdrt\brdrs\brdrw15\brsp20
\tqr\tx9000 \scaps\f4\fs16\lang2057 \sbasedon0\snext15 footer;}{\s16\widctlpar\tqc\tx4153\tqr\tx9000 \scaps\f4\fs16\lang2057 \sbasedon0\snext16 header;}{\s17\sb120\sa120\widctlpar\tqr\tldot\tx9027 \b\caps\f4\fs20\lang2057 \sbasedon0\snext0 toc 1;}{
\s18\li220\widctlpar\tqr\tldot\tx9027 \scaps\f4\fs20\lang2057 \sbasedon0\snext0 toc 2;}{\s19\li605\widctlpar\tqr\tldot\tx9027 \f4\fs20\lang2057 \sbasedon0\snext0 toc 3;}{\s20\widctlpar \f4\fs20\lang2057 \sbasedon0\snext20 Table;}{
\s21\sb3600\sa120\widctlpar \b\f4\fs36\cf6\lang2057\kerning28 \sbasedon0\snext21 DocumentTitle;}{\*\cs22 \additive\fs16 \sbasedon10 annotation reference;}{\s23\sa120\widctlpar \f4\fs20\lang2057 \sbasedon0\snext23 annotation text;}{\s24\sa120\widctlpar
\f4\fs22\lang2057\kerning28 \sbasedon0\snext24 DocumentSubTitle;}{\s25\li660\widctlpar\tqr\tldot\tx9027 \f4\fs18\lang2057 \sbasedon0\snext0 toc 4;}{\s26\li880\widctlpar\tqr\tldot\tx9027 \f4\fs18\lang2057 \sbasedon0\snext0 toc 5;}{
\s27\li1100\widctlpar\tqr\tldot\tx9027 \f4\fs18\lang2057 \sbasedon0\snext0 toc 6;}{\s28\li1320\widctlpar\tqr\tldot\tx9027 \f4\fs18\lang2057 \sbasedon0\snext0 toc 7;}{\s29\li1540\widctlpar\tqr\tldot\tx9027 \f4\fs18\lang2057 \sbasedon0\snext0 toc 8;}{
\s30\li1760\widctlpar\tqr\tldot\tx9027 \f4\fs18\lang2057 \sbasedon0\snext0 toc 9;}{\s31\sa240\pagebb\widctlpar \b\f4\fs28\lang2057 \sbasedon0\snext0 HeadingAppendix 1;}{\s32\sa240\pagebb\widctlpar \b\f4\fs28\lang2057 \snext32 Contents;}{\*\cs33 \additive
\sbasedon10 page number;}{\s34\widctlpar \b\f4\fs21\cf8\lang2057 \sbasedon0\snext34 Tabletitle;}{\s35\sb240\sa240\widctlpar \b\f4\lang2057 \sbasedon31\snext0 HeadingAppendix 2;}{\s36\sb120\sa120\widctlpar \b\f4\fs22\lang2057 \sbasedon31\snext0
HeadingAppendix 3;}{\s37\li1298\sa220\nowidctlpar \f5\fs22\lang3081 \sbasedon0\snext37 11 BodyText;}}{\info{\title Functional Specification Template}{\author Lane Roberts}{\operator Andrew Baldwin}{\creatim\yr1999\mo7\dy14\hr18\min33}
{\revtim\yr1999\mo10\dy14\hr19\min21}{\printim\yr1999\mo7\dy15\hr16\min37}{\version3}{\edmins4}{\nofpages8}{\nofwords1106}{\nofchars6309}{\*\company Symbian LTD}{\vern57431}}\paperw11909\paperh16834\margl1440\margr1440\margt1872
\widowctrl\ftnbj\aenddoc\makebackup\hyphcaps0\formshade \fet0\sectd \psz9\linex0\headery709\footery709\colsx709\endnhere\titlepg {\footer \pard\plain \s15\sa120\widctlpar\tqr\tx9000 \scaps\f4\fs16\lang2057
\par }{\headerf \pard\plain \s16\widctlpar\tqc\tx4153\tqr\tx9000 \scaps\f4\fs16\lang2057 \tab \tab
\par
\par }{\footerf \pard\plain \s15\sa120\widctlpar\tqr\tx9000 \scaps\f4\fs16\lang2057 {\cf6 {\*\bkmkstart bkm_Copyright}\'a9 Copyright Symbian LTD 1999}{\*\bkmkend bkm_Copyright}
. This document may not be reproduced in any form, in whole or in part, by any means whatsoever, without the written permission of the copyright holder.
\par
\par \pard \s15\sa120\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9000 \tab {\field{\*\fldinst PAGE }{\fldrslt {\lang1024 1}}} of {\field{\*\fldinst NUMPAGES }{\fldrslt {\lang1024 1}}}
\par }{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\trowd \trgaph108\trleft-108 \cellx8910 \pard\plain \s21\sb3600\sa120\widctlpar\intbl \b\f4\fs36\cf6\lang2057\kerning28 {\b0 {\*\bkmkstart bkm_StandardTitle}
Media Server Image Converter API}{\b0\cf2 {\*\bkmkend bkm_StandardTitle}
\par }\pard\plain \s24\sa120\widctlpar\intbl \f4\fs22\lang2057\kerning28 \cell \pard\plain \widctlpar\intbl \f4\fs20\lang2057 \row \trowd \trgaph108\trleft-108\trbrdrb\brdrs\brdrw15 \cellx2127\cellx8910 \pard\plain \s24\sb720\widctlpar\intbl
\f4\fs22\lang2057\kerning28 Author:\cell {\cf6 {\*\bkmkstart bkm_DocAuthor}Lane Roberts}{\*\bkmkend bkm_DocAuthor}\cell \pard\plain \widctlpar\intbl \f4\fs20\lang2057 {\b \row }\trowd \trgaph108\trleft-108\trbrdrb\brdrs\brdrw15 \clbrdrb\brdrs\brdrw15
\cellx2127\clbrdrb\brdrs\brdrw15 \cellx8910 \pard\plain \s24\widctlpar\intbl \f4\fs22\lang2057\kerning28 Last revised:\cell {\cf6 {\*\bkmkstart bkm_DocDate}13}{\cf6\super th}{\cf6 October 1999}{\*\bkmkend bkm_DocDate}\cell \pard\plain \widctlpar\intbl
\f4\fs20\lang2057 {\b \row }\pard\plain \s24\sa120\widctlpar \f4\fs22\lang2057\kerning28 {\*\bkmkstart _Toc420152784}
\par \pard\plain \s32\sa240\pagebb\widctlpar \b\f4\fs28\lang2057 \sect \sectd \pgwsxn11907\margtsxn1871\linex0\headery709\footery709\colsx709\endnhere {\header \pard\plain \s16\widctlpar\tqr\tx9000 \scaps\f4\fs16\lang2057 \tab {\field{\*\fldinst {\b
REF bkm_StandardTitle \\* MERGEFORMAT }}{\fldrslt {\b Media Server Image} Converter API}}
\par \pard \s16\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4153\tqr\tx9000 {\field{\*\fldinst REF bkm_DocDate \\* MERGEFORMAT }{\fldrslt 13th October 1999}}\tab \tab
\par }{\footer \pard\plain \s15\sa120\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqr\tx9000 \scaps\f4\fs16\lang2057 {\field{\*\fldinst REF bkm_Copyright \\* MERGEFORMAT }{\fldrslt \'a9 Copyright Symbian LTD 1999}}\tab {\field{\*\fldinst PAGE }{\fldrslt {
\lang1024 4}}} of {\field{\*\fldinst NUMPAGES }{\fldrslt {\lang1024 1}}}
\par }\pard\plain \s32\sa240\pagebb\widctlpar \b\f4\fs28\lang2057 Contents{\*\bkmkend _Toc420152784}
\par \pard\plain \s17\sb120\sa120\widctlpar\tqr\tldot\tx9027 \b\caps\f4\fs20\lang2057 {\field\fldedit{\*\fldinst TOC \\o "1-3" }{\fldrslt {\lang1024 1. Introduction\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560096 }{\field{\*\fldinst {\lang1024
PAGEREF _Toc464560096 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par }\pard\plain \s18\li220\widctlpar\tqr\tldot\tx9027 \scaps\f4\fs20\lang2057 {\lang1024 1. 1 Purpose and scope\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560097 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560097 }}{\fldrslt {\lang1024 1}}}}}{
\lang1024
\par 1. 2 Document History\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560098 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560098 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par }\pard\plain \s17\sb120\sa120\widctlpar\tqr\tldot\tx9027 \b\caps\f4\fs20\lang2057 {\lang1024 2. Overview\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560099 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560099 }}{\fldrslt {\lang1024 1}}}}}{
\lang1024
\par 3. Functional specification\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560100 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560100 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par }\pard\plain \s18\li220\widctlpar\tqr\tldot\tx9027 \scaps\f4\fs20\lang2057 {\lang1024 3. 1 Rotation\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560101 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560101 }}{\fldrslt {\lang1024 1}}}}}{
\lang1024
\par 3. 2 Scaling\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560102 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560102 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par 3. 3 Conversions\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560103 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560103 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par }\pard\plain \s19\li605\widctlpar\tqr\tldot\tx9027 \f4\fs20\lang2057 {\lang1024 3. 3 .1 File to bitmap\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560104 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560104 }}{\fldrslt {\lang1024 1}}}}}{
\lang1024
\par 3. 3 .2 Descriptor to bitmap\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560105 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560105 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par 3. 3 .3 Bitmap to file\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560106 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560106 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par 3. 3 .4 Bitmap to descriptor\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560107 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560107 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par 3. 3 .5 Bitmap to bitmap\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560108 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560108 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par 3. 3 .6 Asynchronous operation signalling\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560109 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560109 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
\par }\pard\plain \s18\li220\widctlpar\tqr\tldot\tx9027 \scaps\f4\fs20\lang2057 {\lang1024 3. 4 Image frame information\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560110 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560110 }}{\fldrslt {\lang1024 1
}}}}}{\lang1024
\par }\pard\plain \sa120\widctlpar \f4\fs20\lang2057 }}\pard\plain \sa120\widctlpar \f4\fs20\lang2057
\par {\*\bkmkstart _Toc420154978}{\*\bkmkstart _Toc420156456}{\*\bkmkstart _Toc420075413}{\*\bkmkstart _Toc420152786}{\*\bkmkstart _Toc420153072}{\pntext\pard\plain\b\fs28\lang2057\kerning28 1.\tab}\pard\plain
\s1\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f4\fs28\lang2057\kerning28 \page {\*\bkmkstart _Toc464560096}Introduction{\*\bkmkend _Toc420154978}{\*\bkmkend _Toc420156456}
{\*\bkmkend _Toc464560096}
\par {\*\bkmkstart _Toc420154979}{\*\bkmkstart _Toc420156457}{\*\bkmkstart _Toc464560097}{\pntext\pard\plain\b\lang2057\kerning28 1. 1\tab}\pard\plain \s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }
\b\f4\lang2057\kerning28 Purpose and scope{\*\bkmkend _Toc420075413}{\*\bkmkend _Toc420152786}{\*\bkmkend _Toc420153072}{\*\bkmkend _Toc420154979}{\*\bkmkend _Toc420156457}{\*\bkmkend _Toc464560097}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 This document describes Image Converter API. This interface is intended to be used to perform common conversion operations on images.
\par {\*\bkmkstart _Toc419889486}{\*\bkmkstart _Toc464560098}{\pntext\pard\plain\b\lang2057\kerning28 1. 2\tab}\pard\plain \s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }\b\f4\lang2057\kerning28 Document History
{\*\bkmkend _Toc419889486}{\*\bkmkend _Toc464560098}
\par \trowd \trgaph108\trhdr\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl
\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clshdng6000 \cellx1276\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clshdng6000 \cellx2340
\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clshdng6000 \cellx3300\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr
\brdrs\brdrw15\brdrcf1 \clshdng6000 \cellx8932 \pard\plain \s34\widctlpar\intbl \b\f4\fs21\cf8\lang2057 Date\cell Revision\cell Status\cell Description\cell \pard\plain \widctlpar\intbl \f4\fs20\lang2057 \row \trowd \trgaph108\trbrdrt
\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb
\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx1276\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx2340\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl
\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx3300\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cellx8932 \pard
\sa120\widctlpar\intbl 13-10-1999\cell \pard \qc\sa120\widctlpar\intbl 1\cell \pard \sa120\widctlpar\intbl Draft\cell First draft taken from the Image API Requirements Spec document\cell \pard \widctlpar\intbl \row \pard \sa120\widctlpar
\par {\*\bkmkstart _Toc464560099}{\pntext\pard\plain\b\fs28\lang2057\kerning28 2.\tab}\pard\plain \s1\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f4\fs28\lang2057\kerning28 Overview
{\*\bkmkend _Toc464560099}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
The Media Server Image Utility API provides a number of classes, each one dedicated to a specific image operation. These operations are a subset of all possible ordered pairings of the following set of source/destination types:
\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}\pard \fi-283\li283\sa120\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent283\pnhang{\pntxtb \'b7}}Image file
\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}In-memory bitmap (CFbsBitmap/CWsBitmap)
\par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}Memory descriptor (complete image data)
\par \pard \sa120\widctlpar
\par Media Server operations are essentially asynchronous so notification of completion is passed back to the calling code.
\par {\pntext\pard\plain\b\fs28\lang2057\kerning28 3.\tab}\pard\plain \s1\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl1\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxta .}}\b\f4\fs28\lang2057\kerning28 \page {\*\bkmkstart _Toc464560100}
Functional specification{\*\bkmkend _Toc464560100}
\par {\*\bkmkstart _Toc464560101}{\pntext\pard\plain\b\lang2057\kerning28 3. 1\tab}\pard\plain \s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }\b\f4\lang2057\kerning28 Rotation{\*\bkmkend _Toc464560101}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 The following specifies the functionality required for rotation.
\par
\par {\f11 class CMdaBitmapRotator : public CBase
\par \tab \{
\par public:
\par }\pard \fi720\sa120\widctlpar {\f11 enum ERotationAngle
\par }\pard \fi720\li720\sa120\widctlpar {\f11 \{
\par ERotation90DegreesClockwise,
\par ERotation180DegreesClockwise,
\par ERotation270DegreesClockwise
\par \};
\par }\pard \sa120\widctlpar {\f11 public:
\par }\pard \li720\sa120\widctlpar {\f11 void RotateL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aSrcBitmap,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CFbsBitmap& aTgtBitmap,TRotationAngle aAngle);
\par }\pard \li720\sa120\widctlpar {\f11 void RotateL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aBitmap,\tab TRotationAngle aAngle);
\par }\pard \fi720\sa120\widctlpar {\f11 void CancelRotation();
\par }\pard \sa120\widctlpar {\f11 \tab \};
\par {\*\bkmkstart _Toc464560102}{\pntext\pard\plain\b\lang2057\kerning28 3. 2\tab}}\pard\plain \s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }\b\f4\lang2057\kerning28 Scaling{\*\bkmkend _Toc464560102}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 The following specifies the functionality required for scaling.
\par
\par \pard\plain \s37\widctlpar \f5\fs22\lang3081 {\f11\fs20 class CMdaBitmapScaler : public CBase
\par \tab \{
\par }\pard\plain \sa120\widctlpar \f4\fs20\lang2057 {\f11 public:
\par }\pard \li720\sa120\widctlpar {\f11 void ScaleL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aSrcBitmap,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CFbsBitmap& aTgtBitmap,TBool aMaintainAspectRatio = ETrue);
\par }\pard \li720\sa120\widctlpar {\f11 void ScaleL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aBitmap,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TSize aDestSize,TBool aMaintainAspectRatio = ETrue);
\par }\pard \fi720\sa120\widctlpar {\f11 void CancelScaling();
\par \};
\par }\pard \sa120\widctlpar
\par {\*\bkmkstart _Toc464560103}{\pntext\pard\plain\b\lang2057\kerning28 3. 3\tab}\pard\plain \s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }\b\f4\lang2057\kerning28 Conversions{\*\bkmkend _Toc464560103}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 The following class declarations specify the functionality required for conversions. The common conversion and information
functions are defined in an abstract base class. This allows the user to write polymorphic code for handling image conversion classes.
\par {\f11
\par class CMdaImageUtility : public CBase
\par \tab \{
\par public:
\par // Image conversion
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0) = 0;
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0) = 0;
\par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL() = 0;
\par // Image information
\par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
\par \tab virtual TInt FrameCount() const;
\par \tab \};
\par }
\par {\*\bkmkstart _Toc464560104}{\pntext\pard\plain\b\fs22\lang2057\kerning28 3. 3 .1\tab}\pard\plain \s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 File to bitmap
{\*\bkmkend _Toc464560104}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
\par {\f11 class CMdaImageFileToBitmapUtility : public CMdaImageUtility
\par \tab \{
\par public:
\par // Object management
\par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
\par }\pard \li720\sa120\widctlpar {\f11 void OpenL(const TDesC& aFileName,TMdaClipFormat* aFormat = NULL,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec = NULL,TMdaPackage* aExtra = NULL);
\par }\pard \sa120\widctlpar {\f11 \tab void Close();
\par // Image conversion
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
\par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
\par // Image information
\par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
\par \tab virtual TInt FrameCount() const;
\par \tab \};
\par }
\par {\*\bkmkstart _Toc464560105}{\pntext\pard\plain\b\fs22\lang2057\kerning28 3. 3 .2\tab}\pard\plain \s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 Descriptor to bitmap
{\*\bkmkend _Toc464560105}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
\par {\f11 class CMdaImageDescToBitmapUtility : public CMdaImageUtility
\par \tab \{
\par public:
\par // Object management
\par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
\par }\pard \li720\sa120\widctlpar {\f11 void OpenL(const TDesC8& aDescriptor,TMdaClipFormat* aFormat = NULL,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec = NULL,TMdaPackage* aExtra = NULL);
\par }\pard \sa120\widctlpar {\f11 \tab void Close();
\par // Image conversion
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
\par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
\par // Image information
\par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
\par \tab virtual TInt FrameCount() const;
\par \tab \};
\par }
\par {\*\bkmkstart _Toc464560106}{\pntext\pard\plain\b\fs22\lang2057\kerning28 3. 3 .3\tab}\pard\plain \s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 Bitmap to file
{\*\bkmkend _Toc464560106}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
\par {\f11 class CMdaImageBitmapToFileUtility : public CMdaImageUtility
\par \tab \{
\par public:
\par // Object management
\par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
\par }\pard \fi720\sa120\widctlpar {\f11 void CreateL(const TDesC& aFileName,TMdaClipFormat* aFormat,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec,TMdaPackage* aExtra);
\par }\pard \sa120\widctlpar {\f11 \tab void Close();
\par // Image conversion
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
\par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
\par // Image information
\par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
\par \tab virtual TInt FrameCount() const;
\par \tab \};
\par }
\par {\*\bkmkstart _Toc464560107}{\pntext\pard\plain\b\fs22\lang2057\kerning28 3. 3 .4\tab}\pard\plain \s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 Bitmap to descriptor
{\*\bkmkend _Toc464560107}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
\par {\f11 class CMdaImageBitmapToDescUtility : public CMdaImageUtility
\par \tab \{
\par public:
\par // Object management
\par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
\par }\pard \fi720\sa120\widctlpar {\f11 void CreateL(HBufC8& aDescriptor,TMdaClipFormat* aFormat,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec,TMdaPackage* aExtra);
\par }\pard \sa120\widctlpar {\f11 \tab void Close();
\par // Image conversion
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
\par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
\par // Image information
\par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
\par \tab virtual TInt FrameCount() const;
\par \tab \};
\par }
\par {\*\bkmkstart _Toc464560108}{\pntext\pard\plain\b\fs22\lang2057\kerning28 3. 3 .5\tab}\pard\plain \s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28 Bitmap to bitmap
{\*\bkmkend _Toc464560108}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
\par {\f11 class CMdaImageBitmapToBitmapUtility : public CMdaImageUtility
\par \tab \{
\par public:
\par // Object management
\par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
\par }\pard \fi720\sa120\widctlpar {\f11 void OpenL(CFbsBitmap& aBitmap);
\par }\pard \sa120\widctlpar {\f11 \tab void Close();
\par // Image conversion
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
\par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
\par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
\par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
\par // Image information
\par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
\par \tab virtual TInt FrameCount() const;
\par \tab \};
\par }
\par {\*\bkmkstart _Toc464560109}{\pntext\pard\plain\b\fs22\lang2057\kerning28 3. 3 .6\tab}\pard\plain \s3\fi-1151\sb120\sa120\keepn\widctlpar{\*\pn \pnlvl3\pndec\pnqr\pnprev1\pnstart1\pnsp144 {\pntxtb .}}\b\f4\fs22\lang2057\kerning28
Asynchronous operation signalling{\*\bkmkend _Toc464560109}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
All functions complete immediately but the operations initiated by some are asynchronous. Completion of the operation is signalled by the object calling the appropriate observer function on an instantiation of a class derived from {\f11
MMdaImageUtilObserver}:
\par
\par {\f11 class MMdaImageUtilObserver
\par \tab \{
\par public:
\par \tab virtual void MiuoCreateComplete(TInt aError) = 0;
\par \tab virtual void MiuoOpenComplete(TInt aError) = 0;
\par \tab virtual void MiuoConvertComplete(TInt aError) = 0;
\par \tab \};}
\par {\*\bkmkstart _Toc464560110}{\pntext\pard\plain\b\lang2057\kerning28 3. 4\tab}\pard\plain \s2\fi-1151\sb240\sa240\keepn\widctlpar{\*\pn \pnlvl2\pndec\pnqr\pnprev1\pnstart1\pnsp144 }\b\f4\lang2057\kerning28 Image frame information
{\*\bkmkend _Toc464560110}
\par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 Image frame information is supplied in a TFrameInfo object:
\par
\par {\f11 class TFrameInfo
\par \tab \{
\par public:
\par \tab TSize iSizeInPixels;
\par \tab TSize iSizeInTwips;
\par \tab TInt iBitsPerPixel;
\par \tab TBool iColor;
\par \tab TPoint iOffsetInPixels;
\par \tab TTimeMicroSeconds iDelay;
\par \tab \};
\par }
\par Image information is available once the {\f11 OpenL()}or {\f11 CreateL()} function has completed successfully.
\par }