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#include "SkInspectorWidget.h"
11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <iostream>
12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
137c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunenstatic const int kSignificantNumbersInFields = 5;
147c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen
152d537a18f49cb492358c2b051f4786075dd9406cchudy@google.comSkInspectorWidget::SkInspectorWidget() : QWidget()
162f891793957252b0262276c957c67798c905be80chudy@google.com    , fHorizontalLayout(this)
172f891793957252b0262276c957c67798c905be80chudy@google.com    , fMatrixAndClipWidget(this)
187c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    , fVerticalLayout(&fMatrixAndClipWidget) {
196bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    QString tabNames[kTotalTabCount];
206bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    tabNames[kOverview_TabType] = "Overview";
216bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    tabNames[kDetail_TabType] = "Details";
222a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org    tabNames[kClipStack_TabType] = "Clip Stack";
236bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com
246bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    for (int i = 0; i < kTotalTabCount; i++) {
256bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabTexts[i].setReadOnly(true);
266bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabLayouts[i].addWidget(&fTabTexts[i]);
276bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabs[i].setLayout(&fTabLayouts[i]);
286bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabWidget.addTab(&fTabs[i], tabNames[i]);
296bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    }
302f891793957252b0262276c957c67798c905be80chudy@google.com
312f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.setAlignment(Qt::AlignTop);
322f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.addWidget(&fTabWidget);
33902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
347c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fMatrixAndClipWidget.setFrameStyle(QFrame::Panel);
352f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixAndClipWidget.setDisabled(true);
362f891793957252b0262276c957c67798c905be80chudy@google.com    fVerticalLayout.setAlignment(Qt::AlignVCenter);
377c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    this->setupMatrix();
387c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    this->setupClip();
397c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fVerticalLayout.addWidget(&fMatrixGroup);
407c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fVerticalLayout.addWidget(&fClipGroup);
412f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.addWidget(&fMatrixAndClipWidget);
42902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
43902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
446bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.comvoid SkInspectorWidget::setText(QString text, TabType type) {
456bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    fTabTexts[type].setHtml(text);
46902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
47902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
482f891793957252b0262276c957c67798c905be80chudy@google.comvoid SkInspectorWidget::setMatrix(const SkMatrix& matrix) {
492f891793957252b0262276c957c67798c905be80chudy@google.com    for(int i=0; i<9; i++) {
507c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen        fMatrixEntry[i].setText(QString::number(matrix.get(i), 'g', kSignificantNumbersInFields));
512f891793957252b0262276c957c67798c905be80chudy@google.com    }
52902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
53902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
542f891793957252b0262276c957c67798c905be80chudy@google.comvoid SkInspectorWidget::setClip(const SkIRect& clip) {
557c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fClipEntry[0].setText(QString::number(clip.left(), 'g', kSignificantNumbersInFields));
567c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fClipEntry[1].setText(QString::number(clip.top(), 'g', kSignificantNumbersInFields));
577c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fClipEntry[2].setText(QString::number(clip.right(), 'g', kSignificantNumbersInFields));
587c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fClipEntry[3].setText(QString::number(clip.bottom(), 'g', kSignificantNumbersInFields));
59902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
60902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
617c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunenvoid SkInspectorWidget::setupMatrix() {
627c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fMatrixGroup.setTitle("Current Matrix");
637c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fMatrixGroup.setLayout(&fMatrixLayout);
647c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    for (int r = 0; r < 3; ++r) {
657c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen        for(int c = 0; c < 3; c++) {
667c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            QLineEdit* entry = &fMatrixEntry[r * 3 + c];
677c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            fMatrixLayout.addWidget(entry, r, c, Qt::AlignTop | Qt::AlignHCenter);
687c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            entry->setReadOnly(true);
697c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            entry->setFixedWidth(70);
702f891793957252b0262276c957c67798c905be80chudy@google.com        }
71902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    }
72902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
73902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
747c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunenvoid SkInspectorWidget::setupClip() {
757c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fClipGroup.setTitle("Current Clip");
767c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    fClipGroup.setLayout(&fClipLayout);
777c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen    for(int r = 0; r < 2; r++) {
787c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen        for(int c = 0; c < 2; c++) {
797c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            QLineEdit* entry = &fClipEntry[r * 2 + c];
807c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            fClipLayout.addWidget(entry, r, c, Qt::AlignTop | Qt::AlignHCenter);
817c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            entry->setReadOnly(true);
827c339ae1e362e9f02cdfb9b32007f143dec0bc0ekkinnunen            entry->setFixedWidth(70);
832f891793957252b0262276c957c67798c905be80chudy@google.com        }
84902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    }
85902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
86