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 23 #include "SkPaint.h" 24 25 /** \class SkSettingsWidget 26 27 The SettingsWidget contains multiple checkboxes and toggles for altering 28 the visibility. 29 */ 30 class SkSettingsWidget : public QWidget { 31 Q_OBJECT 32 33 public: 34 /** 35 Constructs a widget with the specified parent for layout purposes. 36 @param parent The parent container of this widget 37 */ 38 SkSettingsWidget(); 39 40 /** Sets the displayed user zoom level. A scale of 1.0 represents no zoom. */ 41 void setZoomText(float scale); 42 getVisibilityFilter()43 bool getVisibilityFilter() const { 44 return fVisibilityCombo.itemData(fVisibilityCombo.currentIndex()).toBool(); 45 } 46 47 #if SK_SUPPORT_GPU isGLActive()48 bool isGLActive() const { 49 return fGLCheckBox.isChecked(); 50 } 51 getGLSampleCount()52 int getGLSampleCount() const { 53 return fGLMSAACombo.itemData(fGLMSAACombo.currentIndex()).toInt(); 54 } 55 56 #endif 57 getFilterOverride(SkPaint::FilterLevel * filterLevel)58 bool getFilterOverride(SkPaint::FilterLevel* filterLevel) const { 59 int index = fFilterCombo.currentIndex(); 60 *filterLevel = (SkPaint::FilterLevel)fFilterCombo.itemData(index).toUInt(); 61 62 return index > 0; 63 } 64 getRasterCheckBox()65 QCheckBox* getRasterCheckBox() { 66 return &fRasterCheckBox; 67 } 68 getOverdrawVizCheckBox()69 QCheckBox* getOverdrawVizCheckBox() { 70 return &fOverdrawVizCheckBox; 71 } 72 getMegaVizCheckBox()73 QCheckBox* getMegaVizCheckBox() { 74 return &fMegaVizCheckBox; 75 } 76 getPathOpsCheckBox()77 QCheckBox* getPathOpsCheckBox() { 78 return &fPathOpsCheckBox; 79 } 80 81 private slots: 82 void updateCommand(int newCommand); 83 void updateHit(int newHit); 84 85 signals: 86 void scrollingPreferences(bool isStickyActivate); 87 void showStyle(bool isSingleCommand); 88 void visibilityFilterChanged(); 89 void texFilterSettingsChanged(); 90 #if SK_SUPPORT_GPU 91 void glSettingsChanged(); 92 #endif 93 94 private: 95 QVBoxLayout mainFrameLayout; 96 QFrame mainFrame; 97 QVBoxLayout fVerticalLayout; 98 99 QLabel fVisibleText; 100 QFrame fVisibleFrame; 101 QVBoxLayout fVisibleFrameLayout; 102 QComboBox fVisibilityCombo; 103 104 QLabel fCommandToggle; 105 QFrame fCommandFrame; 106 QVBoxLayout fCommandLayout; 107 108 QHBoxLayout fCurrentCommandLayout; 109 QLabel fCurrentCommandLabel; 110 QLineEdit fCurrentCommandBox; 111 112 QHBoxLayout fCommandHitLayout; 113 QLabel fCommandHitLabel; 114 QLineEdit fCommandHitBox; 115 116 QFrame fCanvasFrame; 117 QVBoxLayout fCanvasLayout; 118 QLabel fCanvasToggle; 119 120 QHBoxLayout fRasterLayout; 121 QLabel fRasterLabel; 122 QCheckBox fRasterCheckBox; 123 124 QHBoxLayout fVizLayout; 125 QLabel fOverdrawVizLabel; 126 QCheckBox fOverdrawVizCheckBox; 127 QLabel fMegaVizLabel; 128 QCheckBox fMegaVizCheckBox; 129 QLabel fPathOpsLabel; 130 QCheckBox fPathOpsCheckBox; 131 132 #if SK_SUPPORT_GPU 133 QHBoxLayout fGLLayout; 134 QLabel fGLLabel; 135 QCheckBox fGLCheckBox; 136 QGroupBox fGLMSAAButtonGroup; 137 QVBoxLayout fGLMSAALayout; 138 QComboBox fGLMSAACombo; 139 #endif 140 141 // for filtering group 142 QGroupBox fFilterButtonGroup; 143 QComboBox fFilterCombo; 144 QVBoxLayout fFilterLayout; 145 146 QFrame fZoomFrame; 147 QHBoxLayout fZoomLayout; 148 QLabel fZoomSetting; 149 QLineEdit fZoomBox; 150 }; 151 152 #endif /* SKSETTINGSWIDGET_H_ */ 153