os/mm/imagingandcamerafws/imagingfws/MediaClientImage/Documentation/ImageConverterAPI.rtf
Update contrib.
1 {\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;}}
2 {\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;
3 \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
4 \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;}{
5 \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
6 {\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;}{
7 \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
8 {\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;}{
9 \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
10 \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;}{
11 \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;}{
12 \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
13 \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;}{
14 \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;}{
15 \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
16 \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
17 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}
18 {\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
19 \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
20 \par }{\headerf \pard\plain \s16\widctlpar\tqc\tx4153\tqr\tx9000 \scaps\f4\fs16\lang2057 \tab \tab
22 \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}
23 . 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.
25 \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}}}
26 \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
27 \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
28 {\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}
29 Media Server Image Converter API}{\b0\cf2 {\*\bkmkend bkm_StandardTitle}
30 \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
31 \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
32 \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
33 \f4\fs20\lang2057 {\b \row }\pard\plain \s24\sa120\widctlpar \f4\fs22\lang2057\kerning28 {\*\bkmkstart _Toc420152784}
34 \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
35 REF bkm_StandardTitle \\* MERGEFORMAT }}{\fldrslt {\b Media Server Image} Converter API}}
36 \par \pard \s16\widctlpar\brdrt\brdrs\brdrw15\brsp20 \tqc\tx4153\tqr\tx9000 {\field{\*\fldinst REF bkm_DocDate \\* MERGEFORMAT }{\fldrslt 13th October 1999}}\tab \tab
37 \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 {
38 \lang1024 4}}} of {\field{\*\fldinst NUMPAGES }{\fldrslt {\lang1024 1}}}
39 \par }\pard\plain \s32\sa240\pagebb\widctlpar \b\f4\fs28\lang2057 Contents{\*\bkmkend _Toc420152784}
40 \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
41 PAGEREF _Toc464560096 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
42 \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}}}}}{
44 \par 1. 2 Document History\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560098 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560098 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
45 \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}}}}}{
47 \par 3. Functional specification\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560100 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560100 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
48 \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}}}}}{
50 \par 3. 2 Scaling\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560102 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560102 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
51 \par 3. 3 Conversions\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560103 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560103 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
52 \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}}}}}{
54 \par 3. 3 .2 Descriptor to bitmap\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560105 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560105 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
55 \par 3. 3 .3 Bitmap to file\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560106 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560106 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
56 \par 3. 3 .4 Bitmap to descriptor\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560107 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560107 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
57 \par 3. 3 .5 Bitmap to bitmap\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560108 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560108 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
58 \par 3. 3 .6 Asynchronous operation signalling\tab }{\field{\*\fldinst {\lang1024 GOTOBUTTON _Toc464560109 }{\field{\*\fldinst {\lang1024 PAGEREF _Toc464560109 }}{\fldrslt {\lang1024 1}}}}}{\lang1024
59 \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
61 \par }\pard\plain \sa120\widctlpar \f4\fs20\lang2057 }}\pard\plain \sa120\widctlpar \f4\fs20\lang2057
62 \par {\*\bkmkstart _Toc420154978}{\*\bkmkstart _Toc420156456}{\*\bkmkstart _Toc420075413}{\*\bkmkstart _Toc420152786}{\*\bkmkstart _Toc420153072}{\pntext\pard\plain\b\fs28\lang2057\kerning28 1.\tab}\pard\plain
63 \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}
64 {\*\bkmkend _Toc464560096}
65 \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 }
66 \b\f4\lang2057\kerning28 Purpose and scope{\*\bkmkend _Toc420075413}{\*\bkmkend _Toc420152786}{\*\bkmkend _Toc420153072}{\*\bkmkend _Toc420154979}{\*\bkmkend _Toc420156457}{\*\bkmkend _Toc464560097}
67 \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.
68 \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
69 {\*\bkmkend _Toc419889486}{\*\bkmkend _Toc464560098}
70 \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
71 \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
72 \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
73 \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
74 \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
75 \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
76 \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
77 \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
78 \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
79 {\*\bkmkend _Toc464560099}
80 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
81 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:
82 \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
83 \par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}In-memory bitmap (CFbsBitmap/CWsBitmap)
84 \par {\pntext\pard\plain\f1\fs20\lang2057 \'b7\tab}Memory descriptor (complete image data)
85 \par \pard \sa120\widctlpar
86 \par Media Server operations are essentially asynchronous so notification of completion is passed back to the calling code.
87 \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}
88 Functional specification{\*\bkmkend _Toc464560100}
89 \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}
90 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 The following specifies the functionality required for rotation.
92 \par {\f11 class CMdaBitmapRotator : public CBase
95 \par }\pard \fi720\sa120\widctlpar {\f11 enum ERotationAngle
96 \par }\pard \fi720\li720\sa120\widctlpar {\f11 \{
97 \par ERotation90DegreesClockwise,
98 \par ERotation180DegreesClockwise,
99 \par ERotation270DegreesClockwise
101 \par }\pard \sa120\widctlpar {\f11 public:
102 \par }\pard \li720\sa120\widctlpar {\f11 void RotateL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aSrcBitmap,
103 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CFbsBitmap& aTgtBitmap,TRotationAngle aAngle);
104 \par }\pard \li720\sa120\widctlpar {\f11 void RotateL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aBitmap,\tab TRotationAngle aAngle);
105 \par }\pard \fi720\sa120\widctlpar {\f11 void CancelRotation();
106 \par }\pard \sa120\widctlpar {\f11 \tab \};
107 \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}
108 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 The following specifies the functionality required for scaling.
110 \par \pard\plain \s37\widctlpar \f5\fs22\lang3081 {\f11\fs20 class CMdaBitmapScaler : public CBase
112 \par }\pard\plain \sa120\widctlpar \f4\fs20\lang2057 {\f11 public:
113 \par }\pard \li720\sa120\widctlpar {\f11 void ScaleL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aSrcBitmap,
114 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CFbsBitmap& aTgtBitmap,TBool aMaintainAspectRatio = ETrue);
115 \par }\pard \li720\sa120\widctlpar {\f11 void ScaleL(MMdaImageUtilObserver& aObserver,CFbsBitmap& aBitmap,
116 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TSize aDestSize,TBool aMaintainAspectRatio = ETrue);
117 \par }\pard \fi720\sa120\widctlpar {\f11 void CancelScaling();
119 \par }\pard \sa120\widctlpar
120 \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}
121 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 The following class declarations specify the functionality required for conversions. The common conversion and information
122 functions are defined in an abstract base class. This allows the user to write polymorphic code for handling image conversion classes.
124 \par class CMdaImageUtility : public CBase
127 \par // Image conversion
128 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0) = 0;
129 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
130 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0) = 0;
131 \par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL() = 0;
132 \par // Image information
133 \par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
134 \par \tab virtual TInt FrameCount() const;
137 \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
138 {\*\bkmkend _Toc464560104}
139 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
140 \par {\f11 class CMdaImageFileToBitmapUtility : public CMdaImageUtility
143 \par // Object management
144 \par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
145 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
146 \par }\pard \li720\sa120\widctlpar {\f11 void OpenL(const TDesC& aFileName,TMdaClipFormat* aFormat = NULL,
147 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec = NULL,TMdaPackage* aExtra = NULL);
148 \par }\pard \sa120\widctlpar {\f11 \tab void Close();
149 \par // Image conversion
150 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
151 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
152 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
153 \par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
154 \par // Image information
155 \par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
156 \par \tab virtual TInt FrameCount() const;
159 \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
160 {\*\bkmkend _Toc464560105}
161 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
162 \par {\f11 class CMdaImageDescToBitmapUtility : public CMdaImageUtility
165 \par // Object management
166 \par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
167 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
168 \par }\pard \li720\sa120\widctlpar {\f11 void OpenL(const TDesC8& aDescriptor,TMdaClipFormat* aFormat = NULL,
169 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec = NULL,TMdaPackage* aExtra = NULL);
170 \par }\pard \sa120\widctlpar {\f11 \tab void Close();
171 \par // Image conversion
172 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
173 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
174 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
175 \par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
176 \par // Image information
177 \par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
178 \par \tab virtual TInt FrameCount() const;
181 \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
182 {\*\bkmkend _Toc464560106}
183 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
184 \par {\f11 class CMdaImageBitmapToFileUtility : public CMdaImageUtility
187 \par // Object management
188 \par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
189 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
190 \par }\pard \fi720\sa120\widctlpar {\f11 void CreateL(const TDesC& aFileName,TMdaClipFormat* aFormat,
191 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec,TMdaPackage* aExtra);
192 \par }\pard \sa120\widctlpar {\f11 \tab void Close();
193 \par // Image conversion
194 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
195 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
196 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
197 \par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
198 \par // Image information
199 \par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
200 \par \tab virtual TInt FrameCount() const;
203 \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
204 {\*\bkmkend _Toc464560107}
205 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
206 \par {\f11 class CMdaImageBitmapToDescUtility : public CMdaImageUtility
209 \par // Object management
210 \par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
211 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
212 \par }\pard \fi720\sa120\widctlpar {\f11 void CreateL(HBufC8& aDescriptor,TMdaClipFormat* aFormat,
213 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TMdaPackage* aCodec,TMdaPackage* aExtra);
214 \par }\pard \sa120\widctlpar {\f11 \tab void Close();
215 \par // Image conversion
216 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
217 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
218 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
219 \par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
220 \par // Image information
221 \par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
222 \par \tab virtual TInt FrameCount() const;
225 \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
226 {\*\bkmkend _Toc464560108}
227 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
228 \par {\f11 class CMdaImageBitmapToBitmapUtility : public CMdaImageUtility
231 \par // Object management
232 \par \tab CFileToBitmap* NewL(MMdaImageUtilObserver& aObserver,
233 \par }\pard \fi720\li720\sa120\widctlpar {\f11 CMdaServer* aServer = NULL);
234 \par }\pard \fi720\sa120\widctlpar {\f11 void OpenL(CFbsBitmap& aBitmap);
235 \par }\pard \sa120\widctlpar {\f11 \tab void Close();
236 \par // Image conversion
237 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,TInt aFrameNumber = 0);
238 \par \tab virtual void ConvertL(CFbsBitmap& aBitmap,const TRect& aSourceRect,
239 \par }\pard \fi720\li720\sa120\widctlpar {\f11 TInt aFrameNumber = 0);
240 \par }\pard \sa120\widctlpar {\f11 \tab virtual void CancelConvertL();
241 \par // Image information
242 \par \tab virtual const TFrameInfo& FrameInfo(TInt aFrame) const;
243 \par \tab virtual TInt FrameCount() const;
246 \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
247 Asynchronous operation signalling{\*\bkmkend _Toc464560109}
248 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057
249 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
250 MMdaImageUtilObserver}:
252 \par {\f11 class MMdaImageUtilObserver
255 \par \tab virtual void MiuoCreateComplete(TInt aError) = 0;
256 \par \tab virtual void MiuoOpenComplete(TInt aError) = 0;
257 \par \tab virtual void MiuoConvertComplete(TInt aError) = 0;
259 \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
260 {\*\bkmkend _Toc464560110}
261 \par \pard\plain \sa120\widctlpar \f4\fs20\lang2057 Image frame information is supplied in a TFrameInfo object:
263 \par {\f11 class TFrameInfo
266 \par \tab TSize iSizeInPixels;
267 \par \tab TSize iSizeInTwips;
268 \par \tab TInt iBitsPerPixel;
269 \par \tab TBool iColor;
270 \par \tab TPoint iOffsetInPixels;
271 \par \tab TTimeMicroSeconds iDelay;
274 \par Image information is available once the {\f11 OpenL()}or {\f11 CreateL()} function has completed successfully.