16224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/*
26224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Copyright 2012 AndroidPlot.com
36224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
46224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    Licensed under the Apache License, Version 2.0 (the "License");
56224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    you may not use this file except in compliance with the License.
66224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    You may obtain a copy of the License at
76224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
86224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *        http://www.apache.org/licenses/LICENSE-2.0
96224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    Unless required by applicable law or agreed to in writing, software
116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    distributed under the License is distributed on an "AS IS" BASIS,
126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    See the License for the specific language governing permissions and
146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *    limitations under the License.
156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */
166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapackage com.androidplot.ui;
186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.content.Context;
206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.Plot;
216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.Configurator;
226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/**
246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Base class of all Formatters.  Encapsulates visual elements of a series; line style, color etc.
256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Implementors of this class should include both a default constructor and a one argument
266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * constructor in the following form:
276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *
286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * <pre>
296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * {@code
306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * // provided as a convenience to users; allows instantiation and
316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * // xml configuration in a single line.
326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * public MyFormatter(Context ctx, int xmlCfgId) {
336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *     // prevent configuration of classes derived from this one:
346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *     if (getClass().equals(MyFormatter.class)) {
356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *         Configurator.configure(ctx, this, xmlCfgId);
366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala *     }
376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * }
386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * </pre>
396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */
406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapublic abstract class Formatter<PlotType extends Plot> {
416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public Formatter<PlotType> configure(Context ctx, int xmlCfgId) {
436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        Configurator.configure(ctx, this, xmlCfgId);
446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala        return this;
456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    }
466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     *
516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * @return The Class of SeriesRenderer that should be used.
526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public abstract Class<? extends SeriesRenderer> getRendererClass();
546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    /**
566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     *
576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     * @return An instance of SeriesRenderer that took plot as an argument to its constructor.
586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala     */
596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala    public abstract SeriesRenderer getRendererInstance(PlotType plot);
606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala
616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala}
62