blob: 27e3ef078e80b475f38606fbb30df6c96fa058a6 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/**
* @author Alexey A. Petrenko, Ilya S. Okomin
* @version $Revision$
*/
package org.apache.harmony.awt.gl;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.peer.FontPeer;
import org.apache.harmony.awt.gl.font.FontMetricsImpl;
import org.apache.harmony.awt.wtk.GraphicsFactory;
/**
* Common GraphicsFactory implementation
*
*/
public abstract class CommonGraphics2DFactory implements GraphicsFactory {
// static instance of CommonGraphics2DFactory
public static CommonGraphics2DFactory inst;
/**
* Returns FontMetrics object that keeps metrics of the specified font.
*
* @param font specified Font
* @return FontMetrics object corresponding to the specified Font object
*/
public FontMetrics getFontMetrics(Font font) {
FontMetrics fm;
for (FontMetrics element : cacheFM) {
fm = element;
if (fm == null){
break;
}
if (fm.getFont().equals(font)){
return fm;
}
}
fm = new FontMetricsImpl(font);
System.arraycopy(cacheFM, 0, cacheFM, 1, cacheFM.length -1);
cacheFM[0] = fm;
return fm;
}
// Font methods
public FontPeer getFontPeer(Font font) {
return getFontManager().getFontPeer(font.getName(), font.getStyle(), font.getSize());
}
/**
* Embeds font from gile with specified path into the system.
*
* @param fontFilePath path to the font file
* @return Font object that was created from the file.
*/
public abstract Font embedFont(String fontFilePath);
}