コード例 #1
0
 /* (non-Javadoc)
  * @see java.awt.print.Printable#print(java.awt.Graphics, java.awt.print.PageFormat, int)
  */
 public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
   int ret = PAGE_EXISTS;
   String line = null;
   try {
     if (fph.knownPage(page)) {
       in.seek(fph.getFileOffset(page));
       line = in.readLine();
     } else {
       long offset = in.getFilePointer();
       line = in.readLine();
       if (line == null) {
         ret = NO_SUCH_PAGE;
       } else {
         fph.createPage(page);
         fph.setFileOffset(page, offset);
       }
     }
     if (ret == PAGE_EXISTS) {
       // Seite ausgeben, Grafikkontext vorbereiten
       Graphics2D g2 = (Graphics2D) g;
       g2.scale(1.0 / RESMUL, 1.0 / RESMUL);
       int ypos = (int) pf.getImageableY() * RESMUL;
       int xpos = ((int) pf.getImageableX() + 2) * RESMUL;
       int yd = 12 * RESMUL;
       int ymax = ypos + (int) pf.getImageableHeight() * RESMUL - yd;
       // Seitentitel ausgeben
       ypos += yd;
       g2.setColor(Color.black);
       g2.setFont(new Font("Monospaced", Font.BOLD, 10 * RESMUL));
       g.drawString(fbname + " Seite " + (page + 1), xpos, ypos);
       g.drawLine(
           xpos,
           ypos + 6 * RESMUL,
           xpos + (int) pf.getImageableWidth() * RESMUL,
           ypos + 6 * RESMUL);
       ypos += 2 * yd;
       // Zeilen ausgeben
       g2.setColor(new Color(0, 0, 127));
       g2.setFont(new Font("Monospaced", Font.PLAIN, 10 * RESMUL));
       while (line != null) {
         g.drawString(line, xpos, ypos);
         ypos += yd;
         if (ypos >= ymax) {
           break;
         }
         line = in.readLine();
       }
     }
   } catch (IOException e) {
     throw new PrinterException(e.toString());
   }
   return ret;
 }
コード例 #2
0
  protected void paintSyntaxLine(
      Graphics gfx,
      TokenMarker tokenMarker,
      int line,
      Font defaultFont,
      Color defaultColor,
      int x,
      int y) {
    textArea.getLineText(currentLineIndex, currentLine);
    currentLineTokens = tokenMarker.markTokens(currentLine, currentLineIndex);

    paintHighlight(gfx, line, y);

    gfx.setFont(defaultFont);
    gfx.setColor(defaultColor);
    y += fm.getHeight();
    x = SyntaxUtilities.paintSyntaxLine(currentLine, currentLineTokens, styles, this, gfx, x, y);
    /*
     * Draw characters via input method.
     */
    if (compositionTextPainter != null && compositionTextPainter.hasComposedTextLayout()) {
      compositionTextPainter.draw(gfx, lineHighlightColor);
    }
    if (eolMarkers) {
      gfx.setColor(eolMarkerColor);
      gfx.drawString(".", x, y);
    }
  }
コード例 #3
0
ファイル: PageRanges.java プロジェクト: susotajuraj/jdk8u-jdk
  public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {

    if (pi >= 5) {
      return NO_SUCH_PAGE;
    }

    g.drawString("Page : " + (pi + 1), 200, 200);

    return PAGE_EXISTS;
  }
コード例 #4
0
ファイル: ImagePanel.java プロジェクト: testmad/COMP2200
  @Override
  public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
    Graphics2D g2;

    if (pageIndex > 0) return Printable.NO_SUCH_PAGE;

    g2 = (Graphics2D) g;

    g2.translate(pf.getImageableX(), pf.getImageableY());

    Dimension imageSize = calcDimension(image, pf.getImageableWidth(), pf.getImageableHeight());

    g2.drawImage(
        image,
        (int) (pf.getImageableWidth() / 2 - imageSize.width / 2),
        (int) (pf.getImageableHeight() / 2 - imageSize.height / 2),
        imageSize.width,
        imageSize.height,
        this);

    g.setXORMode(Color.white);

    Font font = g2.getFont().deriveFont(6);
    g2.setFont(font);
    int fileNameWidth = g2.getFontMetrics(font).stringWidth(fileName);

    if (fileNameWidth > imageSize.width) {
      pathStrings = fileName.split("\\\\");
      result = pathStrings[0] + "\\...\\" + pathStrings[pathStrings.length - 1];
      resultWidth = g.getFontMetrics(font).stringWidth(result);

      // TODO:
      // Add another if for truncating to just a few letters if needed.
    } else {
      result = fileName;
      resultWidth = g.getFontMetrics(font).stringWidth(result);
    }

    g.drawString(
        result,
        (int) (pf.getImageableWidth() / 2 + imageSize.width / 2 - resultWidth - 5),
        (int) (pf.getImageableHeight() / 2 + imageSize.height / 2 - 5));
    return Printable.PAGE_EXISTS;
  }
コード例 #5
0
  protected void paintPlainLine(
      Graphics gfx, int line, Font defaultFont, Color defaultColor, int x, int y) {
    paintHighlight(gfx, line, y);
    textArea.getLineText(line, currentLine);

    gfx.setFont(defaultFont);
    gfx.setColor(defaultColor);

    y += fm.getHeight();
    x = Utilities.drawTabbedText(currentLine, x, y, gfx, this, 0);
    // Draw characters via input method.
    if (compositionTextPainter != null && compositionTextPainter.hasComposedTextLayout()) {
      compositionTextPainter.draw(gfx, lineHighlightColor);
    }
    if (eolMarkers) {
      gfx.setColor(eolMarkerColor);
      gfx.drawString(".", x, y);
    }
  }
コード例 #6
0
ファイル: ImagePanel.java プロジェクト: testmad/COMP2200
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);

    if (image != null) {
      Dimension imageSize = calcDimension(image);
      System.out.println(imageSize + " or " + imageSize.getWidth());
      g.drawImage(
          image,
          getWidth() / 2 - imageSize.width / 2,
          getHeight() / 2 - imageSize.height / 2,
          imageSize.width,
          imageSize.height,
          this);

      g.setXORMode(Color.white);

      Font font = g.getFont().deriveFont(8);
      g.setFont(font);
      int fileNameWidth = g.getFontMetrics(font).stringWidth(fileName);

      if (fileNameWidth > imageSize.width) {
        pathStrings = fileName.split("\\\\");
        result = pathStrings[0] + "\\...\\" + pathStrings[pathStrings.length - 1];
        resultWidth = g.getFontMetrics(font).stringWidth(result);

        // TODO:
        // Add another if for truncating to just a few letters if needed.
      } else {
        result = fileName;
        resultWidth = g.getFontMetrics(font).stringWidth(result);
      }

      g.drawString(
          result,
          getWidth() / 2 + imageSize.width / 2 - resultWidth - 5,
          getHeight() / 2 + imageSize.height / 2 - 5);
    } else g.drawImage(image, 0, 0, this);
  }
コード例 #7
0
  public int print(Graphics g, PageFormat pf, int pageIndex) {
    Font f1 = new Font("SERIF", Font.PLAIN, 8);
    FontMetrics metric = g.getFontMetrics(f1);
    int lineHeight = metric.getHeight();

    if (pageBreak == null) {
      initLines();
      int s = (numLines % 3);
      if (s > 0) numLines = numLines + (3 - s);
      numLines /= 3;

      int linesPerPage = (int) (pf.getImageableHeight() / lineHeight);
      int numBreaks = (numLines / linesPerPage);
      pageBreak = new int[numBreaks];
      for (int b = 0; b < numBreaks; b++) {
        pageBreak[b] = (b + 1) * linesPerPage;
      }
    }

    if (pageIndex > pageBreak.length) {
      return NO_SUCH_PAGE;
    }

    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(pf.getImageableX(), pf.getImageableY());

    int y = 0;

    g.setFont(new Font("SERIF", Font.PLAIN, 9));

    int start = 0;
    if (pageIndex == 0) start = 0;
    else start = pageBreak[pageIndex - 1];

    int end = 0;

    if (pageIndex == pageBreak.length) end = numLines;
    else end = pageBreak[pageIndex];

    if (chk % 2 == 1 && (end - start) != lineHeight) {

      for (int line = start; line < end && i < x; line += 9) {
        y += (2 * lineHeight);
        g.drawString("" + textLines[i][0], 30, y);
        g.drawString(textLines[i][1], 30, y + lineHeight);
        g.drawString(textLines[i][2], 30, y + 2 * lineHeight);
        g.drawString(textLines[i][3], 30, y + 3 * lineHeight);
        g.drawString(textLines[i][4], 30, y + 4 * lineHeight);
        g.drawString(textLines[i][5], 30, y + 5 * lineHeight);
        g.drawString(textLines[i][6], 30, y + 6 * lineHeight);

        if ((i + 1) < x) {
          g.drawString(textLines[i + 1][0], 225, y);
          g.drawString(textLines[i + 1][1], 225, y + lineHeight);
          g.drawString(textLines[i + 1][2], 225, y + 2 * lineHeight);
          g.drawString(textLines[i + 1][3], 225, y + 3 * lineHeight);
          g.drawString(textLines[i + 1][4], 225, y + 4 * lineHeight);
          g.drawString(textLines[i + 1][5], 225, y + 5 * lineHeight);
          g.drawString(textLines[i + 1][6], 225, y + 6 * lineHeight);
        }
        if ((i + 2) < x) {
          g.drawString(textLines[i + 2][0], 415, y);
          g.drawString(textLines[i + 2][1], 415, y + lineHeight);
          g.drawString(textLines[i + 2][2], 415, y + 2 * lineHeight);
          g.drawString(textLines[i + 2][3], 415, y + 3 * lineHeight);
          g.drawString(textLines[i + 2][4], 415, y + 4 * lineHeight);
          g.drawString(textLines[i + 2][5], 415, y + 5 * lineHeight);
          g.drawString(textLines[i + 2][6], 415, y + 6 * lineHeight);
        }
        y += 7 * lineHeight;
        i += 3;
      }

    } else {

      for (int line = start; line < end && i < x; line += 8) {}
    }
    chk++;

    return PAGE_EXISTS;
  }