/* * 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("%")); }