ratio_layouted_frame.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2011, Dirk Thomas, TU Darmstadt
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions
00007  * are met:
00008  *
00009  *   * Redistributions of source code must retain the above copyright
00010  *     notice, this list of conditions and the following disclaimer.
00011  *   * Redistributions in binary form must reproduce the above
00012  *     copyright notice, this list of conditions and the following
00013  *     disclaimer in the documentation and/or other materials provided
00014  *     with the distribution.
00015  *   * Neither the name of the TU Darmstadt nor the names of its
00016  *     contributors may be used to endorse or promote products derived
00017  *     from this software without specific prior written permission.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00020  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00022  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00023  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00024  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00025  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00026  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00027  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00028  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00029  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00030  * POSSIBILITY OF SUCH DAMAGE.
00031  */
00032 
00033 #ifndef rqt_image_enhancer__RatioLayoutedFrame_H
00034 #define rqt_image_enhancer__RatioLayoutedFrame_H
00035 
00036 #include <QFrame>
00037 #include <QLayout>
00038 #include <QLayoutItem>
00039 #include <QPainter>
00040 #include <QRect>
00041 #include <QSize>
00042 #include <QMouseEvent>
00043 
00044 namespace rqt_image_enhancer {
00045 
00050 class RatioLayoutedFrame
00051   : public QFrame
00052 {
00053 
00054   Q_OBJECT
00055 
00056 public:
00057 
00058   RatioLayoutedFrame(QWidget* parent, Qt::WFlags flags = 0);
00059 
00060   virtual ~RatioLayoutedFrame();
00061 
00062   QRect getAspectRatioCorrectPaintArea();
00063 
00064   void resizeToFitAspectRatio();
00065 
00066   void setInnerFrameMinimumSize(const QSize& size);
00067 
00068   void setInnerFrameMaximumSize(const QSize& size);
00069 
00070   void setInnerFrameFixedSize(const QSize& size);
00071 
00072   void setAspectRatio(unsigned short width, unsigned short height);
00073 
00074   void mousePressEvent(QMouseEvent * me);
00075 
00076   void mouseMoveEvent(QMouseEvent * me);
00077 
00078   void mouseReleaseEvent(QMouseEvent * me);
00079 
00080 private:
00081 
00082   static int greatestCommonDivisor(int a, int b);
00083 
00084   QSize aspect_ratio_;
00085 
00086   bool mouse_pressed_;
00087 
00088   QPoint select_start_, select_end_;
00089 
00090 signals:
00091   void selectionInProgress(QPoint p1, QPoint p2);
00092   void selectionFinished(QPoint p1, QPoint p2);
00093   void rightMouseButtonClicked();
00094 
00095 };
00096 
00097 }
00098 
00099 #endif // rqt_image_enhancer__RatioLayoutedFrame_H


hector_rqt_plugins
Author(s): Dirk Thomas, Thorsten Graber, Gregor Gebhardt
autogenerated on Thu Aug 27 2015 13:22:18