Class TriangleClassificationWidget

  • All Implemented Interfaces:
    java.io.Serializable

    public class TriangleClassificationWidget
    extends ClassificationWidget
    This class implements a 2D Triangle-shaped ClassficiationWidget. The code implements the rendering of the widget in the 2D Multi-histogram panel, as well as the user mouse-interaction with the widget. The parameters that define the widget are then passed to the Volume Renderer GLSL shader program and determine how the Volume is displayed. *
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      TriangleClassificationWidget​(int iX, int iY, WildMagic.LibFoundation.Mathematics.Vector2f kTMin, WildMagic.LibFoundation.Mathematics.Vector2f kTMax, WildMagic.LibGraphics.Rendering.Texture kTexture, int iWidth, int iHeight)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected float areaTwice​(float ptAx, float ptAy, float ptBx, float ptBy, float ptCx, float ptCy)
      Determines which side of the line a point lies on, used for determining if a point is inside or outside a closed loop.
      private WildMagic.LibFoundation.Mathematics.Vector3f computeIntersect​(WildMagic.LibFoundation.Mathematics.Vector3f p0, WildMagic.LibFoundation.Mathematics.Vector3f v0, WildMagic.LibFoundation.Mathematics.Vector3f p1, WildMagic.LibFoundation.Mathematics.Vector3f v1, boolean onLine)
      Computes the intersection between two lines.
      protected void CreateTriangle​(int iX, int iY, WildMagic.LibGraphics.Rendering.Texture kTexture)
      Creates the triangle widget and control points:
      private boolean insideTri​(float fX, float fY)
      Determines if the input position is inside the triangle widget.
      boolean Pick​(WildMagic.LibGraphics.Rendering.Renderer kRenderer, int iX, int iY)
      Abstract picking.
      void processMouseDrag​(int iX0ld, int iYOld, int iButton, java.awt.event.MouseEvent e)  
      private void readObject​(java.io.ObjectInputStream in)
      Read this object from disk.
      protected void ScaleTriangle​(java.awt.event.MouseEvent e, int position, WildMagic.LibGraphics.SceneGraph.TriMesh sphere)
      Resizes the triangle using the lower-control point:
      void setPicked​(boolean bPicked)
      Clears or sets the current picked object, sets the outline color to red when picked, blue when not selected.
      void setTexture​(WildMagic.LibGraphics.Rendering.Texture kTexture)
      Sets the histogram Texture map for the widget shader effect.
      void ShiftMidTriangle​(java.awt.event.MouseEvent e)
      Move the middle-control point which controls the transfer function in the triangle:
      protected void ShiftTriangle​(java.awt.event.MouseEvent e)
      Shifts the triangle along the bottom edge of the 2D Histogram, using the bottom control-point.
      private void updateCenterXY​(float fX, float fY)  
      void updateDisplay()
      Updates the ShaderEffect parameters for this widget.
      private void writeObject​(java.io.ObjectOutputStream out)
      Stream this object to disk.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • m_fCenterX

        private float m_fCenterX
        Current parameterized coordinates for the center control point in X (used to maintain relative position when resizing the widget).
      • m_fCenterY

        private float m_fCenterY
        Current parameterized coordinates for the center control point in Y (used to maintain relative position when resizing the widget).
      • m_kLeftSphere

        protected WildMagic.LibGraphics.SceneGraph.TriMesh m_kLeftSphere
    • Constructor Detail

      • TriangleClassificationWidget

        public TriangleClassificationWidget​(int iX,
                                            int iY,
                                            WildMagic.LibFoundation.Mathematics.Vector2f kTMin,
                                            WildMagic.LibFoundation.Mathematics.Vector2f kTMax,
                                            WildMagic.LibGraphics.Rendering.Texture kTexture,
                                            int iWidth,
                                            int iHeight)
        Parameters:
        iX - location in MouseEvent Coordinates.
        iY - location in MouseEvent Coordinates.
        kTMin - minimum texture coordinates for the 2D histogram, used for the image background. (Defaults 0-1)
        kTMax - maximum texture coordinates for the 2D histogram, used for the image background. (Defaults 0-1)
        kTexName - 2D Histogram texture name.
        iWidth - canvas width (default 256)
        iHeight - canvas height (default 256)
    • Method Detail

      • Pick

        public boolean Pick​(WildMagic.LibGraphics.Rendering.Renderer kRenderer,
                            int iX,
                            int iY)
        Description copied from class: ClassificationWidget
        Abstract picking. Returns true if this widget, or one of it's control points was picked.
        Specified by:
        Pick in class ClassificationWidget
        iX - current mouse x position (MouseEvent coordinates).
        iY - current mouse y position (MouseEvent coordinates).
        Returns:
        true if this widget or one of it's control points was picked.
      • processMouseDrag

        public void processMouseDrag​(int iX0ld,
                                     int iYOld,
                                     int iButton,
                                     java.awt.event.MouseEvent e)
        Specified by:
        processMouseDrag in class ClassificationWidget
        Parameters:
        iX0ld - old mouse x-position in MouseEvent coordinates.
        iYOld - old mouse y-position in MouseEvent coordinates.
        iButton - old mouse button.
        e - current MouseEvent
      • setPicked

        public void setPicked​(boolean bPicked)
        Clears or sets the current picked object, sets the outline color to red when picked, blue when not selected.
        Overrides:
        setPicked in class ClassificationWidget
        Parameters:
        bPicked - when true the widget is selected.
      • setTexture

        public void setTexture​(WildMagic.LibGraphics.Rendering.Texture kTexture)
        Description copied from class: ClassificationWidget
        Sets the histogram Texture map for the widget shader effect.
        Specified by:
        setTexture in class ClassificationWidget
      • ShiftMidTriangle

        public void ShiftMidTriangle​(java.awt.event.MouseEvent e)
        Move the middle-control point which controls the transfer function in the triangle:
        Parameters:
        e - MouseEvent
      • updateCenterXY

        private void updateCenterXY​(float fX,
                                    float fY)
      • areaTwice

        protected float areaTwice​(float ptAx,
                                  float ptAy,
                                  float ptBx,
                                  float ptBy,
                                  float ptCx,
                                  float ptCy)
        Determines which side of the line a point lies on, used for determining if a point is inside or outside a closed loop.
        Parameters:
        ptAx -
        ptAy -
        ptBx -
        ptBy -
        ptCx -
        ptCy -
        Returns:
      • CreateTriangle

        protected void CreateTriangle​(int iX,
                                      int iY,
                                      WildMagic.LibGraphics.Rendering.Texture kTexture)
        Creates the triangle widget and control points:
        Parameters:
        iX - mouse x-position in MouseEvent coordinates.
        iY - mouse y-position in MouseEvent coordinates.
        kTexName - 2D Histogram texture name.
      • ScaleTriangle

        protected void ScaleTriangle​(java.awt.event.MouseEvent e,
                                     int position,
                                     WildMagic.LibGraphics.SceneGraph.TriMesh sphere)
        Resizes the triangle using the lower-control point:
        Parameters:
        e - MouseEvent
      • ShiftTriangle

        protected void ShiftTriangle​(java.awt.event.MouseEvent e)
        Shifts the triangle along the bottom edge of the 2D Histogram, using the bottom control-point. Shift only moves the triangle to the left or right, not up or down.
        Parameters:
        e - MouseEvent
      • computeIntersect

        private WildMagic.LibFoundation.Mathematics.Vector3f computeIntersect​(WildMagic.LibFoundation.Mathematics.Vector3f p0,
                                                                              WildMagic.LibFoundation.Mathematics.Vector3f v0,
                                                                              WildMagic.LibFoundation.Mathematics.Vector3f p1,
                                                                              WildMagic.LibFoundation.Mathematics.Vector3f v1,
                                                                              boolean onLine)
        Computes the intersection between two lines.
        Parameters:
        p0 - starting position of line 0.
        v0 - line 0 direction vector.
        p1 - starting position of line 1.
        v1 - line 1 direction vector.
        Returns:
        intersection point.
      • insideTri

        private boolean insideTri​(float fX,
                                  float fY)
        Determines if the input position is inside the triangle widget.
        Parameters:
        fX - x-position.
        fY - y-position.
        Returns:
        true if inside the triangle, false otherwise.
      • readObject

        private void readObject​(java.io.ObjectInputStream in)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Read this object from disk.
        Parameters:
        in -
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream out)
                          throws java.io.IOException
        Stream this object to disk.
        Parameters:
        out -
        Throws:
        java.io.IOException