1
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10#ifndef SKINSPECTORWIDGET_H_
11#define SKINSPECTORWIDGET_H_
12
13#include "SkMatrix.h"
14
15#include <QWidget>
16#include <QTabWidget>
17#include <QTextEdit>
18#include <QHBoxLayout>
19#include <QLabel>
20#include <QLineEdit>
21
22/** \class SkInspectorWidget
23
24    The InspectorWidget contains the overview and details tab. These contain
25    information about the whole picture and details about each draw command.
26 */
27class SkInspectorWidget : public QWidget {
28    Q_OBJECT
29
30public:
31    enum TabType {
32        kOverview_TabType,
33        kDetail_TabType,
34        kClipStack_TabType,
35        kTotalTabCount,
36    };
37
38    /**
39        Constructs a widget with the specified parent for layout purposes.
40        @param parent  The parent container of this widget
41     */
42    SkInspectorWidget();
43
44    void setDisabled(bool isDisabled) {
45        fMatrixAndClipWidget.setDisabled(isDisabled);
46    }
47
48    /**
49        Sets the text in tab at the specified index.
50        @param text
51     */
52    void setText(QString text, TabType type);
53
54    /**
55        Sets the text in the current matrix.
56        @param matrixValues
57     */
58    void setMatrix(const SkMatrix& matrix);
59
60    /**
61        Sets the text in the current clip.
62        @param clipValues
63     */
64    void setClip(const SkIRect& clip);
65
66    class Tab : public QWidget {
67        QWidget fTab;
68        QHBoxLayout fTabLayout;
69        QTextEdit fTabText;
70        QString fName;
71
72        Tab(const char* name) {
73            fTabText.setReadOnly(true);
74            fTabLayout.setSpacing(6);
75            fTabLayout.setContentsMargins(11, 11, 11, 11);
76            fTabLayout.addWidget(&fTabText);
77            fTab.setLayout(&fTabLayout);
78            fName = QString(name);
79        }
80    };
81
82private:
83    QHBoxLayout fHorizontalLayout;
84    QTabWidget fTabWidget;
85
86    QWidget fTabs[kTotalTabCount];
87    QHBoxLayout fTabLayouts[kTotalTabCount];
88    QTextEdit fTabTexts[kTotalTabCount];
89
90    QWidget fMatrixAndClipWidget;
91    QVBoxLayout fVerticalLayout;
92
93    QLabel fMatrixLabel;
94    QVBoxLayout fMatrixLayout;
95    QHBoxLayout fMatrixRow[3];
96    QLineEdit fMatrixEntry[9];
97
98    QLabel fClipLabel;
99    QVBoxLayout fClipLayout;
100    QHBoxLayout fClipRow[2];
101    QLineEdit fClipEntry[4];
102
103    QVBoxLayout* setupMatrix();
104    QVBoxLayout* setupClip();
105};
106
107#endif
108