19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  this work for additional information regarding copyright ownership.
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  the License.  You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @author Pavel Dolgov, Alexey A. Petrenko, Oleg V. Khaschansky
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage org.apache.harmony.awt.wtk;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.Font;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.FontMetrics;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.Graphics2D;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.GraphicsEnvironment;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.peer.FontPeer;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.gl.MultiRectArea;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.gl.font.FontManager;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Canvas;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Paint;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * GraphicsFactory interface defines methods for Graphics2D
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and font stuff instances factories.
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface GraphicsFactory {
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final FontMetrics cacheFM[] =  new FontMetrics[10];
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method creates Graphics2D instance for specified native window.
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param win Native window to draw
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param translateX Translation along X axis
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param translateY Translation along Y axis
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param clip Clipping area for a new Graphics2D instance
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return New Graphics2D instance for specified native window
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Graphics2D getGraphics2D(NativeWindow win, int translateX, int translateY, MultiRectArea clip);
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method creates Graphics2D instance for specified native window.
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param win Native window to draw
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param translateX Translation along X axis
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param translateY Translation along Y axis
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width Width of drawing area
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height Height of drawing area
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return New Graphics2D instance for specified native window
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Graphics2D getGraphics2D(NativeWindow win, int translateX, int translateY, int width, int height);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // ???AWT: not standard harmony
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Graphics2D getGraphics2D(Canvas c, Paint p);
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates instance of GraphicsEnvironment for specified WindowFactory
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param wf WindowFactory
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return New instance of GraphicsEnvironment
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    GraphicsEnvironment createGraphicsEnvironment(WindowFactory wf);
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Font methods
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    FontMetrics getFontMetrics(Font font);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    FontManager getFontManager();
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    FontPeer getFontPeer(Font font);
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Font embedFont(String fontFilePath);
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
83