1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/*
3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc.
4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com *
5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be
6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file.
7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */
8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#ifndef SKSETTINGSWIDGET_H_
11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#define SKSETTINGSWIDGET_H_
12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
13902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QWidget>
14902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QHBoxLayout>
15902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QTextEdit>
16902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QFrame>
17fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org#include <QGroupBox>
18902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QLabel>
19902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <QCheckBox>
207dcae67cae277549accdd38d0496b72d00151239chudy@google.com#include <QLineEdit>
2122d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org#include <QComboBox>
22902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
2332bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com#include "SkPaint.h"
2432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com
25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/** \class SkSettingsWidget
26902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
27902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    The SettingsWidget contains multiple checkboxes and toggles for altering
28902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    the visibility.
29902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */
30902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comclass SkSettingsWidget : public QWidget {
31902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    Q_OBJECT
32902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
33902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic:
34902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
35902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Constructs a widget with the specified parent for layout purposes.
36902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param parent  The parent container of this widget
37902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
382d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com    SkSettingsWidget();
39902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
40e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com    /** Sets the displayed user zoom level. A scale of 1.0 represents no zoom. */
41e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com    void setZoomText(float scale);
427dcae67cae277549accdd38d0496b72d00151239chudy@google.com
4322d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    bool getVisibilityFilter() const {
4422d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org        return fVisibilityCombo.itemData(fVisibilityCombo.currentIndex()).toBool();
4522d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    }
467dcae67cae277549accdd38d0496b72d00151239chudy@google.com
47e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU
4822d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    bool isGLActive() const {
49fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org        return fGLCheckBox.isChecked();
50ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    }
51fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org
5222d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    int getGLSampleCount() const {
5322d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org        return fGLMSAACombo.itemData(fGLMSAACombo.currentIndex()).toInt();
54fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org    }
55fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org
56e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif
57ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
5822d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    bool getFilterOverride(SkPaint::FilterLevel* filterLevel) const {
5922d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org        int index = fFilterCombo.currentIndex();
6022d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org        *filterLevel = (SkPaint::FilterLevel)fFilterCombo.itemData(index).toUInt();
6122d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org
6222d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org        return index > 0;
6332bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com    }
6432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com
65ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QCheckBox* getRasterCheckBox() {
66ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com        return &fRasterCheckBox;
67ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    }
68ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
69f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    QCheckBox* getOverdrawVizCheckBox() {
70f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com        return &fOverdrawVizCheckBox;
71f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    }
72f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com
73768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org    QCheckBox* getMegaVizCheckBox() {
74768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org        return &fMegaVizCheckBox;
75768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org    }
76768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org
772a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org    QCheckBox* getPathOpsCheckBox() {
782a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org        return &fPathOpsCheckBox;
792a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org    }
802a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org
817dcae67cae277549accdd38d0496b72d00151239chudy@google.comprivate slots:
827dcae67cae277549accdd38d0496b72d00151239chudy@google.com    void updateCommand(int newCommand);
83e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com    void updateHit(int newHit);
847dcae67cae277549accdd38d0496b72d00151239chudy@google.com
857dcae67cae277549accdd38d0496b72d00151239chudy@google.comsignals:
867dcae67cae277549accdd38d0496b72d00151239chudy@google.com    void scrollingPreferences(bool isStickyActivate);
877dcae67cae277549accdd38d0496b72d00151239chudy@google.com    void showStyle(bool isSingleCommand);
8822d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    void visibilityFilterChanged();
8932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com    void texFilterSettingsChanged();
90fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org#if SK_SUPPORT_GPU
91fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org    void glSettingsChanged();
92fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org#endif
937dcae67cae277549accdd38d0496b72d00151239chudy@google.com
94902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate:
957dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QVBoxLayout mainFrameLayout;
967dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QFrame mainFrame;
977dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QVBoxLayout fVerticalLayout;
98902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
9922d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    QLabel fVisibleText;
1007dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QFrame fVisibleFrame;
1017dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QVBoxLayout fVisibleFrameLayout;
10222d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    QComboBox fVisibilityCombo;
103902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
1047dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QLabel fCommandToggle;
1057dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QFrame fCommandFrame;
1067dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QVBoxLayout fCommandLayout;
107902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
1082d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com    QHBoxLayout fCurrentCommandLayout;
1097dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QLabel fCurrentCommandLabel;
110e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com    QLineEdit fCurrentCommandBox;
111902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
1122d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com    QHBoxLayout fCommandHitLayout;
113e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com    QLabel fCommandHitLabel;
114e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com    QLineEdit fCommandHitBox;
115e606d6e210b17dd9dd582d4d3ec70acb4f3213d5chudy@google.com
116ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QFrame fCanvasFrame;
117ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QVBoxLayout fCanvasLayout;
1182d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com    QLabel fCanvasToggle;
119ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
120ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QHBoxLayout fRasterLayout;
121ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QLabel fRasterLabel;
122ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QCheckBox fRasterCheckBox;
123ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
124768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org    QHBoxLayout fVizLayout;
125f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    QLabel fOverdrawVizLabel;
126f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    QCheckBox fOverdrawVizCheckBox;
127768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org    QLabel fMegaVizLabel;
128768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org    QCheckBox fMegaVizCheckBox;
1292a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org    QLabel fPathOpsLabel;
1302a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org    QCheckBox fPathOpsCheckBox;
131f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com
132e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#if SK_SUPPORT_GPU
133ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QHBoxLayout fGLLayout;
134ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QLabel fGLLabel;
135ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com    QCheckBox fGLCheckBox;
136fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org    QGroupBox fGLMSAAButtonGroup;
137fde1e7ccb4524aa2e0c42872e529ee25d09e7f34commit-bot@chromium.org    QVBoxLayout fGLMSAALayout;
13822d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    QComboBox fGLMSAACombo;
139e8fe4bc3efa8f18f5651c5d005fba1935a741be0robertphillips@google.com#endif
140ea5488b9655fc7d71345c3a823de85f8b74e3279chudy@google.com
14132bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com    // for filtering group
14232bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com    QGroupBox fFilterButtonGroup;
14322d39332bdba4e2e36aa050220392dcd33d81c19commit-bot@chromium.org    QComboBox fFilterCombo;
14432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com    QVBoxLayout fFilterLayout;
14532bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com
1467dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QFrame fZoomFrame;
1477dcae67cae277549accdd38d0496b72d00151239chudy@google.com    QHBoxLayout fZoomLayout;
1482d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com    QLabel fZoomSetting;
1492d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com    QLineEdit fZoomBox;
150902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com};
151902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#endif /* SKSETTINGSWIDGET_H_ */
153