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

📄 postscriptgraphics.java

📁 代码是一个分类器的实现,其中使用了部分weka的源代码。可以将项目导入eclipse运行
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      PixelGrabber grabber = new PixelGrabber(img, 0, 0, width, height, pixels, 0, width);      grabber.grabPixels();      ColorModel model = ColorModel.getRGBdefault();            // print data to ps      m_printstream.println("gsave");      m_printstream.println(xTransform(xScale(x)) + " " + (yTransform(yScale(y)) - yScale(height)) + " translate");      m_printstream.println(xScale(width) + " " + yScale(height) + " scale");      m_printstream.println(width + " " + height + " " + "8" + " [" + width + " 0 0 " + (-height) + " 0 " + height + "]");      m_printstream.println("{<");      int index;      for (int i = 0; i < height; i++) {        for (int j = 0; j < width; j++) {          index = i * width + j;          m_printstream.print(toHex(model.getRed(pixels[index])));          m_printstream.print(toHex(model.getGreen(pixels[index])));          m_printstream.print(toHex(model.getBlue(pixels[index])));        }        m_printstream.println();      }            m_printstream.println(">}");      m_printstream.println("false 3 colorimage");      m_printstream.println("grestore");      return true;    }    catch (Exception e) {      e.printStackTrace();      return false;    }  }    /**   * calls drawImage(Image,int,int,int,int,Color,ImageObserver) with the color    * WHITE as background   *    * @see #drawImage(Image,int,int,int,int,Color,ImageObserver)   * @see Color#WHITE   */  public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer){    return drawImage(img, x, y, width, height, Color.WHITE, observer);  }    /**   * Not implemented   */  public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver  observer){    return false;  }    /**   * calls drawImage(Image,int,int,int,int,int,int,int,int,Color,ImageObserver)   * with Color.WHITE as background color   *    * @see #drawImage(Image,int,int,int,int,int,int,int,int,Color,ImageObserver)   */  public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer){    return drawImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, Color.WHITE, observer);  }      /**   * Draw a line in current pen color.   *   * @param x1 starting x coord   * @param y1 starting y coord   * @param x2 ending x coord   * @param y2 ending y coord   */  public void drawLine(int x1, int y1, int x2, int y2){    setStateToLocal();    m_printstream.println(xTransform(xScale(x1)) + " " + yTransform(yScale(y1)) + " moveto " + xTransform(xScale(x2)) + " " + yTransform(yScale(y2)) + " lineto stroke");  }    /**   * Draw an Oval outline in current pen color.   *   * @param x x-axis center of oval   * @param y y-axis center of oval   * @param width oval width   * @param height oval height   */  public void drawOval(int x, int y, int width, int height){    setStateToLocal();    m_printstream.println(xTransform(xScale(x)) + " " + yTransform(yScale(y)) + " " + xScale(width) + " " + yScale(height) + " false Oval");  }    /**   * Not implemented   */  public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints){}    /**   * Not implemented   */  public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints){}    /**   * Draw an outlined rectangle in current pen color.   *   * @param x starting x coord   * @param y starting y coord   * @param width rectangle width   * @param height rectangle height   */  public void drawRect(int x, int y, int width, int height){       setStateToLocal();    m_printstream.println(xTransform(xScale(x)) + " " + yTransform(yScale(y)) + " " + xScale(width) + " " + yScale(height) + " false Rect");     }    /**   * Not implemented   */  public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight){}    /**   * Not implemented   */  public void drawString(AttributedCharacterIterator iterator, int x, int y){}    /**   * Draw text in current pen color.   *   * @param str Text to output   * @param x starting x coord   * @param y starting y coord   */  public void drawString(String str, int x, int y){    setStateToLocal();    m_printstream.println(xTransform(xScale(x)) + " " + yTransform(yScale(y)) + " moveto" + " (" + str + ") show stroke");  }    /**   * Draw a filled rectangle with 3D effect in current pen color.   * (Current implementation: draw simple filled rectangle)   *   * @param x starting x coord   * @param y starting y coord   * @param width rectangle width   * @param height rectangle height   * @param raised True: appear raised, False: appear etched   */  public void fill3DRect(int x, int y, int width, int height, boolean raised){    fillRect(x, y, width, height);  }    /**   * Not implemented   */  public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle){}    /**   * Draw a filled Oval in current pen color.   *   * @param x x-axis center of oval   * @param y y-axis center of oval   * @param width oval width   * @param height oval height   */  public void fillOval(int x, int y, int width, int height){    setStateToLocal();    m_printstream.println(xTransform(xScale(x)) + " " + yTransform(yScale(y)) + " " + xScale(width) + " " + yScale(height) + " true Oval");  }    /**   * Not implemented   */  public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints){}    /**   * Not implemented   */  public void fillPolygon(Polygon p){}    /**   * Draw a filled rectangle in current pen color.   *   * @param x starting x coord   * @param y starting y coord   * @param width rectangle width   * @param height rectangle height   */    public void fillRect(int x, int y, int width, int height){    if (width == m_extent.width && height == m_extent.height) {      clearRect(x, y, width, height); // if we're painting the entire background, just make it white    } else {      if (DEBUG)        m_printstream.println("% fillRect");      setStateToLocal();      m_printstream.println(xTransform(xScale(x)) + " " + yTransform(yScale(y)) + " " + xScale(width) + " " + yScale(height) + " true Rect");    }  }    /**   * Not implemented   */  public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight){}    /**   * Not implemented   */  public void finalize(){}    /**   * Not implemented   */  public Shape getClip(){    return(null);  }    /**   * This returns the full current drawing area   * @return full drawing area   */  public Rectangle getClipBounds(){    return(new Rectangle(0, 0, m_extent.width, m_extent.height));  }    /**   * This returns the full current drawing area   * @return full drawing area   */  public Rectangle getClipBounds(Rectangle r) {    r.setBounds(0, 0, m_extent.width, m_extent.height);    return r;  }    /**   * Not implemented   */  public Rectangle getClipRect() {return null;}    /**   * Get current pen color.   *   * @return current pen color.   */  public Color getColor(){    return (m_localGraphicsState.getColor());  }    /**   * Get current font.   *   * @return current font.   */  public Font getFont(){    return (m_localGraphicsState.getFont());  }    /**   * Get Font metrics   *   * @param f Font    * @return Font metrics.   */  public FontMetrics getFontMetrics(Font f){    return(Toolkit.getDefaultToolkit().getFontMetrics(f));        }    /**   * Not implemented   */  public void setClip(int x, int y, int width, int height) {}    /**   * Not implemented   */  public void setClip(Shape clip){}    /**   * Set current pen color. Default to black if null.   *   * @param c new pen color.   */  public void setColor(Color c){    if (c != null){      m_localGraphicsState.setColor(c);      if (m_psGraphicsState.getColor().equals(c)) {        return;      }      m_psGraphicsState.setColor(c);    } else {      m_localGraphicsState.setColor(Color.black);      m_psGraphicsState.setColor(getColor());    }    m_printstream.print(getColor().getRed()/255.0);    m_printstream.print(" ");    m_printstream.print(getColor().getGreen()/255.0);    m_printstream.print(" ");    m_printstream.print(getColor().getBlue()/255.0);    m_printstream.println(" setrgbcolor");  }    /**   * replaces the font (PS name) if necessary and returns the new name   */  private static String replacePSFont(String font) {    String      result;        result = font;        // do we have to replace it? -> same style, size    if (m_PSFontReplacement.containsKey(font)) {      result = m_PSFontReplacement.get(font).toString();      if (DEBUG)        System.out.println("switched font from '" + font + "' to '" + result +  "'");    }        return result;  }    /**   * Set current font. Default to Plain Courier 11 if null.   *   * @param font new font.   */  public void setFont(Font font){        if (font != null){      m_localGraphicsState.setFont(font);      if (   font.getName().equals(m_psGraphicsState.getFont().getName())          && (m_psGraphicsState.getFont().getStyle() == font.getStyle())          && (m_psGraphicsState.getFont().getSize() == yScale(font.getSize())))        return;      m_psGraphicsState.setFont(new Font(font.getName(), font.getStyle(), yScale(getFont().getSize())));    }     else {      m_localGraphicsState.setFont(new Font ("Courier", Font.PLAIN, 11));      m_psGraphicsState.setFont(getFont());    }        m_printstream.println("/(" + replacePSFont(getFont().getPSName()) + ")" + " findfont");    m_printstream.println(yScale(getFont().getSize()) + " scalefont setfont");          }    /**   * Not implemented   */  public void setPaintMode(){}    /**   * Not implemented   */  public void setXORMode(Color c1){}    /**   * Translates the origin of the graphics context to the point (x, y) in the    * current coordinate system. Modifies this graphics context so that its new    * origin corresponds to the point (x, y) in this graphics context's original    * coordinate system. All coordinates used in subsequent rendering operations    * on this graphics context will be relative to this new origin.   *    * @param x the x coordinate.   * @param y the y coordinate.   */  public void translate(int x, int y){    if (DEBUG)      System.out.println("translate with x = " + x + " and y = " + y);    m_localGraphicsState.setXOffset(m_localGraphicsState.getXOffset() + xScale(x));    m_localGraphicsState.setYOffset(m_localGraphicsState.getYOffset() + yScale(y));    m_psGraphicsState.setXOffset(m_psGraphicsState.getXOffset() + xScale(x));    m_psGraphicsState.setYOffset(m_psGraphicsState.getYOffset() + yScale(y));  }  /***** END overridden Graphics methods *****/    /***** START overridden Graphics2D methods *****/    public FontRenderContext getFontRenderContext(){    return (new FontRenderContext(null,true,true));  }  public void clip(Shape s){}  public Stroke getStroke(){    return(m_localGraphicsState.getStroke());  }    public Color getBackground(){    return(Color.white);  }  public void setBackground(Color c){}  public Composite getComposite(){    return(AlphaComposite.getInstance(AlphaComposite.SRC));  }  public Paint getPaint(){    return((Paint) (new Color(getColor().getRed(),getColor().getGreen(),getColor().getBlue())));  }  public AffineTransform getTransform(){    return(new AffineTransform());  }  public void setTransform(AffineTransform at) {}  public void transform(AffineTransform at) {}  public void shear(double d1, double d2){}  public void scale(double d1, double d2) {    m_localGraphicsState.setXScale(d1);    m_localGraphicsState.setYScale(d2);    if (DEBUG)      System.err.println("d1 = " + d1 + ", d2 = " + d2);  }  public void rotate(double d1, double d2, double d3){}  public void rotate(double d1){}  public void translate(double d1, double d2) {}  public RenderingHints getRenderingHints(){    return(new RenderingHints(null));  }  public void addRenderingHints(Map m){}  public void setRenderingHints(Map m){}  public Object getRenderingHint(RenderingHints.Key key){    return(null);  }  public void setRenderingHint(RenderingHints.Key key, Object o){}  public void setStroke(Stroke s){    if (s != null){      m_localGraphicsState.setStroke(s);      if (s.equals(m_psGraphicsState.getStroke())) {        return;      }      m_psGraphicsState.setStroke(s);     } else {      m_localGraphicsState.setStroke(new BasicStroke());      m_psGraphicsState.setStroke(getStroke());    }    // ouput postscript here to set stroke.  }  public void setPaint(Paint p){  }  public void setComposite(Composite c){}  public GraphicsConfiguration getDeviceConfiguration(){    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();    GraphicsDevice gd = ge.getDefaultScreenDevice();    return(gd.getDefaultConfiguration());   }  public boolean hit(Rectangle r, Shape s, boolean onstroke){    return(false);  }  public void fill(Shape s){}  public void drawGlyphVector(GlyphVector gv, float f1, float f2){}   public void drawString(AttributedCharacterIterator aci, float f1, float f2){}  public void drawString(String str, float x, float y){    drawString(str,(int)x, (int)y);  }  public void drawRenderableImage(RenderableImage ri, AffineTransform at){}  public void drawRenderedImage(RenderedImage ri, AffineTransform af){}  public void drawImage(BufferedImage bi, BufferedImageOp bio, int i1, int i2){}  public boolean drawImage(Image im, AffineTransform at, ImageObserver io){    return(false);  }  public void draw(Shape s){}  /***** END *****/}

⌨️ 快捷键说明

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