<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:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">+1 to the “pure getter/setters” idea.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">This would also greatly benefit “bean heads” like myself (Java devs).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> vtk-developers [mailto:vtk-developers-bounces@vtk.org]
<b>On Behalf Of </b>David Lonie<br>
<b>Sent:</b> Tuesday, March 24, 2015 8:27 AM<br>
<b>To:</b> David Gobbi<br>
<b>Cc:</b> VTK Developers<br>
<b>Subject:</b> [EXTERNAL] Re: [vtk-developers] Tcl wrapping and output array arguments<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">On Mon, Mar 23, 2015 at 5:51 PM, David Gobbi <<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>> wrote:<o:p></o:p></p>
<div>
<p class="MsoNormal">Hi David,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It's apparent to me that part of the difficulty surrounding this change is<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">due to the name of the method.  Why not use a new name?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">bool ComputeBoundsForViewport(vtkViewport *, double bounds[6]);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I confess that I have an ulterior motive.  I like all Get() or Set() methods<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">to get/set a property that depends only on the the object itself.  Here,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">the Bounds depend on both the object and on a second object.  So I<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">don't consider this method to be a "getter" in the strict sense, hence<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">"ComputeBounds" rather than "GetBounds".<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Basically, I like it when Get methods are associated with properties/traits<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">of the object.  Eventually, VTK's wrappers might associate Set/Get<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">methods with Python properties.  In fact, this idea can already be seen<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">in action in tvtk, Enthought's Traited VTK.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hmm, and this also wouldn't require the 'using' wrapper support right away...I like it! The distinction between Get/Compute makes sense.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The name is a bit long, and "ForViewport" is implied by the arguments. I'd like ComputeBounds, but that's already a virtual on many of these classes.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Now I'm leaning towards<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">vtkBoundingBox ComputeBoundingBox(vtkViewport *)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">That would also:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- eliminate the output-array-arg issues with the Tcl wrappers (Yay!)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- encourage use of the vtkBoundingBox class, which is a really nice API for working with a bounding box that leads to much, much more consistent and readable usage (there are a few approaches used for, e.g. invalid bounds, that aren't always
 consistent).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It needs a couple hints to be wrapped properly, but that's not nearly as much trouble :)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Dave<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>

<HR>This e-mail, including any attached files, may contain confidential and privileged information for the sole use of the intended recipient.  Any review, use, distribution, or disclosure by others is strictly prohibited.  If you are not the intended recipient (or authorized to receive information for the intended recipient), please contact the sender by reply e-mail and delete all copies of this message.<BR>
</body>
</html>