code: public static final void texture(final Shape shape, final Image image, final float scaleX, final float scaleY, final ShapeFill fill) {
      	if (!validFill(shape)) {
      		return;
      	}
          
          Texture t = TextureImpl.getLastBind();
          image.getTexture().bind();
          
          final float center[] = shape.getCenter();
          fill(shape, new PointCallback() {
  			public float[] preRenderPoint(Shape shape, float x, float y) {
  	            fill.colorAt(shape, x - center[0], y - center[1]).bind();
  	            Vector2f offset = fill.getOffsetAt(shape, x, y);
  	            
  	            x += offset.x;
  	            y += offset.y;
  	            
  				float tx = x * scaleX;
  				float ty = y * scaleY;
  				
  				tx = image.getTextureOffsetX() + (image.getTextureWidth() * tx);
  				ty = image.getTextureOffsetY() + (image.getTextureHeight() * ty);
  				
  	            GL.glTexCoord2f(tx, ty);
  
  	            return new float[] {offset.x + x,offset.y + y};
  			}
      	});
          
          if (t == null) {
          	TextureImpl.bindNone();
          } else {
          	t.bind();
          }
      }
docs: Draw the the given shape filled in with a texture.  Only the vertices are set.
  The colour has to be set independently of this method.
  
  @param shape The shape to texture.
  @param image The image to tile across the shape
  @param scaleX The scale to apply on the x axis for texturing
  @param scaleY The scale to apply on the y axis for texturing
  @param fill The fill to apply