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

📄 qtimage.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    this.height = height;    props = (properties != null) ? properties : new Hashtable();    if (width <= 0 || height <= 0 || pixels == null)      {	errorLoading = true;	return;      }    isLoaded = true;    deliver();    createImage();    setPixels(pixels);  }  // java.awt.Image methods ////////////////////////////////////////////////  public int getWidth (ImageObserver observer)  {    if (addObserver(observer))      return -1;    return width;  }    public int getHeight (ImageObserver observer)  {    if (addObserver(observer))      return -1;        return height;  }  public Object getProperty (String name, ImageObserver observer)  {    if (addObserver(observer))      return UndefinedProperty;        Object value = props.get (name);    return (value == null) ? UndefinedProperty : value;  }  /**   * Returns the source of this image.   */  public ImageProducer getSource ()  {    if (!isLoaded)      return null;    return new MemoryImageSource(width, height, nativeModel, getPixels(), 				 0, width);  }  void putPainter(QtImageGraphics g)  {    if( painters == null )      painters = new WeakHashMap();    painters.put( g, "dummy" );  }  void removePainter(QtImageGraphics g)  {    painters.remove( g );    if( killFlag && painters.isEmpty() )      freeImage();  }  /**   * Creates a Graphics context for this image.   */  public Graphics getGraphics ()  {    if (!isLoaded || killFlag)       return null;    return new QtImageGraphics(this);  }  /**   * Creates a Graphics context for this image.   */  Graphics getDirectGraphics(QtComponentPeer peer)  {    if (!isLoaded)       return null;    return new QtImageDirectGraphics(this, peer);  }    /**   * Returns a scaled instance of this image.   */  public Image getScaledInstance(int width,				 int height,				 int hints)  {    if (width <= 0 || height <= 0)      throw new IllegalArgumentException("Width and height of scaled bitmap"+					 "must be >= 0");    return new QtImage(this, width, height, hints);  }  /**   * If the image is loaded and comes from an ImageProducer,    * regenerate the image from there.   *   * I have no idea if this is ever actually used. Since QtImage can't be   * instantiated directly, how is the user to know if it was created from   * an ImageProducer or not?   */  public synchronized void flush ()  {    if (isLoaded && source != null)      {	observers = new Vector();	isLoaded = false;	freeImage();	source.startProduction(new QtImageConsumer(this, source));      }  }  public void finalize()  {    dispose();  }  public void dispose()  {    if (isLoaded)      {	if( painters == null || painters.isEmpty() )	  freeImage();	else	  killFlag = true; // can't destroy image yet. 	// Do so when all painters are gone.      }  }  /**   * Returns the image status, used by QtToolkit   */  public int checkImage (ImageObserver observer)  {    if (addObserver(observer))      {	if (errorLoading == true)	  return ImageObserver.ERROR;	else	  return 0;      }        return ImageObserver.ALLBITS | ImageObserver.WIDTH | ImageObserver.HEIGHT;  }  // Drawing methods ////////////////////////////////////////////////  /**   * Draws an image with eventual scaling/transforming.   */  public boolean drawImage (QtGraphics g, QMatrix matrix,			    ImageObserver observer)  {    if (addObserver(observer))      return false;    drawPixelsTransformed (g, matrix);    return true;  }  /**   * Draws an image to the QtGraphics context, at (x,y) with optional   * compositing with a background color.   */  public boolean drawImage (QtGraphics g, int x, int y,			    Color bgcolor, ImageObserver observer)  {    if (addObserver(observer))      return false;    if(bgcolor != null)      drawPixels(g, bgcolor.getRed (), bgcolor.getGreen (), 		       bgcolor.getBlue (), x, y, true);    else      drawPixels(g, 0, 0, 0, x, y, false);    return true;  }  /**   * Draws an image to the QtGraphics context, at (x,y) scaled to    * width and height, with optional compositing with a background color.   */  public boolean drawImage (QtGraphics g, int x, int y, int width, int height,			    Color bgcolor, ImageObserver observer)  {    if (addObserver(observer))      return false;    if(bgcolor != null)      drawPixelsScaled(g, bgcolor.getRed (), bgcolor.getGreen (), 		       bgcolor.getBlue (), x, y, width, height, true);    else      drawPixelsScaled(g, 0, 0, 0, x, y, width, height, false);    return true;  }  /**   * Draws an image with eventual scaling/transforming.   */  public boolean drawImage (QtGraphics g, int dx1, int dy1, int dx2, int dy2, 			    int sx1, int sy1, int sx2, int sy2, 			    Color bgcolor, ImageObserver observer)  {    if (addObserver(observer))      return false;    boolean flipX = (dx1 > dx2)^(sx1 > sx2);    boolean flipY = (dy1 > dy2)^(sy1 > sy2);    int dstWidth = Math.abs (dx2 - dx1);    int dstHeight = Math.abs (dy2 - dy1);    int srcWidth = Math.abs (sx2 - sx1);    int srcHeight = Math.abs (sy2 - sy1);    int srcX = (sx1 < sx2) ? sx1 : sx2;    int srcY = (sy1 < sy2) ? sy1 : sy2;    int dstX = (dx1 < dx2) ? dx1 : dx2;    int dstY = (dy1 < dy2) ? dy1 : dy2;    // Clipping. This requires the dst to be scaled as well,     if (srcWidth > width)      {	dstWidth = (int)((double)dstWidth*((double)width/(double)srcWidth));	srcWidth = width - srcX;      }    if (srcHeight > height)       {	dstHeight = (int)((double)dstHeight*((double)height/(double)srcHeight));	srcHeight = height - srcY;      }    if (srcWidth + srcX > width)      {	dstWidth = (int)((double)dstWidth * (double)(width - srcX)/(double)srcWidth);	srcWidth = width - srcX;      }    if (srcHeight + srcY > height)      {	dstHeight = (int)((double)dstHeight * (double)(width - srcY)/(double)srcHeight);	srcHeight = height - srcY;      }    if ( srcWidth <= 0 || srcHeight <= 0 || dstWidth <= 0 || dstHeight <= 0)      return true;    if(bgcolor != null)      drawPixelsScaledFlipped (g, bgcolor.getRed (), bgcolor.getGreen (), 			       bgcolor.getBlue (), 			       flipX, flipY,			       srcX, srcY,			       srcWidth, srcHeight,			       dstX,  dstY,			       dstWidth, dstHeight,			       true);    else      drawPixelsScaledFlipped (g, 0, 0, 0, flipX, flipY,			       srcX, srcY, srcWidth, srcHeight,			       dstX,  dstY, dstWidth, dstHeight,			       false);    return true;  }  public native void copyArea(int x, int y, int width, int height, 			      int dx, int dy);  // Private methods ////////////////////////////////////////////////  /**   * Delivers notifications to all queued observers.   */  private void deliver()  {    int flags = ImageObserver.HEIGHT |       ImageObserver.WIDTH |      ImageObserver.PROPERTIES |      ImageObserver.ALLBITS;    if (observers != null)      for(int i=0; i < observers.size(); i++)	((ImageObserver)observers.elementAt(i)).	  imageUpdate(this, flags, 0, 0, width, height);    observers = null;  }    /**   * Adds an observer, if we need to.   * @return true if an observer was added.   */  private boolean addObserver(ImageObserver observer)  {    if (!isLoaded)      {	if(observer != null)	  if (!observers.contains (observer))	    observers.addElement (observer);	return true;      }    return false;  }  public String toString()  {    return "QtImage [isLoaded="+isLoaded+", width="+width+", height="+height      +"]";  }}

⌨️ 快捷键说明

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