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
132d537a18f49cb492358c2b051f4786075dd9406cchudy@google.comSkInspectorWidget::SkInspectorWidget() : QWidget()
142f891793957252b0262276c957c67798c905be80chudy@google.com    , fHorizontalLayout(this)
152f891793957252b0262276c957c67798c905be80chudy@google.com    , fMatrixAndClipWidget(this)
162f891793957252b0262276c957c67798c905be80chudy@google.com    , fVerticalLayout(&fMatrixAndClipWidget)
172f891793957252b0262276c957c67798c905be80chudy@google.com    , fMatrixLabel(this)
182f891793957252b0262276c957c67798c905be80chudy@google.com    , fClipLabel(this) {
192f891793957252b0262276c957c67798c905be80chudy@google.com
202f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.setSpacing(6);
212f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.setContentsMargins(11, 11, 11, 11);
222f891793957252b0262276c957c67798c905be80chudy@google.com
236bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    QString tabNames[kTotalTabCount];
246bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    tabNames[kOverview_TabType] = "Overview";
256bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    tabNames[kDetail_TabType] = "Details";
262a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org    tabNames[kClipStack_TabType] = "Clip Stack";
276bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com
286bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    for (int i = 0; i < kTotalTabCount; i++) {
296bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabTexts[i].setReadOnly(true);
306bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabLayouts[i].setSpacing(6);
316bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabLayouts[i].setContentsMargins(11, 11, 11, 11);
326bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabLayouts[i].addWidget(&fTabTexts[i]);
336bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabs[i].setLayout(&fTabLayouts[i]);
346bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com        fTabWidget.addTab(&fTabs[i], tabNames[i]);
356bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    }
362f891793957252b0262276c957c67798c905be80chudy@google.com
372f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.setAlignment(Qt::AlignTop);
382f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.addWidget(&fTabWidget);
39902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
40902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /* NOTE(chudy): We add all the line edits to (this). Then we lay them out
41902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     * by adding them to horizontal layouts.
42902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     *
43902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     * We will have 1 big vertical layout, 3 horizontal layouts and then 3
446bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com     * line edits in each horizontal layout. */
452f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixAndClipWidget.setFixedSize(260,300);
462f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixAndClipWidget.setDisabled(true);
47902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
482f891793957252b0262276c957c67798c905be80chudy@google.com    fVerticalLayout.setAlignment(Qt::AlignVCenter);
492f891793957252b0262276c957c67798c905be80chudy@google.com    fVerticalLayout.addLayout(setupMatrix());
502f891793957252b0262276c957c67798c905be80chudy@google.com    fVerticalLayout.addLayout(setupClip());
512f891793957252b0262276c957c67798c905be80chudy@google.com    fHorizontalLayout.addWidget(&fMatrixAndClipWidget);
52902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
53902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
546bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.comvoid SkInspectorWidget::setText(QString text, TabType type) {
556bd109a39370d21bfd4b48f5a28df8bcfc7f5ba2chudy@google.com    fTabTexts[type].setHtml(text);
56902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
57902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
582f891793957252b0262276c957c67798c905be80chudy@google.comvoid SkInspectorWidget::setMatrix(const SkMatrix& matrix) {
592f891793957252b0262276c957c67798c905be80chudy@google.com    for(int i=0; i<9; i++) {
602f891793957252b0262276c957c67798c905be80chudy@google.com        fMatrixEntry[i].setText(QString::number(matrix.get(i)));
612f891793957252b0262276c957c67798c905be80chudy@google.com    }
62902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
63902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
642f891793957252b0262276c957c67798c905be80chudy@google.comvoid SkInspectorWidget::setClip(const SkIRect& clip) {
652f891793957252b0262276c957c67798c905be80chudy@google.com    fClipEntry[0].setText(QString::number(clip.left()));
662f891793957252b0262276c957c67798c905be80chudy@google.com    fClipEntry[1].setText(QString::number(clip.top()));
672f891793957252b0262276c957c67798c905be80chudy@google.com    fClipEntry[2].setText(QString::number(clip.right()));
682f891793957252b0262276c957c67798c905be80chudy@google.com    fClipEntry[3].setText(QString::number(clip.bottom()));
69902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
70902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
712f891793957252b0262276c957c67798c905be80chudy@google.comQVBoxLayout* SkInspectorWidget::setupMatrix() {
722f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixLabel.setText("Current Matrix");
732f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixLabel.setAlignment(Qt::AlignHCenter);
742f891793957252b0262276c957c67798c905be80chudy@google.com
752f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixLayout.setSpacing(6);
762f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixLayout.setContentsMargins(11,11,11,0);
772f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixLayout.setAlignment(Qt::AlignTop | Qt::AlignHCenter);
782f891793957252b0262276c957c67798c905be80chudy@google.com    fMatrixLayout.addWidget(&fMatrixLabel);
79902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
80902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    for(int i =0; i<9; i++) {
812f891793957252b0262276c957c67798c905be80chudy@google.com        fMatrixEntry[i].setMinimumSize(QSize(70,25));
822f891793957252b0262276c957c67798c905be80chudy@google.com        fMatrixEntry[i].setMaximumSize(QSize(70,16777215));
832f891793957252b0262276c957c67798c905be80chudy@google.com        fMatrixEntry[i].setReadOnly(true);
842f891793957252b0262276c957c67798c905be80chudy@google.com
852f891793957252b0262276c957c67798c905be80chudy@google.com        fMatrixRow[i/3].addWidget(&fMatrixEntry[i]);
862f891793957252b0262276c957c67798c905be80chudy@google.com        if(i%3 == 2) {
872f891793957252b0262276c957c67798c905be80chudy@google.com            fMatrixLayout.addLayout(&fMatrixRow[i/3]);
882f891793957252b0262276c957c67798c905be80chudy@google.com        }
89902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    }
90902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
912f891793957252b0262276c957c67798c905be80chudy@google.com    return &fMatrixLayout;
92902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
93902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
942f891793957252b0262276c957c67798c905be80chudy@google.comQVBoxLayout* SkInspectorWidget::setupClip() {
952f891793957252b0262276c957c67798c905be80chudy@google.com    fClipLabel.setText("Current Clip");
962f891793957252b0262276c957c67798c905be80chudy@google.com    fClipLabel.setAlignment(Qt::AlignHCenter);
972f891793957252b0262276c957c67798c905be80chudy@google.com
982f891793957252b0262276c957c67798c905be80chudy@google.com    fClipLayout.setSpacing(6);
992f891793957252b0262276c957c67798c905be80chudy@google.com    fClipLayout.setContentsMargins(11,11,11,0);
1002f891793957252b0262276c957c67798c905be80chudy@google.com    fClipLayout.setAlignment(Qt::AlignTop | Qt::AlignHCenter);
1012f891793957252b0262276c957c67798c905be80chudy@google.com    fClipLayout.addWidget(&fClipLabel);
102902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
103902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    for(int i =0; i<4; i++) {
1042f891793957252b0262276c957c67798c905be80chudy@google.com        fClipEntry[i].setMinimumSize(QSize(70,25));
1052f891793957252b0262276c957c67798c905be80chudy@google.com        fClipEntry[i].setMaximumSize(QSize(70,16777215));
1062f891793957252b0262276c957c67798c905be80chudy@google.com        fClipEntry[i].setReadOnly(true);
1072f891793957252b0262276c957c67798c905be80chudy@google.com
1082f891793957252b0262276c957c67798c905be80chudy@google.com        fClipRow[i/2].addWidget(&fClipEntry[i]);
1092f891793957252b0262276c957c67798c905be80chudy@google.com        if(i%2 == 1) {
1102f891793957252b0262276c957c67798c905be80chudy@google.com            fClipLayout.addLayout(&fClipRow[i/2]);
1112f891793957252b0262276c957c67798c905be80chudy@google.com        }
112902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    }
113902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
1142f891793957252b0262276c957c67798c905be80chudy@google.com    return &fClipLayout;
115902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}
116