| |
| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| #include "SkSettingsWidget.h" |
| #include <iostream> |
| #include <math.h> |
| |
| // TODO(chudy): See if the layout can't be attached to the frame post construction. |
| SkSettingsWidget::SkSettingsWidget() : QWidget() |
| , mainFrameLayout(this) |
| , fVerticalLayout(&mainFrame) |
| , fVisibleFrameLayout(&fVisibleFrame) |
| , fCommandLayout(&fCommandFrame) |
| , fCurrentCommandBox(&fCommandFrame) |
| , fCommandHitBox(&fCommandFrame) |
| , fCanvasLayout(&fCanvasFrame) |
| , fZoomLayout(&fZoomFrame) |
| , fZoomBox(&fZoomFrame) |
| { |
| // Sets up the container and it's alignment around the settings widget. |
| mainFrame.setFrameShape(QFrame::StyledPanel); |
| mainFrame.setFrameShadow(QFrame::Raised); |
| mainFrameLayout.setSpacing(6); |
| mainFrameLayout.setContentsMargins(0,0,0,0); |
| mainFrameLayout.addWidget(&mainFrame); |
| |
| // Vertical Layout is the alignment inside of the main frame. |
| fVerticalLayout.setContentsMargins(11,11,11,11); |
| fVerticalLayout.setAlignment(Qt::AlignTop); |
| |
| // Visible Toggle |
| fVisibleText.setText("Visibility Filter"); |
| fVisibleFrame.setFrameShape(QFrame::StyledPanel); |
| fVisibleFrame.setFrameShadow(QFrame::Raised); |
| |
| fVisibilityCombo.addItem("Off", QVariant(false)); |
| fVisibilityCombo.addItem("On", QVariant(true)); |
| |
| fVisibleFrameLayout.setContentsMargins(11, 5, 11, 5); |
| fVisibleFrameLayout.addWidget(&fVisibilityCombo); |
| connect(&fVisibilityCombo, SIGNAL(activated(int)), this, |
| SIGNAL(visibilityFilterChanged())); |
| |
| // Canvas |
| fCanvasToggle.setText("Render Targets"); |
| fCanvasFrame.setFrameShape(QFrame::StyledPanel); |
| fCanvasFrame.setFrameShadow(QFrame::Raised); |
| |
| fRasterLabel.setText("Raster: "); |
| fRasterLabel.setMinimumWidth(178); |
| fRasterLabel.setMaximumWidth(178); |
| |
| fPathOpsLabel.setText("PathOps: "); |
| fPathOpsLabel.setMinimumWidth(178); |
| fPathOpsLabel.setMaximumWidth(178); |
| |
| fRasterCheckBox.setChecked(true); |
| |
| fOverdrawVizLabel.setText(" Overdraw Viz: "); |
| fOverdrawVizLabel.setMinimumWidth(178); |
| fOverdrawVizLabel.setMaximumWidth(178); |
| |
| fMegaVizLabel.setText(" Mega Viz: "); |
| fMegaVizLabel.setMinimumWidth(178); |
| fMegaVizLabel.setMaximumWidth(178); |
| |
| #if SK_SUPPORT_GPU |
| fGLLabel.setText("OpenGL: "); |
| fGLLabel.setMinimumWidth(178); |
| fGLLabel.setMaximumWidth(178); |
| |
| fGLMSAAButtonGroup.setTitle("MSAA"); |
| fGLMSAAButtonGroup.setMinimumWidth(178); |
| fGLMSAAButtonGroup.setMaximumWidth(178); |
| fGLMSAAButtonGroup.setEnabled(fGLCheckBox.isChecked()); |
| |
| fGLMSAACombo.addItem("Off", QVariant(0)); |
| fGLMSAACombo.addItem("4", QVariant(4)); |
| fGLMSAACombo.addItem("16", QVariant(16)); |
| |
| fGLMSAALayout.addWidget(&fGLMSAACombo); |
| fGLMSAAButtonGroup.setLayout(&fGLMSAALayout); |
| |
| connect(&fGLCheckBox, SIGNAL(toggled(bool)), &fGLMSAAButtonGroup, |
| SLOT(setEnabled(bool))); |
| connect(&fGLCheckBox, SIGNAL(toggled(bool)), this, |
| SIGNAL(glSettingsChanged())); |
| connect(&fGLMSAACombo, SIGNAL(activated(int)), this, |
| SIGNAL(glSettingsChanged())); |
| #endif |
| |
| { |
| // set up filter buttons |
| fFilterButtonGroup.setTitle("Filtering"); |
| fFilterButtonGroup.setMinimumWidth(178); |
| fFilterButtonGroup.setMaximumWidth(178); |
| |
| fFilterCombo.addItem("As encoded", QVariant(SkPaint::kNone_FilterLevel)); |
| fFilterCombo.addItem("None", QVariant(SkPaint::kNone_FilterLevel)); |
| fFilterCombo.addItem("Low", QVariant(SkPaint::kLow_FilterLevel)); |
| fFilterCombo.addItem("Medium", QVariant(SkPaint::kMedium_FilterLevel)); |
| fFilterCombo.addItem("High", QVariant(SkPaint::kHigh_FilterLevel)); |
| |
| fFilterLayout.addWidget(&fFilterCombo); |
| fFilterButtonGroup.setLayout(&fFilterLayout); |
| |
| connect(&fFilterCombo, SIGNAL(activated(int)), this, |
| SIGNAL(texFilterSettingsChanged())); |
| } |
| |
| fRasterLayout.addWidget(&fRasterLabel); |
| fRasterLayout.addWidget(&fRasterCheckBox); |
| fRasterLayout.addWidget(&fPathOpsLabel); |
| fRasterLayout.addWidget(&fPathOpsCheckBox); |
| |
| fVizLayout.addWidget(&fOverdrawVizLabel); |
| fVizLayout.addWidget(&fOverdrawVizCheckBox); |
| fVizLayout.addWidget(&fMegaVizLabel); |
| fVizLayout.addWidget(&fMegaVizCheckBox); |
| |
| #if SK_SUPPORT_GPU |
| fGLLayout.addWidget(&fGLLabel); |
| fGLLayout.addWidget(&fGLCheckBox); |
| #endif |
| |
| fCanvasLayout.setSpacing(6); |
| fCanvasLayout.setContentsMargins(11,11,11,11); |
| fCanvasLayout.addLayout(&fRasterLayout); |
| fCanvasLayout.addLayout(&fVizLayout); |
| #if SK_SUPPORT_GPU |
| fCanvasLayout.addLayout(&fGLLayout); |
| fCanvasLayout.addWidget(&fGLMSAAButtonGroup); |
| #endif |
| fCanvasLayout.addWidget(&fFilterButtonGroup); |
| |
| // Command Toggle |
| fCommandToggle.setText("Command Scrolling Preferences"); |
| fCommandFrame.setFrameShape(QFrame::StyledPanel); |
| fCommandFrame.setFrameShadow(QFrame::Raised); |
| |
| fCurrentCommandLabel.setText("Current Command: "); |
| fCurrentCommandLabel.setMinimumWidth(178); |
| fCurrentCommandLabel.setMaximumWidth(178); |
| fCurrentCommandBox.setText("0"); |
| fCurrentCommandBox.setMinimumSize(QSize(50,25)); |
| fCurrentCommandBox.setMaximumSize(QSize(50,25)); |
| fCurrentCommandBox.setAlignment(Qt::AlignRight); |
| |
| fCurrentCommandLayout.setSpacing(0); |
| fCurrentCommandLayout.setContentsMargins(0,0,0,0); |
| fCurrentCommandLayout.setAlignment(Qt::AlignLeft); |
| fCurrentCommandLayout.addWidget(&fCurrentCommandLabel); |
| fCurrentCommandLayout.addWidget(&fCurrentCommandBox); |
| |
| fCommandHitLabel.setText("Command HitBox: "); |
| fCommandHitLabel.setMinimumWidth(178); |
| fCommandHitLabel.setMaximumWidth(178); |
| fCommandHitBox.setText("0"); |
| fCommandHitBox.setMinimumSize(QSize(50,25)); |
| fCommandHitBox.setMaximumSize(QSize(50,25)); |
| fCommandHitBox.setAlignment(Qt::AlignRight); |
| fCommandHitLayout.setSpacing(0); |
| fCommandHitLayout.setContentsMargins(0,0,0,0); |
| fCommandHitLayout.setAlignment(Qt::AlignLeft); |
| fCommandHitLayout.addWidget(&fCommandHitLabel); |
| fCommandHitLayout.addWidget(&fCommandHitBox); |
| |
| fCommandLayout.setSpacing(6); |
| fCommandLayout.setContentsMargins(11,11,11,11); |
| fCommandLayout.addLayout(&fCurrentCommandLayout); |
| fCommandLayout.addLayout(&fCommandHitLayout); |
| |
| // Zoom Info |
| fZoomSetting.setText("Zoom Level: "); |
| fZoomSetting.setMinimumWidth(178); |
| fZoomSetting.setMaximumWidth(178); |
| fZoomFrame.setFrameShape(QFrame::StyledPanel); |
| fZoomFrame.setFrameShadow(QFrame::Raised); |
| fZoomBox.setText("100%"); |
| fZoomBox.setMinimumSize(QSize(50,25)); |
| fZoomBox.setMaximumSize(QSize(50,25)); |
| fZoomBox.setAlignment(Qt::AlignRight); |
| fZoomLayout.setSpacing(6); |
| fZoomLayout.setContentsMargins(11,11,11,11); |
| fZoomLayout.addWidget(&fZoomSetting); |
| fZoomLayout.addWidget(&fZoomBox); |
| |
| // Adds all widgets to settings container |
| fVerticalLayout.addWidget(&fVisibleText); |
| fVerticalLayout.addWidget(&fVisibleFrame); |
| fVerticalLayout.addWidget(&fCommandToggle); |
| fVerticalLayout.addWidget(&fCommandFrame); |
| fVerticalLayout.addWidget(&fCanvasToggle); |
| fVerticalLayout.addWidget(&fCanvasFrame); |
| fVerticalLayout.addWidget(&fZoomFrame); |
| |
| this->setDisabled(true); |
| } |
| |
| |
| void SkSettingsWidget::updateCommand(int newCommand) { |
| fCurrentCommandBox.setText(QString::number(newCommand)); |
| } |
| |
| void SkSettingsWidget::updateHit(int newHit) { |
| fCommandHitBox.setText(QString::number(newHit)); |
| } |
| |
| void SkSettingsWidget::setZoomText(float scale) { |
| fZoomBox.setText(QString::number(scale*100, 'f', 0).append("%")); |
| } |