You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kmplot/kmplot/diagr.h

146 lines
3.9 KiB

/*
* KmPlot - a math. function plotter for the KDE-Desktop
*
* Copyright (C) 1998, 1999 Klaus-Dieter M<>ler
* 2000, 2002 kd.moeller@t-online.de
*
* This file is part of the KDE Project.
* KmPlot is part of the KDE-EDU Project.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
/** @file diagr.h
* @brief Contains the CDiagr class. */
#ifndef diagr_included
#define diagr_included
// standard includes
#include <math.h>
#include <stdio.h>
// TQt includes
#include <tqpainter.h>
//@{
/// Some abbreviations for horizontal and vertical lines.
#define Line drawLine
#define Lineh(x1, y, x2) drawLine(x1, y, x2, y)
#define Linev(x, y1, y2) drawLine(x, y1, x, y2)
//@}
//@{
/// Grid styles.
#define GRID_NONE 0
#define GRID_LINES 1
#define GRID_CROSSES 2
#define GRID_POLAR 3
//@}
/** @short This class manages the core drawing of the axes and the grid. */
class CDiagr
{
public:
/// Contructor. Members are set to initial values.
///@see Create()
CDiagr();
/// Nothing to do for the destructor.
~CDiagr();
/// Sets all members to current values.
void Create( TQPoint Ref,
int lx, int ly,
double xmin, double xmax,
double ymin, double ymax );
/// Sets the current values for the scaling factors
void Skal( double ex, double ey );
/// Draws all requested parts of the diagram (axes, labels, grid e.g.)
void Plot( TQPainter* pDC );
/// Returns the rectangle around the core of the plot area.
TQRect GetPlotArea() { return PlotArea; }
/// Returns the rectangle for the frame around the plot. Extra frame is bigger.
TQRect GetFrame() { return m_frame; }
/** @name Transformations */
//@{
/// These functions convert real coordinates to pixel coordinates and vice versa.
int Transx(double);
int Transy(double);
double Transx(int);
double Transy(int);
//@}
/** @name Style options
* These members hold the current options for line widths and colors
*/
//@{
TQRgb frameColor; ///< color of the border frame
TQRgb axesColor; ///< color of the axes
TQRgb gridColor; ///< color of the grid
uint borderThickness, ///< current line width for the border frame
axesLineWidth, ///< current line width for the axes
gridLineWidth, ///< current line width for the grid
ticWidth, ///< current line width for the tics
ticLength, ///< current length of the tic lines
//@}
xclipflg, ///< clipflg is set to 1 if the plot is out of the plot aerea.
yclipflg; ///< clipflg is set to 1 if the plot is out of the plot aerea.
private:
/// Draw the coordinate axes.
void drawAxes(TQPainter*);
/// Draw the grid.
void drawGrid( TQPainter* );
/// Write labels.
void drawLabels(TQPainter*);
/// Current grid style.
int g_mode;
//@{
/// Plot range edge.
double xmin, xmax, ymin, ymax;
//@}
//@{
/// Clip boundage.
double xmd, ymd;
//@}
//@{
/// Axes tic distance.
double ex, ey;
//@}
//@{
///Position of the first tic.
double tsx, tsy;
//@}
//@{
/// Screen coordinates of the coordinate system origin.
double ox, oy;
//@}
//@{
/// Transformation factors.
/// @see Skal
double skx, sky;
//@}
TQRect PlotArea; ///< plot area
TQRect m_frame; ///< frame around the plot
};
#endif // diagr_included