• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KDEUI

  • sources
  • kde-4.12
  • kdelibs
  • kdeui
  • widgets
kpixmapregionselectorwidget.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  Copyright (C) 2004 Antonio Larrosa <larrosa@kde.org
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 /* NOTE: There are two copies of this .h and the .cpp file, with subtle differences.
21  * One copy is in kdelibs/kdeui, and the other copy is in kdepim/libkdepim
22  * This is because kdepim has to remain backwards compatible. Any changes
23  * to either file should be made to the other.
24  */
25 
26 #include "kpixmapregionselectorwidget.h"
27 #include <QtGui/QPainter>
28 #include <QtGui/QColor>
29 #include <QtGui/QImage>
30 #include <QLabel>
31 #include <QtGui/QLayout>
32 #include <QRubberBand>
33 #include <kdebug.h>
34 #include <kicon.h>
35 #include <klocale.h>
36 #include <kmenu.h>
37 #include <kaction.h>
38 #include <stdlib.h>
39 #include <QtGui/QCursor>
40 #include <QtGui/QApplication>
41 #include <QMouseEvent>
42 #include "kactioncollection.h"
43 
44 class KPixmapRegionSelectorWidget::Private
45 {
46 public:
47  Private(KPixmapRegionSelectorWidget *q): q(q) {}
48 
49  KPixmapRegionSelectorWidget *q;
50 
55  void updatePixmap();
56 
57  QRect calcSelectionRectangle( const QPoint &startPoint, const QPoint & endPoint );
58 
59  enum CursorState { None=0, Resizing, Moving };
60  CursorState m_state;
61 
62  QPixmap m_unzoomedPixmap;
63  QPixmap m_originalPixmap;
64  QPixmap m_linedPixmap;
65  QRect m_selectedRegion;
66  QLabel *m_label;
67 
68  QPoint m_tempFirstClick;
69  double m_forcedAspectRatio;
70 
71  int m_maxWidth, m_maxHeight;
72  double m_zoomFactor;
73 
74  QRubberBand *m_rubberBand;
75 };
76 
77 KPixmapRegionSelectorWidget::KPixmapRegionSelectorWidget( QWidget *parent)
78  : QWidget( parent ), d(new Private(this))
79 {
80  QHBoxLayout * hboxLayout=new QHBoxLayout( this );
81 
82  hboxLayout->addStretch();
83  QVBoxLayout * vboxLayout=new QVBoxLayout();
84  hboxLayout->addItem(vboxLayout);
85 
86  vboxLayout->addStretch();
87  d->m_label = new QLabel(this);
88  d->m_label->setAttribute(Qt::WA_NoSystemBackground,true);//setBackgroundMode( Qt::NoBackground );
89  d->m_label->installEventFilter( this );
90 
91  vboxLayout->addWidget(d->m_label);
92  vboxLayout->addStretch();
93 
94  hboxLayout->addStretch();
95 
96  d->m_forcedAspectRatio=0;
97 
98  d->m_zoomFactor=1.0;
99  d->m_rubberBand = new QRubberBand(QRubberBand::Rectangle, d->m_label);
100  d->m_rubberBand->hide();
101 }
102 
103 KPixmapRegionSelectorWidget::~KPixmapRegionSelectorWidget()
104 {
105  delete d;
106 }
107 
108 QPixmap KPixmapRegionSelectorWidget::pixmap() const
109 {
110  return d->m_unzoomedPixmap;
111 }
112 
113 void KPixmapRegionSelectorWidget::setPixmap( const QPixmap &pixmap )
114 {
115  Q_ASSERT(!pixmap.isNull()); //This class isn't designed to deal with null pixmaps.
116  d->m_originalPixmap = pixmap;
117  d->m_unzoomedPixmap = pixmap;
118  d->m_label->setPixmap( pixmap );
119  resetSelection();
120 }
121 
122 void KPixmapRegionSelectorWidget::resetSelection()
123 {
124  d->m_selectedRegion = d->m_originalPixmap.rect();
125  d->m_rubberBand->hide();
126  d->updatePixmap();
127 }
128 
129 QRect KPixmapRegionSelectorWidget::selectedRegion() const
130 {
131  return d->m_selectedRegion;
132 }
133 
134 void KPixmapRegionSelectorWidget::setSelectedRegion(const QRect &rect)
135 {
136  if (!rect.isValid()) resetSelection();
137  else
138  {
139  d->m_selectedRegion=rect;
140  d->updatePixmap();
141  }
142 }
143 
144 void KPixmapRegionSelectorWidget::Private::updatePixmap()
145 {
146  Q_ASSERT(!m_originalPixmap.isNull());
147  if (m_originalPixmap.isNull()) { m_label->setPixmap(m_originalPixmap); return; }
148  if (m_selectedRegion.width()>m_originalPixmap.width()) m_selectedRegion.setWidth( m_originalPixmap.width() );
149  if (m_selectedRegion.height()>m_originalPixmap.height()) m_selectedRegion.setHeight( m_originalPixmap.height() );
150 
151  QPainter painter;
152  if (m_linedPixmap.isNull())
153  {
154  m_linedPixmap = m_originalPixmap;
155  QPainter p(&m_linedPixmap);
156  p.setCompositionMode(QPainter::CompositionMode_SourceAtop);
157  p.fillRect(m_linedPixmap.rect(), QColor(0, 0, 0, 100));
158  }
159 
160  QPixmap pixmap = m_linedPixmap;
161  painter.begin(&pixmap);
162  painter.drawPixmap( m_selectedRegion.topLeft(),
163  m_originalPixmap, m_selectedRegion );
164 
165 
166  painter.end();
167 
168  m_label->setPixmap(pixmap);
169 
170  qApp->sendPostedEvents(0,QEvent::LayoutRequest);
171 
172  if (m_selectedRegion == m_originalPixmap.rect())//d->m_label->rect()) //### CHECK!
173  m_rubberBand->hide();
174  else
175  {
176  m_rubberBand->setGeometry(QRect(m_selectedRegion.topLeft(),
177  m_selectedRegion.size()));
178 
179 /* m_rubberBand->setGeometry(QRect(m_label -> mapToGlobal(m_selectedRegion.topLeft()),
180  m_selectedRegion.size()));
181 */
182  if (m_state!=None) m_rubberBand->show();
183  }
184 
185 }
186 
187 
188 KMenu *KPixmapRegionSelectorWidget::createPopupMenu()
189 {
190  KMenu *popup=new KMenu(this );
191  KActionCollection *actions=new KActionCollection(popup);
192  popup->setObjectName( "PixmapRegionSelectorPopup");
193  popup->addTitle(i18n("Image Operations"));
194 
195  QAction *action = actions->addAction("rotateclockwise");
196  action->setText(i18n("&Rotate Clockwise"));
197  action->setIcon( KIcon( "object-rotate-right" ) );
198  connect( action, SIGNAL(triggered(bool)), this, SLOT(rotateClockwise()) );
199 
200  popup->addAction(action);
201 
202  action = actions->addAction("rotatecounterclockwise");
203  action->setText(i18n("Rotate &Counterclockwise"));
204  action->setIcon( KIcon( "object-rotate-left" ) );
205  connect( action, SIGNAL(triggered(bool)), this, SLOT(rotateCounterclockwise()) );
206 
207  popup->addAction(action);
208 
209 /*
210  I wonder if it would be appropriate to have here an "Open with..." option to
211  edit the image (antlarr)
212 */
213  return popup;
214 }
215 
216 void KPixmapRegionSelectorWidget::rotate(RotateDirection direction)
217 {
218  int w=d->m_originalPixmap.width();
219  int h=d->m_originalPixmap.height();
220  QImage img=d->m_unzoomedPixmap.toImage();
221  if(direction == Rotate90)
222  img = img.transformed(QTransform().rotate(90.0));
223  else if(direction == Rotate180)
224  img = img.transformed(QTransform().rotate(180.0));
225  else
226  img = img.transformed(QTransform().rotate(270.0));
227 
228  d->m_unzoomedPixmap=QPixmap::fromImage(img);
229 
230  img=d->m_originalPixmap.toImage();
231  if(direction == Rotate90)
232  img = img.transformed(QTransform().rotate(90.0));
233  else if(direction == Rotate180)
234  img = img.transformed(QTransform().rotate(180.0));
235  else
236  img = img.transformed(QTransform().rotate(270.0));
237 
238  d->m_originalPixmap=QPixmap::fromImage(img);
239 
240  d->m_linedPixmap=QPixmap();
241 
242  if (d->m_forcedAspectRatio>0 && d->m_forcedAspectRatio!=1)
243  resetSelection();
244  else
245  {
246  switch (direction)
247  {
248  case ( Rotate90 ):
249  {
250  int x=h-d->m_selectedRegion.y()-d->m_selectedRegion.height();
251  int y=d->m_selectedRegion.x();
252  d->m_selectedRegion.setRect(x, y, d->m_selectedRegion.height(), d->m_selectedRegion.width() );
253  d->updatePixmap();
254 // qApp->sendPostedEvents(0,QEvent::LayoutRequest);
255 // updatePixmap();
256 
257  } break;
258  case ( Rotate270 ):
259  {
260  int x=d->m_selectedRegion.y();
261  int y=w-d->m_selectedRegion.x()-d->m_selectedRegion.width();
262  d->m_selectedRegion.setRect(x, y, d->m_selectedRegion.height(), d->m_selectedRegion.width() );
263  d->updatePixmap();
264 // qApp->sendPostedEvents(0,QEvent::LayoutRequest);
265 // updatePixmap();
266  } break;
267  default: resetSelection();
268  }
269  }
270 
271  emit pixmapRotated();
272 }
273 
274 void KPixmapRegionSelectorWidget::rotateClockwise()
275 {
276  rotate(Rotate90);
277 }
278 
279 void KPixmapRegionSelectorWidget::rotateCounterclockwise()
280 {
281  rotate(Rotate270);
282 }
283 
284 bool KPixmapRegionSelectorWidget::eventFilter(QObject *obj, QEvent *ev)
285 {
286  if ( ev->type() == QEvent::MouseButtonPress )
287  {
288  QMouseEvent *mev= (QMouseEvent *)(ev);
289  //kDebug() << QString("click at %1,%2").arg( mev->x() ).arg( mev->y() );
290 
291  if ( mev->button() == Qt::RightButton )
292  {
293  KMenu *popup = createPopupMenu( );
294  popup->exec( mev->globalPos() );
295  delete popup;
296  return true;
297  }
298 
299  QCursor cursor;
300 
301  if ( d->m_selectedRegion.contains( mev->pos() )
302  && d->m_selectedRegion!=d->m_originalPixmap.rect() )
303  {
304  d->m_state=Private::Moving;
305  cursor.setShape( Qt::SizeAllCursor );
306  d->m_rubberBand->show();
307  }
308  else
309  {
310  d->m_state=Private::Resizing;
311  cursor.setShape( Qt::CrossCursor );
312  }
313  QApplication::setOverrideCursor(cursor);
314 
315  d->m_tempFirstClick=mev->pos();
316 
317 
318  return true;
319  }
320 
321  if ( ev->type() == QEvent::MouseMove )
322  {
323  QMouseEvent *mev= (QMouseEvent *)(ev);
324 
325  //kDebug() << QString("move to %1,%2").arg( mev->x() ).arg( mev->y() );
326 
327  if ( d->m_state == Private::Resizing )
328  {
329  setSelectedRegion (
330  d->calcSelectionRectangle( d->m_tempFirstClick, mev->pos() ) );
331  }
332  else if (d->m_state == Private::Moving )
333  {
334  int mevx = mev->x();
335  int mevy = mev->y();
336  bool mouseOutside=false;
337  if ( mevx < 0 )
338  {
339  d->m_selectedRegion.translate(-d->m_selectedRegion.x(),0);
340  mouseOutside=true;
341  }
342  else if ( mevx > d->m_originalPixmap.width() )
343  {
344  d->m_selectedRegion.translate(d->m_originalPixmap.width()-d->m_selectedRegion.width()-d->m_selectedRegion.x(),0);
345  mouseOutside=true;
346  }
347  if ( mevy < 0 )
348  {
349  d->m_selectedRegion.translate(0,-d->m_selectedRegion.y());
350  mouseOutside=true;
351  }
352  else if ( mevy > d->m_originalPixmap.height() )
353  {
354  d->m_selectedRegion.translate(0,d->m_originalPixmap.height()-d->m_selectedRegion.height()-d->m_selectedRegion.y());
355  mouseOutside=true;
356  }
357  if (mouseOutside) { d->updatePixmap(); return true; };
358 
359  d->m_selectedRegion.translate( mev->x()-d->m_tempFirstClick.x(),
360  mev->y()-d->m_tempFirstClick.y() );
361 
362  // Check that the region has not fallen outside the image
363  if (d->m_selectedRegion.x() < 0)
364  d->m_selectedRegion.translate(-d->m_selectedRegion.x(),0);
365  else if (d->m_selectedRegion.right() > d->m_originalPixmap.width())
366  d->m_selectedRegion.translate(-(d->m_selectedRegion.right()-d->m_originalPixmap.width()),0);
367 
368  if (d->m_selectedRegion.y() < 0)
369  d->m_selectedRegion.translate(0,-d->m_selectedRegion.y());
370  else if (d->m_selectedRegion.bottom() > d->m_originalPixmap.height())
371  d->m_selectedRegion.translate(0,-(d->m_selectedRegion.bottom()-d->m_originalPixmap.height()));
372 
373  d->m_tempFirstClick=mev->pos();
374  d->updatePixmap();
375  }
376  return true;
377  }
378 
379  if ( ev->type() == QEvent::MouseButtonRelease )
380  {
381  QMouseEvent *mev= (QMouseEvent *)(ev);
382 
383  if ( d->m_state == Private::Resizing && mev->pos() == d->m_tempFirstClick)
384  resetSelection();
385 
386  d->m_state=Private::None;
387  QApplication::restoreOverrideCursor();
388  d->m_rubberBand->hide();
389  return true;
390  }
391 
392  QWidget::eventFilter(obj, ev);
393  return false;
394 }
395 
396 QRect KPixmapRegionSelectorWidget::Private::calcSelectionRectangle( const QPoint & startPoint, const QPoint & _endPoint )
397 {
398  QPoint endPoint = _endPoint;
399  if ( endPoint.x() < 0 ) endPoint.setX(0);
400  else if ( endPoint.x() > m_originalPixmap.width() ) endPoint.setX(m_originalPixmap.width());
401  if ( endPoint.y() < 0 ) endPoint.setY(0);
402  else if ( endPoint.y() > m_originalPixmap.height() ) endPoint.setY(m_originalPixmap.height());
403  int w=abs(startPoint.x()-endPoint.x());
404  int h=abs(startPoint.y()-endPoint.y());
405 
406  if (m_forcedAspectRatio>0)
407  {
408  double aspectRatio=w/double(h);
409 
410  if (aspectRatio>m_forcedAspectRatio)
411  h=(int)(w/m_forcedAspectRatio);
412  else
413  w=(int)(h*m_forcedAspectRatio);
414  }
415 
416  int x,y;
417  if ( startPoint.x() < endPoint.x() )
418  x=startPoint.x();
419  else
420  x=startPoint.x()-w;
421  if ( startPoint.y() < endPoint.y() )
422  y=startPoint.y();
423  else
424  y=startPoint.y()-h;
425 
426  if (x<0)
427  {
428  w+=x;
429  x=0;
430  h=(int)(w/m_forcedAspectRatio);
431 
432  if ( startPoint.y() > endPoint.y() )
433  y=startPoint.y()-h;
434  }
435  else if (x+w>m_originalPixmap.width())
436  {
437  w=m_originalPixmap.width()-x;
438  h=(int)(w/m_forcedAspectRatio);
439 
440  if ( startPoint.y() > endPoint.y() )
441  y=startPoint.y()-h;
442  }
443  if (y<0)
444  {
445  h+=y;
446  y=0;
447  w=(int)(h*m_forcedAspectRatio);
448 
449  if ( startPoint.x() > endPoint.x() )
450  x=startPoint.x()-w;
451  }
452  else if (y+h>m_originalPixmap.height())
453  {
454  h=m_originalPixmap.height()-y;
455  w=(int)(h*m_forcedAspectRatio);
456 
457  if ( startPoint.x() > endPoint.x() )
458  x=startPoint.x()-w;
459  }
460 
461  return QRect(x,y,w,h);
462 }
463 
464 QRect KPixmapRegionSelectorWidget::unzoomedSelectedRegion() const
465 {
466  return QRect((int)(d->m_selectedRegion.x()/d->m_zoomFactor),
467  (int)(d->m_selectedRegion.y()/d->m_zoomFactor),
468  (int)(d->m_selectedRegion.width()/d->m_zoomFactor),
469  (int)(d->m_selectedRegion.height()/d->m_zoomFactor));
470 }
471 
472 QImage KPixmapRegionSelectorWidget::selectedImage() const
473 {
474  QImage origImage=d->m_unzoomedPixmap.toImage();
475  return origImage.copy(unzoomedSelectedRegion());
476 }
477 
478 void KPixmapRegionSelectorWidget::setSelectionAspectRatio(int width, int height)
479 {
480  d->m_forcedAspectRatio=width/double(height);
481 }
482 
483 void KPixmapRegionSelectorWidget::setFreeSelectionAspectRatio()
484 {
485  d->m_forcedAspectRatio=0;
486 }
487 
488 void KPixmapRegionSelectorWidget::setMaximumWidgetSize(int width, int height)
489 {
490  d->m_maxWidth=width;
491  d->m_maxHeight=height;
492 
493  if (d->m_selectedRegion == d->m_originalPixmap.rect()) d->m_selectedRegion=QRect();
494  d->m_originalPixmap=d->m_unzoomedPixmap;
495 
496 // kDebug() << QString(" original Pixmap :") << d->m_originalPixmap.rect();
497 // kDebug() << QString(" unzoomed Pixmap : %1 x %2 ").arg(d->m_unzoomedPixmap.width()).arg(d->m_unzoomedPixmap.height());
498 
499  if ( !d->m_originalPixmap.isNull() &&
500  ( d->m_originalPixmap.width() > d->m_maxWidth ||
501  d->m_originalPixmap.height() > d->m_maxHeight ) )
502  {
503  /* We have to resize the pixmap to get it complete on the screen */
504  QImage image=d->m_originalPixmap.toImage();
505  d->m_originalPixmap=QPixmap::fromImage( image.scaled( width, height, Qt::KeepAspectRatio,Qt::SmoothTransformation ) );
506  double oldZoomFactor = d->m_zoomFactor;
507  d->m_zoomFactor=d->m_originalPixmap.width()/(double)d->m_unzoomedPixmap.width();
508 
509  if (d->m_selectedRegion.isValid())
510  {
511  d->m_selectedRegion=
512  QRect((int)(d->m_selectedRegion.x()*d->m_zoomFactor/oldZoomFactor),
513  (int)(d->m_selectedRegion.y()*d->m_zoomFactor/oldZoomFactor),
514  (int)(d->m_selectedRegion.width()*d->m_zoomFactor/oldZoomFactor),
515  (int)(d->m_selectedRegion.height()*d->m_zoomFactor/oldZoomFactor) );
516  }
517  }
518 
519  if (!d->m_selectedRegion.isValid()) d->m_selectedRegion = d->m_originalPixmap.rect();
520 
521  d->m_linedPixmap=QPixmap();
522  d->updatePixmap();
523  resize(d->m_label->width(), d->m_label->height());
524 }
525 
526 #include "kpixmapregionselectorwidget.moc"
QColor
i18n
QString i18n(const char *text)
KActionCollection
A container for a set of QAction objects.
Definition: kactioncollection.h:56
KPixmapRegionSelectorWidget::selectedRegion
QRect selectedRegion() const
Returns the selected region ( in zoomed pixmap coordinates )
Definition: kpixmapregionselectorwidget.cpp:129
QCursor
kdebug.h
KPixmapRegionSelectorWidget::Rotate180
Rotate 180 degrees.
Definition: kpixmapregionselectorwidget.h:55
KPixmapRegionSelectorWidget::pixmapRotated
void pixmapRotated()
KPixmapRegionSelectorWidget::~KPixmapRegionSelectorWidget
~KPixmapRegionSelectorWidget()
Destructor for a KPixmapRegionSelectorWidget.
Definition: kpixmapregionselectorwidget.cpp:103
kactioncollection.h
KMenu
A menu with keyboard searching.
Definition: kmenu.h:42
QWidget
KPixmapRegionSelectorWidget::setFreeSelectionAspectRatio
void setFreeSelectionAspectRatio()
Allows the user to do a selection which has any aspect ratio.
Definition: kpixmapregionselectorwidget.cpp:483
KActionCollection::addAction
QAction * addAction(const QString &name, QAction *action)
Add an action under the given name to the collection.
Definition: kactioncollection.cpp:217
double
QObject
klocale.h
KPixmapRegionSelectorWidget::KPixmapRegionSelectorWidget
KPixmapRegionSelectorWidget(QWidget *parent=0)
Constructor for a KPixmapRegionSelectorWidget.
Definition: kpixmapregionselectorwidget.cpp:77
KPixmapRegionSelectorWidget::rotateClockwise
void rotateClockwise()
Rotates the current image 90º clockwise.
Definition: kpixmapregionselectorwidget.cpp:274
None
KPixmapRegionSelectorWidget::unzoomedSelectedRegion
QRect unzoomedSelectedRegion() const
Returns the selected region ( in unzoomed, original pixmap coordinates )
Definition: kpixmapregionselectorwidget.cpp:464
KPixmapRegionSelectorWidget::setPixmap
void setPixmap(const QPixmap &pixmap)
Sets the pixmap which will be shown for the user to select a region from.
Definition: kpixmapregionselectorwidget.cpp:113
kmenu.h
kpixmapregionselectorwidget.h
KIcon
A wrapper around QIcon that provides KDE icon features.
Definition: kicon.h:40
KPixmapRegionSelectorWidget
KPixmapRegionSelectorWidget is a widget that shows a picture and provides the user with a friendly wa...
Definition: kpixmapregionselectorwidget.h:44
KPixmapRegionSelectorWidget::setSelectedRegion
void setSelectedRegion(const QRect &rect)
Sets the selected region to be rect (in zoomed pixmap coordinates)
Definition: kpixmapregionselectorwidget.cpp:134
kaction.h
KPixmapRegionSelectorWidget::resetSelection
void resetSelection()
Resets the selection to use the whole image.
Definition: kpixmapregionselectorwidget.cpp:122
QPoint
KPixmapRegionSelectorWidget::Private
friend class Private
Definition: kpixmapregionselectorwidget.h:159
QRect
KPixmapRegionSelectorWidget::RotateDirection
RotateDirection
This enum provides a rotation direction.
Definition: kpixmapregionselectorwidget.h:54
QLabel
KPixmapRegionSelectorWidget::Rotate90
Rotate 90 degrees to the right.
Definition: kpixmapregionselectorwidget.h:54
KPixmapRegionSelectorWidget::rotate
void rotate(RotateDirection direction)
Rotates the image as specified by the direction parameter, also tries to rotate the selected region s...
Definition: kpixmapregionselectorwidget.cpp:216
KPixmapRegionSelectorWidget::setMaximumWidgetSize
void setMaximumWidgetSize(int width, int height)
Sets the maximum size for the widget.
Definition: kpixmapregionselectorwidget.cpp:488
KPixmapRegionSelectorWidget::rotateCounterclockwise
void rotateCounterclockwise()
Rotates the current image 90º counterclockwise.
Definition: kpixmapregionselectorwidget.cpp:279
KPixmapRegionSelectorWidget::selectedImage
QImage selectedImage() const
Definition: kpixmapregionselectorwidget.cpp:472
kicon.h
KPixmapRegionSelectorWidget::createPopupMenu
virtual KMenu * createPopupMenu()
Creates a KMenu with the menu that appears when clicking with the right button on the label...
Definition: kpixmapregionselectorwidget.cpp:188
QAction
KPixmapRegionSelectorWidget::setSelectionAspectRatio
void setSelectionAspectRatio(int width, int height)
Sets the aspect ration that the selected subimage should have.
Definition: kpixmapregionselectorwidget.cpp:478
KPixmapRegionSelectorWidget::pixmap
QPixmap pixmap() const
KPixmapRegionSelectorWidget::Rotate270
Rotate 90 degrees to the left.
Definition: kpixmapregionselectorwidget.h:56
KMenu::addTitle
QAction * addTitle(const QString &text, QAction *before=0L)
Inserts a title item with no icon.
Definition: kmenu.cpp:170
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:49:15 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal