ImageHolder.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /*
  2. * ImageHolder.h
  3. *
  4. * Created on: Oct 5, 2011
  5. * Author: Gapchich Vladislav
  6. */
  7. #ifndef __IMAGEHOLDER_H__
  8. #define __IMAGEHOLDER_H__
  9. #include <QLabel>
  10. struct BoundingBox {
  11. QRect rect;
  12. int label_ID_;
  13. };
  14. struct Polygon {
  15. QPolygon poly;
  16. int label_ID_;
  17. };
  18. enum ZoomDirection {
  19. NoZoom,
  20. ZoomIn,
  21. ZoomOut
  22. };
  23. class QListWidgetItem;
  24. class QPixmap;
  25. class ImageHolder : public QLabel
  26. {
  27. Q_OBJECT
  28. protected:
  29. void keyPressEvent(QKeyEvent *anEvent);
  30. void mouseMoveEvent(QMouseEvent *anEvent);
  31. void mousePressEvent(QMouseEvent *anEvent);
  32. void mouseReleaseEvent(QMouseEvent *anEvent);
  33. void paintEvent (QPaintEvent *anEvent);
  34. void triggerBoundBox(
  35. const QPoint &aNewPos,
  36. const QPoint &anOldPos,
  37. QRect *aNewBox
  38. );
  39. void triggerPolygon(
  40. const QPoint &aPoint,
  41. QPolygon *aNewPoly
  42. );
  43. void drawBoundingBoxes(
  44. QPainter *aPainter,
  45. QPen *aPen
  46. );
  47. void drawPolygons(
  48. QPainter *aPainter,
  49. QPen *aPen
  50. );
  51. public:
  52. enum Tool {
  53. NoTool,
  54. BoundingBoxTool,
  55. PolygonTool,
  56. TaggingTool
  57. };
  58. enum State {
  59. StandBy,
  60. NewSelection
  61. };
  62. ImageHolder(QWidget *aParent = 0);
  63. virtual ~ImageHolder();
  64. void setTool(Tool aTool);
  65. void setBoundingBoxList(QList< BoundingBox > *aBBoxList);
  66. void setPolygonList(QList< Polygon > *aPolyList);
  67. void setLabelColorList(QList< uint > *aLabelColorList);
  68. void setMainLabelNum(int *aNum);
  69. void setImage(QPixmap *anImage);
  70. void scaleImage(ZoomDirection aDirection, double scaleFactor);
  71. State state();
  72. Tool tool();
  73. public slots:
  74. void clearAll();
  75. void clearLast();
  76. void confirmSelection();
  77. void focusOnArea(QListWidgetItem *anItem);
  78. void clearFocusOnArea();
  79. void undo();
  80. void redo();
  81. signals:
  82. void selectionStarted();
  83. void imageScaled();
  84. private:
  85. bool repaint_needed_;
  86. QList< BoundingBox > *list_bounding_box_;
  87. QList< Polygon > *list_polygon_;
  88. QList< uint > *list_label_color_;
  89. QList< QPoint > list_poly_history_;
  90. QPixmap *image_;
  91. int *main_label_;
  92. BoundingBox bounding_box_;
  93. Polygon polygon_;
  94. int keyboard_modifier_;
  95. QPoint prev_cursor_pos_;
  96. Tool tool_;
  97. State state_;
  98. int focused_selection_;
  99. Tool focused_selection_type_;
  100. double scale_;
  101. };
  102. #endif /* IMAGEHOLDER_H_ */
  103. /*
  104. *
  105. */