[vtk-developers] proposed vtkTextActor patch for cut-off text.
Kathleen S. Biagas
biagas2 at llnl.gov
Fri Mar 22 13:16:22 EDT 2013
On Fri, 2013-03-22 at 09:56 -0400, David Lonie wrote:
> On Thu, Mar 21, 2013 at 1:27 PM, Kathleen S. Biagas <biagas2 at llnl.gov>
> wrote:
> I have a change to vtkTextActor.cxx that I would like to
> submit for
> consideration. It corrects an issue that crops up for us on
> some
> systems, where a portion of text is not rendered fully (top
> row of
> pixels appears cut-off). I have a small test that
> demonstrates the
> issue (at least on my RHEL6 system). I didn't want to submit
> the change
> in gerrit without understanding the procedure for providing
> the
> reproducer along side. Tips on that?
>
>
> Try adding another text actor to these tests that shows the problem:
>
>
> VTK/Rendering/FreeType/Testing/Cxx/TestMathTextFreeTypeTextRenderer
>
> VTK/Rendering/FreeType/Testing/Cxx/TestMathTextFreeTypeTextRendererNoMath
>
>
>
> and the push the test to gerrit (along with the fix).
>
>
> If this is a common problem, we may want to attack the problem in the
> text rendering code (rather than the actor), but let's see what we can
> find out.
>
Will do,
Kathleen
>
> Thanks!
> Dave
>
> Thanks,
>
> Kathleen
>
> Here's the patch:
>
>
> --- /VTK-462c2c1/Rendering/FreeType/vtkTextActor.cxx
> 2013-03-20
> 07:51:43.000000000
> +++ /vtkTextActor.cxx 2013-03-18 09:41:01.000000000
> @@ -635,22 +635,27 @@
> dims[0] = ( text_bbox[1] - text_bbox[0] + 1 );
> dims[1] = ( text_bbox[3] - text_bbox[2] + 1 );
>
> // compute TCoords.
> vtkFloatArray* tc = vtkFloatArray::SafeDownCast
> ( this->Rectangle->GetPointData()->GetTCoords() );
> + float tcXMax, tcYMax;
> + // Add a fudge factor to the texture coordinates to
> prevent the top
> + // row of pixels from being truncated on some systems.
> + tcXMax = fminf(1.0, (dims[0] + 0.001) /
> static_cast<float>(p2dims[0]));
> + tcYMax = fminf(1.0, (dims[1] + 0.001) /
> static_cast<float>(p2dims[1]));
> tc->InsertComponent(0, 0, 0.0);
> tc->InsertComponent(0, 1, 0.0);
>
> tc->InsertComponent(1, 0, 0.0);
> - tc->InsertComponent(1, 1, dims[1] /
> static_cast<float>(p2dims[1]));
> + tc->InsertComponent(1, 1, tcYMax);
>
> - tc->InsertComponent(2, 0, dims[0] /
> static_cast<float>(p2dims[0]));
> - tc->InsertComponent(2, 1, dims[1] /
> static_cast<float>(p2dims[1]));
> + tc->InsertComponent(2, 0, tcXMax);
> + tc->InsertComponent(2, 1, tcYMax);
>
> - tc->InsertComponent(3, 0, dims[0] /
> static_cast<float>(p2dims[0]));
> + tc->InsertComponent(3, 0, tcXMax);
> tc->InsertComponent(3, 1, 0.0);
> }
> else
> {
> dims[0] = dims[1] = 0;
> }
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtk-developers
>
>
>
More information about the vtk-developers
mailing list