コード例 #1
0
    @Override
    protected void paintComponent(Graphics g) {
      g.setColor(getBackground());
      g.fillRect(0, 0, getWidth(), getHeight());

      final String text = getText();
      final int len = text.length();
      int x;
      if (centerText) {
        x = (getWidth() - widthOfW * len) / 2 + 1;
      } else {
        x = 5;
      }
      int y = (getHeight() - fontHeight) / 2 + fontAscent;

      Graphics2D g2d = (Graphics2D) g;
      Object oldHints = null;
      if (desktopAAHints != null) {
        oldHints = g2d.getRenderingHints();
        g2d.addRenderingHints(desktopAAHints);
      }

      g.setColor(getForeground());
      g2d.drawString(text, x, y);

      // Restore rendering hints appropriately.
      if (desktopAAHints != null) {
        g2d.addRenderingHints((Map) oldHints);
      }

      // separator
      g.setColor(Color.GRAY);
      g.drawLine(0, 0, 0, getHeight());
    }
コード例 #2
0
  protected void paintComponent(Graphics g) {

    // Set up rendering hints to look as close to native as possible
    Graphics2D g2d = (Graphics2D) g;
    Object old = null;

    // First, try to use the rendering hint set that is "native".
    Map hints = (Map) getToolkit().getDesktopProperty("awt.font.desktophints");
    if (hints != null) {
      old = g2d.getRenderingHints();
      g2d.addRenderingHints(hints);
    }
    // If a "native" set isn't found, just turn on standard text AA.
    else {
      old = g2d.getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING);
      g2d.setRenderingHint(
          RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    }

    //		if (jsc!=null) {
    //			setText(null); // Stop "Foobar" from being painted
    //		}

    // We never paint "selection" around the icon, to imitate Eclipse
    final int iconW = 18;
    int h = getHeight();
    if (!selected) {
      g.setColor(getBackground());
      g.fillRect(0, 0, getWidth(), h);
    } else {
      g.setColor(altBG != null && evenRow ? altBG : list.getBackground());
      g.fillRect(0, 0, iconW, h);
      g.setColor(getBackground()); // Selection color
      g.fillRect(iconW, 0, getWidth() - iconW, h);
    }
    if (getIcon() != null) {
      int y = (h - getIcon().getIconHeight()) / 2;
      getIcon().paintIcon(this, g, 0, y);
    }

    int x = getX() + iconW + 2;
    g.setColor(selected ? list.getSelectionForeground() : list.getForeground());
    if (jsc != null && !simpleText) {
      jsc.rendererText(g, x, g.getFontMetrics().getHeight(), selected);
    } else {
      Completion c = jsc != null ? (Completion) jsc : nonJavaCompletion;
      if (c != null) {
        g.drawString(c.toString(), x, g.getFontMetrics().getHeight());
      }
    }

    // Restore rendering hints appropriately.
    if (hints != null) {
      g2d.addRenderingHints((Map) old);
    } else {
      g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, old);
    }
  }
コード例 #3
0
    @Override
    protected void paintComponent(Graphics g) {
      g.setColor(getBackground());
      g.fillRect(0, 0, getWidth(), getHeight());

      final String text = getText();
      final int len = text.length();
      int x = (getWidth() - widthOfW * len) / 2;
      int y = (getHeight() - fontHeight) / 2 + fontAscent;

      if (highlight.x >= 0) {
        g.setColor(highlightSelectionInAsciiDumpColor);
        g.fillRect(
            x + highlight.x * widthOfW,
            0,
            (highlight.y - highlight.x + 1) * widthOfW,
            getRowHeight());
      }

      Graphics2D g2d = (Graphics2D) g;
      Object oldHints = null;
      if (desktopAAHints != null) {
        oldHints = g2d.getRenderingHints();
        g2d.addRenderingHints(desktopAAHints);
      }

      g.setColor(getForeground());
      // not padding low bytes, and this one is in range 00-0f.
      if (len == 1) {
        x += widthOfW;
      }
      for (int i = 0; i < len; i++) {
        char ch = text.charAt(i);
        if (ch != ' ') {
          g.drawString(CHARACTERS[ch], x, y);
        }
        x += widthOfW;
      }
      // g.drawString(text, x, y);

      // Restore rendering hints appropriately.
      if (desktopAAHints != null) {
        g2d.addRenderingHints((Map) oldHints);
      }

      if (hasSeparatorLine) {
        g.setColor(Color.GRAY);
        g.drawLine(0, 0, 0, getHeight());
      }
    }
コード例 #4
0
  public static void setupAntialiasing(final Graphics g) {
    if (DEFAULT_ALIASING) return;

    Graphics2D g2d = (Graphics2D) g;
    UISettings uiSettings = getInstance();

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
    if (!isRemoteDesktopConnected() && UIUtil.isRetina()) {
      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    } else {
      if (uiSettings == null || uiSettings.ANTIALIASING_IN_EDITOR) {
        Toolkit tk = Toolkit.getDefaultToolkit();
        //noinspection HardCodedStringLiteral
        Map map = (Map) tk.getDesktopProperty("awt.font.desktophints");
        if (map != null) {
          if (isRemoteDesktopConnected()) {
            g2d.setRenderingHint(
                RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
          } else {
            g2d.addRenderingHints(map);
          }
        } else {
          g2d.setRenderingHint(
              RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        }
        if (FORCE_USE_FRACTIONAL_METRICS) {
          g2d.setRenderingHint(
              RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
        }
      } else {
        g2d.setRenderingHint(
            RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
      }
    }
  }
コード例 #5
0
 // <editor-fold defaultstate="collapsed" desc=" Paint ">
 @Override
 public void paint(Graphics g) {
   Graphics2D gg = (Graphics2D) g;
   gg.addRenderingHints(VNSwingUtils.getHints());
   if (active) {
     switch (errorLevel) {
       case ERRORLEVEL_OK:
         gg.setPaint(okSmooth);
         break;
       case ERRORLEVEL_WARNING:
         gg.setPaint(warningSmooth);
         break;
       case ERRORLEVEL_ERROR:
         gg.setPaint(errorSmooth);
         break;
     }
     gg.fillOval(0, 0, w, h);
   } else {
     switch (errorLevel) {
       case ERRORLEVEL_OK:
         gg.setPaint(okSmoothSmall);
         break;
       case ERRORLEVEL_WARNING:
         gg.setPaint(warningSmoothSmall);
         break;
       case ERRORLEVEL_ERROR:
         gg.setPaint(errorSmoothSmall);
         break;
     }
     gg.fillOval(0, 0, w, h);
   }
 }
コード例 #6
0
  private <T> T scaleImageUsingAffineTransformation(final BufferedImage bufferedImage, T target) {
    BufferedImage destinationImage = generateDestinationImage();
    Graphics2D graphics2D = destinationImage.createGraphics();
    AffineTransform transformation =
        AffineTransform.getScaleInstance(
            ((double) getQualifiedWidth() / bufferedImage.getWidth()),
            ((double) getQualifiedHeight() / bufferedImage.getHeight()));
    graphics2D.drawRenderedImage(bufferedImage, transformation);
    graphics2D.addRenderingHints(retrieveRenderingHints());
    try {
      if (target instanceof File) {
        LOGGER.info(String.format(M_TARGET_TYPE_OF, "File"));
        ImageIO.write(destinationImage, imageType.toString(), (File) target);
      } else if (target instanceof ImageOutputStream) {
        LOGGER.info(String.format(M_TARGET_TYPE_OF, "ImageOutputStream"));
        ImageIO.write(destinationImage, imageType.toString(), (ImageOutputStream) target);
      } else if (target instanceof OutputStream) {
        LOGGER.info(String.format(M_TARGET_TYPE_OF, "OutputStream"));
        ImageIO.write(destinationImage, imageType.toString(), (OutputStream) target);
      } else {
        target = null;
      }
    } catch (IOException e) {
      e.printStackTrace();
    }

    return target;
  }
コード例 #7
0
 public static BufferedImage resize(BufferedImage image, int width, int height) {
   BufferedImage bi = new BufferedImage(width, height, BufferedImage.TRANSLUCENT);
   Graphics2D g2d = (Graphics2D) bi.createGraphics();
   g2d.addRenderingHints(
       new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
   g2d.drawImage(image, 0, 0, width, height, null);
   g2d.dispose();
   return bi;
 }
コード例 #8
0
ファイル: BaseXLayout.java プロジェクト: adrianber/basex
 /**
  * Set desktop hints (not supported by all platforms).
  *
  * @param g graphics reference
  */
 public static void hints(final Graphics g) {
   if (HINTS != null && hints) {
     try {
       ((Graphics2D) g).addRenderingHints(HINTS);
     } catch (final Exception ex) {
       Util.stack(ex);
       hints = false;
     }
   }
 }
コード例 #9
0
ファイル: FontUtil.java プロジェクト: NLeSC/Platinum
  // breadcrump to update renderinghints:
  public static boolean updateRenderingHints(JComponent comp, Map<?, ?> renderingHints) {
    Graphics graphics = comp.getGraphics();

    if (graphics instanceof Graphics2D) {
      ((Graphics2D) graphics).addRenderingHints(renderingHints);
      return true;
    }

    return false;
  }
コード例 #10
0
 @SuppressWarnings("unchecked")
 private <T> T scaleImageUsingGraphics2D(final BufferedImage bufferedImage, T target) {
   BufferedImage destinationImage = generateDestinationImage();
   Graphics2D graphics2D = destinationImage.createGraphics();
   graphics2D.addRenderingHints(retrieveRenderingHints());
   graphics2D.drawImage(bufferedImage, O_X, O_Y, getQualifiedWidth(), getQualifiedHeight(), null);
   graphics2D.dispose();
   target = (T) destinationImage;
   return target;
 }
コード例 #11
0
ファイル: Utils.java プロジェクト: phyloviz/phyloviz-main
 public static Graphics2D prepareGraphics(Graphics g) {
   Graphics2D g2 = (Graphics2D) g;
   Map rhints =
       (Map) (Toolkit.getDefaultToolkit().getDesktopProperty("awt.font.desktophints")); // NOI18N
   if (rhints == null && Boolean.getBoolean("swing.aatext")) { // NOI18N
     g2.setRenderingHint(
         RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
   } else if (rhints != null) {
     g2.addRenderingHints(rhints);
   }
   return g2;
 }
コード例 #12
0
 public static BufferedImage addSelectionBorder(BufferedImage i, int shift) {
   BufferedImage i2 =
       new BufferedImage(
           i.getWidth() + shift * 2, i.getHeight() + shift * 2, BufferedImage.TYPE_INT_RGB);
   Graphics2D g = i2.createGraphics();
   g.setColor(Color.WHITE);
   g.fillRect(0, 0, i2.getWidth(), i2.getHeight());
   g.drawImage(i, shift, shift, null);
   g.setColor(new Color(160, 160, 160));
   g.setStroke(new BasicStroke((int) (shift * 1.5)));
   g.addRenderingHints(HINTS);
   g.drawOval(shift, shift, i.getWidth(), i.getHeight());
   return i2;
 }
コード例 #13
0
ファイル: VTextIcon.java プロジェクト: deciia/LateralGM
 /**
  * Draw the icon at the specified location. Icon implementations may use the Component argument to
  * get properties useful for painting, e.g. the foreground or background color.
  */
 public void paintIcon(Component c, Graphics g, int x, int y) {
   Graphics2D g2 = (Graphics2D) g;
   Toolkit tk = Toolkit.getDefaultToolkit();
   Map<?, ?> map = (Map<?, ?>) (tk.getDesktopProperty("awt.font.desktophints"));
   if (map != null) {
     g2.addRenderingHints(map);
   }
   // We don't insist that it be on the same Component
   g2.setColor(c.getForeground());
   g2.setFont(c.getFont());
   if (fRotation == ROTATE_NONE) {
     int yPos = y + fCharHeight;
     for (int i = 0; i < fCharStrings.length; i++) {
       // Special rules for Japanese - "half-height" characters (like ya, yu, yo in combinations)
       // should draw in the top-right quadrant when drawn vertically
       // - they draw in the bottom-left normally
       int tweak;
       switch (fPosition[i]) {
         case POSITION_NORMAL:
           // Roman fonts should be centered. Japanese fonts are always monospaced.
           g2.drawString(fCharStrings[i], x + ((fWidth - fCharWidths[i]) / 2), yPos);
           break;
         case POSITION_TOP_RIGHT:
           tweak = fCharHeight / 3; // Should be 2, but they aren't actually half-height
           g2.drawString(fCharStrings[i], x + (tweak / 2), yPos - tweak);
           break;
         case POSITION_FAR_TOP_RIGHT:
           tweak = fCharHeight - fCharHeight / 3;
           g2.drawString(fCharStrings[i], x + (tweak / 2), yPos - tweak);
           break;
         default:
           throw new Error();
       }
       yPos += fCharHeight;
     }
   } else if (fRotation == ROTATE_LEFT) {
     g2.translate(x + fWidth, y + fHeight);
     g2.rotate(-NINETY_DEGREES);
     g2.drawString(fLabel, K_BUFFER_SPACE, -fDescent);
     g2.rotate(NINETY_DEGREES);
     g2.translate(-(x + fWidth), -(y + fHeight));
   } else if (fRotation == ROTATE_RIGHT) {
     g2.translate(x, y);
     g2.rotate(NINETY_DEGREES);
     g2.drawString(fLabel, K_BUFFER_SPACE, -fDescent);
     g2.rotate(-NINETY_DEGREES);
     g2.translate(-x, -y);
   }
 }
コード例 #14
0
 protected void createBackgroundImage(int width, int height) {
   whileLoopBackgroundImageSize.setSize(width, height);
   whileLoopBackgroundImage =
       new java.awt.image.BufferedImage(width, height, java.awt.image.BufferedImage.TYPE_INT_ARGB);
   java.awt.Graphics2D g = (java.awt.Graphics2D) whileLoopBackgroundImage.getGraphics();
   g.addRenderingHints(
       new java.awt.RenderingHints(
           java.awt.RenderingHints.KEY_ANTIALIASING, java.awt.RenderingHints.VALUE_ANTIALIAS_ON));
   g.setColor(backgroundColor);
   g.fillRect(0, 0, width, height);
   /*
    * g.setColor( backgroundLineColor ); int spacing = 10; for( int x = 0;
    * x <= width; x += spacing ) { g.drawLine( x, 0, x, height ); }
    */
 }
コード例 #15
0
  public void paint(Graphics g) {
    // repaint the whole transformer in case the view component was repainted
    Rectangle clipBounds = g.getClipBounds();
    if (clipBounds != null && !clipBounds.equals(visibleRect)) {
      repaint();
    }
    // clear the background
    g.setColor(getBackground());
    g.fillRect(0, 0, getWidth(), getHeight());

    if (view != null && at.getDeterminant() != 0) {
      Graphics2D g2 = (Graphics2D) g.create();
      Insets insets = getInsets();
      Rectangle bounds = getBounds();

      // don't forget about insets
      bounds.x += insets.left;
      bounds.y += insets.top;
      bounds.width -= insets.left + insets.right;
      bounds.height -= insets.top + insets.bottom;
      double centerX1 = bounds.getCenterX();
      double centerY1 = bounds.getCenterY();

      Rectangle tb = getTransformedSize();
      double centerX2 = tb.getCenterX();
      double centerY2 = tb.getCenterY();

      // set antialiasing by default
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      if (renderingHints != null) {
        g2.addRenderingHints(renderingHints);
      }
      // translate it to the center of the view component again
      double tx = centerX1 - centerX2 - getX();
      double ty = centerY1 - centerY2 - getY();
      g2.translate((int) tx, (int) ty);
      g2.transform(at);
      view.paint(g2);
      g2.dispose();
    }
    // paint the border
    paintBorder(g);
  }
コード例 #16
0
  // init
  private static void init() {
    if (frame != null) frame.setVisible(false);

    frame = new JFrame();
    offscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    onscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    offscreen = offscreenImage.createGraphics();
    onscreen = onscreenImage.createGraphics();
    setXscale();
    setYscale();
    offscreen.setColor(DEFAULT_CLEAR_COLOR);
    offscreen.fillRect(0, 0, width, height);
    setPenColor();
    setPenRadius();
    setFont();
    clear();

    // add anti-aliasing
    RenderingHints hints =
        new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    offscreen.addRenderingHints(hints);

    // frame stuff
    ImageIcon icon = new ImageIcon(onscreenImage);
    JLabel draw = new JLabel(icon);

    draw.addMouseListener(std);
    draw.addMouseMotionListener(std);

    frame.setContentPane(draw);
    frame.addKeyListener(std); // JLabel cannot get keyboard focus
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // closes all windows
    // frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // closes only current window
    frame.setTitle("Standard Draw");
    frame.setJMenuBar(createMenuBar());
    frame.pack();
    frame.requestFocusInWindow();
    frame.setVisible(true);
  }
コード例 #17
0
 public void addRenderingHints(Map hints) {
   hostGraphics.addRenderingHints(hints);
 }
コード例 #18
0
  public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    // for antialising geometric shapes
    g2d.addRenderingHints(
        new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON));
    // for antialiasing text
    g2d.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

    g.drawImage(this.boardImage, 0, 0, null);

    if (this.drawGrid) {
      for (int x = 0; x < 24; x++) {
        for (int y = 0; y < 29; y++) {
          g.setColor(Color.RED);
          g.drawRect(
              (int) ((x * GUI.xSize) + GUI.xOffset),
              (int) ((y * GUI.ySize) + GUI.yOffset),
              (int) GUI.xSize,
              (int) GUI.ySize);
        }
      }
    }

    if (ui.chooseMovementsMode) {
      for (int x = 0; x < 24; x++) {
        for (int y = 0; y < 29; y++) {
          if (ui.moveables[x][y] == 1) g.setColor(new Color(0, 255, 0, 60));
          else if (ui.moveables[x][y] == 2) g.setColor(new Color(0, 0, 255, 80));
          else continue;

          g.fillRect(
              (int) Math.ceil((x * GUI.xSize) + GUI.xOffset),
              (int) Math.ceil((y * GUI.ySize) + GUI.yOffset),
              (int) Math.ceil(GUI.xSize),
              (int) Math.ceil(GUI.ySize));
        }
      }
    }

    for (Character c : Character.characters) {
      System.out.printf("%d %d\n", c.X, c.Y);
      Color targetColour = Color.BLACK;

      /*
       * new Character("Kasandra Scarlet", 18, 28),
      new Character("Jack Mustard", 7, 28),
      new Character("Diane White", 0, 19),
      new Character("Jacob Green", 0, 9),
      new Character("Eleanor Peacock", 20, 0),
      new Character("Victor Plum", 6, 0)
      */

      if (c == Character.characters[0]) targetColour = scarletColor;
      else if (c == Character.characters[1]) targetColour = mustardColor;
      else if (c == Character.characters[2]) targetColour = whiteColor;
      else if (c == Character.characters[3]) targetColour = greenColor;
      else if (c == Character.characters[4]) targetColour = peacockColor;
      else if (c == Character.characters[5]) targetColour = plumColor;

      g.setColor(targetColour);

      g.fillOval(
          GUI.getCoordFromBoardX(c.X) + 2,
          GUI.getCoordFromBoardY(c.Y) + 2,
          (int) (GUI.xSize - 4),
          (int) (GUI.ySize - 4));
      g.setColor(Color.BLACK);
      g.drawOval(
          GUI.getCoordFromBoardX(c.X) + 2,
          GUI.getCoordFromBoardY(c.Y) + 2,
          (int) (GUI.xSize - 4),
          (int) (GUI.ySize - 4));
    }
  }
コード例 #19
0
ファイル: OverheadMazePanel.java プロジェクト: bchanx/mazewar
  public void paintComponent(Graphics g) {
    super.paintComponent(g); // paint background
    Graphics2D g2 = (Graphics2D) g;

    // Turn on antialiasing
    Map m = new HashMap();
    m.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2.addRenderingHints(m);

    // Figure out how large the maze is
    Point p = maze.getSize();

    double llx = 0.0, lly = 0.0, width = 0.0, height = 0.0, cellwidth = 0.0, cellheight = 0.0;
    // Do we need to update our cache?
    if ((panelSize == null) || (panelSize != getSize())) {
      panelSize = getSize();
      llx = (double) panelSize.width * 0.025;
      lly = (double) panelSize.height * 0.025;
      width = (double) panelSize.width - (double) panelSize.width * 0.05;
      height = (double) panelSize.height - (double) panelSize.height * 0.05;
      cellwidth = width / (double) p.getX();
      cellheight = height / (double) p.getY();
      buildWalls(llx, lly, cellwidth, cellheight);
      double diameter = java.lang.Math.min(cellwidth, cellheight) * 0.75;
      player =
          new Arc2D.Double(
              new Rectangle2D.Double(-diameter / 2.0, -diameter / 2.0, diameter, diameter),
              30.0,
              300.0,
              Arc2D.PIE);
      diameter = java.lang.Math.min(cellwidth, cellheight) * 0.30;
      projectile =
          new Arc2D.Double(
              new Rectangle2D.Double(-diameter / 2.0, -diameter / 2.0, diameter, diameter),
              0.0,
              360.0,
              Arc2D.PIE);
    }

    // Flip coordinate system
    g2.translate(0.0, (double) panelSize.height);
    g2.scale(1.0, -1.0);

    // Draw the maze walls
    g2.setStroke(new BasicStroke(2.0f));
    g2.setColor(Color.black);
    g2.draw(new Rectangle2D.Double(llx, lly, width, height));

    Iterator it = wallList.iterator();
    while (it.hasNext()) {
      Object o = it.next();
      if (o instanceof Shape) {
        g2.draw((Shape) o);
      } else {
        throw new Error();
      }
    }

    Font font = new Font("Arial", Font.PLAIN, 9);
    FontRenderContext frc = g2.getFontRenderContext();

    // Obtain the location of the distinguished client
    Point cp = maze.getClientPoint(client);

    for (int i = 0; i < p.getY(); i++) {
      for (int j = 0; j < p.getX(); j++) {
        boolean cellVisible = true;
        Line2D visLine =
            new Line2D.Double(
                llx + (cp.getX() + 0.5) * cellwidth,
                lly + (cp.getY() + 0.5) * cellheight,
                llx + (j + 0.5) * cellwidth,
                lly + (i + 0.5) * cellheight);

        /* Visibility testing */
        /* Iterator visIt = wallList.iterator();
        while(visIt.hasNext()) {
                Object o = visIt.next();
                if(o instanceof Line2D) {
                        Line2D l = (Line2D)o;
                        if(l.intersectsLine(visLine)) {
                                cellVisible = false;
                        }
                } else {
                        throw new Error();
                }

        } */
        if (cellVisible) {
          Cell cell = maze.getCell(new Point(j, i));
          Object o = cell.getContents();
          if (o != null) {
            if (o instanceof Client) {
              Client c = (Client) o;
              if (c instanceof GUIClient) {
                g2.setColor(Color.green);
              } else if (c instanceof RobotClient) {
                g2.setColor(Color.red);
              } else if (c instanceof RemoteClient) {
                g2.setColor(Color.magenta);
              }

              double xoffset = llx + j * cellwidth + (cellwidth / 2.0);
              double yoffset = lly + i * cellheight + (cellheight / 2.0);
              Direction orient = c.getOrientation();
              g2.translate(xoffset, yoffset);
              double rotation = 0.0;
              if (orient.equals(Direction.South)) {
                rotation = -java.lang.Math.PI / 2.0;
              } else if (orient.equals(Direction.North)) {
                rotation = java.lang.Math.PI / 2.0;
              } else if (orient.equals(Direction.West)) {
                rotation = java.lang.Math.PI;
              }
              g2.rotate(rotation);
              g2.fill(player);
              g2.rotate(-rotation);

              GlyphVector name = font.createGlyphVector(frc, c.getName());
              g2.scale(1.0, -1.0);
              g2.setColor(Color.black);
              g2.drawGlyphVector(name, 0.0f, 0.0f);
              g2.scale(1.0, -1.0);
              g2.translate(-xoffset, -yoffset);

            } else {
              if (o instanceof Projectile) {
                g2.setColor(Color.yellow);
                double xoffset = llx + j * cellwidth + (cellwidth / 2.0);
                double yoffset = lly + i * cellheight + (cellheight / 2.0);
                g2.translate(xoffset, yoffset);
                g2.fill(projectile);
                g2.translate(-xoffset, -yoffset);
              }
            }
          }
        }
      }
    }
  }
コード例 #20
0
  public void render(Graphics2D g2d, IProgressMonitor monitor) throws RenderException {
    try {
      final IRenderContext currentContext = getContext();
      currentContext.setStatus(ILayer.WAIT);
      CoordinateReferenceSystem destinationCRS = currentContext.getCRS();

      // the bounds of the visible area in world coordinates
      // get the envelope and the screen extent
      Envelope envelope = getRenderBounds();
      if (envelope == null || envelope.isNull()) {
        envelope = context.getImageBounds();
      }

      Point upperLeft =
          currentContext.worldToPixel(new Coordinate(envelope.getMinX(), envelope.getMinY()));
      Point bottomRight =
          currentContext.worldToPixel(new Coordinate(envelope.getMaxX(), envelope.getMaxY()));
      Rectangle screenSize = new Rectangle(upperLeft);
      screenSize.add(bottomRight);

      final IGeoResource resource = getContext().getGeoResource();
      if (resource == null || !resource.canResolve(JGrassMapGeoResource.class)) {
        return;
      }
      JGrassMapGeoResource grassMapGeoResource =
          resource.resolve(JGrassMapGeoResource.class, monitor);

      JGrassRegion fileWindow = new JGrassRegion(grassMapGeoResource.getFileWindow());
      JGrassMapsetGeoResource parent =
          (JGrassMapsetGeoResource) grassMapGeoResource.parent(new NullProgressMonitor());
      CoordinateReferenceSystem grassCrs = parent.getLocationCrs();
      JGrassRegion screenDrawWindow =
          new JGrassRegion(
              envelope.getMinX(),
              envelope.getMaxX(),
              envelope.getMinY(),
              envelope.getMaxY(),
              fileWindow.getRows(),
              fileWindow.getCols());

      // to intersect with the data window, we transform the screen window
      JGrassRegion reprojectedScreenDrawWindow = screenDrawWindow;
      if (!CRS.equalsIgnoreMetadata(destinationCRS, grassCrs)) {
        reprojectedScreenDrawWindow = screenDrawWindow.reproject(destinationCRS, grassCrs, true);
      }

      /*
       * if the map is not visible, do not render it
       */
      // JGrassRegion fileWindow = grassMapGeoResource.getFileWindow();
      Rectangle2D.Double fileRectDouble = fileWindow.getRectangle();
      Double reprojScreenRectangle = reprojectedScreenDrawWindow.getRectangle();
      if (!reprojScreenRectangle.intersects(fileRectDouble)) {
        getContext().setStatus(ILayer.DONE);
        getContext().setStatusMessage(THE_MAP_IS_OUTSIDE_OF_THE_VISIBLE_REGION);
        System.out.println(THE_MAP_IS_OUTSIDE_OF_THE_VISIBLE_REGION);
        return;
      }
      /*
       * we will draw only the intersection of the map in the display system = part of visible map
       */
      Rectangle2D drawMapRectangle =
          reprojectedScreenDrawWindow.getRectangle().createIntersection(fileRectDouble);
      // Rectangle2D drawMapRectangle = fileRectDouble.getBounds2D();
      // resolution is that of the file window
      double ewRes = fileWindow.getWEResolution();
      double nsRes = fileWindow.getNSResolution();
      if (fileRectDouble.getWidth() < ewRes || fileRectDouble.getHeight() < nsRes) {
        getContext().setStatus(ILayer.DONE);
        getContext().setStatusMessage(THE_MAP_IS_OUTSIDE_OF_THE_VISIBLE_REGION);
        System.out.println(THE_MAP_IS_OUTSIDE_OF_THE_VISIBLE_REGION);
        return;
      }
      MathTransform transform = CRS.findMathTransform(destinationCRS, grassCrs, true);
      Coordinate pixelSize = getContext().getPixelSize();

      Coordinate c1 = new Coordinate(envelope.getMinX(), envelope.getMinY());
      Coordinate c2 =
          new Coordinate(envelope.getMinX() + pixelSize.x, envelope.getMinY() + pixelSize.y);
      Envelope envy = new Envelope(c1, c2);
      Envelope envyTrans = JTS.transform(envy, transform);

      pixelSize = new Coordinate(envyTrans.getWidth(), envyTrans.getHeight());
      /*
       * if the resolution is higher of that of the screen, it doesn't make much sense to draw it
       * all. So for visualization we just use the screen resolution to do things faster.
       */
      if (ewRes < pixelSize.x) {
        ewRes = pixelSize.x;
      }
      if (nsRes < pixelSize.y) {
        nsRes = pixelSize.y;
      }
      fileWindow.setNSResolution(nsRes);
      fileWindow.setWEResolution(ewRes);
      nsRes = fileWindow.getNSResolution();
      ewRes = fileWindow.getWEResolution();
      /*
       * redefine the region of the map to be drawn
       */
      /*
       * snap the screen to fit into the active region grid. This is mandatory for the exactness
       * of the query of the pixels (ex. d.what.rast).
       */
      JGrassRegion activeWindow = grassMapGeoResource.getActiveWindow();
      Coordinate minXY =
          JGrassRegion.snapToNextHigherInRegionResolution(
              drawMapRectangle.getMinX(), drawMapRectangle.getMinY(), activeWindow);
      Coordinate maxXY =
          JGrassRegion.snapToNextHigherInRegionResolution(
              drawMapRectangle.getMaxX(), drawMapRectangle.getMaxY(), activeWindow);

      JGrassRegion drawMapRegion =
          new JGrassRegion(minXY.x, maxXY.x, minXY.y, maxXY.y, ewRes, nsRes);
      // JGrassRegion drawMapRegion = new JGrassRegion(drawMapRectangle.getMinX(),
      // drawMapRectangle.getMaxX(), drawMapRectangle.getMinY(), drawMapRectangle
      // .getMaxY(), ewRes, nsRes);
      JGrassMapEnvironment grassMapEnvironment = grassMapGeoResource.getjGrassMapEnvironment();
      GridCoverage2D coverage =
          JGrassCatalogUtilities.getGridcoverageFromGrassraster(grassMapEnvironment, drawMapRegion);
      coverage = coverage.view(ViewType.RENDERED);
      if (coverage != null) {

        // setting rendering hints
        RenderingHints hints = new RenderingHints(Collections.EMPTY_MAP);
        hints.add(
            new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED));
        hints.add(
            new RenderingHints(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE));
        hints.add(
            new RenderingHints(
                RenderingHints.KEY_ALPHA_INTERPOLATION,
                RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
        hints.add(
            new RenderingHints(
                RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED));
        hints.add(
            new RenderingHints(
                RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
        hints.add(
            new RenderingHints(
                RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE));
        hints.add(
            new RenderingHints(
                RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
        hints.add(new RenderingHints(JAI.KEY_INTERPOLATION, new InterpolationNearest()));
        g2d.addRenderingHints(hints);
        final TileCache tempCache = JAI.createTileCache();
        tempCache.setMemoryCapacity(16 * 1024 * 1024);
        tempCache.setMemoryThreshold(1.0f);
        hints.add(new RenderingHints(JAI.KEY_TILE_CACHE, tempCache));

        // draw

        AffineTransform worldToScreen =
            RendererUtilities.worldToScreenTransform(envelope, screenSize, destinationCRS);
        final GridCoverageRenderer paint =
            new GridCoverageRenderer(destinationCRS, envelope, screenSize, worldToScreen, hints);
        RasterSymbolizer rasterSymbolizer =
            CommonFactoryFinder.getStyleFactory(null).createRasterSymbolizer();

        paint.paint(g2d, coverage, rasterSymbolizer);

        tempCache.flush();

        // IBlackboard blackboard = context.getMap().getBlackboard();
        // String legendString = coverageReader.getLegendString();
        // String name = grassMapGeoResource.getTitle();
        // blackboard.putString(JGrassMapGeoResource.READERID + "#" + name, legendString);

      }

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      getContext().setStatus(ILayer.DONE);
      getContext().setStatusMessage(null);
    }
  }
コード例 #21
0
ファイル: TreePreview.java プロジェクト: rmichela/GiantTrees
  public void paint(Graphics g) {
    if (previewTree.getMesh() == null) {
      try {
        previewTree.remake();
      } catch (Exception e) {
        System.err.println(e);
        e.printStackTrace();
      }
      return;
    }

    Graphics2D g2 = (Graphics2D) g;

    // turn antialiasing on
    RenderingHints rh =
        new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2.addRenderingHints(rh);

    try {
      g.clearRect(0, 0, getWidth(), getHeight());
      g.setColor(bgClr);
      if (perspective == PERSPECTIVE_FRONT) g.fillRect(0, 0, getWidth() - 1, getHeight());
      else g.fillRect(0, 0, getWidth(), getHeight() - 1);
      // g.drawRect(10,10,getWidth()-20,getHeight()-20);
      initTransform(g);
      if (draft) previewTree.traverseTree(new StemDrawer(g)); // drawStems(g);
      else {
        drawMesh(g);
        // drawLeaves(g);
        previewTree.traverseTree(new LeafDrawer(g));
      }

      // DEBUG
      //			Enumeration e = previewTree.allStems(previewTree.getShowLevel()-1);
      //			Stem stem = (Stem)e.nextElement();
      //			Vector diag = stem.getMaxPoint().sub(stem.getMinPoint());
      //			Vector orig = stem.getTransformation().getT();
      //			setOrigin(new Vector(orig.getX(),orig.getY(),0));
      //			Vector max = stem.getMaxPoint();
      //			Vector min = stem.getMinPoint();
      //
      //			// get greatest distance from orig
      //			double x1 = Math.abs(min.getX())-Math.abs(orig.getX());
      //			double x2 = Math.abs(max.getX())-Math.abs(orig.getX());
      //			double x = Math.max(Math.abs(x1),Math.abs(x2));
      //			double y1 = Math.abs(min.getY())-Math.abs(orig.getY());
      //			double y2 = Math.abs(max.getY())-Math.abs(orig.getY());
      //			double y = Math.max(Math.abs(y1),Math.abs(y2));
      //
      //			Vector av = max.sub(orig).add(min.sub(orig));
      //			//av=av.mul(0.5);
      //
      ////			double dw = Math.sqrt(x*x+y*y)*2;
      //			double dw = Math.sqrt(av.getX()*av.getX()+av.getY()*av.getY())*2;
      //			double minw = -dw/2;
      //
      //			double dh = diag.getZ();
      //			double minh = min.getZ();
      //
      //			g.setColor(Color.RED);
      //			drawLine(g,orig,min);
      //			drawLine(g,orig,max);
      //
      //			g.setColor(Color.GREEN);
      //			drawLine(g,orig,orig.add(new Vector(dw/2,dw/2,0)));
      //
      //			g.setColor(Color.BLUE);
      //			drawLine(g,orig,av.add(orig));
      ////			drawLine(g,orig,new Vector(dw/4,dw/4,orig.getZ()));
      //
      ////			g.setColor(Color.BLUE);
      ////			drawLine(g,stem.getTransformation().getT(),stem.getMaxPoint().sub(stem.getMinPoint()));

    } catch (Exception e) {
      // do nothing, don't draw
    }
  }
コード例 #22
0
 public void addRenderingHints(Map hints) {
   g2d.addRenderingHints(hints);
 }
コード例 #23
0
ファイル: JCanvas.java プロジェクト: xaleth09/Connect4-AI
 // also clip, transform, composite,
 // public boolean isOpaque(){return false;}//theOpaque!=null&&theOpaque;}
 // ---------------------------------------------------------
 private void doPaint(Graphics2D g, int s, Object o) {
   // process an operation from the buffer
   // System.out.println(s);
   Object o1 = null,
       o2 = null,
       o3 = null,
       o4 = null,
       o5 = null,
       o6 = null,
       o7 = null,
       o8 = null,
       o9 = null,
       o10 = null,
       o11 = null;
   if (o instanceof Object[]) {
     Object[] a = (Object[]) o;
     if (a.length > 0) o1 = a[0];
     if (a.length > 1) o2 = a[1];
     if (a.length > 2) o3 = a[2];
     if (a.length > 3) o4 = a[3];
     if (a.length > 4) o5 = a[4];
     if (a.length > 5) o6 = a[5];
     if (a.length > 6) o7 = a[6];
     if (a.length > 7) o8 = a[7];
     if (a.length > 8) o9 = a[8];
     if (a.length > 9) o10 = a[9];
     if (a.length > 10) o11 = a[10];
   }
   switch (s) {
     case clear:
       paintBackground(g, theBackground);
       break;
       // public void addRenderingHints(Map<?,?> hints)
       // {toBuffer("addRenderingHints",hints );}
     case addRenderingHints:
       g.addRenderingHints((Map<?, ?>) o);
       break;
     case clip1:
       g.clip((Shape) o);
       break;
     case draw1:
       g.draw((Shape) o);
       break;
     case draw3DRect:
       g.draw3DRect((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Boolean) o5);
       break;
     case drawGlyphVector:
       g.drawGlyphVector((GlyphVector) o1, (Float) o2, (Float) o3);
       break;
     case drawImage1:
       g.drawImage((BufferedImage) o1, (BufferedImageOp) o2, (Integer) o3, (Integer) o4);
       break;
     case drawImage2:
       g.drawImage((Image) o1, (AffineTransform) o2, (ImageObserver) o3);
       break;
     case drawRenderableImage:
       g.drawRenderableImage((RenderableImage) o1, (AffineTransform) o2);
       break;
     case drawRenderedImage:
       g.drawRenderedImage((RenderedImage) o1, (AffineTransform) o2);
       break;
     case drawString1:
       g.drawString((AttributedCharacterIterator) o1, (Float) o2, (Float) o3);
       break;
     case drawString2:
       g.drawString((AttributedCharacterIterator) o1, (Integer) o2, (Integer) o3);
       break;
     case drawString3:
       g.drawString((String) o1, (Float) o2, (Float) o3);
       break;
     case drawString4:
       g.drawString((String) o1, (Integer) o2, (Integer) o3);
       break;
     case fill:
       g.fill((Shape) o);
       break;
     case fill3DRect:
       g.fill3DRect((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Boolean) o5);
       break;
     case rotate1:
       g.rotate((Double) o);
       break;
     case rotate2:
       g.rotate((Double) o1, (Double) o2, (Double) o3);
       break;
     case scale1:
       g.scale((Double) o1, (Double) o2);
       break;
     case setBackground:
       g.setBackground(
           (Color) o); // paintBackground(g,(Color)o); /*super.setBackground((Color)o) ;*/
       break;
     case setComposite:
       g.setComposite((Composite) o);
       break;
     case setPaint:
       g.setPaint((Paint) o);
       break;
     case setRenderingHint:
       g.setRenderingHint((RenderingHints.Key) o1, o2);
       break;
     case setRenderingHints:
       g.setRenderingHints((Map<?, ?>) o);
       break;
     case setStroke:
       g.setStroke((Stroke) o);
       break;
     case setTransform:
       g.setTransform(makeTransform(o));
       break;
     case shear:
       g.shear((Double) o1, (Double) o2);
       break;
     case transform1:
       g.transform(makeTransform(o));
       break;
     case translate1:
       g.translate((Double) o1, (Double) o2);
       break;
     case translate2:
       g.translate((Integer) o1, (Integer) o2);
       break;
     case clearRect:
       g.clearRect((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4);
       break;
     case copyArea:
       g.copyArea(
           (Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5, (Integer) o6);
       break;
     case drawArc:
       g.drawArc(
           (Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5, (Integer) o6);
       break;
     case drawBytes:
       g.drawBytes((byte[]) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5);
       break;
     case drawChars:
       g.drawChars((char[]) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5);
       break;
     case drawImage4:
       g.drawImage((Image) o1, (Integer) o2, (Integer) o3, (Color) o4, (ImageObserver) o5);
       break;
     case drawImage5:
       g.drawImage((Image) o1, (Integer) o2, (Integer) o3, (ImageObserver) o4);
       break;
     case drawImage6:
       g.drawImage(
           (Image) o1,
           (Integer) o2,
           (Integer) o3,
           (Integer) o4,
           (Integer) o5,
           (Color) o6,
           (ImageObserver) o7);
       break;
     case drawImage7:
       g.drawImage(
           (Image) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5, (ImageObserver) o6);
       break;
     case drawImage8:
       g.drawImage(
           (Image) o1,
           (Integer) o2,
           (Integer) o3,
           (Integer) o4,
           (Integer) o5,
           (Integer) o6,
           (Integer) o7,
           (Integer) o8,
           (Integer) o9,
           (Color) o10,
           (ImageObserver) o11);
       break;
     case drawImage9:
       g.drawImage(
           (Image) o1,
           (Integer) o2,
           (Integer) o3,
           (Integer) o4,
           (Integer) o5,
           (Integer) o6,
           (Integer) o7,
           (Integer) o8,
           (Integer) o9,
           (ImageObserver) o10);
       break;
     case drawLine:
       g.drawLine((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4);
       break;
     case drawOval:
       g.drawOval((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4);
       break;
     case drawPolygon1:
       g.drawPolygon((int[]) o1, (int[]) o2, (Integer) o3);
       break;
     case drawPolygon2:
       g.drawPolygon((Polygon) o);
       break;
     case drawPolyline:
       g.drawPolyline((int[]) o1, (int[]) o2, (Integer) o3);
       break;
     case drawRect:
       g.drawRect((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4);
       break;
     case drawRoundRect:
       g.drawRoundRect(
           (Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5, (Integer) o6);
       break;
     case fillArc:
       g.fillArc(
           (Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5, (Integer) o6);
       break;
     case fillOval:
       g.fillOval((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4);
       break;
       // {toBuffer("fillPolygon",mkArg(xPoints,  yPoints, nPoints) );}
     case fillPolygon1:
       g.fillPolygon((int[]) o1, (int[]) o2, (Integer) o3);
       break;
     case fillPolygon2:
       g.fillPolygon((Polygon) o);
       break;
     case fillRect:
       g.fillRect((Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4);
       break;
     case fillRoundRect:
       g.fillRoundRect(
           (Integer) o1, (Integer) o2, (Integer) o3, (Integer) o4, (Integer) o5, (Integer) o6);
       break;
     case setClip1:
       g.setClip((Shape) o);
       break;
     case setColor:
       g.setColor((Color) o);
       break;
     case setFont:
       g.setFont((Font) o);
       break;
     case setPaintMode:
       g.setPaintMode();
       break;
     case setXORMode:
       g.setXORMode((Color) o);
       break;
     case opaque:
       super.setOpaque((Boolean) o);
       break;
     case drawOutline: // g.drawString((String)o1, (Integer)o2, (Integer)o3) ;break;
       {
         FontRenderContext frc = g.getFontRenderContext();
         TextLayout tl = new TextLayout((String) o1, g.getFont(), frc);
         Shape s1 = tl.getOutline(null);
         AffineTransform af = g.getTransform();
         g.translate((Integer) o2, (Integer) o3);
         g.draw(s1);
         g.setTransform(af);
       }
       ;
       break;
     default:
       System.out.println("Unknown image operation " + s);
   }
 }