/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2015 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.core;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
public class SwingUniversalImageBitmap extends SwingUniversalImage {
private final BufferedImage bitmap;
public SwingUniversalImageBitmap( BufferedImage bitmap ) {
this.bitmap = bitmap;
}
@Override
public boolean isBitmap() {
return true;
}
@Override
protected void renderSimple( BufferedImage area ) {
Graphics2D gc = createGraphics( area );
gc.drawImage( bitmap, 0, 0, area.getWidth(), area.getHeight(), null );
gc.dispose();
}
@Override
protected void render( Graphics2D gc, int centerX, int centerY, int width, int height, double angleRadians ) {
AffineTransform oldTransform = gc.getTransform();
try {
double scaleX = width * 1.0 / bitmap.getWidth();
double scaleY = height * 1.0 / bitmap.getHeight();
AffineTransform affineTransform = new AffineTransform( oldTransform );
if ( centerX != 0 || centerY != 0 ) {
affineTransform.translate( centerX, centerY );
}
affineTransform.scale( scaleX, scaleY );
if ( angleRadians != 0 ) {
affineTransform.rotate( angleRadians );
}
affineTransform.translate( -bitmap.getWidth() / 2, -bitmap.getHeight() / 2 );
gc.setTransform( affineTransform );
gc.drawImage( bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), null );
} finally {
gc.setTransform( oldTransform );
}
}
}