<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"Lucida Console";
        panose-1:2 11 6 9 4 5 4 2 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
h4
        {margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:0in;
        font-size:14.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.code, li.code, div.code
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Lucida Console";}
p.sub-warningtitle, li.sub-warningtitle, div.sub-warningtitle
        {margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:0in;
        font-size:14.0pt;
        font-family:Verdana;
        font-weight:bold;
        font-style:italic;}
p.sub-warningtitle0, li.sub-warningtitle0, div.sub-warningtitle0
        {margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:0in;
        font-size:14.0pt;
        font-family:Verdana;
        font-weight:bold;
        font-style:italic;}
p.sub-warningtitle00, li.sub-warningtitle00, div.sub-warningtitle00
        {margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:0in;
        font-size:14.0pt;
        font-family:Verdana;
        font-weight:bold;
        font-style:italic;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:Arial;
        color:windowtext;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle24
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle25
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle26
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle27
        {mso-style-type:personal;
        font-family:Arial;
        color:navy;}
span.EmailStyle28
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.codechar
        {font-family:"Lucida Console";}
span.EmailStyle30
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:35351612;
        mso-list-type:hybrid;
        mso-list-template-ids:-801063206 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>(NOTE: I am now adding the &#8216;FDO Internals&#8217;
email list to the thread)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Frank,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>A couple of additional points,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>1) Regarding the &#8216;bool force&#8217;
option on the proposed GetMinMax() function.</span></font><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'> </span></font><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>I am not really in favor
of offering this option, thus requiring the FDO Provider to scan the image to
determine the min/max values. This is especially true when interfacing with the
FdoRasterDataModel Interface, which is meant for informational purposes only. If
the underlying raster libraries do not offer the min/max values then I would rather
leave their brute force calculation up to the caller rather than providing this
logic in the provider. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>2) I would like to point out that not all of
the raster libraries that our providers deal with offer up the min/max values. For
example the ATIL library only offers access to the bits and bitsUsed per pixel.
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>3) If I read correctly, your proposal to
add the GetMinMax function would mean that GetBitsPerPixel and
GetBitsUsedPerPixel will not be supported. &nbsp;Following up on Sarat&#8217;s comments,
what was your opinion on providing both sets of API functions? I think this may
prove to be more flexible when implementing different raster providers such as
the Autodesk Raster provider and the GDAL Raster provider.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Greg<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>-----Original Message-----<br>
From: <st1:PersonName w:st="on">Frank Warmerdam</st1:PersonName> (External) <br>
Sent: Thursday, March 22, 2007 1:00 AM<br>
To: <st1:PersonName w:st="on">Sarat Venugopal</st1:PersonName><br>
Cc: Greg Boone; <st1:PersonName w:st="on">Jeff Childers</st1:PersonName>; <st1:PersonName
w:st="on">Orest Halustchak</st1:PersonName><br>
<br>
<o:p></o:p></span></font></p>

<p class=MsoPlainText><st1:PersonName w:st="on"><font size=2 face="Courier New"><span
 style='font-size:10.0pt'>Sarat Venugopal</span></font></st1:PersonName> wrote:<o:p></o:p></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; Having looked at both proposals, RFC2 seems to be a superset of
RFC1, in <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; the sense that the number of bits in actual use could be deduced
from <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; the minimum and maximum values. However, from an API perspective,
I <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; believe combining both RFC&#8217;s may be better in many ways.
Here are some <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; thoughts numbered to address each scenario.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Sarat,<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Note, I was really offering RFC2 as a more general alternative to RFC1,<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>and based on my experience with other toolkits, and various application<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>requirements.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; 3. I don&#8217;t really see a need for the boolean m_minMaxSet
&#8211; minimum and <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; maximum values will always exist for the given data model, which <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; defaults to those corresponding to the bit depth and data type,
and <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>&gt; m_minMaxApproximate defaults to true. <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>The purpose of m_minMaxSet was to mark whether the provided min/max<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>values were considered meaningful.&nbsp; So if the file headers provide<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>no min/max information then m_minMaxSet would be false, even if<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>the min/max values were actually set to some absolute range values<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>for the data type.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>But, it is important that we be able to distinguish between min/max<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>values that are just based on the data type, and ones that are based<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>on at least approximate sampling or header values.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>BTW, I do really feel that RFC discussions should take place on the<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>fdo-internal list, in public view for more general feedback.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Best regards,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> <st1:PersonName
w:st="on">Sarat Venugopal</st1:PersonName> <br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, March 22, 2007
12:18 AM<br>
<b><span style='font-weight:bold'>To:</span></b> Greg Boone; <st1:PersonName
w:st="on">Jeff Childers</st1:PersonName><br>
<b><span style='font-weight:bold'>Cc:</span></b> <st1:PersonName w:st="on">Orest
 Halustchak</st1:PersonName>; <st1:PersonName w:st="on">Frank Warmerdam</st1:PersonName>
(External)<br>
<br>
</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>Hi, Greg,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>(Nice to e-meet you, Frank, I have found
your GDAL tools very useful.)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>Having looked at both proposals, RFC2
seems to be a superset of RFC1, in the sense that the number of bits in actual
use could be deduced from the minimum and maximum values. However, from an API
perspective, I believe combining both RFC&#8217;s may be better in many ways.
Here are some thoughts numbered to address each scenario.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Verdana><span style='font-size:10.0pt;
font-family:Verdana'>1<font color=blue><span style='color:blue'>. If the format
provides only the bits used information (such as 11 in Ikonos data), it makes
sense to use this *without* scanning the image further. In</span></font></span></font>
<font size=2 color=blue face=Verdana><span style='font-size:10.0pt;font-family:
Verdana;color:blue'>the combined implementation, </span></font><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>SetBitsUsedPerPixel()</span></font></span><font
size=2 color=blue face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
color:blue'> would set</span></font> <span class=codechar><font size=2
face="Lucida Console"><span style='font-size:10.0pt'>m_minMaxApproximate</span></font></span><font
color=black><span style='color:black'> </span></font><font size=2 color=blue
face=Verdana><span style='font-size:10.0pt;font-family:Verdana;color:blue'>to
true,</span></font> <span class=codechar><font size=2 face="Lucida Console"><span
style='font-size:10.0pt'>m_min</span></font></span> <font size=2 color=blue
face=Verdana><span style='font-size:10.0pt;font-family:Verdana;color:blue'>to</span></font>
0 and <span class=codechar><font size=2 face="Lucida Console"><span
style='font-size:10.0pt'>m_max</span></font></span> <font size=2 color=blue
face=Verdana><span style='font-size:10.0pt;font-family:Verdana;color:blue'>to</span></font>
2^11<font size=2 color=blue face=Verdana><span style='font-size:10.0pt;
font-family:Verdana;color:blue'>, for example</span></font>. <font size=2
color=blue face=Verdana><span style='font-size:10.0pt;font-family:Verdana;
color:blue'>The used bits (11) could be either stored in the data model or
computed when</span></font><font size=2 color=black face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:black'> </span></font><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>GetBitsUsedPerPixel()</span></font></span><font
size=1 color=black face=Verdana><span style='font-size:8.0pt;font-family:Verdana;
color:black'> </span></font><font size=2 color=blue face=Verdana><span lang=EN
style='font-size:10.0pt;font-family:Verdana;color:blue'>is called (say,</span></font><font
size=2 color=black face=Verdana><span lang=EN style='font-size:10.0pt;
font-family:Verdana;color:black'> std::</span></font><span class=codechar><font
size=2 face="Lucida Console"><span style='font-size:10.0pt'>max(minBits(m_min),
minBits(m_max))</span></font></span><font size=2 color=blue face=Verdana><span
lang=EN style='font-size:10.0pt;font-family:Verdana;color:blue'>).<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span lang=EN
style='font-size:10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span lang=EN
style='font-size:10.0pt;font-family:Verdana;color:blue'>This will ensure that
FDO does not scan the image unless the user is specifically interested in the
exact minimum and maximum.</span></font><font size=2 color=black face=Verdana><span
lang=EN style='font-size:10.0pt;font-family:Verdana;color:black'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=black face=Verdana><span lang=EN
style='font-size:10.0pt;font-family:Verdana;color:black'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=blue face=Verdana><span lang=EN
style='font-size:10.0pt;font-family:Verdana;color:blue'>2. If the format
provides minimum and maximum values as part of the header/metadata as Frank
showed, then again no scanning is required and we have exact values. Calling </span></font><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>GetBitsUsedPerPixel()
</span></font></span><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>will return the
appropriate value as given above. </span></font></span><span class=codechar><font
size=2 face="Lucida Console"><span style='font-size:10.0pt'>SetBitsUsedPerPixel()</span></font></span><span
class=codechar><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'> should probably throw an exception in
this case </span></font></span><span class=codechar><font size=2
face="Lucida Console"><span style='font-size:10.0pt'>(m_minMaxApproximate ==
false)</span></font></span><span class=codechar><font size=2 color=blue
face=Verdana><span style='font-size:10.0pt;font-family:Verdana;color:blue'>, as
we already have exact values.</span></font></span><span class=codechar><font
color=blue face=Verdana><span style='font-family:Verdana;color:blue'><o:p></o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>3. I don&#8217;t really
see a need for the boolean </span></font></span><span class=codechar><font
size=2 face="Lucida Console"><span style='font-size:10.0pt'>m_minMaxSet</span></font></span><span
class=codechar><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'> &#8211; minimum and maximum values will
always exist for the given data model, which defaults to those corresponding to
the bit depth and data type, and </span></font></span><span class=codechar><font
size=2 face="Lucida Console"><span style='font-size:10.0pt'>m_minMaxApproximate</span></font></span><span
class=codechar><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'> defaults to true. A subsequent call to </span></font></span><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>SetBitsUsedPerPixel()
</span></font></span><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>or</span></font></span><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>
SetMinMax() </span></font></span><span class=codechar><font size=2 color=blue
face=Verdana><span style='font-size:10.0pt;font-family:Verdana;color:blue'>may
modify these values, with the latter setting </span></font></span><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>m_minMaxApproximate</span></font></span><span
class=codechar><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'> to </span></font></span><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>false.<o:p></o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 face="Lucida Console"><span
style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>To summarize, adding
the public functions from RFC1 provides a great deal of flexibility, without
compromising the more general and accurate approach outlined in RFC2. There is no
need to add a separate variable to store the bits used, which can be computed
when asked for with inline functions. An implementation detail is to eliminate </span></font></span><span
class=codechar><font size=2 face="Lucida Console"><span style='font-size:10.0pt'>m_minMaxSet</span></font></span><span
class=codechar><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>, because having these set always
represents the object state accurately at all times. Combining both approaches
will eliminate the need to scan images unless the user specifically requests
for a full scan, by making use of available metadata.<o:p></o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>I hope it all makes
sense.<o:p></o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'><o:p>&nbsp;</o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>Thanks for asking,<o:p></o:p></span></font></span></p>

<p class=MsoNormal><span class=codechar><font size=2 color=blue face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:blue'>Sarat<o:p></o:p></span></font></span></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=3 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> Greg Boone <br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, March 22, 2007
5:06 AM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">Sarat
 Venugopal</st1:PersonName>; Jeff Childers<br>
<b><span style='font-weight:bold'>Cc:</span></b> <st1:PersonName w:st="on">Orest
 Halustchak</st1:PersonName>; <st1:PersonName w:st="on">Frank Warmerdam</st1:PersonName>
(External)<br>
<br>
</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Sarat, Jeff,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Now that Map 2008 is basically out the
door, we are in a position to try and come up with a resolution for Defect
868055 and hopefully have it implemented for the upcoming release of MapGuide
2008 / FDO 3.2.2. FDO 3.2.2 will be binary compatible with Map 2008.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Our previous discussion on this topic has
now resulted in several proposals on how the FDO Raster interface could be
modified to meet the expected requirements. The pending proposals (and the
discussions leading up to the proposals) are outlined in the following links. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><b><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy;font-weight:bold'>FDO Open
Source Community Discussion Links:<o:p></o:p></span></font></b></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://www.nabble.com/FDO-RFC-1---Support-Property-FdoIRaster%3A%3ABitsUsedPerPixel-tf3398949s18162.html">http://www.nabble.com/FDO-RFC-1---Support-Property-FdoIRaster%3A%3ABitsUsedPerPixel-tf3398949s18162.html</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://www.nabble.com/RE%3A-FDO-RFC-1---Support-PropertyFdoIRaster%3A%3ABitsUsedPerPixel-tf3414749s18162.html">http://www.nabble.com/RE%3A-FDO-RFC-1---Support-PropertyFdoIRaster%3A%3ABitsUsedPerPixel-tf3414749s18162.html</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://www.nabble.com/RE%3A-FDO-RFC-1---SupportPropertyFdoIRaster%3A%3ABitsUsedPerPixel-tf3415706s18162.html">http://www.nabble.com/RE%3A-FDO-RFC-1---SupportPropertyFdoIRaster%3A%3ABitsUsedPerPixel-tf3415706s18162.html</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><b><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy;font-weight:bold'>FDO Open
Source Community &#8216;Request for Comments&#8217; (RFC) links <o:p></o:p></span></font></b></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://trac.osgeo.org/fdo/wiki/FDORfc1">http://trac.osgeo.org/fdo/wiki/FDORfc1</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><a
href="http://trac.osgeo.org/fdo/wiki/FDORfc2">http://trac.osgeo.org/fdo/wiki/FDORfc2</a><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><b><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Can you review the discussions and
proposals? I would welcome your feedback regarding:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'><span style='mso-list:Ignore'>1)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>Which proposal would meet our client requirements?<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'><span style='mso-list:Ignore'>2)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>Can we implement the current proposal using existing ATIL
functionality?<o:p></o:p></span></font></p>

<p class=MsoNormal><b><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks in advance.<o:p></o:p></span></font></p>

<p class=MsoNormal><b><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Greg<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>