<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" 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)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.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";}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 77.95pt 1.0in 77.95pt;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="Section1">
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">========================================<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">Hello: I posted a similar question some time ago and got no response. Since then I have found a workaround to solve my problem.<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">But on Oct 13, 2009, Microsoft pushed a Windows update for KB958869. All the sudden my workaround failed to work. The MS update changed the Windows GdiPlus.dll file
to prevent centain buffer overrun issues.<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">Can anyone please help?<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">Here is the code that gives the problem. It is 2D image rotating with vtkImageReslice and vtkTransform.
<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">If you try the code, it works just fine! The problem is, we are using the code in the same application that uses a 3rd party library utilizing DirectX hardware acceleration.
After we initialize the DirectX based library, the code below would fail with nDim[0]==1. Once we comment the 3rd party library, the code would work perfect as expected.<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">vtkImageData *pvtkImageData1;<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pvtkImageData1= vtkImageData::New();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pvtkImageData1->SetDimensions(nOriginalWidth,nOriginalHeight,1);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pvtkImageData1->SetScalarTypeToFloat();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pvtkImageData1->SetNumberOfScalarComponents(1);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">//here, need to put image data in pvtkImageData1. Size is
<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">//nOriginalWidthXnOriginalHeight<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">vtkTransform *pTransForm = vtkTransform::New();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pTransForm->Identity();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pTransForm->RotateZ(fAngle);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">vtkImageReslice *pImageReslice = vtkImageReslice::New();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetOutputDimensionality(2);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetResliceAxesDirectionCosines(1,0,0,0,1,0,0,0,1);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetResliceTransform(pTransForm);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetInput(pvtkImageData1);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">vtkImageChangeInformation* centering =vtkImageChangeInformation::New();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">centering->SetInput(pvtkImageData1);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">centering->CenterImageOn();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetInput(centering->GetOutput());<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetResliceAxesOrigin(0,0,0);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->SetOutputExtentToDefault();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->GetOutput()->SetUpdateExtentToWholeExtent();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->Update();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pImageReslice->GetOutput()->Update();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">vtkImageData *pvtkOutImageData = pImageReslice->GetOutput();<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">int nDim[3];<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">pvtkOutImageData->GetDimensions(nDim);<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">//===================Error===========================<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">//at this point the nDim[0] return 1, which is wrong.<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">//nDim[0] should be at least nOriginalWidth.<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt"><o:p> </o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">Thanks!<o:p></o:p></span></font></p>
<p class="MsoPlainText"><font size="2" face="Courier New"><span style="font-size:
10.0pt">Thomas<o:p></o:p></span></font></p>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1">The information in this email, including any attachments, is confidential and intended only for the recipient(s) listed. Any use of this email for any other purpose is prohibited. If you have received this email in error,
please notify me immediately by reply email, delete this email, and do not disclose its contents to anyone.<br>
</font>
</body>
</html>