/*******************************************************************************
* Copyright (c) 2008-2009 SWTChart project. All rights reserved.
*
* This code is distributed under the terms of the Eclipse Public License v1.0
* which is available at http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.swtchart.internal;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
import org.swtchart.LineStyle;
/**
* A utility class providing generic methods.
*/
public final class Util
{
/**
* Gets the text extent with given font in GC. If the given text or font is
* <code>null</code> or already disposed, point containing size zero will be
* returned.
*
* @param font
* the font
* @param text
* the text
* @return a point containing text extent
*/
public static Point getExtentInGC ( Font font, String text )
{
if ( text == null || font == null || font.isDisposed () )
{
return new Point ( 0, 0 );
}
// create GC
int ARBITRARY_WIDTH = 10;
int ARBITRARY_HEIGHT = 10;
Image image = new Image ( Display.getCurrent (), ARBITRARY_WIDTH, ARBITRARY_HEIGHT );
GC gc = new GC ( image );
// get extent of text with given font
gc.setFont ( font );
Point p = gc.textExtent ( text );
// dispose resources
image.dispose ();
gc.dispose ();
return p;
}
/**
* Gets the index defined in SWT.
*
* @param lineStyle
* the line style
* @return the index defined in SWT.
*/
public static int getIndexDefinedInSWT ( LineStyle lineStyle )
{
switch ( lineStyle )
{
case NONE:
return SWT.NONE;
case SOLID:
return SWT.LINE_SOLID;
case DASH:
return SWT.LINE_DASH;
case DOT:
return SWT.LINE_DOT;
case DASHDOT:
return SWT.LINE_DASHDOT;
case DASHDOTDOT:
return SWT.LINE_DASHDOTDOT;
default:
return SWT.LINE_SOLID;
}
}
}