code: func New(X *xgbutil.XUtil, r image.Rectangle) *Image {
  	var err error
  	if X == nil {
  		X, err = xgbutil.NewConn()
  		if err != nil {
  			xgbutil.Logger.Panicf("Could not create a new connection when "+
  				"creating a new xgraphics.Image value because: %s", err)
  		}
  	}
  
  	return &Image{
  		X:      X,
  		Pixmap: 0,
  		Pix:    make([]uint8, 4*r.Dx()*r.Dy()),
  		Stride: 4 * r.Dx(),
  		Rect:   r,
  		Subimg: false,
  	}
  }
docs: // New returns a new instance of Image with colors initialized to black
  // for the geometry given.
  // New will also create an X pixmap. When you are no longer using this
  // image, you should call Destroy so that the X pixmap can be freed on the
  // X server.
  // If 'X' is nil, then a new connection will be made. This is usually a bad
  // idea, particularly if you're making a lot of small images, but can be
  // used to achieve true parallelism. (Particularly useful when painting large
  // images.)