Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:28:09

0001 // -*- C++ -*-
0002 // AID-GENERATED
0003 // =========================================================================
0004 // This class was generated by AID - Abstract Interface Definition          
0005 // DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 
0006 // =========================================================================
0007 #ifndef AIDA_IPLOTTERREGION_H
0008 #define AIDA_IPLOTTERREGION_H 1
0009 
0010 //  This file is part of the AIDA library
0011 //  Copyright (C) 2002 by the AIDA team.  All rights reserved.
0012 //  This library is free software and under the terms of the
0013 //  GNU Library General Public License described in the LGPL.txt 
0014 
0015 #include <string>
0016 #include <vector>
0017 
0018 namespace AIDA {
0019 
0020 class IBaseHistogram;
0021 class IDataPointSet;
0022 class IFunction;
0023 class IInfo;
0024 class IPlotterLayout;
0025 class IPlotterStyle;
0026 
0027 /**
0028  * User level interface to a plotter region.
0029  * A region is managed by a plotter.
0030  * A region must be seen as a scene manager handling
0031  * a custome "plotting" scene. In general this kind of scene
0032  * may be in 2D or 3D. In 2D, the scene have "coarse graining parts" 
0033  * like two axis, data representations within the axis. It may have 
0034  * various other parts like a grid, a title, an info area. In 3D, 
0035  * the scene have in general three axis,
0036  * a different global layout, some data representations within the
0037  * axis area and also scene parts like title, grid, etc...
0038  * 
0039  *  To customize all these, some "style" interfaces had been introduced.
0040  * In general there is one style interface per "scene part" ; then
0041  * IAxisStyle, IDataStyle, ITitleStyle, IInfoStyle. Oftenly
0042  * a "scene part" contains text, line, fill area, etc.... For example
0043  * an "axis" have a line, ticks, text for tick labels, text for 
0044  * the label of the axis, the magnitude, etc... A "coarse graining scene part"
0045  * style contains various accessor to "atomic" styles like IMarkerStyle, 
0046  * ILineStyle, IFillStyle that permits to build a "customization block"
0047  * to modify a scene part.
0048  * 
0049  *  A global style "block", the IPlotterStyle, could be retreived
0050  * from a plotting region. This global style block have accessors
0051  * to the various "coarse graining scene parts" of the plotting scene.
0052  * Through it, we hope to offer a lot of customization in a convenient 
0053  * way...
0054  *
0055  *  The keywords "scene" and "part" had been borrowed from the
0056  * OpenInventor terminology.
0057  *
0058  * @author The AIDA team (http://aida.freehep.org/)
0059  *
0060  */
0061 
0062 class IPlotterRegion {
0063 
0064 public: 
0065     /// Destructor.
0066     virtual ~IPlotterRegion() { /* nop */; }
0067 
0068   /**
0069    * Add a data analysis object (histogram, function, cloud,...)
0070    * in the list of things to plot in the region.
0071    * Activate the underlying graphic toolkit in order to bring
0072    * something in the screen window(s) attached to the plotter.
0073    * It assumes that the plotter had been mapped on the
0074    * screen with its show method.
0075    */
0076     virtual bool plot(const IBaseHistogram & histogram, const std::string & options = "") = 0;
0077 
0078     virtual bool plot(const IBaseHistogram & histogram, const IPlotterStyle & style, const std::string & options = "") = 0;
0079 
0080     virtual bool plot(const IFunction & function, const std::string & options = "") = 0;
0081 
0082     virtual bool plot(const IFunction & function, const IPlotterStyle & style, const std::string & options = "") = 0;
0083 
0084     virtual bool plot(const IDataPointSet & dataPointSet, const std::string & options = "") = 0;
0085 
0086     virtual bool plot(const IDataPointSet & dataPointSet, const IPlotterStyle & style, const std::string & options = "") = 0;
0087 
0088   /**
0089    *  Remove a data analysis object in the list of things to plot in the region.
0090    *  Activate the graphic layer to update the screen window.
0091    */
0092     virtual bool remove(const IBaseHistogram & histogram) = 0;
0093 
0094     virtual bool remove(const IFunction & function) = 0;
0095 
0096     virtual bool remove(const IDataPointSet & dataPointSet) = 0;
0097 
0098   /**
0099    * Clear the list of things to plot in the region.
0100    * Clear the corresponding area on screen window(s).
0101    */
0102     virtual void clear() = 0;
0103 
0104   /**
0105    * Set various plotting paramters for the region.
0106    * Activate the graphic layer and update the screen window(s)
0107    * if needed.
0108    */
0109     virtual bool setParameter(const std::string & parameter, const std::string & options = "") = 0;
0110 
0111   /**
0112    * Get value of a parameter. 
0113    * @param paramName Name of the parameter.
0114    * @return the value.
0115    */
0116     virtual std::string parameterValue(const std::string & parameter) const = 0;
0117 
0118     virtual std::vector<std::string>  availableParameterOptions(const std::string & parameter) const = 0;
0119 
0120     virtual std::vector<std::string>  availableParameters() const = 0;
0121 
0122   /**
0123    * Get the style of the region.
0124    */
0125     virtual IPlotterStyle & style() = 0;
0126 
0127   /**
0128    * Set the style of a region.
0129    */
0130     virtual bool setStyle(const IPlotterStyle & style) = 0;
0131 
0132   /**
0133    * Set the style of a region and apply it to scene objects.
0134    */
0135     virtual bool applyStyle(const IPlotterStyle & style) = 0;
0136 
0137   /**
0138    * Set the title of a region.
0139    */
0140     virtual void setTitle(const std::string & title) = 0;
0141 
0142   /**
0143    * Set limit of an axis representation the region area.
0144    */
0145     virtual bool setXLimits(double min = 0, double max = 0) = 0;
0146 
0147     virtual bool setYLimits(double min = 0, double max = 0) = 0;
0148 
0149     virtual bool setZLimits(double min = 0, double max = 0) = 0;
0150 
0151   /**
0152    * To customize axis position,etc...
0153    * Change object position in the scence.
0154    */
0155     virtual IPlotterLayout & layout() = 0;
0156 
0157     virtual bool setLayout(const IPlotterLayout & layout) = 0;
0158 
0159   /**
0160    * Return an IInfo object describing the info area.
0161    */
0162     virtual IInfo & info() = 0;
0163 }; // class
0164 } // namespace AIDA
0165 #endif /* ifndef AIDA_IPLOTTERREGION_H */