00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QSRULER_H
00019 #define QSRULER_H
00020
00021 #include <qframe.h>
00022 #include <qpainter.h>
00023 #include <qpixmap.h>
00024
00025 enum MeasurementUnit {
00026 UnitPoint, UnitMillimeter, UnitInch, UnitPica, UnitCentimeter,
00027 UnitDidot, UnitCicero
00028 };
00029
00030 class QSRuler : public QFrame
00031 {
00032 Q_OBJECT
00033 public:
00034 enum Orientation { Horizontal, Vertical };
00035
00036 QSRuler(Orientation, QWidget* parent=0, const char* name=0);
00037 ~QSRuler();
00038
00039 int unit();
00040
00041 public slots:
00042 void setZoom(float);
00043 void updatePointer(int x, int y);
00044 void updateVisibleArea(int xpos, int ypos);
00045
00046 void setUnit(int);
00047
00048 void hide();
00049 void show();
00050
00051 protected:
00052 void paintEvent(QPaintEvent*);
00053 void resizeEvent(QResizeEvent*);
00054
00055 void recalculateSize(QResizeEvent*);
00056 void drawQSRuler();
00057
00058 void initMarker(int w, int h);
00059 void drawNums(QPainter*, int x, int y, QString& num, bool orientationHoriz);
00060
00061 private:
00062 float m_pZoom;
00063 int munit;
00064 Orientation orientation;
00065 QPixmap *buffer;
00066 int firstVisible;
00067 int currentPosition;
00068 QPixmap* marker;
00069 QPixmap* m_pNums;
00070 };
00071
00072 #endif