summaryrefslogtreecommitdiffstats
path: root/kmplot/kmplot/diagr.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmplot/kmplot/diagr.h')
-rw-r--r--kmplot/kmplot/diagr.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/kmplot/kmplot/diagr.h b/kmplot/kmplot/diagr.h
new file mode 100644
index 00000000..45cae5a6
--- /dev/null
+++ b/kmplot/kmplot/diagr.h
@@ -0,0 +1,145 @@
+/*
+* 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>
+
+// Qt includes
+#include <qpainter.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( QPoint 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( QPainter* pDC );
+ /// Returns the rectangle around the core of the plot area.
+ QRect GetPlotArea() { return PlotArea; }
+ /// Returns the rectangle for the frame around the plot. Extra frame is bigger.
+ QRect 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
+ */
+ //@{
+ QRgb frameColor; ///< color of the border frame
+ QRgb axesColor; ///< color of the axes
+ QRgb 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(QPainter*);
+ /// Draw the grid.
+ void drawGrid( QPainter* );
+ /// Write labels.
+ void drawLabels(QPainter*);
+ /// 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;
+ //@}
+
+ QRect PlotArea; ///< plot area
+ QRect m_frame; ///< frame around the plot
+};
+
+#endif // diagr_included