⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 state.java

📁 fortran并行计算包
💻 JAVA
字号:
/* *  (C) 2001 by Argonne National Laboratory *      See COPYRIGHT in top-level directory. *//* *  @author  Anthony Chan */package base.topology;import java.awt.Graphics2D;import java.awt.Insets;import java.awt.Color;import java.awt.Point;import base.drawable.CoordPixelXform;import base.drawable.DrawnBox;public class State{    private static StateBorder BorderStyle  = StateBorder.WHITE_RAISED_BORDER;    public static void setBorderStyle( final StateBorder state_border )    {        BorderStyle = state_border;    }    /*        Draw a Rectangle between left-upper vertex (start_time, start_ypos)         and right-lower vertex (final_time, final_ypos)        Assume caller guarantees the order of timestamps and ypos, such that        start_time <= final_time  and  start_ypos <= final_ypos.    */    private static int  drawForward( Graphics2D g, Color color, Insets insets,                                     CoordPixelXform    coord_xform,                                     DrawnBox           last_drawn_pos,                                     double start_time, float start_ypos,                                     double final_time, float final_ypos )    {        int      iStart, jStart, iFinal, jFinal;        iStart   = coord_xform.convertTimeToPixel( start_time );        iFinal   = coord_xform.convertTimeToPixel( final_time );        /* Determine if State should be drawn */        if ( last_drawn_pos.coversState( iStart, iFinal ) )            return 0; // too small to be drawn in previously drawn location        last_drawn_pos.set( iStart, iFinal );        jStart   = coord_xform.convertRowToPixel( start_ypos );        jFinal   = coord_xform.convertRowToPixel( final_ypos );        if ( insets != null ) {            iStart += insets.left;            iFinal -= insets.right;            jStart += insets.top;            jFinal -= insets.bottom;        }        boolean  isStartVtxInImg, isFinalVtxInImg;        isStartVtxInImg = ( iStart >= 0 ) ;        isFinalVtxInImg = ( iFinal <  coord_xform.getImageWidth() );        int iHead, iTail, jHead, jTail;        // jHead = slope * ( iHead - iStart ) + jStart        if ( isStartVtxInImg )            iHead = iStart;        else            iHead = 0;            // iHead = -1;        jHead    = jStart;        // jTail = slope * ( iTail - iFinal ) + jFinal        if ( isFinalVtxInImg )            iTail = iFinal;        else            iTail = coord_xform.getImageWidth() - 1;            // iTail = coord_xform.getImageWidth();        jTail    = jFinal;                    // Fill the color of the rectangle        g.setColor( color );        g.fillRect( iHead, jHead, iTail-iHead+1, jTail-jHead+1 );        BorderStyle.paintStateBorder( g, color,                                      iHead, jHead, isStartVtxInImg,                                      iTail, jTail, isFinalVtxInImg );        return 1;    }    /*        Check if a point in pixel coordinate is in a Rectangle        specified between left-upper vertex (start_time, start_ypos)         and right-lower vertex (final_time, final_ypos)        Assume caller guarantees the order of timestamps and ypos, such that        start_time <= final_time  and  start_ypos <= final_ypos    */    private static boolean isPixelIn( CoordPixelXform coord_xform, Point pt,                                      double start_time, float start_ypos,                                      double final_time, float final_ypos )    {        int      iStart, jStart, iFinal, jFinal;        int      pt_x, pt_y;        pt_y     = pt.y;        jStart   = coord_xform.convertRowToPixel( start_ypos );        if ( pt_y < jStart  )            return false;        jFinal   = coord_xform.convertRowToPixel( final_ypos );        if ( pt_y > jFinal )            return false;        pt_x     = pt.x;        iStart   = coord_xform.convertTimeToPixel( start_time );        if ( pt_x < iStart )            return false;        iFinal   = coord_xform.convertTimeToPixel( final_time );        if ( pt_x > iFinal )            return false;        return true;    }    public static int  draw( Graphics2D g, Color color, Insets insets,                             CoordPixelXform    coord_xform,                             DrawnBox           last_drawn_pos,                             double start_time, float start_ypos,                             double final_time, float final_ypos )    {         if ( start_time < final_time ) {             if ( start_ypos < final_ypos )                 return drawForward( g, color, insets,                                     coord_xform, last_drawn_pos,                                     start_time, start_ypos,                                     final_time, final_ypos );             else                 return drawForward( g, color, insets,                                     coord_xform, last_drawn_pos,                                     start_time, final_ypos,                                     final_time, start_ypos );         }         else {             if ( start_ypos < final_ypos )                 return drawForward( g, color, insets,                                     coord_xform, last_drawn_pos,                                     final_time, start_ypos,                                     start_time, final_ypos );             else                 return drawForward( g, color, insets,                                     coord_xform, last_drawn_pos,                                     final_time, final_ypos,                                     start_time, start_ypos );         }    }    public static boolean containsPixel( CoordPixelXform coord_xform, Point pt,                                         double start_time, float start_ypos,                                         double final_time, float final_ypos )    {         if ( start_time < final_time ) {             if ( start_ypos < final_ypos )                 return isPixelIn( coord_xform, pt,                                   start_time, start_ypos,                                   final_time, final_ypos );             else                 return isPixelIn( coord_xform, pt,                                   start_time, final_ypos,                                   final_time, start_ypos );         }         else {             if ( start_ypos < final_ypos )                 return isPixelIn( coord_xform, pt,                                   final_time, start_ypos,                                   start_time, final_ypos );             else                 return isPixelIn( coord_xform, pt,                                   final_time, final_ypos,                                   start_time, start_ypos );         }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -