An error occurred while loading the file. Please try again.
-
John Koleszar authored
This patch collects the twopass specific memebers of VP8_COMP into a dedicated struct. This is a first step towards isolating the two pass rate control and aids readability by decorating these variables with the 'twopass.' namespace. This makes it clear to the reader in what contexts the variable will be valid, and is a hint that a section of code might be a good candidate to move to firstpass.c in later refactoring. There likely will be other rate control modes that need their own specific data as well. This notation is probably overly verbose in firstpass.c, so an alternative would be to access this struct through a pointer like 'rc->' instead of 'cpi->firstpass.' in that file. Feel free to make a review comment to that effect if you prefer. Change-Id: I0ab8254647cb4b493a77c16b5d236d0d4a94ca4d
63cb1a7c
main.qml 15.31 KiB
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Controls.Private 1.0
import QtQuick.XmlListModel 2.0
Rectangle {
width: 538 + frame.margins * 2
height: 360 + frame.margins * 2
ToolBar {
id: toolbar
width: parent.width
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
onPressed: editmenu.show(mouseX, mouseY)
}
ComboBox {
id: delegateChooser
opacity: frame.current === 3 ? 1 : 0
Behavior on opacity{ NumberAnimation{} }
model: delegatemenu
anchors.left: parent.left
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
anchors.leftMargin: 8
anchors.verticalCenter: parent.verticalCenter
}
CheckBox {
id: enabledCheck
text: "Enabled"
checked: true
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
SystemPalette {id: syspal}
StyleItem{ id: styleitem}
color: syspal.window
XmlListModel {
id: flickerModel
source: "http://api.flickr.com/services/feeds/photos_public.gne?format=rss2&tags=" + "Qt"
query: "/rss/channel/item"
namespaceDeclarations: "declare namespace media=\"http://search.yahoo.com/mrss/\";"
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "imagesource"; query: "media:thumbnail/@url/string()" }
XmlRole { name: "credit"; query: "media:credit/string()" }
}
ListModel {
id: nestedModel
ListElement{attributes: ListElement { description: "Core" ; color:"#ffaacc"}}
ListElement{attributes: ListElement { description: "Second" ; color:"#ffccaa"}}
ListElement{attributes: ListElement { description: "Third" ; color:"#ffffaa"}}
}
ListModel {
id: largeModel
Component.onCompleted: {
for (var i=0 ; i< 500 ; ++i)
largeModel.append({"name":"Person "+i , "age": Math.round(Math.random()*100), "gender": Math.random()>0.5 ? "Male" : "Female"})
}
}
Column {
anchors.top: toolbar.bottom
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: parent.bottom
anchors.margins: 8
TabView {
id:frame
focus:true
enabled: enabledCheck.checked
property int margins : styleitem.style == "mac" ? 16 : 0
height: parent.height - 34
anchors.right: parent.right
anchors.left: parent.left
anchors.margins: margins
Tab {
title: "XmlListModel"
TableView {
model: flickerModel
anchors.fill: parent
anchors.margins: 12
TableViewColumn {
role: "title"
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
title: "Title"
width: 120
}
TableViewColumn {
role: "credit"
title: "Credit"
width: 120
}
TableViewColumn {
role: "imagesource"
title: "Image source"
width: 200
visible: true
}
frameVisible: frameCheckbox.checked
headerVisible: headerCheckbox.checked
sortIndicatorVisible: sortableCheckbox.checked
alternatingRowColors: alternateCheckbox.checked
}
}
Tab {
title: "Multivalue"
TableView {
model: nestedModel
anchors.fill: parent
anchors.margins: 12
TableViewColumn {
role: "attributes"
title: "Text and Color"
width: 220
}
itemDelegate:
Item {
Rectangle{
color: itemValue.get(0).color
anchors.top:parent.top
anchors.right:parent.right
anchors.bottom:parent.bottom
anchors.margins: 4
width:32
border.color:"#666"
}
Text {
width: parent.width
anchors.margins: 4
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
elide: itemElideMode
text: itemValue.get(0).description
color: itemTextColor
}
}
frameVisible: frameCheckbox.checked
headerVisible: headerCheckbox.checked
sortIndicatorVisible: sortableCheckbox.checked
alternatingRowColors: alternateCheckbox.checked
}
}
Tab {
title: "Generated"
TableView {
model: largeModel
anchors.margins: 12
anchors.fill: parent
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
TableViewColumn {
role: "name"
title: "Name"
width: 120
}
TableViewColumn {
role: "age"
title: "Age"
width: 120
}
TableViewColumn {
role: "gender"
title: "Gender"
width: 120
}
frameVisible: frameCheckbox.checked
headerVisible: headerCheckbox.checked
sortIndicatorVisible: sortableCheckbox.checked
alternatingRowColors: alternateCheckbox.checked
}
}
Tab {
title: "Delegates"
Item {
anchors.fill: parent
ListModel {
id: delegatemenu
ListElement { text: "Shiny delegate" }
ListElement { text: "Scale selected" }
ListElement { text: "Editable items" }
}
Component {
id: delegate1
Item {
clip: true
Text {
width: parent.width
anchors.margins: 4
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
elide: itemElideMode
text: itemValue ? itemValue : ""
color: itemTextColor
}
}
}
Component {
id: slickRowDelegate
Rectangle { color: alternateBackground ? "#cef" : "white" }
}
Component {
id: delegate2
Item {
height: itemSelected? 60 : 20
Behavior on height{ NumberAnimation{} }
Text {
width: parent.width
anchors.margins: 4
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
elide: itemElideMode
text: itemValue ? itemValue : ""
color: itemTextColor
}
281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
}
}
Component {
id: editableDelegate
Item {
Text {
width: parent.width
anchors.margins: 4
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
elide: itemElideMode
text: itemValue ? itemValue : ""
color: itemTextColor
visible: !itemSelected
}
Loader { // Initialize text editor lazily to improve performance
anchors.fill: parent
anchors.margins: 4
property string modelText: itemValue
property string editorText: item ? item.text : itemValue
onEditorTextChanged: model.setProperty(rowIndex, role, editorText)
sourceComponent: itemSelected ? editor : null
Component {id: editor ; TextInput{ color: itemTextColor ; text: modelText} }
}
}
}
TableView {
model: largeModel
anchors.margins: 12
anchors.fill:parent
frameVisible: frameCheckbox.checked
headerVisible: headerCheckbox.checked
sortIndicatorVisible: sortableCheckbox.checked
alternatingRowColors: alternateCheckbox.checked
TableViewColumn {
role: "name"
title: "Name"
width: 120
}
TableViewColumn {
role: "age"
title: "Age"
width: 120
}
TableViewColumn {
role: "sex"
title: "Sex"
width: 120
}
headerDelegate: BorderImage{
source: "images/header.png"
border{left:2;right:2;top:2;bottom:2}
Text {
text: itemValue
anchors.centerIn:parent
color:"#333"
}
}
rowDelegate: Rectangle {
height: 20
color: rowSelected ? "#448" : (alternateBackground ? "#eee" : "#fff")
border.color:"#ccc"
border.width: 1
anchors.left: parent ? parent.left : undefined
anchors.leftMargin: -2
anchors.rightMargin: -1
351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
BorderImage{
id: selected
anchors.fill: parent
source: "images/selectedrow.png"
visible: rowSelected
border{left:2; right:2; top:2; bottom:2}
SequentialAnimation {
running: true; loops: Animation.Infinite
NumberAnimation { target:selected; property: "opacity"; to: 1.0; duration: 900}
NumberAnimation { target:selected; property: "opacity"; to: 0.5; duration: 900}
}
}
}
itemDelegate: {
switch (delegateChooser.selectedIndex) {
case 0:
return delegate1
case 1:
return delegate2
case 2:
return editableDelegate
}
}
}
}
}
}
Row{
x: 12
height: 34
CheckBox{
id: alternateCheckbox
checked: true
text: "Alternate"
anchors.verticalCenter: parent.verticalCenter
}
CheckBox{
id: sortableCheckbox
checked: false
text: "Sortindicator"
anchors.verticalCenter: parent.verticalCenter
}
CheckBox{
id: frameCheckbox
checked: true
text: "Frame"
anchors.verticalCenter: parent.verticalCenter
}
CheckBox{
id: headerCheckbox
checked: true
text: "Headers"
anchors.verticalCenter: parent.verticalCenter
}
}
}
}