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 SKSETTINGSWIDGET_H_
11#define SKSETTINGSWIDGET_H_
12
13#include <QWidget>
14#include <QHBoxLayout>
15#include <QTextEdit>
16#include <QFrame>
17#include <QGroupBox>
18#include <QLabel>
19#include <QCheckBox>
20#include <QLineEdit>
21#include <QComboBox>
22#include <QFormLayout>
23
24#include "SkPaint.h"
25
26/** \class SkSettingsWidget
27
28    The SettingsWidget contains multiple checkboxes and toggles for altering
29    the visualizations.
30 */
31class SkSettingsWidget : public QFrame {
32    Q_OBJECT
33
34public:
35    /**
36        Constructs a widget with the specified parent for layout purposes.
37        @param parent  The parent container of this widget
38     */
39    SkSettingsWidget();
40
41
42#if SK_SUPPORT_GPU
43    // GL settings.
44    bool isGLActive() const {
45        return fGLGroup.isChecked();
46    }
47
48    int getGLSampleCount() const {
49        return fGLMSAACombo.itemData(fGLMSAACombo.currentIndex()).toInt();
50    }
51
52#endif
53
54    bool getFilterOverride(SkFilterQuality* filterQuality) const {
55        int index = fFilterCombo.currentIndex();
56        *filterQuality = (SkFilterQuality)fFilterCombo.itemData(index).toUInt();
57
58        return index > 0;
59    }
60
61
62    // Raster settings.
63    bool isRasterEnabled() {
64        return fRasterGroup.isChecked();
65    }
66
67    bool isOverdrawVizEnabled() {
68        return fOverdrawVizCheckBox.isChecked();
69    }
70
71    // Visualizations.
72    bool isVisibilityFilterEnabled() const {
73        return fVisibilityFilterCheckBox.isChecked();
74    }
75
76    bool isMegaVizEnabled() {
77        return fMegaVizCheckBox.isChecked();
78    }
79
80    bool isPathOpsEnabled() {
81        return fPathOpsCheckBox.isChecked();
82    }
83
84private slots:
85
86signals:
87    void visualizationsChanged();
88    void texFilterSettingsChanged();
89#if SK_SUPPORT_GPU
90    void glSettingsChanged();
91#endif
92    void rasterSettingsChanged();
93
94private:
95    QFormLayout fVerticalLayout;
96
97    QGroupBox fVisualizationsGroup;
98    QVBoxLayout fVisualizationsLayout;
99    QCheckBox fVisibilityFilterCheckBox;
100
101    QGroupBox fRasterGroup;
102    QVBoxLayout fRasterLayout;
103    QCheckBox fOverdrawVizCheckBox;
104    QCheckBox fMegaVizCheckBox;
105    QCheckBox fPathOpsCheckBox;
106
107#if SK_SUPPORT_GPU
108    QGroupBox fGLGroup;
109    QFormLayout fGLLayout;
110    QComboBox fGLMSAACombo;
111#endif
112
113    QComboBox fFilterCombo;
114};
115
116#endif /* SKSETTINGSWIDGET_H_ */
117